Class ValidatorTreePanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JTree
-
- org.openstreetmap.josm.gui.dialogs.validator.ValidatorTreePanel
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
,javax.swing.Scrollable
,DataSetListener
,Destroyable
public class ValidatorTreePanel extends javax.swing.JTree implements Destroyable, DataSetListener
A panel that displays the error tree. The selection manager respects clicks into the selection list. Ctrl-click will remove entries from the list while single click will make the clicked entry the only selection.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
ValidatorTreePanel.GroupTreeNode
-
Nested classes/interfaces inherited from class javax.swing.JTree
javax.swing.JTree.AccessibleJTree, javax.swing.JTree.DropLocation, javax.swing.JTree.DynamicUtilTreeNode, javax.swing.JTree.EmptySelectionModel, javax.swing.JTree.TreeModelHandler, javax.swing.JTree.TreeSelectionRedirector
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<TestError>
errors
The list of errors shown in the tree, normally identical to field validationErrors in current edit layerprivate java.util.Set<? extends OsmPrimitive>
filter
Iffilter
is notnull
only errors are displayed that refer to one of the primitives in the filter.private ListenerList<java.lang.Runnable>
invalidationListeners
private boolean
resetScheduled
if true, buildTree() does nothingprotected javax.swing.tree.DefaultTreeModel
valTreeModel
The validation data.-
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
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description ValidatorTreePanel()
ConstructorValidatorTreePanel(java.util.List<TestError> errors)
Constructor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addInvalidationListener(java.lang.Runnable listener)
Add a new invalidation listenerprivate static java.lang.String
addSize(java.lang.String msg, java.util.Collection<?> coll)
void
buildTree()
Builds the errors treevoid
buildTree(boolean expandAgain)
Builds the errors treeprivate void
buildTreeInternal(boolean expandAgain)
void
dataChanged(DataChangedEvent event)
Called after big changes in dataset.void
destroy()
Called when the object has been destroyed.void
expandAll()
Expands complete treeprivate boolean
filterRemovedPrimitives()
Remove errors which refer to removed or purged primitives.java.util.List<TestError>
getErrors()
Returns the errors of the treejava.util.Set<? extends OsmPrimitive>
getFilter()
Returns the filter listjavax.swing.tree.DefaultMutableTreeNode
getRoot()
Returns the root node model.private static java.lang.String
getTesterDetails(TestError e)
java.lang.String
getToolTipText(java.awt.event.MouseEvent e)
void
nodeMoved(NodeMovedEvent event)
A node's coordinates were modified.void
otherDatasetChange(AbstractDatasetChangedEvent event)
Minor dataset change, currently only changeset id changed is supported, but can be extended in future.void
primitivesAdded(PrimitivesAddedEvent event)
A bunch of primitives were added into the DataSet, or existing deleted/invisible primitives were resurrected.void
primitivesRemoved(PrimitivesRemovedEvent event)
A bunch of primitives were removed from the DataSet, or preexisting primitives were marked as deleted.void
relationMembersChanged(RelationMembersChangedEvent event)
A relation's members have changed.void
removeInvalidationListener(java.lang.Runnable listener)
Remove an invalidation listenerprivate static java.lang.String
removeSize(java.lang.String msg)
void
resetErrors()
Updates the current errors listvoid
selectRelatedErrors(java.util.Collection<OsmPrimitive> primitives)
Selects all errors related to the specifiedprimitives
, i.e.void
setErrorList(java.util.List<TestError> errors)
Sets the errors list used by a data layervoid
setErrors(java.util.List<TestError> newerrors)
Clears the current error list and adds these errors to itvoid
setFilter(java.util.Set<? extends OsmPrimitive> filter)
Set the filter list to a set of primitivesvoid
setResetScheduled()
Can be called to suppress execution of buildTree() while doing multiple updates.void
setVisible(boolean v)
void
tagsChanged(TagsChangedEvent event)
There was some change in the tag set of a primitive.static void
visitTestErrors(javax.swing.tree.DefaultMutableTreeNode root, java.util.function.Consumer<TestError> visitor)
Visitor call for allTestError
nodes children of root, in breadth-first order.static void
visitTestErrors(javax.swing.tree.DefaultMutableTreeNode root, java.util.function.Consumer<TestError> visitor, java.util.Set<javax.swing.tree.DefaultMutableTreeNode> processedNodes)
Visitor call for allTestError
nodes children of root, in breadth-first order.static void
visitTreeNodes(javax.swing.tree.DefaultMutableTreeNode root, java.util.function.Consumer<javax.swing.tree.DefaultMutableTreeNode> visitor)
Visitor call for all tree nodes children of root, in breadth-first order.private void
walkAndSelectRelatedErrors(javax.swing.tree.TreePath p, java.util.function.Predicate<OsmPrimitive> isRelevant, java.util.Collection<javax.swing.tree.TreePath> paths)
void
wayNodesChanged(WayNodesChangedEvent event)
A way's node list was changed.-
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, getDropLocation, getDropMode, getEditingPath, getExpandedDescendants, getExpandsSelectedPaths, getInvokesStopCellEditing, getLastSelectedPathComponent, getLeadSelectionPath, getLeadSelectionRow, getMaxSelectionRow, getMinSelectionRow, getModel, getNextMatch, getPathBetweenRows, getPathBounds, getPathForLocation, getPathForRow, getPreferredScrollableViewportSize, getRowBounds, getRowCount, getRowForLocation, getRowForPath, getRowHeight, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollsOnExpand, getSelectionCount, getSelectionModel, getSelectionPath, getSelectionPaths, getSelectionRows, getShowsRootHandles, getToggleClickCount, getTreeExpansionListeners, getTreeSelectionListeners, getTreeWillExpandListeners, getUI, getUIClassID, getVisibleRowCount, hasBeenExpanded, isCollapsed, isCollapsed, isEditable, isEditing, isExpanded, isExpanded, isFixedRowHeight, 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, setDropMode, setEditable, setExpandedState, setExpandsSelectedPaths, setInvokesStopCellEditing, setLargeModel, setLeadSelectionPath, setModel, setRootVisible, setRowHeight, setScrollsOnExpand, setSelectionInterval, setSelectionModel, setSelectionPath, setSelectionPaths, setSelectionRow, setSelectionRows, setShowsRootHandles, setToggleClickCount, setUI, setVisibleRowCount, startEditingAtPath, stopEditing, treeDidChange, 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, 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, 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
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.openstreetmap.josm.data.osm.event.DataSetListener
dataChangedIndividualEvents
-
-
-
-
Field Detail
-
valTreeModel
protected javax.swing.tree.DefaultTreeModel valTreeModel
The validation data.
-
errors
private transient java.util.List<TestError> errors
The list of errors shown in the tree, normally identical to field validationErrors in current edit layer
-
filter
private transient java.util.Set<? extends OsmPrimitive> filter
Iffilter
is notnull
only errors are displayed that refer to one of the primitives in the filter.
-
invalidationListeners
private final transient ListenerList<java.lang.Runnable> invalidationListeners
-
resetScheduled
private boolean resetScheduled
if true, buildTree() does nothing
-
-
Constructor Detail
-
ValidatorTreePanel
public ValidatorTreePanel(java.util.List<TestError> errors)
Constructor- Parameters:
errors
- The list of errors
-
ValidatorTreePanel
public ValidatorTreePanel()
Constructor
-
-
Method Detail
-
getToolTipText
public java.lang.String getToolTipText(java.awt.event.MouseEvent e)
- Overrides:
getToolTipText
in classjavax.swing.JTree
-
getTesterDetails
private static java.lang.String getTesterDetails(TestError e)
-
setVisible
public void setVisible(boolean v)
- Overrides:
setVisible
in classjavax.swing.JComponent
-
buildTree
public void buildTree()
Builds the errors tree
-
buildTree
public void buildTree(boolean expandAgain)
Builds the errors tree- Parameters:
expandAgain
- if true, try to expand the same rows as before
-
buildTreeInternal
private void buildTreeInternal(boolean expandAgain)
-
addSize
private static java.lang.String addSize(java.lang.String msg, java.util.Collection<?> coll)
-
removeSize
private static java.lang.String removeSize(java.lang.String msg)
-
addInvalidationListener
public void addInvalidationListener(java.lang.Runnable listener)
Add a new invalidation listener- Parameters:
listener
- The listener
-
removeInvalidationListener
public void removeInvalidationListener(java.lang.Runnable listener)
Remove an invalidation listener- Parameters:
listener
- The listener- Since:
- 10880
-
setErrorList
public final void setErrorList(java.util.List<TestError> errors)
Sets the errors list used by a data layer- Parameters:
errors
- The error list that is used by a data layer
-
setErrors
public void setErrors(java.util.List<TestError> newerrors)
Clears the current error list and adds these errors to it- Parameters:
newerrors
- The validation errors
-
getErrors
public java.util.List<TestError> getErrors()
Returns the errors of the tree- Returns:
- the errors of the tree
-
selectRelatedErrors
public void selectRelatedErrors(java.util.Collection<OsmPrimitive> primitives)
Selects all errors related to the specifiedprimitives
, i.e. whereTestError.getPrimitives()
returns a primitive present inprimitives
.- Parameters:
primitives
- collection of primitives
-
walkAndSelectRelatedErrors
private void walkAndSelectRelatedErrors(javax.swing.tree.TreePath p, java.util.function.Predicate<OsmPrimitive> isRelevant, java.util.Collection<javax.swing.tree.TreePath> paths)
-
getFilter
public java.util.Set<? extends OsmPrimitive> getFilter()
Returns the filter list- Returns:
- the set of primitives used for filtering
-
setFilter
public void setFilter(java.util.Set<? extends OsmPrimitive> filter)
Set the filter list to a set of primitives- Parameters:
filter
- the list of primitives used for filtering
-
resetErrors
public void resetErrors()
Updates the current errors list
-
expandAll
public void expandAll()
Expands complete tree
-
getRoot
public javax.swing.tree.DefaultMutableTreeNode getRoot()
Returns the root node model.- Returns:
- The root node model
-
destroy
public void destroy()
Description copied from interface:Destroyable
Called when the object has been destroyed.- Specified by:
destroy
in interfaceDestroyable
-
visitTreeNodes
public static void visitTreeNodes(javax.swing.tree.DefaultMutableTreeNode root, java.util.function.Consumer<javax.swing.tree.DefaultMutableTreeNode> visitor)
Visitor call for all tree nodes children of root, in breadth-first order.- Parameters:
root
- Root nodevisitor
- Visitor- Since:
- 13940
-
visitTestErrors
public static void visitTestErrors(javax.swing.tree.DefaultMutableTreeNode root, java.util.function.Consumer<TestError> visitor)
Visitor call for allTestError
nodes children of root, in breadth-first order.- Parameters:
root
- Root nodevisitor
- Visitor- Since:
- 13940
-
visitTestErrors
public static void visitTestErrors(javax.swing.tree.DefaultMutableTreeNode root, java.util.function.Consumer<TestError> visitor, java.util.Set<javax.swing.tree.DefaultMutableTreeNode> processedNodes)
Visitor call for allTestError
nodes children of root, in breadth-first order.- Parameters:
root
- Root nodevisitor
- VisitorprocessedNodes
- Set of already visited nodes (optional)- Since:
- 13940
-
primitivesRemoved
public void primitivesRemoved(PrimitivesRemovedEvent event)
Description copied from interface:DataSetListener
A bunch of primitives were removed from the DataSet, or preexisting primitives were marked as deleted.- Specified by:
primitivesRemoved
in interfaceDataSetListener
- Parameters:
event
- An event for an collection of newly-invisible primitives
-
primitivesAdded
public void primitivesAdded(PrimitivesAddedEvent event)
Description copied from interface:DataSetListener
A bunch of primitives were added into the DataSet, or existing deleted/invisible primitives were resurrected.- Specified by:
primitivesAdded
in interfaceDataSetListener
- Parameters:
event
- An event for an collection of newly-visible primitives
-
tagsChanged
public void tagsChanged(TagsChangedEvent event)
Description copied from interface:DataSetListener
There was some change in the tag set of a primitive. It can have been a tag addition, tag removal or change in tag value.- Specified by:
tagsChanged
in interfaceDataSetListener
- Parameters:
event
- the event for the primitive, whose tags were affected.
-
nodeMoved
public void nodeMoved(NodeMovedEvent event)
Description copied from interface:DataSetListener
A node's coordinates were modified.- Specified by:
nodeMoved
in interfaceDataSetListener
- Parameters:
event
- The event for the node that was moved.
-
wayNodesChanged
public void wayNodesChanged(WayNodesChangedEvent event)
Description copied from interface:DataSetListener
A way's node list was changed.- Specified by:
wayNodesChanged
in interfaceDataSetListener
- Parameters:
event
- The event for the way that was modified.
-
relationMembersChanged
public void relationMembersChanged(RelationMembersChangedEvent event)
Description copied from interface:DataSetListener
A relation's members have changed.- Specified by:
relationMembersChanged
in interfaceDataSetListener
- Parameters:
event
- The event for the relation that was modified.
-
otherDatasetChange
public void otherDatasetChange(AbstractDatasetChangedEvent event)
Description copied from interface:DataSetListener
Minor dataset change, currently only changeset id changed is supported, but can be extended in future.- Specified by:
otherDatasetChange
in interfaceDataSetListener
- Parameters:
event
- the event for data modification
-
dataChanged
public void dataChanged(DataChangedEvent event)
Description copied from interface:DataSetListener
Called after big changes in dataset. Usually other events are stopped using Dataset.beginUpdate() and after operation is completed (Dataset.endUpdate()),DataSetListener.dataChanged(DataChangedEvent event)
is called.- Specified by:
dataChanged
in interfaceDataSetListener
- Parameters:
event
- data change event
-
setResetScheduled
public void setResetScheduled()
Can be called to suppress execution of buildTree() while doing multiple updates. Caller must call resetErrors() to end this state.- Since:
- 14849
-
filterRemovedPrimitives
private boolean filterRemovedPrimitives()
Remove errors which refer to removed or purged primitives.- Returns:
- true if error list was changed
-
-