JAL-1483 model and api for feature display list on alignment view (refactor)
authorj.procter@dundee.ac.uk <jprocter@Jims-MacBook-Pro-2.local>
Fri, 8 Aug 2014 16:33:50 +0000 (17:33 +0100)
committerj.procter@dundee.ac.uk <jprocter@Jims-MacBook-Pro-2.local>
Fri, 8 Aug 2014 16:33:50 +0000 (17:33 +0100)
src/jalview/api/AlignViewportI.java
src/jalview/api/FeaturesDisplayedI.java [new file with mode: 0644]
src/jalview/appletgui/AlignViewport.java
src/jalview/gui/AlignViewport.java
src/jalview/viewmodel/AlignmentViewport.java
src/jalview/viewmodel/seqfeatures/FeaturesDisplayed.java [new file with mode: 0644]

index 567ae83..9409e38 100644 (file)
@@ -191,4 +191,8 @@ public interface AlignViewportI
 
   void setConservation(Conservation cons);
 
+  FeaturesDisplayedI getFeaturesDisplayed();
+
+  String getSequenceSetId();
+
 }
diff --git a/src/jalview/api/FeaturesDisplayedI.java b/src/jalview/api/FeaturesDisplayedI.java
new file mode 100644 (file)
index 0000000..9ed5ae5
--- /dev/null
@@ -0,0 +1,29 @@
+package jalview.api;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+public interface FeaturesDisplayedI
+{
+
+  Iterator<String> getVisibleFeatures();
+
+  boolean isVisible(String featureType);
+
+  boolean areVisible(Collection<String> featureTypes);
+
+  void clear();
+
+  void setVisible(String featureType);
+
+  void setAllVisible(Collection<String> featureTypes);
+
+  boolean isRegistered(String type);
+
+  void setAllRegisteredVisible();
+
+  int getVisibleFeatureCount();
+
+  int getRegisterdFeaturesCount();
+
+}
index 7400122..f42f7ba 100644 (file)
@@ -86,10 +86,6 @@ public class AlignViewport extends AlignmentViewport implements
 
   boolean scaleRightWrapped = true;
 
-  // The following vector holds the features which are
-  // currently visible, in the correct order or rendering
-  public Hashtable featuresDisplayed;
-
   boolean showHiddenMarkers = true;
 
   public jalview.bin.JalviewLite applet;
index 6d6531f..3254005 100644 (file)
@@ -123,12 +123,6 @@ public class AlignViewport extends AlignmentViewport implements
 
   boolean cursorMode = false;
 
-  /**
-   * Keys are the feature types which are currently visible. Note: Values are
-   * not used!
-   */
-  Hashtable featuresDisplayed = null;
-
   boolean antiAlias = false;
 
   Rectangle explodedPosition;
index 0c8afaa..5dd5aa3 100644 (file)
@@ -25,6 +25,7 @@ import jalview.analysis.Conservation;
 import jalview.api.AlignCalcManagerI;
 import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
+import jalview.api.FeaturesDisplayedI;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.AlignmentView;
@@ -39,6 +40,7 @@ import jalview.schemes.ClustalxColourScheme;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.PIDColourScheme;
 import jalview.schemes.ResidueProperties;
+import jalview.viewmodel.seqfeatures.FeaturesDisplayed;
 import jalview.workers.AlignCalcManager;
 import jalview.workers.ConsensusThread;
 import jalview.workers.StrucConsensusThread;
@@ -1616,4 +1618,23 @@ public abstract class AlignmentViewport implements AlignViewportI
   {
     sequenceColours = null;
   };
+
+  FeaturesDisplayedI featuresDisplayed = null;
+
+  @Override
+  public FeaturesDisplayedI getFeaturesDisplayed()
+  {
+    return featuresDisplayed;
+  }
+
+  public void setFeaturesDisplayed(FeaturesDisplayedI featuresDisplayedI)
+  {
+    featuresDisplayed = featuresDisplayedI;
+  }
+
+  public boolean areFeaturesDisplayed()
+  {
+    return featuresDisplayed != null && featuresDisplayed.getRegisterdFeaturesCount()>0;
+  }
+
 }
diff --git a/src/jalview/viewmodel/seqfeatures/FeaturesDisplayed.java b/src/jalview/viewmodel/seqfeatures/FeaturesDisplayed.java
new file mode 100644 (file)
index 0000000..fccdee3
--- /dev/null
@@ -0,0 +1,95 @@
+package jalview.viewmodel.seqfeatures;
+
+import jalview.api.FeaturesDisplayedI;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+public class FeaturesDisplayed implements FeaturesDisplayedI
+{
+  private HashSet<String> featuresDisplayed = new HashSet<String>();
+
+  private HashSet<String> featuresRegistered = new HashSet<String>();
+
+  public FeaturesDisplayed(FeaturesDisplayedI featuresDisplayed2)
+  {
+    Iterator<String> fdisp = featuresDisplayed2.getVisibleFeatures();
+    String ftype;
+    while (fdisp.hasNext())
+    {
+      ftype = fdisp.next();
+      featuresDisplayed.add(ftype);
+      featuresRegistered.add(ftype);
+    }
+  }
+
+  public FeaturesDisplayed()
+  {
+    // TODO Auto-generated constructor stub
+  }
+
+  @Override
+  public Iterator<String> getVisibleFeatures()
+  {
+    return featuresDisplayed.iterator();
+  }
+
+  @Override
+  public boolean isVisible(String featureType)
+  {
+    return featuresDisplayed.contains(featureType);
+  }
+
+  @Override
+  public boolean areVisible(Collection featureTypes)
+  {
+    return featuresDisplayed.containsAll(featureTypes);
+  }
+
+  @Override
+  public void clear()
+  {
+    featuresDisplayed.clear();
+    featuresRegistered.clear();
+  }
+
+  @Override
+  public void setAllVisible(Collection makeVisible)
+  {
+    featuresDisplayed.addAll(makeVisible);
+  }
+
+  @Override
+  public void setAllRegisteredVisible()
+  {
+    featuresDisplayed.addAll(featuresRegistered);
+  }
+
+  @Override
+  public void setVisible(String featureType)
+  {
+    featuresDisplayed.add(featureType);
+  }
+
+  @Override
+  public boolean isRegistered(String type)
+  {
+    return featuresRegistered.contains(type);
+  }
+
+  @Override
+  public int getVisibleFeatureCount()
+  {
+    return featuresDisplayed.size();
+  }
+
+  @Override
+  public int getRegisterdFeaturesCount()
+  {
+    return featuresRegistered.size();
+  }
+}