package gate.alignment.gui; import java.util.Set; import gate.Annotation; import gate.Document; import gate.alignment.AlignmentActionInitializationException; import gate.alignment.AlignmentException; import gate.compound.CompoundDocument; import javax.swing.Icon; /** * This interface represents an AlignmentAction. AlignAction, * ResetAction and RemoveAlignmentAction are examples of the * AlignmentAction. In other words, it represents an action that could * take place after the pair is displayed and before the user specifies * to change his/her focus onto a new sentence pair. If not one of the * above three, such an action could be executed with any of the * AlignAction or RemoveAlignmentAction. * * @author niraj * */ public interface AlignmentAction { /** * This method is invoked whenever users click on the "Align" button * in the alignment editor gui. * * @param editor - alignment editor * @param document - compound document, the alignment editor belongs * to * @param srcDocument - a member of the compound document that has * been selected as a source document. * @param srcAS - annotation set to which the annotations being * aligned belong to. * @param srcAlignedAnnotations - annotations from the source document * that are being aligned. * @param tgtDocument - a member of the compound document that has * been selected as a target document. * @param tgtAS - annotation set to which the annotations being * aligned belong to. * @param tgtAlignedAnnotations - annotations from the target document * that are being aligned. * @param clickedAnnotation - the last annotation on which the user * had right clicked to invoke and execute this action. * @throws AlignmentException */ public void execute(AlignmentEditor editor, CompoundDocument document, Document srcDocument, String srcAS, Set<Annotation> srcAlignedAnnotations, Document tgtDocument, String tgtAS, Set<Annotation> tgtAlignedAnnotations, Annotation clickedAnnotation) throws AlignmentException; /** * Keep this null in order to be called along with the default align * action. Otherwise it is shown with this title under the options tab * in the alignment editor. * * @return */ public String getCaption(); /** * Keep this null in order to be called along with the default align * action. Otherwise it is shown with this icon under the options tab * in the alignment editor. * * @return */ public Icon getIcon(); /** * Icon's absolte path on the filesystem. * * @return */ public String getIconPath(); /** * Indicates if this action should be displayed when user right clicks * on an aligned annotation. * * @return */ public boolean invokeForAlignedAnnotation(); /** * Indicates if this action should be displayed when user right clicks * on an annotation that is highlighted but is not aligned. * * @return */ public boolean invokeForHighlightedUnalignedAnnotation(); /** * indicates if this action should be displayed when user right clicks * on an annotation that is not highlighted and is not aligned. * * @return */ public boolean invokeForUnhighlightedUnalignedAnnotation(); /** * This method should be used for initializing any resources required * by the execute() method. This method is called whenever it loaded * for the first time. * * @param args * @throws AlignmentActionInitializationException */ public void init(String[] args) throws AlignmentActionInitializationException; /** * This method should free up the memory by releasing any resources * occupied this method. It is called just before the alignment editor * is closed. */ public void cleanup(); /** * Indicates if this action should be called along with the default * align action. * * @return */ public boolean invokeWithAlignAction(); /** * Indicates if this action should be called along with the unalign * action. * * @return */ public boolean invokeWithRemoveAction(); /** * A tooltip to show whenever user puts his/her mouse on the * caption/icon of this action in the alignment editor. * * @return */ public String getToolTip(); }