com.virtualweaver.xotics.editing.renderer
Class XoTreeRenderer

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JTree
                  extended bycom.virtualweaver.xotics.editing.renderer.XoTreeRenderer
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.dnd.DragGestureListener, java.awt.dnd.DragSourceListener, java.util.EventListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, javax.swing.Scrollable, java.io.Serializable, com.virtualweaver.xotics.datamodel.event.XoContainerListener, XoDMRenderer
Direct Known Subclasses:
XoDMTreeRenderer

public abstract class XoTreeRenderer
extends javax.swing.JTree
implements XoDMRenderer, java.awt.dnd.DragGestureListener, java.awt.dnd.DragSourceListener, java.beans.PropertyChangeListener, com.virtualweaver.xotics.datamodel.event.XoContainerListener

This is the abstract class of a renderer representing an XML document as a tree. It can be derived to implement specific rendering. It manages DnD and reflects automatically rendered document changes. This class and derived are examples of renderer implementation.

Version:
4.1
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JTree
javax.swing.JTree.AccessibleJTree, javax.swing.JTree.DynamicUtilTreeNode, javax.swing.JTree.EmptySelectionModel, javax.swing.JTree.TreeModelHandler, javax.swing.JTree.TreeSelectionRedirector
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
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
 
Fields inherited from class javax.swing.JTree
ANCHOR_SELECTION_PATH_PROPERTY, CELL_EDITOR_PROPERTY, CELL_RENDERER_PROPERTY, cellEditor, cellRenderer, editable, EDITABLE_PROPERTY, EXPANDS_SELECTED_PATHS_PROPERTY, INVOKES_STOP_CELL_EDITING_PROPERTY, invokesStopCellEditing, LARGE_MODEL_PROPERTY, largeModel, LEAD_SELECTION_PATH_PROPERTY, ROOT_VISIBLE_PROPERTY, rootVisible, ROW_HEIGHT_PROPERTY, rowHeight, SCROLLS_ON_EXPAND_PROPERTY, scrollsOnExpand, SELECTION_MODEL_PROPERTY, selectionModel, selectionRedirector, SHOWS_ROOT_HANDLES_PROPERTY, showsRootHandles, TOGGLE_CLICK_COUNT_PROPERTY, toggleClickCount, TREE_MODEL_PROPERTY, treeModel, treeModelListener, VISIBLE_ROW_COUNT_PROPERTY, visibleRowCount
 
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 java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
XoTreeRenderer()
          An XoDMRenderer class must have a constructor with no argument, as Xotics Editor instanciates it automatically.
 
Method Summary
 void addDropTargetListener(java.awt.dnd.DropTargetListener dtl)
          Xotics Editor manages DnD feature between renderers to add, move or remove nodes.
 void addXoDMEditListener(XoDMEditListener l)
          Renderer can send an XoDMEditEvent when node is selected by an external way (any other way than select(XoNode) and selectOver(int, int)).
 void childAdded(com.virtualweaver.xotics.datamodel.event.XoContainerEvent evt)
           
 void childRemoved(com.virtualweaver.xotics.datamodel.event.XoContainerEvent evt)
           
abstract  XoNodeCellRenderer createNodeCellRenderer(com.virtualweaver.xotics.datamodel.XoNode node)
          This method must return an AWT component implementing XoNodeCellRenderer interface, used to render specific node param node.
 void dragDropEnd(java.awt.dnd.DragSourceDropEvent dragSourceDropEvent)
           
 void dragEnter(java.awt.dnd.DragSourceDragEvent dragSourceDragEvent)
           
 void dragExit(java.awt.dnd.DragSourceEvent dragSourceEvent)
           
 void dragGestureRecognized(java.awt.dnd.DragGestureEvent e)
           
abstract  void dragGestureRecognized(java.awt.dnd.DragGestureEvent e, com.virtualweaver.xotics.datamodel.XoNode target)
          This method is called when a drag gesture is recognized on a node of document rendered, to let implementation choose whether and how to start a DnD process.
 void dragOver(java.awt.dnd.DragSourceDragEvent dragSourceDragEvent)
           
 void dropActionChanged(java.awt.dnd.DragSourceDragEvent dragSourceDragEvent)
           
 com.virtualweaver.xotics.datamodel.XoDMInstance getDMInstance()
          Returns document currently rendered.
 int getRowHeight()
           
 com.virtualweaver.xotics.datamodel.XoNode getSelected()
          Returns currently selected node in the renderer.
