- /**
- * Populates an XML model of the feature colour scheme for one feature type
- *
- * @param featureType
- * @param fcol
- * @return
- */
- protected static jalview.schemabinding.version2.Colour marshalColour(
- String featureType, FeatureColourI fcol)
- {
- jalview.schemabinding.version2.Colour col = new jalview.schemabinding.version2.Colour();
- if (fcol.isSimpleColour())
- {
- col.setRGB(Format.getHexString(fcol.getColour()));
- }
- else
- {
- col.setRGB(Format.getHexString(fcol.getMaxColour()));
- col.setMin(fcol.getMin());
- col.setMax(fcol.getMax());
- col.setMinRGB(jalview.util.Format.getHexString(fcol.getMinColour()));
- col.setAutoScale(fcol.isAutoScaled());
- col.setThreshold(fcol.getThreshold());
- col.setColourByLabel(fcol.isColourByLabel());
- col.setThreshType(fcol.isAboveThreshold() ? ColourThreshTypeType.ABOVE
- : (fcol.isBelowThreshold() ? ColourThreshTypeType.BELOW
- : ColourThreshTypeType.NONE));
- if (fcol.isColourByAttribute())
- {
- col.setAttributeName(fcol.getAttributeName());
- }
- Color noColour = fcol.getNoColour();
- if (noColour == null)
- {
- col.setNoValueColour(ColourNoValueColourType.NONE);
- }
- else if (noColour == fcol.getMaxColour())
- {
- col.setNoValueColour(ColourNoValueColourType.MAX);
- }
- else
- {
- col.setNoValueColour(ColourNoValueColourType.MIN);
- }
- }
- col.setName(featureType);
- return col;
- }
-
- /**
- * Populates an XML model of the feature filter(s) for one feature type
- *
- * @param firstMatcher
- * the first (or only) match condition)
- * @param filter
- * remaining match conditions (if any)
- * @param and
- * if true, conditions are and-ed, else or-ed
- */
- protected static MatcherSet marshalFilter(FeatureMatcherI firstMatcher,
- Iterator<FeatureMatcherI> filters, boolean and)
- {
- MatcherSet result = new MatcherSet();
-
- if (filters.hasNext())
- {
- /*
- * compound matcher
- */
- CompoundMatcher compound = new CompoundMatcher();
- compound.setAnd(and);
- MatcherSet matcher1 = marshalFilter(firstMatcher,
- Collections.emptyIterator(), and);
- compound.addMatcherSet(matcher1);
- FeatureMatcherI nextMatcher = filters.next();
- MatcherSet matcher2 = marshalFilter(nextMatcher, filters, and);
- compound.addMatcherSet(matcher2);
- result.setCompoundMatcher(compound);
- }
- else
- {
- /*
- * single condition matcher
- */
- MatchCondition matcherModel = new MatchCondition();
- matcherModel.setCondition(
- firstMatcher.getMatcher().getCondition().getStableName());
- matcherModel.setValue(firstMatcher.getMatcher().getPattern());
- if (firstMatcher.isByAttribute())
- {
- matcherModel.setBy(FeatureMatcherByType.BYATTRIBUTE);
- matcherModel.setAttributeName(firstMatcher.getAttribute());
- }
- else if (firstMatcher.isByLabel())
- {
- matcherModel.setBy(FeatureMatcherByType.BYLABEL);
- }
- else if (firstMatcher.isByScore())
- {
- matcherModel.setBy(FeatureMatcherByType.BYSCORE);
- }
- result.setMatchCondition(matcherModel);
- }
-
- return result;
- }
-
- /**
- * Loads one XML model of a feature filter to a Jalview object
- *
- * @param colourModel
- * @return