gate.gui.annedit
Class SchemaAnnotationEditor

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.annedit.SchemaAnnotationEditor
All Implemented Interfaces:
AnnotationVisualResource, OwnedAnnotationEditor, Resource, FeatureBearer, NameBearer, VisualResource, ImageObserver, MenuContainer, Serializable, Accessible

public class SchemaAnnotationEditor
extends AbstractVisualResource
implements OwnedAnnotationEditor

An annotation editor that enforces the annotation schemas currently loaded in the system. Once the editing of an annotation is started, it cannot be completed until the annotation complies with the schema for that annotation type.

See Also:
Serialized Form

Nested Class Summary
protected  class SchemaAnnotationEditor.AnnotationAction
          Base class for actions on annotations.
protected  class SchemaAnnotationEditor.DeleteAnnotationAction
           
protected  class SchemaAnnotationEditor.EndOffsetLeftAction
           
protected  class SchemaAnnotationEditor.EndOffsetRightAction
           
protected  class SchemaAnnotationEditor.IconOnlyButton
           
protected  class SchemaAnnotationEditor.SmallButton
          A JButton with content are not filled and border not painted (in order to save screen real estate)
protected  class SchemaAnnotationEditor.StartOffsetLeftAction
           
protected  class SchemaAnnotationEditor.StartOffsetRightAction
           
 
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.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  Annotation annotation
          The annotation currently being edited.
protected  AnnotationSet annSet
          The annotation set containing the currently edited annotation.
protected  CreoleListener creoleListener
           
protected static int CTRL_SHIFT_INCREMENT
           
protected  SchemaAnnotationEditor.SmallButton delButton
           
protected  JDialog dialog
          The dialog used to show this annotation editor.
protected  SchemaAnnotationEditor.IconOnlyButton eolButton
           
protected  SchemaAnnotationEditor.IconOnlyButton eorButton
           
protected  Map<String,SchemaFeaturesEditor> featureEditorsByType
          Caches the features editor for each annotation type.
protected  Box featuresBox
          The box used to host the features editor pane.
protected  SchemaFeaturesEditor featuresEditor
          The current features editor, one of the ones stored in featureEditorsByType.
protected static int HIDE_DELAY
           
protected  JPanel mainPane
           
protected  JToggleButton pinnedButton
          Toggle button used to pin down the dialog.
protected  MouseEvent pressed
           
protected  Map<String,AnnotationSchema> schemasByType
          Stores the Annotation schema objects available in the system.
protected static int SHIFT_INCREMENT
           
protected  SchemaAnnotationEditor.IconOnlyButton solButton
           
protected  SchemaAnnotationEditor.IconOnlyButton sorButton
           
protected  AncestorListener textAncestorListener
          Listener used to hide the editing window when the text is hidden.
protected  Border typeDefaultBorder
          The default border for the types choice
protected  Border typeHighlightBorder
          The highlight border for the types choice
protected  JChoice typesChoice
          JChoice used for selecting the annotation type.
 
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 java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
SchemaAnnotationEditor()
           
 
Method Summary
 void cancelAction()
          Does nothing, as this editor does not support cancelling and rollbacks.
 boolean canDisplayAnnotationType(String annotationType)
          Returns true always as this editor is generic and can edit any annotation type.
 void changeOrientation(ComponentOrientation orientation)
          Changes the orientation of components
 void cleanup()
          Does nothing now, but meant to clear all internal data
 void editAnnotation(Annotation ann, AnnotationSet set)
          Changes the annotation currently being edited.
 boolean editingFinished()
          This editor implementation is designed to enforce schema compliance.
 Annotation getAnnotationCurrentlyEdited()
           
 AnnotationSet getAnnotationSetCurrentlyEdited()
           
 AnnotationEditorOwner getOwner()
           
 Resource init()
          Initialise this resource, and return it.
protected  void initData()
           
protected  void initGui()
           
