X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fcontroller%2FAlignViewController.java;h=24439caa05355860b5d9d2d67950d19bf0c23643;hb=7308f8601e2037183869fd33509871e8c7a2b5e7;hp=6a7e222d5a0804224e461ccb29d7fef67a76ca58;hpb=3be19c1e81d0960f7e7f03e600abdc912890c761;p=jalview.git diff --git a/src/jalview/controller/AlignViewController.java b/src/jalview/controller/AlignViewController.java index 6a7e222..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; @@ -239,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(); @@ -247,6 +247,7 @@ public class AlignViewController implements AlignViewControllerI { if (!extendCurrent) { + changed = !cs.isEmpty(); cs.clear(); } } @@ -258,6 +259,7 @@ public class AlignViewController implements AlignViewControllerI { if (ibs < 0 || i < ibs) { + changed = true; if (toggle && cs.contains(i)) { cs.removeElement(i++); @@ -279,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); @@ -289,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 { @@ -312,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) { - List types = new ArrayList(); - for (String displayed : typ) - { - if (displayed != null) - { - types.add(displayed); - } - } - typ = new String[types.size()]; - types.toArray(typ); - } - if (gps != null) - { - List 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(); @@ -381,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); } @@ -393,7 +376,7 @@ public class AlignViewController implements AlignViewControllerI boolean featuresFile = false; try { - featuresFile = new FeaturesFile(file, protocol).parse(viewport + featuresFile = new FeaturesFile(false, file, protocol).parse(viewport .getAlignment().getDataset(), alignPanel.getFeatureRenderer() .getFeatureColours(), false, relaxedIdMatching); } catch (Exception ex)