GATE
Version 3.1-2270

gate.gui
Class DocumentEditor

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by gate.creole.AbstractVisualResource
                      extended by gate.gui.DocumentEditor
All Implemented Interfaces:
ANNIEConstants, Resource, FeatureBearer, NameBearer, VisualResource, ImageObserver, MenuContainer, Serializable, Accessible

public class DocumentEditor
extends AbstractVisualResource
implements ANNIEConstants

This class implements a viewer/editor for the annotations on a document. As a viewer, this visual resource will display all the annotations found on the document. The editor needs to have some data about annotation types in order to allow the editing of annotations. This data comes from the AnnotationSchema objects that are loaded in the Gate system at a given moment. If there are no such objects the editing of annotations will be restricted to a very crude method allowing the user to add any type of annotations having any features with any String values.

See Also:
Serialized Form

Nested Class Summary
protected  class DocumentEditor.AnnotationsTableModel
          A custom table model used to render a table containing the annotations from a set of annotation sets.
protected  class DocumentEditor.CorefData
           
 class DocumentEditor.CustomLabelView
          Fixes the 4406598 bug in swing text components.
 class DocumentEditor.CustomStyledEditorKit
          Fixes the 4406598 bug in swing text components.
 class DocumentEditor.CustomStyledViewFactory
          Fixes the 4406598 bug in swing text components.
protected  class DocumentEditor.DeleteSelectedAnnotationsAction
           
protected  class DocumentEditor.EditAnnotationAction
          The action that is fired when the user wants to edit an annotation.
protected  class DocumentEditor.HighlightAnnotationMenu
          The popup menu items used to select annotations at right click.
protected  class DocumentEditor.PrintAction
           
protected  class DocumentEditor.SearchAction
           
protected  class DocumentEditor.SearchDialog
           
 class DocumentEditor.TypeData
          Holds the GUI metadata for a given annotation type.
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  XJTable annotationsTable
          The table placed below the text display used for showing annotations
protected  DocumentEditor.AnnotationsTableModel annotationsTableModel
          Model for the annotations table
protected  ColorGenerator colGenerator
          A random colour generator used to generate initial default colours for highlighting various types of annotations.
protected  JScrollPane corefScroll
          The scroller for the coref list
protected  JTree corefTree
          The Jtree that displays the coreference data
protected  DefaultTreeModel corefTreeModel
          The model for the coref tree
protected  DefaultMutableTreeNode corefTreeRoot
          The root for the coref tree
protected  List data
          holds the data for the annotations table: a list of Annotation objects
protected  gate.gui.DocumentEditor.EventsHandler eventHandler
          The listener for the events coming from the document (annotations and annotation sets added or removed).
protected  Highlighter highlighter
          The highlighter used to help the user select annotations that overlap and for highligting in the text the annotations selected in the lower table.
protected  JSplitPane leftSplit
           
protected  Object lock
          Object used to sychronise all the various threads involved in GUI updating;
protected  JSplitPane mainSplit
          The main horizontal split that contains all the contents of this viewer
protected  Handle myHandle
           
protected  JProgressBar progressBar
          The progress bar used during updating the text
protected  Box progressBox
          A box containing a JProgressBar used to keep the user entertained while the text display is being updated
protected  List ranges
          a list containing Range objects.
protected  JSplitPane rightSplit
          The split that contains the styles tree and the coreference viewer.
protected  DocumentEditor.SearchDialog searchDialog
          The dialog used for text search
protected  gate.gui.DocumentEditor.SelectionBlinker selectionBlinker
          The object responsible with blinking the selected annotations.
protected  Highlighter selectionHighlighter
          This highlighter is actually used as a data structure.
protected  TextAttributesChooser styleChooser
          The dialog used for editing the styles used to highlight annotations
protected  JTree stylesTree
          The right hand side tree with all the annotation sets and types of annotations
protected  DefaultTreeModel stylesTreeModel
          The model for the styles tree
protected  DefaultMutableTreeNode stylesTreeRoot
          The root for the styles tree
protected  JScrollPane stylesTreeScroll
          Scroller for the styles tree
protected  JScrollPane tableScroll
          Scroller for the annotations table
protected  JTextPane textPane
          The text display.
