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; /** * the GUI container that is handling interactions with the user */ private AlignViewControllerGuiI avcg; @Override protected void finalize() throws Throwable { viewport = null; alignPanel = null; avcg = null; }; public AlignViewController(AlignViewControllerGuiI alignFrame, AlignViewportI viewport, AlignmentViewPanel alignPanel) { this.avcg = alignFrame; 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; } }