X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fschemes%2FColourSchemes.java;h=303d500258494147e5fa1103234596664b5b4c62;hb=b2d2f19d703fe5c499788bbd2947e65ac1ca7441;hp=99e97592c55bb2c8f52de2a32c1f9ad908825391;hpb=f6123f656fa387e11f506dedd09672a0d0ff5ac5;p=jalview.git diff --git a/src/jalview/schemes/ColourSchemes.java b/src/jalview/schemes/ColourSchemes.java index 99e9759..303d500 100644 --- a/src/jalview/schemes/ColourSchemes.java +++ b/src/jalview/schemes/ColourSchemes.java @@ -20,13 +20,15 @@ */ package jalview.schemes; +import java.util.LinkedHashMap; +import java.util.Locale; +import java.util.Map; + +import jalview.api.AlignViewportI; import jalview.datamodel.AnnotatedCollectionI; import jalview.datamodel.SequenceCollectionI; import jalview.datamodel.SequenceI; -import java.util.LinkedHashMap; -import java.util.Map; - public class ColourSchemes { /* @@ -65,17 +67,23 @@ public class ColourSchemes * store in an order-preserving map, so items can be added to menus * in the order in which they are 'discovered' */ - schemes = new LinkedHashMap(); + schemes = new LinkedHashMap<>(); for (JalviewColourScheme cs : JalviewColourScheme.values()) { try { - registerColourScheme(cs.getSchemeClass().newInstance()); + registerColourScheme( + cs.getSchemeClass().getDeclaredConstructor().newInstance()); } catch (InstantiationException | IllegalAccessException e) { - System.err.println("Error instantiating colour scheme for " - + cs.toString() + " " + e.getMessage()); + jalview.bin.Console + .errPrintln("Error instantiating colour scheme for " + + cs.toString() + " " + e.getMessage()); + e.printStackTrace(); + } catch (ReflectiveOperationException roe) + { + roe.printStackTrace(); } } } @@ -90,7 +98,7 @@ public class ColourSchemes String name = cs.getSchemeName(); if (name == null) { - System.err.println("ColourScheme name may not be null"); + jalview.bin.Console.errPrintln("ColourScheme name may not be null"); return; } @@ -98,7 +106,7 @@ public class ColourSchemes * name is lower-case for non-case-sensitive lookup * (name in the colour keeps its true case) */ - String lower = name.toLowerCase(); + String lower = getColourSchemeShortName(cs); if (schemes.containsKey(lower)) { System.err @@ -107,6 +115,19 @@ public class ColourSchemes schemes.put(lower, cs); } + private String getColourSchemeShortName(ColourSchemeI cs) + { + return getColourSchemeShortName(cs.getSchemeName()); + } + + private String getColourSchemeShortName(String name) + { + if (name == null) + return null; + return name.toLowerCase(Locale.ROOT).replaceAll("%", "pc") + .replaceAll("[^a-z0-9]", "-").replaceAll("--+", "-"); + } + /** * Removes a colour scheme by name * @@ -116,7 +137,7 @@ public class ColourSchemes { if (name != null) { - schemes.remove(name.toLowerCase()); + schemes.remove(getColourSchemeShortName(name)); } } @@ -126,6 +147,7 @@ public class ColourSchemes * * @param name * name of the colour scheme + * @param viewport * @param forData * the data to be coloured * @param optional @@ -133,7 +155,7 @@ public class ColourSchemes * represent * @return */ - public ColourSchemeI getColourScheme(String name, + public ColourSchemeI getColourScheme(String name, AlignViewportI viewport, AnnotatedCollectionI forData, Map hiddenRepSequences) { @@ -141,8 +163,8 @@ public class ColourSchemes { return null; } - ColourSchemeI cs = schemes.get(name.toLowerCase()); - return cs == null ? null : cs.getInstance(forData, hiddenRepSequences); + ColourSchemeI cs = schemes.get(getColourSchemeShortName(name)); + return cs == null ? null : cs.getInstance(viewport, forData); } /** @@ -158,7 +180,7 @@ public class ColourSchemes public ColourSchemeI getColourScheme(String name, AnnotatedCollectionI forData) { - return getColourScheme(name, forData, null); + return getColourScheme(name, null, forData, null); } /** @@ -185,6 +207,6 @@ public class ColourSchemes { return false; } - return schemes.containsKey(name.toLowerCase()); + return schemes.containsKey(getColourSchemeShortName(name)); } }