X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fschemes%2FColourSchemeProperty.java;h=2d5b23dfa343f3b55284a07b944c6df4563a896e;hb=refs%2Fheads%2Ffeature%2FJAL-3468featureDescriptionEllipsis;hp=518f7ab9c334bce60722ca3c00b9a42d324f8f96;hpb=1ecf6419aba86993b3c223bf5ec0fa79427baf85;p=jalview.git diff --git a/src/jalview/schemes/ColourSchemeProperty.java b/src/jalview/schemes/ColourSchemeProperty.java index 518f7ab..2d5b23d 100755 --- a/src/jalview/schemes/ColourSchemeProperty.java +++ b/src/jalview/schemes/ColourSchemeProperty.java @@ -1,28 +1,158 @@ -package jalview.schemes; - -public class ColourSchemeProperty { - String description; - String className; - String menuString = null; - - public ColourSchemeProperty(String description, String className, String menuString) { - this.description = new String(description); - this.className = new String(className); - if (menuString != null) { - this.menuString = new String(menuString); - } - } - - public String getClassName() { - return className; - } - public String getDescription() { - return description; - } - public String getMenuString() { - return menuString; - } - public boolean isMenuItem() { - return (menuString != null); - } -} +/* + * 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.schemes; + +import jalview.api.AlignViewportI; +import jalview.datamodel.AnnotatedCollectionI; +import jalview.util.ColorUtils; + +import java.awt.Color; + +/** + * ColourSchemeProperty binds names to hardwired colourschemes and tries to deal + * intelligently with mapping unknown names to user defined colourschemes (that + * exist or can be created from the string representation of the colourscheme + * name - either a hex RGB triplet or a named colour under java.awt.color ). The + * values of the colourscheme constants is important for callers of + * getColourName(int i), since it can be used to enumerate the set of built in + * colours. The FIRST_COLOUR and LAST_COLOUR symbols are provided for this. + * + * @author $author$ + * @version $Revision$ + */ +public class ColourSchemeProperty +{ + + /** + * Returns a colour scheme for the given name, with which the given data may + * be coloured. The name is not case-sensitive, and may be one of + * + * + * If none of these formats is matched, the string is converted to a colour + * using a hashing algorithm. For name "None", returns null. + * + * @param forData + * @param name + * @return + */ + public static ColourSchemeI getColourScheme(AlignViewportI view, + AnnotatedCollectionI forData, + String name) + { + if (ResidueColourScheme.NONE.equalsIgnoreCase(name)) + { + return null; + + } + + /* + * if this is the name of a registered colour scheme, just + * create a new instance of it + */ + ColourSchemeI scheme = ColourSchemes.getInstance().getColourScheme(name, + view, + forData, null); + if (scheme != null) + { + return scheme; + } + + /* + * try to parse the string as a residues colour scheme + * e.g. A=red;T,G=blue etc + * else parse the name as a colour specification + * e.g. "red" or "ff00ed", + * or failing that hash the name to a colour + */ + UserColourScheme ucs = new UserColourScheme(name); + return ucs; + } + + public static Color rnaHelices[] = null; + + public static void initRnaHelicesShading(int n) + { + int j = 0; + if (rnaHelices == null) + { + rnaHelices = new Color[n + 1]; + } + else if (rnaHelices != null && rnaHelices.length <= n) + { + Color[] t = new Color[n + 1]; + System.arraycopy(rnaHelices, 0, t, 0, rnaHelices.length); + j = rnaHelices.length; + rnaHelices = t; + } + else + { + return; + } + // Generate random colors and store + for (; j <= n; j++) + { + rnaHelices[j] = ColorUtils.generateRandomColor(Color.white); + } + } + + /** + * delete the existing cached RNA helices colours + */ + public static void resetRnaHelicesShading() + { + rnaHelices = null; + } + + /** + * Returns the name of the colour scheme (or "None" if it is null) + * + * @param cs + * @return + */ + public static String getColourName(ColourSchemeI cs) + { + return cs == null ? ResidueColourScheme.NONE : cs.getSchemeName(); + } + +}