X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FFeatureSettings.java;h=3eccdf00a8112419890a1b22dab9b94c6cfaa3bd;hb=fbd682c00e543eadb48074ac354ade57c04c20cb;hp=ebd4712a0bf0fac062105cd1308d73d13a49d16c;hpb=952d6b6fecfb976c0c113f013ed2b8980af3d190;p=jalview.git diff --git a/src/jalview/gui/FeatureSettings.java b/src/jalview/gui/FeatureSettings.java index ebd4712..3eccdf0 100644 --- a/src/jalview/gui/FeatureSettings.java +++ b/src/jalview/gui/FeatureSettings.java @@ -45,6 +45,7 @@ import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; +import java.io.Reader; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; @@ -103,6 +104,8 @@ import jalview.datamodel.features.FeatureMatcherSet; import jalview.datamodel.features.FeatureMatcherSetI; import jalview.gui.Help.HelpId; import jalview.gui.JalviewColourChooser.ColourChooserListener; +import jalview.io.DataSourceType; +import jalview.io.FileParse; import jalview.io.JalviewFileChooser; import jalview.io.JalviewFileView; import jalview.schemes.FeatureColour; @@ -411,7 +414,7 @@ public class FeatureSettings extends JPanel { frame = new JInternalFrame(); frame.setContentPane(this); - frame.setFrameIcon(WindowIcons.featuresIcon); + frame.setFrameIcon(null); Rectangle bounds = af.getFeatureSettingsGeometry(); String title; if (af.getAlignPanels().size() > 1 || Desktop.getAlignmentPanels( @@ -951,11 +954,69 @@ public class FeatureSettings extends JPanel chooser.setResponseHandler(0, () -> { File file = chooser.getSelectedFile(); load(file); - return null; }); chooser.showOpenDialog(this); } + public static boolean loadFeatureSettingsFile(FeatureRenderer fr, + File file) throws Exception + { + InputStreamReader in = new InputStreamReader(new FileInputStream(file), + "UTF-8"); + return loadFeatureSettingsFile(fr, in); + } + + public static void loadFeatureSettingsFile( + FeatureRenderer featureRenderer, Object fileObject, + DataSourceType sourceType) throws Exception + { + FileParse fp = new FileParse(fileObject, sourceType); + loadFeatureSettingsFile(featureRenderer, fp.getReader()); + } + + private static boolean loadFeatureSettingsFile(FeatureRenderer fr, + Reader in) throws Exception + { + JAXBContext jc = JAXBContext.newInstance("jalview.xml.binding.jalview"); + javax.xml.bind.Unmarshaller um = jc.createUnmarshaller(); + XMLStreamReader streamReader = XMLInputFactory.newInstance() + .createXMLStreamReader(in); + JAXBElement jbe = um.unmarshal(streamReader, + JalviewUserColours.class); + JalviewUserColours jucs = jbe.getValue(); + + // JalviewUserColours jucs = JalviewUserColours.unmarshal(in); + + /* + * load feature colours + */ + for (int i = jucs.getColour().size() - 1; i >= 0; i--) + { + Colour newcol = jucs.getColour().get(i); + FeatureColourI colour = jalview.project.Jalview2XML + .parseColour(newcol); + fr.setColour(newcol.getName(), colour); + fr.setOrder(newcol.getName(), i / (float) jucs.getColour().size()); + } + + /* + * load feature filters; loaded filters will replace any that are + * currently defined, other defined filters are left unchanged + */ + for (int i = 0; i < jucs.getFilter().size(); i++) + { + Filter filterModel = jucs.getFilter().get(i); + String featureType = filterModel.getFeatureType(); + FeatureMatcherSetI filter = jalview.project.Jalview2XML + .parseFilter(featureType, filterModel.getMatcherSet()); + if (!filter.isEmpty()) + { + fr.setFeatureFilter(featureType, filter); + } + } + return true; + } + /** * Loads feature colours and filters from XML stored in the given file * @@ -963,50 +1024,21 @@ public class FeatureSettings extends JPanel */ void load(File file) { + load(file, DataSourceType.FILE); + } + + /** + * Loads feature colours and filters from XML at a specified source + * + * @param file + * - string or file or other object that allows FileParse to be + * created + */ + void load(Object file, DataSourceType sourceType) + { try { - InputStreamReader in = new InputStreamReader( - new FileInputStream(file), "UTF-8"); - - JAXBContext jc = JAXBContext - .newInstance("jalview.xml.binding.jalview"); - javax.xml.bind.Unmarshaller um = jc.createUnmarshaller(); - XMLStreamReader streamReader = XMLInputFactory.newInstance() - .createXMLStreamReader(in); - JAXBElement jbe = um.unmarshal(streamReader, - JalviewUserColours.class); - JalviewUserColours jucs = jbe.getValue(); - - // JalviewUserColours jucs = JalviewUserColours.unmarshal(in); - - /* - * load feature colours - */ - for (int i = jucs.getColour().size() - 1; i >= 0; i--) - { - Colour newcol = jucs.getColour().get(i); - FeatureColourI colour = jalview.project.Jalview2XML - .parseColour(newcol); - fr.setColour(newcol.getName(), colour); - fr.setOrder(newcol.getName(), i / (float) jucs.getColour().size()); - } - - /* - * load feature filters; loaded filters will replace any that are - * currently defined, other defined filters are left unchanged - */ - for (int i = 0; i < jucs.getFilter().size(); i++) - { - Filter filterModel = jucs.getFilter().get(i); - String featureType = filterModel.getFeatureType(); - FeatureMatcherSetI filter = jalview.project.Jalview2XML - .parseFilter(featureType, filterModel.getMatcherSet()); - if (!filter.isEmpty()) - { - fr.setFeatureFilter(featureType, filter); - } - } - + loadFeatureSettingsFile(fr, file, sourceType); /* * update feature settings table */ @@ -1020,7 +1052,8 @@ public class FeatureSettings extends JPanel } } catch (Exception ex) { - System.out.println("Error loading User Colour File\n" + ex); + jalview.bin.Console + .outPrintln("Error loading User Colour File\n" + ex); } } @@ -1609,7 +1642,7 @@ public class FeatureSettings extends JPanel { Color newColor = gcol.getMaxColour(); comp.setBackground(newColor); - // System.err.println("Width is " + w / 2); + // jalview.bin.Console.errPrintln("Width is " + w / 2); Icon ficon = new FeatureIcon(gcol, comp.getBackground(), w, h, thr); comp.setIcon(ficon); // tt+="RGB value: Max (" + newColor.getRed() + ", " @@ -1788,11 +1821,15 @@ public class FeatureSettings extends JPanel { FeatureMatcherSetI theFilter = (FeatureMatcherSetI) filter; setOpaque(true); - String asText = theFilter.toString(); setBackground(tbl.getBackground()); - this.setText(asText); this.setIcon(null); + if (theFilter != null) + { + String asText = theFilter.toString(); + this.setText(asText); + } + if (isSelected) { if (selectedBorder == null) @@ -2116,7 +2153,6 @@ public class FeatureSettings extends JPanel refreshDisplay(); } } - class FeatureIcon implements Icon { FeatureColourI gcol;