2003-10-06 03:58:36 -05:00
|
|
|
// package name: as default, start with complex
|
|
|
|
package qa;
|
|
|
|
|
|
|
|
// imports
|
|
|
|
import complexlib.ComplexTestCase;
|
|
|
|
import com.sun.star.uno.XInterface;
|
|
|
|
import com.sun.star.uno.UnoRuntime;
|
|
|
|
import com.sun.star.uno.Type;
|
|
|
|
import com.sun.star.uno.XComponentContext;
|
|
|
|
|
|
|
|
import java.io.PrintWriter;
|
|
|
|
import java.util.Hashtable;
|
|
|
|
|
|
|
|
import com.sun.star.lang.*;
|
|
|
|
import com.sun.star.beans.*;
|
|
|
|
import com.sun.star.frame.*;
|
|
|
|
import com.sun.star.chart.*;
|
|
|
|
import com.sun.star.drawing.*;
|
|
|
|
import com.sun.star.util.XCloseable;
|
|
|
|
import com.sun.star.util.CloseVetoException;
|
|
|
|
|
|
|
|
import drafts.com.sun.star.chart2.XTitled;
|
|
|
|
import drafts.com.sun.star.chart2.XTitle;
|
|
|
|
import drafts.com.sun.star.chart2.XDataProvider;
|
|
|
|
import drafts.com.sun.star.chart2.XFormattedString;
|
|
|
|
|
|
|
|
import com.sun.star.uno.AnyConverter;
|
|
|
|
import com.sun.star.comp.helper.ComponentContext;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The following Complex Test will test the
|
|
|
|
* com.sun.star.document.IndexedPropertyValues
|
|
|
|
* service
|
|
|
|
*/
|
|
|
|
|
|
|
|
public class TestCaseOldAPI extends ComplexTestCase {
|
|
|
|
|
|
|
|
// The name of the tested service
|
|
|
|
private final String testedServiceName =
|
|
|
|
"com.sun.star.chart.ChartDocument";
|
|
|
|
|
|
|
|
// The first of the mandatory functions:
|
|
|
|
/**
|
|
|
|
* Return the name of the test.
|
|
|
|
* In this case it is the actual name of the service.
|
|
|
|
* @return The tested service.
|
|
|
|
*/
|
|
|
|
public String getTestObjectName() {
|
|
|
|
return testedServiceName;
|
|
|
|
}
|
|
|
|
|
|
|
|
// The second of the mandatory functions: return all test methods as an
|
|
|
|
// array. There is only one test function in this example.
|
|
|
|
/**
|
|
|
|
* Return all test methods.
|
|
|
|
* @return The test methods.
|
|
|
|
*/
|
|
|
|
public String[] getTestMethodNames() {
|
|
|
|
return new String[] {
|
|
|
|
"testTitle",
|
|
|
|
"testSubTitle",
|
|
|
|
"testDiagram",
|
|
|
|
"testAxis"
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
// ____________
|
|
|
|
|
|
|
|
public void before()
|
|
|
|
{
|
|
|
|
boolean bCreateView = false;
|
|
|
|
|
|
|
|
if( bCreateView )
|
|
|
|
mxChartModel = createDocument( "chart" );
|
|
|
|
else
|
|
|
|
mxChartModel = createChartModel();
|
|
|
|
|
|
|
|
createFileDataSource( mxChartModel );
|
|
|
|
mxOldDoc = (XChartDocument) UnoRuntime.queryInterface(
|
|
|
|
XChartDocument.class, mxChartModel );
|
|
|
|
}
|
|
|
|
|
|
|
|
// ____________
|
|
|
|
|
|
|
|
public void after_disabled()
|
|
|
|
{
|
|
|
|
XCloseable xCloseable = (XCloseable) UnoRuntime.queryInterface(
|
|
|
|
XCloseable.class, mxChartModel );
|
|
|
|
assure( "document is no XCloseable", xCloseable != null );
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
xCloseable.close( true );
|
|
|
|
}
|
|
|
|
catch( CloseVetoException ex )
|
|
|
|
{
|
|
|
|
failed( ex.getMessage() );
|
|
|
|
ex.printStackTrace( (PrintWriter)log );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// ____________
|
|
|
|
|
|
|
|
public void testTitle()
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
// set title at new chart
|
|
|
|
XTitled xTitled = (XTitled) UnoRuntime.queryInterface(
|
|
|
|
XTitled.class, mxChartModel );
|
|
|
|
|
|
|
|
// set title via new API
|
|
|
|
XTitle xTitle = setTitle( xTitled, "Sample", "@main-title" );
|
|
|
|
|
|
|
|
// printInterfacesAndServices( xTitle );
|
|
|
|
|
|
|
|
// get title via old API
|
|
|
|
XShape xTitleShape = mxOldDoc.getTitle();
|
|
|
|
XPropertySet xTitleProp = (XPropertySet) UnoRuntime.queryInterface(
|
|
|
|
XPropertySet.class, xTitleShape );
|
|
|
|
|
|
|
|
// set property via old API
|
|
|
|
if( xTitleProp != null )
|
|
|
|
{
|
|
|
|
String aTitle = " Overwritten by Old API ";
|
|
|
|
float fHeight = (float)17.0;
|
|
|
|
|
|
|
|
xTitleProp.setPropertyValue( "String", aTitle );
|
|
|
|
xTitleProp.setPropertyValue( "CharHeight", new Float( fHeight ) );
|
|
|
|
|
|
|
|
float fNewHeight = AnyConverter.toFloat( xTitleProp.getPropertyValue( "CharHeight" ) );
|
|
|
|
assure( "Changing CharHeight via old API failed", fNewHeight == fHeight );
|
|
|
|
|
|
|
|
String aNewTitle = AnyConverter.toString( xTitleProp.getPropertyValue( "String" ) );
|
|
|
|
assure( "Property \"String\" failed", aNewTitle.equals( aTitle ));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( Exception ex )
|
|
|
|
{
|
|
|
|
failed( ex.getMessage() );
|
|
|
|
ex.printStackTrace( (PrintWriter)log );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// ____________
|
|
|
|
|
|
|
|
public void testSubTitle()
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
// trying back-querying (from old Wrapper to new Model)
|
|
|
|
drafts.com.sun.star.chart2.XChartDocument xNewDoc =
|
|
|
|
(drafts.com.sun.star.chart2.XChartDocument) UnoRuntime.queryInterface(
|
|
|
|
drafts.com.sun.star.chart2.XChartDocument.class,
|
|
|
|
mxOldDoc );
|
|
|
|
|
|
|
|
// set title at new chart
|
|
|
|
XTitled xTitled = (XTitled) UnoRuntime.queryInterface(
|
|
|
|
XTitled.class, xNewDoc.getDiagram() );
|
|
|
|
|
|
|
|
// set title via new API
|
|
|
|
setTitle( xTitled, "Sub", "@sub-title" );
|
|
|
|
|
|
|
|
// get Property via old API
|
|
|
|
XShape xTitleShape = mxOldDoc.getSubTitle();
|
|
|
|
XPropertySet xTitleProp = (XPropertySet) UnoRuntime.queryInterface(
|
|
|
|
XPropertySet.class, xTitleShape );
|
|
|
|
|
|
|
|
// set Property via old API
|
|
|
|
if( xTitleProp != null )
|
|
|
|
{
|
|
|
|
int nColor = 0x009acd; // DeepSkyBlue3
|
|
|
|
float fWeight = com.sun.star.awt.FontWeight.BOLD;
|
|
|
|
|
|
|
|
xTitleProp.setPropertyValue( "CharColor", new Integer( nColor ) );
|
|
|
|
xTitleProp.setPropertyValue( "CharWeight", new Float( fWeight ));
|
|
|
|
|
|
|
|
int nNewColor = AnyConverter.toInt( xTitleProp.getPropertyValue( "CharColor" ) );
|
|
|
|
assure( "Changing CharColor via old API failed", nNewColor == nColor );
|
|
|
|
|
|
|
|
float fNewWeight = AnyConverter.toFloat( xTitleProp.getPropertyValue( "CharWeight" ) );
|
|
|
|
assure( "Changing CharWeight via old API failed", fNewWeight == fWeight );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( Exception ex )
|
|
|
|
{
|
|
|
|
failed( ex.getMessage() );
|
|
|
|
ex.printStackTrace( (PrintWriter)log );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------
|
|
|
|
|
|
|
|
public void testDiagram()
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
// testing wall
|
|
|
|
XDiagram xDia = mxOldDoc.getDiagram();
|
|
|
|
if( xDia != null )
|
|
|
|
{
|
|
|
|
X3DDisplay xDisp = (X3DDisplay) UnoRuntime.queryInterface(
|
|
|
|
X3DDisplay.class, xDia );
|
|
|
|
assure( "X3DDisplay not supported", xDisp != null );
|
|
|
|
|
|
|
|
XPropertySet xProp = xDisp.getWall();
|
|
|
|
if( xProp != null )
|
|
|
|
{
|
|
|
|
log.println( "Testing wall" );
|
|
|
|
|
|
|
|
int nColor = 0xffe1ff; // thistle1
|
|
|
|
|
|
|
|
xProp.setPropertyValue( "FillColor", new Integer( nColor ) );
|
|
|
|
|
|
|
|
int nNewColor = AnyConverter.toInt( xProp.getPropertyValue( "FillColor" ) );
|
|
|
|
assure( "Changing FillColor via old API failed", nNewColor == nColor );
|
|
|
|
}
|
|
|
|
|
|
|
|
assure( "Wrong Diagram Type", xDia.getDiagramType().equals(
|
|
|
|
"com.sun.star.chart.BarDiagram" ));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( Exception ex )
|
|
|
|
{
|
|
|
|
failed( ex.getMessage() );
|
|
|
|
ex.printStackTrace( (PrintWriter)log );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------
|
|
|
|
|
|
|
|
public void testAxis()
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
XAxisYSupplier xYAxisSuppl = (XAxisYSupplier) UnoRuntime.queryInterface(
|
|
|
|
XAxisYSupplier.class, mxOldDoc.getDiagram() );
|
|
|
|
assure( "Diagram is no y-axis supplier", xYAxisSuppl != null );
|
|
|
|
|
|
|
|
XPropertySet xProp = xYAxisSuppl.getYAxis();
|
|
|
|
assure( "No y-axis found", xProp != null );
|
|
|
|
|
|
|
|
double nNewMax = 12.3;
|
2003-10-06 09:01:00 -05:00
|
|
|
double nNewOrigin = 2.7;
|
2003-10-06 03:58:36 -05:00
|
|
|
|
|
|
|
xProp.setPropertyValue( "Max", new Double( nNewMax ));
|
|
|
|
assure( "AutoMax is on", ! AnyConverter.toBoolean( xProp.getPropertyValue( "AutoMax" )) );
|
|
|
|
|
|
|
|
assure( "Maximum value invalid",
|
|
|
|
approxEqual(
|
|
|
|
AnyConverter.toDouble( xProp.getPropertyValue( "Max" )),
|
|
|
|
nNewMax ));
|
|
|
|
|
|
|
|
xProp.setPropertyValue( "AutoMin", new Boolean( true ));
|
|
|
|
assure( "AutoMin is off", AnyConverter.toBoolean( xProp.getPropertyValue( "AutoMin" )) );
|
|
|
|
|
|
|
|
// missing: Min/Max, etc. is not always returning a double
|
|
|
|
// Object oMin = xProp.getPropertyValue( "Min" );
|
|
|
|
// assure( "No Minimum set", AnyConverter.isDouble( oMin ));
|
|
|
|
// log.println( "Minimum retrieved: " + AnyConverter.toDouble( oMin ));
|
2003-10-06 09:01:00 -05:00
|
|
|
|
|
|
|
xProp.setPropertyValue( "Origin", new Double( nNewOrigin ));
|
|
|
|
assure( "Origin invalid",
|
|
|
|
approxEqual(
|
|
|
|
AnyConverter.toDouble( xProp.getPropertyValue( "Origin" )),
|
|
|
|
nNewOrigin ));
|
|
|
|
xProp.setPropertyValue( "AutoOrigin", new Boolean( true ));
|
|
|
|
assure( "AutoOrigin is off", AnyConverter.toBoolean( xProp.getPropertyValue( "AutoOrigin" )) );
|
|
|
|
|
|
|
|
xProp.setPropertyValue( "Logarithmic", new Boolean( true ));
|
|
|
|
assure( "Scaling is not logarithmic",
|
|
|
|
AnyConverter.toBoolean( xProp.getPropertyValue( "Logarithmic" )) );
|
|
|
|
xProp.setPropertyValue( "Logarithmic", new Boolean( false ));
|
|
|
|
assure( "Scaling is not logarithmic",
|
|
|
|
! AnyConverter.toBoolean( xProp.getPropertyValue( "Logarithmic" )) );
|
2003-10-06 10:01:51 -05:00
|
|
|
|
|
|
|
int nNewColor = 0xcd853f; // peru
|
|
|
|
xProp.setPropertyValue( "LineColor", new Integer( nNewColor ));
|
|
|
|
assure( "Property LineColor",
|
|
|
|
AnyConverter.toInt( xProp.getPropertyValue( "LineColor" )) == nNewColor );
|
|
|
|
float fNewCharHeight = (float)(16.0);
|
|
|
|
xProp.setPropertyValue( "CharHeight", new Float( fNewCharHeight ));
|
|
|
|
assure( "Property CharHeight",
|
|
|
|
AnyConverter.toFloat( xProp.getPropertyValue( "CharHeight" )) == fNewCharHeight );
|
2003-10-06 03:58:36 -05:00
|
|
|
}
|
|
|
|
catch( Exception ex )
|
|
|
|
{
|
|
|
|
failed( ex.getMessage() );
|
|
|
|
ex.printStackTrace( (PrintWriter)log );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// ================================================================================
|
|
|
|
|
|
|
|
private XModel mxChartModel;
|
|
|
|
private XChartDocument mxOldDoc;
|
|
|
|
|
|
|
|
// --------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
private void createFileDataSource( XModel xModel )
|
|
|
|
{
|
|
|
|
XMultiServiceFactory xFactory = (XMultiServiceFactory) param.getMSF();
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
XDataProvider xDataProv = (XDataProvider) UnoRuntime.queryInterface(
|
|
|
|
XDataProvider.class,
|
|
|
|
xFactory.createInstance( "com.sun.star.comp.chart.FileDataProvider" ));
|
|
|
|
|
|
|
|
drafts.com.sun.star.chart2.XChartDocument xDoc =
|
|
|
|
(drafts.com.sun.star.chart2.XChartDocument) UnoRuntime.queryInterface(
|
|
|
|
drafts.com.sun.star.chart2.XChartDocument.class,
|
|
|
|
xModel );
|
|
|
|
|
|
|
|
if( xDataProv != null &&
|
|
|
|
xDoc != null )
|
|
|
|
{
|
|
|
|
xDoc.attachDataProvider( xDataProv );
|
|
|
|
String aURL = "file://" + System.getProperty( "user.dir" ) +
|
|
|
|
System.getProperty( "file.separator" ) + "data.chd";
|
|
|
|
log.println( aURL );
|
|
|
|
xDoc.setRangeRepresentation( aURL );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( Exception ex )
|
|
|
|
{
|
|
|
|
failed( ex.getMessage() );
|
|
|
|
ex.printStackTrace( (PrintWriter)log );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------
|
|
|
|
|
|
|
|
private XModel createDocument( String sDocType )
|
|
|
|
{
|
|
|
|
XModel aResult = null;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
XComponentLoader aLoader = (XComponentLoader) UnoRuntime.queryInterface(
|
|
|
|
XComponentLoader.class,
|
|
|
|
((XMultiServiceFactory)param.getMSF()).createInstance( "com.sun.star.frame.Desktop" ) );
|
|
|
|
|
|
|
|
aResult = (XModel) UnoRuntime.queryInterface(
|
|
|
|
XModel.class,
|
|
|
|
aLoader.loadComponentFromURL( "private:factory/" + sDocType,
|
|
|
|
"_blank",
|
|
|
|
0,
|
|
|
|
new PropertyValue[ 0 ] ) );
|
|
|
|
}
|
|
|
|
catch( Exception ex )
|
|
|
|
{
|
|
|
|
failed( ex.getMessage() );
|
|
|
|
ex.printStackTrace( (PrintWriter)log );
|
|
|
|
}
|
|
|
|
|
|
|
|
return aResult;
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------
|
|
|
|
|
|
|
|
public XModel createChartModel()
|
|
|
|
{
|
|
|
|
XModel aResult = null;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
aResult = (XModel) UnoRuntime.queryInterface(
|
|
|
|
XModel.class,
|
|
|
|
((XMultiServiceFactory)param.getMSF()).createInstance( "com.sun.star.comp.chart2.ChartModel" ) );
|
|
|
|
}
|
|
|
|
catch( Exception ex )
|
|
|
|
{
|
|
|
|
failed( ex.getMessage() );
|
|
|
|
ex.printStackTrace( (PrintWriter)log );
|
|
|
|
}
|
|
|
|
|
|
|
|
return aResult;
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------
|
|
|
|
|
|
|
|
private XTitle setTitle( XTitled xTitleParent, String aTitle, String aId )
|
|
|
|
{
|
|
|
|
XTitle xTitle = null;
|
|
|
|
|
|
|
|
if( xTitleParent != null )
|
|
|
|
try
|
|
|
|
{
|
|
|
|
XMultiServiceFactory xFact = (XMultiServiceFactory)param.getMSF();
|
|
|
|
XMultiComponentFactory xCompFact = (XMultiComponentFactory) UnoRuntime.queryInterface(
|
|
|
|
XMultiComponentFactory.class, xFact );
|
|
|
|
|
|
|
|
XFormattedString[] aStrings = new XFormattedString[ 2 ];
|
|
|
|
aStrings[0] = (XFormattedString) UnoRuntime.queryInterface(
|
|
|
|
XFormattedString.class,
|
|
|
|
xFact.createInstance(
|
|
|
|
"drafts.com.sun.star.chart2.FormattedString" ));
|
|
|
|
aStrings[1] = (XFormattedString) UnoRuntime.queryInterface(
|
|
|
|
XFormattedString.class,
|
|
|
|
xFact.createInstance(
|
|
|
|
"drafts.com.sun.star.chart2.FormattedString" ));
|
|
|
|
aStrings[0].setString( aTitle );
|
|
|
|
aStrings[1].setString( " Title" );
|
|
|
|
|
|
|
|
Hashtable aParams = new Hashtable();
|
|
|
|
aParams.put( "Identifier", aId );
|
|
|
|
|
|
|
|
xTitle = (XTitle) UnoRuntime.queryInterface(
|
|
|
|
XTitle.class,
|
|
|
|
xCompFact.createInstanceWithContext(
|
|
|
|
"drafts.com.sun.star.chart2.Title",
|
|
|
|
new ComponentContext( aParams, getComponentContext( xFact ) )));
|
|
|
|
|
|
|
|
xTitle.setText( aStrings );
|
|
|
|
XPropertySet xTitleProp = (XPropertySet) UnoRuntime.queryInterface(
|
|
|
|
XPropertySet.class, xTitle );
|
|
|
|
xTitleProp.setPropertyValue( "FillColor", new Integer( 0xfff8dc )); // cornsilk1
|
|
|
|
xTitleParent.setTitle( xTitle );
|
|
|
|
}
|
|
|
|
catch( Exception ex )
|
|
|
|
{
|
|
|
|
failed( ex.getMessage() );
|
|
|
|
ex.printStackTrace( (PrintWriter)log );
|
|
|
|
}
|
|
|
|
|
|
|
|
return xTitle;
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------
|
|
|
|
|
|
|
|
private XComponentContext getComponentContext( XMultiServiceFactory xFact )
|
|
|
|
{
|
|
|
|
XComponentContext xResult = null;
|
|
|
|
|
|
|
|
XPropertySet xProp = (XPropertySet) UnoRuntime.queryInterface(
|
|
|
|
XPropertySet.class, xFact );
|
|
|
|
if( xProp != null )
|
|
|
|
try
|
|
|
|
{
|
|
|
|
xResult = (XComponentContext)
|
|
|
|
AnyConverter.toObject(
|
|
|
|
new Type( XComponentContext.class ),
|
|
|
|
xProp.getPropertyValue( "DefaultContext" ) );
|
|
|
|
}
|
|
|
|
catch( Exception ex )
|
|
|
|
{
|
|
|
|
failed( ex.getMessage() );
|
|
|
|
ex.printStackTrace( (PrintWriter)log );
|
|
|
|
}
|
|
|
|
|
|
|
|
return xResult;
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------
|
|
|
|
|
|
|
|
private void printInterfacesAndServices( Object oObj )
|
|
|
|
{
|
|
|
|
log.println( "Services:" );
|
|
|
|
util.dbg.getSuppServices( oObj );
|
|
|
|
log.println( "Interfaces:" );
|
|
|
|
util.dbg.printInterfaces( (XInterface)oObj, true );
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------
|
|
|
|
|
|
|
|
/// see rtl/math.hxx
|
|
|
|
private boolean approxEqual( double a, double b )
|
|
|
|
{
|
|
|
|
if( a == b )
|
|
|
|
return true;
|
|
|
|
double x = a - b;
|
|
|
|
return (x < 0.0 ? -x : x)
|
|
|
|
< ((a < 0.0 ? -a : a) * (1.0 / (16777216.0 * 16777216.0)));
|
|
|
|
}
|
|
|
|
}
|