udoapi: merge sw refactoring with undoapi stuff
This commit is contained in:
commit
508e2ebd6d
9 changed files with 737 additions and 4 deletions
|
@ -2,3 +2,4 @@ te test : BOOST:boost cppu cppuhelper CPPUNIT:cppunit javaunohelper offuh ridlja
|
|||
te test\inc nmake - all inc NULL
|
||||
te test\source\cpp nmake - all source_cpp inc NULL
|
||||
te test\source\java\org\openoffice\test nmake - all source_java NULL
|
||||
te test\source\java\org\openoffice\test\tools nmake - all source_java_tools NULL
|
||||
|
|
|
@ -11,3 +11,4 @@ mkdir: %_DEST%\inc%_EXT%\test\detail
|
|||
..\inc\test\toabsolutefileurl.hxx %_DEST%\inc%_EXT%\test\toabsolutefileurl.hxx
|
||||
..\inc\test\uniquepipename.hxx %_DEST%\inc%_EXT%\test\uniquepipename.hxx
|
||||
..\%__SRC%\class\test.jar %_DEST%\bin%_EXT%\test.jar
|
||||
..\%__SRC%\class\test-tools.jar %_DEST%\bin%_EXT%\test-tools.jar
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
PRJ = ../../../../..
|
||||
PRJNAME = test
|
||||
TARGET = java
|
||||
TARGET = test
|
||||
|
||||
.IF "$(OOO_JUNIT_JAR)" != ""
|
||||
|
||||
|
@ -39,9 +39,10 @@ JAVAFILES = \
|
|||
JARFILES = juh.jar ridl.jar unoil.jar
|
||||
EXTRAJARFILES = $(OOO_JUNIT_JAR)
|
||||
|
||||
JARTARGET = test.jar
|
||||
JARCLASSDIRS = $(PACKAGE)
|
||||
JARCLASSPATH = $(JARFILES)
|
||||
JARTARGET = $(TARGET).jar
|
||||
JARCLASSDIRS = $(PACKAGE)
|
||||
JARCLASSEXCLUDES = $(PACKAGE)/tools/*
|
||||
JARCLASSPATH = $(JARFILES)
|
||||
# expect $(OOO_JUNIT_JAR) to be on CLASSPATH wherever test.jar is used (also,
|
||||
# on Windows, $(OOO_JUNIT_JAR) could be an absolute pathname with drive letter
|
||||
# like X:/path and some JVMs would refuse to load test.jar if its MANIFEST.MF
|
||||
|
|
64
test/source/java/org/openoffice/test/tools/DocumentType.java
Normal file
64
test/source/java/org/openoffice/test/tools/DocumentType.java
Normal file
|
@ -0,0 +1,64 @@
|
|||
/*************************************************************************
|
||||
*
|
||||
* 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 org.openoffice.test.tools;
|
||||
|
||||
/** a helper "enumeration class" for classifying a document type
|
||||
*/
|
||||
public class DocumentType extends com.sun.star.uno.Enum
|
||||
{
|
||||
private DocumentType( int value )
|
||||
{
|
||||
super( value );
|
||||
}
|
||||
|
||||
public static DocumentType getDefault()
|
||||
{
|
||||
return WRITER;
|
||||
}
|
||||
|
||||
public static final DocumentType WRITER = new DocumentType(0);
|
||||
public static final DocumentType CALC = new DocumentType(1);
|
||||
public static final DocumentType DRAWING = new DocumentType(2);
|
||||
public static final DocumentType XMLFORM = new DocumentType(3);
|
||||
public static final DocumentType PRESENTATION = new DocumentType(4);
|
||||
public static final DocumentType FORMULA = new DocumentType(5);
|
||||
public static final DocumentType UNKNOWN = new DocumentType(-1);
|
||||
|
||||
public static DocumentType fromInt(int value)
|
||||
{
|
||||
switch(value)
|
||||
{
|
||||
case 0: return WRITER;
|
||||
case 1: return CALC;
|
||||
case 2: return DRAWING;
|
||||
case 3: return XMLFORM;
|
||||
case 4: return PRESENTATION;
|
||||
case 5: return FORMULA;
|
||||
default: return UNKNOWN;
|
||||
}
|
||||
}
|
||||
};
|
328
test/source/java/org/openoffice/test/tools/OfficeDocument.java
Normal file
328
test/source/java/org/openoffice/test/tools/OfficeDocument.java
Normal file
|
@ -0,0 +1,328 @@
|
|||
/*************************************************************************
|
||||
*
|
||||
* 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 org.openoffice.test.tools;
|
||||
|
||||
import com.sun.star.beans.PropertyState;
|
||||
import com.sun.star.beans.PropertyValue;
|
||||
import com.sun.star.document.MacroExecMode;
|
||||
import com.sun.star.drawing.XDrawPage;
|
||||
import com.sun.star.drawing.XDrawPageSupplier;
|
||||
import com.sun.star.drawing.XDrawPages;
|
||||
import com.sun.star.drawing.XDrawPagesSupplier;
|
||||
import com.sun.star.frame.XComponentLoader;
|
||||
import com.sun.star.frame.XController;
|
||||
import com.sun.star.frame.XFrame;
|
||||
import com.sun.star.frame.XModel;
|
||||
import com.sun.star.lang.XComponent;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import com.sun.star.lang.XServiceInfo;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.uno.XInterface;
|
||||
import com.sun.star.util.CloseVetoException;
|
||||
import com.sun.star.util.XCloseable;
|
||||
import com.sun.star.util.XModifiable;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
/**************************************************************************/
|
||||
/** provides a small wrapper around a document
|
||||
*/
|
||||
public class OfficeDocument
|
||||
{
|
||||
/* ================================================================== */
|
||||
/* ------------------------------------------------------------------ */
|
||||
public OfficeDocument( XMultiServiceFactory orb, XComponent document )
|
||||
{
|
||||
m_orb = orb;
|
||||
m_documentComponent = document;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
protected static XComponent implLoadAsComponent( XMultiServiceFactory orb, String documentOrFactoryURL ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
return implLoadAsComponent( orb, documentOrFactoryURL, new PropertyValue[0] );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
protected static XComponent implLoadAsComponent( XMultiServiceFactory orb, String documentOrFactoryURL, final PropertyValue[] i_args ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
XComponentLoader aLoader = UnoRuntime.queryInterface( XComponentLoader.class,
|
||||
orb.createInstance( "com.sun.star.frame.Desktop" ) );
|
||||
|
||||
XComponent document = UnoRuntime.queryInterface( XComponent.class,
|
||||
aLoader.loadComponentFromURL( documentOrFactoryURL, "_blank", 0, i_args )
|
||||
);
|
||||
return document;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
private static OfficeDocument implLoadDocument( XMultiServiceFactory orb, String documentOrFactoryURL ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
return implLoadDocument( orb, documentOrFactoryURL, new PropertyValue[0] );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
private static OfficeDocument implLoadDocument( XMultiServiceFactory orb, String documentOrFactoryURL, final PropertyValue[] i_args ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
XComponent document = implLoadAsComponent( orb, documentOrFactoryURL, i_args );
|
||||
|
||||
XServiceInfo xSI = UnoRuntime.queryInterface( XServiceInfo.class, document );
|
||||
if ( xSI.supportsService( "com.sun.star.sheet.SpreadsheetDocument" ) )
|
||||
return new SpreadsheetDocument( orb, document );
|
||||
return new OfficeDocument( orb, document );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
public static OfficeDocument loadDocument( XMultiServiceFactory orb, String documentURL ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
return implLoadDocument( orb, documentURL );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
public static OfficeDocument blankTextDocument( XMultiServiceFactory orb ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
return blankDocument( orb, DocumentType.WRITER );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
public static OfficeDocument blankXMLForm( XMultiServiceFactory orb ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
return blankDocument( orb, DocumentType.XMLFORM );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
public static OfficeDocument blankDocument( XMultiServiceFactory orb, DocumentType eType ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
final PropertyValue[] args = new PropertyValue[] {
|
||||
new PropertyValue( "MacroExecutionMode", -1, MacroExecMode.ALWAYS_EXECUTE, PropertyState.DIRECT_VALUE )
|
||||
};
|
||||
return implLoadDocument( orb, getDocumentFactoryURL( eType ), args );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
public boolean close()
|
||||
{
|
||||
try
|
||||
{
|
||||
XCloseable closeDoc = UnoRuntime.queryInterface( XCloseable.class, m_documentComponent );
|
||||
closeDoc.close( true );
|
||||
return true;
|
||||
}
|
||||
catch ( CloseVetoException e )
|
||||
{
|
||||
Logger.getLogger( OfficeDocument.class.getName() ).log( Level.SEVERE, "closing the document was vetoed", e );
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* ================================================================== */
|
||||
/* ------------------------------------------------------------------ */
|
||||
public XComponent getDocument( )
|
||||
{
|
||||
return m_documentComponent;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
public boolean isModified()
|
||||
{
|
||||
XModifiable modify = (XModifiable)query( XModifiable.class );
|
||||
return modify.isModified();
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
public Object query( Class aInterfaceClass )
|
||||
{
|
||||
return UnoRuntime.queryInterface( aInterfaceClass, m_documentComponent );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
public XMultiServiceFactory getOrb( )
|
||||
{
|
||||
return m_orb;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** retrieves the current view of the document
|
||||
@return
|
||||
the view component, queried for the interface described by aInterfaceClass
|
||||
*/
|
||||
public OfficeDocumentView getCurrentView( )
|
||||
{
|
||||
// get the model interface for the document
|
||||
XModel xDocModel = UnoRuntime.queryInterface( XModel.class, m_documentComponent );
|
||||
// get the current controller for the document - as a controller is tied to a view,
|
||||
// this gives us the currently active view for the document.
|
||||
XController xController = xDocModel.getCurrentController();
|
||||
|
||||
if ( classify() == DocumentType.CALC )
|
||||
return new SpreadsheetView( m_orb, this, xController );
|
||||
|
||||
return new OfficeDocumentView( m_orb, this, xController );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** reloads the document
|
||||
*
|
||||
* The reload is done by dispatching the respective URL at a frame of the document.
|
||||
* As a consequence, if you have references to a view of the document, or any interface
|
||||
* of the document, they will become invalid.
|
||||
* The Model instance itself, at which you called reload, will still be valid, it will
|
||||
* automatically update its internal state after the reload.
|
||||
*
|
||||
* Another consequence is that if the document does not have a view at all, it cannot
|
||||
* be reloaded.
|
||||
*/
|
||||
public void reload() throws Exception
|
||||
{
|
||||
OfficeDocumentView view = getCurrentView();
|
||||
XFrame frame = view.getController().getFrame();
|
||||
XModel oldModel = frame.getController().getModel();
|
||||
|
||||
getCurrentView().dispatch( ".uno:Reload" );
|
||||
|
||||
m_documentComponent = UnoRuntime.queryInterface( XComponent.class, frame.getController().getModel() );
|
||||
|
||||
XModel newModel = getCurrentView().getController().getModel();
|
||||
if ( UnoRuntime.areSame( oldModel, newModel ) )
|
||||
throw new java.lang.IllegalStateException( "reload failed" );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** returns a URL which can be used to create a document of a certain type
|
||||
*/
|
||||
public static String getDocumentFactoryURL( DocumentType eType )
|
||||
{
|
||||
if ( eType == DocumentType.WRITER )
|
||||
return "private:factory/swriter";
|
||||
if ( eType == DocumentType.CALC )
|
||||
return "private:factory/scalc";
|
||||
if ( eType == DocumentType.DRAWING )
|
||||
return "private:factory/sdraw";
|
||||
if ( eType == DocumentType.XMLFORM )
|
||||
return "private:factory/swriter?slot=21053";
|
||||
if ( eType == DocumentType.PRESENTATION )
|
||||
return "private:factory/simpress";
|
||||
if ( eType == DocumentType.FORMULA )
|
||||
return "private:factory/smath";
|
||||
return "private:factory/swriter";
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** classifies a document
|
||||
*/
|
||||
public DocumentType classify( )
|
||||
{
|
||||
XServiceInfo xSI = UnoRuntime.queryInterface( XServiceInfo.class, m_documentComponent );
|
||||
|
||||
if ( xSI.supportsService( "com.sun.star.text.TextDocument" ) )
|
||||
return DocumentType.WRITER;
|
||||
else if ( xSI.supportsService( "com.sun.star.sheet.SpreadsheetDocument" ) )
|
||||
return DocumentType.CALC;
|
||||
else if ( xSI.supportsService( "com.sun.star.drawing.DrawingDocument" ) )
|
||||
return DocumentType.DRAWING;
|
||||
else if ( xSI.supportsService( "com.sun.star.presentation.PresentationDocument" ) )
|
||||
return DocumentType.PRESENTATION;
|
||||
else if ( xSI.supportsService( "com.sun.star.formula.FormulaProperties" ) )
|
||||
return DocumentType.FORMULA;
|
||||
|
||||
return DocumentType.UNKNOWN;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** retrieves a com.sun.star.drawing.DrawPage of the document, denoted by index
|
||||
* @param index
|
||||
* the index of the draw page
|
||||
* @throws
|
||||
* com.sun.star.lang.IndexOutOfBoundsException
|
||||
* com.sun.star.lang.WrappedTargetException
|
||||
*/
|
||||
protected XDrawPage getDrawPage( int index ) throws com.sun.star.lang.IndexOutOfBoundsException, com.sun.star.lang.WrappedTargetException
|
||||
{
|
||||
XDrawPagesSupplier xSuppPages = UnoRuntime.queryInterface( XDrawPagesSupplier.class, getDocument() );
|
||||
XDrawPages xPages = xSuppPages.getDrawPages();
|
||||
|
||||
return UnoRuntime.queryInterface( XDrawPage.class, xPages.getByIndex( index ) );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** retrieves the <type scope="com.sun.star.drawing">DrawPage</type> of the document
|
||||
*/
|
||||
protected XDrawPage getMainDrawPage( ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
XDrawPage xReturn;
|
||||
|
||||
// in case of a Writer document, this is rather easy: simply ask the XDrawPageSupplier
|
||||
XDrawPageSupplier xSuppPage = UnoRuntime.queryInterface( XDrawPageSupplier.class, getDocument() );
|
||||
if ( null != xSuppPage )
|
||||
xReturn = xSuppPage.getDrawPage();
|
||||
else
|
||||
{ // the model itself is no draw page supplier - okay, it may be a Writer or Calc document
|
||||
// (or any other multi-page document)
|
||||
XDrawPagesSupplier xSuppPages = UnoRuntime.queryInterface( XDrawPagesSupplier.class, getDocument() );
|
||||
XDrawPages xPages = xSuppPages.getDrawPages();
|
||||
|
||||
xReturn = UnoRuntime.queryInterface( XDrawPage.class, xPages.getByIndex( 0 ) );
|
||||
|
||||
// Note that this is no really error-proof code: If the document model does not support the
|
||||
// XDrawPagesSupplier interface, or if the pages collection returned is empty, this will break.
|
||||
}
|
||||
|
||||
return xReturn;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** creates a component at the service factory provided by the document
|
||||
*/
|
||||
public XInterface createInstance( String serviceSpecifier ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
XMultiServiceFactory xORB = UnoRuntime.queryInterface( XMultiServiceFactory.class, m_documentComponent );
|
||||
return (XInterface)xORB.createInstance( serviceSpecifier );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** creates a component at the service factory provided by the document, queried for a given interface type
|
||||
*/
|
||||
public <T> T createInstance( String i_serviceSpecifier, Class<T> i_interfaceClass ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
return UnoRuntime.queryInterface( i_interfaceClass, createInstance( i_serviceSpecifier ) );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** creates a component at the service factory provided by the document
|
||||
*/
|
||||
public XInterface createInstanceWithArguments( String serviceSpecifier, Object[] arguments ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
XMultiServiceFactory xORB = UnoRuntime.queryInterface( XMultiServiceFactory.class, m_documentComponent );
|
||||
return (XInterface) xORB.createInstanceWithArguments( serviceSpecifier, arguments );
|
||||
}
|
||||
|
||||
private XMultiServiceFactory m_orb;
|
||||
private XComponent m_documentComponent;
|
||||
};
|
||||
|
|
@ -0,0 +1,144 @@
|
|||
/*************************************************************************
|
||||
*
|
||||
* 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 org.openoffice.test.tools;
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
import com.sun.star.beans.NamedValue;
|
||||
import com.sun.star.beans.PropertyState;
|
||||
import com.sun.star.beans.PropertyValue;
|
||||
import com.sun.star.frame.XController;
|
||||
import com.sun.star.frame.XDispatch;
|
||||
import com.sun.star.frame.XDispatchProvider;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.util.URL;
|
||||
import com.sun.star.util.XURLTransformer;
|
||||
|
||||
/**************************************************************************/
|
||||
/** provides a small wrapper around a document view
|
||||
*/
|
||||
public class OfficeDocumentView
|
||||
{
|
||||
private XMultiServiceFactory m_orb;
|
||||
private XController m_controller;
|
||||
private OfficeDocument m_document;
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
final public XController getController()
|
||||
{
|
||||
return m_controller;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
final protected OfficeDocument getDocument()
|
||||
{
|
||||
return m_document;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
public OfficeDocumentView( XMultiServiceFactory orb, OfficeDocument document, XController controller )
|
||||
{
|
||||
m_orb = orb;
|
||||
m_document = document;
|
||||
m_controller = controller;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** retrieves a dispatcher for the given URL, obtained at the current view of the document
|
||||
@param aURL
|
||||
a one-element array. The first element must contain a valid
|
||||
<member scope="com.sun.star.util">URL::Complete</member> value. Upon return, the URL is correctly
|
||||
parsed.
|
||||
@return
|
||||
the dispatcher for the URL in question
|
||||
*/
|
||||
public XDispatch getDispatcher( URL[] aURL ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
XDispatch xReturn = null;
|
||||
|
||||
// go get the dispatch provider of it's frame
|
||||
XDispatchProvider xProvider = UnoRuntime.queryInterface( XDispatchProvider.class, m_controller.getFrame() );
|
||||
if ( null != xProvider )
|
||||
{
|
||||
// need an URLTransformer
|
||||
XURLTransformer xTransformer = UnoRuntime.queryInterface( XURLTransformer.class,
|
||||
m_orb.createInstance( "com.sun.star.util.URLTransformer" ) );
|
||||
xTransformer.parseStrict( aURL );
|
||||
|
||||
xReturn = xProvider.queryDispatch( aURL[0], new String( ), 0 );
|
||||
}
|
||||
return xReturn;
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** retrieves a dispatcher for the given URL, obtained at the current view of the document
|
||||
*/
|
||||
public XDispatch getDispatcher( String url ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
URL[] aURL = new URL[] { new URL() };
|
||||
aURL[0].Complete = url;
|
||||
return getDispatcher( aURL );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** dispatches the given URL into the view, if there's a dispatcher for it
|
||||
|
||||
@return
|
||||
<TRUE/> if the URL was successfully dispatched
|
||||
*/
|
||||
public boolean dispatch( String i_url ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
return dispatch( i_url, new PropertyValue[0] );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
public boolean dispatch( final String i_url, final PropertyValue[] i_arguments ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
URL[] completeURL = new URL[] { new URL() };
|
||||
completeURL[0].Complete = i_url;
|
||||
XDispatch dispatcher = getDispatcher( completeURL );
|
||||
if ( dispatcher == null )
|
||||
return false;
|
||||
|
||||
dispatcher.dispatch( completeURL[0], i_arguments );
|
||||
return true;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
public boolean dispatch( final String i_url, final NamedValue[] i_arguments ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
final PropertyValue[] dispatchArgs = new PropertyValue[ i_arguments.length ];
|
||||
for ( int i=0; i<i_arguments.length; ++i )
|
||||
{
|
||||
dispatchArgs[i] = new PropertyValue( i_arguments[i].Name, -1, i_arguments[i].Value, PropertyState.DIRECT_VALUE );
|
||||
}
|
||||
return dispatch( i_url, dispatchArgs );
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
/*************************************************************************
|
||||
*
|
||||
* 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 org.openoffice.test.tools;
|
||||
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import com.sun.star.lang.XComponent;
|
||||
import com.sun.star.table.XCellRange;
|
||||
import com.sun.star.container.XIndexAccess;
|
||||
import com.sun.star.sheet.XSpreadsheetDocument;
|
||||
import com.sun.star.sheet.XSpreadsheets;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
|
||||
/**
|
||||
* @author frank.schoenheit@oracle.com
|
||||
*/
|
||||
public class SpreadsheetDocument extends OfficeDocument
|
||||
{
|
||||
/** Creates a new blank spreadsheet document */
|
||||
/* ------------------------------------------------------------------ */
|
||||
public SpreadsheetDocument( XMultiServiceFactory orb ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
super( orb, implLoadAsComponent( orb, "private:factory/scalc" ) );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
public SpreadsheetDocument( XMultiServiceFactory orb, XComponent document ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
super( orb, document );
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** returns the sheets collection
|
||||
*/
|
||||
public XSpreadsheets getSheets() throws com.sun.star.uno.Exception
|
||||
{
|
||||
XSpreadsheetDocument spreadsheetDoc = UnoRuntime.queryInterface( XSpreadsheetDocument.class, getDocument() );
|
||||
return spreadsheetDoc.getSheets();
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/** returns the sheet with the given index
|
||||
*/
|
||||
public XCellRange getSheet( int index ) throws com.sun.star.uno.Exception
|
||||
{
|
||||
XIndexAccess sheets = UnoRuntime.queryInterface( XIndexAccess.class, getSheets() );
|
||||
return UnoRuntime.queryInterface( XCellRange.class, sheets.getByIndex( index ) );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
/*************************************************************************
|
||||
*
|
||||
* 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 org.openoffice.test.tools;
|
||||
|
||||
import com.sun.star.container.XIndexAccess;
|
||||
import com.sun.star.frame.XController;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import com.sun.star.sheet.XSpreadsheet;
|
||||
import com.sun.star.sheet.XSpreadsheetDocument;
|
||||
import com.sun.star.sheet.XSpreadsheetView;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
* @author frank.schoenheit@oracle.com
|
||||
*/
|
||||
public class SpreadsheetView extends OfficeDocumentView
|
||||
{
|
||||
|
||||
/** Creates a new instance of SpreadsheetView */
|
||||
public SpreadsheetView( XMultiServiceFactory orb, OfficeDocument document, XController controller )
|
||||
{
|
||||
super( orb, document, controller );
|
||||
}
|
||||
|
||||
/** activates the sheet with the given index
|
||||
*/
|
||||
void activateSheet( int sheetIndex )
|
||||
{
|
||||
try
|
||||
{
|
||||
// get the sheet to activate
|
||||
XSpreadsheetDocument doc = UnoRuntime.queryInterface( XSpreadsheetDocument.class, getDocument().getDocument() );
|
||||
XIndexAccess sheets = UnoRuntime.queryInterface( XIndexAccess.class, doc.getSheets() );
|
||||
|
||||
XSpreadsheet sheet = UnoRuntime.queryInterface( XSpreadsheet.class, sheets.getByIndex( sheetIndex ) );
|
||||
|
||||
// activate
|
||||
XSpreadsheetView view = UnoRuntime.queryInterface( XSpreadsheetView.class, getController() );
|
||||
view.setActiveSheet( sheet );
|
||||
}
|
||||
catch( com.sun.star.uno.Exception e )
|
||||
{
|
||||
Logger.getLogger( SpreadsheetView.class.getName() ).log( Level.SEVERE, "unable to activate the given sheet", e );
|
||||
}
|
||||
}
|
||||
}
|
49
test/source/java/org/openoffice/test/tools/makefile.mk
Normal file
49
test/source/java/org/openoffice/test/tools/makefile.mk
Normal file
|
@ -0,0 +1,49 @@
|
|||
#*************************************************************************
|
||||
# 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.
|
||||
#***********************************************************************/
|
||||
|
||||
PRJ = ../../../../../..
|
||||
PRJNAME = test
|
||||
TARGET = test-tools
|
||||
|
||||
PACKAGE = org/openoffice/test/tools
|
||||
|
||||
.INCLUDE: settings.mk
|
||||
|
||||
JARFILES = juh.jar ridl.jar unoil.jar
|
||||
JAVAFILES = \
|
||||
OfficeDocument.java \
|
||||
OfficeDocumentView.java \
|
||||
DocumentType.java \
|
||||
SpreadsheetDocument.java \
|
||||
SpreadsheetView.java \
|
||||
|
||||
JARTARGET = $(TARGET).jar
|
||||
JARCLASSDIRS = $(PACKAGE)
|
||||
JARCLASSPATH = $(JARFILES)
|
||||
|
||||
.INCLUDE: target.mk
|
||||
|
||||
test:
|
||||
echo $(JAVACLASSFILES)
|
Loading…
Reference in a new issue