protected  boolean isDisplayDocumentRoot()
          Tells whether to represent the document root (i.e XoDMInstance) as the root of the tree.
 boolean isFixedRowHeight()
           
 void propertyChange(java.beans.PropertyChangeEvent evt)
           
 void removeDropTargetListener(java.awt.dnd.DropTargetListener dtl)
          Opposite method of addDropTargetListener(DropTargetListener).
 void removeXoDMEditListener(XoDMEditListener l)
          Renderer can send an XoDMEditEvent when node is selected by an external way (any other way than select(XoNode) and selectOver(int, int)).
 void select(com.virtualweaver.xotics.datamodel.XoNode n)
          Forces the renderer to select a specific node xo.
 void selectOver(int x, int y)
          Forces the renderer to select (if possible) the closest node to position defined by (x, y) params.
protected  void setDisplayDocumentRoot(boolean displayDocumentRoot)
          Tells whether to represent the document root (i.e XoDMInstance) as the root of the tree.
 void setDMInstance(com.virtualweaver.xotics.datamodel.XoDMInstance dm)
          Sets the document to render.
 void setRowHeight(int rh)
           
 
Methods inherited from class javax.swing.JTree
addSelectionInterval, addSelectionPath, addSelectionPaths, addSelectionRow, addSelectionRows, addTreeExpansionListener, addTreeSelectionListener, addTreeWillExpandListener, cancelEditing, clearSelection, clearToggledPaths, collapsePath, collapseRow, convertValueToText, createTreeModel, createTreeModelListener, expandPath, expandRow, fireTreeCollapsed, fireTreeExpanded, fireTreeWillCollapse, fireTreeWillExpand, fireValueChanged, getAccessibleContext, getAnchorSelectionPath, getCellEditor, getCellRenderer, getClosestPathForLocation, getClosestRowForLocation, getDefaultTreeModel, getDescendantToggledPaths, getDragEnabled, getEditingPath, getExpandedDescendants, getExpandsSelectedPaths, getInvokesStopCellEditing, getLastSelectedPathComponent, getLeadSelectionPath, getLeadSelectionRow, getMaxSelectionRow, getMinSelectionRow, getModel, getNextMatch, getPathBetweenRows, getPathBounds, getPathForLocation, getPathForRow, getPreferredScrollableViewportSize, getRowBounds, getRowCount, getRowForLocation, getRowForPath, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollsOnExpand, getSelectionCount, getSelectionModel, getSelectionPath, getSelectionPaths, getSelectionRows, getShowsRootHandles, getToggleClickCount, getToolTipText, getTreeExpansionListeners, getTreeSelectionListeners, getTreeWillExpandListeners, getUI, getUIClassID, getVisibleRowCount, hasBeenExpanded, isCollapsed, isCollapsed, isEditable, isEditing, isExpanded, isExpanded, isLargeModel, isPathEditable, isPathSelected, isRootVisible, isRowSelected, isSelectionEmpty, isVisible, makeVisible, paramString, removeDescendantSelectedPaths, removeDescendantToggledPaths, removeSelectionInterval, removeSelectionPath, removeSelectionPaths, removeSelectionRow, removeSelectionRows, removeTreeExpansionListener, removeTreeSelectionListener, removeTreeWillExpandListener, scrollPathToVisible, scrollRowToVisible, setAnchorSelectionPath, setCellEditor, setCellRenderer, setDragEnabled, setEditable, setExpandedState, setExpandsSelectedPaths, setInvokesStopCellEditing, setLargeModel, setLeadSelectionPath, setModel, setRootVisible, setScrollsOnExpand, setSelectionInterval, setSelectionModel, setSelectionPath, setSelectionPaths, setSelectionRow, setSelectionRows, setShowsRootHandles, setToggleClickCount, setUI, setVisibleRowCount, startEditingAtPath, stopEditing, treeDidChange, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, 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, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, 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, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

