diff options
author | Vladimir Glazounov <vg@openoffice.org> | 2006-03-31 11:17:53 +0000 |
---|---|---|
committer | Vladimir Glazounov <vg@openoffice.org> | 2006-03-31 11:17:53 +0000 |
commit | f7d67d169ec0ea2d3c40c26607c7a13166c03f95 (patch) | |
tree | d289d4fff8814876ce714205f3f8a58a14a5cea3 /extensions/qa | |
parent | 97ec539375fa7f905ceb5f9acd91b1393cc29c85 (diff) |
INTEGRATION: CWS dba203b (1.1.2); FILE ADDED
2006/03/28 13:08:59 fs 1.1.2.3: additional handler displaying the methods
2006/03/23 11:51:59 fs 1.1.2.2: extra handler for displaying supported services in a clickable form
2006/03/23 10:16:16 fs 1.1.2.1: interactive ObjectInspector test
Diffstat (limited to 'extensions/qa')
-rw-r--r-- | extensions/qa/integration/extensions/ObjectInspector.java | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/extensions/qa/integration/extensions/ObjectInspector.java b/extensions/qa/integration/extensions/ObjectInspector.java new file mode 100644 index 000000000000..4b3879ae1284 --- /dev/null +++ b/extensions/qa/integration/extensions/ObjectInspector.java @@ -0,0 +1,180 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: ObjectInspector.java,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: vg $ $Date: 2006-03-31 12:17:53 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + +package integration.extensions; + +import com.sun.star.uno.XComponentContext; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.lang.XMultiServiceFactory; + +import com.sun.star.frame.*; +import com.sun.star.inspection.*; +import com.sun.star.beans.*; + +import integration.extensions.Frame; + +public class ObjectInspector extends complexlib.ComplexTestCase +{ + private XComponentContext m_context; + private XMultiServiceFactory m_orb; + private Frame m_desktop; + + final private String m_inspectorFrameName = new String( "ObjectInspector" ); + + /** Creates a new instance of ValueBinding */ + public ObjectInspector() + { + } + + /* ------------------------------------------------------------------ */ + public String[] getTestMethodNames() + { + return new String[] { + "interactiveObjectInspector" + }; + } + + /* ------------------------------------------------------------------ */ + public String getTestObjectName() + { + return "Test Skeleton"; + } + + /* ------------------------------------------------------------------ */ + public void before() throws com.sun.star.uno.Exception, java.lang.Exception + { + m_orb = (XMultiServiceFactory)param.getMSF(); + m_context = (XComponentContext)UnoRuntime.queryInterface( XComponentContext.class, + ((XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, m_orb )).getPropertyValue( "DefaultContext" ) ); + m_desktop = new Frame( m_orb.createInstance( "com.sun.star.frame.Desktop" ) ); + } + + /* ------------------------------------------------------------------ */ + public void after() throws com.sun.star.uno.Exception, java.lang.Exception + { + closeExistentInspector(); + } + + /* ------------------------------------------------------------------ */ + public void interactiveObjectInspector() throws com.sun.star.uno.Exception, java.lang.Exception + { + closeExistentInspector(); + + // the to-be-inspected object + XFrame inspectee = m_desktop.getActiveFrame(); + + // the inspector + XObjectInspector inspector = createObjectInspector(); + + // do inspect + inspector.inspect( new Object[] { inspectee } ); + + ConsoleWait keyWaiter = new ConsoleWait( inspector ); + keyWaiter.waitForUserInput(); + } + + /* ------------------------------------------------------------------ */ + private XObjectInspector createObjectInspector() throws com.sun.star.uno.Exception + { + com.sun.star.awt.XWindow floatingWindow = createFloatingWindow(); + + Frame inspectorFrame = new Frame( m_orb.createInstance( "com.sun.star.frame.Frame" ) ); + inspectorFrame.setName( m_inspectorFrameName ); + inspectorFrame.initialize( floatingWindow ); + m_desktop.getFrames().append( inspectorFrame.getXFrame() ); + + // create the ObjectInspector + XObjectInspector inspector = (XObjectInspector)UnoRuntime.queryInterface( + XObjectInspector.class, m_orb.createInstance( "com.sun.star.inspection.ObjectInspector" ) ); + + // handler factories: + Object[] handlerFactories = new Object[] { + "com.sun.star.inspection.GenericPropertyHandler", + new ComponentFactory( ServicesHandler.class ), + new ComponentFactory( MethodHandler.class ) + }; + // knit a default model to the inspector + inspector.setInspectorModel( ObjectInspectorModel.createWithHandlerFactories( m_context, handlerFactories ) ); + + // plug it into the frame + inspector.attachFrame( inspectorFrame.getXFrame() ); + + // make the window visible + floatingWindow.setVisible( true ); + + // outta here + return inspector; + } + + /* ------------------------------------------------------------------ */ + private void closeExistentInspector() + { + Frame existentInspectorFrame = new Frame( m_desktop.findFrame( m_inspectorFrameName, 255 ) ); + if ( existentInspectorFrame != null ) + { + try + { + existentInspectorFrame.close( true ); + } + catch( com.sun.star.util.CloseVetoException e ) + { + failed( "could not close the existent inspector frame" ); + } + } + } + + /* ------------------------------------------------------------------ */ + private com.sun.star.awt.XWindow createFloatingWindow() throws com.sun.star.uno.Exception + { + com.sun.star.awt.XToolkit toolkit = (com.sun.star.awt.XToolkit)UnoRuntime.queryInterface( + com.sun.star.awt.XToolkit.class, m_orb.createInstance( "com.sun.star.awt.Toolkit" ) ); + + com.sun.star.awt.WindowDescriptor windowDescriptor = new com.sun.star.awt.WindowDescriptor(); + windowDescriptor.Type = com.sun.star.awt.WindowClass.TOP; + windowDescriptor.WindowServiceName = "modelessdialog"; // "floatingwindow" would need a parent + windowDescriptor.ParentIndex = -1; + //windowDescriptor.Parent = null; + + windowDescriptor.Bounds = new com.sun.star.awt.Rectangle( 500, 100, 400, 600 ); + windowDescriptor.WindowAttributes = com.sun.star.awt.WindowAttribute.BORDER + + com.sun.star.awt.WindowAttribute.MOVEABLE + + com.sun.star.awt.WindowAttribute.SIZEABLE + + com.sun.star.awt.WindowAttribute.CLOSEABLE + + com.sun.star.awt.VclWindowPeerAttribute.CLIPCHILDREN; + + return (com.sun.star.awt.XWindow)UnoRuntime.queryInterface( com.sun.star.awt.XWindow.class, + toolkit.createWindow( windowDescriptor ) ); + } +} |