1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * The Contents of this file are made available subject to the terms of 4*cdf0e10cSrcweir * the BSD license. 5*cdf0e10cSrcweir * 6*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 7*cdf0e10cSrcweir * All rights reserved. 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * Redistribution and use in source and binary forms, with or without 10*cdf0e10cSrcweir * modification, are permitted provided that the following conditions 11*cdf0e10cSrcweir * are met: 12*cdf0e10cSrcweir * 1. Redistributions of source code must retain the above copyright 13*cdf0e10cSrcweir * notice, this list of conditions and the following disclaimer. 14*cdf0e10cSrcweir * 2. Redistributions in binary form must reproduce the above copyright 15*cdf0e10cSrcweir * notice, this list of conditions and the following disclaimer in the 16*cdf0e10cSrcweir * documentation and/or other materials provided with the distribution. 17*cdf0e10cSrcweir * 3. Neither the name of Sun Microsystems, Inc. nor the names of its 18*cdf0e10cSrcweir * contributors may be used to endorse or promote products derived 19*cdf0e10cSrcweir * from this software without specific prior written permission. 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22*cdf0e10cSrcweir * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23*cdf0e10cSrcweir * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24*cdf0e10cSrcweir * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25*cdf0e10cSrcweir * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26*cdf0e10cSrcweir * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27*cdf0e10cSrcweir * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 28*cdf0e10cSrcweir * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 29*cdf0e10cSrcweir * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 30*cdf0e10cSrcweir * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 31*cdf0e10cSrcweir * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32*cdf0e10cSrcweir * 33*cdf0e10cSrcweir *************************************************************************/ 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir // __________ Imports __________ 36*cdf0e10cSrcweir 37*cdf0e10cSrcweir // base classes 38*cdf0e10cSrcweir import com.sun.star.uno.XInterface; 39*cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime; 40*cdf0e10cSrcweir import com.sun.star.lang.*; 41*cdf0e10cSrcweir 42*cdf0e10cSrcweir // property access 43*cdf0e10cSrcweir import com.sun.star.beans.*; 44*cdf0e10cSrcweir 45*cdf0e10cSrcweir // application specific classes 46*cdf0e10cSrcweir import com.sun.star.chart.*; 47*cdf0e10cSrcweir import com.sun.star.drawing.*; 48*cdf0e10cSrcweir import com.sun.star.text.XTextDocument; 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir import com.sun.star.table.CellRangeAddress; 51*cdf0e10cSrcweir import com.sun.star.frame.XModel; 52*cdf0e10cSrcweir import com.sun.star.frame.XController; 53*cdf0e10cSrcweir 54*cdf0e10cSrcweir import com.sun.star.util.XNumberFormatsSupplier; 55*cdf0e10cSrcweir import com.sun.star.util.XNumberFormats; 56*cdf0e10cSrcweir 57*cdf0e10cSrcweir // base graphics things 58*cdf0e10cSrcweir import com.sun.star.awt.Point; 59*cdf0e10cSrcweir import com.sun.star.awt.Size; 60*cdf0e10cSrcweir import com.sun.star.awt.Rectangle; 61*cdf0e10cSrcweir import com.sun.star.awt.FontWeight; 62*cdf0e10cSrcweir import com.sun.star.awt.FontRelief; 63*cdf0e10cSrcweir 64*cdf0e10cSrcweir // Exceptions 65*cdf0e10cSrcweir import com.sun.star.uno.Exception; 66*cdf0e10cSrcweir import com.sun.star.uno.RuntimeException; 67*cdf0e10cSrcweir import com.sun.star.beans.UnknownPropertyException; 68*cdf0e10cSrcweir import com.sun.star.lang.IndexOutOfBoundsException; 69*cdf0e10cSrcweir import com.sun.star.util.MalformedNumberFormatException; 70*cdf0e10cSrcweir 71*cdf0e10cSrcweir 72*cdf0e10cSrcweir // __________ Implementation __________ 73*cdf0e10cSrcweir 74*cdf0e10cSrcweir /** Test to create a writer document and insert an OLE Chart. 75*cdf0e10cSrcweir 76*cdf0e10cSrcweir Be careful! This does not really work. The Writer currently has no 77*cdf0e10cSrcweir interface for dealing with OLE objects. You can add an OLE shape to the 78*cdf0e10cSrcweir Writer's drawing layer, but it is not treated correctly as OLE object. 79*cdf0e10cSrcweir Thus, you can not activate the chart by double-clicking. The office may 80*cdf0e10cSrcweir also crash when the document is closed! 81*cdf0e10cSrcweir 82*cdf0e10cSrcweir @author Björn Milcke 83*cdf0e10cSrcweir */ 84*cdf0e10cSrcweir public class ChartInWriter 85*cdf0e10cSrcweir { 86*cdf0e10cSrcweir // ____________________ 87*cdf0e10cSrcweir 88*cdf0e10cSrcweir public static void main( String args[] ) 89*cdf0e10cSrcweir { 90*cdf0e10cSrcweir Helper aHelper = new Helper( args ); 91*cdf0e10cSrcweir 92*cdf0e10cSrcweir ChartHelper aChartHelper = new ChartHelper( 93*cdf0e10cSrcweir (XModel) UnoRuntime.queryInterface( XModel.class, 94*cdf0e10cSrcweir aHelper.createTextDocument())); 95*cdf0e10cSrcweir 96*cdf0e10cSrcweir // the unit for measures is 1/100th of a millimeter 97*cdf0e10cSrcweir // position at (1cm, 1cm) 98*cdf0e10cSrcweir Point aPos = new Point( 1000, 1000 ); 99*cdf0e10cSrcweir 100*cdf0e10cSrcweir // size of the chart is 15cm x 12cm 101*cdf0e10cSrcweir Size aExtent = new Size( 15000, 13000 ); 102*cdf0e10cSrcweir 103*cdf0e10cSrcweir // insert a new chart into the "Chart" sheet of the 104*cdf0e10cSrcweir // spreadsheet document 105*cdf0e10cSrcweir XChartDocument aChartDoc = aChartHelper.insertOLEChartInWriter( 106*cdf0e10cSrcweir "BarChart", 107*cdf0e10cSrcweir aPos, 108*cdf0e10cSrcweir aExtent, 109*cdf0e10cSrcweir "com.sun.star.chart.AreaDiagram" ); 110*cdf0e10cSrcweir 111*cdf0e10cSrcweir // instantiate test class with newly created chart 112*cdf0e10cSrcweir ChartInWriter aTest = new ChartInWriter( aChartDoc ); 113*cdf0e10cSrcweir 114*cdf0e10cSrcweir try 115*cdf0e10cSrcweir { 116*cdf0e10cSrcweir aTest.lockControllers(); 117*cdf0e10cSrcweir 118*cdf0e10cSrcweir // do tests here 119*cdf0e10cSrcweir aTest.testWall(); 120*cdf0e10cSrcweir 121*cdf0e10cSrcweir aTest.unlockControllers(); 122*cdf0e10cSrcweir } 123*cdf0e10cSrcweir catch( Exception ex ) 124*cdf0e10cSrcweir { 125*cdf0e10cSrcweir System.out.println( "UNO Exception caught: " + ex ); 126*cdf0e10cSrcweir System.out.println( "Message: " + ex.getMessage() ); 127*cdf0e10cSrcweir } 128*cdf0e10cSrcweir 129*cdf0e10cSrcweir System.exit( 0 ); 130*cdf0e10cSrcweir } 131*cdf0e10cSrcweir 132*cdf0e10cSrcweir 133*cdf0e10cSrcweir // ________________________________________ 134*cdf0e10cSrcweir 135*cdf0e10cSrcweir public ChartInWriter( XChartDocument aChartDoc ) 136*cdf0e10cSrcweir { 137*cdf0e10cSrcweir maChartDocument = aChartDoc; 138*cdf0e10cSrcweir maDiagram = maChartDocument.getDiagram(); 139*cdf0e10cSrcweir } 140*cdf0e10cSrcweir 141*cdf0e10cSrcweir // ____________________ 142*cdf0e10cSrcweir 143*cdf0e10cSrcweir public void lockControllers() 144*cdf0e10cSrcweir throws RuntimeException 145*cdf0e10cSrcweir { 146*cdf0e10cSrcweir ((XModel) UnoRuntime.queryInterface( XModel.class, maChartDocument )).lockControllers(); 147*cdf0e10cSrcweir } 148*cdf0e10cSrcweir 149*cdf0e10cSrcweir // ____________________ 150*cdf0e10cSrcweir 151*cdf0e10cSrcweir public void unlockControllers() 152*cdf0e10cSrcweir throws RuntimeException 153*cdf0e10cSrcweir { 154*cdf0e10cSrcweir ((XModel) UnoRuntime.queryInterface( XModel.class, maChartDocument )).unlockControllers(); 155*cdf0e10cSrcweir } 156*cdf0e10cSrcweir 157*cdf0e10cSrcweir // ____________________ 158*cdf0e10cSrcweir 159*cdf0e10cSrcweir public void testWall() 160*cdf0e10cSrcweir throws RuntimeException, UnknownPropertyException, PropertyVetoException, 161*cdf0e10cSrcweir com.sun.star.lang.IllegalArgumentException, WrappedTargetException 162*cdf0e10cSrcweir { 163*cdf0e10cSrcweir XPropertySet aWall = ((X3DDisplay) UnoRuntime.queryInterface( 164*cdf0e10cSrcweir X3DDisplay.class, maDiagram )).getWall(); 165*cdf0e10cSrcweir 166*cdf0e10cSrcweir // change background color of area 167*cdf0e10cSrcweir aWall.setPropertyValue( "FillColor", new Integer( 0xeecc99 )); 168*cdf0e10cSrcweir aWall.setPropertyValue( "FillStyle", FillStyle.SOLID ); 169*cdf0e10cSrcweir } 170*cdf0e10cSrcweir 171*cdf0e10cSrcweir // ______________________________ 172*cdf0e10cSrcweir // 173*cdf0e10cSrcweir // private members 174*cdf0e10cSrcweir // ______________________________ 175*cdf0e10cSrcweir 176*cdf0e10cSrcweir private XChartDocument maChartDocument; 177*cdf0e10cSrcweir private XDiagram maDiagram; 178*cdf0e10cSrcweir } 179