Mercurial > hg > accesspd
diff java/src/uk/ac/qmul/eecs/ccmi/gui/ResourceFactory.java @ 0:78b7fc5391a2
first import, outcome of NIME 2014 hackaton
author | Fiore Martin <f.martin@qmul.ac.uk> |
---|---|
date | Tue, 08 Jul 2014 16:28:59 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/src/uk/ac/qmul/eecs/ccmi/gui/ResourceFactory.java Tue Jul 08 16:28:59 2014 +0100 @@ -0,0 +1,112 @@ +/* + CCmI Editor - A Collaborative Cross-Modal Diagram Editing Tool + + Copyright (C) 2002 Cay S. Horstmann (http://horstmann.com) + Copyright (C) 2011 Queen Mary University of London (http://ccmi.eecs.qmul.ac.uk/) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +package uk.ac.qmul.eecs.ccmi.gui; + +import java.awt.event.ActionListener; +import java.beans.EventHandler; +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.KeyStroke; + +/** + * A factory class for swing components creation support. + * + * Components that are created via this class are, in turn created by {@code SpeechMenuFactory} methods. + * This class handles the labelling and other menu properties (such as accelerators) + * using the {@code ResourceBundle} passed as argument to the constructor. + */ +class ResourceFactory{ + public ResourceFactory(ResourceBundle bundle){ + this.bundle = bundle; + } + + public JMenu createMenu(String prefix){ + String text = bundle.getString(prefix + ".text"); + JMenu menu = SpeechMenuFactory.getMenu(text); + try{ + String mnemonic = bundle.getString(prefix + ".mnemonic"); + menu.setMnemonic(mnemonic.charAt(0)); + }catch (MissingResourceException exception){ + // ok not to set mnemonic + } + + try{ + String tooltip = bundle.getString(prefix + ".tooltip"); + menu.setToolTipText(tooltip); + } + catch (MissingResourceException exception){ + // ok not to set tooltip + } + return menu; + } + + public JMenuItem createMenuItem(String prefix, + Object target, String methodName){ + return createMenuItem(prefix, + (ActionListener) EventHandler.create( + ActionListener.class, target, methodName)); + } + + public JMenuItem createMenuItem(String prefix, + ActionListener listener){ + String text = bundle.getString(prefix + ".text"); + JMenuItem menuItem = SpeechMenuFactory.getMenuItem(text); + return configure(menuItem, prefix, listener); + } + + public JMenuItem createCheckBoxMenuItem(String prefix, + ActionListener listener){ + String text = bundle.getString(prefix + ".text"); + JMenuItem menuItem = SpeechMenuFactory.getJCheckBoxMenuItem(text); + return configure(menuItem, prefix, listener); + } + + private JMenuItem configure(JMenuItem menuItem, + String prefix, ActionListener listener){ + menuItem.addActionListener(listener); + try{ + String mnemonic = bundle.getString(prefix + ".mnemonic"); + menuItem.setMnemonic(mnemonic.charAt(0)); + }catch (MissingResourceException exception){ + // ok not to set mnemonic + } + + try{ + String accelerator = bundle.getString(prefix + ".accelerator"); + menuItem.setAccelerator(KeyStroke.getKeyStroke(accelerator)); + }catch (MissingResourceException exception){ + // ok not to set accelerator + } + + try{ + String tooltip = bundle.getString(prefix + ".tooltip"); + menuItem.setToolTipText(tooltip); + }catch (MissingResourceException exception){ + // ok not to set tooltip + } + return menuItem; + } + + private ResourceBundle bundle; +}