[jsword-svn] r2085 - in trunk/common-swing/src/main: java/org/crosswire/common/config/swing java/org/crosswire/common/progress/swing java/org/crosswire/common/swing java/org/crosswire/common/swing/desktop resources/org/crosswire/common/config/swing resources/org/crosswire/common/progress resources/org/crosswire/common/swing resources/org/crosswire/common/swing/desktop

dmsmith at crosswire.org dmsmith at crosswire.org
Wed Mar 2 20:41:41 MST 2011


Author: dmsmith
Date: 2011-03-02 20:41:41 -0700 (Wed, 02 Mar 2011)
New Revision: 2085

Added:
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_zh.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_zh_CN.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_tr.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_zh.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_zh_CN.properties
Removed:
   trunk/common-swing/src/main/java/org/crosswire/common/config/swing/UserMsg.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/UserMsg.java
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/BooleanField.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/ButtonPane.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_de.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_fa.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_vi.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_zh.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_zh_CN.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/PathField.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/PathField_de.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/StringArrayField.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/progress/swing/
Modified:
   trunk/common-swing/src/main/java/org/crosswire/common/config/swing/AdvancedConfigEditor.java
   trunk/common-swing/src/main/java/org/crosswire/common/config/swing/BooleanField.java
   trunk/common-swing/src/main/java/org/crosswire/common/config/swing/ButtonPane.java
   trunk/common-swing/src/main/java/org/crosswire/common/config/swing/ConfigEditorFactory.java
   trunk/common-swing/src/main/java/org/crosswire/common/config/swing/FileField.java
   trunk/common-swing/src/main/java/org/crosswire/common/config/swing/PathField.java
   trunk/common-swing/src/main/java/org/crosswire/common/config/swing/StringArrayField.java
   trunk/common-swing/src/main/java/org/crosswire/common/config/swing/TreeConfigEditor.java
   trunk/common-swing/src/main/java/org/crosswire/common/progress/swing/JobsProgressBar.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/ActionFactory.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/CWAction.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/CWOptionPane.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/ExceptionPane.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/FontChooser.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/GuiUtil.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/QuickHelpDialog.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/UserMsg.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/AbstractViewLayout.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/LayoutType.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/TDIViewLayout.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/ToolBar.java
   trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/ViewManager.java
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_de.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_fa.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_vi.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_de.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_fa.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_in.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_vi.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_de.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_fa.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_in.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_vi.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_zh.properties
   trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_zh_CN.properties
Log:
JS-104 Migration to fewer translation files. Now actions are built explicitly. Many changes to ActionFactory. Some not backward compatible.

Now the message files can be merged.

Modified: trunk/common-swing/src/main/java/org/crosswire/common/config/swing/AdvancedConfigEditor.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/config/swing/AdvancedConfigEditor.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/config/swing/AdvancedConfigEditor.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -39,6 +39,7 @@
 
 import org.crosswire.common.config.Choice;
 import org.crosswire.common.swing.CWScrollPane;
+import org.crosswire.common.swing.UserMsg;
 
 /**
  * A further refinement of a Tree Configuration Editor

Modified: trunk/common-swing/src/main/java/org/crosswire/common/config/swing/BooleanField.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/config/swing/BooleanField.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/config/swing/BooleanField.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -30,6 +30,7 @@
 
 import org.crosswire.common.config.Choice;
 import org.crosswire.common.swing.ActionFactory;
+import org.crosswire.common.swing.UserMsg;
 import org.crosswire.common.util.Convert;
 
 /**
@@ -44,10 +45,10 @@
      * Give the values list (true/false) to the ComboBox
      */
     public BooleanField() {
-        ActionFactory actions = new ActionFactory(BooleanField.class, this);
+        ActionFactory actions = new ActionFactory(this);
 
-        on = new JRadioButton(actions.getAction(YES));
-        off = new JRadioButton(actions.getAction(NO));
+        on = new JRadioButton(actions.addAction("Yes", UserMsg.gettext("Yes")));
+        off = new JRadioButton(actions.addAction("No", UserMsg.gettext("No")));
 
         ButtonGroup group = new ButtonGroup();
         group.add(on);
@@ -105,9 +106,6 @@
         return this;
     }
 
-    private static final String YES = "Yes";
-    private static final String NO = "No";
-
     /**
      * The 'on' button
      */

Modified: trunk/common-swing/src/main/java/org/crosswire/common/config/swing/ButtonPane.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/config/swing/ButtonPane.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/config/swing/ButtonPane.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -32,6 +32,7 @@
 
 import org.crosswire.common.swing.ActionFactory;
 import org.crosswire.common.swing.EdgeBorder;
