org.homeunix.thecave.moss.i18n
Class LanguageEditor
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
org.homeunix.thecave.moss.swing.MossFrame
org.homeunix.thecave.moss.swing.MossDocumentFrame
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 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 |
| 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.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 |
serialVersionUID
public static final long serialVersionUID
- See Also:
- Constant Field Values
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
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