X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fcontroller%2FAlignViewController.java;h=bccacfa71e54e9b9907a080a8174198deba62a2b;hb=HEAD;hp=8087210fd06b31d0a3c4bff1b54754a7bc5fe66a;hpb=5a1324c30a40231bea443ff15c196ced9d6d51df;p=jalview.git diff --git a/src/jalview/controller/AlignViewController.java b/src/jalview/controller/AlignViewController.java index 8087210..bccacfa 100644 --- a/src/jalview/controller/AlignViewController.java +++ b/src/jalview/controller/AlignViewController.java @@ -20,6 +20,10 @@ */ package jalview.controller; +import java.awt.Color; +import java.util.BitSet; +import java.util.List; + import jalview.analysis.AlignmentSorter; import jalview.api.AlignViewControllerGuiI; import jalview.api.AlignViewControllerI; @@ -29,19 +33,17 @@ import jalview.api.FeatureRenderer; import jalview.commands.OrderCommand; import jalview.datamodel.AlignmentI; import jalview.datamodel.ColumnSelection; +import jalview.datamodel.SearchResultsI; import jalview.datamodel.SequenceCollectionI; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; +import jalview.gui.Desktop; import jalview.io.DataSourceType; import jalview.io.FeaturesFile; import jalview.schemes.ColourSchemeI; import jalview.util.MessageManager; -import java.awt.Color; -import java.util.BitSet; -import java.util.List; - public class AlignViewController implements AlignViewControllerI { AlignViewportI viewport = null; @@ -168,8 +170,9 @@ public class AlignViewController implements AlignViewControllerI BitSet bs = new BitSet(); boolean searchSelection = viewport.getSelectionGroup() != null && !extendCurrent; - SequenceCollectionI sqcol = searchSelection ? viewport - .getSelectionGroup() : viewport.getAlignment(); + SequenceCollectionI sqcol = searchSelection + ? viewport.getSelectionGroup() + : viewport.getAlignment(); int nseq = findColumnsWithFeature(featureType, sqcol, bs); @@ -207,8 +210,9 @@ public class AlignViewController implements AlignViewControllerI { String key = searchSelection ? "label.no_feature_found_selection" : "label.no_feature_of_type_found"; - avcg.setStatus(MessageManager.formatMessage(key, - new String[] { featureType })); + avcg.setStatus( + MessageManager.formatMessage(key, new String[] + { featureType })); if (!extendCurrent) { cs.clear(); @@ -229,11 +233,11 @@ public class AlignViewController implements AlignViewControllerI * @param bs * @return */ - int findColumnsWithFeature(String featureType, - SequenceCollectionI sqcol, BitSet bs) + int findColumnsWithFeature(String featureType, SequenceCollectionI sqcol, + BitSet bs) { - FeatureRenderer fr = alignPanel == null ? null : alignPanel - .getFeatureRenderer(); + FeatureRenderer fr = alignPanel == null ? null + : alignPanel.getFeatureRenderer(); final int startColumn = sqcol.getStartRes() + 1; // converted to base 1 final int endColumn = sqcol.getEndRes() + 1; @@ -244,8 +248,8 @@ public class AlignViewController implements AlignViewControllerI if (sq != null) { // int ist = sq.findPosition(sqcol.getStartRes()); - List sfs = sq.findFeatures(startColumn, - endColumn, featureType); + List sfs = sq.findFeatures(startColumn, endColumn, + featureType); boolean found = false; for (SequenceFeature sf : sfs) @@ -322,7 +326,9 @@ public class AlignViewController implements AlignViewControllerI * * @param types * @param methodText + * - text shown in Undo/Redo command * @param method + * - passed to jalview.analysis.AlignmentSorter.sortByFeatures() */ protected void sortByFeatures(List types, String methodText, final String method) @@ -371,7 +377,7 @@ public class AlignViewController implements AlignViewControllerI } @Override - public boolean parseFeaturesFile(String file, DataSourceType protocol, + public boolean parseFeaturesFile(Object file, DataSourceType protocol, boolean relaxedIdMatching) { boolean featuresAdded = false; @@ -457,7 +463,7 @@ public class AlignViewController implements AlignViewControllerI else { avcg.setStatus(MessageManager - .formatMessage("No highlighted regions marked")); + .getString("label.no_highlighted_regions_marked")); if (!extendCurrent) { cs.clear(); @@ -467,4 +473,63 @@ public class AlignViewController implements AlignViewControllerI return false; } + @Override + public boolean copyHighlightedRegionsToClipboard() + { + if (!viewport.hasSearchResults()) + { + // do nothing if no selection exists + return false; + } + + SearchResultsI searchResults = viewport.getSearchResults(); + if (searchResults.isEmpty()) + { + return false; // shouldn't happen + } + List seqs = searchResults.getMatchingSubSequences(); + + // TODO: pass in hiddenColumns according to intersection of searchResults + // and visible columns. Currently this isn't done, since each contig becomes + // a single subsequence + Desktop.jalviewClipboard = new Object[] { + seqs.toArray(new SequenceI[0]), + alignPanel.getAlignment().getDataset(), null }; + avcg.setStatus(MessageManager.formatMessage( + "label.copied_sequences_to_clipboard", seqs.size())); + // Technically we should return false, since view has not changed + return false; + } + + @Override + public boolean justify_Region(boolean left) + { + AlignmentI al = viewport.getAlignment(); + SequenceGroup reg = viewport.getSelectionGroup(); + int from, to; + List seqs; + + from = 0; + to = al.getWidth() - 1; + seqs = al.getSequences(); + if (reg != null) + { + seqs = reg.getSequences(); + from = reg.getStartRes(); + to = reg.getEndRes(); + } + + if ((to - from) < 1) + { + return false; + } + + al.padGaps(); + jalview.commands.JustifyLeftOrRightCommand finalEdit = new jalview.commands.JustifyLeftOrRightCommand( + "Justify " + (left ? "Left" : "Right"), left, seqs, from, to, + al); + avcg.addHistoryItem(finalEdit); + viewport.notifyAlignmentChanged(); + return true; + } }