protected  JScrollPane textScroll
          Scroller used for the text diaplay
protected  JToolBar toolbar
          The toolbar displayed on the top part of the component
protected  Map typeDataMap
          A composed map used to get the metadata for an annotation type starting from the annotation set name and the type name.
 
Fields inherited from class gate.creole.AbstractVisualResource
features, handle
 
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 gate.creole.ANNIEConstants
ANNOTATION_COREF_FEATURE_NAME, DATE_ANNOTATION_TYPE, DATE_POSTED_ANNOTATION_TYPE, DOCUMENT_COREF_FEATURE_NAME, JOB_ID_ANNOTATION_TYPE, LOCATION_ANNOTATION_TYPE, LOOKUP_ANNOTATION_TYPE, LOOKUP_CLASS_FEATURE_NAME, LOOKUP_MAJOR_TYPE_FEATURE_NAME, LOOKUP_MINOR_TYPE_FEATURE_NAME, LOOKUP_ONTOLOGY_FEATURE_NAME, MONEY_ANNOTATION_TYPE, ORGANIZATION_ANNOTATION_TYPE, PERSON_ANNOTATION_TYPE, PERSON_GENDER_FEATURE_NAME, PR_NAMES, SENTENCE_ANNOTATION_TYPE, SPACE_TOKEN_ANNOTATION_TYPE, TOKEN_ANNOTATION_TYPE, TOKEN_CATEGORY_FEATURE_NAME, TOKEN_KIND_FEATURE_NAME, TOKEN_LENGTH_FEATURE_NAME, TOKEN_ORTH_FEATURE_NAME, TOKEN_STRING_FEATURE_NAME
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
DocumentEditor()
          Default constructor.
 
Method Summary
 void addPropertyChangeListener(PropertyChangeListener l)
           
 void addPropertyChangeListener(String propertyName, PropertyChangeListener l)
           
 void cleanup()
          Does nothing now, but meant to clear all internal data
protected  Set getAnnotationSchemas()
          Gets all the AnnotationSchema objects currently loaded in the system.
 Set getDisplayedAnnotations()
          This method returns a list of annotations which are currently shown in the annotations table or null of the table is empty.
 Document getDocument()
          Return the current selected document
protected  DocumentEditor.TypeData getTypeData(String setName, String type)
          Gets the data related to a given annotation type.
 Resource init()
          Initialise this resource, and return it.
protected  void initGuiComponents()
          Builds all the graphical components
protected  void initListeners()
          Initialises all the listeners that this component has to register with other classes.
protected  void initLocalData()
          Initialises the local variables to their default values
 boolean isAnnotationsTableVisible()
           
 boolean isCoreferenceVisible()
           
 boolean isCorefOptionAvailable()
           
 boolean isEditable()
          Is the editor functionality enabled
 boolean isTextVisible()
           
 boolean isTypesTreeVisible()
           
protected  void layoutComponents()
          Creates the layout of this component acording to the set of subcomponents (text display, annotations table, etc.) that need to be visible.
protected  void paintHighlights(Set annotations, AttributeSet style)
           
 void removePropertyChangeListener(PropertyChangeListener l)
           
protected  void repairHighlights(int start, int end)
          Called whenever a part of the textual display needs to be repainted because, for instance, of an edit operation.
protected  void selectAnnotation(String set, Annotation ann)
          Updates the GUI when the user has selected an annotation e.g. by using the right click popup.
 void setAnnotationsTableVisible(boolean annotationsTableVisible)
           
 void setCoreferenceVisible(boolean coreferenceVisible)
           
 void setCorefOptionAvailable(boolean corefOptionAvailable)
           
 void setEditable(boolean newEditable)
          Should the editor functionality of this component be enabled
 void setHandle(Handle handle)
          Used by the main GUI to tell this VR what handle created it.
 void setTarget(Object target)
          Sets the document to be displayed
 void setTextVisible(boolean textVisible)
           
 void setTypesTreeVisible(boolean typesTreeVisible)
           
protected  void showHighlights(Set annotations, AttributeSet style)
          Repaints the highlighting for annotation types in the text display.
protected  void this_documentChanged()
          Updates this component when the underlying document is changed.
