org.eml.MMAX2.annotation.markables
Class MarkableLevel

java.lang.Object
  extended by org.eml.MMAX2.annotation.markables.MarkableLevel
All Implemented Interfaces:
java.awt.event.ActionListener, java.util.EventListener, MarkableLevelAPI

public class MarkableLevel
extends java.lang.Object
implements java.awt.event.ActionListener, MarkableLevelAPI


Constructor Summary
MarkableLevel(org.apache.xerces.dom.DocumentImpl _markableDOM, java.lang.String _markableFileName, java.lang.String _markableLevelName, MMAX2AnnotationScheme _scheme, java.lang.String _customizationFileName)
          Creates new MarkableLevel
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent actionEvent)
           
 Markable addMarkable(java.util.ArrayList discourseElements, java.util.HashMap attributes)
          (API) Adds a Markable to this MarkableLevel, and returns the newly added Markable.
 Markable addMarkable(java.lang.String fragment)
           
 Markable addMarkable(java.lang.String[][] fragments, java.util.HashMap attributes)
           
 void createDiscoursePositionToMarkableMapping()
          This method is called by the MarkableChart for each MarkableLayer associated with it, AFTER the style sheet has been applied.
 int createMarkables()
          This method is called from the MMAX2DiscourseLoader after the MMAX2Discourse field has been set on this level.
 MMAX2OneClickAnnotationSelector createOneClickAnnotationSelector(Markable currentPrimary, MarkableChart _chart, int displayPos)
           
 void deleteAllMarkables()
          (API) Deletes all Markables from this MarkableLevel.
 void deleteMarkable(Markable deletee)
          (API) Deletes the Markable toDelete from this MarkableLevel.
 void destroyDependentComponents()
           
 java.lang.String getAbsoluteMarkableFileName()
           
 javax.swing.JComboBox getActivatorComboBox()
           
 MarkableRelation[] getActiveMarkablePointerRelationsForSourceMarkable(Markable markable)
           
 MarkablePointer[] getActiveMarkablePointersForTargetMarkable(Markable markable, java.lang.String pointerRelationName)
           
 MarkableRelation[] getActiveMarkableSetRelationsForMarkable(Markable markable)
           
 void getAllEndedMarkablesAsNodes(java.lang.String discourseElementId, org.apache.xpath.NodeSet result)
          This method updates a NodeSet of those Markables at the current MarkableLayer ending at discourseElementId, with shorter Markables before longer ones.
 Markable[] getAllMarkablesAtDiscourseElement(java.lang.String discourseElementId, boolean sort)
          This method returns an array of those Markable objects associated with discourseElement Id, or empty array if none.
 Markable[] getAllMarkablesAtDiscoursePosition(int pos)
          Main method for layer-wise retrieval of Markables from discourse positions.
 Markable[] getAllMarkablesEndedByDiscourseElement(java.lang.String discourseElementId)
          This method returns an array of those Markable objects ended at discourseElement Id, or empty array if none.
 Markable[] getAllMarkablesStartedByDiscourseElement(java.lang.String discourseElementId)
          This method returns an array of those Markable objects started at discourseElement Id, or empty array if none.
 Markable[] getAllMarkablesStartingWith(MMAX2DiscourseElementSequence sequence)
           
 void getAllStartedMarkablesAsNodes(java.lang.String discourseElementId, org.apache.xpath.NodeSet result)
          This method updates a NodeSet of those Markables at the current MarkableLayer beginning at discourseElementId, with longer Markables before shorter ones.
 java.util.ArrayList getAttributeNamesForValues(java.lang.String valueList, java.lang.String optionalAttributeName)
          This method returns a list of attribute names for which *all* the values in valueList are defined, or empty list.
 java.awt.Color getBackgroundColorAtDisplayPosition(int displayPosition)
          This method returns the currently valid background color defined for DisplayPosition displayPosition.
 MMAX2AnnotationScheme getCurrentAnnotationScheme()
           
 MMAX2Discourse getCurrentDiscourse()
           
 java.lang.String getCustomizationFileName()
           
 javax.swing.JButton getDeleteButton()
           
 boolean getHasHandles()
           
 boolean getIsActive()
           
 boolean getIsDirty()
           
 boolean getIsReadOnly()
           
 boolean getIsVisible()
           
 Markable getMarkableAtSpan(java.lang.String span)
           
 Markable getMarkableByID(java.lang.String markableId)
           
 int getMarkableCount()
           
 java.lang.String getMarkableFileName()
           
 java.lang.String getMarkableLevelName()
          (API) Returns the name of this MarkableLevel.
 java.util.ArrayList getMarkablePointersForTargetMarkable(Markable markable)
           
 java.util.ArrayList getMarkables()
           
 java.util.ArrayList getMarkables(java.util.Comparator comp)
           
 java.util.ArrayList getMarkablesAtDiscourseElementID(java.lang.String discourseElementId, java.util.Comparator comp)
          This method returns an ArrayList of those Markable objects associated with discourseElement Id, or empty list if none.
 java.util.ArrayList getMarkablesAtDiscoursePosition(int discPos, java.util.Comparator comp)
          This method returns an ArrayList of those Markable objects associated with discourseElement Id, or empty list if none.
 java.util.ArrayList getMarkablesMatchingAll(MMAX2MatchingCriterion criterion)
          Used by MMAX query.
 java.util.ArrayList getMarkablesMatchingAny(MMAX2MatchingCriterion criterion)
          Used by MMAX query.
 java.lang.String getMatchableMarkableLevelName()
           
 java.util.ArrayList getMatchingMarkables(java.lang.String queryString)
          AdmissibleCategories is a list of those REs that should be included in the list as source.
 javax.swing.plaf.basic.BasicArrowButton getMoveDownButton()
           
 javax.swing.plaf.basic.BasicArrowButton getMoveUpButton()
           
 javax.swing.JLabel getNameLabel()
           
 int getPosition()
           
 MarkableLevelRenderer getRenderer()
           
 javax.swing.JMenuItem getSaveMarkableLevelItem()
           
 Markable getSingleLongestMarkableStartingWith(MMAX2DiscourseElementSequence sequence)
           
 Markable getSingleMarkableExactlyAtDiscourseElement(java.lang.String discourseElementId)
           
 int getSize()
           
 javax.swing.JCheckBox getSwitchCheckBox()
           
 javax.swing.JButton getUpdateButton()
           
 javax.swing.JButton getValidateButton()
           
 boolean hasMarkableEndingAt(java.lang.String deID)
           
 boolean hasMarkableStartingAt(java.lang.String deID)
           
 void initMarkableRelations()
          This method initializes one MarkableRelation object for each attribute of type MARKABLE_SET, MARKABLE_POINTER and SET_POINTER and adds it to this MarkableLevel's MarkableRelations list.
 boolean isDefined()
           
 void registerMarkableAtDiscourseElement(java.lang.String discourseElementId, Markable markable)
          This method is called by each Markable constructor and updates this.markablesAtDiscourseElement to reflect that Markable markable is associated with the DE with ID discourseElementId.
 void registerMarkableAtEndOfFragment(java.lang.String discourseElementId, Markable markable)
          This method informs the current layer that Markable markable ends at DiscourseElement id.
 void registerMarkableAtStartOfFragment(java.lang.String discourseElementId, Markable markable)
          This method informs the current layer that Markable markable starts at DiscourseElement id.
 void saveMarkables(java.lang.String newFileName)
          (API) Saves the Markables on this MarkableLevel to file fileName.
 void saveMarkables(java.lang.String newFileName, boolean autoSaveMode)
           
 void saveTransposedMarkables(java.lang.String oldLang, java.util.ArrayList absoluteWords)
           
 void setActive()
           
 void setCurrentDiscourse(MMAX2Discourse _discourse)
           
 void setHasHandles(boolean status)
           
 void setInactive()
           
 void setIsDirty(boolean status, boolean refresh)
           
 void setIsReadOnly(boolean status)
           
 void setMarkableDisplayPositions()
          This method sets for all Markables on this level the fields displayStartPosition and displayEndPosition.
 void setMMAX2(MMAX2 _mmax2)
           
 void setPosition(int pos)
           
 void setValidateButtonEnabled(boolean status)
           
 void setVisible()
           
 void unregisterMarkable(Markable unregisteree)
           
 void unregisterMarkableAtDiscourseElement(Markable unregisteree, java.lang.String de)
           
 void unregisterMarkableAtEndOfFragment(Markable unregisteree, java.lang.String de)
           
 void unregisterMarkableAtStartOfFragment(Markable unregisteree, java.lang.String de)
           
 MMAX2AnnotationScheme updateAnnotationScheme()
           
 void updateDiscoursePositionToMarkableMapping(java.lang.String tempDE)
           
 void updateMarkables()
           
 void validate()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MarkableLevel