protected  void initListeners()
           
 boolean isActive()
          Checks whether the annotation editor is active (shown on screen and ready to edit annotations.
static void main(String[] args)
           
protected  void moveAnnotation(AnnotationSet set, Annotation oldAnnotation, Long newStartOffset, Long newEndOffset)
          Changes the span of an existing annotation by creating a new annotation with the same ID, type and features but with the new start and end offsets.
 void okAction()
          Does nothing as this editor works in auto-commit mode (changes are implemented immediately).
 void placeDialog(int start, int end)
          Finds the best location for the editor dialog for a given span of text
 void setEditingEnabled(boolean isEditingEnabled)
          Enable or disable the editing GUI components.
 void setOwner(AnnotationEditorOwner owner)
          Sets the owner (i.e. controller) for this editor.
 void setPinnedMode(boolean pinned)
           
 boolean supportsCancel()
          Returns false, as this editor does not support cancel operations.
protected  void updateListeners()
           
 
Methods inherited from class gate.creole.AbstractVisualResource
getFeatures, getInitParameterValues, getParameterValue, setFeatures, setHandle, setParameterValue, setParameterValues, setTarget
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, 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, 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.VisualResource
setHandle, setTarget
 
Methods inherited from interface gate.Resource
getParameterValue, setParameterValue, setParameterValues
 
Methods inherited from interface gate.util.FeatureBearer
getFeatures, setFeatures
 
Methods inherited from interface gate.util.NameBearer
getName, setName
 

Field Detail

HIDE_DELAY

protected static final int HIDE_DELAY
See Also:
Constant Field Values

SHIFT_INCREMENT

protected static final int SHIFT_INCREMENT
See Also:
Constant Field Values

CTRL_SHIFT_INCREMENT

protected static final int CTRL_SHIFT_INCREMENT
See Also:
Constant Field Values

annotation

protected Annotation annotation
The annotation currently being edited.


annSet

protected AnnotationSet annSet
The annotation set containing the currently edited annotation.


typesChoice

protected JChoice typesChoice
JChoice used for selecting the annotation type.


typeDefaultBorder

protected Border typeDefaultBorder
The default border for the types choice


typeHighlightBorder

protected Border typeHighlightBorder
The highlight border for the types choice


dialog

protected JDialog dialog
The dialog used to show this annotation editor.


creoleListener

protected CreoleListener creoleListener

textAncestorListener

protected AncestorListener textAncestorListener
Listener used to hide the editing window when the text is hidden.


schemasByType

protected Map<String,AnnotationSchema> schemasByType
Stores the Annotation schema objects available in the system. The annotation types are used as keys for the map.


featureEditorsByType

protected Map<String,SchemaFeaturesEditor> featureEditorsByType
Caches the features editor for each annotation type.


featuresBox

protected Box featuresBox
The box used to host the features editor pane.


pinnedButton

protected JToggleButton pinnedButton
Toggle button used to pin down the dialog.


featuresEditor

protected SchemaFeaturesEditor featuresEditor
The current features editor, one of the ones stored in featureEditorsByType.


pressed

protected MouseEvent pressed

solButton

protected SchemaAnnotationEditor.IconOnlyButton solButton

sorButton

protected SchemaAnnotationEditor.IconOnlyButton sorButton

delButton

protected SchemaAnnotationEditor.SmallButton delButton

eolButton

protected SchemaAnnotationEditor.IconOnlyButton eolButton

eorButton

protected SchemaAnnotationEditor.IconOnlyButton eorButton

mainPane

protected JPanel mainPane
Constructor Detail

SchemaAnnotationEditor

public SchemaAnnotationEditor()
Method Detail

editAnnotation

public void editAnnotation(Annotation ann,
                           AnnotationSet set)
Description copied from interface: AnnotationVisualResource
Changes the annotation currently being edited.

Specified by:
editAnnotation in interface AnnotationVisualResource
Parameters:
ann - the new annotation.
set - the set to which the new annotation belongs.

editingFinished

public boolean editingFinished()
This editor implementation is designed to enforce schema compliance. This method will return false if the current annotation type does not have a schema or if the features of the current annotation do not comply with the schema.

Specified by:
editingFinished in interface AnnotationVisualResource
Returns:
true iff the editor has finished editing the current annotation. This might return false for instance when the current annotation does not yet comply with the schema and the editor implementation is designed to enforce schemas.
See Also:
AnnotationVisualResource.editingFinished()

cancelAction

public void cancelAction()
                  throws GateException
Does nothing, as this editor does not support cancelling and rollbacks.

Specified by:
cancelAction in interface AnnotationVisualResource
Throws:
GateException

canDisplayAnnotationType

public boolean canDisplayAnnotationType(String annotationType)
Returns true always as this editor is generic and can edit any annotation type.

Specified by:
canDisplayAnnotationType in interface AnnotationVisualResource

okAction

public void okAction()
              throws GateException
Does nothing as this editor works in auto-commit mode (changes are implemented immediately).

Specified by:
okAction in interface AnnotationVisualResource
Throws:
GateException

supportsCancel

public boolean supportsCancel()
Returns false, as this editor does not support cancel operations.

Specified by:
supportsCancel in interface AnnotationVisualResource
Returns:
true iff this editor can rollback changes.

isActive

public boolean isActive()
Description copied from interface: AnnotationVisualResource
Checks whether the annotation editor is active (shown on screen and ready to edit annotations.

Specified by:
isActive in interface AnnotationVisualResource
Returns:
true iff the editor is active.

placeDialog

public void placeDialog(int start,
                        int end)
Finds the best location for the editor dialog for a given span of text

Specified by:
placeDialog in interface OwnedAnnotationEditor

init

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

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

updateListeners

protected void updateListeners()

initData

protected void initData()

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

initGui

protected void initGui()

initListeners

protected void initListeners()

main

public static void main(String[] args)
Parameters:
args -

moveAnnotation

protected void moveAnnotation(AnnotationSet set,
                              Annotation oldAnnotation,
                              Long newStartOffset,
                              Long newEndOffset)
                       throws InvalidOffsetException
Changes the span of an existing annotation by creating a new annotation with the same ID, type and features but with the new start and end offsets.

Parameters:
set - the annotation set
oldAnnotation - the annotation to be moved
newStartOffset - the new start offset
newEndOffset - the new end offset
Throws:
InvalidOffsetException

getOwner

public AnnotationEditorOwner getOwner()
Specified by:
getOwner in interface OwnedAnnotationEditor
Returns:
the owner

setOwner

public void setOwner(AnnotationEditorOwner owner)
Description copied from interface: OwnedAnnotationEditor
Sets the owner (i.e. controller) for this editor.

Specified by:
setOwner in interface OwnedAnnotationEditor
Parameters:
owner - the owner to set

getAnnotationSetCurrentlyEdited

public AnnotationSet getAnnotationSetCurrentlyEdited()
Specified by:
getAnnotationSetCurrentlyEdited in interface AnnotationVisualResource
Returns:
the annotation set currently edited

getAnnotationCurrentlyEdited

public Annotation getAnnotationCurrentlyEdited()
Specified by:
getAnnotationCurrentlyEdited in interface AnnotationVisualResource
Returns:
the annotation currently edited

setPinnedMode

public void setPinnedMode(boolean pinned)
Specified by:
setPinnedMode in interface OwnedAnnotationEditor
Parameters:
pinned - true if the window should not move when an annotation is selected.

setEditingEnabled

public void setEditingEnabled(boolean isEditingEnabled)
Description copied from interface: OwnedAnnotationEditor
Enable or disable the editing GUI components.

Specified by:
setEditingEnabled in interface OwnedAnnotationEditor
Parameters:
isEditingEnabled - true to enable the editing, false to disable it

changeOrientation

public void changeOrientation(ComponentOrientation orientation)
Description copied from interface: OwnedAnnotationEditor
Changes the orientation of components

Specified by:
changeOrientation in interface OwnedAnnotationEditor