From d7fd122bbdef3ab11f43ed6058fe37872d1d368e Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Fri, 24 Mar 2017 15:28:49 +0000 Subject: [PATCH] JAL-2360 fix applet build by separating castor XML dependency from jalview.schemes.ColourSchemes to jalview.schemes.ColourSchemeLoader --- src/jalview/bin/Cache.java | 3 +- src/jalview/gui/ColourMenuHelper.java | 3 +- src/jalview/gui/UserDefinedColours.java | 5 +- src/jalview/schemes/ColourSchemeLoader.java | 125 +++++++++++++++++++++++++++ src/jalview/schemes/ColourSchemes.java | 115 ------------------------ 5 files changed, 132 insertions(+), 119 deletions(-) create mode 100644 src/jalview/schemes/ColourSchemeLoader.java diff --git a/src/jalview/bin/Cache.java b/src/jalview/bin/Cache.java index 48c1ee9..da3cb92 100755 --- a/src/jalview/bin/Cache.java +++ b/src/jalview/bin/Cache.java @@ -22,6 +22,7 @@ package jalview.bin; import jalview.datamodel.PDBEntry; import jalview.gui.UserDefinedColours; +import jalview.schemes.ColourSchemeLoader; import jalview.schemes.ColourSchemes; import jalview.schemes.UserColourScheme; import jalview.structure.StructureImportSettings; @@ -1037,7 +1038,7 @@ public class Cache String file = st.nextToken(); try { - UserColourScheme ucs = ColourSchemes.loadColourScheme(file); + UserColourScheme ucs = ColourSchemeLoader.loadColourScheme(file); if (ucs != null) { if (coloursFound.length() > 0) diff --git a/src/jalview/gui/ColourMenuHelper.java b/src/jalview/gui/ColourMenuHelper.java index 31780d6..19ad939 100644 --- a/src/jalview/gui/ColourMenuHelper.java +++ b/src/jalview/gui/ColourMenuHelper.java @@ -3,6 +3,7 @@ package jalview.gui; import jalview.bin.Cache; import jalview.datamodel.AnnotatedCollectionI; import jalview.schemes.ColourSchemeI; +import jalview.schemes.ColourSchemeLoader; import jalview.schemes.ColourSchemes; import jalview.schemes.ResidueColourScheme; import jalview.schemes.UserColourScheme; @@ -258,7 +259,7 @@ public class ColourMenuHelper { try { - UserColourScheme ucs = ColourSchemes.loadColourScheme(file); + UserColourScheme ucs = ColourSchemeLoader.loadColourScheme(file); if (ucs != null && ColourSchemes.getInstance().nameExists(ucs.getName())) { diff --git a/src/jalview/gui/UserDefinedColours.java b/src/jalview/gui/UserDefinedColours.java index 83a8d24..463d8cd 100755 --- a/src/jalview/gui/UserDefinedColours.java +++ b/src/jalview/gui/UserDefinedColours.java @@ -29,6 +29,7 @@ import jalview.jbgui.GUserDefinedColours; import jalview.schemabinding.version2.Colour; import jalview.schemabinding.version2.JalviewUserColours; import jalview.schemes.ColourSchemeI; +import jalview.schemes.ColourSchemeLoader; import jalview.schemes.ColourSchemes; import jalview.schemes.ResidueProperties; import jalview.schemes.UserColourScheme; @@ -625,7 +626,7 @@ public class UserDefinedColours extends GUserDefinedColours implements File choice = chooser.getSelectedFile(); Cache.setProperty(LAST_DIRECTORY, choice.getParent()); - UserColourScheme ucs = ColourSchemes.loadColourScheme(choice + UserColourScheme ucs = ColourSchemeLoader.loadColourScheme(choice .getAbsolutePath()); Color[] colors = ucs.getColours(); schemeName.setText(ucs.getSchemeName()); @@ -674,7 +675,7 @@ public class UserDefinedColours extends GUserDefinedColours implements { colours = colours.substring(0, colours.indexOf("|")); } - ret = ColourSchemes.loadColourScheme(colours); + ret = ColourSchemeLoader.loadColourScheme(colours); } if (ret == null) diff --git a/src/jalview/schemes/ColourSchemeLoader.java b/src/jalview/schemes/ColourSchemeLoader.java new file mode 100644 index 0000000..8660f3e --- /dev/null +++ b/src/jalview/schemes/ColourSchemeLoader.java @@ -0,0 +1,125 @@ +package jalview.schemes; + +import jalview.binding.JalviewUserColours; + +import java.awt.Color; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; + +import org.exolab.castor.xml.Unmarshaller; + +public class ColourSchemeLoader +{ + + /** + * Loads a user defined colour scheme from file. The file should contain a + * definition of residue colours in XML format as defined in + * JalviewUserColours.xsd. + * + * @param filePath + * + * @return + */ + public static UserColourScheme loadColourScheme(String filePath) + { + UserColourScheme ucs = null; + Color[] newColours = null; + File file = new File(filePath); + try + { + InputStreamReader in = new InputStreamReader( + new FileInputStream(file), "UTF-8"); + + jalview.schemabinding.version2.JalviewUserColours jucs = new jalview.schemabinding.version2.JalviewUserColours(); + + org.exolab.castor.xml.Unmarshaller unmar = new org.exolab.castor.xml.Unmarshaller( + jucs); + jucs = (jalview.schemabinding.version2.JalviewUserColours) unmar + .unmarshal(in); + + /* + * non-case-sensitive colours are for 20 amino acid codes, + * B, Z, X and Gap + * optionally, lower-case alternatives for all except Gap + */ + newColours = new Color[24]; + Color[] lowerCase = new Color[23]; + boolean caseSensitive = false; + + String name; + int index; + for (int i = 0; i < jucs.getColourCount(); i++) + { + name = jucs.getColour(i).getName(); + if (ResidueProperties.aa3Hash.containsKey(name)) + { + index = ResidueProperties.aa3Hash.get(name).intValue(); + } + else + { + index = ResidueProperties.aaIndex[name.charAt(0)]; + } + if (index == -1) + { + continue; + } + + Color color = new Color(Integer.parseInt(jucs.getColour(i) + .getRGB(), 16)); + if (name.toLowerCase().equals(name)) + { + caseSensitive = true; + lowerCase[index] = color; + } + else + { + newColours[index] = color; + } + } + + /* + * instantiate the colour scheme + */ + ucs = new UserColourScheme(newColours); + ucs.setName(jucs.getSchemeName()); + if (caseSensitive) + { + ucs.setLowerCaseColours(lowerCase); + } + } catch (Exception ex) + { + // Could be old Jalview Archive format + try + { + InputStreamReader in = new InputStreamReader(new FileInputStream( + file), "UTF-8"); + + jalview.binding.JalviewUserColours jucs = new jalview.binding.JalviewUserColours(); + + jucs = JalviewUserColours.unmarshal(in); + + newColours = new Color[jucs.getColourCount()]; + + for (int i = 0; i < 24; i++) + { + newColours[i] = new Color(Integer.parseInt(jucs.getColour(i) + .getRGB(), 16)); + } + ucs = new UserColourScheme(newColours); + ucs.setName(jucs.getSchemeName()); + } catch (Exception ex2) + { + ex2.printStackTrace(); + } + + if (newColours == null) + { + System.out.println("Error loading User ColourFile\n" + ex); + } + } + + return ucs; + } + +} diff --git a/src/jalview/schemes/ColourSchemes.java b/src/jalview/schemes/ColourSchemes.java index 817fb01..dc7e403 100644 --- a/src/jalview/schemes/ColourSchemes.java +++ b/src/jalview/schemes/ColourSchemes.java @@ -1,14 +1,9 @@ package jalview.schemes; -import jalview.binding.JalviewUserColours; import jalview.datamodel.AnnotatedCollectionI; import jalview.datamodel.SequenceCollectionI; import jalview.datamodel.SequenceI; -import java.awt.Color; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStreamReader; import java.util.LinkedHashMap; import java.util.Map; @@ -177,114 +172,4 @@ public class ColourSchemes } return false; } - - /** - * Loads a user defined colour scheme from file. The file should contain a - * definition of residue colours in XML format as defined in - * JalviewUserColours.xsd. - * - * @param filePath - * - * @return - */ - public static UserColourScheme loadColourScheme(String filePath) - { - UserColourScheme ucs = null; - Color[] newColours = null; - File file = new File(filePath); - try - { - InputStreamReader in = new InputStreamReader( - new FileInputStream(file), "UTF-8"); - - jalview.schemabinding.version2.JalviewUserColours jucs = new jalview.schemabinding.version2.JalviewUserColours(); - - org.exolab.castor.xml.Unmarshaller unmar = new org.exolab.castor.xml.Unmarshaller( - jucs); - jucs = (jalview.schemabinding.version2.JalviewUserColours) unmar - .unmarshal(in); - - /* - * non-case-sensitive colours are for 20 amino acid codes, - * B, Z, X and Gap - * optionally, lower-case alternatives for all except Gap - */ - newColours = new Color[24]; - Color[] lowerCase = new Color[23]; - boolean caseSensitive = false; - - String name; - int index; - for (int i = 0; i < jucs.getColourCount(); i++) - { - name = jucs.getColour(i).getName(); - if (ResidueProperties.aa3Hash.containsKey(name)) - { - index = ResidueProperties.aa3Hash.get(name).intValue(); - } - else - { - index = ResidueProperties.aaIndex[name.charAt(0)]; - } - if (index == -1) - { - continue; - } - - Color color = new Color(Integer.parseInt(jucs.getColour(i) - .getRGB(), 16)); - if (name.toLowerCase().equals(name)) - { - caseSensitive = true; - lowerCase[index] = color; - } - else - { - newColours[index] = color; - } - } - - /* - * instantiate the colour scheme - */ - ucs = new UserColourScheme(newColours); - ucs.setName(jucs.getSchemeName()); - if (caseSensitive) - { - ucs.setLowerCaseColours(lowerCase); - } - } catch (Exception ex) - { - // Could be old Jalview Archive format - try - { - InputStreamReader in = new InputStreamReader(new FileInputStream( - file), "UTF-8"); - - jalview.binding.JalviewUserColours jucs = new jalview.binding.JalviewUserColours(); - - jucs = JalviewUserColours.unmarshal(in); - - newColours = new Color[jucs.getColourCount()]; - - for (int i = 0; i < 24; i++) - { - newColours[i] = new Color(Integer.parseInt(jucs.getColour(i) - .getRGB(), 16)); - } - ucs = new UserColourScheme(newColours); - ucs.setName(jucs.getSchemeName()); - } catch (Exception ex2) - { - ex2.printStackTrace(); - } - - if (newColours == null) - { - System.out.println("Error loading User ColourFile\n" + ex); - } - } - - return ucs; - } } -- 1.7.10.2