public MarkableLevel(org.apache.xerces.dom.DocumentImpl _markableDOM,
                     java.lang.String _markableFileName,
                     java.lang.String _markableLevelName,
                     MMAX2AnnotationScheme _scheme,
                     java.lang.String _customizationFileName)
Creates new MarkableLevel

Method Detail

getIsReadOnly

public final boolean getIsReadOnly()

setIsReadOnly

public final void setIsReadOnly(boolean status)

getCustomizationFileName

public final java.lang.String getCustomizationFileName()

updateAnnotationScheme

public final MMAX2AnnotationScheme updateAnnotationScheme()

setMMAX2

public final void setMMAX2(MMAX2 _mmax2)

isDefined

public final boolean isDefined()

getSaveMarkableLevelItem

public final javax.swing.JMenuItem getSaveMarkableLevelItem()

hasMarkableStartingAt

public final boolean hasMarkableStartingAt(java.lang.String deID)

hasMarkableEndingAt

public final boolean hasMarkableEndingAt(java.lang.String deID)

getMarkableAtSpan

public final Markable getMarkableAtSpan(java.lang.String span)

setIsDirty

public final void setIsDirty(boolean status,
                             boolean refresh)

getIsDirty

public final boolean getIsDirty()

getAttributeNamesForValues

public final java.util.ArrayList getAttributeNamesForValues(java.lang.String valueList,
                                                            java.lang.String optionalAttributeName)
