CWS-TOOLING: integrate CWS accelerators01svn

2008-11-26 10:12:06 +0100 as  r264354 : #i96383# use new snapshot of accelerator configuration retrieved from latest master
2008-11-21 12:45:17 +0100 as  r264125 : handle missing module configurations right (create them on demand)
2008-11-21 11:37:37 +0100 as  r264117 : #i96383# add missing shortcuts for writer
2008-11-03 10:46:17 +0100 as  r263280 : fix warning regarding unreachable code
2008-10-23 11:07:04 +0200 as  r262616 : #i87737# move shortcut configuration to XCU/S based configuration
This commit is contained in:
Release Engineers
2008-12-01 13:46:00 +00:00
parent 928e591c0a
commit e9e75d722d
17 changed files with 8729 additions and 791 deletions
@@ -0,0 +1,689 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: AcceleratorsConfigurationTest.java,v $
* $Revision: 1.1.2.4 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
package complex.accelerators;
// imports
import com.sun.star.awt.*;
import com.sun.star.beans.*;
import com.sun.star.container.*;
import com.sun.star.embed.*;
import com.sun.star.lang.*;
import com.sun.star.ui.*;
import com.sun.star.uno.*;
import com.sun.star.util.*;
import complexlib.ComplexTestCase;
import java.lang.*;
import java.util.*;
import helper.*;
//-----------------------------------------------
/** @short todo document me
*/
public class AcceleratorsConfigurationTest extends ComplexTestCase
{
/** points to the global uno service manager. */
private XMultiServiceFactory m_xSmgr = null;
/** the accelerator configuration for testing. */
private XAcceleratorConfiguration m_xGlobalAccelCfg = null;
private XAcceleratorConfiguration m_xModuleAccelCfg = null;
private XAcceleratorConfiguration m_xDocumentAccelCfg = null;
/** XCS/XCU based accelerator configuration. */
private XNameAccess m_xConfig = null;
private XNameAccess m_xPrimaryKeys = null;
private XNameAccess m_xSecondaryKeys = null;
//-------------------------------------------
// test environment
//-----------------------------------------------
/** @short todo document me
*/
public String[] getTestMethodNames()
{
return new String[]
{
"checkGlobalAccelCfg",
"checkModuleAccelCfg",
"checkDocumentAccelCfg"
};
}
//-----------------------------------------------
/** @short Create the environment for following tests.
*/
public void before()
throws java.lang.Exception
{
// get uno service manager from global test environment
m_xSmgr = (XMultiServiceFactory)param.getMSF();
m_xGlobalAccelCfg = (XAcceleratorConfiguration)UnoRuntime.queryInterface(
XAcceleratorConfiguration.class,
m_xSmgr.createInstance("com.sun.star.ui.GlobalAcceleratorConfiguration"));
m_xModuleAccelCfg = (XAcceleratorConfiguration)UnoRuntime.queryInterface(
XAcceleratorConfiguration.class,
m_xSmgr.createInstance("com.sun.star.ui.ModuleAcceleratorConfiguration"));
m_xDocumentAccelCfg = (XAcceleratorConfiguration)UnoRuntime.queryInterface(
XAcceleratorConfiguration.class,
m_xSmgr.createInstance("com.sun.star.ui.DocumentAcceleratorConfiguration"));
String sConfigPath = "org.openoffice.Office.Accelerators";
boolean bReadOnly = false;
XNameAccess m_xConfig = openConfig(m_xSmgr, sConfigPath, bReadOnly);
if (m_xConfig != null)
{
m_xPrimaryKeys = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, m_xConfig.getByName("PrimaryKeys"));
m_xSecondaryKeys = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, m_xConfig.getByName("SecondaryKeys"));
}
}
//-------------------------------------------
/** @short close the environment.
*/
public void after()
throws java.lang.Exception
{
m_xConfig = null;
m_xGlobalAccelCfg = null;
m_xModuleAccelCfg = null;
m_xDocumentAccelCfg = null;
m_xSmgr = null;
}
//-------------------------------------------
/** @todo document me.
*/
public void checkGlobalAccelCfg()
throws java.lang.Exception
{
log.println("\n---- check Global accelerator configuration: ----");
String[] sKeys;
XNameAccess xPrimaryAccess = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class,m_xPrimaryKeys.getByName("Global"));
XNameAccess xSecondaryAccess = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, m_xSecondaryKeys.getByName("Global"));
sKeys = new String[] { "A_MOD1" };
impl_checkGetKeyCommands(m_xGlobalAccelCfg, xPrimaryAccess, sKeys);
sKeys = new String[] { "PASTE", "X_SHIFT" };
String[] sCommands = new String[] { ".uno:test", ".uno:test" };
impl_checkSetKeyCommands(m_xGlobalAccelCfg, xPrimaryAccess, xSecondaryAccess, sKeys, sCommands);
sKeys = new String[] { "C_MOD1", "CUT" };
impl_checkRemoveKeyCommands(m_xGlobalAccelCfg, xPrimaryAccess, xSecondaryAccess, sKeys);
String[] sCommandList = new String[] { ".uno:Paste", ".uno:CloseWin" };
impl_checkGetPreferredKeyEventsForCommandList(m_xGlobalAccelCfg, xPrimaryAccess, sCommandList);
}
//-------------------------------------------
/** @todo document me.
*/
public void checkModuleAccelCfg()
throws java.lang.Exception
{
String[] sModules = new String[]
{
"com.sun.star.frame.StartModule",
"com.sun.star.drawing.DrawingDocument",
"com.sun.star.presentation.PresentationDocument",
"com.sun.star.sheet.SpreadsheetDocument",
"com.sun.star.text.TextDocument",
// add other modules here
};
for (int i=0; i<sModules.length; ++i)
{
log.println("\n---- check accelerator configuration depending module: " + sModules[i] + " ----");
PropertyValue[] aProp = new PropertyValue[2];
aProp[0] = new PropertyValue();
aProp[0].Name = "ModuleIdentifier";
aProp[0].Value = sModules[i];
aProp[1] = new PropertyValue();
aProp[1].Name = "Locale";
aProp[1].Value = "en-US";
XInitialization xInit = (XInitialization)UnoRuntime.queryInterface(XInitialization.class, m_xModuleAccelCfg);
xInit.initialize(aProp); // to fill cache
XNameAccess xPrimaryModules = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, m_xPrimaryKeys.getByName("Modules"));
XNameAccess xSecondaryModules = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, m_xSecondaryKeys.getByName("Modules"));
String[] sKeys;
XNameAccess xPrimaryAccess = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, xPrimaryModules.getByName(sModules[i]));
XNameAccess xSecondaryAccess = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, xSecondaryModules.getByName(sModules[i]));
//--------------------------------------------
if (sModules[i].equals("com.sun.star.presentation.PresentationDocument"))
sKeys = new String[] { "A_SHIFT_MOD1_MOD2" };
else if (sModules[i].equals("com.sun.star.sheet.SpreadsheetDocument"))
sKeys = new String[] { "B_MOD1" };
else if (sModules[i].equals("com.sun.star.text.TextDocument"))
sKeys = new String[] { "F11_MOD1" };
else
sKeys = new String[] { "A_MOD1" };
impl_checkGetKeyCommands(m_xModuleAccelCfg, xPrimaryAccess, sKeys);
//--------------------------------------------
String[] sCommands;
if (sModules[i].equals("com.sun.star.presentation.PresentationDocument"))
{
sKeys = new String[] { "A_SHIFT_MOD1_MOD2" };
sCommands = new String[] { ".uno:test" };
}
else if (sModules[i].equals("com.sun.star.sheet.SpreadsheetDocument"))
{
sKeys = new String[] { "B_MOD1" };
sCommands = new String[] { ".uno:test" };
}
else if (sModules[i].equals("com.sun.star.text.TextDocument"))
{
sKeys = new String[] { "F11_MOD1" };
sCommands = new String[] { ".uno:test" };
}
else
{
sKeys = new String[] { "PASTE" };
sCommands = new String[] { ".uno:test" };
}
impl_checkSetKeyCommands(m_xModuleAccelCfg, xPrimaryAccess, xSecondaryAccess, sKeys, sCommands);
//--------------------------------------------
if (sModules[i].equals("com.sun.star.presentation.PresentationDocument"))
sKeys = new String[] { "A_SHIFT_MOD1_MOD2" };
else if (sModules[i].equals("com.sun.star.sheet.SpreadsheetDocument"))
sKeys = new String[] { "F5_SHIFT_MOD1" };
else if (sModules[i].equals("com.sun.star.text.TextDocument"))
sKeys = new String[] { "BACKSPACE_MOD2" };
else
sKeys = new String[] { "C_MOD1" };
impl_checkRemoveKeyCommands(m_xModuleAccelCfg, xPrimaryAccess, xSecondaryAccess, sKeys);
//--------------------------------------------
String[] sCommandList;
if (sModules[i].equals("com.sun.star.presentation.PresentationDocument"))
sCommandList = new String[] { ".uno:Presentation" };
else if (sModules[i].equals("com.sun.star.sheet.SpreadsheetDocument"))
sCommandList = new String[] { ".uno:InsertCell" };
else if (sModules[i].equals("com.sun.star.text.TextDocument"))
sCommandList = new String[] { ".uno:SelectionModeBlock" };
else
sCommandList = new String[] { ".uno:Cut" };
impl_checkGetPreferredKeyEventsForCommandList(m_xModuleAccelCfg, xPrimaryAccess, sCommandList);
}
}
//-------------------------------------------
/** @todo document me.
*/
public void checkDocumentAccelCfg()
throws java.lang.Exception
{
log.println("\n---- check Document accelerator configuration: ----");
String sDocCfgName;
sDocCfgName = "file:///c:/test.cfg";
SaveDocumentAcceleratorConfiguration(sDocCfgName);
sDocCfgName = "file:///c:/test.cfg";
LoadDocumentAcceleratorConfiguration(sDocCfgName);
}
//-------------------------------------------
/** @todo document me.
*/
private void impl_checkGetKeyCommands(XAcceleratorConfiguration xAccelCfg, XNameAccess xAccess, String[] sKeys)
throws java.lang.Exception
{
log.println("check getKeyCommands...");
for (int i=0; i<sKeys.length; ++i)
{
if (xAccess.hasByName(sKeys[i]) && getCommandFromConfiguration(xAccess, sKeys[i]).length()>0)
{
log.println("** get command by " + sKeys[i] + " **");
String sCmdFromCache = new String(); // get a value using XAcceleratorConfiguration API
String sCmdFromConfiguration = new String(); // get a value using configuration API
// GET shortcuts/commands using XAcceleratorConfiguration API
sCmdFromCache = xAccelCfg.getCommandByKeyEvent(convertShortcut2AWTKey(sKeys[i]));
log.println(sKeys[i] + "-->" + sCmdFromCache + ", by XAcceleratorConfiguration API");
// GET shortcuts/commands using configuration API
sCmdFromConfiguration = getCommandFromConfiguration(xAccess, sKeys[i]);
log.println(sKeys[i] + "-->" + sCmdFromConfiguration + ", by configuration API");
assure("values are different by XAcceleratorConfiguration API and configuration API!", sCmdFromCache.equals(sCmdFromConfiguration));
String sLocale = "es";
setOfficeLocale(sLocale);
sCmdFromConfiguration = getCommandFromConfiguration(xAccess, sKeys[i]);
log.println(sKeys[i] + "-->" + sCmdFromConfiguration + ", by configuration API" + " for locale:"+ getOfficeLocale());
sLocale = "en-US";
setOfficeLocale(sLocale); //reset to default locale
}
else
{
log.println(sKeys[i] + " doesn't exist!");
}
}
}
//-------------------------------------------
/** @todo document me.
*/
private void impl_checkSetKeyCommands(XAcceleratorConfiguration xAccelCfg, XNameAccess xPrimaryAccess, XNameAccess xSecondaryAccess, String[] sKeys, String[] sCommands)
throws java.lang.Exception
{
log.println("check setKeyCommands...");
for (int i=0; i<sKeys.length; ++i)
{
if (!xPrimaryAccess.hasByName(sKeys[i]) && !xSecondaryAccess.hasByName(sKeys[i]))
{
xAccelCfg.setKeyEvent(convertShortcut2AWTKey(sKeys[i]), sCommands[i]);
xAccelCfg.store();
if (xPrimaryAccess.hasByName(sKeys[i]))
log.println("add " + sKeys[i] + " successfully!");
else
log.println("add " + sKeys[i] + " failed!");
}
else if (xPrimaryAccess.hasByName(sKeys[i]))
{
String sOriginalCommand = getCommandFromConfiguration(xPrimaryAccess, sKeys[i]);
if (!sCommands[i].equals(sOriginalCommand))
{
xAccelCfg.setKeyEvent(convertShortcut2AWTKey(sKeys[i]), sCommands[i]);
xAccelCfg.store();
String sChangedCommand = getCommandFromConfiguration(xPrimaryAccess, sKeys[i]);
if (sCommands[i].equals(sChangedCommand))
log.println("change " + sKeys[i] + " successfully!");
else
log.println("change " + sKeys[i] + " failed!");
}
else
log.println(sKeys[i] + " already exist!");
}
else if (xSecondaryAccess.hasByName(sKeys[i]))
{
String sOriginalCommand = getCommandFromConfiguration(xSecondaryAccess, sKeys[i]);
if (!sCommands[i].equals(sOriginalCommand))
{
xAccelCfg.setKeyEvent(convertShortcut2AWTKey(sKeys[i]), sCommands[i]);
xAccelCfg.store();
String sChangedCommand = getCommandFromConfiguration(xPrimaryAccess, sKeys[i]);
if (sCommands[i].equals(sChangedCommand))
log.println("change " + sKeys[i] + " successfully!");
else
log.println("change " + sKeys[i] + " failed!");
}
else
log.println(sKeys[i] + " already exist!");
}
}
}
//-------------------------------------------
/** @todo document me.
*/
private void impl_checkRemoveKeyCommands(XAcceleratorConfiguration xAccelCfg, XNameAccess xPrimaryAccess, XNameAccess xSecondaryAccess, String[] sKeys)
throws java.lang.Exception
{
log.println("check removeKeyCommands...");
for (int i=0; i<sKeys.length; i++)
{
if (!xPrimaryAccess.hasByName(sKeys[i]) && !xSecondaryAccess.hasByName(sKeys[i]))
{
log.println(sKeys[i] + " doesn't exist!");
}
else if (xPrimaryAccess.hasByName(sKeys[i]))
{
xAccelCfg.removeKeyEvent(convertShortcut2AWTKey(sKeys[i]));
xAccelCfg.store();
if (!xPrimaryAccess.hasByName(sKeys[i]))
log.println("Remove " + sKeys[i] + " successfully!");
else
log.println("Remove " + sKeys[i] + " failed!");
}
else if (xSecondaryAccess.hasByName(sKeys[i]))
{
xAccelCfg.removeKeyEvent(convertShortcut2AWTKey(sKeys[i]));
xAccelCfg.store();
if (!xSecondaryAccess.hasByName(sKeys[i]))
log.println("Remove " + sKeys[i] + " successfully!");
else
log.println("Remove " + sKeys[i] + " failed!");
}
}
}
//-------------------------------------------
/** @todo document me.
*/
private void impl_checkGetPreferredKeyEventsForCommandList(XAcceleratorConfiguration xAccelCfg, XNameAccess xPrimaryAccess, String[] sCommandList)
throws java.lang.Exception
{
log.println("check getPreferredKeyEventsForCommandList...");
Object[] oKeyEvents = xAccelCfg.getPreferredKeyEventsForCommandList(sCommandList);
for (int i = 0; i < oKeyEvents.length; i++)
{
log.println("get preferred key for command "+ sCommandList[i] + ":");
KeyEvent aKeyEvent = (KeyEvent)AnyConverter.toObject(KeyEvent.class, oKeyEvents[i]);
String sKeyEvent = convertAWTKey2Shortcut(aKeyEvent);
log.println(sKeyEvent);
String sCmdFromConfiguration = getCommandFromConfiguration(xPrimaryAccess, sKeyEvent);
log.println(sCmdFromConfiguration);
if (sCommandList[i].equals(sCmdFromConfiguration))
log.println("get preferred key correctly!");
else
log.println("get preferred key failed!");
}
}
//-------------------------------------------
/** @todo document me.
*/
private String getCommandFromConfiguration(XNameAccess xAccess, String sKey)
throws java.lang.Exception
{
String sCommand = new String();
if (xAccess.hasByName(sKey))
{
XNameAccess xKey = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, xAccess.getByName(sKey));
XNameAccess xCommand = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, xKey.getByName("Command"));
String sLocale = getOfficeLocale();
if (xCommand.hasByName(sLocale))
sCommand = (String)UnoRuntime.queryInterface(String.class, xCommand.getByName(sLocale));
}
return sCommand;
}
//-------------------------------------------
/** @todo document me.
*/
private void insertKeyToConfiguration(XNameAccess xAccess, String sKey, String sCommand)
throws java.lang.Exception
{
XNameContainer xContainer = (XNameContainer)UnoRuntime.queryInterface(XNameContainer.class, xAccess);
if (!xContainer.hasByName(sKey))
{
XSingleServiceFactory xFac = (XSingleServiceFactory)UnoRuntime.queryInterface(XSingleServiceFactory.class, xContainer);
XInterface xInst = (XInterface)UnoRuntime.queryInterface(XInterface.class, xFac.createInstance());
xContainer.insertByName(sKey, xInst);
}
XNameAccess xKey = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, xContainer.getByName(sKey));
XNameContainer xCommand = (XNameContainer)UnoRuntime.queryInterface(XNameContainer.class, xKey.getByName("Command"));
String sLocale = getOfficeLocale();
if (xCommand.hasByName(sLocale))
xCommand.insertByName(sLocale, sCommand);
else
xCommand.replaceByName(sLocale, sCommand);
}
//-------------------------------------------
/** @todo document me.
*/
private void removeKeyFromConfiguration(XNameAccess xAccess, String sKey)
throws java.lang.Exception
{
XNameContainer xContainer = (XNameContainer)UnoRuntime.queryInterface(XNameContainer.class, xAccess);
if (xContainer.hasByName(sKey))
xContainer.removeByName(sKey);
}
//-------------------------------------------
/** @todo document me.
*/
private void LoadDocumentAcceleratorConfiguration(String sDocCfgName)
throws java.lang.Exception
{
XSingleServiceFactory xStorageFactory = (XSingleServiceFactory)UnoRuntime.queryInterface(
XSingleServiceFactory.class,
m_xSmgr.createInstance("com.sun.star.embed.StorageFactory"));
Object aArgs[] = new Object[2];
aArgs[0] = sDocCfgName;
aArgs[1] = new Integer(com.sun.star.embed.ElementModes.READ);
XStorage xRootStorage = (XStorage)UnoRuntime.queryInterface(
XStorage.class,
xStorageFactory.createInstanceWithArguments(aArgs));
XStorage xUIConfig = xRootStorage.openStorageElement("Configurations2", com.sun.star.embed.ElementModes.READ);
PropertyValue aProp = new PropertyValue();
aProp.Name = "DocumentRoot";
aProp.Value = xUIConfig;
Object[] lArgs = new Object[1];
lArgs[0] = aProp;
XInitialization xInit = (XInitialization)UnoRuntime.queryInterface(XInitialization.class, m_xDocumentAccelCfg);
xInit.initialize(lArgs);
String test = m_xDocumentAccelCfg.getCommandByKeyEvent(convertShortcut2AWTKey("F2"));
log.println(test);
}
//-------------------------------------------
/** @todo document me.
*/
private void SaveDocumentAcceleratorConfiguration(String sDocCfgName)
throws java.lang.Exception
{
XSingleServiceFactory xStorageFactory = (XSingleServiceFactory)UnoRuntime.queryInterface(
XSingleServiceFactory.class,
m_xSmgr.createInstance("com.sun.star.embed.StorageFactory"));
Object aArgs[] = new Object[2];
aArgs[0] = sDocCfgName;
aArgs[1] = new Integer(com.sun.star.embed.ElementModes.WRITE);
XStorage xRootStorage = (XStorage)UnoRuntime.queryInterface(
XStorage.class,
xStorageFactory.createInstanceWithArguments(aArgs));
XStorage xUIConfig = xRootStorage.openStorageElement("Configurations2", com.sun.star.embed.ElementModes.WRITE);
XUIConfigurationManager xCfgMgr = (XUIConfigurationManager)UnoRuntime.queryInterface(
XUIConfigurationManager.class,
m_xSmgr.createInstance("com.sun.star.ui.UIConfigurationManager"));
XUIConfigurationStorage xUICfgStore = (XUIConfigurationStorage)UnoRuntime.queryInterface(
XUIConfigurationStorage.class,
xCfgMgr);
xUICfgStore.setStorage(xUIConfig);
XPropertySet xUIConfigProps = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xUIConfig);
xUIConfigProps.setPropertyValue("MediaType", "application/vnd.sun.xml.ui.configuration");
if (xCfgMgr != null)
{
XAcceleratorConfiguration xTargetAccMgr = (XAcceleratorConfiguration)UnoRuntime.queryInterface(
XAcceleratorConfiguration.class,
xCfgMgr.getShortCutManager());
XUIConfigurationPersistence xCommit1 = (XUIConfigurationPersistence)UnoRuntime.queryInterface(
XUIConfigurationPersistence.class, xTargetAccMgr);
XUIConfigurationPersistence xCommit2 = (XUIConfigurationPersistence)UnoRuntime.queryInterface(
XUIConfigurationPersistence.class, xCfgMgr);
xCommit1.store();
xCommit2.store();
XTransactedObject xCommit3 = (XTransactedObject)UnoRuntime.queryInterface(
XTransactedObject.class, xRootStorage);
xCommit3.commit();
}
}
//-------------------------------------------
/** @todo document me.
*/
private com.sun.star.awt.KeyEvent convertShortcut2AWTKey(String sShortcut)
throws java.lang.Exception
{
com.sun.star.awt.KeyEvent aKeyEvent = new com.sun.star.awt.KeyEvent();
KeyMapping aKeyMapping = new KeyMapping();
String[] sShortcutSplits = sShortcut.split("_");
aKeyEvent.KeyCode = aKeyMapping.mapIdentifier2Code(sShortcutSplits[0]);
for (int i = 1; i < sShortcutSplits.length; i++)
{
if (sShortcutSplits[i].equals("SHIFT"))
aKeyEvent.Modifiers |= com.sun.star.awt.KeyModifier.SHIFT;
else if (sShortcutSplits[i].equals("MOD1"))
aKeyEvent.Modifiers |= com.sun.star.awt.KeyModifier.MOD1;
else if (sShortcutSplits[i].equals("MOD2"))
aKeyEvent.Modifiers |= com.sun.star.awt.KeyModifier.MOD2;
}
return aKeyEvent;
}
//-------------------------------------------
/** @todo document me.
*/
private String convertAWTKey2Shortcut(com.sun.star.awt.KeyEvent aKeyEvent)
throws java.lang.Exception
{
String sShortcut;
KeyMapping aKeyMapping = new KeyMapping();
sShortcut = aKeyMapping.mapCode2Identifier(aKeyEvent.KeyCode);
if ((aKeyEvent.Modifiers & com.sun.star.awt.KeyModifier.SHIFT) == com.sun.star.awt.KeyModifier.SHIFT)
sShortcut += "_SHIFT";
if ((aKeyEvent.Modifiers & com.sun.star.awt.KeyModifier.MOD1) == com.sun.star.awt.KeyModifier.MOD1)
sShortcut += "_MOD1";
if ((aKeyEvent.Modifiers & com.sun.star.awt.KeyModifier.MOD2) == com.sun.star.awt.KeyModifier.MOD2)
sShortcut += "_MOD2";
return sShortcut;
}
//-------------------------------------------
/** @todo document me.
*/
private String getOfficeLocale()
throws java.lang.Exception
{
String sLocale = new String();
String sConfigPath = "org.openoffice.Setup";
boolean bReadOnly = true;
XNameAccess xRootConfig = openConfig(m_xSmgr, sConfigPath, bReadOnly);
if (xRootConfig != null)
{
XNameAccess xLocale = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, xRootConfig.getByName("L10N"));
XPropertySet xSet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xLocale);
sLocale = (String)xSet.getPropertyValue("ooLocale");
}
return sLocale;
}
//-------------------------------------------
/** @todo document me.
*/
private void setOfficeLocale(String sLocale)
throws java.lang.Exception
{
String sConfigPath = "org.openoffice.Setup";
boolean bReadOnly = false;
XNameAccess xRootConfig = openConfig(m_xSmgr, sConfigPath, bReadOnly);
if (xRootConfig != null)
{
XNameAccess xLocale = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, xRootConfig.getByName("L10N"));
XPropertySet xSet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xLocale);
xSet.setPropertyValue("ooLocale", sLocale);
XChangesBatch xBatch = (XChangesBatch)UnoRuntime.queryInterface(XChangesBatch.class, xRootConfig);
xBatch.commitChanges();
}
}
//-------------------------------------------
/** @todo document me.
*/
private XNameAccess openConfig(XMultiServiceFactory xSMGR,
String sConfigPath ,
boolean bReadOnly )
throws java.lang.Exception
{
XMultiServiceFactory xConfigRoot = (XMultiServiceFactory)UnoRuntime.queryInterface(
XMultiServiceFactory.class,
xSMGR.createInstance("com.sun.star.configuration.ConfigurationProvider"));
PropertyValue[] lParams = new PropertyValue[2];
lParams[0] = new PropertyValue();
lParams[0].Name = "nodepath";
lParams[0].Value = sConfigPath;
lParams[1] = new PropertyValue();
lParams[1].Name = "locale";
lParams[1].Value = "*";
Object aConfig;
if (bReadOnly)
aConfig = xConfigRoot.createInstanceWithArguments(
"com.sun.star.configuration.ConfigurationAccess",
lParams);
else
aConfig = xConfigRoot.createInstanceWithArguments(
"com.sun.star.configuration.ConfigurationUpdateAccess",
lParams);
XNameAccess xConfig = (XNameAccess)UnoRuntime.queryInterface(
XNameAccess.class,
aConfig);
if (xConfig == null)
throw new com.sun.star.uno.Exception("Could not open configuration \"" + sConfigPath + "\"");
return xConfig;
}
}
@@ -0,0 +1,171 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: KeyMapping.java,v $
* $Revision: 1.1.2.1 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
package complex.accelerators;
import java.util.HashMap;
class KeyIdentifierInfo
{
protected String sIdentifier;
protected Short nCode;
KeyIdentifierInfo(String sID, Short nC)
{
sIdentifier = sID;
nCode = nC;
}
}
class IdentifierHashMap extends HashMap
{
public void put(String sIdentifier, Short nCode)
{
super.put(sIdentifier, nCode);
}
public Short get(String sIdentifier)
{
return (Short)super.get(sIdentifier);
}
}
class CodeHashMap extends HashMap
{
public void put(Short nCode, String sIdentifier)
{
super.put(nCode, sIdentifier);
}
public String get(Short nCode)
{
return (String)super.get(nCode);
}
}
public class KeyMapping
{
private IdentifierHashMap aIdentifierHashMap;
private CodeHashMap aCodeHashMap;
KeyMapping()
{
KeyIdentifierInfo[] aInfoMap = {
new KeyIdentifierInfo("0", new Short(com.sun.star.awt.Key.NUM0)),
new KeyIdentifierInfo("1", new Short(com.sun.star.awt.Key.NUM1)),
new KeyIdentifierInfo("2", new Short(com.sun.star.awt.Key.NUM2)),
new KeyIdentifierInfo("3", new Short(com.sun.star.awt.Key.NUM3)),
new KeyIdentifierInfo("4", new Short(com.sun.star.awt.Key.NUM4)),
new KeyIdentifierInfo("5", new Short(com.sun.star.awt.Key.NUM5)),
new KeyIdentifierInfo("6", new Short(com.sun.star.awt.Key.NUM6)),
new KeyIdentifierInfo("7", new Short(com.sun.star.awt.Key.NUM7)),
new KeyIdentifierInfo("8", new Short(com.sun.star.awt.Key.NUM8)),
new KeyIdentifierInfo("9", new Short(com.sun.star.awt.Key.NUM9)),
new KeyIdentifierInfo("A", new Short(com.sun.star.awt.Key.A)),
new KeyIdentifierInfo("B", new Short(com.sun.star.awt.Key.B)),
new KeyIdentifierInfo("C", new Short(com.sun.star.awt.Key.C)),
new KeyIdentifierInfo("D", new Short(com.sun.star.awt.Key.D)),
new KeyIdentifierInfo("E", new Short(com.sun.star.awt.Key.E)),
new KeyIdentifierInfo("F", new Short(com.sun.star.awt.Key.F)),
new KeyIdentifierInfo("G", new Short(com.sun.star.awt.Key.G)),
new KeyIdentifierInfo("H", new Short(com.sun.star.awt.Key.H)),
new KeyIdentifierInfo("I", new Short(com.sun.star.awt.Key.I)),
new KeyIdentifierInfo("J", new Short(com.sun.star.awt.Key.J)),
new KeyIdentifierInfo("K", new Short(com.sun.star.awt.Key.K)),
new KeyIdentifierInfo("L", new Short(com.sun.star.awt.Key.L)),
new KeyIdentifierInfo("M", new Short(com.sun.star.awt.Key.M)),
new KeyIdentifierInfo("N", new Short(com.sun.star.awt.Key.N)),
new KeyIdentifierInfo("O", new Short(com.sun.star.awt.Key.O)),
new KeyIdentifierInfo("P", new Short(com.sun.star.awt.Key.P)),
new KeyIdentifierInfo("Q", new Short(com.sun.star.awt.Key.Q)),
new KeyIdentifierInfo("R", new Short(com.sun.star.awt.Key.R)),
new KeyIdentifierInfo("S", new Short(com.sun.star.awt.Key.S)),
new KeyIdentifierInfo("T", new Short(com.sun.star.awt.Key.T)),
new KeyIdentifierInfo("U", new Short(com.sun.star.awt.Key.U)),
new KeyIdentifierInfo("V", new Short(com.sun.star.awt.Key.V)),
new KeyIdentifierInfo("W", new Short(com.sun.star.awt.Key.W)),
new KeyIdentifierInfo("X", new Short(com.sun.star.awt.Key.X)),
new KeyIdentifierInfo("Y", new Short(com.sun.star.awt.Key.Y)),
new KeyIdentifierInfo("Z", new Short(com.sun.star.awt.Key.Z)),
new KeyIdentifierInfo("F1", new Short(com.sun.star.awt.Key.F1)),
new KeyIdentifierInfo("F2", new Short(com.sun.star.awt.Key.F2)),
new KeyIdentifierInfo("F3", new Short(com.sun.star.awt.Key.F3)),
new KeyIdentifierInfo("F4", new Short(com.sun.star.awt.Key.F4)),
new KeyIdentifierInfo("F5", new Short(com.sun.star.awt.Key.F5)),
new KeyIdentifierInfo("F6", new Short(com.sun.star.awt.Key.F6)),
new KeyIdentifierInfo("F7", new Short(com.sun.star.awt.Key.F7)),
new KeyIdentifierInfo("F8", new Short(com.sun.star.awt.Key.F8)),
new KeyIdentifierInfo("F9", new Short(com.sun.star.awt.Key.F9)),
new KeyIdentifierInfo("F10", new Short(com.sun.star.awt.Key.F10)),
new KeyIdentifierInfo("F11", new Short(com.sun.star.awt.Key.F11)),
new KeyIdentifierInfo("F12", new Short(com.sun.star.awt.Key.F12)),
new KeyIdentifierInfo("DOWN", new Short(com.sun.star.awt.Key.DOWN)),
new KeyIdentifierInfo("UP", new Short(com.sun.star.awt.Key.UP)),
new KeyIdentifierInfo("LEFT", new Short(com.sun.star.awt.Key.LEFT)),
new KeyIdentifierInfo("RIGHT", new Short(com.sun.star.awt.Key.RIGHT)),
new KeyIdentifierInfo("HOME", new Short(com.sun.star.awt.Key.HOME)),
new KeyIdentifierInfo("END", new Short(com.sun.star.awt.Key.END)),
new KeyIdentifierInfo("PAGEUP", new Short(com.sun.star.awt.Key.PAGEUP)),
new KeyIdentifierInfo("PAGEDOWN", new Short(com.sun.star.awt.Key.PAGEDOWN)),
new KeyIdentifierInfo("RETURN", new Short(com.sun.star.awt.Key.RETURN)),
new KeyIdentifierInfo("ESCAPE", new Short(com.sun.star.awt.Key.ESCAPE)),
new KeyIdentifierInfo("TAB", new Short(com.sun.star.awt.Key.TAB)),
new KeyIdentifierInfo("BACKSPACE", new Short(com.sun.star.awt.Key.BACKSPACE)),
new KeyIdentifierInfo("SPACE", new Short(com.sun.star.awt.Key.SPACE)),
new KeyIdentifierInfo("INSERT", new Short(com.sun.star.awt.Key.INSERT)),
new KeyIdentifierInfo("DELETE", new Short(com.sun.star.awt.Key.DELETE)),
new KeyIdentifierInfo("ADD", new Short(com.sun.star.awt.Key.ADD)),
new KeyIdentifierInfo("SUBTRACT", new Short(com.sun.star.awt.Key.SUBTRACT)),
new KeyIdentifierInfo("MULTIPLY", new Short(com.sun.star.awt.Key.MULTIPLY)),
new KeyIdentifierInfo("DIVIDE", new Short(com.sun.star.awt.Key.DIVIDE)),
new KeyIdentifierInfo("CUT", new Short(com.sun.star.awt.Key.CUT)),
new KeyIdentifierInfo("COPY", new Short(com.sun.star.awt.Key.COPY)),
new KeyIdentifierInfo("PASTE", new Short(com.sun.star.awt.Key.PASTE)),
new KeyIdentifierInfo("UNDO", new Short(com.sun.star.awt.Key.UNDO)),
new KeyIdentifierInfo("REPEAT", new Short(com.sun.star.awt.Key.REPEAT))
};
aIdentifierHashMap = new IdentifierHashMap();
aCodeHashMap = new CodeHashMap();
for (int i = 0; i<aInfoMap.length; i++)
{
aIdentifierHashMap.put(aInfoMap[i].sIdentifier, aInfoMap[i].nCode);
aCodeHashMap.put(aInfoMap[i].nCode, aInfoMap[i].sIdentifier);
}
}
public short mapIdentifier2Code(String sIdentifier)
{
return (aIdentifierHashMap.get(sIdentifier)).shortValue();
}
public String mapCode2Identifier(short nCode)
{
return (String)aCodeHashMap.get(new Short(nCode));
}
}
@@ -0,0 +1,50 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2008 by Sun Microsystems, Inc.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# $RCSfile: makefile.mk,v $
#
# $Revision: 1.1.2.1 $
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#*************************************************************************
PRJ = ..$/..$/..$/..
TARGET = AcceleratorsConfigurationTest
PRJNAME = framework
PACKAGE = complex$/accelerators$/helper
# --- Settings -----------------------------------------------------
.INCLUDE: settings.mk
#----- compile .java files -----------------------------------------
JARFILES = mysql.jar ridl.jar unoil.jar jurt.jar juh.jar jut.jar java_uno.jar \
Generator.jar OOoRunner.jar
JAVAFILES = KeyMapping.java
JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
MAXLINELENGTH = 100000
.INCLUDE : target.mk
@@ -0,0 +1,90 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2008 by Sun Microsystems, Inc.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# $RCSfile: makefile.mk,v $
#
# $Revision: 1.1.2.2 $
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#*************************************************************************
PRJ = ..$/..$/..
TARGET = AcceleratorsConfigurationTest
PRJNAME = $(TARGET)
PACKAGE = complex$/accelerators
# --- Settings -----------------------------------------------------
.INCLUDE: settings.mk
#----- compile .java files -----------------------------------------
JARFILES = ridl.jar unoil.jar jurt.jar juh.jar jut.jar java_uno.jar \
OOoRunner.jar
JAVAFILES = AcceleratorsConfigurationTest.java
JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
SUBDIRS=helper
#----- make a jar from compiled files ------------------------------
MAXLINELENGTH = 100000
JARCLASSDIRS = $(PACKAGE)
JARTARGET = $(TARGET).jar
JARCOMPRESS = TRUE
# --- Parameters for the test --------------------------------------
# start an office if the parameter is set for the makefile
.IF "$(OFFICE)" == ""
CT_APPEXECCOMMAND =
.ELSE
CT_APPEXECCOMMAND = -AppExecutionCommand "$(OFFICE)$/soffice -accept=socket,host=localhost,port=8100;urp;"
.ENDIF
# test base is java complex
CT_TESTBASE = -TestBase java_complex
# test looks something like the.full.package.TestName
CT_TEST = -o $(PACKAGE:s\$/\.\).$(JAVAFILES:b)
# start the runner application
CT_APP = org.openoffice.Runner
# --- Targets ------------------------------------------------------
#.IF "$(depend)" == ""
#$(CLASSDIR)$/$(PACKAGE)$/$(JAVAFILES:b).props : ALLTAR
#.ELSE
#$(CLASSDIR)$/$(PACKAGE)$/$(JAVAFILES:b).props : ALLDEP
#.ENDIF
.INCLUDE : target.mk
RUN: run
run:
+java -cp $(CLASSPATH) $(CT_APP) $(CT_TESTBASE) $(CT_APPEXECCOMMAND) $(CT_TEST)
File diff suppressed because it is too large Load Diff
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: documentacceleratorconfiguration.cxx,v $
* $Revision: 1.10 $
* $Revision: 1.9.244.4 $
*
* This file is part of OpenOffice.org.
*
@@ -32,6 +32,18 @@
#include "precompiled_framework.hxx"
#include <accelerators/documentacceleratorconfiguration.hxx>
#ifndef __FRAMEWORK_XML_ACCELERATORCONFIGURATIONREADER_HXX_
#include <xml/acceleratorconfigurationreader.hxx>
#endif
#ifndef __FRAMEWORK_XML_ACCELERATORCONFIGURATIONWRITER_HXX_
#include <xml/acceleratorconfigurationwriter.hxx>
#endif
#ifndef __FRAMEWORK_XML_SAXNAMESPACEFILTER_HXX_
#include <xml/saxnamespacefilter.hxx>
#endif
//_______________________________________________
// own includes
#include <threadhelp/readguard.hxx>
@@ -45,6 +57,30 @@
//_______________________________________________
// interface includes
#ifndef _COM_SUN_STAR_IO_XACTIVEDATASOURCE_HPP_
#include <com/sun/star/io/XActiveDataSource.hpp>
#endif
#ifndef _COM_SUN_STAR_IO_XSEEKABLE_HPP_
#include <com/sun/star/io/XSeekable.hpp>
#endif
#ifndef _COM_SUN_STAR_IO_XTRUNCATE_HPP_
#include <com/sun/star/io/XTruncate.hpp>
#endif
#ifndef _COM_SUN_STAR_EMBED_ELEMENTMODES_HPP_
#include <com/sun/star/embed/ElementModes.hpp>
#endif
#ifndef _COM_SUN_STAR_XML_SAX_INPUTSOURCE_HPP_
#include <com/sun/star/xml/sax/InputSource.hpp>
#endif
#ifndef _COM_SUN_STAR_XML_SAX_XPARSER_HPP_
#include <com/sun/star/xml/sax/XParser.hpp>
#endif
//_______________________________________________
// other includes
@@ -61,13 +97,13 @@ namespace framework
//-----------------------------------------------
// XInterface, XTypeProvider, XServiceInfo
DEFINE_XINTERFACE_2(DocumentAcceleratorConfiguration ,
AcceleratorConfiguration ,
XMLBasedAcceleratorConfiguration ,
DIRECT_INTERFACE(css::lang::XServiceInfo) ,
DIRECT_INTERFACE(css::lang::XInitialization))
// DIRECT_INTERFACE(css::ui::XUIConfigurationStorage))
DEFINE_XTYPEPROVIDER_2_WITH_BASECLASS(DocumentAcceleratorConfiguration ,
AcceleratorConfiguration ,
XMLBasedAcceleratorConfiguration ,
css::lang::XServiceInfo ,
css::lang::XInitialization)
// css::ui::XUIConfigurationStorage)
@@ -89,7 +125,7 @@ DEFINE_INIT_SERVICE(DocumentAcceleratorConfiguration,
//-----------------------------------------------
DocumentAcceleratorConfiguration::DocumentAcceleratorConfiguration(const css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR)
: AcceleratorConfiguration(xSMGR)
: XMLBasedAcceleratorConfiguration(xSMGR)
{
}
@@ -182,20 +218,20 @@ void DocumentAcceleratorConfiguration::impl_ts_fillCache()
xDocumentRoot,
aLocale);
AcceleratorConfiguration::reload();
DocumentAcceleratorConfiguration::reload();
m_aPresetHandler.addStorageListener(this);
}
/*
Sometimes the configuration seams to be corrupted ..
So it would be nice if we dont crash the office then .-)
#121559#
Sometimes the configuration seams to be corrupted ..
So it would be nice if we dont crash the office then .-)
#121559#
catch(const css::uno::RuntimeException& exRun)
{ throw exRun; }
{ throw exRun; }
*/
catch(const css::uno::Exception&)
{}
{}
}
//-----------------------------------------------
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: globalacceleratorconfiguration.cxx,v $
* $Revision: 1.6 $
* $Revision: 1.5.244.7 $
*
* This file is part of OpenOffice.org.
*
@@ -37,24 +37,22 @@
#include <threadhelp/readguard.hxx>
#include <threadhelp/writeguard.hxx>
#ifndef __FRAMEWORK_ACCELERATORCONST_H_
#include <acceleratorconst.h>
#endif
#include <services.h>
//_______________________________________________
// interface includes
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
#include <com/sun/star/embed/ElementModes.hpp>
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/util/XChangesNotifier.hpp>
//_______________________________________________
// other includes
#include <vcl/svapp.hxx>
#ifndef _COMPHELPER_LOCALE_HXX
#include <comphelper/locale.hxx>
#endif
#include <comphelper/configurationhelper.hxx>
//_______________________________________________
// const
@@ -64,12 +62,14 @@ namespace framework
//-----------------------------------------------
// XInterface, XTypeProvider, XServiceInfo
DEFINE_XINTERFACE_1(GlobalAcceleratorConfiguration ,
AcceleratorConfiguration ,
DIRECT_INTERFACE(css::lang::XServiceInfo))
DEFINE_XTYPEPROVIDER_1_WITH_BASECLASS(GlobalAcceleratorConfiguration,
AcceleratorConfiguration ,
css::lang::XServiceInfo )
DEFINE_XINTERFACE_2(GlobalAcceleratorConfiguration ,
XCUBasedAcceleratorConfiguration ,
DIRECT_INTERFACE(css::lang::XServiceInfo),
DIRECT_INTERFACE(css::lang::XInitialization))
DEFINE_XTYPEPROVIDER_2_WITH_BASECLASS(GlobalAcceleratorConfiguration,
XCUBasedAcceleratorConfiguration ,
css::lang::XServiceInfo ,
css::lang::XInitialization)
DEFINE_XSERVICEINFO_MULTISERVICE(GlobalAcceleratorConfiguration ,
::cppu::OWeakObject ,
@@ -89,14 +89,19 @@ DEFINE_INIT_SERVICE(GlobalAcceleratorConfiguration,
//-----------------------------------------------
GlobalAcceleratorConfiguration::GlobalAcceleratorConfiguration(const css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR)
: AcceleratorConfiguration(xSMGR)
: XCUBasedAcceleratorConfiguration(xSMGR)
{
}
//-----------------------------------------------
GlobalAcceleratorConfiguration::~GlobalAcceleratorConfiguration()
{
m_aPresetHandler.removeStorageListener(this);
}
void SAL_CALL GlobalAcceleratorConfiguration::initialize(const css::uno::Sequence< css::uno::Any >& /*lArguments*/)
throw(css::uno::Exception ,
css::uno::RuntimeException)
{
}
//-----------------------------------------------
@@ -105,30 +110,16 @@ void GlobalAcceleratorConfiguration::impl_ts_fillCache()
// get current office locale ... but dont cache it.
// Otherwise we must be listener on the configuration layer
// which seems to superflous for this small implementation .-)
::comphelper::Locale aLocale = impl_ts_getLocale();
::comphelper::Locale aLocale = ::comphelper::Locale(m_sLocale);
// May be there exists no accelerator config? Handle it gracefully :-)
try
{
// Note: The used preset class is threadsafe by itself ... and live if we live!
// We do not need any mutex here.
m_sGlobalOrModules = CFG_ENTRY_GLOBAL;
XCUBasedAcceleratorConfiguration::reload();
// open the folder, where the configuration exists
m_aPresetHandler.connectToResource(
PresetHandler::E_GLOBAL,
PresetHandler::RESOURCETYPE_ACCELERATOR(),
::rtl::OUString(),
css::uno::Reference< css::embed::XStorage >(),
aLocale);
// check if the user already has a current configuration
// if not - se the default preset as new current one.
// means: copy "share/default.xml" => "user/current.xml"
if (!m_aPresetHandler.existsTarget(PresetHandler::TARGET_CURRENT()))
m_aPresetHandler.copyPresetToTarget(PresetHandler::PRESET_DEFAULT(), PresetHandler::TARGET_CURRENT());
AcceleratorConfiguration::reload();
m_aPresetHandler.addStorageListener(this);
css::uno::Reference< css::util::XChangesNotifier > xBroadcaster(m_xCfg, css::uno::UNO_QUERY_THROW);
xBroadcaster->addChangesListener(static_cast< css::util::XChangesListener* >(this));
}
catch(const css::uno::RuntimeException& exRun)
{ throw exRun; }
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: moduleacceleratorconfiguration.cxx,v $
* $Revision: 1.7 $
* $Revision: 1.6.244.6 $
*
* This file is part of OpenOffice.org.
*
@@ -56,6 +56,22 @@
#endif
#include <vcl/svapp.hxx>
#ifndef _COMPHELPER_CONFIGURATIONHELPER_HXX_
#include <comphelper/configurationhelper.hxx>
#endif
#ifndef _COM_SUN_STAR_UTIL_XCHANGESNOTIFIER_HPP_
#include <com/sun/star/util/XChangesNotifier.hpp>
#endif
#ifndef _RTL_LOGFILE_HXX_
#include <rtl/logfile.hxx>
#endif
#ifndef _RTL_LOGFILE_HXX_
#include <rtl/logfile.h>
#endif
//_______________________________________________
// const
@@ -65,12 +81,12 @@ namespace framework
//-----------------------------------------------
// XInterface, XTypeProvider, XServiceInfo
DEFINE_XINTERFACE_2(ModuleAcceleratorConfiguration ,
AcceleratorConfiguration ,
XCUBasedAcceleratorConfiguration ,
DIRECT_INTERFACE(css::lang::XServiceInfo) ,
DIRECT_INTERFACE(css::lang::XInitialization))
DEFINE_XTYPEPROVIDER_2_WITH_BASECLASS(ModuleAcceleratorConfiguration,
AcceleratorConfiguration ,
XCUBasedAcceleratorConfiguration ,
css::lang::XServiceInfo ,
css::lang::XInitialization )
@@ -91,14 +107,14 @@ DEFINE_INIT_SERVICE(ModuleAcceleratorConfiguration,
//-----------------------------------------------
ModuleAcceleratorConfiguration::ModuleAcceleratorConfiguration(const css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR)
: AcceleratorConfiguration(xSMGR)
: XCUBasedAcceleratorConfiguration(xSMGR)
{
}
//-----------------------------------------------
ModuleAcceleratorConfiguration::~ModuleAcceleratorConfiguration()
{
m_aPresetHandler.removeStorageListener(this);
// m_aPresetHandler.removeStorageListener(this);
}
//-----------------------------------------------
@@ -111,6 +127,7 @@ void SAL_CALL ModuleAcceleratorConfiguration::initialize(const css::uno::Sequenc
::comphelper::SequenceAsHashMap lArgs(lArguments);
m_sModule = lArgs.getUnpackedValueOrDefault(::rtl::OUString::createFromAscii("ModuleIdentifier"), ::rtl::OUString());
m_sLocale = lArgs.getUnpackedValueOrDefault(::rtl::OUString::createFromAscii("Locale") , ::rtl::OUString::createFromAscii("x-default"));
if (!m_sModule.getLength())
throw css::uno::RuntimeException(
@@ -129,37 +146,24 @@ void ModuleAcceleratorConfiguration::impl_ts_fillCache()
// SAFE -> ----------------------------------
ReadGuard aReadLock(m_aLock);
::rtl::OUString sModule = m_sModule;
m_sModuleCFG = m_sModule;
aReadLock.unlock();
// <- SAFE ----------------------------------
// get current office locale ... but dont cache it.
// Otherwise we must be listener on the configuration layer
// which seems to superflous for this small implementation .-)
::comphelper::Locale aLocale = impl_ts_getLocale();
::comphelper::Locale aLocale = ::comphelper::Locale(m_sLocale);
// May be the current app module does not have any
// accelerator config? Handle it gracefully :-)
try
{
// Note: The used preset class is threadsafe by itself ... and live if we live!
// We do not need any mutex here.
m_sGlobalOrModules = CFG_ENTRY_MODULES;
XCUBasedAcceleratorConfiguration::reload();
// open the folder, where the configuration exists
m_aPresetHandler.connectToResource(
PresetHandler::E_MODULES,
PresetHandler::RESOURCETYPE_ACCELERATOR(),
sModule,
css::uno::Reference< css::embed::XStorage >(),
aLocale);
// check if the user already has a current configuration
// if not - se the default preset as new current one.
// means: copy "share/default.xml" => "user/current.xml"
if (!m_aPresetHandler.existsTarget(PresetHandler::TARGET_CURRENT()))
m_aPresetHandler.copyPresetToTarget(PresetHandler::PRESET_DEFAULT(), PresetHandler::TARGET_CURRENT());
AcceleratorConfiguration::reload();
m_aPresetHandler.addStorageListener(this);
css::uno::Reference< css::util::XChangesNotifier > xBroadcaster(m_xCfg, css::uno::UNO_QUERY_THROW);
xBroadcaster->addChangesListener(static_cast< css::util::XChangesListener* >(this));
}
catch(const css::uno::RuntimeException& exRun)
{ throw exRun; }
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: acceleratorconfiguration.hxx,v $
* $Revision: 1.6 $
* $Revision: 1.5.300.9 $
*
* This file is part of OpenOffice.org.
*
@@ -45,24 +45,26 @@
//__________________________________________
// interface includes
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/lang/XTypeProvider.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/ui/XAcceleratorConfiguration.hpp>
#include <com/sun/star/ui/XUIConfiguration.hpp>
#include <com/sun/star/ui/XUIConfigurationPersistence.hpp>
#ifndef _COM_SUN_STAR_UI_XUICONFIGURATIONSTORAGE_HDL_
#include <com/sun/star/ui/XUIConfigurationStorage.hpp>
#endif
#include <com/sun/star/io/XStream.hpp>
#include <com/sun/star/io/XInputStream.hpp>
#include <com/sun/star/io/XOutputStream.hpp>
#include <com/sun/star/util/XChangesListener.hpp>
// TODO use XPresetHandler interface instead if available
#include <com/sun/star/form/XReset.hpp>
//__________________________________________
// other includes
#include <cppuhelper/propshlp.hxx>
#include <cppuhelper/weak.hxx>
#include <comphelper/locale.hxx>
@@ -71,6 +73,16 @@
namespace framework
{
//-----------------------------------------------
// Accelerators.xcu
static const ::rtl::OUString CFG_ENTRY_ACCELERATORS = ::rtl::OUString::createFromAscii("org.openoffice.Office.Accelerators");
static const ::rtl::OUString CFG_ENTRY_PRIMARY = ::rtl::OUString::createFromAscii("PrimaryKeys");
static const ::rtl::OUString CFG_ENTRY_SECONDARY = ::rtl::OUString::createFromAscii("SecondaryKeys");
static const ::rtl::OUString CFG_ENTRY_GLOBAL = ::rtl::OUString::createFromAscii("Global");
static const ::rtl::OUString CFG_ENTRY_MODULES = ::rtl::OUString::createFromAscii("Modules");
static const ::rtl::OUString CFG_PROP_COMMAND = ::rtl::OUString::createFromAscii("Command");
/** "global" type to make accelerator presets unique, so they can be used
in combination with the salhelper::SingletonRef mechanism! */
@@ -80,14 +92,14 @@ typedef PresetHandler AcceleratorPresets;
/**
implements a read/write access to the accelerator configuration.
*/
class AcceleratorConfiguration : protected ThreadHelpBase // attention! Must be the first base class to guarentee right initialize lock ...
, public IStorageListener
, public ::cppu::OWeakObject
, public css::lang::XTypeProvider
, public css::form::XReset // TODO use XPresetHandler instead if available
, public css::ui::XAcceleratorConfiguration // => css::ui::XUIConfigurationPersistence
// css::ui::XUIConfigurationStorage
// css::ui::XUIConfiguration
class XMLBasedAcceleratorConfiguration : protected ThreadHelpBase // attention! Must be the first base class to guarentee right initialize lock ...
, public IStorageListener
, public ::cppu::OWeakObject
, public css::lang::XTypeProvider
, public css::form::XReset // TODO use XPresetHandler instead if available
, public css::ui::XAcceleratorConfiguration // => css::ui::XUIConfigurationPersistence
// css::ui::XUIConfigurationStorage
// css::ui::XUIConfiguration
{
//______________________________________
// member
@@ -96,15 +108,15 @@ class AcceleratorConfiguration : protected ThreadHelpBase
//---------------------------------------
/** the global uno service manager.
Must be used to create own needed services. */
Must be used to create own needed services. */
css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR;
//---------------------------------------
/** used to:
i ) copy configuration files from the share to the user layer
ii ) provide access to these config files
iii) cache all sub storages on the path from the top to the bottom(!)
iv ) provide commit for changes. */
i ) copy configuration files from the share to the user layer
ii ) provide access to these config files
iii) cache all sub storages on the path from the top to the bottom(!)
iv ) provide commit for changes. */
PresetHandler m_aPresetHandler;
//---------------------------------------
@@ -115,16 +127,16 @@ class AcceleratorConfiguration : protected ThreadHelpBase
/** used to implement the copy on write pattern! */
AcceleratorCache* m_pWriteCache;
//______________________________________
// native interface!
//______________________________________
// native interface!
public:
AcceleratorConfiguration( const css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR );
virtual ~AcceleratorConfiguration( );
XMLBasedAcceleratorConfiguration( const css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR );
virtual ~XMLBasedAcceleratorConfiguration( );
//______________________________________
// uno interface!
//______________________________________
// uno interface!
public:
@@ -138,43 +150,43 @@ class AcceleratorConfiguration : protected ThreadHelpBase
virtual ::rtl::OUString SAL_CALL getCommandByKeyEvent(const css::awt::KeyEvent& aKeyEvent)
throw(css::container::NoSuchElementException,
css::uno::RuntimeException );
css::uno::RuntimeException );
virtual void SAL_CALL setKeyEvent(const css::awt::KeyEvent& aKeyEvent,
const ::rtl::OUString& sCommand )
const ::rtl::OUString& sCommand )
throw(css::lang::IllegalArgumentException,
css::uno::RuntimeException );
css::uno::RuntimeException );
virtual void SAL_CALL removeKeyEvent(const css::awt::KeyEvent& aKeyEvent)
throw(css::container::NoSuchElementException,
css::uno::RuntimeException );
css::uno::RuntimeException );
virtual css::uno::Sequence< css::awt::KeyEvent > SAL_CALL getKeyEventsByCommand(const ::rtl::OUString& sCommand)
throw(css::lang::IllegalArgumentException ,
css::container::NoSuchElementException,
css::uno::RuntimeException );
css::container::NoSuchElementException,
css::uno::RuntimeException );
virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPreferredKeyEventsForCommandList(const css::uno::Sequence< ::rtl::OUString >& lCommandList)
throw(css::lang::IllegalArgumentException ,
css::uno::RuntimeException );
css::uno::RuntimeException );
virtual void SAL_CALL removeCommandFromAllKeyEvents(const ::rtl::OUString& sCommand)
throw(css::lang::IllegalArgumentException ,
css::container::NoSuchElementException,
css::uno::RuntimeException );
css::container::NoSuchElementException,
css::uno::RuntimeException );
// XUIConfigurationPersistence
virtual void SAL_CALL reload()
throw(css::uno::Exception ,
css::uno::RuntimeException);
css::uno::RuntimeException);
virtual void SAL_CALL store()
throw(css::uno::Exception ,
css::uno::RuntimeException);
css::uno::RuntimeException);
virtual void SAL_CALL storeToStorage(const css::uno::Reference< css::embed::XStorage >& xStorage)
throw(css::uno::Exception ,
css::uno::RuntimeException);
css::uno::RuntimeException);
virtual ::sal_Bool SAL_CALL isModified()
throw(css::uno::RuntimeException);
@@ -210,91 +222,252 @@ class AcceleratorConfiguration : protected ThreadHelpBase
// IStorageListener
virtual void changesOccured(const ::rtl::OUString& sPath);
//______________________________________
// helper for derived classes
//______________________________________
// helper for derived classes
protected:
//---------------------------------------
/** @short return the current office locale.
@descr We does not cache this value, because we are not listen
for changes on the configuration layer ...
@descr We does not cache this value, because we are not listen
for changes on the configuration layer ...
@return ::comphelper::Locale
The current office locale.
*/
@return ::comphelper::Locale
The current office locale.
*/
::comphelper::Locale impl_ts_getLocale() const;
//______________________________________
// helper
//______________________________________
// helper
private:
//---------------------------------------
/** @short load a configuration set, using the given stream.
@param xStream
provides the XML structure as stream.
*/
@param xStream
provides the XML structure as stream.
*/
void impl_ts_load(const css::uno::Reference< css::io::XInputStream >& xStream);
//---------------------------------------
/** @short save a configuration set, using the given stream.
@param xStream
the XML structure can be written there.
*/
@param xStream
the XML structure can be written there.
*/
void impl_ts_save(const css::uno::Reference< css::io::XOutputStream >& xStream);
//---------------------------------------
/** @short try to locate and open a sub storage.
@descr It search at the root storage for the specified
sub storage. If it exists - it will be opened.
By default this method tries to open the storage
for reading. But the calli can request a writeable
storage.
@descr It search at the root storage for the specified
sub storage. If it exists - it will be opened.
By default this method tries to open the storage
for reading. But the calli can request a writeable
storage.
@param xRooStorage
used to locate the sub storage.
@param xRooStorage
used to locate the sub storage.
@param sSubStorage
relativ path of the sub storage.
@param sSubStorage
relativ path of the sub storage.
@param bOutStream
force open of the sub storage in
write mode - instead of read mode, which
is the default.
@param bOutStream
force open of the sub storage in
write mode - instead of read mode, which
is the default.
@return [XInterface]
will be a css::io::XInpoutStream or a css::io::XOutputStream.
Depends from the parameter bWriteable!
*/
@return [XInterface]
will be a css::io::XInpoutStream or a css::io::XOutputStream.
Depends from the parameter bWriteable!
*/
css::uno::Reference< css::uno::XInterface > impl_ts_openSubStorage(const css::uno::Reference< css::embed::XStorage >& xRootStorage,
const ::rtl::OUString& sSubStorage ,
sal_Bool bOutStream );
const ::rtl::OUString& sSubStorage ,
sal_Bool bOutStream );
//---------------------------------------
/** @short returns a reference to one of our internal cache members.
@descr We implement the copy-on-write pattern. Doing so
we know two caches internaly. The second one is used
only, if the container was changed.
@descr We implement the copy-on-write pattern. Doing so
we know two caches internaly. The second one is used
only, if the container was changed.
This method here returns access to one of these
caches - depending on the change state of this
configuration service.
This method here returns access to one of these
caches - depending on the change state of this
configuration service.
@param bWriteAccessRequested
if the outside code whish to change the container
it must call this method with "TRUE". So the internal
cache can be prepared for that (means copy-on-write ...).
@param bWriteAccessRequested
if the outside code whish to change the container
it must call this method with "TRUE". So the internal
cache can be prepared for that (means copy-on-write ...).
@return [AcceleratorCache]
c++ reference(!) to one of our internal caches.
*/
@return [AcceleratorCache]
c++ reference(!) to one of our internal caches.
*/
AcceleratorCache& impl_getCFG(sal_Bool bWriteAccessRequested = sal_False);
};
class XCUBasedAcceleratorConfiguration : protected ThreadHelpBase // attention! Must be the first base class to guarentee right initialize lock ...
, public ::cppu::OWeakObject
, public css::lang::XTypeProvider
, public css::util::XChangesListener
, public css::form::XReset // TODO use XPresetHandler instead if available
, public css::ui::XAcceleratorConfiguration // => css::ui::XUIConfigurationPersistence
// css::ui::XUIConfigurationStorage
// css::ui::XUIConfiguration
{
//______________________________________
// member
protected:
//---------------------------------------
/** the global uno service manager.
Must be used to create own needed services. */
css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR;
css::uno::Reference< css::container::XNameAccess > m_xCfg;
AcceleratorCache m_aPrimaryReadCache;
AcceleratorCache m_aSecondaryReadCache;
AcceleratorCache* m_pPrimaryWriteCache;
AcceleratorCache* m_pSecondaryWriteCache;
::rtl::OUString m_sGlobalOrModules;
::rtl::OUString m_sModuleCFG;
//______________________________________
// native interface!
public:
XCUBasedAcceleratorConfiguration( const css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR );
virtual ~XCUBasedAcceleratorConfiguration( );
//______________________________________
// uno interface!
public:
// XInterface, XTypeProvider
FWK_DECLARE_XINTERFACE
FWK_DECLARE_XTYPEPROVIDER
// XAcceleratorConfiguration
virtual css::uno::Sequence< css::awt::KeyEvent > SAL_CALL getAllKeyEvents()
throw(css::uno::RuntimeException);
virtual ::rtl::OUString SAL_CALL getCommandByKeyEvent(const css::awt::KeyEvent& aKeyEvent)
throw(css::container::NoSuchElementException,
css::uno::RuntimeException );
virtual void SAL_CALL setKeyEvent(const css::awt::KeyEvent& aKeyEvent,
const ::rtl::OUString& sCommand )
throw(css::lang::IllegalArgumentException,
css::uno::RuntimeException );
virtual void SAL_CALL removeKeyEvent(const css::awt::KeyEvent& aKeyEvent)
throw(css::container::NoSuchElementException,
css::uno::RuntimeException );
virtual css::uno::Sequence< css::awt::KeyEvent > SAL_CALL getKeyEventsByCommand(const ::rtl::OUString& sCommand)
throw(css::lang::IllegalArgumentException ,
css::container::NoSuchElementException,
css::uno::RuntimeException );
virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPreferredKeyEventsForCommandList(const css::uno::Sequence< ::rtl::OUString >& lCommandList)
throw(css::lang::IllegalArgumentException ,
css::uno::RuntimeException );
virtual void SAL_CALL removeCommandFromAllKeyEvents(const ::rtl::OUString& sCommand)
throw(css::lang::IllegalArgumentException ,
css::container::NoSuchElementException,
css::uno::RuntimeException );
// XUIConfigurationPersistence
virtual void SAL_CALL reload()
throw(css::uno::Exception ,
css::uno::RuntimeException);
virtual void SAL_CALL store()
throw(css::uno::Exception ,
css::uno::RuntimeException);
virtual void SAL_CALL storeToStorage(const css::uno::Reference< css::embed::XStorage >& xStorage)
throw(css::uno::Exception ,
css::uno::RuntimeException);
virtual ::sal_Bool SAL_CALL isModified()
throw(css::uno::RuntimeException);
virtual ::sal_Bool SAL_CALL isReadOnly()
throw(css::uno::RuntimeException);
// XUIConfigurationStorage
virtual void SAL_CALL setStorage(const css::uno::Reference< css::embed::XStorage >& xStorage)
throw(css::uno::RuntimeException);
virtual ::sal_Bool SAL_CALL hasStorage()
throw(css::uno::RuntimeException);
// XUIConfiguration
virtual void SAL_CALL addConfigurationListener(const css::uno::Reference< css::ui::XUIConfigurationListener >& xListener)
throw(css::uno::RuntimeException);
virtual void SAL_CALL removeConfigurationListener(const css::uno::Reference< css::ui::XUIConfigurationListener >& xListener)
throw(css::uno::RuntimeException);
// XReset
// TODO use XPresetHandler instead if available
virtual void SAL_CALL reset()
throw(css::uno::RuntimeException);
virtual void SAL_CALL addResetListener(const css::uno::Reference< css::form::XResetListener >& xListener)
throw(css::uno::RuntimeException);
virtual void SAL_CALL removeResetListener(const css::uno::Reference< css::form::XResetListener >& xListener)
throw(css::uno::RuntimeException);
// css.util.XChangesListener
virtual void SAL_CALL changesOccurred(const css::util::ChangesEvent& aEvent)
throw(css::uno::RuntimeException);
// css.lang.XEventListener
virtual void SAL_CALL disposing(const css::lang::EventObject& aEvent)
throw(css::uno::RuntimeException);
//______________________________________
// helper for derived classes
protected:
//---------------------------------------
/** @short return the current office locale.
@descr We does not cache this value, because we are not listen
for changes on the configuration layer ...
@return ::comphelper::Locale
The current office locale.
*/
::comphelper::Locale impl_ts_getLocale() const;
//______________________________________
// helper
private:
void impl_ts_load(sal_Bool bPreferred, const css::uno::Reference< css::container::XNameAccess >& xCfg);
void impl_ts_save(sal_Bool bPreferred, const css::uno::Reference< css::container::XNameAccess >& xCfg);
void insertKeyToConfiguration(const css::awt::KeyEvent& aKeyEvent, const ::rtl::OUString& sCommand, const sal_Bool bPreferred);
void removeKeyFromConfiguration(const css::awt::KeyEvent& aKeyEvent, const sal_Bool bPreferred);
void reloadChanged(const ::rtl::OUString& sPrimarySecondary, const ::rtl::OUString& sGlobalModules, const ::rtl::OUString& sModule, const ::rtl::OUString& sKey);
AcceleratorCache& impl_getCFG(sal_Bool bPreferred, sal_Bool bWriteAccessRequested = sal_False);
};
} // namespace framework
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: documentacceleratorconfiguration.hxx,v $
* $Revision: 1.8 $
* $Revision: 1.7.300.4 $
*
* This file is part of OpenOffice.org.
*
@@ -35,11 +35,10 @@
// own includes
#include <accelerators/acceleratorconfiguration.hxx>
#include <accelerators/istoragelistener.hxx>
#include <accelerators/presethandler.hxx>
#ifndef __FRAMEWORK_MACROS_XINTERFACE_HXX_
#include <macros/interface.hxx>
#endif
#include <macros/xinterface.hxx>
#include <macros/xtypeprovider.hxx>
#include <macros/xserviceinfo.hxx>
@@ -62,7 +61,7 @@ namespace framework
implements a read/write access to a document
based accelerator configuration.
*/
class DocumentAcceleratorConfiguration : public AcceleratorConfiguration
class DocumentAcceleratorConfiguration : public XMLBasedAcceleratorConfiguration
, public css::lang::XServiceInfo
, public css::lang::XInitialization
// , public css::ui::XUIConfigurationStorage
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: globalacceleratorconfiguration.hxx,v $
* $Revision: 1.5 $
* $Revision: 1.4.300.4 $
*
* This file is part of OpenOffice.org.
*
@@ -46,6 +46,10 @@
//__________________________________________
// interface includes
#ifndef _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_
#include <com/sun/star/lang/XInitialization.hpp>
#endif
//__________________________________________
// other includes
@@ -60,8 +64,9 @@ namespace framework
implements a read/write access to the global
accelerator configuration.
*/
class GlobalAcceleratorConfiguration : public AcceleratorConfiguration
class GlobalAcceleratorConfiguration : public XCUBasedAcceleratorConfiguration
, public css::lang::XServiceInfo
, public css::lang::XInitialization
{
//______________________________________
// interface
@@ -85,11 +90,18 @@ class GlobalAcceleratorConfiguration : public AcceleratorConfiguration
FWK_DECLARE_XTYPEPROVIDER
DECLARE_XSERVICEINFO
// XInitialization
virtual void SAL_CALL initialize(const css::uno::Sequence< css::uno::Any >& lArguments)
throw (css::uno::Exception ,
css::uno::RuntimeException);
//______________________________________
// helper
private:
::rtl::OUString m_sLocale;
//----------------------------------
/** read all data into the cache. */
void impl_ts_fillCache();
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: moduleacceleratorconfiguration.hxx,v $
* $Revision: 1.5 $
* $Revision: 1.4.300.4 $
*
* This file is part of OpenOffice.org.
*
@@ -61,7 +61,7 @@ namespace framework
implements a read/write access to a module
dependend accelerator configuration.
*/
class ModuleAcceleratorConfiguration : public AcceleratorConfiguration
class ModuleAcceleratorConfiguration : public XCUBasedAcceleratorConfiguration
, public css::lang::XServiceInfo
, public css::lang::XInitialization
{
@@ -74,6 +74,7 @@ class ModuleAcceleratorConfiguration : public AcceleratorConfiguration
/** identify the application module, where this accelerator
configuration cache should work on. */
::rtl::OUString m_sModule;
::rtl::OUString m_sLocale;
//______________________________________
// interface
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: moduleuiconfigurationmanager.cxx,v $
* $Revision: 1.20 $
* $Revision: 1.19.208.2 $
*
* This file is part of OpenOffice.org.
*
@@ -1379,7 +1379,7 @@ Reference< XInterface > SAL_CALL ModuleUIConfigurationManager::getShortCutManage
{
ResetableGuard aGuard( m_aLock );
Reference< XMultiServiceFactory > xSMGR = m_xServiceManager;
::rtl::OUString aModule = m_aModuleShortName;
::rtl::OUString aModule = /*m_aModuleShortName*/m_aModuleIdentifier;
aGuard.unlock();
Reference< XInterface > xManager = xSMGR->createInstance(SERVICENAME_MODULEACCELERATORCONFIGURATION);
File diff suppressed because it is too large Load Diff
@@ -8,7 +8,7 @@
#
# $RCSfile: makefile.mk,v $
#
# $Revision: 1.25 $
# $Revision: 1.19.112.4 $
#
# This file is part of OpenOffice.org.
#
@@ -40,6 +40,7 @@ PACKAGE=org.openoffice.Office
# --- Targets ------------------------------------------------------
XCUFILES= \
Accelerators.xcu \
Calc.xcu \
Canvas.xcu \
Common.xcu \
@@ -97,6 +98,7 @@ MODULEFILES= \
LOCALIZEDFILES= \
Accelerators.xcu \
Common.xcu \
SFX.xcu \
DataAccess.xcu \
@@ -0,0 +1,89 @@
<?xml version="1.0"?>
<!--***********************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: Accelerators.xcs,v $
*
* $Revision: 1.1.2.6 $
*
* last change: $Author: wuy $ $Date: 2008/08/06 08:13:26 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
*
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2005 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
************************************************************************ -->
<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:name="Accelerators" oor:package="org.openoffice.Office" xml:lang="en-US">
<info>
<desc>Configuration of Accelerators replacing the old not XCU-based configuration</desc>
</info>
<templates>
<group oor:name="Key">
<info>
<desc>document the Key format</desc>
</info>
<prop oor:name="Command" oor:type="xs:string" oor:localized="true">
<info>
<desc>e.g..uno:About</desc>
</info>
</prop>
</group>
<set oor:name="Module" oor:node-type="Key">
<info>
<desc>point to a module of OOo</desc>
</info>
</set>
</templates>
<component>
<group oor:name="PrimaryKeys">
<info>
<desc>contains the preferred keys</desc>
</info>
<set oor:name="Global" oor:node-type="Key">
<info>
<desc>Defined as key-values pairs</desc>
</info>
</set>
<set oor:name="Modules" oor:node-type="Module">
<info>
<desc>containing the modules of OOo, defined as key-values pairs</desc>
</info>
</set>
</group>
<group oor:name="SecondaryKeys">
<info>
<desc>contains the secondary keys</desc>
</info>
<set oor:name="Global" oor:node-type="Key">
<info>
<desc>Defined as key-values pairs</desc>
</info>
</set>
<set oor:name="Modules" oor:node-type="Module">
<info>
<desc>containing the modules of OOo, defined as key-values pairs</desc>
</info>
</set>
</group>
</component>
</oor:component-schema>
@@ -8,7 +8,7 @@
#
# $RCSfile: makefile.mk,v $
#
# $Revision: 1.20 $
# $Revision: 1.18.112.3 $
#
# This file is part of OpenOffice.org.
#
@@ -40,6 +40,7 @@ PACKAGE=org.openoffice.Office
# --- Targets ------------------------------------------------------
XCSFILES= \
Accelerators.xcs \
Addons.xcs \
Calc.xcs \
CalcAddIns.xcs \