XoTreeRenderer

public XoTreeRenderer()
An XoDMRenderer class must have a constructor with no argument, as Xotics Editor instanciates it automatically.

Method Detail

isFixedRowHeight

public boolean isFixedRowHeight()

setRowHeight

public void setRowHeight(int rh)

getRowHeight

public int getRowHeight()

createNodeCellRenderer

public abstract XoNodeCellRenderer createNodeCellRenderer(com.virtualweaver.xotics.datamodel.XoNode node)
This method must return an AWT component implementing XoNodeCellRenderer interface, used to render specific node param node. This method is called for each node of type XoDMInstance and XoObject in the document rendered. It must return a new instance of XoNodeCellRenderer at each call.

Parameters:
node - the node to render
Returns:
a cell renderer used to render node param

dragGestureRecognized

public abstract void dragGestureRecognized(java.awt.dnd.DragGestureEvent e,
                                           com.virtualweaver.xotics.datamodel.XoNode target)
This method is called when a drag gesture is recognized on a node of document rendered, to let implementation choose whether and how to start a DnD process. Default implementation consists in creating a Transferable object containing target param, provided node is an XoObject, then call e.startDrag() method. If it's an XoDMInstance this method should not start DnD process. This method can also do nothing if DnD start from this renderer is not allowed.

Parameters:
e - DnD drag gesture event
target - node on which drag gesture is recognized (correspond typically to an attempt to move this node).

isDisplayDocumentRoot

protected boolean isDisplayDocumentRoot()
Tells whether to represent the document root (i.e XoDMInstance) as the root of the tree.

Returns:
true if this renderer represents document root, false if this hides document root.

setDisplayDocumentRoot

protected void setDisplayDocumentRoot(boolean displayDocumentRoot)
Tells whether to represent the document root (i.e XoDMInstance) as the root of the tree.

Parameters:
displayDocumentRoot - true if this renderer must represent document root, false if this must hide document root.

addDropTargetListener

public void addDropTargetListener(java.awt.dnd.DropTargetListener dtl)
                           throws java.util.TooManyListenersException
Description copied from interface: XoDMRenderer
Xotics Editor manages DnD feature between renderers to add, move or remove nodes. By this method, The Editor provides to the renderer a listener to be informed of drop operation over it. A renderer can choose to support or not DnD feature.

Specified by:
addDropTargetListener in interface XoDMRenderer
Parameters:
dtl - a drop listener provided by Xotics Editor
Throws:
java.util.TooManyListenersException
See Also:
XoDMRenderer.addDropTargetListener(java.awt.dnd.DropTargetListener)

addXoDMEditListener

public void addXoDMEditListener(XoDMEditListener l)
Description copied from interface: XoDMRenderer
Renderer can send an XoDMEditEvent when node is selected by an external way (any other way than XoDMRenderer.select(XoNode) and XoDMRenderer.selectOver(int, int)). This method registers a listener interested in such events.

Specified by:
addXoDMEditListener in interface XoDMRenderer
Parameters:
l - an edit event listener to add.
See Also:
XoDMRenderer.addXoDMEditListener(com.virtualweaver.xotics.editing.event.XoDMEditListener)

getDMInstance

public com.virtualweaver.xotics.datamodel.XoDMInstance getDMInstance()
Description copied from interface: XoDMRenderer
Returns document currently rendered.

Specified by:
getDMInstance in interface XoDMRenderer
Returns:
DM instance as rendered document.
See Also:
XoDMRenderer.getDMInstance()

getSelected

public com.virtualweaver.xotics.datamodel.XoNode getSelected()
Description copied from interface: XoDMRenderer
Returns currently selected node in the renderer. A null value means that there is currently no selected node.

Specified by:
getSelected in interface XoDMRenderer
Returns:
the currently selected node, or null if there is no selected node.
See Also:
XoDMRenderer.getSelected()

removeDropTargetListener

public void removeDropTargetListener(java.awt.dnd.DropTargetListener dtl)
Description copied from interface: XoDMRenderer
Opposite method of XoDMRenderer.addDropTargetListener(DropTargetListener).

