From 670c6ccb4d070850b8ba3af2a99f600459a61bbe Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Mon, 7 Oct 2013 16:59:52 +0100 Subject: [PATCH] JAL-1385 Alignment view controller logic implementation and API --- src/jalview/api/AlignViewControllerI.java | 24 ++++++ src/jalview/controller/AlignViewController.java | 100 +++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 src/jalview/api/AlignViewControllerI.java create mode 100644 src/jalview/controller/AlignViewController.java diff --git a/src/jalview/api/AlignViewControllerI.java b/src/jalview/api/AlignViewControllerI.java new file mode 100644 index 0000000..fc63fd6 --- /dev/null +++ b/src/jalview/api/AlignViewControllerI.java @@ -0,0 +1,24 @@ +package jalview.api; + +/** + * prototype abstract controller for a Jalview alignment view + * @author jimp + * + * All operations should return true if the view has changed as a result of the operation + * @param + * + */ +public interface AlignViewControllerI +{ + + public boolean makeGroupsFromSelection(); + + public boolean createGroup(); + + public boolean unGroup(); + + public boolean deleteGroups(); + + public void setViewportAndAlignmentPanel(AlignViewportI viewport, AlignmentViewPanel alignPanel); + +} diff --git a/src/jalview/controller/AlignViewController.java b/src/jalview/controller/AlignViewController.java new file mode 100644 index 0000000..16e8cdd --- /dev/null +++ b/src/jalview/controller/AlignViewController.java @@ -0,0 +1,100 @@ +package jalview.controller; + +import java.awt.Color; + +import jalview.api.AlignViewControllerI; +import jalview.api.AlignViewportI; +import jalview.api.AlignmentViewPanel; +import jalview.datamodel.SequenceGroup; +import jalview.datamodel.SequenceI; + +public class AlignViewController implements AlignViewControllerI +{ + AlignViewportI viewport=null; + AlignmentViewPanel alignPanel=null; + @Override + protected void finalize() throws Throwable { + viewport = null; + alignPanel = null; + }; + + public AlignViewController(AlignViewportI viewport, + AlignmentViewPanel alignPanel) + { + this.viewport=viewport; + this.alignPanel = alignPanel; + } + @Override + public void setViewportAndAlignmentPanel(AlignViewportI viewport,AlignmentViewPanel alignPanel) + { + this.alignPanel = alignPanel; + this.viewport = viewport; + + } + @Override + public boolean makeGroupsFromSelection() + { + + if (viewport.getSelectionGroup() != null) + { + SequenceGroup[] gps = jalview.analysis.Grouping.makeGroupsFrom( + viewport.getSequenceSelection(), + viewport.getAlignmentView(true).getSequenceStrings( + viewport.getGapCharacter()), viewport.getAlignment() + .getGroups()); + viewport.getAlignment().deleteAllGroups(); + viewport.clearSequenceColours(); + viewport.setSelectionGroup(null); + // set view properties for each group + for (int g = 0; g < gps.length; g++) + { + // gps[g].setShowunconserved(viewport.getShowUnconserved()); + gps[g].setshowSequenceLogo(viewport.isShowSequenceLogo()); + viewport.getAlignment().addGroup(gps[g]); + Color col = new Color((int) (Math.random() * 255), + (int) (Math.random() * 255), (int) (Math.random() * 255)); + col = col.brighter(); + for (SequenceI sq : gps[g].getSequences(null)) + viewport.setSequenceColour(sq, col); + } + return true; + } + return false; +} + @Override + public boolean createGroup() + { + + SequenceGroup sg = viewport.getSelectionGroup(); + if (sg!=null) + { + viewport.getAlignment().addGroup(sg); + return true; + } + return false; + } + @Override + public boolean unGroup() + { + SequenceGroup sg = viewport.getSelectionGroup(); + if (sg!=null) + { + viewport.getAlignment().deleteGroup(sg); + return true; + } + return false; + } + @Override + public boolean deleteGroups() + { + if (viewport.getAlignment().getGroups()!=null && viewport.getAlignment().getGroups().size()>0) + { + viewport.getAlignment().deleteAllGroups(); + viewport.clearSequenceColours(); + viewport.setSelectionGroup(null); + return true; + } + return false; + } + + } -- 1.7.10.2