X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fapi%2FFeatureSettingsModelI.java;h=c0fc523ce2a4d9a591561b318bf04749fa54460b;hb=8181358395df043e2554381f84229cc0e0323011;hp=c148f3fc45cb4af63c9a255e4df2d070167bb0e4;hpb=69a44d8c51c7640e34242a61e29acc9064e71cbf;p=jalview.git diff --git a/src/jalview/api/FeatureSettingsModelI.java b/src/jalview/api/FeatureSettingsModelI.java index c148f3f..c0fc523 100644 --- a/src/jalview/api/FeatureSettingsModelI.java +++ b/src/jalview/api/FeatureSettingsModelI.java @@ -1,6 +1,95 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.api; -public interface FeatureSettingsModelI +import java.util.Comparator; + +/** + * An interface that describes the settings configurable in the Feature Settings + * dialog. + * + * @author gmcarstairs + */ +public interface FeatureSettingsModelI extends Comparator { + // note Java 8 will allow default implementations of these methods in the + // interface, simplifying instantiating classes + + /** + * Answers true if the specified feature type is displayed + * + * @param type + * @return + */ + boolean isFeatureDisplayed(String type); + + /** + * Answers true if the specified feature group is displayed + * + * @param group + * @return + */ + boolean isGroupDisplayed(String group); + + /** + * Returns the colour (or graduated colour) for the feature type, or null if + * not known + * + * @param type + * @return + */ + FeatureColourI getFeatureColour(String type); + + /** + * Returns the transparency value, from 0 (fully transparent) to 1 (fully + * opaque) + * + * @return + */ + float getTransparency(); + + /** + * Returns -1 if feature1 is displayed before (below) feature 2, +1 if + * feature2 is displayed after (on top of) feature1, or 0 if we don't care. + * + *
+ * Note that this is the opposite ordering to how features are displayed in + * the feature settings dialogue. FeatureRendererModel.setFeaturePriority + * takes care of converting between the two. + * + * @param feature1 + * @param feature2 + * @return + */ + @Override + int compare(String feature1, String feature2); + + /** + * Answers true if features should be initially sorted so that features with a + * shorter average length are displayed on top of those with a longer average + * length + * + * @return + */ + boolean optimiseOrder(); + }