jfig.gui
Class JPropertiesViewer

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjava.awt.Window
              extended byjava.awt.Frame
                  extended byjavax.swing.JFrame
                      extended byjfig.gui.JPropertiesViewer
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.event.ActionListener, java.util.EventListener, java.awt.image.ImageObserver, java.awt.MenuContainer, javax.swing.RootPaneContainer, java.io.Serializable, javax.swing.WindowConstants
Direct Known Subclasses:
JPropertiesViewer

public class JPropertiesViewer
extends javax.swing.JFrame
implements java.awt.event.ActionListener

a Swing dialog to view (and edit) key/value pairs from a Properties object.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
 
Nested classes inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Nested classes inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  javax.swing.JButton applyButton
           
protected  javax.swing.JButton okButton
           
protected  java.util.Properties properties
           
protected  javax.swing.JButton reloadButton
           
protected  javax.swing.JButton saveAsUserPropertiesButton
           
protected  javax.swing.JButton saveAsWorkingDirPropertiesButton
           
protected  javax.swing.JTextArea textArea
           
protected  javax.swing.JTextField userPropertiesTF
           
protected  javax.swing.JTextField workingDirPropertiesTF
           
 
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.Window
 
Fields inherited from class java.awt.Container
 
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
JPropertiesViewer(java.util.Properties _properties)
           
 
Method Summary
 java.lang.String _escapeBackslashes(java.lang.String s)
          the format specification for Properties treats backslash characters as special escape characters.
 void actionPerformed(java.awt.event.ActionEvent evt)
           
 void buildGUI()
          the panel to center the "OK", "Apply", and "Cancel" buttons
 boolean checkShouldWriteProperty(java.lang.String name)
          for jfig, we only want to save properties whose name startsWith "jfig"...
 void doApply()
          parse the key/value pairs from the textArea, and update our "properties" data.
 void doOK()
           
 void doReload()
          dispatches to showProperties.
 void doSaveUserProperties()
           
 void doSaveWorkingDirProperties()
           
 void err(java.lang.String s)
           
 java.lang.String getDefaultPropertiesFileName()
          return ".jfigrc", which is the default name for the jfig properties file.
 java.lang.String getEscapedVisibleText()
          return the contents of the PropertiesViewer text area after replacing backslashes with double backslashes.
 void getGUIDefaults()
          load fonts and background color from the SetupManager, if any
static void main(java.lang.String[] argv)
          main(), for debugging mainly
 void setProperties(java.util.Properties _properties)
           
 void showProperties()
          display all key/value pairs from our "properties" collection on our textArea, one key/value per line, and sorted alphabetically by key names.
 void writeProperties(java.io.PrintStream ps, java.lang.String header)
          write a header line (with leading "#" character) and the the alphabetically sorted set of global/user/local properties to the given PrintStream.
 void writePropertiesFromVisibleText(java.io.PrintStream ps, java.lang.String header)
          write a header line (with leading "#" character) and the the alphabetically sorted set of global/user/local properties from the current textArea to the given PrintStream.
 
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, setJMenuBar, 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, setIconImage, 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, isFocusableWindow, isFocusCycleRoot, isFocused, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setCursor, setFocusableWindowState, setFocusCycleRoot, 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, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setFocusTraversalKeys, setFocusTraversalPolicy, 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, 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, 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, isOpaque, 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, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, 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

properties

protected java.util.Properties properties

textArea

protected javax.swing.JTextArea textArea

okButton

protected javax.swing.JButton okButton

applyButton

protected javax.swing.JButton applyButton

reloadButton

protected javax.swing.JButton reloadButton

saveAsUserPropertiesButton

protected javax.swing.JButton saveAsUserPropertiesButton

saveAsWorkingDirPropertiesButton

protected javax.swing.JButton saveAsWorkingDirPropertiesButton

userPropertiesTF

protected javax.swing.JTextField userPropertiesTF

workingDirPropertiesTF

protected javax.swing.JTextField workingDirPropertiesTF
Constructor Detail

JPropertiesViewer

public JPropertiesViewer(java.util.Properties _properties)
Method Detail

getDefaultPropertiesFileName

public java.lang.String getDefaultPropertiesFileName()
return ".jfigrc", which is the default name for the jfig properties file. Override for subclasses.


getGUIDefaults

public void getGUIDefaults()
load fonts and background color from the SetupManager, if any


buildGUI

public void buildGUI()
the panel to center the "OK", "Apply", and "Cancel" buttons


setProperties

public void setProperties(java.util.Properties _properties)

showProperties

public void showProperties()
display all key/value pairs from our "properties" collection on our textArea, one key/value per line, and sorted alphabetically by key names.

Note that we omit the "line.separator" property, because parsing it back using the java.util.Properties API is a complete mess... It is also a bad idea to add the line back via the GUI, because setting a wrong value for "line.separator" may really break the way the output streams handle println()...


_escapeBackslashes

public java.lang.String _escapeBackslashes(java.lang.String s)
the format specification for Properties treats backslash characters as special escape characters. When writing a property or key value, we need to write a single backslash as a double backslash...


doReload

public void doReload()
dispatches to showProperties.


doApply

public void doApply()
parse the key/value pairs from the textArea, and update our "properties" data.


doOK

public void doOK()

doSaveUserProperties

public void doSaveUserProperties()

doSaveWorkingDirProperties

public void doSaveWorkingDirProperties()

writeProperties

public void writeProperties(java.io.PrintStream ps,
                            java.lang.String header)
write a header line (with leading "#" character) and the the alphabetically sorted set of global/user/local properties to the given PrintStream. In order not to write the system properties, we call checkShouldWriteProperty() for each property.


getEscapedVisibleText

public java.lang.String getEscapedVisibleText()
return the contents of the PropertiesViewer text area after replacing backslashes with double backslashes. This method is useful to prepare the (possibly edited) GUI properties text for a later call to Properties.load().


writePropertiesFromVisibleText

public void writePropertiesFromVisibleText(java.io.PrintStream ps,
                                           java.lang.String header)
write a header line (with leading "#" character) and the the alphabetically sorted set of global/user/local properties from the current textArea to the given PrintStream.

In order not to write the system properties, we call checkShouldWriteProperty() for each property.


checkShouldWriteProperty

public boolean checkShouldWriteProperty(java.lang.String name)
for jfig, we only want to save properties whose name startsWith "jfig"... Override as needed for other applications.


actionPerformed

public void actionPerformed(java.awt.event.ActionEvent evt)
Specified by:
actionPerformed in interface java.awt.event.ActionListener

err

public void err(java.lang.String s)

main

public static void main(java.lang.String[] argv)
main(), for debugging mainly