import jalview.api.FeatureColourI;
import jalview.api.FeatureSettingsControllerI;
+import jalview.bin.Jalview;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
import jalview.datamodel.features.FeatureMatcher;
import jalview.gui.JalviewColourChooser.ColourChooserListener;
import jalview.io.JalviewFileChooser;
import jalview.io.JalviewFileView;
-import jalview.schemabinding.version2.Filter;
-import jalview.schemabinding.version2.JalviewUserColours;
-import jalview.schemabinding.version2.MatcherSet;
import jalview.schemes.FeatureColour;
import jalview.util.MessageManager;
import jalview.util.Platform;
+import jalview.util.dialogrunner.RunResponse;
import jalview.viewmodel.seqfeatures.FeatureRendererModel.FeatureSettingsBean;
+import jalview.xml.binding.jalview.JalviewUserColours;
+import jalview.xml.binding.jalview.JalviewUserColours.Colour;
+import jalview.xml.binding.jalview.JalviewUserColours.Filter;
+import jalview.xml.binding.jalview.ObjectFactory;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.border.Border;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
+import javax.swing.plaf.TableUI;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Marshaller;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
public class FeatureSettings extends JPanel
implements FeatureSettingsControllerI
private static final int MIN_HEIGHT = 400;
- private final static String BASE_TOOLTIP = "Click to edit, right-click for menu";
+ private final static String BASE_TOOLTIP = MessageManager.getString("label.click_to_edit");
final FeatureRenderer fr;
table = new JTable()
{
- static final String tt = "Click to edit, right-click for menu"; // todo i18n
-
@Override
public String getToolTipText(MouseEvent e)
{
default:
break;
}
+
return tip;
}
+
/**
* Position the tooltip near the bottom edge of, and half way across, the
return loc;
}
};
+
+ // next line is needed to avoid (quiet) exceptions thrown
+ // when column ordering changes so that the above constants
+ // no longer apply.
+ table.getTableHeader().setReorderingAllowed(false); // BH 2018
+
table.getTableHeader().setFont(new Font("Verdana", Font.PLAIN, 12));
- table.setFont(new Font("Verdana", Font.PLAIN, 12));
ToolTipManager.sharedInstance().registerComponent(table);
- // table.setDefaultRenderer(Color.class, new ColorRenderer());
- // table.setDefaultEditor(Color.class, new ColorEditor(this));
- //
table.setDefaultEditor(FeatureColour.class, new ColorEditor(this));
table.setDefaultRenderer(FeatureColour.class, new ColorRenderer());
data[i + direction] = temp;
}
updateFeatureRenderer(data);
- table.repaint();
+ repaintTable();
selectedRow = newRow;
}
}
*/
void load()
{
- // TODO: JAL-3048 relies on Castor XML parsing: not needed for JS-jalview core
- // functionalty
-
JalviewFileChooser chooser = new JalviewFileChooser("fc",
SEQUENCE_FEATURE_COLOURS);
chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(
MessageManager.getString("label.load_feature_colours"));
chooser.setToolTipText(MessageManager.getString("action.load"));
-
- int value = chooser.showOpenDialog(this);
-
- if (value == JalviewFileChooser.APPROVE_OPTION)
- {
- File file = chooser.getSelectedFile();
- load(file);
- }
+ chooser.response(new RunResponse(JalviewFileChooser.APPROVE_OPTION){
+
+ @Override
+ public void run() {
+ File file = chooser.getSelectedFile();
+ load(file);
+ }});
+ chooser.showOpenDialog(this);
}
/**
InputStreamReader in = new InputStreamReader(
new FileInputStream(file), "UTF-8");
- JalviewUserColours jucs = JalviewUserColours.unmarshal(in);
+ 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.getColourCount() - 1; i >= 0; i--)
+ for (int i = jucs.getColour().size() - 1; i >= 0; i--)
{
- jalview.schemabinding.version2.Colour newcol = jucs.getColour(i);
- FeatureColourI colour = Jalview2XML.unmarshalColour(newcol);
+ 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.getColourCount());
+ 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.getFilterCount(); i++)
+ for (int i = 0; i < jucs.getFilter().size(); i++)
{
- jalview.schemabinding.version2.Filter filterModel = jucs
- .getFilter(i);
+ Filter filterModel = jucs.getFilter().get(i);
String featureType = filterModel.getFeatureType();
- FeatureMatcherSetI filter = Jalview2XML.unmarshalFilter(featureType,
- filterModel.getMatcherSet());
+ FeatureMatcherSetI filter = jalview.project.Jalview2XML
+ .parseFilter(featureType, filterModel.getMatcherSet());
if (!filter.isEmpty())
{
fr.setFeatureFilter(featureType, filter);
.getData();
ensureOrder(data);
updateFeatureRenderer(data, false);
- table.repaint();
+ repaintTable();
}
} catch (Exception ex)
{
*/
void save()
{
- // TODO: JAL-3048 not needed for Jalview-JS - save colours
JalviewFileChooser chooser = new JalviewFileChooser("fc",
SEQUENCE_FEATURE_COLOURS);
chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(
MessageManager.getString("label.save_feature_colours"));
chooser.setToolTipText(MessageManager.getString("action.save"));
-
- int value = chooser.showSaveDialog(this);
-
- if (value == JalviewFileChooser.APPROVE_OPTION)
- {
- save(chooser.getSelectedFile());
- }
+ int option = chooser.showSaveDialog(this);
+ if (option == JalviewFileChooser.APPROVE_OPTION)
+ {
+ File file = chooser.getSelectedFile();
+ save(file);
+ }
}
/**
for (String featureType : sortedTypes)
{
FeatureColourI fcol = fr.getFeatureStyle(featureType);
- jalview.schemabinding.version2.Colour col = Jalview2XML.marshalColour(
- featureType, fcol);
- ucs.addColour(col);
+ Colour col = jalview.project.Jalview2XML.marshalColour(featureType,
+ fcol);
+ ucs.getColour().add(col);
}
/*
{
Iterator<FeatureMatcherI> iterator = filter.getMatchers().iterator();
FeatureMatcherI firstMatcher = iterator.next();
- MatcherSet ms = Jalview2XML.marshalFilter(firstMatcher, iterator,
+ jalview.xml.binding.jalview.FeatureMatcherSet ms = jalview.project.Jalview2XML
+ .marshalFilter(firstMatcher, iterator,
filter.isAnded());
Filter filterModel = new Filter();
filterModel.setFeatureType(featureType);
filterModel.setMatcherSet(ms);
- ucs.addFilter(filterModel);
+ ucs.getFilter().add(filterModel);
}
}
+ JAXBContext jaxbContext = JAXBContext
+ .newInstance(JalviewUserColours.class);
+ Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
+ jaxbMarshaller.marshal(
+ new ObjectFactory().createJalviewUserColours(ucs), out);
- ucs.marshal(out);
+ // jaxbMarshaller.marshal(object, pout);
+ // marshaller.marshal(object);
+ out.flush();
+
+ // ucs.marshal(out);
out.close();
} catch (Exception ex)
{
data[i][SHOW_COLUMN] = !(Boolean) data[i][SHOW_COLUMN];
}
updateFeatureRenderer(data, true);
- table.repaint();
+ repaintTable();
}
public void orderByAvWidth()
}
updateFeatureRenderer(data, false);
- table.repaint();
+ repaintTable();
+ }
+
+ /**
+ * Repaints the table using alternative code for Java and J2S
+ */
+ private void repaintTable()
+ {
+ // BH 2018
+ // Here is a needed intervention
+ // because generally we don't "repaint"
+ // the table. We re-create the HTML divs
+ // that is associated with it. A better
+ // way to do this would be to fire a property change.
+ @SuppressWarnings("unused")
+ TableUI ui = table.getUI();
+ /**
+ * @j2sNative ui.repaintTable$();
+ */
+ {
+ table.repaint();
+ }
}
public void close()
* variable colour and filters dialog
*/
chooser = new FeatureTypeSettings(me.fr, type);
- /**
- * @j2sNative
- */
+ if (!Jalview.isJS())
{
chooser.setRequestFocusEnabled(true);
chooser.requestFocus();