X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fcontroller%2FAlignViewController.java;h=24439caa05355860b5d9d2d67950d19bf0c23643;hb=36dceb54710feb97a81f4bd69ad051f316141dc3;hp=e4f11e09cf4d66de64e570d49c48b89ffe6ca2eb;hpb=26ba864a6c290121fe6cf616794d2d0bea65fb7d;p=jalview.git diff --git a/src/jalview/controller/AlignViewController.java b/src/jalview/controller/AlignViewController.java index e4f11e0..24439ca 100644 --- a/src/jalview/controller/AlignViewController.java +++ b/src/jalview/controller/AlignViewController.java @@ -37,7 +37,6 @@ import jalview.io.FeaturesFile; import jalview.util.MessageManager; import java.awt.Color; -import java.util.ArrayList; import java.util.BitSet; import java.util.List; @@ -83,8 +82,7 @@ public class AlignViewController implements AlignViewControllerI SequenceGroup sg = viewport.getSelectionGroup(); ColumnSelection cs = viewport.getColumnSelection(); SequenceGroup[] gps = null; - if (sg != null - && (cs == null || cs.getSelected() == null || cs.size() == 0)) + if (sg != null && (cs == null || cs.isEmpty())) { gps = jalview.analysis.Grouping.makeGroupsFrom(viewport .getSequenceSelection(), viewport.getAlignmentView(true) @@ -240,6 +238,7 @@ public class AlignViewController implements AlignViewControllerI ColumnSelection cs = viewport.getColumnSelection(); if (bs.cardinality() > 0 || invert) { + boolean changed = false; if (cs == null) { cs = new ColumnSelection(); @@ -248,6 +247,7 @@ public class AlignViewController implements AlignViewControllerI { if (!extendCurrent) { + changed = !cs.isEmpty(); cs.clear(); } } @@ -259,6 +259,7 @@ public class AlignViewController implements AlignViewControllerI { if (ibs < 0 || i < ibs) { + changed = true; if (toggle && cs.contains(i)) { cs.removeElement(i++); @@ -280,6 +281,7 @@ public class AlignViewController implements AlignViewControllerI for (int i = bs.nextSetBit(alStart); i >= alStart; i = bs .nextSetBit(i + 1)) { + changed = true; if (toggle && cs.contains(i)) { cs.removeElement(i); @@ -290,18 +292,21 @@ public class AlignViewController implements AlignViewControllerI } } } - viewport.setColumnSelection(cs); - alignPanel.paintAlignment(true); - avcg.setStatus(MessageManager.formatMessage( - "label.view_controller_toggled_marked", - new String[] { - (toggle ? MessageManager.getString("label.toggled") - : MessageManager.getString("label.marked")), - (invert ? (Integer.valueOf((alw - alStart) - - bs.cardinality()).toString()) : (Integer - .valueOf(bs.cardinality()).toString())), - featureType, Integer.valueOf(nseq).toString() })); - return true; + if (changed) + { + viewport.setColumnSelection(cs); + alignPanel.paintAlignment(true); + avcg.setStatus(MessageManager.formatMessage( + "label.view_controller_toggled_marked", + new String[] { + (toggle ? MessageManager.getString("label.toggled") + : MessageManager.getString("label.marked")), + (invert ? (Integer.valueOf((alw - alStart) + - bs.cardinality()).toString()) : (Integer + .valueOf(bs.cardinality()).toString())), + featureType, Integer.valueOf(nseq).toString() })); + return true; + } } else { @@ -313,51 +318,28 @@ public class AlignViewController implements AlignViewControllerI cs.clear(); alignPanel.paintAlignment(true); } - return false; } + return false; } @Override - public void sortAlignmentByFeatureDensity(String[] typ) + public void sortAlignmentByFeatureDensity(List typ) { sortBy(typ, "Sort by Density", AlignmentSorter.FEATURE_DENSITY); } - protected void sortBy(String[] typ, String methodText, final String method) + protected void sortBy(List typ, String methodText, + final String method) { FeatureRenderer fr = alignPanel.getFeatureRenderer(); - if (typ == null) + if (typ == null && fr != null) { - typ = fr == null ? null : fr.getDisplayedFeatureTypes(); + typ = fr.getDisplayedFeatureTypes(); } - String gps[] = null; - gps = fr == null ? null : fr.getDisplayedFeatureGroups(); - if (typ != null) + List gps = null; + if (fr != null) { - ArrayList types = new ArrayList(); - for (int i = 0; i < typ.length; i++) - { - if (typ[i] != null) - { - types.add(typ[i]); - } - typ = new String[types.size()]; - types.toArray(typ); - } - } - if (gps != null) - { - ArrayList grps = new ArrayList(); - - for (int i = 0; i < gps.length; i++) - { - if (gps[i] != null) - { - grps.add(gps[i]); - } - } - gps = new String[grps.size()]; - grps.toArray(gps); + gps = fr.getDisplayedFeatureGroups(); } AlignmentI al = viewport.getAlignment(); @@ -382,7 +364,7 @@ public class AlignViewController implements AlignViewControllerI } @Override - public void sortAlignmentByFeatureScore(String[] typ) + public void sortAlignmentByFeatureScore(List typ) { sortBy(typ, "Sort by Feature Score", AlignmentSorter.FEATURE_SCORE); }