Package org.apache.batik.apps.svgbrowser
Class NodePickerPanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- org.apache.batik.apps.svgbrowser.NodePickerPanel
-
- All Implemented Interfaces:
java.awt.image.ImageObserver,java.awt.MenuContainer,java.io.Serializable,javax.accessibility.Accessible,ActionMap
public class NodePickerPanel extends javax.swing.JPanel implements ActionMap
Used to preview and edit nodes.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classNodePickerPanel.AddButtonActionThe action associated with the 'Add' button.protected classNodePickerPanel.ApplyButtonActionThe action associated with the 'Apply' button.static classNodePickerPanel.AttributesTableModelThe attributesTable model.protected classNodePickerPanel.AttributesTableModelListenerListens for the changes in the table and updates this node picker panel if needed.static classNodePickerPanel.NameEditorDialogDialog for choosing element name.static classNodePickerPanel.NodePickerAdapterThe adapter for the NodePicker listener.protected classNodePickerPanel.NodePickerEditListenerManages the edits on focus events.static classNodePickerPanel.NodePickerEventEvent to pass to listener.static interfaceNodePickerPanel.NodePickerListenerNode picker listener.protected classNodePickerPanel.RemoveButtonActionThe action associated with the 'Remove' button.protected classNodePickerPanel.ResetButtonActionThe action associated with the 'Reset' button.protected static classNodePickerPanel.SVGInputPanelThe panel to view and edit the elements xml representation.protected classNodePickerPanel.XMLAreaListenerListens for the changes in the xml text area and updates this node picker panel if needed.-
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description private static intADD_NEW_ELEMENTCreates new element while in this mode.private javax.swing.JButtonaddButtonThe Add button.private javax.swing.JButtonapplyButtonThe Apply button.private javax.swing.JScrollPaneattributePaneThe Attributes table ScrollPane.private javax.swing.JLabelattributesLabelThe Attributes table label.private javax.swing.JPanelattributesPanelThe Attributes table and buttons Panel.private javax.swing.JTableattributesTableThe attributes table - the table that consists of attribute name and attribute value columns.private static java.util.ResourceBundlebundleThe resource bundle.private ButtonFactorybuttonFactoryThe Button factory.private javax.swing.JPanelchoosePanelThe OK and Cancel button Panel.private org.w3c.dom.ElementclonedElementThe copy of the original (preview) element.private NodePickerControllercontrollerThe controller for this panel.private static intEDIT_MODEEdit mode.private javax.swing.event.EventListenerListeventListenersListeners list.private booleanisDirtyIf the element being edited is actually changed.private javax.swing.JLabelisWellFormedLabelThe isWellFormed label.private java.util.MaplistenersThe map that contains the listenersprivate intmodeThe panel mode.private org.w3c.dom.NodeparentElementThe parent Element for the element to be added.private org.w3c.dom.ElementpreviewElementThe element that is being previewed or edited it's content (xml representation).private javax.swing.JButtonremoveButtonThe Remove button.private javax.swing.JButtonresetButtonThe Reset button.private static ResourceManagerresourcesThe resource manager.private static java.lang.StringRESOURCESThe resource file name.private booleanshouldProcessUpdateIf the attribute table listener should process the update event and update node picker after an update on the table had triggered.private NodePickerPanel.SVGInputPanelsvgInputPanelThe svg input panel.private javax.swing.JLabelsvgInputPanelNameLabelThe svgInputPanel name label.private javax.swing.event.TableModelListenertableModelListenerThe Attribute table model listener.private static intVIEW_MODEView only.-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description NodePickerPanel(NodePickerController controller)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddButtonActions()Adds button actions.voidaddListener(NodePickerPanel.NodePickerListener listener)Adds the listener to the listener list.voidenterAddNewElementMode(org.w3c.dom.Element newElement, org.w3c.dom.Node parent)Enters the add new element mode.voidenterEditMode()Enters the edit mode.voidenterViewMode()Enters the view mode.voidfireAddNewElement(NodePickerPanel.NodePickerEvent event)Fires the AddNewElement event.voidfireUpdateElement(NodePickerPanel.NodePickerEvent event)Fires the updateElement event.javax.swing.ActiongetAction(java.lang.String key)Returns the action associated with the given string or null on errorprivate javax.swing.JButtongetAddButton()Gets the Add button.private javax.swing.JButtongetApplyButton()Gets the Apply button.private javax.swing.JPanelgetAttributesPanel()Gets the attributesPanel.private ButtonFactorygetButtonFactory()Gets buttonFactory.private javax.swing.JPanelgetChoosePanel()Gets the choosePanel.private intgetMode()Gets the current working mode.private java.lang.StringgetNamespaceURI(java.lang.String prefix)Looks up for the namespaceURI based on the given prefix.private org.w3c.dom.ElementgetPreviewElement()Getter for the preivewElement.private javax.swing.JButtongetRemoveButton()Gets the Remove button.private javax.swing.JButtongetResetButton()Gets the Reset sbutton.java.lang.StringgetResults()Gets the results of this node picker panel - gets the contents of the xml text area.private NodePickerPanel.SVGInputPanelgetSvgInputPanel()Gets the svgInputPanel.private voidinitialize()Initalizes this panel.private booleanisANodePickerComponent(java.awt.Component component)Checks whether the given component is a part component of the this node picker.private booleanisElementModified()Whether the element being edit is changed.(package private) booleanpanelHiding()Invoked by theDOMViewerto inform theNodePickerPanelthat it is being hidden.private org.w3c.dom.ElementparseXml(java.lang.String xmlString)Parses the given xml and return parsed document's root element.booleanpromptForChanges()Shows a dialog to save changes.private voidremoveAttributes(org.w3c.dom.Element element)Removes all the attributes from an element.voidsetEditable(boolean editable)Sets the node picker components to be editable / uneditable.voidsetPreviewElement(org.w3c.dom.Element elem)Sets the preview element.private booleanshouldUpdate(java.lang.String mutationEventType, org.w3c.dom.Node affectedNode, org.w3c.dom.Node currentNode)If the panel should update its components after dom mutation event.private voidupdateAttributesTable(org.w3c.dom.Element elem)Fills the attributesTable with the given element attribute name - value pairs.private voidupdateElementAttributes(org.w3c.dom.Element element, NodePickerPanel.AttributesTableModel tableModel)Replaces all of the atributes of a given element with the values from the given table model.private voidupdateElementAttributes(org.w3c.dom.Element elem, org.w3c.dom.Element referentElement)Replaces all of the attributes of the given element with the referent element's attributes.private voidupdateNodeXmlArea(org.w3c.dom.Node node)Shows node's String representation in svgInputPanelvoidupdateOnDocumentChange(java.lang.String mutationEventType, org.w3c.dom.Node targetNode)Updates the panel when DOM Mutation event occures.private voidupdateViewAfterSvgInput(org.w3c.dom.Element referentElement, org.w3c.dom.Element elementToUpdate)Update the components and the element after text is being inputted in the xml text area.-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, 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, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
VIEW_MODE
private static final int VIEW_MODE
View only. Inspects the associated node.- See Also:
- Constant Field Values
-
EDIT_MODE
private static final int EDIT_MODE
Edit mode. Used for editing the associated node.- See Also:
- Constant Field Values
-
ADD_NEW_ELEMENT
private static final int ADD_NEW_ELEMENT
Creates new element while in this mode.- See Also:
- Constant Field Values
-
RESOURCES
private static final java.lang.String RESOURCES
The resource file name.- See Also:
- Constant Field Values
-
bundle
private static java.util.ResourceBundle bundle
The resource bundle.
-
resources
private static ResourceManager resources
The resource manager.
-
attributesTable
private javax.swing.JTable attributesTable
The attributes table - the table that consists of attribute name and attribute value columns. Shows the element's attributes.
-
tableModelListener
private javax.swing.event.TableModelListener tableModelListener
The Attribute table model listener.
-
attributePane
private javax.swing.JScrollPane attributePane
The Attributes table ScrollPane.
-
attributesPanel
private javax.swing.JPanel attributesPanel
The Attributes table and buttons Panel.
-
buttonFactory
private ButtonFactory buttonFactory
The Button factory.
-
addButton
private javax.swing.JButton addButton
The Add button.
-
removeButton
private javax.swing.JButton removeButton
The Remove button.
-
attributesLabel
private javax.swing.JLabel attributesLabel
The Attributes table label.
-
applyButton
private javax.swing.JButton applyButton
The Apply button.
-
resetButton
private javax.swing.JButton resetButton
The Reset button.
-
choosePanel
private javax.swing.JPanel choosePanel
The OK and Cancel button Panel.
-
svgInputPanel
private NodePickerPanel.SVGInputPanel svgInputPanel
The svg input panel.
-
isWellFormedLabel
private javax.swing.JLabel isWellFormedLabel
The isWellFormed label.
-
svgInputPanelNameLabel
private javax.swing.JLabel svgInputPanelNameLabel
The svgInputPanel name label.
-
shouldProcessUpdate
private boolean shouldProcessUpdate
If the attribute table listener should process the update event and update node picker after an update on the table had triggered. Used instead of removing and adding the table listener.
-
previewElement
private org.w3c.dom.Element previewElement
The element that is being previewed or edited it's content (xml representation).
-
clonedElement
private org.w3c.dom.Element clonedElement
The copy of the original (preview) element. Used to synchronize svginput area and the attributes table, since the original elements attributes shouldn't be changed while previewing or editing it.
-
parentElement
private org.w3c.dom.Node parentElement
The parent Element for the element to be added. It is used when adding the new element, to get the information on where to be appended.
-
mode
private int mode
The panel mode.
-
isDirty
private boolean isDirty
If the element being edited is actually changed.
-
eventListeners
private javax.swing.event.EventListenerList eventListeners
Listeners list.
-
controller
private NodePickerController controller
The controller for this panel.
-
listeners
private java.util.Map listeners
The map that contains the listeners
-
-
Constructor Detail
-
NodePickerPanel
public NodePickerPanel(NodePickerController controller)
Constructor.- Parameters:
controller- The node picker panel controller
-
-
Method Detail
-
initialize
private void initialize()
Initalizes this panel.
-
getButtonFactory
private ButtonFactory getButtonFactory()
Gets buttonFactory.
-
addButtonActions
private void addButtonActions()
Adds button actions.
-
getAddButton
private javax.swing.JButton getAddButton()
Gets the Add button.
-
getRemoveButton
private javax.swing.JButton getRemoveButton()
Gets the Remove button.
-
getApplyButton
private javax.swing.JButton getApplyButton()
Gets the Apply button.
-
getResetButton
private javax.swing.JButton getResetButton()
Gets the Reset sbutton.
-
getAttributesPanel
private javax.swing.JPanel getAttributesPanel()
Gets the attributesPanel.
-
getSvgInputPanel
private NodePickerPanel.SVGInputPanel getSvgInputPanel()
Gets the svgInputPanel.
-
getChoosePanel
private javax.swing.JPanel getChoosePanel()
Gets the choosePanel.
-
getResults
public java.lang.String getResults()
Gets the results of this node picker panel - gets the contents of the xml text area.
-
updateViewAfterSvgInput
private void updateViewAfterSvgInput(org.w3c.dom.Element referentElement, org.w3c.dom.Element elementToUpdate)Update the components and the element after text is being inputted in the xml text area.- Parameters:
referentElement- The updated element, referent elementelementToUpdate- The element to update.
-
updateElementAttributes
private void updateElementAttributes(org.w3c.dom.Element elem, org.w3c.dom.Element referentElement)Replaces all of the attributes of the given element with the referent element's attributes.- Parameters:
elem- The element whose attributes should be replacedreferentElement- The referentElement to copy the attributes from
-
updateElementAttributes
private void updateElementAttributes(org.w3c.dom.Element element, NodePickerPanel.AttributesTableModel tableModel)Replaces all of the atributes of a given element with the values from the given table model.- Parameters:
element- The node whose attributes should updatetableModel- The tableModel from which to get attributes
-
removeAttributes
private void removeAttributes(org.w3c.dom.Element element)
Removes all the attributes from an element.- Parameters:
element- The given element
-
getNamespaceURI
private java.lang.String getNamespaceURI(java.lang.String prefix)
Looks up for the namespaceURI based on the given prefix. Uses the Node.lookupNamespaceURI method, starting from the parent element of the element being edited / created.- Parameters:
prefix- The given prefix- Returns:
- namespaceURI or null
-
updateAttributesTable
private void updateAttributesTable(org.w3c.dom.Element elem)
Fills the attributesTable with the given element attribute name - value pairs.- Parameters:
elem- The given element
-
updateNodeXmlArea
private void updateNodeXmlArea(org.w3c.dom.Node node)
Shows node's String representation in svgInputPanel- Parameters:
node- The given node
-
getPreviewElement
private org.w3c.dom.Element getPreviewElement()
Getter for the preivewElement.- Returns:
- the preivewElement
-
setPreviewElement
public void setPreviewElement(org.w3c.dom.Element elem)
Sets the preview element. Enters the view mode and updates the associated components.- Parameters:
elem- the element to set
-
panelHiding
boolean panelHiding()
Invoked by theDOMViewerto inform theNodePickerPanelthat it is being hidden.
-
getMode
private int getMode()
Gets the current working mode.- Returns:
- the mode
-
enterViewMode
public void enterViewMode()
Enters the view mode.
-
enterEditMode
public void enterEditMode()
Enters the edit mode.
-
enterAddNewElementMode
public void enterAddNewElementMode(org.w3c.dom.Element newElement, org.w3c.dom.Node parent)Enters the add new element mode.- Parameters:
newElement- The element to be addedparent- The parent node of the element to be added
-
updateOnDocumentChange
public void updateOnDocumentChange(java.lang.String mutationEventType, org.w3c.dom.Node targetNode)Updates the panel when DOM Mutation event occures.
-
shouldUpdate
private boolean shouldUpdate(java.lang.String mutationEventType, org.w3c.dom.Node affectedNode, org.w3c.dom.Node currentNode)If the panel should update its components after dom mutation event. Checks whether any node that is the child node of the node currently being previewed has changed. If true, updates the xml text area of this NodePicker. In case of DOMAttrModiefied mutation event, the additional condition is added - to check whether the attributes of an element that is being previewed are changed. If true, the xml text area is refreshed.- Returns:
- True if should update
-
parseXml
private org.w3c.dom.Element parseXml(java.lang.String xmlString)
Parses the given xml and return parsed document's root element. Used to check whether the given xml is well formed.- Parameters:
xmlString- Xml as a String- Returns:
- Element
-
setEditable
public void setEditable(boolean editable)
Sets the node picker components to be editable / uneditable.- Parameters:
editable- Whether to enable or disable edit
-
isANodePickerComponent
private boolean isANodePickerComponent(java.awt.Component component)
Checks whether the given component is a part component of the this node picker.- Parameters:
component- The given component- Returns:
- True if the given component is a part of the this NodePicker
-
promptForChanges
public boolean promptForChanges()
Shows a dialog to save changes.
-
isElementModified
private boolean isElementModified()
Whether the element being edit is changed.- Returns:
- True if the element being edit is changed
-
getAction
public javax.swing.Action getAction(java.lang.String key) throws MissingListenerExceptionReturns the action associated with the given string or null on error- Specified by:
getActionin interfaceActionMap- Parameters:
key- the key mapped with the action to get- Throws:
MissingListenerException- if the action is not found
-
fireUpdateElement
public void fireUpdateElement(NodePickerPanel.NodePickerEvent event)
Fires the updateElement event.- Parameters:
event- The associated NodePickerEvent event
-
fireAddNewElement
public void fireAddNewElement(NodePickerPanel.NodePickerEvent event)
Fires the AddNewElement event.- Parameters:
event- The associated NodePickerEvent event
-
addListener
public void addListener(NodePickerPanel.NodePickerListener listener)
Adds the listener to the listener list.- Parameters:
listener- The listener to add
-
-