Specified by:
removeDropTargetListener in interface XoDMRenderer
Parameters:
dtl - a drop listener to remove, previously provided by Xotics Editor
See Also:
XoDMRenderer.removeDropTargetListener(java.awt.dnd.DropTargetListener)

removeXoDMEditListener

public void removeXoDMEditListener(XoDMEditListener l)
Description copied from interface: XoDMRenderer
Renderer can send an XoDMEditEvent when node is selected by an external way (any other way than XoDMRenderer.select(XoNode) and XoDMRenderer.selectOver(int, int)). This method unregisters a listener interested in such events.

Specified by:
removeXoDMEditListener in interface XoDMRenderer
Parameters:
l - an edit event listener to remove.
See Also:
XoDMRenderer.removeXoDMEditListener(com.virtualweaver.xotics.editing.event.XoDMEditListener)

select

public void select(com.virtualweaver.xotics.datamodel.XoNode n)
Description copied from interface: XoDMRenderer
Forces the renderer to select a specific node xo. This node can belongs to another DM instance than currently rendered one, or can be unselectable by this renderer because it doesn't render such node ; in these cases, like in any other case where xo is not renderable, currently selected node must be set to null, in order for XoDMRenderer.getSelected() to return null. This method must not fire any XoDMEditEvent.

Specified by:
select in interface XoDMRenderer
Parameters:
n - the new selected node, can be null to mean "unselect".
See Also:
XoDMRenderer.select(com.virtualweaver.xotics.datamodel.XoNode)

selectOver

public void selectOver(int x,
                       int y)
Description copied from interface: XoDMRenderer
Forces the renderer to select (if possible) the closest node to position defined by (x, y) params. If there is no node near the position, currently selected node must be set to null, in order for XoDMRenderer.getSelected() to return null. This method must not fire any XoDMEditEvent.

Specified by:
selectOver in interface XoDMRenderer
Parameters:
x - x position of a node to select
y - y position of a node to select
See Also:
XoDMRenderer.selectOver(int, int)

setDMInstance

public void setDMInstance(com.virtualweaver.xotics.datamodel.XoDMInstance dm)
Description copied from interface: XoDMRenderer
Sets the document to render. This method can be called at any time for different documents.

Specified by:
setDMInstance in interface XoDMRenderer
Parameters:
dm - the DM instance representing an XML document to render.
See Also:
XoDMRenderer.setDMInstance(com.virtualweaver.xotics.datamodel.XoDMInstance)

childAdded

public void childAdded(com.virtualweaver.xotics.datamodel.event.XoContainerEvent evt)
Specified by:
childAdded in interface com.virtualweaver.xotics.datamodel.event.XoContainerListener

childRemoved

public void childRemoved(com.virtualweaver.xotics.datamodel.event.XoContainerEvent evt)
Specified by:
childRemoved in interface com.virtualweaver.xotics.datamodel.event.XoContainerListener

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent evt)
Specified by:
propertyChange in interface java.beans.PropertyChangeListener

dragGestureRecognized

public void dragGestureRecognized(java.awt.dnd.DragGestureEvent e)
Specified by:
dragGestureRecognized in interface java.awt.dnd.DragGestureListener

dragDropEnd

public void dragDropEnd(java.awt.dnd.DragSourceDropEvent dragSourceDropEvent)
Specified by:
dragDropEnd in interface java.awt.dnd.DragSourceListener

dragEnter

public void dragEnter(java.awt.dnd.DragSourceDragEvent dragSourceDragEvent)
Specified by:
dragEnter in interface java.awt.dnd.DragSourceListener

dragExit

public void dragExit(java.awt.dnd.DragSourceEvent dragSourceEvent)
Specified by:
dragExit in interface java.awt.dnd.DragSourceListener

dragOver

public void dragOver(java.awt.dnd.DragSourceDragEvent dragSourceDragEvent)
Specified by:
dragOver in interface java.awt.dnd.DragSourceListener

dropActionChanged

public void dropActionChanged(java.awt.dnd.DragSourceDragEvent dragSourceDragEvent)
Specified by:
dropActionChanged in interface java.awt.dnd.DragSourceListener