diff options
Diffstat (limited to 'canvas/source/java/java_Service.java')
-rw-r--r-- | canvas/source/java/java_Service.java | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/canvas/source/java/java_Service.java b/canvas/source/java/java_Service.java new file mode 100644 index 000000000000..6fcaa1581ca8 --- /dev/null +++ b/canvas/source/java/java_Service.java @@ -0,0 +1,118 @@ + +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XComponentContext; +import com.sun.star.awt.*; + +public class java_Service + extends com.sun.star.lib.uno.helper.WeakBase + implements com.sun.star.lang.XServiceInfo, foo.XBar +{ + private XToolkit m_xToolkit; + private XVclWindowPeer m_xPeer; + private javax.swing.JFrame m_frame; + + public java_Service( XComponentContext xContext ) + { + try + { + m_xToolkit = + (XToolkit) UnoRuntime.queryInterface( + XToolkit.class, + xContext.getServiceManager().createInstanceWithContext( + "com.sun.star.awt.Toolkit", xContext ) ); + } + catch (com.sun.star.uno.Exception exc) + { + throw new com.sun.star.uno.RuntimeException( + "exception occured gettin toolkit: " + exc, this ); + } + } + + // XBar impl + public void raiseAndCloseWindows( foo.XBar [] seq ) + throws com.sun.star.uno.Exception + { + for ( int nPos = 0; nPos < seq.length; ++nPos ) + seq[ nPos ].raiseWindows( "called by Java code" ); + + // modal dialog before closing + javax.swing.JOptionPane.showMessageDialog( + null, "[Java] all windows created." ); + + for ( int nPos = 0; nPos < seq.length; ++nPos ) + seq[ nPos ].closeWindows(); + } + + public void raiseWindows( String msg ) + throws com.sun.star.uno.Exception + { + // create java frame + m_frame = new javax.swing.JFrame( + "[java frame created by Java code] " + msg ); + m_frame.setSize( 500, 50 ); + m_frame.setLocation( 200, 500 ); + m_frame.setVisible( true ); + + // create office workwindow + m_xPeer = (XVclWindowPeer) UnoRuntime.queryInterface( + XVclWindowPeer.class, + m_xToolkit.createWindow( + new WindowDescriptor( + WindowClass.TOP, "workwindow", null, (short) -1, + new Rectangle( 800, 500, 500, 50 ), + WindowAttribute.SHOW | + WindowAttribute.BORDER | + WindowAttribute.SIZEABLE | + WindowAttribute.MOVEABLE | + WindowAttribute.CLOSEABLE ) ) ); + m_xPeer.setProperty( + "Title", "[office window created by Java code] " + msg ); + } + + public void closeWindows() + throws com.sun.star.uno.Exception + { + m_frame.dispose(); + m_xPeer.dispose(); + } + + + private static final String s_implName = "foo.java.impl"; + private static final String s_serviceName = "foo.java"; + + // XServiceInfo impl + public String getImplementationName() + { + return s_implName; + } + + public String [] getSupportedServiceNames() + { + return new String [] { s_serviceName }; + } + + public boolean supportsService( String serviceName ) + { + return serviceName.equals( s_serviceName ); + } + + public static com.sun.star.lang.XSingleServiceFactory __getServiceFactory( + String implName, + com.sun.star.lang.XMultiServiceFactory multiFactory, + com.sun.star.registry.XRegistryKey regKey ) + { + if (implName.equals( s_implName )) + { + return com.sun.star.comp.loader.FactoryHelper.getServiceFactory( + java_Service.class, s_serviceName, multiFactory, regKey ); + } + return null; + } + + public static boolean __writeRegistryServiceInfo( + com.sun.star.registry.XRegistryKey regKey ) + { + return com.sun.star.comp.loader.FactoryHelper.writeRegistryServiceInfo( + s_implName, s_serviceName, regKey ); + } +} |