This method returns a list of attribute names for which *all* the values in valueList are defined, or empty list. valueList is a comma-separated list of values, and the entire list is enclosed in curly braces.


setValidateButtonEnabled

public final void setValidateButtonEnabled(boolean status)

validate

public final void validate()

deleteAllMarkables

public final void deleteAllMarkables()
Description copied from interface: MarkableLevelAPI
(API) Deletes all Markables from this MarkableLevel.

Specified by:
deleteAllMarkables in interface MarkableLevelAPI

deleteMarkable

public final void deleteMarkable(Markable deletee)
Description copied from interface: MarkableLevelAPI
(API) Deletes the Markable toDelete from this MarkableLevel.

Specified by:
deleteMarkable in interface MarkableLevelAPI
Parameters:
deletee - The Markable to delete.

addMarkable

public final Markable addMarkable(java.util.ArrayList discourseElements,
                                  java.util.HashMap attributes)
Description copied from interface: MarkableLevelAPI
(API) Adds a Markable to this MarkableLevel, and returns the newly added Markable.

Specified by:
addMarkable in interface MarkableLevelAPI
Parameters:
discourseElements - An ArrayList of DiscourseElement objects which the new Markable is to span.
attributes - A HashMap of content attibutes that the new Markable is to carry.
Returns:
The newly added Markable object.

addMarkable

public final Markable addMarkable(java.lang.String[][] fragments,
                                  java.util.HashMap attributes)

addMarkable

public final Markable addMarkable(java.lang.String fragment)

saveMarkables

public final void saveMarkables(java.lang.String newFileName)
Description copied from interface: MarkableLevelAPI
(API) Saves the Markables on this MarkableLevel to file fileName. If fileName is an empty string, it saves the Markables to the location the MarkableLevel was loaded from.

