diff options
Diffstat (limited to 'qadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java')
-rw-r--r-- | qadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java | 354 |
1 files changed, 354 insertions, 0 deletions
diff --git a/qadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java new file mode 100644 index 000000000..83923634b --- /dev/null +++ b/qadevOOo/tests/java/ifc/ui/_XUIConfigurationManager.java @@ -0,0 +1,354 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +package ifc.ui; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XIndexContainer; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.lang.XServiceInfo; +import com.sun.star.lang.XSingleComponentFactory; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XComponentContext; +import com.sun.star.ui.UIElementType; +import com.sun.star.ui.XImageManager; +import com.sun.star.ui.XUIConfigurationManager; +import java.io.PrintWriter; +import lib.MultiMethodTest; + +public class _XUIConfigurationManager extends MultiMethodTest { + + public XUIConfigurationManager oObj; + private static final String msResourceUrl = "private:resource/menubar/menubar"; + private static final String msMyResourceUrl = "private:resource/menubar/mymenubar"; + private XIndexContainer mxSettings = null; + private XIndexAccess mxMenuBarSettings = null; + private XMultiServiceFactory mxMSF = null; + private String sShortCutManagerServiceName = null; + + + /** + * Some stuff before the tests: + * extract the multi service factory. + */ + @Override + protected void before() { + mxMSF = tParam.getMSF(); + sShortCutManagerServiceName = (String)tEnv.getObjRelation("XConfigurationManager.ShortCutManager"); + + } + + /** + * reset all changes: do at the end. + */ + public void _reset() { + requiredMethod("removeSettings()"); + oObj.reset(); + tRes.tested("reset()", true); + } + + public void _getUIElementsInfo() { + boolean result = true; + try { + PropertyValue[][]props = oObj.getUIElementsInfo(UIElementType.UNKNOWN); + for (int i=0; i<props.length; i++) + for(int j=0; j<props[i].length; j++) + log.println("Prop["+i+"]["+j+"]: " + props[i][j].Name + " " + props[i][j].Value.toString()); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + tRes.tested("getUIElementsInfo()", result); + } + + public void _createSettings() { + mxSettings = oObj.createSettings(); + util.dbg.printInterfaces(mxSettings); + tRes.tested("createSettings()", mxSettings != null); + } + + public void _hasSettings() { + boolean result = false; + try { + result = oObj.hasSettings(msResourceUrl); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + log.println(e); + result = false; + } + tRes.tested("hasSettings()", result); + } + + public void _getSettings() { + requiredMethod("hasSettings()"); + boolean result = true; + try { + mxMenuBarSettings = oObj.getSettings(msResourceUrl, true); + for (int i=0; i<mxMenuBarSettings.getCount(); i++) { + Object[] o = (Object[])mxMenuBarSettings.getByIndex(i); + log.println("+++++++++ i = " + i); + for (int j=0; j<o.length; j++) { + PropertyValue prop = (PropertyValue)o[j]; + log.println("Property" + j + ": " + prop.Name + " " + prop.Value.toString()); + } + } + } + catch(com.sun.star.container.NoSuchElementException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IndexOutOfBoundsException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.WrappedTargetException e) { + result = false; + e.printStackTrace(log); + } + tRes.tested("getSettings()", result); + } + + public void _replaceSettings() { + requiredMethod("getSettings()"); + boolean result = true; + PropertyValue[] prop = createMenuBarEntry("My Entry", mxMenuBarSettings, mxMSF, log); + if (prop == null) { + tRes.tested("replaceSettings()", false); + return; + } + + createMenuBarItem("Click for Macro", UnoRuntime.queryInterface( + XIndexContainer.class, prop[3].Value), log); + + XIndexContainer x = UnoRuntime.queryInterface(XIndexContainer.class, mxMenuBarSettings); + try { + x.insertByIndex(x.getCount(), prop); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IndexOutOfBoundsException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.WrappedTargetException e) { + result = false; + e.printStackTrace(log); + } + + try { + oObj.replaceSettings(msResourceUrl, mxMenuBarSettings); + } + catch(com.sun.star.container.NoSuchElementException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IllegalAccessException e) { + result = false; + e.printStackTrace(log); + } + _getSettings(); + tRes.tested("replaceSettings()", result); + } + + public void _removeSettings() { + requiredMethod("insertSettings()"); + boolean result = true; + try { + oObj.removeSettings(msMyResourceUrl); + } + catch(com.sun.star.container.NoSuchElementException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IllegalAccessException e) { + e.printStackTrace(log); + result = false; + } + tRes.tested("removeSettings()", result); + } + + public void _insertSettings() { + requiredMethod("createSettings()"); + requiredMethod("replaceSettings()"); + boolean result = true; + util.dbg.printInterfaces(mxSettings); + PropertyValue[] prop = createMenuBarEntry("A new entry", mxSettings, mxMSF, log); + if (prop == null) { + tRes.tested("replaceSettings()", false); + return; + } + + createMenuBarItem("A new sub entry", UnoRuntime.queryInterface( + XIndexContainer.class, prop[3].Value), log); + + XIndexContainer x = UnoRuntime.queryInterface(XIndexContainer.class,mxSettings); + try { + int count = x.getCount(); + x.insertByIndex(count, prop); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.IndexOutOfBoundsException e) { + result = false; + e.printStackTrace(log); + } + catch(com.sun.star.lang.WrappedTargetException e) { + result = false; + e.printStackTrace(log); + } + + try { + oObj.insertSettings(msMyResourceUrl, mxSettings); + } + catch(com.sun.star.container.ElementExistException e) { + e.printStackTrace(log); + result = false; + } + catch(com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + result = false; + } + catch(com.sun.star.lang.IllegalAccessException e) { + e.printStackTrace(log); + result = false; + } + tRes.tested("insertSettings()", result); + } + + /** + * Only a short test. + * See complex.imageManager.CheckImageManager for a more extensive test of + * this implementation. + */ + public void _getImageManager() { + Object o = oObj.getImageManager(); + log.println("###### ImageManager "); + XImageManager xImageManager = UnoRuntime.queryInterface(XImageManager.class, o); + tRes.tested("getImageManager()", xImageManager != null); + } + + + /** + * get a shortcut manager + */ + public void _getShortCutManager() { + Object o = oObj.getShortCutManager(); + XServiceInfo xSI = UnoRuntime.queryInterface(XServiceInfo.class,o); + String[] serviceNames = xSI.getSupportedServiceNames(); + boolean bSupportedServiceFound = false; + for (int i=0; i<serviceNames.length; i++) { + log.println("SuppService: " + serviceNames[i]); + if (serviceNames[i].equals(sShortCutManagerServiceName)) { + bSupportedServiceFound = true; + } + } + tRes.tested("getShortCutManager()", bSupportedServiceFound); + } + + public void _getEventsManager() { + Object o = oObj.getEventsManager(); + tRes.tested("getEventsManager()", o == null); + } + + /** + * Create a menu bar entry for adding to the menu bar of the Office. + * @param sLabelName The name of the new entry. + * @param xMenuBarSettings The existing menu bar settings, used for creating the new entry. + * @return An array of properties of the new entry. + */ + public static PropertyValue[] createMenuBarEntry(String sLabelName, XIndexAccess xMenuBarSettings, XMultiServiceFactory xMSF, PrintWriter log) { + PropertyValue[] prop = new PropertyValue[4]; + prop[0] = new PropertyValue(); + prop[0].Name = "CommandURL"; + prop[0].Value = "vnd.openoffice.org:MyMenu"; + prop[1] = new PropertyValue(); + prop[1].Name = "Label"; + prop[1].Value = sLabelName; + prop[2] = new PropertyValue(); + prop[2].Name = "Type"; + prop[2].Value = Short.valueOf((short)0); + prop[3] = new PropertyValue(); + prop[3].Name = "ItemDescriptorContainer"; + + XSingleComponentFactory xFactory = UnoRuntime.queryInterface( + XSingleComponentFactory.class, xMenuBarSettings); + try { + XPropertySet xProp = UnoRuntime.queryInterface(XPropertySet.class, xMSF); + XComponentContext xContext = UnoRuntime.queryInterface( + XComponentContext.class, xProp.getPropertyValue("DefaultContext")); + prop[3].Value = xFactory.createInstanceWithContext(xContext); + } + catch(com.sun.star.uno.Exception e) { + log.println("Could not create an instance for ItemDescriptorContainer property."); + e.printStackTrace(log); + return null; + } + return prop; + } + + /** + * Create a sub entry to the menu bar. + * @param sLabelName The name of the entry in the UI. + * @param xDescriptionContainer The parent entry in the menu bar where + * this entry is added. + */ + public static void createMenuBarItem(String sLabelName, XIndexContainer xDescriptionContainer, PrintWriter log) { + PropertyValue[]aMenuItem = new PropertyValue[3]; + // create a menu item + aMenuItem[0] = new PropertyValue(); + aMenuItem[0].Name = "CommandURL"; + aMenuItem[0].Value = "macro:///Standard.Module1.Test()"; + aMenuItem[1] = new PropertyValue(); + aMenuItem[1].Name = "Label"; + aMenuItem[1].Value = sLabelName; + aMenuItem[2] = new PropertyValue(); + aMenuItem[2].Name = "Type"; + aMenuItem[2].Value = Short.valueOf((short)0); + + try { + xDescriptionContainer.insertByIndex(0, aMenuItem); + } + catch(com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(log); + } + catch(com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log); + } + catch(com.sun.star.lang.WrappedTargetException e) { + e.printStackTrace(log); + } + } +} |