JAL-4062 avc operation and model method for copying SearchResultsI.getMatchingSubSequ...
[jalview.git] / src / jalview / api / AlignViewControllerI.java
index 090a8b5..3e689d1 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  */
 package jalview.api;
 
+import java.util.List;
+
+import jalview.io.DataSourceType;
+
 /**
  * prototype abstract controller for a Jalview alignment view
  * 
@@ -27,10 +31,13 @@ package jalview.api;
  * 
  *         All operations should return true if the view has changed as a result
  *         of the operation
- * @param <ViewportI>
+ * 
+ *         The controller holds methods that operate on an alignment view,
+ *         modifying its state in some way that may result in side effects
+ *         reflected in an associated GUI
  * 
  */
-public interface AlignViewControllerI<ViewportI>
+public interface AlignViewControllerI
 {
 
   public boolean makeGroupsFromSelection();
@@ -59,18 +66,57 @@ public interface AlignViewControllerI<ViewportI>
    * @return true if operation affected state
    */
   boolean markColumnsContainingFeatures(boolean invert,
-          boolean extendCurrent, boolean clearColumns, String featureType);
+          boolean extendCurrent, boolean toggle, String featureType);
+
+  /**
+   * sort the alignment or current selection by average score over the given set
+   * of features
+   * 
+   * @param typ
+   *          list of feature names or null to use currently displayed features
+   */
+  void sortAlignmentByFeatureScore(List<String> typ);
+
+  /**
+   * sort the alignment or current selection by distribution of the given set of
+   * features
+   * 
+   * @param typ
+   *          list of feature names or null to use currently displayed features
+   */
+  void sortAlignmentByFeatureDensity(List<String> typ);
+
+  /**
+   * add a features file of some kind to the current view
+   * 
+   * @param file
+   * @param sourceType
+   * @param relaxedIdMatching
+   *          if true, try harder to match up IDs with local sequence data
+   * @return true if parsing resulted in something being imported to the view or
+   *         dataset
+   */
+  public boolean parseFeaturesFile(Object file, DataSourceType sourceType,
+          boolean relaxedIdMatching);
 
   /**
-   * sort the alignment or current selection by average score over the given set of features
-   * @param typ list of feature names or null to use currently displayed features
+   * mark columns containing highlighted regions (e.g. from search, structure
+   * highlight, or a mouse over event in another viewer)
+   * 
+   * @param invert
+   * @param extendCurrent
+   * @param toggle
+   * @return
    */
-  void sortAlignmentByFeatureScore(String[] typ);
+  boolean markHighlightedColumns(boolean invert, boolean extendCurrent,
+          boolean toggle);
 
   /**
-   * sort the alignment or current selection by distribution of the given set of features
-   * @param typ list of feature names or null to use currently displayed features
+   * copies each distinct highlighted region on the current view as a new
+   * sequence on the clipboard
+   * 
+   * @return
    */
-  void sortAlignmentByFeatureDensity(String[] typ);
+  boolean copyHighlightedRegionsToClipboard();
 
 }