*/
package jalview.gui;
-import java.util.Locale;
-
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
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;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
-import javax.swing.JCheckBoxMenuItem;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
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;
{
frame = new JInternalFrame();
frame.setContentPane(this);
+ frame.setFrameIcon(null);
Rectangle bounds = af.getFeatureSettingsGeometry();
String title;
if (af.getAlignPanels().size() > 1 || Desktop.getAlignmentPanels(
chooser.setDialogTitle(
MessageManager.getString("label.load_feature_colours"));
chooser.setToolTipText(MessageManager.getString("action.load"));
- chooser.setResponseHandler(0, new Runnable()
+ chooser.setResponseHandler(0, () -> {
+ File file = chooser.getSelectedFile();
+ load(file);
+ });
+ 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<JalviewUserColours> 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--)
{
- @Override
- public void run()
+ 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())
{
- File file = chooser.getSelectedFile();
- load(file);
+ fr.setFeatureFilter(featureType, filter);
}
- });
- chooser.showOpenDialog(this);
+ }
+ return true;
}
/**
*/
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<JalviewUserColours> 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
*/
}
} catch (Exception ex)
{
- System.out.println("Error loading User Colour File\n" + ex);
+ jalview.bin.Console
+ .outPrintln("Error loading User Colour File\n" + ex);
}
}
{
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() + ", "
{
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)
*/
String ttl = MessageManager
.formatMessage("label.select_colour_for", type);
+ Object last=(Boolean)table.getValueAt(selectedRow, SHOW_COLUMN);
+ table.setValueAt(Boolean.TRUE, selectedRow, SHOW_COLUMN);
ColourChooserListener listener = new ColourChooserListener()
{
@Override
{
currentColor = new FeatureColour(c);
table.setValueAt(currentColor, rowSelected, COLOUR_COLUMN);
+ table.setValueAt(Boolean.TRUE, selectedRow, SHOW_COLUMN);
fireEditingStopped();
}
@Override
public void cancel()
{
+ table.setValueAt(last, selectedRow, SHOW_COLUMN);
fireEditingStopped();
}
};
/*
* variable colour and filters dialog
*/
- chooser = new FeatureTypeSettings(fr, type);
+ boolean last=(Boolean)table.getValueAt(selectedRow, SHOW_COLUMN);
+ table.setValueAt(Boolean.TRUE, selectedRow, SHOW_COLUMN);
+ chooser = new FeatureTypeSettings(fr, type,last);
if (!Platform.isJS())
/**
* Java only
{
if (button == e.getSource())
{
- FeatureTypeSettings chooser = new FeatureTypeSettings(fr, type);
+ boolean last = fr.getFeaturesDisplayed().isVisible(type);
+ ((FeatureTableModel) table.getModel()).setValueAt(Boolean.TRUE, rowSelected, SHOW_COLUMN);
+ FeatureTypeSettings chooser = new FeatureTypeSettings(fr, type,last);
chooser.addActionListener(this);
chooser.setRequestFocusEnabled(true);
chooser.requestFocus();
.getData()[rowSelected];
data[COLOUR_COLUMN] = currentColor;
data[FILTER_COLUMN] = currentFilter;
+ data[SHOW_COLUMN] = fr.getFeaturesDisplayed().isVisible(type);
+
fireEditingStopped();
// SwingJS needs an explicit repaint() here,
// rather than relying upon no validation having
refreshDisplay();
}
}
-
class FeatureIcon implements Icon
{
FeatureColourI gcol;