protected  void updateCorefTree()
          Updates the coref tree from the coref data on the document's features
 
Methods inherited from class gate.creole.AbstractVisualResource
getFeatures, getParameterValue, setFeatures, setParameterValue, setParameterValues
 
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, 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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, 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, 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, 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, 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, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, 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
 
Methods inherited from interface gate.util.NameBearer
getName, setName
 

Field Detail

colGenerator

protected ColorGenerator colGenerator
A random colour generator used to generate initial default colours for highlighting various types of annotations.


textPane

protected JTextPane textPane
The text display.


textScroll

protected JScrollPane textScroll
Scroller used for the text diaplay


annotationsTable

protected XJTable annotationsTable
The table placed below the text display used for showing annotations


annotationsTableModel

protected DocumentEditor.AnnotationsTableModel annotationsTableModel
Model for the annotations table


tableScroll

protected JScrollPane tableScroll
Scroller for the annotations table


leftSplit

protected JSplitPane leftSplit

rightSplit

protected JSplitPane rightSplit
The split that contains the styles tree and the coreference viewer.


mainSplit

protected JSplitPane mainSplit
The main horizontal split that contains all the contents of this viewer


stylesTree

protected JTree stylesTree
The right hand side tree with all the annotation sets and types of annotations


toolbar

protected JToolBar toolbar
The toolbar displayed on the top part of the component


stylesTreeScroll

protected JScrollPane stylesTreeScroll
Scroller for the styles tree


stylesTreeRoot

protected DefaultMutableTreeNode stylesTreeRoot
The root for the styles tree


stylesTreeModel

protected DefaultTreeModel stylesTreeModel
The model for the styles tree


searchDialog

protected DocumentEditor.SearchDialog searchDialog
The dialog used for text search


styleChooser

protected TextAttributesChooser styleChooser
The dialog used for editing the styles used to highlight annotations


corefTree

protected JTree corefTree
The Jtree that displays the coreference data


corefTreeRoot

protected DefaultMutableTreeNode corefTreeRoot
The root for the coref tree


corefTreeModel

protected DefaultTreeModel corefTreeModel
The model for the coref tree


corefScroll

protected JScrollPane corefScroll
The scroller for the coref list


progressBox

protected Box progressBox
A box containing a JProgressBar used to keep the user entertained while the text display is being updated


progressBar

protected JProgressBar progressBar
The progress bar used during updating the text


highlighter

protected Highlighter highlighter
The highlighter used to help the user select annotations that overlap and for highligting in the text the annotations selected in the lower table.


selectionHighlighter

protected Highlighter selectionHighlighter
This highlighter is actually used as a data structure. It is used to keep the data for the selected annotations; the actual highlighting will be done by the highlighter as using two different highlighters on the same text component is looking for trouble.


selectionBlinker

protected gate.gui.DocumentEditor.SelectionBlinker selectionBlinker
The object responsible with blinking the selected annotations.


myHandle

protected Handle myHandle

data

protected List data
holds the data for the annotations table: a list of Annotation objects


ranges

protected List ranges
a list containing Range objects. These are the ranges in the data structure. A range is a bunch of annotations belonging to the same annotation set that are contiguous in the data structure.


typeDataMap

protected Map typeDataMap
A composed map used to get the metadata for an annotation type starting from the annotation set name and the type name. Annotation set name -> Annotation type -> DocumentEditor.TypeData Maps from String to Map to DocumentEditor.TypeData.


eventHandler

protected gate.gui.DocumentEditor.EventsHandler eventHandler
The listener for the events coming from the document (annotations and annotation sets added or removed).


lock

protected Object lock
Object used to sychronise all the various threads involved in GUI updating;

Constructor Detail

DocumentEditor

public DocumentEditor()
Default constructor. Creats all the components and initialises all the internal data to default values where possible.

Method Detail

init

public Resource init()
Description copied from class: AbstractVisualResource
Initialise this resource, and return it.

Specified by:
init in interface Resource
Overrides:
init in class AbstractVisualResource

initListeners

protected void initListeners()
Initialises all the listeners that this component has to register with other classes.


initLocalData

protected void initLocalData()
Initialises the local variables to their default values


