summaryrefslogtreecommitdiff
path: root/framework/source/inc/accelerators
diff options
context:
space:
mode:
authorRĂ¼diger Timm <rt@openoffice.org>2004-09-20 09:06:54 +0000
committerRĂ¼diger Timm <rt@openoffice.org>2004-09-20 09:06:54 +0000
commita5b548a9b16b504ac0e47bd03d2b4a92f1b3deb8 (patch)
tree5aee5f6fbc895b302546c3b9475a34a152084cff /framework/source/inc/accelerators
parent825434f9b3a20d15edb81301ddb243be53a60945 (diff)
INTEGRATION: CWS keyconfig01 (1.1.2); FILE ADDED
2004/06/04 09:32:44 as 1.1.2.1: #i29863# first revision
Diffstat (limited to 'framework/source/inc/accelerators')
-rw-r--r--framework/source/inc/accelerators/acceleratorcache.hxx232
1 files changed, 232 insertions, 0 deletions
diff --git a/framework/source/inc/accelerators/acceleratorcache.hxx b/framework/source/inc/accelerators/acceleratorcache.hxx
new file mode 100644
index 0000000000..f79c6c7c30
--- /dev/null
+++ b/framework/source/inc/accelerators/acceleratorcache.hxx
@@ -0,0 +1,232 @@
+/*************************************************************************
+ *
+ * $RCSfile: acceleratorcache.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: rt $ $Date: 2004-09-20 10:06:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef __FRAMEWORK_ACCELERATORS_ACCELERATORCACHE_HXX_
+#define __FRAMEWORK_ACCELERATORS_ACCELERATORCACHE_HXX_
+
+//__________________________________________
+// own includes
+
+#ifndef __FRAMEWORK_THREADHELP_THREADHELPBASE_HXX_
+#include <threadhelp/threadhelpbase.hxx>
+#endif
+
+#ifndef __FRAMEWORK_GENERAL_H_
+#include <general.h>
+#endif
+
+#ifndef __FRAMEWORK_STDTYPES_H_
+#include <stdtypes.h>
+#endif
+
+//__________________________________________
+// interface includes
+
+#ifndef __COM_SUN_STAR_AWT_KEYEVENT_HPP_
+#include <com/sun/star/awt/KeyEvent.hpp>
+#endif
+
+//__________________________________________
+// other includes
+
+#ifndef _COMPHELPER_SEQUENCEASVECTOR_HXX_
+#include <comphelper/sequenceasvector.hxx>
+#endif
+
+//__________________________________________
+// definition
+
+namespace framework
+{
+
+//__________________________________________
+/**
+ @short implements a cache for any accelerator configuration.
+
+ @descr Its implemented threadsafe, supports copy-on-write pattern
+ and a flush mechansim to support concurrent access to the same
+ configuration.
+
+ copy-on-write ... How? Do the following:
+ */
+class AcceleratorCache : public ThreadHelpBase // attention! Must be the first base class to guarentee right initialize lock ...
+{
+ //______________________________________
+ // const, types
+
+ public:
+
+ //---------------------------------------
+ /** TODO document me
+ commands -> keys
+ */
+ typedef ::comphelper::SequenceAsVector< css::awt::KeyEvent > TKeyList;
+ typedef BaseHash< TKeyList > TCommand2Keys;
+
+ //---------------------------------------
+ /** TODO document me
+ keys -> commands
+ */
+ typedef ::std::hash_map< css::awt::KeyEvent ,
+ ::rtl::OUString ,
+ KeyEventHashCode ,
+ KeyEventEqualsFunc > TKey2Commands;
+
+ //______________________________________
+ // member
+
+ private:
+
+ //---------------------------------------
+ /** map commands to keys in relation 1:n.
+ First key is interpreted as preferred one! */
+ TCommand2Keys m_lCommand2Keys;
+
+ //---------------------------------------
+ /** map keys to commands in relation 1:1. */
+ TKey2Commands m_lKey2Commands;
+
+ //______________________________________
+ // interface
+
+ public:
+
+ //---------------------------------------
+ /** @short creates a new - but empty - cache instance. */
+ AcceleratorCache();
+
+ //---------------------------------------
+ /** @short make a copy of this cache.
+ @descr Used for the copy-on-write feature.
+ */
+ AcceleratorCache(const AcceleratorCache& rCopy);
+
+ //---------------------------------------
+ /** @short does nothing real. */
+ virtual ~AcceleratorCache();
+
+ //---------------------------------------
+ /** @short write changes back to the original container.
+
+ @param rCopy
+ the (changed!) copy, which should be written
+ back to this original container.
+ */
+ virtual void takeOver(const AcceleratorCache& rCopy);
+
+ //---------------------------------------
+ /** TODO document me */
+ virtual AcceleratorCache& operator=(const AcceleratorCache& rCopy);
+
+ //---------------------------------------
+ /** @short checks if the specified key exists.
+
+ @param aKey
+ the key, which should be checked.
+
+ @return [bool]
+ TRUE if the speicfied key exists inside this container.
+ */
+ virtual sal_Bool hasKey(const css::awt::KeyEvent& aKey) const;
+ virtual sal_Bool hasCommand(const ::rtl::OUString& sCommand) const;
+
+ //---------------------------------------
+ /** TODO document me */
+ virtual TKeyList getAllKeys() const;
+
+ //---------------------------------------
+ /** @short add a new or change an existing key-command pair
+ of this container.
+
+ @param aKey
+ describe the key.
+
+ @param sCommand
+ describe the command.
+ */
+ virtual void setKeyCommandPair(const css::awt::KeyEvent& aKey ,
+ const ::rtl::OUString& sCommand);
+
+ //---------------------------------------
+ /** @short returns the list of keys, which are registered
+ for this command.
+
+ @param sCommand
+ describe the command.
+
+ @return [TKeyList]
+ the list of registered keys. Can be empty!
+ */
+ virtual TKeyList getKeysByCommand(const ::rtl::OUString& sCommand) const;
+
+ //---------------------------------------
+ /** TODO */
+ virtual ::rtl::OUString getCommandByKey(const css::awt::KeyEvent& aKey) const;
+
+ //---------------------------------------
+ /** TODO */
+ virtual void removeKey(const css::awt::KeyEvent& aKey);
+ virtual void removeCommand(const ::rtl::OUString& sCommand);
+};
+
+} // namespace framework
+
+#endif // __FRAMEWORK_ACCELERATORS_ACCELERATORCACHE_HXX_