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 
22*b1cdbd2cSJim Jagielski package complex.imageManager;
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski import com.sun.star.lang.XComponent;
25*b1cdbd2cSJim Jagielski import com.sun.star.lang.XInitialization;
26*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory;
27*b1cdbd2cSJim Jagielski import com.sun.star.lang.XTypeProvider;
28*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime;
29*b1cdbd2cSJim Jagielski import com.sun.star.uno.XInterface;
30*b1cdbd2cSJim Jagielski import com.sun.star.ui.XImageManager;
31*b1cdbd2cSJim Jagielski import com.sun.star.ui.XModuleUIConfigurationManagerSupplier;
32*b1cdbd2cSJim Jagielski import com.sun.star.ui.XUIConfiguration;
33*b1cdbd2cSJim Jagielski import com.sun.star.ui.XUIConfigurationManager;
34*b1cdbd2cSJim Jagielski import com.sun.star.ui.XUIConfigurationPersistence;
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski // ---------- junit imports -----------------
38*b1cdbd2cSJim Jagielski import lib.TestParameters;
39*b1cdbd2cSJim Jagielski import org.junit.After;
40*b1cdbd2cSJim Jagielski import org.junit.AfterClass;
41*b1cdbd2cSJim Jagielski import org.junit.Before;
42*b1cdbd2cSJim Jagielski import org.junit.BeforeClass;
43*b1cdbd2cSJim Jagielski import org.junit.Test;
44*b1cdbd2cSJim Jagielski import org.openoffice.test.OfficeConnection;
45*b1cdbd2cSJim Jagielski import static org.junit.Assert.*;
46*b1cdbd2cSJim Jagielski // ------------------------------------------
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski /**
49*b1cdbd2cSJim Jagielski  *
50*b1cdbd2cSJim Jagielski  */
51*b1cdbd2cSJim Jagielski public class CheckImageManager  {
52*b1cdbd2cSJim Jagielski     boolean checkUIConfigManager = false;
53*b1cdbd2cSJim Jagielski     XMultiServiceFactory xMSF = null;
54*b1cdbd2cSJim Jagielski     /**
55*b1cdbd2cSJim Jagielski      * The test parameters
56*b1cdbd2cSJim Jagielski      */
57*b1cdbd2cSJim Jagielski     private static TestParameters param = null;
58*b1cdbd2cSJim Jagielski 
before()59*b1cdbd2cSJim Jagielski     @Before public void before()
60*b1cdbd2cSJim Jagielski     {
61*b1cdbd2cSJim Jagielski         xMSF = getMSF();
62*b1cdbd2cSJim Jagielski         param = new TestParameters();
63*b1cdbd2cSJim Jagielski         param.put("ServiceFactory", xMSF); // some qadevOOo functions need the ServiceFactory
64*b1cdbd2cSJim Jagielski     }
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski //    public String[] getTestMethodNames() {
67*b1cdbd2cSJim Jagielski //        return new String[]{"checkImageManagerFromModule"};//, "checkImageManager"};
68*b1cdbd2cSJim Jagielski //    }
69*b1cdbd2cSJim Jagielski 
checkImageManagerFromModule()70*b1cdbd2cSJim Jagielski     @Test public void checkImageManagerFromModule()
71*b1cdbd2cSJim Jagielski     {
72*b1cdbd2cSJim Jagielski         System.out.println(" **** ImageManager from ModuleUIConfigurationManager *** ");
73*b1cdbd2cSJim Jagielski         XUIConfigurationManager xManager = null;
74*b1cdbd2cSJim Jagielski         try {
75*b1cdbd2cSJim Jagielski             Object o = (XInterface)xMSF.createInstance(
76*b1cdbd2cSJim Jagielski                     "com.sun.star.ui.ModuleUIConfigurationManagerSupplier");
77*b1cdbd2cSJim Jagielski             XModuleUIConfigurationManagerSupplier xMUICMS =
78*b1cdbd2cSJim Jagielski                     UnoRuntime.queryInterface(XModuleUIConfigurationManagerSupplier.class, o);
79*b1cdbd2cSJim Jagielski             xManager = xMUICMS.getUIConfigurationManager(
80*b1cdbd2cSJim Jagielski                     "com.sun.star.text.TextDocument");
81*b1cdbd2cSJim Jagielski         }
82*b1cdbd2cSJim Jagielski         catch(com.sun.star.uno.Exception e) {
83*b1cdbd2cSJim Jagielski             fail("Exception. " + e.getMessage());
84*b1cdbd2cSJim Jagielski         }
85*b1cdbd2cSJim Jagielski         XImageManager xImageManager = UnoRuntime.queryInterface(XImageManager.class, xManager.getImageManager());
86*b1cdbd2cSJim Jagielski         performChecks(xImageManager, "ModuleUIConfig", xManager);
87*b1cdbd2cSJim Jagielski     }
88*b1cdbd2cSJim Jagielski 
checkImageManager()89*b1cdbd2cSJim Jagielski     public void checkImageManager() {
90*b1cdbd2cSJim Jagielski         System.out.println(" **** ImageManager from UIConfigurationManager *** ");
91*b1cdbd2cSJim Jagielski         XUIConfigurationManager xManager = null;
92*b1cdbd2cSJim Jagielski         try {
93*b1cdbd2cSJim Jagielski             xManager = UnoRuntime.queryInterface(XUIConfigurationManager.class, xMSF.createInstance("com.sun.star.comp.framework.UIConfigurationManager"));
94*b1cdbd2cSJim Jagielski         }
95*b1cdbd2cSJim Jagielski         catch(com.sun.star.uno.Exception e) {
96*b1cdbd2cSJim Jagielski             fail("Exception. " + e.getMessage());
97*b1cdbd2cSJim Jagielski         }
98*b1cdbd2cSJim Jagielski 
99*b1cdbd2cSJim Jagielski         XImageManager xImageManager = UnoRuntime.queryInterface(XImageManager.class, xManager.getImageManager());
100*b1cdbd2cSJim Jagielski         performChecks(xImageManager, "UIConfig", xManager);
101*b1cdbd2cSJim Jagielski     }
102*b1cdbd2cSJim Jagielski 
performChecks(XImageManager xImageManager, String testObjectName, XUIConfigurationManager xManager)103*b1cdbd2cSJim Jagielski     private void performChecks(XImageManager xImageManager, String testObjectName, XUIConfigurationManager xManager) {
104*b1cdbd2cSJim Jagielski         util.dbg.printInterfaces(xImageManager);
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski         OXUIConfigurationListenerImpl configListener = new OXUIConfigurationListenerImpl(xManager, xMSF);
107*b1cdbd2cSJim Jagielski         param.put("XUIConfiguration.XUIConfigurationListenerImpl", configListener);
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski         XInitialization xInit = UnoRuntime.queryInterface(XInitialization.class, xImageManager);
110*b1cdbd2cSJim Jagielski         _XInitialization _xInit = new _XInitialization(param, xInit);
111*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XInitialization.initialize", _xInit._initialize());
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski         // xImageManager is already there, just write a test ;-)
114*b1cdbd2cSJim Jagielski         _XImageManager _xImage = new _XImageManager(param, xImageManager);
115*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XImageManager.getAllImageNames", _xImage._getAllImageNames());
116*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XImageManager.getImages", _xImage._getImages());
117*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XImageManager.hasImage", _xImage._hasImage());
118*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XImageManager.insertImages", _xImage._insertImages());
119*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XImageManager.removeImages", _xImage._removeImages());
120*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XImageManager.replaceImages", _xImage._replaceImages());
121*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XImageManager.reset", _xImage._reset());
122*b1cdbd2cSJim Jagielski 
123*b1cdbd2cSJim Jagielski         XTypeProvider xType = UnoRuntime.queryInterface(XTypeProvider.class, xImageManager);
124*b1cdbd2cSJim Jagielski         _XTypeProvider _xType = new _XTypeProvider(param, xType);
125*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XTypeProvider.getImplementationId", _xType._getImplementationId());
126*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XTypeProvider.getTypes", _xType._getTypes());
127*b1cdbd2cSJim Jagielski 
128*b1cdbd2cSJim Jagielski         XUIConfiguration xUIConfig = UnoRuntime.queryInterface(XUIConfiguration.class, xImageManager);
129*b1cdbd2cSJim Jagielski         _XUIConfiguration _xUIConfig = new _XUIConfiguration(param, xUIConfig);
130*b1cdbd2cSJim Jagielski         _xUIConfig.before();
131*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XUIConfig.addConfigurationListener", _xUIConfig._addConfigurationListener());
132*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XUIConfig.removeConfigurationListener", _xUIConfig._removeConfigurationListener());
133*b1cdbd2cSJim Jagielski 
134*b1cdbd2cSJim Jagielski         XUIConfigurationPersistence xUIConfigPersistence = (XUIConfigurationPersistence)UnoRuntime.queryInterface(XUIConfiguration.class, xImageManager);
135*b1cdbd2cSJim Jagielski         _XUIConfigurationPersistence _xUIConfigPersistence = new _XUIConfigurationPersistence(param, xUIConfigPersistence);
136*b1cdbd2cSJim Jagielski         _xUIConfigPersistence.before();
137*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XUIConfigPersistence.isModified", _xUIConfigPersistence._isModified());
138*b1cdbd2cSJim Jagielski         // System.out.println(testObjectName + "::XUIConfigPersistence.isReadOnly "+ _xUIConfigPersistence._isReadOnly());
139*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XUIConfigPersistence.isReadOnly", _xUIConfigPersistence._isReadOnly());
140*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XUIConfigPersistence.reload", _xUIConfigPersistence._reload());
141*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XUIConfigPersistence.store", _xUIConfigPersistence._store());
142*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XUIConfigPersistence.storeToStorage", _xUIConfigPersistence._storeToStorage());
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski         XComponent xComp = UnoRuntime.queryInterface(XComponent.class, xImageManager);
145*b1cdbd2cSJim Jagielski         _XComponent _xComp = new _XComponent(param, xComp);
146*b1cdbd2cSJim Jagielski         _xComp.before();
147*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XComponent.addEventListener", _xComp._addEventListener());
148*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XComponent.removeEventListener", _xComp._removeEventListener());
149*b1cdbd2cSJim Jagielski         assertTrue(testObjectName + "::XComponent.dispose", _xComp._dispose());
150*b1cdbd2cSJim Jagielski     }
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski 
153*b1cdbd2cSJim Jagielski     class OXUIConfigurationListenerImpl implements _XUIConfiguration.XUIConfigurationListenerImpl {
154*b1cdbd2cSJim Jagielski         private boolean triggered = false;
155*b1cdbd2cSJim Jagielski         private XUIConfigurationManager xUIManager = null;
156*b1cdbd2cSJim Jagielski         private XMultiServiceFactory xMSF = null;
157*b1cdbd2cSJim Jagielski 
OXUIConfigurationListenerImpl(XUIConfigurationManager xUIManager, XMultiServiceFactory xMSF)158*b1cdbd2cSJim Jagielski         public OXUIConfigurationListenerImpl(XUIConfigurationManager xUIManager, XMultiServiceFactory xMSF) {
159*b1cdbd2cSJim Jagielski 
160*b1cdbd2cSJim Jagielski             this.xUIManager = xUIManager;
161*b1cdbd2cSJim Jagielski             this.xMSF = xMSF;
162*b1cdbd2cSJim Jagielski         }
163*b1cdbd2cSJim Jagielski 
actionWasTriggered()164*b1cdbd2cSJim Jagielski         public boolean actionWasTriggered() {
165*b1cdbd2cSJim Jagielski             return triggered;
166*b1cdbd2cSJim Jagielski         }
167*b1cdbd2cSJim Jagielski 
disposing(com.sun.star.lang.EventObject eventObject)168*b1cdbd2cSJim Jagielski         public void disposing(com.sun.star.lang.EventObject eventObject) {
169*b1cdbd2cSJim Jagielski             triggered = true;
170*b1cdbd2cSJim Jagielski         }
171*b1cdbd2cSJim Jagielski 
elementInserted(com.sun.star.ui.ConfigurationEvent configurationEvent)172*b1cdbd2cSJim Jagielski         public void elementInserted(com.sun.star.ui.ConfigurationEvent configurationEvent) {
173*b1cdbd2cSJim Jagielski             triggered = true;
174*b1cdbd2cSJim Jagielski         }
175*b1cdbd2cSJim Jagielski 
elementRemoved(com.sun.star.ui.ConfigurationEvent configurationEvent)176*b1cdbd2cSJim Jagielski         public void elementRemoved(com.sun.star.ui.ConfigurationEvent configurationEvent) {
177*b1cdbd2cSJim Jagielski             triggered = true;
178*b1cdbd2cSJim Jagielski         }
179*b1cdbd2cSJim Jagielski 
elementReplaced(com.sun.star.ui.ConfigurationEvent configurationEvent)180*b1cdbd2cSJim Jagielski         public void elementReplaced(com.sun.star.ui.ConfigurationEvent configurationEvent) {
181*b1cdbd2cSJim Jagielski             triggered = true;
182*b1cdbd2cSJim Jagielski         }
183*b1cdbd2cSJim Jagielski 
fireEvent()184*b1cdbd2cSJim Jagielski         public void fireEvent() {
185*b1cdbd2cSJim Jagielski             // remove for real action:
186*b1cdbd2cSJim Jagielski             triggered = !triggered;
187*b1cdbd2cSJim Jagielski /*            try {
188*b1cdbd2cSJim Jagielski                 XIndexAccess xMenuBarSettings = xUIManager.getSettings(
189*b1cdbd2cSJim Jagielski                                         "private:resource/menubar/menubar", true);
190*b1cdbd2cSJim Jagielski 
191*b1cdbd2cSJim Jagielski             }
192*b1cdbd2cSJim Jagielski             catch(com.sun.star.container.NoSuchElementException e) {
193*b1cdbd2cSJim Jagielski                 System.out.println("_XUIConfiguration.XUIConfigurationListenerImpl: Exception.");
194*b1cdbd2cSJim Jagielski                 e.printStackTrace((java.io.PrintWriter)log);
195*b1cdbd2cSJim Jagielski             }
196*b1cdbd2cSJim Jagielski             catch(com.sun.star.lang.IllegalArgumentException e) {
197*b1cdbd2cSJim Jagielski                 System.out.println("_XUIConfiguration.XUIConfigurationListenerImpl: Exception.");
198*b1cdbd2cSJim Jagielski                 e.printStackTrace((java.io.PrintWriter)log);
199*b1cdbd2cSJim Jagielski             }
200*b1cdbd2cSJim Jagielski             catch(com.sun.star.lang.IllegalAccessException e) {
201*b1cdbd2cSJim Jagielski                 System.out.println("_XUIConfiguration.XUIConfigurationListenerImpl: Exception.");
202*b1cdbd2cSJim Jagielski                 e.printStackTrace((java.io.PrintWriter)log);
203*b1cdbd2cSJim Jagielski             }
204*b1cdbd2cSJim Jagielski             catch(com.sun.star.lang.IndexOutOfBoundsException e) {
205*b1cdbd2cSJim Jagielski                 System.out.println("_XUIConfiguration.XUIConfigurationListenerImpl: Exception.");
206*b1cdbd2cSJim Jagielski                 e.printStackTrace((java.io.PrintWriter)log);
207*b1cdbd2cSJim Jagielski             }
208*b1cdbd2cSJim Jagielski             catch(com.sun.star.lang.WrappedTargetException e) {
209*b1cdbd2cSJim Jagielski                 System.out.println("_XUIConfiguration.XUIConfigurationListenerImpl: Exception.");
210*b1cdbd2cSJim Jagielski                 e.printStackTrace((java.io.PrintWriter)log);
211*b1cdbd2cSJim Jagielski             } */
212*b1cdbd2cSJim Jagielski         }
213*b1cdbd2cSJim Jagielski 
reset()214*b1cdbd2cSJim Jagielski         public void reset() {
215*b1cdbd2cSJim Jagielski             // remove comment for real function
216*b1cdbd2cSJim Jagielski             //triggered = false;
217*b1cdbd2cSJim Jagielski         }
218*b1cdbd2cSJim Jagielski 
219*b1cdbd2cSJim Jagielski     }
220*b1cdbd2cSJim Jagielski 
getMSF()221*b1cdbd2cSJim Jagielski     private XMultiServiceFactory getMSF()
222*b1cdbd2cSJim Jagielski     {
223*b1cdbd2cSJim Jagielski         final XMultiServiceFactory xMSF1 = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager());
224*b1cdbd2cSJim Jagielski         return xMSF1;
225*b1cdbd2cSJim Jagielski     }
226*b1cdbd2cSJim Jagielski 
227*b1cdbd2cSJim Jagielski     // setup and close connections
228*b1cdbd2cSJim Jagielski     @BeforeClass
setUpConnection()229*b1cdbd2cSJim Jagielski     public static void setUpConnection() throws Exception
230*b1cdbd2cSJim Jagielski     {
231*b1cdbd2cSJim Jagielski         System.out.println("setUpConnection()");
232*b1cdbd2cSJim Jagielski         connection.setUp();
233*b1cdbd2cSJim Jagielski     }
234*b1cdbd2cSJim Jagielski 
235*b1cdbd2cSJim Jagielski     @AfterClass
tearDownConnection()236*b1cdbd2cSJim Jagielski     public static void tearDownConnection()
237*b1cdbd2cSJim Jagielski             throws InterruptedException, com.sun.star.uno.Exception
238*b1cdbd2cSJim Jagielski     {
239*b1cdbd2cSJim Jagielski         System.out.println("tearDownConnection()");
240*b1cdbd2cSJim Jagielski         connection.tearDown();
241*b1cdbd2cSJim Jagielski     }
242*b1cdbd2cSJim Jagielski     private static final OfficeConnection connection = new OfficeConnection();
243*b1cdbd2cSJim Jagielski 
244*b1cdbd2cSJim Jagielski }
245