gate.gui
Class SyntaxTreeViewer
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JPanel
|
+--gate.creole.AbstractVisualResource
|
+--gate.gui.SyntaxTreeViewer
- All Implemented Interfaces:
- Accessible, ActionListener, AnnotationVisualResource, EventListener, FeatureBearer, ImageObserver, MenuContainer, MouseListener, NameBearer, Resource, Scrollable, Serializable, VisualResource
- public class SyntaxTreeViewer
- extends AbstractVisualResource
- implements Scrollable, ActionListener, MouseListener, AnnotationVisualResource
The SyntaxTreeViewer is capable of showing and editing utterances (fancy
name for sentences) and the
attached syntax trees. It works by taking an utterance and all Token
annotations and constructs the text. Then it also gets all SyntaxTreeNode
annotations and builds and shows the syntac tree for that utterance. The
leaves of the tree are the tokens, which constitute the utterance.
It is possible to configure the annotation types that are used by the
viewer. The textAnnotationType property specifies the type
of annotation which is used to denote the utterance (sentence).
In GATE, the value of this property is not set directly, but is derived
from the VR configuration information from creole.xml (explained below).
The treeNodeAnnotationType is the name of the
annotations which encode the SyntaxTreeNodes; default - SyntaxTreeNode.
To change when part of GATE, modify the setting of the
TreeViewer entry in creole.xml. Similarly, one can change which annotation
is used for chunking the utterance. By default, it is Token, which is also
specified in creole.xml as a parameter in the treeviewer entry.
The component assumes that the annotations of type treeNodeAnnotationType have
features called: cat with a value String; consists which is a List either
empty or with annotation ids of the node's children; and optionally
text which contains
the text covered by this annotation. The component will work fine even
without the last feature. Still when it creates annotations,
these will have this feature added.
Newly added tree nodes to the tree are added to the document
as annotations and deleted nodes are automatically deleted from the document
only after OK is chosen in the dialog. Cancel does not make any changes
permanent.
Configuring the viewer in GATE
The viewer is configured in creole.xml. The default entry is:
Syntax tree viewer
gate.gui.SyntaxTreeViewer
Sentence
java.lang.String
java.lang.String
The categories that appear in the menu for manual annotation are determined
from SyntaxTreeViewerSchema.xml. If you want to change the default set,
you must edit this file and update your Gate jar accordingly (e.g., by
recompilation. This does not affect the categories of SyntaxTreeNode
annotations, which have been created automatically by some other process,
e.g., a parser PR.
If used outside GATE,
in order to have appropriate behaviour always put this component inside a
scroll pane or something similar that provides scrollers.
Example code:
JScrollPane scroller = new JScrollPane(syntaxTreeViewer1);
scroller.setPreferredSize(syntaxTreeViewer1.getPreferredSize());
frame.getContentPane().add(scroller, BorderLayout.CENTER);
The default way is to pass just one annotation of type textAnnotationType
which corresponds to the entire sentence or utterance to be annotated with
syntax tree information. Then the viewer automatically tokenises it
(by obtaining the relevant token annotations) and creates the leaves.
To create a new annotation, use setSpan, instead of setAnnotation.
In either
case, you must call setTarget first, because that'll provide the viewer
with the document's annotation set, from where it can obtain the token
annotations.
If you intend to use the viewer outside GATE and do not understand
the API, e-mail gate@dcs.shef.ac.uk.
- See Also:
- Serialized Form
Fields inherited from class javax.swing.JComponent |
_bounds, accessibleContext, actionMap, ACTIONMAP_CREATED, alignmentX, alignmentY, ANCESTOR_INPUTMAP_CREATED, ANCESTOR_USING_BUFFER, ancestorInputMap, ancestorNotifier, autoscroller, border, changeSupport, clientProperties, CREATED_DOUBLE_BUFFER, flags, FOCUS_INPUTMAP_CREATED, focusInputMap, HAS_FOCUS, htmlKey, htmlView, inputVerifier, IS_DOUBLE_BUFFERED, IS_OPAQUE, IS_PAINTING_TILE, IS_PRINTING, IS_PRINTING_ALL, KEY_EVENTS_ENABLED, KEYBOARD_BINDINGS_KEY, listenerList, maximumSize, minimumSize, NEXT_FOCUS, paintImmediatelyClip, paintingChild, preferredSize, readObjectCallbacks, REQUEST_FOCUS_DISABLED, tmpRect, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, verifyInputWhenFocusTarget, vetoableChangeSupport, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW, WHEN_IN_FOCUSED_WINDOW_BINDINGS, WIF_INPUTMAP_CREATED, windowInputMap |
Fields inherited from class java.awt.Container |
component, containerListener, containerSerializedDataVersion, dbg, dispatcher, layoutMgr, listeningBoundsChildren, listeningChildren, maxSize, ncomponents, printing, printingThreads, serialVersionUID |
Fields inherited from class java.awt.Component |
actionListenerK, adjustmentListenerK, appContext, background, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, componentListener, componentListenerK, componentOrientation, componentSerializedDataVersion, containerListenerK, cursor, dropTarget, enabled, eventMask, focusListener, focusListenerK, font, foreground, graphicsConfig, hasFocus, height, hierarchyBoundsListener, hierarchyBoundsListenerK, hierarchyListener, hierarchyListenerK, incRate, inputMethodListener, inputMethodListenerK, isInc, isPacked, itemListenerK, keyListener, keyListenerK, LEFT_ALIGNMENT, locale, LOCK, metrics, minSize, mouseListener, mouseListenerK, mouseMotionListener, mouseMotionListenerK, name, nameExplicitlySet, newEventsOnly, ownedWindowK, parent, peer, peerFont, popups, prefSize, privateKey, RIGHT_ALIGNMENT, textListenerK, TOP_ALIGNMENT, valid, visible, width, windowClosingException, windowListenerK, x, y |
Method Summary |
void |
actionPerformed(ActionEvent e)
|
private void |
addLines(STreeNode newNode)
|
private void |
annotations2Trees()
Converts the annotations into treeNodes |
void |
cancelAction()
Called by the GUI when the user has pressed the "Cancel" button. |
boolean |
canDisplayAnnotationType(String annotationType)
Checks whether this viewer/editor can handle a specific annotation type. |
private void |
clearAll()
Clear all buttons and tree nodes created because component is being
re-initialised. |
private void |
clearSelection()
|
private int |
createButton4Node(STreeNode node,
int buttonX,
int buttonY)
Returns the X position where another button can start if necessary. |
private JButton |
createCentralButton(STreeNode newNode)
|
protected STreeNode |
createParentNode(String text)
Create a parent node for all selected non-terminal nodes |
protected STreeNode |
createParentNode(String text,
Annotation annot)
Create a parent node for all selected non-terminal nodes |
private void |
drawLines(Graphics g)
|
private void |
fillCategoriesMenu()
|
private STreeNode |
findLeaf(Node start,
Node end)
|
Dimension |
getPreferredScrollableViewportSize()
|
int |
getScrollableBlockIncrement(Rectangle visibleRect,
int orientation,
int direction)
|
boolean |
getScrollableTracksViewportHeight()
|
boolean |
getScrollableTracksViewportWidth()
|
int |
getScrollableUnitIncrement(Rectangle visibleRect,
int orientation,
int direction)
|
String |
getTokenType()
|
private void |
jbInit()
|
void |
mouseClicked(MouseEvent e)
|
void |
mouseEntered(MouseEvent e)
|
void |
mouseExited(MouseEvent e)
|
void |
mousePressed(MouseEvent e)
|
void |
mouseReleased(MouseEvent e)
|
void |
okAction()
Called by the GUI when the user has pressed the "OK" button. |
protected void |
paintComponent(Graphics g)
|
private JButton |
processChildrenAnnots(Annotation annot,
HashMap processed)
|
private void |
recalculateLines()
|
private void |
recalculateLines(STreeNode node)
recalculates all lines from that node to all its children |
(package private) void |
removeNode(JButton button)
|
private void |
removeNodesAbove(STreeNode node)
|
private void |
resetChildren(STreeNode node)
|
(package private) void |
selectNode(MouseEvent e)
|
void |
setAnnotation(Annotation ann)
Used when the viewer/editor has to display/edit an existing annotation |
private void |
setMenuCommands(JPopupMenu menu,
String command)
Sets the action commands of all menu items to the specified command |
void |
setSpan(Long startOffset,
Long endOffset,
String annotType)
Used when the viewer has to create new annotations. |
void |
setTarget(Object target)
Called by the GUI when this viewer/editor has to initialise itself for a
specific annotation or text span. |
void |
setTokenType(String newTokenType)
|
void |
setTreeNodeAnnotationType(String newTreeNodeAnnotationType)
|
private void |
shiftButtonsDown(int offset)
|
private void |
showRightClickPopup(MouseEvent e)
|
(package private) void |
this_componentHidden(ComponentEvent e)
|
(package private) void |
this_componentShown(ComponentEvent e)
|
(package private) void |
this_propertyChange(PropertyChangeEvent e)
|
private void |
utterances2Trees()
Converts the given utterances into a set of leaf nodes for annotation |
Methods inherited from class javax.swing.JComponent |
_paintImmediately, addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, adjustPaintFlags, alwaysOnTop, checkIfChildObscuredBySibling, clearFocusOwners, componentInputMapChanged, computeVisibleRect, computeVisibleRect, compWriteObjectNotify, contains, createToolTip, disable, enable, enableSerialization, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getActionMap, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperties, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getCreatedDoubleBuffer, getDebugGraphicsOptions, getFlag, getGraphics, getHeight, getInputMap, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getVerifyInputWhenFocusTarget, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, hide, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paintWithBuffer, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processFocusEvent, processKeyBinding, processKeyBindings, processKeyBindingsForAllComponents, processKeyEvent, processMouseMotionEvent, putClientProperty, readObject, rectangleIsObscured, rectangleIsObscuredBySibling, registerKeyboardAction, registerKeyboardAction, registerWithKeyboardManager, registerWithKeyboardManager, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setCreatedDoubleBuffer, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFlag, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPaintingChild, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVerifyInputWhenFocusTarget, setVisible, shouldDebugGraphics, superProcessMouseMotionEvent, unregisterKeyboardAction, unregisterWithKeyboardManager, unregisterWithKeyboardManager, update |
Methods inherited from class java.awt.Container |
add, add, add, add, add, addContainerListener, addImpl, adjustListeningChildren, applyOrientation, checkGD, countComponents, createChildHierarchyEvents, createHierarchyEvents, deliverEvent, dispatchEventImpl, dispatchEventToSelf, doLayout, eventEnabled, findComponentAt, findComponentAt, findComponentAt, getAccessibleAt, getAccessibleChild, getAccessibleChildrenCount, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents_NoClientCode, getComponents, getLayout, getMouseEventTarget, getWindow, initIDs, insets, invalidate, invalidateTree, isAncestorOf, layout, lightweightPaint, lightweightPrint, list, list, locate, minimumSize, nextFocus, numListening, paintComponents, paintHeavyweightComponents, postProcessKeyEvent, postsOldMouseEvents, preferredSize, preProcessKeyEvent, printComponents, printHeavyweightComponents, processContainerEvent, processEvent, proxyEnableEvents, proxyRequestFocus, remove, remove, removeAll, removeContainerListener, setFocusOwner, setLayout, transferFocus, validate, validateTree |
Methods inherited from class java.awt.Component |
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, areInputMethodsEnabled, bounds, checkImage, checkImage, checkWindowClosingException, coalesceEvents, constructComponentName, contains, createImage, createImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getAccessibleIndexInParent, getAccessibleStateSet, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont_NoClientCode, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen_NoTreeLock, getLocationOnScreen, getName, getNativeContainer, getParent_NoClientCode, getParent, getPeer, getSize, getToolkit, getToolkitImpl, getTreeLock, getWindowForObject, gotFocus, handleEvent, imageUpdate, inside, isDisplayable, isEnabled, isEnabledImpl, isLightweight, isRecursivelyVisible, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resetGC, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, 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, registerNatives, wait, wait, wait |
laidOut
protected boolean laidOut
horizButtonGap
protected int horizButtonGap
vertButtonGap
protected int vertButtonGap
extraButtonWidth
protected int extraButtonWidth
maxUnitIncrement
protected int maxUnitIncrement
borderLayout1
BorderLayout borderLayout1
popup
JPopupMenu popup
buttonBackground
Color buttonBackground
selectedNodeColor
Color selectedNodeColor
lines
HashSet lines
utterance
protected Annotation utterance
utteranceStartOffset
protected Long utteranceStartOffset
utteranceEndOffset
protected Long utteranceEndOffset
currentSet
protected AnnotationSet currentSet
tokenType
protected String tokenType
displayedString
protected String displayedString
treeNodeAnnotationType
protected String treeNodeAnnotationType
textAnnotationType
protected String textAnnotationType
leaves
protected HashMap leaves
nonTerminals
protected HashMap nonTerminals
buttons
protected HashMap buttons
selection
protected Vector selection
treeAnnotations
protected AnnotationSet treeAnnotations
document
protected Document document
utteranceAdded
protected boolean utteranceAdded
SyntaxTreeViewer
public SyntaxTreeViewer()
SyntaxTreeViewer
private SyntaxTreeViewer(String annotType)
jbInit
private void jbInit()
throws Exception
setTarget
public void setTarget(Object target)
- Called by the GUI when this viewer/editor has to initialise itself for a
specific annotation or text span.
- Specified by:
setTarget
in interface AnnotationVisualResource
- Overrides:
setTarget
in class AbstractVisualResource
- Parameters:
target
- the object which will always be a AnnotationSet
setAnnotation
public void setAnnotation(Annotation ann)
- Used when the viewer/editor has to display/edit an existing annotation
- Specified by:
setAnnotation
in interface AnnotationVisualResource
- Parameters:
ann
- the annotation to be displayed or edited. If ann is null then
the method simply returns
setSpan
public void setSpan(Long startOffset,
Long endOffset,
String annotType)
- Used when the viewer has to create new annotations.
- Specified by:
setSpan
in interface AnnotationVisualResource
- Parameters:
startOffset
- the start offset of the span covered by the new
annotation(s). If is null the method will simply return.endOffset
- the end offset of the span covered by the new
annotation(s). If is null the method will simply return.
okAction
public void okAction()
throws GateException
- Called by the GUI when the user has pressed the "OK" button. This should
trigger the saving of the newly created annotation(s)
- Specified by:
okAction
in interface AnnotationVisualResource
cancelAction
public void cancelAction()
throws GateException
- Called by the GUI when the user has pressed the "Cancel" button. This should
trigger the cleanup operation
- Specified by:
cancelAction
in interface AnnotationVisualResource
canDisplayAnnotationType
public boolean canDisplayAnnotationType(String annotationType)
- Checks whether this viewer/editor can handle a specific annotation type.
- Specified by:
canDisplayAnnotationType
in interface AnnotationVisualResource
- Parameters:
annotationType
- represents the annotation type being questioned.If
it is null then the method will return false.- Returns:
- true if the SchemaAnnotationEditor can handle the annotationType
or false otherwise.
paintComponent
protected void paintComponent(Graphics g)
- Overrides:
paintComponent
in class JComponent
drawLines
private void drawLines(Graphics g)
getPreferredScrollableViewportSize
public Dimension getPreferredScrollableViewportSize()
- Specified by:
getPreferredScrollableViewportSize
in interface Scrollable
getScrollableUnitIncrement
public int getScrollableUnitIncrement(Rectangle visibleRect,
int orientation,
int direction)
- Specified by:
getScrollableUnitIncrement
in interface Scrollable
getScrollableBlockIncrement
public int getScrollableBlockIncrement(Rectangle visibleRect,
int orientation,
int direction)
- Specified by:
getScrollableBlockIncrement
in interface Scrollable
getScrollableTracksViewportWidth
public boolean getScrollableTracksViewportWidth()
- Specified by:
getScrollableTracksViewportWidth
in interface Scrollable
getScrollableTracksViewportHeight
public boolean getScrollableTracksViewportHeight()
- Specified by:
getScrollableTracksViewportHeight
in interface Scrollable
this_propertyChange
void this_propertyChange(PropertyChangeEvent e)
clearAll
private void clearAll()
- Clear all buttons and tree nodes created because component is being
re-initialised. Not sure it works perfectly.
annotations2Trees
private void annotations2Trees()
- Converts the annotations into treeNodes
processChildrenAnnots
private JButton processChildrenAnnots(Annotation annot,
HashMap processed)
findLeaf
private STreeNode findLeaf(Node start,
Node end)
utterances2Trees
private void utterances2Trees()
- Converts the given utterances into a set of leaf nodes for annotation
createButton4Node
private int createButton4Node(STreeNode node,
int buttonX,
int buttonY)
- Returns the X position where another button can start if necessary.
To be used to layout only the leaf buttons. All others must be created
central to their children using createCentralButton.
createCentralButton
private JButton createCentralButton(STreeNode newNode)
shiftButtonsDown
private void shiftButtonsDown(int offset)
actionPerformed
public void actionPerformed(ActionEvent e)
- Specified by:
actionPerformed
in interface ActionListener
mouseClicked
public void mouseClicked(MouseEvent e)
- Specified by:
mouseClicked
in interface MouseListener
mousePressed
public void mousePressed(MouseEvent e)
- Specified by:
mousePressed
in interface MouseListener
mouseReleased
public void mouseReleased(MouseEvent e)
- Specified by:
mouseReleased
in interface MouseListener
mouseEntered
public void mouseEntered(MouseEvent e)
- Specified by:
mouseEntered
in interface MouseListener
mouseExited
public void mouseExited(MouseEvent e)
- Specified by:
mouseExited
in interface MouseListener
showRightClickPopup
private void showRightClickPopup(MouseEvent e)
addLines
private void addLines(STreeNode newNode)
clearSelection
private void clearSelection()
fillCategoriesMenu
private void fillCategoriesMenu()
setMenuCommands
private void setMenuCommands(JPopupMenu menu,
String command)
- Sets the action commands of all menu items to the specified command
createParentNode
protected STreeNode createParentNode(String text)
- Create a parent node for all selected non-terminal nodes
createParentNode
protected STreeNode createParentNode(String text,
Annotation annot)
- Create a parent node for all selected non-terminal nodes
selectNode
void selectNode(MouseEvent e)
removeNode
void removeNode(JButton button)
resetChildren
private void resetChildren(STreeNode node)
removeNodesAbove
private void removeNodesAbove(STreeNode node)
recalculateLines
private void recalculateLines()
recalculateLines
private void recalculateLines(STreeNode node)
- recalculates all lines from that node to all its children
setTreeNodeAnnotationType
public void setTreeNodeAnnotationType(String newTreeNodeAnnotationType)
setTokenType
public void setTokenType(String newTokenType)
getTokenType
public String getTokenType()
this_componentShown
void this_componentShown(ComponentEvent e)
this_componentHidden
void this_componentHidden(ComponentEvent e)