1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski package testlib.uno;
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet;
24*b1cdbd2cSJim Jagielski import com.sun.star.chart.XChartDocument;
25*b1cdbd2cSJim Jagielski import com.sun.star.chart.XDiagram;
26*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XShape;
27*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory;
28*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime;
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski public class ChartUtil {
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski 	/**
33*b1cdbd2cSJim Jagielski 	 * Retrieve Chart document as model of the OLE Shape(use to create chart)
34*b1cdbd2cSJim Jagielski 	 *
35*b1cdbd2cSJim Jagielski 	 * @param xShape
36*b1cdbd2cSJim Jagielski 	 * @return
37*b1cdbd2cSJim Jagielski 	 * @throws Exception
38*b1cdbd2cSJim Jagielski 	 */
retrieveChartDocument(XShape xShape)39*b1cdbd2cSJim Jagielski 	public static XChartDocument retrieveChartDocument(XShape xShape)
40*b1cdbd2cSJim Jagielski 			throws Exception {
41*b1cdbd2cSJim Jagielski 		XChartDocument aChartDoc = null;
42*b1cdbd2cSJim Jagielski 		final String msChartClassID = "12dcae26-281f-416f-a234-c3086127382e";
43*b1cdbd2cSJim Jagielski 		// make the OLE shape a chart
44*b1cdbd2cSJim Jagielski 		XPropertySet aShapeProp = (XPropertySet) UnoRuntime.queryInterface(
45*b1cdbd2cSJim Jagielski 				XPropertySet.class, xShape);
46*b1cdbd2cSJim Jagielski 		// set the class id for charts
47*b1cdbd2cSJim Jagielski 		aShapeProp.setPropertyValue("CLSID", msChartClassID);
48*b1cdbd2cSJim Jagielski 		// retrieve the chart document as model of the OLE shape
49*b1cdbd2cSJim Jagielski 		aChartDoc = (XChartDocument) UnoRuntime.queryInterface(
50*b1cdbd2cSJim Jagielski 				XChartDocument.class, aShapeProp.getPropertyValue("Model"));
51*b1cdbd2cSJim Jagielski 		return aChartDoc;
52*b1cdbd2cSJim Jagielski 	}
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski 	/**
55*b1cdbd2cSJim Jagielski 	 * retrieve chart2 document as model of the OLE shape
56*b1cdbd2cSJim Jagielski 	 *
57*b1cdbd2cSJim Jagielski 	 * @param xShape
58*b1cdbd2cSJim Jagielski 	 * @return
59*b1cdbd2cSJim Jagielski 	 * @throws Exception
60*b1cdbd2cSJim Jagielski 	 */
retrieveChart2Document( XShape xShape)61*b1cdbd2cSJim Jagielski 	public static com.sun.star.chart2.XChartDocument retrieveChart2Document(
62*b1cdbd2cSJim Jagielski 			XShape xShape) throws Exception {
63*b1cdbd2cSJim Jagielski 		com.sun.star.chart2.XChartDocument aChartDoc = null;
64*b1cdbd2cSJim Jagielski 		final String msChartClassID = "12dcae26-281f-416f-a234-c3086127382e";
65*b1cdbd2cSJim Jagielski 		// make the OLE shape a chart
66*b1cdbd2cSJim Jagielski 		XPropertySet aShapeProp = (XPropertySet) UnoRuntime.queryInterface(
67*b1cdbd2cSJim Jagielski 				XPropertySet.class, xShape);
68*b1cdbd2cSJim Jagielski 		// set the class id for charts
69*b1cdbd2cSJim Jagielski 		aShapeProp.setPropertyValue("CLSID", msChartClassID);
70*b1cdbd2cSJim Jagielski 		// retrieve the chart document as model of the OLE shape
71*b1cdbd2cSJim Jagielski 		aChartDoc = (com.sun.star.chart2.XChartDocument) UnoRuntime
72*b1cdbd2cSJim Jagielski 				.queryInterface(com.sun.star.chart2.XChartDocument.class,
73*b1cdbd2cSJim Jagielski 						aShapeProp.getPropertyValue("Model"));
74*b1cdbd2cSJim Jagielski 		return aChartDoc;
75*b1cdbd2cSJim Jagielski 	}
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski 	/**
78*b1cdbd2cSJim Jagielski 	 * Create Chart in ChartDocument.
79*b1cdbd2cSJim Jagielski 	 *
80*b1cdbd2cSJim Jagielski 	 * @param aChartDoc
81*b1cdbd2cSJim Jagielski 	 * @param ChartType
82*b1cdbd2cSJim Jagielski 	 * @return
83*b1cdbd2cSJim Jagielski 	 * @throws Exception
84*b1cdbd2cSJim Jagielski 	 */
createChart(XChartDocument aChartDoc, String ChartType)85*b1cdbd2cSJim Jagielski 	public static XDiagram createChart(XChartDocument aChartDoc,
86*b1cdbd2cSJim Jagielski 			String ChartType) throws Exception {
87*b1cdbd2cSJim Jagielski 
88*b1cdbd2cSJim Jagielski 		// let aChartDoc be a valid XChartDocument
89*b1cdbd2cSJim Jagielski 		// get the factory that can create diagrams
90*b1cdbd2cSJim Jagielski 		XMultiServiceFactory aFact = (XMultiServiceFactory) UnoRuntime
91*b1cdbd2cSJim Jagielski 				.queryInterface(XMultiServiceFactory.class, aChartDoc);
92*b1cdbd2cSJim Jagielski 		XDiagram aDiagram = (XDiagram) UnoRuntime.queryInterface(
93*b1cdbd2cSJim Jagielski 				XDiagram.class, aFact.createInstance(ChartType));
94*b1cdbd2cSJim Jagielski 		return aDiagram;
95*b1cdbd2cSJim Jagielski 	}
96*b1cdbd2cSJim Jagielski 
97*b1cdbd2cSJim Jagielski 	/**
98*b1cdbd2cSJim Jagielski 	 * Create Chart2 in ChartDocument.
99*b1cdbd2cSJim Jagielski 	 *
100*b1cdbd2cSJim Jagielski 	 * @param aChartDoc
101*b1cdbd2cSJim Jagielski 	 * @param ChartType
102*b1cdbd2cSJim Jagielski 	 * @return
103*b1cdbd2cSJim Jagielski 	 * @throws Exception
104*b1cdbd2cSJim Jagielski 	 */
createChart2( com.sun.star.chart2.XChartDocument aChartDoc, String ChartType)105*b1cdbd2cSJim Jagielski 	public static com.sun.star.chart2.XDiagram createChart2(
106*b1cdbd2cSJim Jagielski 			com.sun.star.chart2.XChartDocument aChartDoc, String ChartType)
107*b1cdbd2cSJim Jagielski 			throws Exception {
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski 		// let aChartDoc be a valid XChartDocument
110*b1cdbd2cSJim Jagielski 		// get the factory that can create diagrams
111*b1cdbd2cSJim Jagielski 		XMultiServiceFactory aFact = (XMultiServiceFactory) UnoRuntime
112*b1cdbd2cSJim Jagielski 				.queryInterface(XMultiServiceFactory.class, aChartDoc);
113*b1cdbd2cSJim Jagielski 		com.sun.star.chart2.XDiagram aDiagram = (com.sun.star.chart2.XDiagram) UnoRuntime
114*b1cdbd2cSJim Jagielski 				.queryInterface(com.sun.star.chart2.XDiagram.class,
115*b1cdbd2cSJim Jagielski 						aFact.createInstance(ChartType));
116*b1cdbd2cSJim Jagielski 		return aDiagram;
117*b1cdbd2cSJim Jagielski 	}
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski 	/**
120*b1cdbd2cSJim Jagielski 	 * Get Chart Doc from a Shape
121*b1cdbd2cSJim Jagielski 	 *
122*b1cdbd2cSJim Jagielski 	 * @param xShape
123*b1cdbd2cSJim Jagielski 	 * @return
124*b1cdbd2cSJim Jagielski 	 * @throws Exception
125*b1cdbd2cSJim Jagielski 	 */
getChartDocument(XShape xShape)126*b1cdbd2cSJim Jagielski 	public static XChartDocument getChartDocument(XShape xShape)
127*b1cdbd2cSJim Jagielski 			throws Exception {
128*b1cdbd2cSJim Jagielski 		XChartDocument aChartDoc = null;
129*b1cdbd2cSJim Jagielski 		XPropertySet aShapeProp = (XPropertySet) UnoRuntime.queryInterface(
130*b1cdbd2cSJim Jagielski 				XPropertySet.class, xShape);
131*b1cdbd2cSJim Jagielski 		// retrieve the chart document as model of the OLE shape
132*b1cdbd2cSJim Jagielski 		aChartDoc = (XChartDocument) UnoRuntime.queryInterface(
133*b1cdbd2cSJim Jagielski 				XChartDocument.class, aShapeProp.getPropertyValue("Model"));
134*b1cdbd2cSJim Jagielski 		return aChartDoc;
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski 	}
137*b1cdbd2cSJim Jagielski 	/**
138*b1cdbd2cSJim Jagielski 	 * Get Chart2 Doc from a Shape
139*b1cdbd2cSJim Jagielski 	 *
140*b1cdbd2cSJim Jagielski 	 * @param xShape
141*b1cdbd2cSJim Jagielski 	 * @return
142*b1cdbd2cSJim Jagielski 	 * @throws Exception
143*b1cdbd2cSJim Jagielski 	 */
getChart2Document(XShape xShape)144*b1cdbd2cSJim Jagielski 	public static com.sun.star.chart2.XChartDocument getChart2Document(XShape xShape)
145*b1cdbd2cSJim Jagielski 			throws Exception {
146*b1cdbd2cSJim Jagielski 		com.sun.star.chart2.XChartDocument aChartDoc = null;
147*b1cdbd2cSJim Jagielski 		XPropertySet aShapeProp = (XPropertySet) UnoRuntime.queryInterface(
148*b1cdbd2cSJim Jagielski 				XPropertySet.class, xShape);
149*b1cdbd2cSJim Jagielski 		// retrieve the chart document as model of the OLE shape
150*b1cdbd2cSJim Jagielski 		aChartDoc = (com.sun.star.chart2.XChartDocument) UnoRuntime.queryInterface(
151*b1cdbd2cSJim Jagielski 				com.sun.star.chart2.XChartDocument.class, aShapeProp.getPropertyValue("Model"));
152*b1cdbd2cSJim Jagielski 		return aChartDoc;
153*b1cdbd2cSJim Jagielski 
154*b1cdbd2cSJim Jagielski 	}
155*b1cdbd2cSJim Jagielski }
156