X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fcontroller%2FAlignViewController.java;h=24439caa05355860b5d9d2d67950d19bf0c23643;hb=461b359b7338934b198a22bd70c622f333ac4661;hp=3be32bb1e4a3e0f767415f5b6f0a5ec36b8140d7;hpb=7ba92fd0e87b8155e656cfb9562d024a2524086d;p=jalview.git diff --git a/src/jalview/controller/AlignViewController.java b/src/jalview/controller/AlignViewController.java index 3be32bb..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,23 +82,25 @@ 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).getSequenceStrings( - viewport.getGapCharacter()), viewport.getAlignment() - .getGroups()); - } else { - if (cs!=null) { + gps = jalview.analysis.Grouping.makeGroupsFrom(viewport + .getSequenceSelection(), viewport.getAlignmentView(true) + .getSequenceStrings(viewport.getGapCharacter()), viewport + .getAlignment().getGroups()); + } + else + { + if (cs != null) + { gps = jalview.analysis.Grouping.makeGroupsFromCols( (sg == null) ? viewport.getAlignment().getSequencesArray() : sg.getSequences().toArray(new SequenceI[0]), cs, viewport.getAlignment().getGroups()); } } - if (gps!=null) { + if (gps != null) + { viewport.getAlignment().deleteAllGroups(); viewport.clearSequenceColours(); viewport.setSelectionGroup(null); @@ -237,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(); @@ -245,6 +247,7 @@ public class AlignViewController implements AlignViewControllerI { if (!extendCurrent) { + changed = !cs.isEmpty(); cs.clear(); } } @@ -256,6 +259,7 @@ public class AlignViewController implements AlignViewControllerI { if (ibs < 0 || i < ibs) { + changed = true; if (toggle && cs.contains(i)) { cs.removeElement(i++); @@ -277,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); @@ -287,71 +292,54 @@ 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 { - avcg.setStatus(MessageManager.formatMessage("label.no_feature_of_type_found", new String[]{featureType})); + avcg.setStatus(MessageManager.formatMessage( + "label.no_feature_of_type_found", + new String[] { featureType })); if (!extendCurrent && cs != null) { 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(); @@ -376,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); } @@ -388,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)