X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2Fapplications%2FtemplateEditor%2FTemplateEdits.java;fp=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2Fapplications%2FtemplateEditor%2FTemplateEdits.java;h=d0869894a231cd4ae5ebfa25fea531a28831e27f;hb=ec8f3cedf60fb1feed6d34de6b49f6bfa78b9dd8;hp=0000000000000000000000000000000000000000;hpb=056dad85a910551cc95e44d451a61f6b8c4dd35d;p=jalview.git diff --git a/srcjar/fr/orsay/lri/varna/applications/templateEditor/TemplateEdits.java b/srcjar/fr/orsay/lri/varna/applications/templateEditor/TemplateEdits.java new file mode 100644 index 0000000..d086989 --- /dev/null +++ b/srcjar/fr/orsay/lri/varna/applications/templateEditor/TemplateEdits.java @@ -0,0 +1,174 @@ +package fr.orsay.lri.varna.applications.templateEditor; + +import java.awt.geom.Point2D; + +import javax.swing.undo.AbstractUndoableEdit; +import javax.swing.undo.CannotRedoException; +import javax.swing.undo.CannotUndoException; +import javax.swing.undo.UndoableEdit; + +public class TemplateEdits { + public static final double MAX_DISTANCE= 15.0; + + public static class ElementAddTemplateEdit extends AbstractUndoableEdit + { + private GraphicalTemplateElement _h; + private TemplatePanel _p; + public ElementAddTemplateEdit(GraphicalTemplateElement h,TemplatePanel p) + { + _h = h; + _p = p; + } + public void undo() throws CannotUndoException { + _p.removeElement(_h); + _p.repaint(); + } + public void redo() throws CannotRedoException { + _p.addElement(_h); + _p.repaint(); + } + public boolean canUndo() { return true; } + public boolean canRedo() { return true; } + public String getPresentationName() { return "Graphical element added"; } + }; + public static class ElementRemoveTemplateEdit extends AbstractUndoableEdit + { + private GraphicalTemplateElement _h; + private TemplatePanel _p; + public ElementRemoveTemplateEdit(GraphicalTemplateElement h,TemplatePanel p) + { + _h = h; + _p = p; + } + public void undo() throws CannotUndoException { + _p.addElement(_h); + _p.repaint(); + } + public void redo() throws CannotRedoException { + _p.removeElement(_h); + _p.repaint(); + } + public boolean canUndo() { return true; } + public boolean canRedo() { return true; } + public String getPresentationName() { return "Graphical element removed"; } + }; + public static class ElementAttachTemplateEdit extends AbstractUndoableEdit + { + Connection _c; + private TemplatePanel _p; + public ElementAttachTemplateEdit(Connection c, + TemplatePanel p) + { + _c = c; + _p = p; + } + public void undo() throws CannotUndoException { + _p.removeConnection(_c); + _p.repaint(); + } + public void redo() throws CannotRedoException { + _c = _p.addConnection(_c._h1,_c._edge1,_c._h2,_c._edge2); + _p.repaint(); + } + public boolean canUndo() { return true; } + public boolean canRedo() { return true; } + public String getPresentationName() { return "Graphical elements attached"; } + }; + public static class ElementDetachTemplateEdit extends AbstractUndoableEdit + { + Connection _c; + private TemplatePanel _p; + public ElementDetachTemplateEdit(Connection c, + TemplatePanel p) + { + _c = c; + _p = p; + } + public void undo() throws CannotUndoException { + _c = _p.addConnection(_c._h1,_c._edge1,_c._h2,_c._edge2); + _p.repaint(); + } + public void redo() throws CannotRedoException { + _p.removeConnection(_c); + _p.repaint(); + } + public boolean canUndo() { return true; } + public boolean canRedo() { return true; } + public String getPresentationName() { return "Graphical elements detached"; } + }; + + public static class ElementEdgeMoveTemplateEdit extends AbstractUndoableEdit + { + private GraphicalTemplateElement _ur; + GraphicalTemplateElement.RelativePosition _edge; + private double _ox; + private double _oy; + private double _nx; + private double _ny; + private TemplatePanel _p; + public ElementEdgeMoveTemplateEdit(GraphicalTemplateElement ur, GraphicalTemplateElement.RelativePosition edge, double nx, double ny, TemplatePanel p) + { + _ur = ur; + _edge = edge; + _ox = ur.getEdgePosition(edge).x; + _oy = ur.getEdgePosition(edge).y; + _nx = nx; + _ny = ny; + _p = p; + } + public void undo() throws CannotUndoException { + _ur.setEdgePosition(_edge,new Point2D.Double(_ox,_oy)); + _p.repaint(); + } + public void redo() throws CannotRedoException { + _ur.setEdgePosition(_edge,new Point2D.Double(_nx,_ny)); + _p.repaint(); + } + public boolean canUndo() { return true; } + public boolean canRedo() { return true; } + public String getPresentationName() { return "Edge moved "+_edge; } + public boolean addEdit(UndoableEdit anEdit) + { + if (anEdit instanceof ElementEdgeMoveTemplateEdit) + { + ElementEdgeMoveTemplateEdit e = (ElementEdgeMoveTemplateEdit) anEdit; + if (e._edge==_edge) + { + Point2D.Double po1 = new Point2D.Double(_ox,_oy); + Point2D.Double pn1 = new Point2D.Double(_nx,_ny); + Point2D.Double po2 = new Point2D.Double(e._ox,e._oy); + Point2D.Double pn2 = new Point2D.Double(e._nx,e._ny); + if ((_ur==e._ur)&&(pn1.equals(po2))&&(po1.distance(pn2)