org.merlotxml.merlot
Class GenericDOMEditPanel

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JPanel
                          |
                          +--org.merlotxml.merlot.GenericDOMEditPanel

public class GenericDOMEditPanel
extends javax.swing.JPanel
implements MerlotConstants

This is a generic node editing panel which provides a component for each attribute listed with the element it's created to edit, along with a text box for PCDATA.

This class can be extended to change what the user sees for each attribute field. Typically the easiest methods to overload for this type of custom editors are getEditComponent() and sometimes save().

Author:
Kelly Campbell
See Also:
Serialized Form

Inner classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Inner classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Field Summary
protected  java.util.Hashtable _attrComponents
          Map of attribute names to attribute components (key is String, val is JComponent)
protected  java.util.Hashtable _dtd_attributes
          Map of attribute names to their DTDAttribute declaration
protected  MerlotDOMNode _node
          The node this editor was created for
protected  org.w3c.dom.NamedNodeMap _node_attributes
          The attributes and their values from this node
protected static javax.swing.Icon _requiredAttrIcon
          The icon to use for required attribute labels
protected  MerlotDOMText _subtext
          A node which is the child #text element for this node
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface org.merlotxml.merlot.MerlotConstants
ACTION_MENU_ACCELERATOR, ACTION_MENU_ICON, ACTION_NAME, ACTION_SHORT_DESCRIPTION, ACTION_SMALL_ICON, AFTER, BEFORE, ERR, INTO, UI, XML
 
Constructor Summary
GenericDOMEditPanel(MerlotDOMNode node)
           
 
Method Summary
protected  void addAttribute(DTDAttribute a)
           
protected  void addAttributeComponent(javax.swing.JLabel l, javax.swing.JComponent c, int align)
           
 void addVetoableChangeListener(java.beans.VetoableChangeListener l)
           
 void fireVetoableChange(java.beans.PropertyChangeEvent evt)
           
protected  javax.swing.JComponent getEditComponent(DTDAttribute attr)
          Create a component based on the attribute type, and get the default from the node, or if the node doesn't have it set, get the default value from the attribute definition itself
protected  javax.swing.Icon getRequiredAttrIcon()
           
 void grabFocus()
           
 void removeVetoableChangeListener(java.beans.VetoableChangeListener l)
           
 void save()
          Saves any changes back to the DOM
protected  void save(java.util.HashMap attributes)
          Subclasses can call this version of save, passing attributes they want to save in the hashmap.
protected  void setupHideTable()
           
protected  void setupPanel()
           
protected  void setupReadonlyTable()
           
protected  boolean suppressAttribute(DTDAttribute a)
          returns true if the attribute doesn't show in the editor display
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUIClassID, paramString, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, computeVisibleRect, contains, createToolTip, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getGraphics, getHeight, getInsets, getInsets, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getVisibleRect, getWidth, getX, getY, hasFocus, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, processComponentKeyEvent, processFocusEvent, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFont, setForeground, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getLayout, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setCursor, setLayout, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hide, imageUpdate, inside, isDisplayable, isEnabled, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setDropTarget, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_requiredAttrIcon

protected static javax.swing.Icon _requiredAttrIcon
The icon to use for required attribute labels

_node

protected MerlotDOMNode _node
The node this editor was created for

_subtext

protected MerlotDOMText _subtext
A node which is the child #text element for this node

_node_attributes

protected org.w3c.dom.NamedNodeMap _node_attributes
The attributes and their values from this node

_dtd_attributes

protected java.util.Hashtable _dtd_attributes
Map of attribute names to their DTDAttribute declaration

_attrComponents

protected java.util.Hashtable _attrComponents
Map of attribute names to attribute components (key is String, val is JComponent)
Constructor Detail

GenericDOMEditPanel

public GenericDOMEditPanel(MerlotDOMNode node)
Method Detail

setupPanel

protected void setupPanel()

suppressAttribute

protected boolean suppressAttribute(DTDAttribute a)
returns true if the attribute doesn't show in the editor display

setupHideTable

protected void setupHideTable()

setupReadonlyTable

protected void setupReadonlyTable()

addAttribute

protected void addAttribute(DTDAttribute a)

getRequiredAttrIcon

protected javax.swing.Icon getRequiredAttrIcon()

addAttributeComponent

protected void addAttributeComponent(javax.swing.JLabel l,
                                     javax.swing.JComponent c,
                                     int align)

getEditComponent

protected javax.swing.JComponent getEditComponent(DTDAttribute attr)
Create a component based on the attribute type, and get the default from the node, or if the node doesn't have it set, get the default value from the attribute definition itself

save

public void save()
          throws java.beans.PropertyVetoException
Saves any changes back to the DOM

save

protected void save(java.util.HashMap attributes)
             throws java.beans.PropertyVetoException
Subclasses can call this version of save, passing attributes they want to save in the hashmap. Note that attributes passed in this map overide any attributes of the same name from the UI components of this editor panel.

grabFocus

public void grabFocus()
Overrides:
grabFocus in class javax.swing.JComponent

addVetoableChangeListener

public void addVetoableChangeListener(java.beans.VetoableChangeListener l)
Overrides:
addVetoableChangeListener in class javax.swing.JComponent

removeVetoableChangeListener

public void removeVetoableChangeListener(java.beans.VetoableChangeListener l)
Overrides:
removeVetoableChangeListener in class javax.swing.JComponent

fireVetoableChange

public void fireVetoableChange(java.beans.PropertyChangeEvent evt)
                        throws java.beans.PropertyVetoException