Specified by:
saveMarkables in interface MarkableLevelAPI
Parameters:
newFileName - The name of the file in which the Markables are to be saved.

saveMarkables

public final void saveMarkables(java.lang.String newFileName,
                                boolean autoSaveMode)

saveTransposedMarkables

public final void saveTransposedMarkables(java.lang.String oldLang,
                                          java.util.ArrayList absoluteWords)

initMarkableRelations

public final void initMarkableRelations()
This method initializes one MarkableRelation object for each attribute of type MARKABLE_SET, MARKABLE_POINTER and SET_POINTER and adds it to this MarkableLevel's MarkableRelations list.


getActiveMarkableSetRelationsForMarkable

public final MarkableRelation[] getActiveMarkableSetRelationsForMarkable(Markable markable)

getActiveMarkablePointersForTargetMarkable

public final MarkablePointer[] getActiveMarkablePointersForTargetMarkable(Markable markable,
                                                                          java.lang.String pointerRelationName)

getActiveMarkablePointerRelationsForSourceMarkable

public final MarkableRelation[] getActiveMarkablePointerRelationsForSourceMarkable(Markable markable)

getMarkablePointersForTargetMarkable

public final java.util.ArrayList getMarkablePointersForTargetMarkable(Markable markable)

destroyDependentComponents

public final void destroyDependentComponents()

getCurrentAnnotationScheme

public final MMAX2AnnotationScheme getCurrentAnnotationScheme()

getBackgroundColorAtDisplayPosition

public final java.awt.Color getBackgroundColorAtDisplayPosition(int displayPosition)
This method returns the currently valid background color defined for DisplayPosition displayPosition. It is determined on the basis of the markable(s) this MarkableLayer has on this position. If no markables exist on this position, it is assumjed to be a MarkableHandle, and the color is determined ...


getSize

public final int getSize()

getMarkableCount

public final int getMarkableCount()

getNameLabel

public final javax.swing.JLabel getNameLabel()

getActivatorComboBox

public final javax.swing.JComboBox getActivatorComboBox()

getSwitchCheckBox

public final javax.swing.JCheckBox getSwitchCheckBox()

getMoveUpButton

public final javax.swing.plaf.basic.BasicArrowButton getMoveUpButton()

getMoveDownButton

public final javax.swing.plaf.basic.BasicArrowButton getMoveDownButton()

getUpdateButton

public final javax.swing.JButton getUpdateButton()

getValidateButton

public final javax.swing.JButton getValidateButton()

getDeleteButton

public final javax.swing.JButton getDeleteButton()

setPosition

public final void setPosition(int pos)

getPosition

public final int getPosition()

getMarkableFileName

public final java.lang.String getMarkableFileName()

getAbsoluteMarkableFileName

public final java.lang.String getAbsoluteMarkableFileName()

getMarkableLevelName

public final java.lang.String getMarkableLevelName()
Description copied from interface: MarkableLevelAPI
(API) Returns the name of this MarkableLevel. Each MarkableLevel in a MMAX2 document must have a unique name. This name is assigned in the common_paths.xml file.

Specified by:
getMarkableLevelName in interface MarkableLevelAPI
Returns:
The name of this MarkableLevel.

getMatchableMarkableLevelName

public final java.lang.String getMatchableMarkableLevelName()

getRenderer

public final MarkableLevelRenderer getRenderer()

getIsActive

public final boolean getIsActive()

getIsVisible

public final boolean getIsVisible()

getHasHandles

public final boolean getHasHandles()

setHasHandles

public final void setHasHandles(boolean status)

getMarkablesMatchingAll

public final java.util.ArrayList getMarkablesMatchingAll(MMAX2MatchingCriterion criterion)
Used by MMAX query.


getMarkablesMatchingAny

public final java.util.ArrayList getMarkablesMatchingAny(MMAX2MatchingCriterion criterion)
Used by MMAX query.


getMarkables

public final java.util.ArrayList getMarkables()

getMarkables

public final java.util.ArrayList getMarkables(java.util.Comparator comp)

getMatchingMarkables

