X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignViewport.java;h=f754eb9b8c5d2233be70bf7476f3e085c1d44977;hb=c406d789d51e6ac1ff45e3568d37e9ed53025f03;hp=06dc4c4a5db42638f2cf5fd162711d71ff73b81b;hpb=27b7c61518e2956d1e23e0ef79033c9cce8c71e8;p=jalview.git diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java index 06dc4c4..f754eb9 100644 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.java @@ -43,6 +43,9 @@ import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder; import jalview.analysis.NJTree; import jalview.api.AlignViewportI; import jalview.api.AlignmentViewPanel; +import jalview.api.FeatureColourI; +import jalview.api.FeatureSettingsI; +import jalview.api.FeaturesDisplayedI; import jalview.api.ViewStyleI; import jalview.bin.Cache; import jalview.commands.CommandI; @@ -72,6 +75,7 @@ import java.awt.Rectangle; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; +import java.util.Map; import java.util.Vector; import javax.swing.JInternalFrame; @@ -1125,4 +1129,68 @@ public class AlignViewport extends AlignmentViewport implements return true; } + /** + * Applies the supplied feature settings descriptor to currently known + * features. This supports an 'initial configuration' of feature colouring + * based on a preset or user favourite. This may then be modified in the usual + * way using the Feature Settings dialogue. + * + * @param featureSettings + */ + public void applyFeaturesStyle(FeatureSettingsI featureSettings) + { + if (featureSettings == null) + { + return; + } + + FeatureRenderer fr = getAlignPanel().getSeqPanel().seqCanvas + .getFeatureRenderer(); + Map featureColours = fr.getFeatureColours(); + fr.findAllFeatures(true); + List renderOrder = fr.getRenderOrder(); + FeaturesDisplayedI displayed = fr.getFeaturesDisplayed(); + displayed.clear(); + // TODO this clears displayed.featuresRegistered - do we care? + + /* + * set feature colour if specified by feature settings + * set visibility of all features + */ + for (String type : renderOrder) + { + FeatureColourI preferredColour = featureSettings + .getFeatureColour(type); + if (preferredColour != null) + { + fr.setColour(type, preferredColour); + } + if (featureSettings.isFeatureDisplayed(type)) + { + displayed.setVisible(type); + } + } + + /* + * set visibility of feature groups + */ + for (String group : fr.getFeatureGroups()) + { + fr.setGroupVisibility(group, featureSettings.isGroupDisplayed(group)); + } + + /* + * order the features + */ + if (featureSettings.optimiseOrder()) + { + // TODO not supported (yet?) + } + else + { + fr.orderFeatures(featureSettings); + } + fr.setTransparency(featureSettings.getTransparency()); + } + }