package jalview.api;
import jalview.datamodel.SequenceFeature;
-import jalview.util.matcher.KeyedMatcherSetI;
import java.awt.Color;
Color getMaxColour();
/**
+ * Returns the 'no value' colour (used when a feature lacks score, or the
+ * attribute, being used for colouring)
+ *
+ * @return
+ */
+ Color getNoColour();
+
+ /**
* Answers true if the feature has a single colour, i.e. if isColourByLabel()
* and isGraduatedColour() both answer false
*
boolean isSimpleColour();
/**
- * Answers true if the feature is coloured by label (description)
+ * Answers true if the feature is coloured by label (description) or by text
+ * value of an attribute
*
* @return
*/
void setAboveThreshold(boolean b);
/**
- * Answers true if the threshold is the minimum value (when
- * isAboveThreshold()) or maximum value (when isBelowThreshold()) of the
- * colour range; only applicable when isGraduatedColour and either
- * isAboveThreshold() or isBelowThreshold() answers true
- *
- * @return
- */
- boolean isThresholdMinMax();
-
- void setThresholdMinMax(boolean b);
-
- /**
* Returns the threshold value (if any), else zero
*
* @return
Color getColor(SequenceFeature feature);
/**
- * Update the min-max range for a graduated colour scheme
+ * Update the min-max range for a graduated colour scheme. Note that the
+ * colour scheme may be configured to colour by feature score, or a
+ * (numeric-valued) attribute - the caller should ensure that the correct
+ * range is being set.
*
* @param min
* @param max
String toJalviewFormat(String featureType);
/**
- * Sets the attribute filter conditions, or removes them if the argument is
- * null
+ * Answers true if colour is by attribute text or numerical value
*
- * @param filter
+ * @return
+ */
+ boolean isColourByAttribute();
+
+ /**
+ * Answers the name of the attribute (and optional sub-attribute...) used for
+ * colouring if any, or null
+ *
+ * @return
+ */
+ String[] getAttributeName();
+
+ /**
+ * Sets the name of the attribute (and optional sub-attribute...) used for
+ * colouring if any, or null to remove this property
+ *
+ * @return
+ */
+ void setAttributeName(String... name);
+
+ /**
+ * Answers true if colour has a threshold set, and the feature score (or other
+ * attribute selected for colouring) is outwith the threshold.
+ * <p>
+ * Answers false if not a graduated colour, or no threshold is set, or value
+ * is not outwith the threshold, or value is null or non-numeric.
+ *
+ * @param sf
+ * @return
*/
- public void setAttributeFilters(KeyedMatcherSetI filter);
+ boolean isOutwithThreshold(SequenceFeature sf);
/**
- * Answers the attribute value filters for the colour scheme, or null if no
- * filters are set
+ * Answers a human-readable text description of the colour, suitable for display
+ * as a tooltip, possibly internationalised for the user's locale.
*
* @return
*/
- public KeyedMatcherSetI getAttributeFilters();
+ String getDescription();
}