package gate.alignment.gui.actions.impl; import java.util.Set; import gate.Annotation; import gate.Document; import gate.alignment.Alignment; import gate.alignment.AlignmentException; import gate.alignment.gui.AlignmentEditor; import gate.compound.CompoundDocument; /** * It uses the highlighted annotations from the editor and aligns them * with one other. * * @author niraj * */ public class AlignAction extends AbstractAlignmentAction { /** * non-javadoc * * @see AlignmentAction.execute(...) */ 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 { // alignment object Alignment alignment = document.getAlignmentInformation(editor .getAlignmentFeatureName()); // so first of all clear the latestSelection editor.clearLatestAnnotationsSelection(); if(srcAlignedAnnotations == null || srcAlignedAnnotations.isEmpty()) return; if(tgtAlignedAnnotations == null || tgtAlignedAnnotations.isEmpty()) return; for(Annotation srcAnnotation : srcAlignedAnnotations) { for(Annotation tgtAnnotation : tgtAlignedAnnotations) { if(!alignment.areTheyAligned(srcAnnotation, tgtAnnotation)) { if(!alignment.isAnnotationAligned(srcAnnotation)) { srcAnnotation.getFeatures().put( Alignment.ALIGNMENT_METHOD_FEATURE_NAME, "manual"); } if(!alignment.isAnnotationAligned(tgtAnnotation)) { tgtAnnotation.getFeatures().put( Alignment.ALIGNMENT_METHOD_FEATURE_NAME, "manual"); } alignment.align(srcAnnotation, srcAS, srcDocument, tgtAnnotation, tgtAS, tgtDocument); } } } } /** * @return "Align" */ public String getCaption() { return "Align"; } /** * @return false */ public boolean invokeForAlignedAnnotation() { return false; } /** * @return false */ public boolean invokeForUnhighlightedUnalignedAnnotation() { return false; } /** * Description of the class */ public String getToolTip() { return "Aligns the selected source and target annotations"; } }