public final java.util.ArrayList getMatchingMarkables(java.lang.String queryString)
AdmissibleCategories is a list of those REs that should be included in the list as source. The Category of the RE that a Markable is mapped to is stored as attribute 'mapped_to_re'. Markables that are unmapped to any any RE are always included


updateMarkables

public final void updateMarkables()

createMarkables

public final int createMarkables()
This method is called from the MMAX2DiscourseLoader after the MMAX2Discourse field has been set on this level. Markable spans are expanded on the basis of the element IDs actually contained in the base data, and not by mere interpolation of integer IDs! Synopsis: This method basically iterates over all elements in this.markableDOM, creates a Markable object for each by means of the Markable constructor, and adds that to this.markableHash.


setCurrentDiscourse

public void setCurrentDiscourse(MMAX2Discourse _discourse)

getCurrentDiscourse

public MMAX2Discourse getCurrentDiscourse()

getMarkableByID

public Markable getMarkableByID(java.lang.String markableId)

getAllMarkablesStartingWith

public final Markable[] getAllMarkablesStartingWith(MMAX2DiscourseElementSequence sequence)

getSingleLongestMarkableStartingWith

public final Markable getSingleLongestMarkableStartingWith(MMAX2DiscourseElementSequence sequence)

getAllMarkablesAtDiscourseElement

public Markable[] getAllMarkablesAtDiscourseElement(java.lang.String discourseElementId,
                                                    boolean sort)
This method returns an array of those Markable objects associated with discourseElement Id, or empty array if none. Since this is on MarkableLayer level, no distinction is made wrt to active/inactive. The retrieved Array comes from a hash, so this method is efficient (a little less so if sort==true, which causes the markables to be sorted in discourse order, shorter before longer ones).


getMarkablesAtDiscourseElementID

public java.util.ArrayList getMarkablesAtDiscourseElementID(java.lang.String discourseElementId,
                                                            java.util.Comparator comp)
This method returns an ArrayList of those Markable objects associated with discourseElement Id, or empty list if none. Since this is on MarkableLayer level, no distinction is made wrt to active/inactive. The retrieved Array comes from a hash, so this method is efficient (a little less so if sort==true, which causes the markables to be sorted in discourse order, shorter after longer ones).


getMarkablesAtDiscoursePosition

public java.util.ArrayList getMarkablesAtDiscoursePosition(int discPos,
                                                           java.util.Comparator comp)
This method returns an ArrayList of those Markable objects associated with discourseElement Id, or empty list if none. Since this is on MarkableLayer level, no distinction is made wrt to active/inactive. The retrieved Array comes from a hash, so this method is efficient (a little less so if sort==true, which causes the markables to be sorted in discourse order, shorter after longer ones).


getAllMarkablesStartedByDiscourseElement

public Markable[] getAllMarkablesStartedByDiscourseElement(java.lang.String discourseElementId)
This method returns an array of those Markable objects started at discourseElement Id, or empty array if none. Since this is on MarkableLayer level, no distinction is made wrt to active/inactive.

Specified by:
getAllMarkablesStartedByDiscourseElement in interface MarkableLevelAPI
Parameters:
discourseElementId - The ID of a DiscourseElement (e.g. 'word_4').
Returns:
An array of Markable objects.

getSingleMarkableExactlyAtDiscourseElement

public Markable getSingleMarkableExactlyAtDiscourseElement(java.lang.String discourseElementId)

getAllMarkablesEndedByDiscourseElement

public Markable[] getAllMarkablesEndedByDiscourseElement(java.lang.String discourseElementId)
This method returns an array of those Markable objects ended at discourseElement Id, or empty array if none. Since this is on MarkableLayer level, no distinction is made wrt to active/inactive.

Specified by:
getAllMarkablesEndedByDiscourseElement in interface MarkableLevelAPI
Parameters:
discourseElementId - The ID of a DiscourseElement (e.g. 'word_4').
Returns:
An array of Markable objects.

getAllMarkablesAtDiscoursePosition

