X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2Fapplications%2FtemplateEditor%2FTemplateEditorPanelUI.java;fp=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2Fapplications%2FtemplateEditor%2FTemplateEditorPanelUI.java;h=9a7725ed61dc6af877e89f88560e5018a636d64e;hb=ec8f3cedf60fb1feed6d34de6b49f6bfa78b9dd8;hp=0000000000000000000000000000000000000000;hpb=056dad85a910551cc95e44d451a61f6b8c4dd35d;p=jalview.git diff --git a/srcjar/fr/orsay/lri/varna/applications/templateEditor/TemplateEditorPanelUI.java b/srcjar/fr/orsay/lri/varna/applications/templateEditor/TemplateEditorPanelUI.java new file mode 100644 index 0000000..9a7725e --- /dev/null +++ b/srcjar/fr/orsay/lri/varna/applications/templateEditor/TemplateEditorPanelUI.java @@ -0,0 +1,112 @@ +package fr.orsay.lri.varna.applications.templateEditor; + +import java.awt.geom.Point2D; + +import javax.swing.undo.UndoManager; +import javax.swing.undo.UndoableEditSupport; + +import fr.orsay.lri.varna.applications.templateEditor.GraphicalTemplateElement.RelativePosition; +import fr.orsay.lri.varna.models.templates.RNATemplate; + +public class TemplateEditorPanelUI { + + private UndoableEditSupport _undoableEditSupport; + private TemplatePanel _tp; + private Tool selectedTool = Tool.CREATE_HELIX; + + + + public enum Tool { + SELECT, CREATE_HELIX, CREATE_UNPAIRED + } + + public TemplateEditorPanelUI(TemplatePanel tp) + { + _tp = tp; + _undoableEditSupport = new UndoableEditSupport(tp); + } + + public Tool getSelectedTool() { + return selectedTool; + } + + public void setSelectedTool(Tool selectedTool) { + this.selectedTool = selectedTool; + } + + /* Generic undoable event firing for edge movement */ + public void undoableEdgeMove(GraphicalTemplateElement h, GraphicalTemplateElement.RelativePosition edge,double nx, double ny) + { + _undoableEditSupport.postEdit(new TemplateEdits.ElementEdgeMoveTemplateEdit( h,edge,nx,ny,_tp)); + h.setEdgePosition(edge, new Point2D.Double(nx,ny)); + _tp.repaint(); + } + + public void setEdge5UI(GraphicalTemplateElement h, double nx, double ny) + { undoableEdgeMove(h,GraphicalTemplateElement.RelativePosition.RP_CONNECT_START5, nx,ny); } + public void setEdge3UI(UnpairedRegion h, double nx, double ny) + { undoableEdgeMove(h,GraphicalTemplateElement.RelativePosition.RP_CONNECT_END3, nx,ny); } + public void setEdge5TangentUI(UnpairedRegion h, double nx, double ny) + { undoableEdgeMove(h,GraphicalTemplateElement.RelativePosition.RP_EDIT_TANGENT_5, nx,ny); } + public void setEdge3TangentUI(UnpairedRegion h, double nx, double ny) + { undoableEdgeMove(h,GraphicalTemplateElement.RelativePosition.RP_EDIT_TANGENT_3, nx,ny); } + public void moveUnpairedUI(UnpairedRegion u, double nx, double ny) + { undoableEdgeMove(u,GraphicalTemplateElement.RelativePosition.RP_INNER_MOVE, nx,ny); } + public void moveHelixUI(Helix h, double nx, double ny) + { undoableEdgeMove(h,GraphicalTemplateElement.RelativePosition.RP_INNER_MOVE, nx,ny); } + public void setHelixPosUI(Helix h, double nx, double ny) + { undoableEdgeMove(h,GraphicalTemplateElement.RelativePosition.RP_EDIT_START, nx,ny); } + public void setHelixExtentUI(Helix h, double nx, double ny) + { undoableEdgeMove(h,GraphicalTemplateElement.RelativePosition.RP_EDIT_END, nx,ny); } + + + public void addElementUI(GraphicalTemplateElement h) + { + _undoableEditSupport.postEdit(new TemplateEdits.ElementAddTemplateEdit( h,_tp)); + _tp.addElement(h); + } + + public void removeElementUI(GraphicalTemplateElement h) + { + _undoableEditSupport.postEdit(new TemplateEdits.ElementRemoveTemplateEdit( h,_tp)); + _tp.removeElement(h); + } + + + public void addUndoableEditListener(UndoManager manager) + { + _undoableEditSupport.addUndoableEditListener(manager); + } + + public void addConnectionUI(GraphicalTemplateElement h1, + GraphicalTemplateElement.RelativePosition e1, + GraphicalTemplateElement h2, + GraphicalTemplateElement.RelativePosition e2) + { + if (GraphicalTemplateElement.canConnect(h1, e1,h2, e2)) + { + Connection c = _tp.addConnection(h1,e1,h2,e2); + _undoableEditSupport.postEdit(new TemplateEdits.ElementAttachTemplateEdit(c,_tp)); + } + } + + public void removeConnectionUI(Connection c) + { + _undoableEditSupport.postEdit(new TemplateEdits.ElementDetachTemplateEdit(c,_tp)); + _tp.removeConnection(c); + } + + public void flipHelixUI(Helix h) + { + _undoableEditSupport.postEdit(new TemplateEdits.HelixFlipTemplateEdit(h,_tp)); + _tp.flip(h); + _tp.repaint(); + } + + public RNATemplate getTemplate() + { + return _tp.getTemplate(); + } + + +}