139 lines
3.7 KiB
Java
139 lines
3.7 KiB
Java
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
* with this work for additional information regarding copyright
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
*/
|
|
|
|
import com.sun.star.frame.XDesktop;
|
|
import com.sun.star.lang.XMultiServiceFactory;
|
|
import com.sun.star.uno.UnoRuntime;
|
|
import com.sun.star.uno.XInterface;
|
|
import com.sun.star.accessibility.XAccessible;
|
|
import com.sun.star.awt.XExtendedToolkit;
|
|
|
|
|
|
/** This class tries to simplify some tasks like loading a document or
|
|
getting various objects.
|
|
*/
|
|
public class SimpleOffice
|
|
{
|
|
private XDesktop mxDesktop = null;
|
|
private OfficeConnection aConnection;
|
|
private int mnPortNumber;
|
|
|
|
public SimpleOffice (int nPortNumber)
|
|
{
|
|
mnPortNumber = nPortNumber;
|
|
connect ();
|
|
getDesktop ();
|
|
}
|
|
|
|
public void connect ()
|
|
{
|
|
aConnection = new OfficeConnection (mnPortNumber);
|
|
mxDesktop = null;
|
|
getDesktop ();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public XDesktop getDesktop ()
|
|
{
|
|
if (mxDesktop != null)
|
|
return mxDesktop;
|
|
try
|
|
{
|
|
// Get the factory of the connected office.
|
|
XMultiServiceFactory xMSF = aConnection.getServiceManager ();
|
|
if (xMSF == null)
|
|
{
|
|
MessageArea.println ("can't connect to office");
|
|
return null;
|
|
}
|
|
else
|
|
MessageArea.println ("Connected successfully.");
|
|
|
|
// Create a new desktop.
|
|
mxDesktop = UnoRuntime.queryInterface(
|
|
XDesktop.class,
|
|
xMSF.createInstance ("com.sun.star.frame.Desktop")
|
|
);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageArea.println ("caught exception while creating desktop: "
|
|
+ e);
|
|
}
|
|
|
|
return mxDesktop;
|
|
}
|
|
|
|
|
|
/** Return a reference to the extended toolkit which is a broadcaster of
|
|
top window, key, and focus events.
|
|
*/
|
|
public XExtendedToolkit getExtendedToolkit ()
|
|
{
|
|
XExtendedToolkit xToolkit = null;
|
|
try
|
|
{
|
|
// Get the factory of the connected office.
|
|
XMultiServiceFactory xMSF = aConnection.getServiceManager ();
|
|
if (xMSF != null)
|
|
{
|
|
xToolkit = UnoRuntime.queryInterface(
|
|
XExtendedToolkit.class,
|
|
xMSF.createInstance ("stardiv.Toolkit.VCLXToolkit")
|
|
);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageArea.println ("caught exception while creating extended toolkit: " + e);
|
|
}
|
|
|
|
return xToolkit;
|
|
}
|
|
|
|
|
|
|
|
public XAccessible getAccessibleObject (XInterface xObject)
|
|
{
|
|
XAccessible xAccessible = null;
|
|
try
|
|
{
|
|
xAccessible = UnoRuntime.queryInterface(
|
|
XAccessible.class, xObject);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageArea.println (
|
|
"caught exception while getting accessible object" + e);
|
|
e.printStackTrace();
|
|
}
|
|
return xAccessible;
|
|
}
|
|
|
|
|
|
|
|
}
|