org.homeunix.thecave.moss.i18n
Class LanguageEditor

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by org.homeunix.thecave.moss.swing.MossFrame
                          extended by org.homeunix.thecave.moss.swing.MossDocumentFrame
                              extended by org.homeunix.thecave.moss.i18n.LanguageEditor
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants, StandardContainer, StandardWindow
Direct Known Subclasses:
BuddiLanguageEditor

public class LanguageEditor
extends MossDocumentFrame

A fairly complete standalone translation editor. This allows people to easily translate terms in a program. It is designed to work well with the Moss Translator objects, but it should be fine anywhere that a programmer uses enumerations (or a list of string constants, although that is much harder for the programmer) for a list of keys to translate. To run the language editor, use code similar to the following: try { LanguageEditor editor = new LanguageEditor(".lang"); editor.loadKeys((Enum[]) FirstEnum.values()); editor.loadKeys((Enum[]) SecondEnum.values()); ... editor.loadLanguages(File pathToLanguages, "English", "Espanol", ...); ... editor.openWindow(); } catch (WindowOpenException woe){} You cannot load more keys or languages once you have opened the window (well, you probably could, but I don't know what would happen, so don't try it). Once you start the language editor, you will see a list of keys along the left side. Click on each one in turn, and enter the translation in the correct language's text area. It saves to memory automatically when you click on a new key. Once you are complete, you can programmatically call the save() or save(File) method. It is generally recommended to extend this class, and add a menu option or button for your users to save their changes. When you save, it will output a translation .properties file for each of the languages you loaded initially (using the loadLanguages() methods). This file will include the original file, along with all changes you made in this session. This file (along with the rest of Moss) is written by Wyatt Olson, and released under the GPL. If you wish to include this software in a commercial project, please contact me (wyatt.olson@gmail.com), and we can discuss the possibility of purchasing a different license more suitable for your needs.

Author:
wyatt
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
static long serialVersionUID
           
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
LanguageEditor()
           
LanguageEditor(java.lang.String translationSuffix)
           
LanguageEditor(java.lang.String translationSuffix, java.lang.String primaryLanguage)
          Creates a new LanguageEditor pane, with the specified translation suffix, primary language, and embedded state.
 
Method Summary
 boolean canClose()
          Checks if you can close the window.
 void init()
          The method to initialize the container.
 void initPostPack()
          A method which is called after the pack() method in openWindow, but before the setVisible(true).
 void loadKeys(java.lang.Enum<?>... keys)
           
 void loadKeys(java.lang.String... keys)
           
 void loadLanguages(java.io.File languageDirectory, java.lang.String... languages)
           
 void loadLanguages(java.lang.String resourcePath, java.io.File jarFile, java.lang.String... languages)
           
 void loadLanguages(java.lang.String resourcePath, java.lang.String... languages)
           
 void save()
           
 void saveAs(java.io.File directory)
          Saves the translations to the given directory.
 
Methods inherited from class org.homeunix.thecave.moss.swing.MossDocumentFrame
getDocument, isDocumentSaved, updateContent
 
Methods inherited from class org.homeunix.thecave.moss.swing.MossFrame
clear, closeWindow, closeWindowWithoutPrompting, openWindow, openWindow, openWindow, openWindow, requestFocusInApplication, setJMenuBar, updateButtons, updateMenus
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update
 
Methods inherited from class java.awt.Frame
addNotify, finalize, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setAlwaysOnTop, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationByPlatform, setLocationRelativeTo, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

serialVersionUID

public static final long serialVersionUID
See Also:
Constant Field Values
Constructor Detail

LanguageEditor

public LanguageEditor()

LanguageEditor

public LanguageEditor(java.lang.String translationSuffix)

LanguageEditor

public LanguageEditor(java.lang.String translationSuffix,
                      java.lang.String primaryLanguage)
Creates a new LanguageEditor pane, with the specified translation suffix, primary language, and embedded state.

Parameters:
translationSuffix - The suffix to append to each language when reading / writing.
primaryLanguage - If set, we disable editing on languages other than this one
Method Detail

init

public void init()
Description copied from interface: StandardContainer
The method to initialize the container. This should do at minimum the following: a) Create and add apropriate UI controls (buttons, panels, etc). This is generally done in the View level. b) Create and add actions to the UI controls. This is generally done at the Controller level. In short, init() should do everything required to make a fully function window, other than pack(), setVisible(true), and any positioning methods as required for a given window. init() MUST only be called once. You should not call it directly, unless you do not call openWindow().

Specified by:
init in interface StandardContainer
Overrides:
init in class MossFrame

initPostPack

public void initPostPack()
Description copied from interface: StandardWindow
A method which is called after the pack() method in openWindow, but before the setVisible(true). This allows you to do some initialization based on the post-packed size of components.

Specified by:
initPostPack in interface StandardWindow
Overrides:
initPostPack in class MossFrame

canClose

public boolean canClose()
Description copied from class: MossFrame
Checks if you can close the window. The default implementation returns true always; you can override this to check conditions, and perhaps prompt the user for a save or something before returning. If this method returns false, the close operation is cancelled.

Overrides:
canClose in class MossFrame
Returns:
Returns true if you can close the window, false otherwise.

loadKeys

public void loadKeys(java.lang.Enum<?>... keys)

loadKeys

public void loadKeys(java.lang.String... keys)

loadLanguages

public void loadLanguages(java.lang.String resourcePath,
                          java.lang.String... languages)

loadLanguages

public void loadLanguages(java.lang.String resourcePath,
                          java.io.File jarFile,
                          java.lang.String... languages)

loadLanguages

public void loadLanguages(java.io.File languageDirectory,
                          java.lang.String... languages)

save

public void save()
          throws DocumentSaveException
Throws:
DocumentSaveException

saveAs

public void saveAs(java.io.File directory)
            throws DocumentSaveException
Saves the translations to the given directory.

Parameters:
file -
Throws:
DocumentSaveException