public Markable[] getAllMarkablesAtDiscoursePosition(int pos)
Main method for layer-wise retrieval of Markables from discourse positions. Returns empty Markable array if no Markables are found. Since this is on MarkableLayer level, no distinction is made wrt to active/inactive.

Specified by:
getAllMarkablesAtDiscoursePosition in interface MarkableLevelAPI
Parameters:
pos - The numeric discourse position for which the Markables on this MarkableLevel are to be returned.
Returns:
An array of Markable objects

getAllStartedMarkablesAsNodes

public final void getAllStartedMarkablesAsNodes(java.lang.String discourseElementId,
                                                org.apache.xpath.NodeSet result)
This method updates a NodeSet of those Markables at the current MarkableLayer beginning at discourseElementId, with longer Markables before shorter ones. Since this is on MarkableLayer level, no distinction is made wrt to active/inactive.


getAllEndedMarkablesAsNodes

public final void getAllEndedMarkablesAsNodes(java.lang.String discourseElementId,
                                              org.apache.xpath.NodeSet result)
This method updates a NodeSet of those Markables at the current MarkableLayer ending at discourseElementId, with shorter Markables before longer ones. Since this is on MarkableLayer level, no distinction is made wrt to active/inactive.


unregisterMarkable

public final void unregisterMarkable(Markable unregisteree)

unregisterMarkableAtDiscourseElement

public final void unregisterMarkableAtDiscourseElement(Markable unregisteree,
                                                       java.lang.String de)

unregisterMarkableAtStartOfFragment

public final void unregisterMarkableAtStartOfFragment(Markable unregisteree,
                                                      java.lang.String de)

unregisterMarkableAtEndOfFragment

public final void unregisterMarkableAtEndOfFragment(Markable unregisteree,
                                                    java.lang.String de)

registerMarkableAtStartOfFragment

public final void registerMarkableAtStartOfFragment(java.lang.String discourseElementId,
                                                    Markable markable)
This method informs the current layer that Markable markable starts at DiscourseElement id. It is called by the Markable constructor upon Markable creation. It has to be executed BEFORE style sheet application, because the method getMarkablesStartedByDiscourseElement(id) is required during style sheet execution.


registerMarkableAtEndOfFragment

public final void registerMarkableAtEndOfFragment(java.lang.String discourseElementId,
                                                  Markable markable)
This method informs the current layer that Markable markable ends at DiscourseElement id. It is called by the Markable constructor upon Markable creation. It has to be executed BEFORE style sheet application, because the method getMarkablesEndedByDiscourseElement(id) is required during style sheet execution.


registerMarkableAtDiscourseElement

public final void registerMarkableAtDiscourseElement(java.lang.String discourseElementId,
                                                     Markable markable)
This method is called by each Markable constructor and updates this.markablesAtDiscourseElement to reflect that Markable markable is associated with the DE with ID discourseElementId.


setMarkableDisplayPositions

public final void setMarkableDisplayPositions()
This method sets for all Markables on this level the fields displayStartPosition and displayEndPosition.


createOneClickAnnotationSelector

public final MMAX2OneClickAnnotationSelector createOneClickAnnotationSelector(Markable currentPrimary,
                                                                              MarkableChart _chart,
                                                                              int displayPos)

createDiscoursePositionToMarkableMapping

public final void createDiscoursePositionToMarkableMapping()
This method is called by the MarkableChart for each MarkableLayer associated with it, AFTER the style sheet has been applied. It uses getDiscoursePositionFromDiscourseElementId to fill the array markablesAtDiscoursePosition with arrays of Markables associated with the DE at this discourse position. The method must be called AFTER style sheet execution because it is only there that DiscourseElements are associated with discourse positions. As a result, direct (constant time) access from discourse positions to associated markables is possible.


updateDiscoursePositionToMarkableMapping

public final void updateDiscoursePositionToMarkableMapping(java.lang.String tempDE)

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent actionEvent)
Specified by:
actionPerformed in interface java.awt.event.ActionListener

setActive

public final void setActive()

setInactive

public final void setInactive()

setVisible

public final void setVisible()