/*
* 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;
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 to be displayed, false if no
* preference
*
* @param type
* @return
*/
boolean isFeatureDisplayed(String type);
/**
* Answers true if the specified feature type is to be hidden, false if no
* preference
*
* @param type
* @return
*/
boolean isFeatureHidden(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();
}