+import org.crosswire.common.swing.UserMsg;
 
 /**
  * A pane that contains ok, cancel and apply buttons.
@@ -41,9 +42,6 @@
  * @author Joe Walker [joe at eireneh dot com]
  */
 public class ButtonPane extends JPanel {
-    private static final String OK = "OK";
-    private static final String CANCEL = "Cancel";
-    private static final String APPLY = "Apply";
 
     /**
      * Simple ctor
@@ -57,7 +55,7 @@
      * GUI init.
      */
     private void init() {
-        actions = new ActionFactory(ButtonPane.class, this);
+        actions = new ActionFactory(this);
 
         // PENDING: find some way to do default buttons
         // dialog.getRootPane().setDefaultButton(ok);
@@ -67,9 +65,9 @@
 
         buttons.setLayout(new GridLayout(1, 2, 10, 10));
         buttons.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
-        buttons.add(new JButton(actions.getAction(OK)));
-        buttons.add(new JButton(actions.getAction(CANCEL)));
-        buttons.add(new JButton(actions.getAction(APPLY)));
+        buttons.add(new JButton(actions.addAction("OK", UserMsg.gettext("OK"))));
+        buttons.add(new JButton(actions.addAction("Cancel", UserMsg.gettext("Cancel"))));
+        buttons.add(new JButton(actions.addAction("Apply", UserMsg.gettext("Apply"))));
 
         this.setBorder(new EdgeBorder(SwingConstants.NORTH));
         this.setLayout(new BorderLayout(10, 10));

Modified: trunk/common-swing/src/main/java/org/crosswire/common/config/swing/ConfigEditorFactory.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/config/swing/ConfigEditorFactory.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/config/swing/ConfigEditorFactory.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -28,6 +28,7 @@
 import java.net.URI;
 
 import org.crosswire.common.config.Config;
+import org.crosswire.common.swing.UserMsg;
 import org.crosswire.common.util.LucidRuntimeException;
 import org.crosswire.common.util.PluginUtil;
 import org.crosswire.common.util.Reporter;

Modified: trunk/common-swing/src/main/java/org/crosswire/common/config/swing/FileField.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/config/swing/FileField.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/config/swing/FileField.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -31,6 +31,7 @@
 
 import org.crosswire.common.config.Choice;
 import org.crosswire.common.swing.ActionFactory;
+import org.crosswire.common.swing.UserMsg;
 
 /**
  * A Filename selection.
@@ -44,13 +45,13 @@
      * Create a new FileField
      */
     public FileField() {
-        ActionFactory actions = new ActionFactory(FileField.class, this);
+        ActionFactory actions = new ActionFactory(this);
 
         text = new JTextField();
 
         setLayout(new BorderLayout(10, 0));
         add(text, BorderLayout.CENTER);
-        add(new JButton(actions.getAction(BROWSE)), BorderLayout.LINE_END);
+        add(new JButton(actions.addAction("Browse", UserMsg.gettext("Browse")).setTooltip(UserMsg.gettext("Browse for a directory to select."))), BorderLayout.LINE_END);
     }
 
     /**
@@ -101,8 +102,6 @@
         return this;
     }
 
-    private static final String BROWSE = "Browse";
-
     /**
      * The text field
      */

Modified: trunk/common-swing/src/main/java/org/crosswire/common/config/swing/PathField.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/config/swing/PathField.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/config/swing/PathField.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -41,6 +41,7 @@
 import org.crosswire.common.config.Choice;
 import org.crosswire.common.swing.ActionFactory;
 import org.crosswire.common.swing.CWScrollPane;
+import org.crosswire.common.swing.UserMsg;
 import org.crosswire.common.util.Convert;
 
 /**
@@ -60,7 +61,7 @@
         model = new DefaultComboBoxModel();
         list = new JList(model);
 
-        actions = new ActionFactory(PathField.class, this);
+        actions = new ActionFactory(this);
 
         JPanel buttons = new JPanel(new FlowLayout());
 
@@ -70,9 +71,9 @@
 
         JScrollPane scroll = new CWScrollPane(list);
 
-        buttons.add(new JButton(actions.getAction(ADD)));
-        buttons.add(new JButton(actions.getAction(REMOVE)));
-        buttons.add(new JButton(actions.getAction(UPDATE)));
+        buttons.add(new JButton(actions.addAction("Add", UserMsg.gettext("Add"))));
+        buttons.add(new JButton(actions.addAction("Remove", UserMsg.gettext("Remove"))));
+        buttons.add(new JButton(actions.addAction("Update", UserMsg.gettext("Update (path)"))));
 
         setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(5, 5, 5, 5)));
 
@@ -193,14 +194,10 @@
      * @throws ClassNotFoundException
      */
     private void readObject(ObjectInputStream is) throws IOException, ClassNotFoundException {
-        actions = new ActionFactory(PathField.class, this);
+        actions = new ActionFactory(this);
         is.defaultReadObject();
     }
 
-    private static final String ADD = "AddPathEntry";
-    private static final String REMOVE = "RemovePathEntry";
-    private static final String UPDATE = "UpdatePathEntry";
-
     private transient ActionFactory actions;
 
     /**

Modified: trunk/common-swing/src/main/java/org/crosswire/common/config/swing/StringArrayField.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/config/swing/StringArrayField.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/config/swing/StringArrayField.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -48,6 +48,7 @@
 import org.crosswire.common.swing.CWOptionPane;
 import org.crosswire.common.swing.CWScrollPane;
 import org.crosswire.common.swing.GuiUtil;
+import org.crosswire.common.swing.UserMsg;
 import org.crosswire.common.util.Convert;
 
 /**
@@ -64,7 +65,7 @@
      * Create a PropertyHashtableField for editing String arrays.
      */
     public StringArrayField() {
-        actions = new ActionFactory(StringArrayField.class, this);
+        actions = new ActionFactory(this);
 
         list_model = new DefaultComboBoxModel();
         list = new JList(list_model);
@@ -76,9 +77,9 @@
 
         JScrollPane scroll = new CWScrollPane(list);
 
-        buttons.add(new JButton(actions.getAction(ADD)));
-        buttons.add(new JButton(actions.getAction(REMOVE)));
-        buttons.add(new JButton(actions.getAction(UPDATE)));
+        buttons.add(new JButton(actions.addAction("Add", UserMsg.gettext("Add"))));
+        buttons.add(new JButton(actions.addAction("Remove", UserMsg.gettext("Remove"))));
+        buttons.add(new JButton(actions.addAction("Update", UserMsg.gettext("Update"))));
 
         Border title = BorderFactory.createTitledBorder(Msg.COMPONENT_EDITOR.toString());
         Border pad = BorderFactory.createEmptyBorder(5, 5, 5, 5);
@@ -204,7 +205,7 @@
      * @throws ClassNotFoundException
      */
     private void readObject(ObjectInputStream is) throws IOException, ClassNotFoundException {
-        actions = new ActionFactory(StringArrayField.class, this);
+        actions = new ActionFactory(this);
         is.defaultReadObject();
     }
 
@@ -246,10 +247,6 @@
         private static final long serialVersionUID = 3256444715753878326L;
     }
 
-    private static final String ADD = "AddStringEntry";
-    private static final String REMOVE = "RemoveStringEntry";
-    private static final String UPDATE = "UpdateStringEntry";
-
     /**
      * What character do we use to separate strings?
      */

Modified: trunk/common-swing/src/main/java/org/crosswire/common/config/swing/TreeConfigEditor.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/config/swing/TreeConfigEditor.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/config/swing/TreeConfigEditor.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -52,6 +52,7 @@
 import org.crosswire.common.swing.FixedSplitPane;
 import org.crosswire.common.swing.FormPane;
 import org.crosswire.common.swing.GuiUtil;
+import org.crosswire.common.swing.UserMsg;
 
 /**
  * A Configuration Editor that provides a tree for navigating to options.

Deleted: trunk/common-swing/src/main/java/org/crosswire/common/config/swing/UserMsg.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/config/swing/UserMsg.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/config/swing/UserMsg.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,70 +0,0 @@
-/**
- * Distribution License:
- * JSword 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 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 Lesser General Public License for more details.
- *
- * The License is available on the internet at:
- *       http://www.gnu.org/copyleft/lgpl.html
- * or by writing to:
- *      Free Software Foundation, Inc.
- *      59 Temple Place - Suite 330
- *      Boston, MA 02111-1307, USA
- *
- * Copyright: 2005
- *     The copyright to this program is held by it's authors.
- *
- * ID: $Id: Msg.java 1464 2007-07-02 02:34:40Z dmsmith $
- */
-package org.crosswire.common.config.swing;
-
-import org.crosswire.common.util.MsgBase;
-
-/**
- * Compile safe Msg resource settings.
- * 
- * @see gnu.lgpl.License for license details.<br>
- *      The copyright to this program is held by it's authors.
- * @author Joe Walker [joe at eireneh dot com]
- */
-public final class UserMsg extends MsgBase {
-
-    /**
-     * Get the internationalized text, but return key if key is unknown.
-     * 
-     * @param key
-     * @return the internationalized text
-     */
-    public static String gettext(String key) {
-        return msg.lookup(key);
-    }
-
-    /**
-     * Get the internationalized text, but return key if key is unknown.
-     * The text requires one parameter to be passed.
-     * 
-     * @param key
-     * @param param
-     * @return the formatted, internationalized text
-     */
-    public static String gettext(String key, Object param) {
-        return msg.toString(key, param);
-    }
-
-    /**
-     * Get the internationalized text, but return key if key is unknown.
-     * The text requires one parameter to be passed.
-     * 
-     * @param key
-     * @param params
-     * @return the formatted, internationalized text
-     */
-    public static String gettext(String key, Object[] params) {
-        return msg.toString(key, params);
-    }
-
-    private static MsgBase msg = new UserMsg();
-}

Modified: trunk/common-swing/src/main/java/org/crosswire/common/progress/swing/JobsProgressBar.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/progress/swing/JobsProgressBar.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/progress/swing/JobsProgressBar.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -47,6 +47,7 @@
 import org.crosswire.common.progress.WorkEvent;
 import org.crosswire.common.progress.WorkListener;
 import org.crosswire.common.swing.ActionFactory;
+import org.crosswire.common.swing.CWAction;
 import org.crosswire.common.swing.GuiUtil;
 import org.crosswire.common.util.Logger;
 
@@ -66,7 +67,7 @@
         jobs = new HashMap<Progress,JobData>();
         positions = new ArrayList<JobData>();
         shaper = new NumberShaper();
-        actions = new ActionFactory(JobsProgressBar.class, this);
+        actions = new ActionFactory(this);
 
         if (small) {
             // They start off at 15pt (on Windows at least)
@@ -92,8 +93,10 @@
      * @return a custom cancel button
      */
     public synchronized JButton createCancelButton(Progress job) {
-        JButton cancelButton = actions.createActionIcon(STOP, new JobCancelListener(job));
-        return cancelButton;
+        CWAction action = actions.addAction("Stop");
+        action.setSmallIcon("toolbarButtonGraphics/general/Stop16.gif");
+        action.setListener(new JobCancelListener(job));
+        return actions.flatten(new JButton(action));
     }
 
     /*
@@ -238,7 +241,7 @@
      * @throws ClassNotFoundException
      */
     private void readObject(ObjectInputStream is) throws IOException, ClassNotFoundException {
-        actions = new ActionFactory(JobsProgressBar.class, this);
+        actions = new ActionFactory(this);
         is.defaultReadObject();
     }
 
@@ -268,11 +271,6 @@
     private transient ActionFactory actions;
 
     /**
-     * The key for the Stop action.
-     */
-    private static final String STOP = "Stop";
-
-    /**
      * The log stream
      */
     private static final Logger log = Logger.getLogger(JobsProgressBar.class);

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/ActionFactory.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/ActionFactory.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/ActionFactory.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -43,6 +43,8 @@
 import org.crosswire.common.util.StringUtil;
 
 /**
+ * The ActionFactory is being radically updated. Take the following with a grain of salt.
+ * 
  * The ActionFactory is responsible for creating CWActions and making them
  * available to the program. Each Action is constructed from resources of the
  * form: ActionName.field=value where ActionName is the ACTION_COMMAND_KEY value
@@ -132,22 +134,13 @@
  */
 public class ActionFactory implements ActionListener, Actionable {
     /**
-     * Creates an ActionFactory that looks up properties according to pattern
-     * and calls methods on the provided bean. By separating these two, it
-     * distinguishes between the object to call and the type to look up
-     * resources against. This is useful for when you are writing a class
-     * with subclasses but wish to keep the resources registered in the
-     * name of the superclass.
+     * Creates an ActionFactory that merely holds actions.
+     * It does not lookup properties to construct an action. Constructing an action is the
+     * responsibility of the calling class. It does not arrange for actions to perform actions.
      * 
-     * @param type the class against which properties are looked up.
-     * @param bean the object to which the actions belong
      */
-    public ActionFactory(Class<?> type, Object bean) {
-        this.bean = bean;
+    public ActionFactory() {
         actions = new HashMap<String,CWAction>();
-        if (type != null) {
-            buildActionMap(type);
-        }
     }
 
     /**
@@ -158,31 +151,47 @@
      * @param bean
      */
     public ActionFactory(Object bean) {
-        this(null, bean);
+        this();
+        this.bean = bean;
     }
 
-    /*
-     * (non-Javadoc)
+    /**
+     * Creates an ActionFactory that looks up properties according to pattern
+     * and calls methods on the provided bean. By separating these two, it
+     * distinguishes between the object to call and the type to look up
+     * resources against. This is useful for when you are writing a class
+     * with subclasses but wish to keep the resources registered in the
+     * name of the superclass.
      * 
-     * @see
-     * org.crosswire.common.swing.Actionable#performAction(java.lang.String)
+     * @param type the class against which properties are looked up.
+     * @param bean the object to which the actions belong
+     * @deprecated
      */
+    @Deprecated
+    public ActionFactory(Class<?> type, Object bean) {
+        this(bean);
+        buildActionMap(type);
+    }
+
+    /* (non-Javadoc)
+     * @see org.crosswire.common.swing.Actionable#actionPerformed(java.lang.String)
+     */
     public void actionPerformed(String action) {
-        Action act = getAction(action);
+        Action act = findAction(action);
         act.actionPerformed(new ActionEvent(this, 0, action));
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see
-     * java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
      */
     public void actionPerformed(ActionEvent ev) {
         String action = ev.getActionCommand();
 
-        assert action != null;
-        assert action.length() != 0;
+        if (action == null || action.length() == 0) {
+            // There's nothing to do.
+            log.error("No action available for: " + bean.getClass().getName());
+            return;
+        }
 
         // Instead of cascading if/then/else
         // use reflection to do a direct lookup and call
@@ -221,7 +230,9 @@
      * @param key
      *            the internal name of the CWAction
      * @return CWAction null if it does not exist
+     * @deprecated
      */
+    @Deprecated
     public Action getAction(String key) {
         return getAction(key, null);
     }
@@ -233,6 +244,17 @@
      *            the internal name of the CWAction
      * @return CWAction null if it does not exist
      */
+    public Action findAction(String key) {
+        return getAction(key, null);
+    }
+
+    /**
+     * Get the Action for the given actionName.
+     * 
+     * @param key
+     *            the internal name of the CWAction
+     * @return CWAction null if it does not exist
+     */
     public Action getAction(String key, ActionListener listener) {
         CWAction action = actions.get(key);
 
@@ -244,70 +266,34 @@
             return action;
         }
         log.info("Missing key: '" + key + "'. Known keys are: " + StringUtil.join(actions.keySet().toArray(), ", "));
-        assert false;
+//        assert false;
+        return bogusAction(key);
+    }
 
+    private CWAction bogusAction(String key) {
         CWAction getOutOfJailFreeAction = new CWAction();
-
         getOutOfJailFreeAction.putValue(Action.NAME, key);
         getOutOfJailFreeAction.putValue(Action.SHORT_DESCRIPTION, MISSING_RESOURCE);
         getOutOfJailFreeAction.setEnabled(true);
         getOutOfJailFreeAction.addActionListener(this);
-
         return getOutOfJailFreeAction;
     }
 
     /**
-     * Build a button from an action that consist solely of the icon.
-     * 
-     * @param key
-     *            the action to use
-     * @return the button
-     */
-    public JButton createActionIcon(String key) {
-        return createActionIcon(key, null);
-    }
-
-    /**
-     * Build a button from an action that consist solely of the icon.
-     * 
-     * @param key
-     *            the action to use
-     * @return the button
-     */
-    public JButton createActionIcon(String key, ActionListener listener) {
-        Action action = getAction(key, listener);
-
-        JButton button = new JButton(action);
-        button.setBorderPainted(false);
-        button.setContentAreaFilled(false);
-        button.setText(null);
-        button.setMargin(new Insets(0, 0, 0, 0));
-        return button;
-    }
-
-    /**
      * Build a button from an action.
      * 
-     * @param key
+     * @param action
      *            the action to use
      * @return the button
      */
-    public JButton createJButton(String key) {
-        return createJButton(key, null);
+    public JButton createJButton(Action action, ActionListener listener) {
+        CWAction act = (CWAction) action;
+        act = (CWAction) act.clone();
+        act.addActionListener(listener);
+        return new JButton(act);
     }
 
     /**
-     * Build a button from an action.
-     * 
-     * @param key
-     *            the action to use
-     * @return the button
-     */
-    public JButton createJButton(String key, ActionListener listener) {
-        return new JButton(getAction(key, listener));
-    }
-
-    /**
      * Lookup an existing action for actionName. Otherwise construct, store and return an action.
      * 
      * @param key
@@ -361,26 +347,37 @@
      *            to initialize widgets tied to actions to disabled. Once the
      *            action is created, it's state can be changed and the tied
      *            widgets will behave appropriately.
+     * @param listener
+     *            A listener for the action. When present the action is not shared, but cloned.
      * @return the stored or newly constructed action
      */
-    public CWAction addAction(String key, String name, String tooltip, String smallIconPath, String largeIconPath, String acceleratorSpec, String enabled) {
-        CWAction cwAction = buildAction(key, name, tooltip, smallIconPath, largeIconPath, acceleratorSpec, enabled);
-        cwAction.addActionListener(this);
-        actions.put(key, cwAction);
+    public CWAction addAction(String key, String name) {
+        CWAction cwAction = actions.get(key);
+
+        if (cwAction == null) {
+            cwAction = buildAction(key, name);
+            cwAction.addActionListener(this);
+            actions.put(key, cwAction);
+        }
+
         return cwAction;
     }
 
-    public CWAction addAction(String key, String name) {
-        return addAction(key, name, null, null, null, null, null);
+    public CWAction addAction(String key) {
+        return addAction(key, null);
     }
 
-    public CWAction addAction(String key, String name, String tooltip) {
-        return addAction(key, name, tooltip, null, null, null, null);
+    public JButton flatten(JButton button) {
+        button.setBorderPainted(false);
+        button.setContentAreaFilled(false);
+        button.setText(null);
+        button.setMargin(new Insets(0, 0, 0, 0));
+        return button;        
     }
 
-    private CWAction buildAction(String key, String name, String tooltip, String smallIconPath, String largeIconPath, String acceleratorSpec, String enabled) {
+    private CWAction buildAction(String key, String name) {
         if (key == null || key.length() == 0) {
-            log.warn("Acronymn is missing for CWAction");
+            log.warn("Key is missing for CWAction");
         }
 
         CWAction cwAction = actions.get(key);
@@ -392,36 +389,28 @@
         cwAction = new CWAction();
         cwAction.putValue(Action.ACTION_COMMAND_KEY, key);
 
-        JLabel cwLabel = CWLabel.createJLabel(name);
-        cwAction.putValue(Action.NAME, cwLabel.getText());
+        // For buttons that are just icons, there may not be a "name" field.
+        if (name != null) {
+            JLabel cwLabel = CWLabel.createJLabel(name);
+            cwAction.putValue(Action.NAME, cwLabel.getText());
 
-        // Mac's don't have mnemonics.
-        // Otherwise, dig out the mnemonic.
-        if (!OSType.MAC.equals(OSType.getOSType())) {
-            cwAction.putValue(Action.MNEMONIC_KEY, Integer.valueOf(cwLabel.getDisplayedMnemonic()));
+            // Mac's don't have mnemonics.
+            // Otherwise, dig out the mnemonic.
+            if (!OSType.MAC.equals(OSType.getOSType())) {
+                cwAction.putValue(Action.MNEMONIC_KEY, Integer.valueOf(cwLabel.getDisplayedMnemonic()));
+            }
         }
 
-        cwAction.putValue(Action.SHORT_DESCRIPTION, tooltip);
-
-        cwAction.addLargeIcon(largeIconPath);
-        cwAction.addSmallIcon(smallIconPath);
-
-        try {
-            cwAction.addAccelerator(acceleratorSpec);
-        } catch (NumberFormatException nfe) {
-            log.warn("Could not parse integer for accelerator of action " + key, nfe);
-        }
-
-        boolean flag = enabled == null ? true : Boolean.valueOf(enabled).booleanValue();
-        cwAction.setEnabled(flag);
-
-        return cwAction;
+        return cwAction;    
     }
 
     /**
      * Build the map of actions from resources
      */
     private void buildActionMap(Class<?> basis) {
+        if (basis == null) {
+            return;
+        }
         try {
             StringBuilder basisName = new StringBuilder(basis.getName());
             ResourceBundle resources = ResourceBundle.getBundle(basisName.toString(), Locale.getDefault(), CWClassLoader.instance(basis));
@@ -469,7 +458,14 @@
                     String tooltip = getActionString(resources, nickname, actionName, CWAction.TOOL_TIP);
                     String acceleratorSpec = getActionString(resources, nickname, actionName, Action.ACCELERATOR_KEY);
 
-                    CWAction cwAction = buildAction(actionName, label, tooltip, smallIconStr, largeIconStr, acceleratorSpec, enabledStr);
+                    boolean enabled = enabledStr == null ? true : Boolean.valueOf(enabledStr).booleanValue();
+
+                    CWAction cwAction = buildAction(actionName, label);
+                    cwAction.setTooltip(tooltip);
+                    cwAction.setSmallIcon(smallIconStr);
+                    cwAction.setSmallIcon(largeIconStr);
+                    cwAction.setAccelerator(acceleratorSpec);
+                    cwAction.enable(enabled);
                     cwAction.addActionListener(this);
                     actions.put(actionName, cwAction);
                 }

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/CWAction.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/CWAction.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/CWAction.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -32,6 +32,7 @@
 import javax.swing.KeyStroke;
 import javax.swing.event.EventListenerList;
 
+import org.crosswire.common.util.Logger;
 import org.crosswire.common.util.StringUtil;
 
 /**
@@ -57,19 +58,76 @@
      */
     public static final String TOOL_TIP = "ToolTip";
 
-    public void addLargeIcon(String iconPath) {
-        addIcon(LARGE_ICON, iconPath);
+    /**
+     * Set or clear, using null, the icon on this action.
+     * @param icon the small icon to set
+     * @return this action
+     */
+    public CWAction setLargeIcon(Icon icon) {
+        putValue(LARGE_ICON, icon);
+        return this;
     }
 
-    public void addSmallIcon(String iconPath) {
-        addIcon(SMALL_ICON, iconPath);
+    public CWAction setLargeIcon(String iconPath) {
+        return setLargeIcon(GuiUtil.getIcon(iconPath));
     }
 
-    public void addAccelerator(String acceleratorSpec) throws NumberFormatException {
+    public CWAction setTooltip(String tooltip) {
+        putValue(Action.SHORT_DESCRIPTION, tooltip);
+        return this;
+    }
+    /**
+     * Set or clear, using null, the icon on this action.
+     * @param icon the small icon to set
+     * @return this action
+     */
+    public CWAction setSmallIcon(Icon icon) {
+        putValue(SMALL_ICON, icon);
+        return this;
+    }
+
+    public CWAction setSmallIcon(String iconPath) {
+        return setSmallIcon(GuiUtil.getIcon(iconPath));
+    }
+
+    /**
+     * Set the accelerator key from spec. If the spec is invalid it is logged and ignored.
+     * @param acceleratorSpec
+     * @return this action
+     */
+    public CWAction setAccelerator(String acceleratorSpec) {
         putValue(Action.ACCELERATOR_KEY, getAccelerator(acceleratorSpec));
+        return this;
     }
 
     /**
+     * Set enabled either true or false on this action.
+     * 
+     * @param newEnabled the desired state
+     * @return this action
+     */
+    public CWAction enable(boolean newEnabled) {
+        setEnabled(newEnabled);
+        return this;
+    }
+
+    /**
+     * Create a clone of this action and attache the listener. If
+     * no listener is supplied, the action is not cloned.
+     * 
+     * @param listener the listener for the action
+     * @return a cloned action with the listener attached or the current action
+     */
+    public CWAction setListener(ActionListener listener) {
+        CWAction action = this;
+        if (listener != null) {
+            action = (CWAction) action.clone();
+            action.addActionListener(listener);
+        }
+        return action;
+    }
+
+    /**
      * Forwards the ActionEvent to the registered listener.
      * 
      * @param evt
@@ -153,23 +211,17 @@
         return action;
     }
 
-    private void addIcon(String key, String iconPath) {
-        Icon icon = null;
-        if (iconPath != null && iconPath.length() > 0) {
-            icon = GuiUtil.getIcon(iconPath);
-        }
-        if (icon != null) {
-            putValue(key, icon);
-        }
-    }
-
     /**
      * Convert the string to a valid Accelerator (that is a KeyStroke)
      */
-    private KeyStroke getAccelerator(String acceleratorSpec) throws NumberFormatException {
+    private KeyStroke getAccelerator(String acceleratorSpec) {
         KeyStroke accelerator = null;
         if (acceleratorSpec != null && acceleratorSpec.length() > 0) {
-            accelerator = getKeyStroke(acceleratorSpec);
+            try {
+                accelerator = getKeyStroke(acceleratorSpec);
+            } catch (NumberFormatException nfe) {
+                log.warn("Could not parse integer for accelerator of action", nfe);
+            }
         }
         return accelerator;
     }
@@ -177,32 +229,37 @@
    /**
     *
     */
-  private KeyStroke getKeyStroke(String acceleratorSpec) throws NumberFormatException {
-      int keyModifier = 0;
-      int key = 0;
-      String[] parts = StringUtil.split(acceleratorSpec, ',');
-      for (int j = 0; j < parts.length; j++) {
-          String part = parts[j].trim();
-          if ("ctrl".equalsIgnoreCase(part)) {
-              // use this so MacOS users are happy
-              // It will map to the CMD key on Mac; CTRL otherwise.
-              keyModifier |= Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
-          } else if ("shift".equalsIgnoreCase(part)) {
-              keyModifier |= InputEvent.SHIFT_MASK;
-          } else if ("alt".equalsIgnoreCase(part)) {
-              keyModifier |= InputEvent.ALT_MASK;
-          } else if (part.startsWith("0x")) {
-              key = Integer.parseInt(part.substring(2), 16);
-          } else if (part.length() == 1) {
-              key = part.charAt(0);
-          }
-      }
-      return KeyStroke.getKeyStroke(key, keyModifier);
-  }
+    private KeyStroke getKeyStroke(String acceleratorSpec) throws NumberFormatException {
+        int keyModifier = 0;
+        int key = 0;
+        String[] parts = StringUtil.split(acceleratorSpec, ',');
+        for (int j = 0; j < parts.length; j++) {
+            String part = parts[j].trim();
+            if ("ctrl".equalsIgnoreCase(part)) {
+                // use this so MacOS users are happy
+                // It will map to the CMD key on Mac; CTRL otherwise.
+                keyModifier |= Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
+            } else if ("shift".equalsIgnoreCase(part)) {
+                keyModifier |= InputEvent.SHIFT_MASK;
+            } else if ("alt".equalsIgnoreCase(part)) {
+                keyModifier |= InputEvent.ALT_MASK;
+            } else if (part.startsWith("0x")) {
+                key = Integer.parseInt(part.substring(2), 16);
+            } else if (part.length() == 1) {
+                key = part.charAt(0);
+            }
+        }
+        return KeyStroke.getKeyStroke(key, keyModifier);
+    }
 
     private EventListenerList listeners;
 
     /**
+     * The log stream
+     */
+    private static final Logger log = Logger.getLogger(CWAction.class);
+
+    /**
      * Serialization ID
      */
     private static final long serialVersionUID = 3258416148742484276L;

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/CWOptionPane.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/CWOptionPane.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/CWOptionPane.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -744,7 +744,7 @@
     }
 
     private static String getActionName(String key) {
-        return actions.getAction(key).getValue(Action.NAME).toString();
+        return actions.findAction(key).getValue(Action.NAME).toString();
     }
 
     private static Object[] fixOptions(Object[] options, int optionType, int messageType) {
@@ -778,7 +778,13 @@
     /**
      * The actions for this dialog.
      */
-    private static ActionFactory actions = new ActionFactory(CWOptionPane.class, null);
+    private static ActionFactory actions = new ActionFactory(null);
+    static {
+        actions.addAction("Yes", UserMsg.gettext("Yes"));
+        actions.addAction("No", UserMsg.gettext("No"));
+        actions.addAction("OK", UserMsg.gettext("OK"));
+        actions.addAction("Cancel", UserMsg.gettext("Cancel"));
+    }
 
     /**
      * Serialization ID

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/ExceptionPane.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/ExceptionPane.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/ExceptionPane.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -226,14 +226,13 @@
         dialog.getRootPane().setBorder(BorderFactory.createMatteBorder(5, 5, 5, 5, pane.upper.getBackground()));
         dialog.getRootPane().add(pane, BorderLayout.CENTER);
 
-        final ActionFactory actions = new ActionFactory(ExceptionPane.class, pane);
+        final ActionFactory actions = new ActionFactory(pane);
 
-        JButton ok = actions.createJButton("OK", new ActionListener()
-                {
-                    public void actionPerformed(ActionEvent e) {
-                        dialog.dispose();
-                    }
-                });
+        JButton ok = actions.createJButton(actions.addAction("OK", UserMsg.gettext("OK")), new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                dialog.dispose();
+            }
+        });
 
         pane.okBox.add(ok);
         dialog.getRootPane().setDefaultButton(ok);

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/FontChooser.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/FontChooser.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/FontChooser.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -116,22 +116,20 @@
         fontc.italic.setSelected(font.isItalic());
         fontc.size.setSelectedItem(Integer.valueOf(font.getSize()));
 
-        final ActionFactory actions = new ActionFactory(FontChooser.class, fontc);
+        final ActionFactory actions = new ActionFactory(fontc);
 
-        JButton ok = actions.createJButton("OK", new ActionListener()
-                {
-                    public void actionPerformed(ActionEvent ex) {
-                        fontc.dialog.setVisible(false);
-                    }
-                });
+        JButton ok = actions.createJButton(actions.addAction("OK", UserMsg.gettext("OK")), new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                fontc.dialog.dispose();
+            }
+        });
 
-        JButton cancel = actions.createJButton("Cancel", new ActionListener()
-                {
-                    public void actionPerformed(ActionEvent ex) {
-                        fontc.dialog.setVisible(false);
-                        fontc.font = null;
-                    }
-                });
+        JButton cancel = actions.createJButton(actions.addAction("Cancel", UserMsg.gettext("Cancel")), new ActionListener() {
+            public void actionPerformed(ActionEvent ex) {
+                fontc.dialog.setVisible(false);
+                fontc.font = null;
+            }
+        });
 
         JPanel buttons = new JPanel();
         buttons.setLayout(new FlowLayout());

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/GuiUtil.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/GuiUtil.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/GuiUtil.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -74,6 +74,12 @@
      * @return the image or null if the icon is not found.
      */
     public static ImageIcon getIcon(String name) {
+        // It is expected that there is a 3 char extension
+        // So the minimum file name length is 5
+        if (name == null || name.length() < 5) {
+            return null;
+        }
+
         try {
             URL url = ResourceUtil.getResource(name);
             return new ImageIcon(url);

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/QuickHelpDialog.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/QuickHelpDialog.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/QuickHelpDialog.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -62,7 +62,7 @@
      * This method initializes the GUI
      */
     private void initialize() {
-        actions = new ActionFactory(QuickHelpDialog.class, this);
+        actions = new ActionFactory(this);
 
         txtHelp = new JEditorPane();
         txtHelp.setEditable(false);
@@ -83,7 +83,7 @@
         JScrollPane scrHelp = new CWScrollPane(txtHelp);
         scrHelp.setBorder(null);
 
-        JButton btnOK = new JButton(actions.getAction(OK));
+        JButton btnOK = new JButton(actions.addAction("Add", UserMsg.gettext("Add")));
         JPanel pnlOK = new JPanel();
         pnlOK.setLayout(new FlowLayout(FlowLayout.TRAILING));
         pnlOK.add(btnOK, null);
@@ -142,8 +142,6 @@
         setVisible(false);
     }
 
-    private static final String OK = "OK";
-
     private transient ActionFactory actions;
 
     private JEditorPane txtHelp;

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/UserMsg.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/UserMsg.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/UserMsg.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -30,7 +30,7 @@
  *      The copyright to this program is held by it's authors.
  * @author Joe Walker [joe at eireneh dot com]
  */
-final class UserMsg extends MsgBase {
+final public class UserMsg extends MsgBase {
 
     /**
      * Get the internationalized text, but return key if key is unknown.

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/AbstractViewLayout.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/AbstractViewLayout.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/AbstractViewLayout.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -32,6 +32,7 @@
 import javax.swing.event.EventListenerList;
 
 import org.crosswire.common.swing.GuiUtil;
+import org.crosswire.common.swing.UserMsg;
 import org.crosswire.common.swing.desktop.event.ViewEvent;
 import org.crosswire.common.swing.desktop.event.ViewEventListener;
 

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/LayoutType.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/LayoutType.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/LayoutType.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -21,7 +21,9 @@
  */
 package org.crosswire.common.swing.desktop;
 
+import org.crosswire.common.swing.UserMsg;
 
+
 /**
  * Types of ViewLayouts. Currently there are two types of desktop layouts:
  * <ul>

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/TDIViewLayout.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/TDIViewLayout.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/TDIViewLayout.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -24,6 +24,7 @@
 import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.event.MouseListener;
+
 import javax.swing.JPopupMenu;
 import javax.swing.JTabbedPane;
 import javax.swing.UIManager;

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/ToolBar.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/ToolBar.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/ToolBar.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -40,6 +40,7 @@
 import org.crosswire.common.swing.ActionFactory;
 import org.crosswire.common.swing.CWAction;
 import org.crosswire.common.swing.GuiUtil;
+import org.crosswire.common.swing.UserMsg;
 import org.crosswire.common.util.OSType;
 
 /**
@@ -61,7 +62,7 @@
      */
     public ToolBar(JFrame frame) {
         this.frame = frame;
-        actions = new ActionFactory(UserMsg.class, this);
+        actions = new ActionFactory(this);
 
         setRollover(true);
 
@@ -169,7 +170,7 @@
      *         toolbar
      */
     public JMenuItem getShowToggle() {
-        JCheckBoxMenuItem toggle = new JCheckBoxMenuItem(actions.getAction(TOOLBAR_TOGGLE));
+        JCheckBoxMenuItem toggle = new JCheckBoxMenuItem(actions.addAction("ToolBarToggle", UserMsg.gettext("Show Tool Bar")).setTooltip(UserMsg.gettext("Toggle the display of the tool bar")).setAccelerator("B,ctrl"));
         toggle.setSelected(true);
         return toggle;
     }
@@ -180,7 +181,7 @@
      * @return a check box that can be used to toggle the text
      */
     public JMenuItem getTextToggle() {
-        return new JCheckBoxMenuItem(actions.getAction(TOOLBAR_TEXT));
+        return new JCheckBoxMenuItem(actions.addAction("ToolBarText", UserMsg.gettext("Show Tool Bar Text")).setTooltip(UserMsg.gettext("Toggle the display of the tool bar text")));
     }
 
     /**
@@ -190,7 +191,7 @@
      * @return a check box that can be used to toggle the size of the icons
      */
     public JMenuItem getIconSizeToggle() {
-        JCheckBoxMenuItem toggle = new JCheckBoxMenuItem(actions.getAction(TOOLBAR_LARGE));
+        JCheckBoxMenuItem toggle = new JCheckBoxMenuItem(actions.addAction("ToolBarText", UserMsg.gettext("Large Tool Bar")).setTooltip(UserMsg.gettext("Toggle size of the tool bar icons")));
         toggle.setSelected(true);
         return toggle;
     }
@@ -227,14 +228,10 @@
      * @throws ClassNotFoundException
      */
     private void readObject(ObjectInputStream is) throws IOException, ClassNotFoundException {
-        actions = new ActionFactory(ToolBar.class, this);
+        actions = new ActionFactory(this);
         is.defaultReadObject();
     }
 
-    private static final String TOOLBAR_TOGGLE = "ToolBarToggle";
-    private static final String TOOLBAR_TEXT = "ToolBarText";
-    private static final String TOOLBAR_LARGE = "ToolBarLarge";
-
     /**
      * The frame in which the toolbar is shown. It must be border layout with
      * the only other component being centered.

Deleted: trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/UserMsg.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/UserMsg.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/UserMsg.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,70 +0,0 @@
-/**
- * Distribution License:
- * JSword 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 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 Lesser General Public License for more details.
- *
- * The License is available on the internet at:
- *       http://www.gnu.org/copyleft/lgpl.html
- * or by writing to:
- *      Free Software Foundation, Inc.
- *      59 Temple Place - Suite 330
- *      Boston, MA 02111-1307, USA
- *
- * Copyright: 2005
- *     The copyright to this program is held by it's authors.
- *
- * ID: $Id$
- */
-package org.crosswire.common.swing.desktop;
-
-import org.crosswire.common.util.MsgBase;
-
-/**
- * Compile safe Msg resource settings.
- * 
- * @see gnu.lgpl.License for license details.<br>
- *      The copyright to this program is held by it's authors.
- * @author DM Smith [dmsmith555 at yahoo dot com]
- */
-public final class UserMsg extends MsgBase {
-
-    /**
-     * Get the internationalized text, but return key if key is unknown.
-     * 
-     * @param key
-     * @return the internationalized text
-     */
-    public static String gettext(String key) {
-        return msg.lookup(key);
-    }
-
-    /**
-     * Get the internationalized text, but return key if key is unknown.
-     * The text requires one parameter to be passed.
-     * 
-     * @param key
-     * @param param
-     * @return the formatted, internationalized text
-     */
-    public static String gettext(String key, Object param) {
-        return msg.toString(key, param);
-    }
-
-    /**
-     * Get the internationalized text, but return key if key is unknown.
-     * The text requires one parameter to be passed.
-     * 
-     * @param key
-     * @param params
-     * @return the formatted, internationalized text
-     */
-    public static String gettext(String key, Object[] params) {
-        return msg.toString(key, params);
-    }
-
-    private static MsgBase msg = new UserMsg();
-}

Modified: trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/ViewManager.java
===================================================================
--- trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/ViewManager.java	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/java/org/crosswire/common/swing/desktop/ViewManager.java	2011-03-03 03:41:41 UTC (rev 2085)
@@ -21,6 +21,7 @@
  */
 package org.crosswire.common.swing.desktop;
 
+
 import java.awt.Component;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
@@ -34,6 +35,7 @@
 
 import org.crosswire.common.swing.ActionFactory;
 import org.crosswire.common.swing.GuiUtil;
+import org.crosswire.common.swing.UserMsg;
 import org.crosswire.common.swing.desktop.event.TitleChangedEvent;
 import org.crosswire.common.swing.desktop.event.TitleChangedListener;
 import org.crosswire.common.swing.desktop.event.ViewEvent;
@@ -52,12 +54,41 @@
  */
 public class ViewManager implements Viewable, TitleChangedListener, ViewEventListener {
     /**
-     * Construct a ViewManager.
+     * Construct a ViewManager. The supplied action factory has this as it's bean and
+     * has actions for the following keys:
+     * <ul>
+     * <li>ViewManager.TAB_MODE</li>
+     * <li>ViewManager.WINDOW_MODE</li>
+     * <li>ViewManager.NEW_TAB</li>
+     * <li>ViewManager.CLOSE_VIEW</li>
+     * <li>ViewManager.CLEAR_VIEW</li>
+     * <li>ViewManager.CLEAR_ALL_VIEWS</li>
+     * <li>ViewManager.CLOSE_OTHER_VIEWS</li>
+     * </ul> 
+     * 
      * @param generator a ViewGenerator that this ViewManager manages.
-     * @param msg the class for which i18n properties are defined
      */
-    public ViewManager(ViewGenerator generator, Class<?> msg) {
+    public ViewManager(ViewGenerator generator) {
         this.generator = generator;
+    }
+
+    /**
+     * Before first use, the ViewGenerator must supply an action factory.
+     * The supplied action factory has this as it's bean and
+     * has actions for the following keys:
+     * <ul>
+     * <li>ViewManager.TAB_MODE</li>
+     * <li>ViewManager.WINDOW_MODE</li>
+     * <li>ViewManager.NEW_TAB</li>
+     * <li>ViewManager.CLEAR_VIEW</li>
+     * <li>ViewManager.CLOSE_VIEW</li>
+     * <li>ViewManager.CLOSE_ALL_VIEWS</li>
+     * <li>ViewManager.CLOSE_OTHER_VIEWS</li>
+     * </ul> 
+     * 
+     * @param actions the class for which i18n properties are defined
+     */
+    public void setActionFactory(ActionFactory actions) {
         panel = new JPanel(new GridBagLayout());
 
         gbc = new GridBagConstraints();
@@ -68,10 +99,10 @@
         panel.add(getViewLayout().getPanel(), getConstraint());
 
         // Get the action definitions from the calling class
-        contextActions = new ActionFactory(msg, this);
+        contextActions = actions;
 
-        tdiView = new JRadioButtonMenuItem(contextActions.getAction(TAB_MODE));
-        mdiView = new JRadioButtonMenuItem(contextActions.getAction(WINDOW_MODE));
+        tdiView = new JRadioButtonMenuItem(contextActions.addAction(TAB_MODE, UserMsg.gettext("Tabbed Document Interface")));
+        mdiView = new JRadioButtonMenuItem(contextActions.addAction(WINDOW_MODE, UserMsg.gettext("Multiple Document Interface")));
 
         ButtonGroup grpViews = new ButtonGroup();
         grpViews.add(mdiView);
@@ -401,7 +432,7 @@
      * @return the action requested or null if it does not exist
      */
     public Action getContextAction(String key) {
-        return contextActions.getAction(key);
+        return contextActions.findAction(key);
     }
 
     /* private */final Object getConstraint() {
@@ -460,14 +491,10 @@
     public static final String TAB_MODE = "TabMode";
     public static final String WINDOW_MODE = "WindowMode";
     public static final String NEW_TAB = "NewTab";
+    public static final String CLEAR_VIEW = "ClearView";
     public static final String CLOSE_VIEW = "CloseView";
-    public static final String CLEAR_VIEW = "ClearView";
     public static final String CLOSE_ALL_VIEWS = "CloseAllViews";
     public static final String CLOSE_OTHER_VIEWS = "CloseOtherViews";
-    public static final String OPEN = "Open";
-    public static final String SAVE = "Save";
-    public static final String SAVE_AS = "SaveAs";
-    public static final String SAVE_ALL = "SaveAll";
 
     /**
      * The initial layout state

Deleted: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/BooleanField.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/BooleanField.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/BooleanField.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,2 +0,0 @@
-No.Name=Alias.No
-Yes.Name=Alias.Yes

Deleted: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/ButtonPane.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/ButtonPane.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/ButtonPane.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,4 +0,0 @@
-OK.Name=Alias.OK
-Cancel.Name=Alias.Cancel
-Apply.Name=Alias.Apply
-Help.Name=Alias.Help

Deleted: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,3 +0,0 @@
-
-Browse.Name=Alias.Browse
-Browse.ToolTip=Browse for a directory to select.

Deleted: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_de.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_de.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_de.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,3 +0,0 @@
-
-Browse.Name=Alias.Browse
-Browse.ToolTip=Ein Verzeichnis ausw\u00E4hlen

Deleted: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_fa.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_fa.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_fa.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,3 +0,0 @@
-
-Browse.Name=Alias.Browse
-Browse.ToolTip=\u0627\u0646\u062A\u062E\u0627\u0628

Deleted: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_vi.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_vi.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_vi.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,3 +0,0 @@
-
-Browse.Name=Alias.Browse
-Browse.ToolTip=\u0110\u1ECDc l\u01B0\u1EDBt t\u00ECm t\u1EADp tin \u0111\u1EC3 ch\u1ECDn

Deleted: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_zh.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_zh.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_zh.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,3 +0,0 @@
-
-Browse.Name=Alias.Browse
-Browse.ToolTip=\u9078\u64C7\u3127\u500B\u6A94\u6848

Deleted: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_zh_CN.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_zh_CN.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/FileField_zh_CN.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,3 +0,0 @@
-
-Browse.Name=Alias.Browse
-Browse.ToolTip=\u9009\u62E9\u3127\u4E2A\u6863\u6848

Deleted: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/PathField.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/PathField.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/PathField.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,3 +0,0 @@
-AddPathEntry.Name=Alias.Add
-RemovePathEntry.Name=Alias.Remove
-UpdatePathEntry.Name=Alias.Update

Deleted: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/PathField_de.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/PathField_de.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/PathField_de.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,6 +0,0 @@
-
-AddPathEntry.Name = Alias.Add
-
-RemovePathEntry.Name = Alias.Remove
-
-UpdatePathEntry.Name = Aktualisieren

Deleted: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/StringArrayField.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/StringArrayField.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/StringArrayField.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,3 +0,0 @@
-AddStringEntry.Name=Alias.Add
-RemoveStringEntry.Name=Alias.Remove
-UpdateStringEntry.Name=Alias.Update

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,7 +1,7 @@
-Could\ not\ save\ preferences\:\ {0} = Could not save preferences: {0}
 
-Preferences = Preferences
-
-Select\ a\ preference\ category = Select a preference category
-
-{0}\ Preferences = {0} Preferences
+Browse\ for\ a\ directory\ to\ select.=Browse for a directory to select.
+Could\ not\ save\ preferences\:\ {0}=Could not save preferences\: {0}
+Preferences=Preferences
+Select\ a\ preference\ category=Select a preference category
+Update\ (path)=Alias.Update
+{0}\ Preferences={0} Preferences

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_de.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_de.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_de.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,8 +1,7 @@
 
-Could\ not\ save\ preferences\:\ {0} = Konnte Konfigurationsdatei nicht speichern: {0}
-
-Preferences = Eigenschaften
-
-Select\ a\ preference\ category = W\u00E4hlen Sie links eine Kategorie f\u00FCr weitere Optionen
-
-{0}\ Preferences = {0} Eigenschaften
\ No newline at end of file
+Browse\ for\ a\ directory\ to\ select.=Ein Verzeichnis ausw\u00E4hlen
+Could\ not\ save\ preferences\:\ {0}=Konnte Konfigurationsdatei nicht speichern\: {0}
+Preferences=Eigenschaften
+Select\ a\ preference\ category=W\u00E4hlen Sie links eine Kategorie f\u00FCr weitere Optionen
+Update\ (path)=Aktualisieren
+{0}\ Preferences={0} Eigenschaften

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_fa.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_fa.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_fa.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,4 +1,5 @@
-Could\ not\ save\ preferences\:\ {0} = Could not save preferences: {0}
-Preferences = \u0627\u0646\u062A\u062E\u0627\u0628\u0647\u0627
-{0}\ Preferences = {0} \u0627\u0646\u062A\u062E\u0627\u0628\u0647\u0627
-Select\ a\ preference\ category = \u0634\u0627\u062C\u0647 \u0627\u0632 \u062F\u0631\u062C\u062A \u0627\u0646\u062A\u062E\u0627\u0628 \u06A9\u0646\u06CC\u062F!
+
+Browse\ for\ a\ directory\ to\ select.=\u0627\u0646\u062A\u062E\u0627\u0628
+Preferences=\u0627\u0646\u062A\u062E\u0627\u0628\u0647\u0627
+Select\ a\ preference\ category=\u0634\u0627\u062C\u0647 \u0627\u0632 \u062F\u0631\u062C\u062A \u0627\u0646\u062A\u062E\u0627\u0628 \u06A9\u0646\u06CC\u062F\!
+{0}\ Preferences={0} \u0627\u0646\u062A\u062E\u0627\u0628\u0647\u0627

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_vi.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_vi.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_vi.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,4 +1,6 @@
-Could\ not\ save\ preferences\:\ {0} = Kh\u00F4ng l\u01B0u \u0111\u01B0\u1EE3c t\u1EADp tin c\u1EA5u h\u00ECnh: {0}
-Preferences = T\u00EDnh Ch\u1EA5t
-{0}\ Preferences = {0} T\u00EDnh Ch\u1EA5t
-Select\ a\ preference\ category = Ch\u1ECDn sub-node c\u1EE7a tree cho th\u00EAm tu\u1EF3 ch\u1ECDn n\u1EEFa.
+
+Browse\ for\ a\ directory\ to\ select.=\u0110\u1ECDc l\u01B0\u1EDBt t\u00ECm t\u1EADp tin \u0111\u1EC3 ch\u1ECDn
+Could\ not\ save\ preferences\:\ {0}=Kh\u00F4ng l\u01B0u \u0111\u01B0\u1EE3c t\u1EADp tin c\u1EA5u h\u00ECnh\: {0}
+Preferences=T\u00EDnh Ch\u1EA5t
+Select\ a\ preference\ category=Ch\u1ECDn sub-node c\u1EE7a tree cho th\u00EAm tu\u1EF3 ch\u1ECDn n\u1EEFa.
+{0}\ Preferences={0} T\u00EDnh Ch\u1EA5t

Added: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_zh.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_zh.properties	                        (rev 0)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_zh.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -0,0 +1,2 @@
+
+Browse\ for\ a\ directory\ to\ select.=\u9078\u64C7\u3127\u500B\u6A94\u6848

Added: trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_zh_CN.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_zh_CN.properties	                        (rev 0)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/config/swing/UserMsg_zh_CN.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -0,0 +1,2 @@
+
+Browse\ for\ a\ directory\ to\ select.=\u9009\u62E9\u3127\u4E2A\u6863\u6848

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,24 +1,58 @@
 
-An\ error\ has\ occurred\: = An error has occurred:
+Add=_Add
+An\ error\ has\ occurred\:=An error has occurred\:
+Apply=_Apply
+Back=_Back
+Back.AcceleratorKey=0x27,alt
+Bold=Bold
+Browse=_Browse
+Cancel=_Cancel
+Cannot\ open\ source\ for\:\ {0},\ line\:\ {1}=Cannot open source for\: {0}, line\: {1}\n
+Close=_Close
+Copy=_Copy
+Copy.AcceleratorKey=C,ctrl
+Cut=C_ut
+Cut.AcceleratorKey=X,ctrl
+Delete=_Delete
+Details=Details
+Edit=_Edit
+Error=Error
+Error\ on\ line\ {0}\ in\ file\ {1}=Error on line {0} in file {1}
+Finish=_Finish
+Forward=_Forward
+Forward.AcceleratorKey=0x25,alt
+Go=Go
+Help=_Help
+Help.AcceleratorKey=0x70
+Italic=Italic
+Next=_Next
+No=_No
+No\ File=No File
+No\ description\ available.=No description available.
+OK=_OK
+Remove=_Remove
+Reset=_Reset
+Save=_Save
+Save.AcceleratorKey=S,ctrl
+Select\ Font=Select Font
+This\ was\ caused\ by\:=This was caused by\:
+Tried\:\ {0}=Tried\: {0}\n
+Update=_Update
+Yes=_Yes
 
-Bold = Bold
+Browse\ for\ a\ directory\ to\ select.=Browse for a directory to select.
+Could\ not\ save\ preferences\:\ {0}=Could not save preferences\: {0}
+Preferences=Preferences
+Select\ a\ preference\ category=Select a preference category
+Update\ (path)=Alias.Update
+{0}\ Preferences={0} Preferences
 
-Cannot\ open\ source\ for\:\ {0},\ line\:\ {1} = Cannot open source for: {0}, line: {1}\n
-
-Details = Details
-
-Error = Error
-
-Error\ on\ line\ {0}\ in\ file\ {1} = Error on line {0} in file {1}
-
-Italic = Italic
-
-No\ File = No File
-
-No\ description\ available. = No description available.
-
-Select\ Font = Select Font
-
-This\ was\ caused\ by\: = This was caused by:
-
-Tried\:\ {0} = Tried: {0}\n
+Large\ Tool\ Bar=Large Tool Bar
+Multiple\ Document\ Interface=Multiple Document Interface
+Show\ Tool\ Bar=Show Tool Bar
+Show\ Tool\ Bar\ Text=Show Tool Bar Text
+Tabbed\ Document\ Interface=Tabbed Document Interface
+Toggle\ size\ of\ the\ tool\ bar\ icons=Toggle size of the tool bar icons
+Toggle\ the\ display\ of\ the\ tool\ bar=Toggle the display of the tool bar
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=Toggle the display of the tool bar text
+Untitled\ {0}=Untitled {0}

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_de.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_de.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_de.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,12 +1,55 @@
 
+Add=Hinzuf\u00FCgen
 An\ error\ has\ occurred\:=Ein Fehler ist aufgetreten\:
+Apply=\u00DCbernehmen
+Back=Zur\u00FCck
+Back.AcceleratorKey=0x27,alt
 Bold=Fett
+Browse=Durchsuchen
+Cancel=Abbrechen
 Cannot\ open\ source\ for\:\ {0},\ line\:\ {1}=Kann Quelle nicht \u00F6ffnen f\u00FCr\: {0}, Zeile\: {1}\n
+Close=Schlie\u00DFen
+Copy=Kopieren
+Copy.AcceleratorKey=C,ctrl
+Cut=A_usschneiden
+Cut.AcceleratorKey=X,alt
+Delete=L\u00F6schen
+Edit=Bearbeiten
 Error=Fehler
 Error\ on\ line\ {0}\ in\ file\ {1}=Fehler in Zeile {0} in Datei {1}
+Finish=Ende
+Forward=Vorw\u00E4rts
+Forward.AcceleratorKey=0x25,alt
+Go=Gehe
+Help=Hilfe
+Help.AcceleratorKey=0x70
 Italic=Kursiv
+Next=Weiter
+No=_Nein
 No\ File=Keine Datei
 No\ description\ available.=Keine Beschreibung verf\u00FCgbar
+OK=_OK
+Remove=Entfernen
+Reset=Zur\u00FCcksetzen
+Save=_Speichern
+Save.AcceleratorKey=S,ctrl
 Select\ Font=Schriftart ausw\u00E4hlen
 This\ was\ caused\ by\:=Verursacht durch\:
 Tried\:\ {0}=Versuche\: {0}\n
+Update=Auffrischen
+Yes=_Ja
+
+Browse\ for\ a\ directory\ to\ select.=Ein Verzeichnis ausw\u00E4hlen
+Could\ not\ save\ preferences\:\ {0}=Konnte Konfigurationsdatei nicht speichern\: {0}
+Preferences=Eigenschaften
+Select\ a\ preference\ category=W\u00E4hlen Sie links eine Kategorie f\u00FCr weitere Optionen
+Update\ (path)=Aktualisieren
+{0}\ Preferences={0} Eigenschaften
+
+Large\ Tool\ Bar=Gro\u00DFe Symbole
+Show\ Tool\ Bar=Zeige Symbolleiste
+Show\ Tool\ Bar\ Text=Zeige Symbole mit Text
+Toggle\ size\ of\ the\ tool\ bar\ icons=Schalte Symbolleiste gro\u00DF/klein
+Toggle\ the\ display\ of\ the\ tool\ bar=Schalte Symbolleiste an/aus
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=Schalte Symbolleisten-Text an/aus
+Untitled\ {0}=Ohne Titel {0}

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_fa.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_fa.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_fa.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,24 +1,56 @@
 
-An\ error\ has\ occurred\: = \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0634\u06A9\u0644 \u062F\u0631\u062F
+Add=\u0627\u0641\u0632\u0648\u062F\u0646
+An\ error\ has\ occurred\:=\u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0634\u06A9\u0644 \u062F\u0631\u062F
+Apply=\u0627\u0646\u062C\u0627\u0645
+Back=\u0639\u0642\u0628 
+Back.AcceleratorKey=0x25,alt
+Bold=\u062F\u0631\u0634\u062A
+Browse=\u0627\u0646\u062A\u062E\u0627\u0628
+Cancel=\u0627\u0646\u0636\u0631\u0627\u0641
+Cannot\ open\ source\ for\:\ {0},\ line\:\ {1}=\u0628\u0627\u0632 \u0646\u0634\u062F {0},\u062F\u0631 \u0633\u0637\u0631 {1}\n
+Close=\u0628\u06A9\u0646
+Copy=\u06A9\u067E\u06CC
+Copy.AcceleratorKey=C,ctrl
+Cut=\u0628\u0631\u064A\u062F\u0646
+Cut.AcceleratorKey=X,ctrl
+Delete=\u062D\u0632\u0641
+Details=\u062C\u0632\u062B\u06CC\u0627\u062A
+Edit=\u0648\u06CC\u0631\u0627\u06CC\u0634
+Error=\u0627\u0634\u062A\u0628\u0627
+Error\ on\ line\ {0}\ in\ file\ {1}=\u0645\u0634\u06A9\u0644 \u062F\u0627\u0631 \u0633\u0637\u0631 {0} \u062F\u0631 \u067E\u0631\u0648\u0646\u062F\u0647{1}
+Finish=\u062A\u0645\u0627\u0645
+Forward=\u062C\u0644\u0648 
+Forward.AcceleratorKey=0x27,alt
+Go=\u0686\u0647\u062A  \u062D\u0631\u06A9\u062A
+Help=\u0631\u0647\u0646\u0646\u0645\u0627
+Help.AcceleratorKey=0x70
+Italic=\u06A9\u062C
+Next=\u062C\u0644\u0648
+No=\u0631\u062F
+No\ File=\u067E\u0631\u0648\u0646\u062F\u0647 \u0648\u062C\u0648\u062F \u0646\u062F\u0627\u0631\u062F
+No\ description\ available.=\u062F\u0644\u06CC\u0644 \u0627\u06CC\u0646 \u0645\u0634\u06A9\u0644 \u0648\u0686\u0648\u062F \u0646\u062F\u0631\u062F
+OK=\u0642\u0628\u0648\u0644
+Remove=\u062D\u0632\u0641 \u06A9\u0631\u062F\u0646
+Reset=\u0627\u0632 \u0627\u0648\u0644
+Save=\u0630\u062E\u064A\u0631\u0647 \u0633\u0627\u0632\u06CC
+Save.AcceleratorKey=S,ctrl
+Select\ Font=\u0627\u0646\u062A\u062E\u0627\u0628 \u0641\u0648\u0646\u062A
+This\ was\ caused\ by\:=\u062F\u0644\u06CC\u0644 \u0627\u06CC\u0646 \u0645\u0634\u06A9\u0644\:
+Tried\:\ {0}=\u0627\u0645\u062A\u062D\u0627\u0646 \u06A9\u0631\u062F\u0645\: {0}\n
+Update=\u0628\u0647 \u0631\u0648\u0632 \u06A9\u0631\u062F\u0646
+Yes=\u0628\u0644\u0647
 
-Bold = \u062F\u0631\u0634\u062A
+Browse\ for\ a\ directory\ to\ select.=\u0627\u0646\u062A\u062E\u0627\u0628
+Preferences=\u0627\u0646\u062A\u062E\u0627\u0628\u0647\u0627
+Select\ a\ preference\ category=\u0634\u0627\u062C\u0647 \u0627\u0632 \u062F\u0631\u062C\u062A \u0627\u0646\u062A\u062E\u0627\u0628 \u06A9\u0646\u06CC\u062F\!
+{0}\ Preferences={0} \u0627\u0646\u062A\u062E\u0627\u0628\u0647\u0627
 
-Cannot\ open\ source\ for\:\ {0},\ line\:\ {1} = \u0628\u0627\u0632 \u0646\u0634\u062F {0},\u062F\u0631 \u0633\u0637\u0631 {1}\n
-
-Details = \u062C\u0632\u062B\u06CC\u0627\u062A
-
-Error = \u0627\u0634\u062A\u0628\u0627
-
-Error\ on\ line\ {0}\ in\ file\ {1} = \u0645\u0634\u06A9\u0644 \u062F\u0627\u0631 \u0633\u0637\u0631 {0} \u062F\u0631 \u067E\u0631\u0648\u0646\u062F\u0647{1}
-
-Italic = \u06A9\u062C
-
-No\ File = \u067E\u0631\u0648\u0646\u062F\u0647 \u0648\u062C\u0648\u062F \u0646\u062F\u0627\u0631\u062F
-
-No\ description\ available. = \u062F\u0644\u06CC\u0644 \u0627\u06CC\u0646 \u0645\u0634\u06A9\u0644 \u0648\u0686\u0648\u062F \u0646\u062F\u0631\u062F
-
-Select\ Font = \u0627\u0646\u062A\u062E\u0627\u0628 \u0641\u0648\u0646\u062A
-
-This\ was\ caused\ by\: = \u062F\u0644\u06CC\u0644 \u0627\u06CC\u0646 \u0645\u0634\u06A9\u0644:
-
-Tried\:\ {0} = \u0627\u0645\u062A\u062D\u0627\u0646 \u06A9\u0631\u062F\u0645: {0}\n
+Large\ Tool\ Bar=\u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631 \u0628\u0632\u0631\u06AF
+Multiple\ Document\ Interface=\u067E\u0646\u062C\u0631\u0647 \u0647\u0627
+Show\ Tool\ Bar=\u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631
+Show\ Tool\ Bar\ Text=\u0645\u062A\u0646 \u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631
+Tabbed\ Document\ Interface=\u0636\u0641\u062D\u0647 \u0647\u0627
+Toggle\ size\ of\ the\ tool\ bar\ icons=\u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631 \u0628\u0632\u0631\u06AF
+Toggle\ the\ display\ of\ the\ tool\ bar=\u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=\u0645\u062A\u0646 \u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631
+Untitled\ {0}=\u0628\u06CC \u0646\u0627\u0645 {0}

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_in.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_in.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_in.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,12 +1,52 @@
 
+Add=T_ambah
 An\ error\ has\ occurred\:=Kesalahan terjadi\:
+Apply=_Apply
+Back=Kembali
+Back.AcceleratorKey=0x27,alt
 Bold=Tebal
-Cannot\ open\ source\ for\:\ {0},\ line\:\ {1}=Cannot open source for\: {0}, line\: {1}\n
+Browse=_Browse
+Cancel=_Batal
+Close=_Tutup
+Copy=_Copy
+Copy.AcceleratorKey=C,ctrl
+Cut=C_ut
+Cut.AcceleratorKey=X,ctrl
+Delete=Hapus
+Edit=_Ubah
 Error=Kesalahan
 Error\ on\ line\ {0}\ in\ file\ {1}=Kesalahn pada line {0} in file {1}
+Finish=_Selesai
+Forward=Maju
+Forward.AcceleratorKey=0x25,alt
+Go=Go
+Help=_Bantuan
+Help.AcceleratorKey=0x70
 Italic=Miring
+Next=Berikut_nya
+No=_Tidak
 No\ File=Tidak ada Berkas
 No\ description\ available.=Tidak penjelasan
+OK=_OK
+Remove=Hapus
+Reset=_Reset
+Save=_Simpan
+Save.AcceleratorKey=S,ctrl
 Select\ Font=Pilih Font
 This\ was\ caused\ by\:=Ini disebabkan karena\:
 Tried\:\ {0}=Percobaan\: {0}\n
+Update=_Update
+Yes=_Ya
+Could\ not\ save\ preferences\:\ {0} = Gagal menyimpan preferensi: {0}
+Preferences = Preferensi
+{0}\ Preferences = {0} Preferensi
+Select\ a\ preference\ category = Pilih kategori preferensi
+
+Large\ Tool\ Bar=Besar Tool Bar
+Multiple\ Document\ Interface=Antar muka Multiple Document
+Show\ Tool\ Bar=Tampilkan Tool Bar
+Show\ Tool\ Bar\ Text=Tampilkan Tool Bar Teks
+Tabbed\ Document\ Interface=Antar muka Tabbed
+Toggle\ size\ of\ the\ tool\ bar\ icons=Tuas untuk tool bar ikon
+Toggle\ the\ display\ of\ the\ tool\ bar=Tuas untuk tampilan tool bar
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=Tuas untuk tool bar teks

Added: trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_tr.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_tr.properties	                        (rev 0)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_tr.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -0,0 +1,29 @@
+
+Add=Add
+Apply=Apply
+Back=Back
+Back.AcceleratorKey=0x27,alt
+Browse=Browse
+Cancel=Cancel
+Close=Close
+Copy=Copy
+Copy.AcceleratorKey=C,ctrl
+Cut=Cut
+Cut.AcceleratorKey=X,ctrl
+Delete=Delete
+Edit=Ara\u015Ft\u0131rmak
+Finish=Finish
+Forward=Forward
+Forward.AcceleratorKey=0x25,alt
+Go=Git
+Help=Yard\u0131m
+Help.AcceleratorKey=0x70
+Next=Next
+No=No
+OK=OK
+Remove=Remove
+Reset=Reset
+Save=Save
+Save.AcceleratorKey=S,ctrl
+Update=Update
+Yes=Yes

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_vi.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_vi.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_vi.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,24 +1,47 @@
 
-An\ error\ has\ occurred\: = M\u1ED9t l\u1ED7i l\u1EA7m \u0111\u00E3 x\u1EA9y ra:
+Add=Th\u00EAm
+An\ error\ has\ occurred\:=M\u1ED9t l\u1ED7i l\u1EA7m \u0111\u00E3 x\u1EA9y ra\:
+Apply=\u00C1p D\u1EE5ng
+Back=Quay L\u1EA1i
+Back.AcceleratorKey=0x27,alt
+Bold=Ch\u1EEF \u0110\u1EADm
+Browse=\u0110\u1ECDc l\u01B0\u1EDBt
+Cancel=B\u1ECF \u0110i
+Cannot\ open\ source\ for\:\ {0},\ line\:\ {1}=Kh\u00F4ng m\u1EDF d\u01B0\u1EE3c ngu\u1ED3n g\u1ED1c cho\: {0}, d\u00F2ng\: {1}\n
+Close=Close
+Copy=Ch\u00E9p
+Copy.AcceleratorKey=C,ctrl
+Cut=C\u1EAFt
+Cut.AcceleratorKey=X,ctrl
+Delete=Delete
+Details=Chi Ti\u1EBFt
+Edit=S\u1EEDa
+Error=L\u1ED7i
+Error\ on\ line\ {0}\ in\ file\ {1}=L\u1ED7i t\u1EA1i d\u00F2ng {0} trong t\u1EADp tin {1}
+Finish=K\u1EBFt Th\u00FAc
+Forward=\u0110i T\u1EDBi
+Forward.AcceleratorKey=0x25,alt
+Go=Chuy\u1EC3n
+Help=Tr\u1EE3 Gi\u00FAp
+Help.AcceleratorKey=0x70
+Italic=Ch\u1EEF Nghi\u00EAng
+Next=\u0110i T\u1EDBi
+No=Kh\u00F4ng
+No\ File=Kh\u00F4ng C\u00F3 T\u1EADp Tin
+No\ description\ available.=Kh\u00F4ng c\u00F3 m\u00F4 t\u1EA3
+OK=\u0110\u00F3ng
+Remove=B\u1ECF \u0110i
+Reset=Reset
+Save=L\u01B0u
+Save.AcceleratorKey=S,ctrl
+Select\ Font=Ch\u1ECDn Ph\u00F4ng Ch\u1EEF
+This\ was\ caused\ by\:=L\u1ED7i n\u00E0y do\:
+Tried\:\ {0}=Th\u1EED\: {0}\n
+Update=C\u1EADp Nh\u1EADt
+Yes=C\u00F3
 
-Bold = Ch\u1EEF \u0110\u1EADm
-
-Cannot\ open\ source\ for\:\ {0},\ line\:\ {1} = Kh\u00F4ng m\u1EDF d\u01B0\u1EE3c ngu\u1ED3n g\u1ED1c cho: {0}, d\u00F2ng: {1}\n
-
-Details = Chi Ti\u1EBFt
-
-Error = L\u1ED7i
-
-Error\ on\ line\ {0}\ in\ file\ {1} = L\u1ED7i t\u1EA1i d\u00F2ng {0} trong t\u1EADp tin {1}
-
-Italic = Ch\u1EEF Nghi\u00EAng
-
-No\ File = Kh\u00F4ng C\u00F3 T\u1EADp Tin
-
-No\ description\ available. = Kh\u00F4ng c\u00F3 m\u00F4 t\u1EA3
-
-Select\ Font = Ch\u1ECDn Ph\u00F4ng Ch\u1EEF
-
-This\ was\ caused\ by\: = L\u1ED7i n\u00E0y do:
-
-Tried\:\ {0} = Th\u1EED: {0}\n
+Browse\ for\ a\ directory\ to\ select.=\u0110\u1ECDc l\u01B0\u1EDBt t\u00ECm t\u1EADp tin \u0111\u1EC3 ch\u1ECDn
+Could\ not\ save\ preferences\:\ {0}=Kh\u00F4ng l\u01B0u \u0111\u01B0\u1EE3c t\u1EADp tin c\u1EA5u h\u00ECnh\: {0}
+Preferences=T\u00EDnh Ch\u1EA5t
+Select\ a\ preference\ category=Ch\u1ECDn sub-node c\u1EE7a tree cho th\u00EAm tu\u1EF3 ch\u1ECDn n\u1EEFa.
+{0}\ Preferences={0} T\u00EDnh Ch\u1EA5t

Added: trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_zh.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_zh.properties	                        (rev 0)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_zh.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -0,0 +1,39 @@
+
+Add=\u589E\u52A0
+Apply=\u5957\u7528
+Back=\u4E0A\u3127\u9801
+Back.AcceleratorKey=0x27,alt
+Browse=\u700F\u89BD
+Cancel=\u53D6\u6D88
+Close=\u95DC\u9589
+Copy=\u8986\u88FD
+Copy.AcceleratorKey=C,ctrl
+Cut=\u526A\u4E0B
+Cut.AcceleratorKey=X,ctrl
+Delete=Delete
+Edit=\u96E2\u958B
+Finish=Finish
+Forward=\u4E0B\u3127\u9801
+Forward.AcceleratorKey=0x25,alt
+Go=\u57F7\u884C
+Help=\u5E6B\u52A9
+Help.AcceleratorKey=0x70
+Next=Next
+No=\u5426\u5B9A
+OK=\u78BA\u8A8D
+Remove=Remove
+Reset=Reset
+Save=\u5132\u5B58
+Save.AcceleratorKey=S,ctrl
+Yes=\u78BA\u8A8D
+
+Browse\ for\ a\ directory\ to\ select.=\u9078\u64C7\u3127\u500B\u6A94\u6848
+
+Large\ Tool\ Bar=\u5927\u5DE5\u5177\u5716\u793A
+Multiple\ Document\ Interface=\u591A\u6587\u4EF6\u4ECB\u9762
+Show\ Tool\ Bar=\u5DE5\u5177\u5217
+Show\ Tool\ Bar\ Text=\u5DE5\u5177\u5716\u793A\u6587\u5B57
+Tabbed\ Document\ Interface=\u55AE\u6587\u4EF6\u4ECB\u9762
+Toggle\ size\ of\ the\ tool\ bar\ icons=\u5207\u63DB\u5DE5\u5177\u5716\u793A
+Toggle\ the\ display\ of\ the\ tool\ bar=\u986F\u793A\u5DE5\u5177\u5217
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=\u5207\u63DB\u5716\u793A\u6587\u5B57

Added: trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_zh_CN.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_zh_CN.properties	                        (rev 0)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/UserMsg_zh_CN.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -0,0 +1,39 @@
+
+Add=\u589E\u52A0
+Apply=\u5957\u7528
+Back=\u4E0A\u3127\u9875
+Back.AcceleratorKey=0x27,alt
+Browse=\u6D4F\u89C8
+Cancel=\u53D6\u6D88
+Close=\u5173\u95ED
+Copy=\u9ECF\u8D34
+Copy.AcceleratorKey=C,ctrl
+Cut=\u526A\u5207
+Cut.AcceleratorKey=X,ctrl
+Delete=Delete
+Edit=\u7F16\u8F91
+Finish=Finish
+Forward=\u4E0B\u3127\u9875
+Forward.AcceleratorKey=0x25,alt
+Go=\u6267\u884C
+Help=\u5E2E\u52A9
+Help.AcceleratorKey=0x70
+Next=Next
+No=\u5426\u5B9A
+OK=\u786E\u8BA4
+Remove=Remove
+Reset=Reset
+Save=\u50A8\u5B58
+Save.AcceleratorKey=S,ctrl
+Yes=\u786E\u8BA4
+
+Browse\ for\ a\ directory\ to\ select.=\u9009\u62E9\u3127\u4E2A\u6863\u6848
+
+Large\ Tool\ Bar=\u5927\u5DE5\u5177\u56FE\u793A
+Multiple\ Document\ Interface=\u591A\u6587\u4EF6\u4ECB\u9762
+Show\ Tool\ Bar=\u5DE5\u5177\u5217
+Show\ Tool\ Bar\ Text=\u5DE5\u5177\u56FE\u793A\u6587\u5B57
+Tabbed\ Document\ Interface=\u5355\u6587\u4EF6\u4ECB\u9762
+Toggle\ size\ of\ the\ tool\ bar\ icons=\u5207\u6362\u5DE5\u5177\u56FE\u793A
+Toggle\ the\ display\ of\ the\ tool\ bar=\u663E\u793A\u5DE5\u5177\u5217
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=\u5207\u6362\u56FE\u793A\u6587\u5B57

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,15 +1,10 @@
-Multiple\ Document\ Interface = Multiple Document Interface
 
-Tabbed\ Document\ Interface = Tabbed Document Interface
-
-Untitled\ {0} = Untitled {0}
-
-ToolBarLarge.Name    = Large Tool Bar
-ToolBarLarge.ToolTip = Toggle size of the tool bar icons
-
-ToolBarText.Name    = Show Tool Bar Text
-ToolBarText.ToolTip = Toggle the display of the tool bar text
-
-ToolBarToggle.AcceleratorKey = B,ctrl
-ToolBarToggle.Name           = Show Tool Bar
-ToolBarToggle.ToolTip        = Toggle the display of the tool bar
+Large\ Tool\ Bar=Large Tool Bar
+Multiple\ Document\ Interface=Multiple Document Interface
+Show\ Tool\ Bar=Show Tool Bar
+Show\ Tool\ Bar\ Text=Show Tool Bar Text
+Tabbed\ Document\ Interface=Tabbed Document Interface
+Toggle\ size\ of\ the\ tool\ bar\ icons=Toggle size of the tool bar icons
+Toggle\ the\ display\ of\ the\ tool\ bar=Toggle the display of the tool bar
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=Toggle the display of the tool bar text
+Untitled\ {0}=Untitled {0}

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_de.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_de.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_de.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,11 +1,8 @@
 
+Large\ Tool\ Bar=Gro\u00DFe Symbole
+Show\ Tool\ Bar=Zeige Symbolleiste
+Show\ Tool\ Bar\ Text=Zeige Symbole mit Text
+Toggle\ size\ of\ the\ tool\ bar\ icons=Schalte Symbolleiste gro\u00DF/klein
+Toggle\ the\ display\ of\ the\ tool\ bar=Schalte Symbolleiste an/aus
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=Schalte Symbolleisten-Text an/aus
 Untitled\ {0}=Ohne Titel {0}
-
-ToolBarLarge.Name    = Gro\u00DFe Symbole
-ToolBarLarge.ToolTip = Schalte Symbolleiste gro\u00DF/klein
-
-ToolBarText.Name    = Zeige Symbole mit Text
-ToolBarText.ToolTip = Schalte Symbolleisten-Text an/aus
-
-ToolBarToggle.Name                     = Zeige Symbolleiste
-ToolBarToggle.ToolTip                  = Schalte Symbolleiste an/aus

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_fa.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_fa.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_fa.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,12 +1,10 @@
-Multiple\ Document\ Interface = \u067e\u0646\u062c\u0631\u0647 \u0647\u0627
-Tabbed\ Document\ Interface = \u0636\u0641\u062d\u0647 \u0647\u0627
-Untitled\ {0} = \u0628\u06cc \u0646\u0627\u0645 {0}
 
-ToolBarLarge.Name    = \u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631 \u0628\u0632\u0631\u06AF
-ToolBarLarge.ToolTip = \u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631 \u0628\u0632\u0631\u06AF
-
-ToolBarText.Name    = \u0645\u062A\u0646 \u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631
-ToolBarText.ToolTip = \u0645\u062A\u0646 \u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631
-
-ToolBarToggle.Name                     = \u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631
-ToolBarToggle.ToolTip                  = \u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631
+Large\ Tool\ Bar=\u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631 \u0628\u0632\u0631\u06AF
+Multiple\ Document\ Interface=\u067E\u0646\u062C\u0631\u0647 \u0647\u0627
+Show\ Tool\ Bar=\u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631
+Show\ Tool\ Bar\ Text=\u0645\u062A\u0646 \u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631
+Tabbed\ Document\ Interface=\u0636\u0641\u062D\u0647 \u0647\u0627
+Toggle\ size\ of\ the\ tool\ bar\ icons=\u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631 \u0628\u0632\u0631\u06AF
+Toggle\ the\ display\ of\ the\ tool\ bar=\u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=\u0645\u062A\u0646 \u0633\u062A\u0648\u0646 \u0627\u0628\u0632\u0627\u0631
+Untitled\ {0}=\u0628\u06CC \u0646\u0627\u0645 {0}

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_in.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_in.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_in.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,12 +1,9 @@
 
+Large\ Tool\ Bar=Besar Tool Bar
 Multiple\ Document\ Interface=Antar muka Multiple Document
+Show\ Tool\ Bar=Tampilkan Tool Bar
+Show\ Tool\ Bar\ Text=Tampilkan Tool Bar Teks
 Tabbed\ Document\ Interface=Antar muka Tabbed
-
-ToolBarLarge.Name    = Besar Tool Bar
-ToolBarLarge.ToolTip = Tuas untuk tool bar ikon
-
-ToolBarText.Name    = Tampilkan Tool Bar Teks
-ToolBarText.ToolTip = Tuas untuk tool bar teks
-
-ToolBarToggle.Name                     = Tampilkan Tool Bar
-ToolBarToggle.ToolTip                  = Tuas untuk tampilan tool bar
+Toggle\ size\ of\ the\ tool\ bar\ icons=Tuas untuk tool bar ikon
+Toggle\ the\ display\ of\ the\ tool\ bar=Tuas untuk tampilan tool bar
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=Tuas untuk tool bar teks

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_vi.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_vi.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_vi.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,12 +1,10 @@
-Multiple\ Document\ Interface = Ch\u1ebf \u0110\u1ed9 C\u1eeda S\u1ed5 Ti\u1ec3u
-Tabbed\ Document\ Interface = Ch\u1ebf \u0110\u1ed9 Th\u1ebb Tab
-Untitled\ {0} = Kh\u00f4ng T\u00ean {0}
 
-ToolBarLarge.Name    = Thanh C\u00F4ng C\u1EE5 L\u1EDBn
-ToolBarLarge.ToolTip = Ch\u1ECDn C\u1EE1 Bi\u1EC3u T\u01B0\u1EE3ng Thanh C\u00F4ng C\u1EE5
-
-ToolBarText.Name    = Hi\u1EC7n B\u1EA3n V\u0103n Thanh C\u00F4ng C\u1EE5
-ToolBarText.ToolTip = Hi\u1EC7n/Gi\u1EA5u B\u1EA3n V\u0103n Thanh C\u00F4ng C\u1EE5
-
-ToolBarToggle.Name                     = Hi\u1EC7n Thanh C\u00F4ng C\u1EE5
-ToolBarToggle.ToolTip                  = M\u1EDF/T\u1EAFt Thanh C\u00F4ng C\u1EE5
+Large\ Tool\ Bar=Thanh C\u00F4ng C\u1EE5 L\u1EDBn
+Multiple\ Document\ Interface=Ch\u1EBF \u0110\u1ED9 C\u1EEDa S\u1ED5 Ti\u1EC3u
+Show\ Tool\ Bar=Hi\u1EC7n Thanh C\u00F4ng C\u1EE5
+Show\ Tool\ Bar\ Text=Hi\u1EC7n B\u1EA3n V\u0103n Thanh C\u00F4ng C\u1EE5
+Tabbed\ Document\ Interface=Ch\u1EBF \u0110\u1ED9 Th\u1EBB Tab
+Toggle\ size\ of\ the\ tool\ bar\ icons=Ch\u1ECDn C\u1EE1 Bi\u1EC3u T\u01B0\u1EE3ng Thanh C\u00F4ng C\u1EE5
+Toggle\ the\ display\ of\ the\ tool\ bar=M\u1EDF/T\u1EAFt Thanh C\u00F4ng C\u1EE5
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=Hi\u1EC7n/Gi\u1EA5u B\u1EA3n V\u0103n Thanh C\u00F4ng C\u1EE5
+Untitled\ {0}=Kh\u00F4ng T\u00EAn {0}

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_zh.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_zh.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_zh.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,12 +1,9 @@
 
+Large\ Tool\ Bar=\u5927\u5DE5\u5177\u5716\u793A
 Multiple\ Document\ Interface=\u591A\u6587\u4EF6\u4ECB\u9762
+Show\ Tool\ Bar=\u5DE5\u5177\u5217
+Show\ Tool\ Bar\ Text=\u5DE5\u5177\u5716\u793A\u6587\u5B57
 Tabbed\ Document\ Interface=\u55AE\u6587\u4EF6\u4ECB\u9762
-
-ToolBarLarge.Name    = \u5927\u5DE5\u5177\u5716\u793A
-ToolBarLarge.ToolTip = \u5207\u63DB\u5DE5\u5177\u5716\u793A
-
-ToolBarText.Name    = \u5DE5\u5177\u5716\u793A\u6587\u5B57
-ToolBarText.ToolTip = \u5207\u63DB\u5716\u793A\u6587\u5B57
-
-ToolBarToggle.Name                     = \u5DE5\u5177\u5217
-ToolBarToggle.ToolTip                  = \u986F\u793A\u5DE5\u5177\u5217
+Toggle\ size\ of\ the\ tool\ bar\ icons=\u5207\u63DB\u5DE5\u5177\u5716\u793A
+Toggle\ the\ display\ of\ the\ tool\ bar=\u986F\u793A\u5DE5\u5177\u5217
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=\u5207\u63DB\u5716\u793A\u6587\u5B57

Modified: trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_zh_CN.properties
===================================================================
--- trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_zh_CN.properties	2011-03-03 03:35:55 UTC (rev 2084)
+++ trunk/common-swing/src/main/resources/org/crosswire/common/swing/desktop/UserMsg_zh_CN.properties	2011-03-03 03:41:41 UTC (rev 2085)
@@ -1,12 +1,9 @@
 
+Large\ Tool\ Bar=\u5927\u5DE5\u5177\u56FE\u793A
 Multiple\ Document\ Interface=\u591A\u6587\u4EF6\u4ECB\u9762
+Show\ Tool\ Bar=\u5DE5\u5177\u5217
+Show\ Tool\ Bar\ Text=\u5DE5\u5177\u56FE\u793A\u6587\u5B57
 Tabbed\ Document\ Interface=\u5355\u6587\u4EF6\u4ECB\u9762
-
-ToolBarLarge.Name    = \u5927\u5DE5\u5177\u56FE\u793A
-ToolBarLarge.ToolTip = \u5207\u6362\u5DE5\u5177\u56FE\u793A
-
-ToolBarText.Name    = \u5DE5\u5177\u56FE\u793A\u6587\u5B57
-ToolBarText.ToolTip = \u5207\u6362\u56FE\u793A\u6587\u5B57
-
-ToolBarToggle.Name                     = \u5DE5\u5177\u5217
-ToolBarToggle.ToolTip                  = \u663E\u793A\u5DE5\u5177\u5217
+Toggle\ size\ of\ the\ tool\ bar\ icons=\u5207\u6362\u5DE5\u5177\u56FE\u793A
+Toggle\ the\ display\ of\ the\ tool\ bar=\u663E\u793A\u5DE5\u5177\u5217
+Toggle\ the\ display\ of\ the\ tool\ bar\ text=\u5207\u6362\u56FE\u793A\u6587\u5B57




More information about the jsword-svn mailing list