INTEGRATION: CWS sdk02 (1.1.2); FILE ADDED
2003/05/09 10:36:47 jsc 1.1.2.1: #109045# insert new and remove example zip file
This commit is contained in:
145
odk/examples/DevelopersGuide/Charts/ChartHelper.java
Normal file
145
odk/examples/DevelopersGuide/Charts/ChartHelper.java
Normal file
@@ -0,0 +1,145 @@
|
||||
// __________ Imports __________
|
||||
|
||||
|
||||
// base classes
|
||||
import com.sun.star.uno.XInterface;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.lang.*;
|
||||
|
||||
// factory for creating components
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
|
||||
// property access
|
||||
import com.sun.star.beans.*;
|
||||
|
||||
// container access
|
||||
import com.sun.star.container.*;
|
||||
|
||||
// application specific classes
|
||||
import com.sun.star.chart.XChartDocument;
|
||||
import com.sun.star.chart.XDiagram;
|
||||
import com.sun.star.drawing.*;
|
||||
import com.sun.star.frame.XModel;
|
||||
|
||||
// base graphics things
|
||||
import com.sun.star.awt.Point;
|
||||
import com.sun.star.awt.Size;
|
||||
|
||||
// Exceptions
|
||||
import com.sun.star.uno.RuntimeException;
|
||||
import com.sun.star.container.NoSuchElementException;
|
||||
import com.sun.star.beans.UnknownPropertyException;
|
||||
import com.sun.star.lang.IndexOutOfBoundsException;
|
||||
|
||||
// __________ Implementation __________
|
||||
|
||||
/** Helper for creating an OLE chart
|
||||
@author Björn Milcke
|
||||
*/
|
||||
public class ChartHelper
|
||||
{
|
||||
public ChartHelper( XModel aContainerDoc )
|
||||
{
|
||||
maContainerDocument = aContainerDoc;
|
||||
}
|
||||
|
||||
// ____________________
|
||||
|
||||
public XChartDocument insertOLEChart(
|
||||
String sChartName,
|
||||
Point aUpperLeft,
|
||||
Size aExtent,
|
||||
String sChartServiceName )
|
||||
{
|
||||
XChartDocument aResult = null;
|
||||
|
||||
XShapes aPage = null;
|
||||
|
||||
// try interface for multiple pages in a document
|
||||
XDrawPagesSupplier aSupplier = (XDrawPagesSupplier) UnoRuntime.queryInterface(
|
||||
XDrawPagesSupplier.class, maContainerDocument );
|
||||
|
||||
if( aSupplier != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
// get first page
|
||||
aPage = (XShapes) UnoRuntime.queryInterface(
|
||||
XShapes.class, aSupplier.getDrawPages().getByIndex( 0 ) );
|
||||
}
|
||||
catch( Exception ex )
|
||||
{
|
||||
System.out.println( "First page not found in shape collection: " + ex );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// try interface for single draw page (e.g. spreadsheet)
|
||||
XDrawPageSupplier aOnePageSupplier = (XDrawPageSupplier) UnoRuntime.queryInterface(
|
||||
XDrawPageSupplier.class, maContainerDocument );
|
||||
|
||||
if( aOnePageSupplier != null )
|
||||
{
|
||||
aPage = (XShapes) UnoRuntime.queryInterface(
|
||||
XShapes.class, aOnePageSupplier.getDrawPage());
|
||||
}
|
||||
}
|
||||
|
||||
if( aPage != null )
|
||||
{
|
||||
XMultiServiceFactory aFact = (XMultiServiceFactory) UnoRuntime.queryInterface(
|
||||
XMultiServiceFactory.class, maContainerDocument );
|
||||
|
||||
if( aFact != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
// create an OLE shape
|
||||
XShape aShape = (XShape) UnoRuntime.queryInterface(
|
||||
XShape.class,
|
||||
aFact.createInstance( "com.sun.star.drawing.OLE2Shape" ));
|
||||
|
||||
// insert the shape into the page
|
||||
aPage.add( aShape );
|
||||
aShape.setPosition( aUpperLeft );
|
||||
aShape.setSize( aExtent );
|
||||
|
||||
// make the OLE shape a chart
|
||||
XPropertySet aShapeProp = (XPropertySet) UnoRuntime.queryInterface(
|
||||
XPropertySet.class, aShape );
|
||||
if( aShapeProp != null )
|
||||
{
|
||||
// set the class id for charts
|
||||
aShapeProp.setPropertyValue( "CLSID", msChartClassID );
|
||||
|
||||
// retrieve the chart document as model of the OLE shape
|
||||
aResult = (XChartDocument) UnoRuntime.queryInterface(
|
||||
XChartDocument.class,
|
||||
aShapeProp.getPropertyValue( "Model" ));
|
||||
|
||||
// create a diagram via the factory and set this as new diagram
|
||||
aResult.setDiagram(
|
||||
(XDiagram) UnoRuntime.queryInterface(
|
||||
XDiagram.class,
|
||||
((XMultiServiceFactory) UnoRuntime.queryInterface(
|
||||
XMultiServiceFactory.class,
|
||||
aResult )).createInstance( sChartServiceName )));
|
||||
}
|
||||
}
|
||||
catch( Exception ex )
|
||||
{
|
||||
System.out.println( "Couldn't change the OLE shape into a chart: " + ex );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return aResult;
|
||||
}
|
||||
|
||||
|
||||
// __________ private members and methods __________
|
||||
|
||||
private final String msChartClassID = "12dcae26-281f-416f-a234-c3086127382e";
|
||||
|
||||
private XModel maContainerDocument;
|
||||
}
|
||||
Reference in New Issue
Block a user