From 552a68778a21f29fe5a05fd6840f7f3864e544b1 Mon Sep 17 00:00:00 2001 From: "j.procter@dundee.ac.uk" Date: Fri, 8 Aug 2014 17:33:50 +0100 Subject: [PATCH] JAL-1483 model and api for feature display list on alignment view (refactor) --- src/jalview/api/AlignViewportI.java | 4 + src/jalview/api/FeaturesDisplayedI.java | 29 ++++++ src/jalview/appletgui/AlignViewport.java | 4 - src/jalview/gui/AlignViewport.java | 6 -- src/jalview/viewmodel/AlignmentViewport.java | 21 +++++ .../viewmodel/seqfeatures/FeaturesDisplayed.java | 95 ++++++++++++++++++++ 6 files changed, 149 insertions(+), 10 deletions(-) create mode 100644 src/jalview/api/FeaturesDisplayedI.java create mode 100644 src/jalview/viewmodel/seqfeatures/FeaturesDisplayed.java diff --git a/src/jalview/api/AlignViewportI.java b/src/jalview/api/AlignViewportI.java index 567ae83..9409e38 100644 --- a/src/jalview/api/AlignViewportI.java +++ b/src/jalview/api/AlignViewportI.java @@ -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 index 0000000..9ed5ae5 --- /dev/null +++ b/src/jalview/api/FeaturesDisplayedI.java @@ -0,0 +1,29 @@ +package jalview.api; + +import java.util.Collection; +import java.util.Iterator; + +public interface FeaturesDisplayedI +{ + + Iterator getVisibleFeatures(); + + boolean isVisible(String featureType); + + boolean areVisible(Collection featureTypes); + + void clear(); + + void setVisible(String featureType); + + void setAllVisible(Collection featureTypes); + + boolean isRegistered(String type); + + void setAllRegisteredVisible(); + + int getVisibleFeatureCount(); + + int getRegisterdFeaturesCount(); + +} diff --git a/src/jalview/appletgui/AlignViewport.java b/src/jalview/appletgui/AlignViewport.java index 7400122..f42f7ba 100644 --- a/src/jalview/appletgui/AlignViewport.java +++ b/src/jalview/appletgui/AlignViewport.java @@ -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; diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java index 6d6531f..3254005 100644 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.java @@ -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; diff --git a/src/jalview/viewmodel/AlignmentViewport.java b/src/jalview/viewmodel/AlignmentViewport.java index 0c8afaa..5dd5aa3 100644 --- a/src/jalview/viewmodel/AlignmentViewport.java +++ b/src/jalview/viewmodel/AlignmentViewport.java @@ -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 index 0000000..fccdee3 --- /dev/null +++ b/src/jalview/viewmodel/seqfeatures/FeaturesDisplayed.java @@ -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 featuresDisplayed = new HashSet(); + + private HashSet featuresRegistered = new HashSet(); + + public FeaturesDisplayed(FeaturesDisplayedI featuresDisplayed2) + { + Iterator 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 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(); + } +} -- 1.7.10.2