diff options
Diffstat (limited to 'extensions/qa/integration/extensions/ObjectInspector.java')
-rw-r--r-- | extensions/qa/integration/extensions/ObjectInspector.java | 176 |
1 files changed, 176 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..0a436a1ae650 --- /dev/null +++ b/extensions/qa/integration/extensions/ObjectInspector.java @@ -0,0 +1,176 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +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() ); + + // handler factories: + Object[] handlerFactories = new Object[] { + "com.sun.star.inspection.GenericPropertyHandler", + new ComponentFactory( ServicesHandler.class ), + new ComponentFactory( MethodHandler.class ) + }; + // a model + XObjectInspectorModel model = ObjectInspectorModel.createWithHandlerFactoriesAndHelpSection( + m_context, handlerFactories, 4, 4 ); + + // create the ObjectInspector + XObjectInspector inspector = com.sun.star.inspection.ObjectInspector.createWithModel( + m_context, model ); + + // add an observer which will emit help texts + new HelpTextProvider( inspector.getInspectorUI() ); + + // 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 ) ); + } +} |