udoapi: merge sw refactoring with undoapi stuff

This commit is contained in:
Michael Stahl 2010-11-25 15:10:59 +01:00
commit 508e2ebd6d
9 changed files with 737 additions and 4 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View 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;
}
}
};

View 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;
};

View file

@ -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 );
}
};

View file

@ -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 ) );
}
}

View file

@ -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 );
}
}
}

View 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)