initGuiComponents

protected void initGuiComponents()
Builds all the graphical components


getAnnotationSchemas

protected Set getAnnotationSchemas()
Gets all the AnnotationSchema objects currently loaded in the system.


removePropertyChangeListener

public void removePropertyChangeListener(PropertyChangeListener l)
Overrides:
removePropertyChangeListener in class Component

addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener l)
Overrides:
addPropertyChangeListener in class Container

addPropertyChangeListener

public void addPropertyChangeListener(String propertyName,
                                      PropertyChangeListener l)
Overrides:
addPropertyChangeListener in class Container

getDocument

public Document getDocument()
Return the current selected document


setTarget

public void setTarget(Object target)
Sets the document to be displayed

Specified by:
setTarget in interface VisualResource
Overrides:
setTarget in class AbstractVisualResource
Parameters:
target - the object (be it a Resource, DataStore or whatever) this viewer has to display

setHandle

public void setHandle(Handle handle)
Description copied from class: AbstractVisualResource
Used by the main GUI to tell this VR what handle created it. The VRs can use this information e.g. to add items to the popup for the resource.

Specified by:
setHandle in interface VisualResource
Overrides:
setHandle in class AbstractVisualResource

cleanup

public void cleanup()
Description copied from class: AbstractVisualResource
Does nothing now, but meant to clear all internal data

Specified by:
cleanup in interface Resource
Overrides:
cleanup in class AbstractVisualResource

getDisplayedAnnotations

public Set getDisplayedAnnotations()
This method returns a list of annotations which are currently shown in the annotations table or null of the table is empty.


this_documentChanged

protected void this_documentChanged()
Updates this component when the underlying document is changed. This method is only triggered when the document is changed to a new one and not when the internal data from the document changes.


getTypeData

protected DocumentEditor.TypeData getTypeData(String setName,
                                              String type)
Gets the data related to a given annotation type. An annotation type is uniquely identified by the name of its AnnotationSet and the name of the type. For the default annotation set of a document (which has no name) the "<Default>" value is used. Once a DocumentEditor.TypeData value has been obtained it can be used to change the way the respective type of annotations are displayed.

Parameters:
setName - a String, the name of the annotation set
type - a String, the name of the type.
Returns:
a DocumentEditor.TypeData value

showHighlights

protected void showHighlights(Set annotations,
                              AttributeSet style)
Repaints the highlighting for annotation types in the text display.


paintHighlights

protected void paintHighlights(Set annotations,
                               AttributeSet style)

repairHighlights

protected void repairHighlights(int start,
                                int end)
Called whenever a part of the textual display needs to be repainted because, for instance, of an edit operation.

Parameters:
start - the start offset for the area to be repainted
end - the end offset for the area to be repainted.

selectAnnotation

protected void selectAnnotation(String set,
                                Annotation ann)
Updates the GUI when the user has selected an annotation e.g. by using the right click popup. That basically means make the appropiate type of annotations visible in case it isn't already.


layoutComponents

protected void layoutComponents()
Creates the layout of this component acording to the set of subcomponents (text display, annotations table, etc.) that need to be visible.


updateCorefTree

protected void updateCorefTree()
Updates the coref tree from the coref data on the document's features


setEditable

public void setEditable(boolean newEditable)
Should the editor functionality of this component be enabled


isEditable

public boolean isEditable()
Is the editor functionality enabled


setAnnotationsTableVisible

public void setAnnotationsTableVisible(boolean annotationsTableVisible)

isAnnotationsTableVisible

public boolean isAnnotationsTableVisible()

setCoreferenceVisible

public void setCoreferenceVisible(boolean coreferenceVisible)

isCoreferenceVisible

public boolean isCoreferenceVisible()

setTextVisible

public void setTextVisible(boolean textVisible)

isTextVisible

public boolean isTextVisible()

setTypesTreeVisible

public void setTypesTreeVisible(boolean typesTreeVisible)

isTypesTreeVisible

public boolean isTypesTreeVisible()

setCorefOptionAvailable

public void setCorefOptionAvailable(boolean corefOptionAvailable)

isCorefOptionAvailable

public boolean isCorefOptionAvailable()

GATE
Version 3.1-2270