X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFeatureTypeSettings.java;h=1ba24b5d1a5e0d8444354155aee03a5de8fe8f4d;hb=80e3ac6ebcb27e0d13ce639d1c3105f7cd6f83fe;hp=5ee483f67992e8329241d4449de9d3bfc5a672ba;hpb=df10ae12c29d190873460d6795b2a9ad7a9fc96e;p=jalview.git diff --git a/src/jalview/gui/FeatureTypeSettings.java b/src/jalview/gui/FeatureTypeSettings.java index 5ee483f..1ba24b5 100644 --- a/src/jalview/gui/FeatureTypeSettings.java +++ b/src/jalview/gui/FeatureTypeSettings.java @@ -62,7 +62,6 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JSlider; -import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.border.LineBorder; import javax.swing.event.ChangeEvent; @@ -105,14 +104,15 @@ public class FeatureTypeSettings extends JalviewDialog /* * FeatureRenderer holds colour scheme and filters for feature types */ - private final FeatureRenderer fr; // todo refactor to allow interface type here + private final FeatureRenderer fr; // todo refactor to allow interface type + // here /* * the view panel to update when settings change */ final AlignmentViewPanel ap; - private final String featureType; + final String featureType; /* * the colour and filters to reset to on Cancel @@ -153,6 +153,10 @@ public class FeatureTypeSettings extends JalviewDialog JRadioButton graduatedColour = new JRadioButton(); + JPanel coloursPanel; + + JPanel filtersPanel; + JPanel singleColour = new JPanel(); JPanel minColour = new JPanel(); @@ -199,9 +203,6 @@ public class FeatureTypeSettings extends JalviewDialog private JPanel chooseFiltersPanel; - // for alternative 2 tabs layout (Colour, Filters) -// private JTabbedPane tabbedPane; - /** * Constructor * @@ -210,28 +211,14 @@ public class FeatureTypeSettings extends JalviewDialog */ public FeatureTypeSettings(FeatureRenderer frender, String theType) { - this(frender, false, theType); - } - - /** - * Constructor, with option to make a blocking dialog (has to complete in the - * AWT event queue thread). Currently this option is always set to false. - * - * @param frender - * @param blocking - * @param theType - */ - FeatureTypeSettings(FeatureRenderer frender, boolean blocking, - String theType) - { this.fr = frender; this.featureType = theType; ap = fr.ap; originalFilter = fr.getFeatureFilter(theType); originalColour = fr.getFeatureColours().get(theType); - + adjusting = true; - + try { initialise(); @@ -240,28 +227,27 @@ public class FeatureTypeSettings extends JalviewDialog ex.printStackTrace(); return; } - - updateColoursTab(); - - updateFiltersTab(); - + + updateColoursPanel(); + + updateFiltersPanel(); + adjusting = false; - + colourChanged(false); - + String title = MessageManager .formatMessage("label.display_settings_for", new String[] { theType }); - initDialogFrame(this, true, blocking, title, 500, 500); - + initDialogFrame(this, true, false, title, 580, 500); waitForInput(); } /** - * Configures the widgets on the Colours tab according to the current feature + * Configures the widgets on the Colours panel according to the current feature * colour scheme */ - private void updateColoursTab() + private void updateColoursPanel() { FeatureColourI fc = fr.getFeatureColours().get(featureType); @@ -276,9 +262,9 @@ public class FeatureTypeSettings extends JalviewDialog */ if (fc.isSimpleColour()) { - simpleColour.setSelected(true); singleColour.setBackground(fc.getColour()); singleColour.setForeground(fc.getColour()); + simpleColour.setSelected(true); } /* @@ -399,8 +385,6 @@ public class FeatureTypeSettings extends JalviewDialog private void initialise() { this.setLayout(new BorderLayout()); -// tabbedPane = new JTabbedPane(); -// this.add(tabbedPane, BorderLayout.CENTER); /* * an ActionListener that applies colour changes @@ -415,19 +399,15 @@ public class FeatureTypeSettings extends JalviewDialog }; /* - * first panel/tab: colour options + * first panel: colour options */ JPanel coloursPanel = initialiseColoursPanel(); -// tabbedPane.addTab(MessageManager.getString("action.colour"), -// coloursPanel); this.add(coloursPanel, BorderLayout.NORTH); /* - * second panel/tab: filter options + * second panel: filter options */ JPanel filtersPanel = initialiseFiltersPanel(); -// tabbedPane.addTab(MessageManager.getString("label.filters"), -// filtersPanel); this.add(filtersPanel, BorderLayout.CENTER); JPanel okCancelPanel = initialiseOkCancelPanel(); @@ -505,6 +485,7 @@ public class FeatureTypeSettings extends JalviewDialog graduatedColour = new JRadioButton( MessageManager.getString("label.by_range_of") + COLON); graduatedColour.setPreferredSize(new Dimension(RADIO_WIDTH, 20)); + graduatedColour.setOpaque(false); graduatedColour.addItemListener(new ItemListener() { @Override @@ -556,7 +537,8 @@ public class FeatureTypeSettings extends JalviewDialog { if (minColour.isEnabled()) { - showColourChooser(minColour, "label.select_colour_minimum_value"); + String ttl = MessageManager.getString("label.select_colour_minimum_value"); + showColourChooser(minColour, ttl); } } }); @@ -572,19 +554,19 @@ public class FeatureTypeSettings extends JalviewDialog { if (maxColour.isEnabled()) { - showColourChooser(maxColour, "label.select_colour_maximum_value"); + String ttl = MessageManager.getString("label.select_colour_maximum_value"); + showColourChooser(maxColour, ttl); } } }); maxColour.setBorder(new LineBorder(Color.black)); /* - * default max colour to current colour (if a plain colour), - * or to Black if colour by label; make min colour a pale - * version of max colour + * default max colour to last plain colour; + * make min colour a pale version of max colour */ FeatureColourI fc = fr.getFeatureColours().get(featureType); - Color bg = fc.isSimpleColour() ? fc.getColour() : Color.BLACK; + Color bg = fc.getColour() == null ? Color.BLACK : fc.getColour(); maxColour.setBackground(bg); minColour.setBackground(ColorUtils.bleachColour(bg, 0.9f)); @@ -744,13 +726,12 @@ public class FeatureTypeSettings extends JalviewDialog */ JPanel simpleColourPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); simpleColourPanel.setBackground(Color.white); -// JvSwingUtils.createTitledBorder(simpleColourPanel, -// MessageManager.getString("label.simple"), true); colourByPanel.add(simpleColourPanel); simpleColour = new JRadioButton( MessageManager.getString("label.simple_colour")); simpleColour.setPreferredSize(new Dimension(RADIO_WIDTH, 20)); + simpleColour.setOpaque(false); simpleColour.addItemListener(new ItemListener() { @Override @@ -758,14 +739,24 @@ public class FeatureTypeSettings extends JalviewDialog { if (simpleColour.isSelected() && !adjusting) { - showColourChooser(singleColour, "label.select_colour"); + colourChanged(true); } } }); - + singleColour.setFont(JvSwingUtils.getLabelFont()); singleColour.setBorder(BorderFactory.createLineBorder(Color.black)); singleColour.setPreferredSize(new Dimension(40, 20)); + if (originalColour.isGraduatedColour()) + { + singleColour.setBackground(originalColour.getMaxColour()); + singleColour.setForeground(originalColour.getMaxColour()); + } + else + { + singleColour.setBackground(originalColour.getColour()); + singleColour.setForeground(originalColour.getColour()); + } singleColour.addMouseListener(new MouseAdapter() { @Override @@ -773,7 +764,8 @@ public class FeatureTypeSettings extends JalviewDialog { if (simpleColour.isSelected()) { - showColourChooser(singleColour, "label.select_colour"); + String ttl = MessageManager.formatMessage("label.select_colour_for", featureType); + showColourChooser(singleColour, ttl); } } }); @@ -791,6 +783,7 @@ public class FeatureTypeSettings extends JalviewDialog byCategory = new JRadioButton( MessageManager.getString("label.by_text_of") + COLON); byCategory.setPreferredSize(new Dimension(RADIO_WIDTH, 20)); + byCategory.setOpaque(false); byCategory.addItemListener(new ItemListener() { @Override @@ -841,10 +834,9 @@ public class FeatureTypeSettings extends JalviewDialog * * @param colourPanel * the panel whose background colour is being picked - * @param key - * message bundle key for the dialog title + * @param title */ - void showColourChooser(JPanel colourPanel, String key) + void showColourChooser(JPanel colourPanel, String title) { ColourChooserListener listener = new ColourChooserListener() { @@ -857,14 +849,14 @@ public class FeatureTypeSettings extends JalviewDialog colourChanged(true); } }; - JalviewColourChooser.showColourChooser(this, MessageManager.getString(key), - colourPanel.getBackground(), listener); + JalviewColourChooser.showColourChooser(this, title, + colourPanel.getBackground(), listener); } /** - * Constructs and sets the selected colour options as the colour for the feature - * type, and repaints the alignment, and optionally the Overview and/or - * structure viewer if open + * Constructs and sets the selected colour options as the colour for the + * feature type, and repaints the alignment, and optionally the Overview + * and/or structure viewer if open * * @param updateStructsAndOverview */ @@ -892,7 +884,7 @@ public class FeatureTypeSettings extends JalviewDialog fr.setColour(featureType, acg); ap.paintAlignment(updateStructsAndOverview, updateStructsAndOverview); - updateColoursTab(); + updateColoursPanel(); } /** @@ -915,8 +907,8 @@ public class FeatureTypeSettings extends JalviewDialog */ if (byCategory.isSelected()) { - Color c = this.getBackground(); - FeatureColourI fc = new FeatureColour(c, c, null, 0f, 0f); + Color c = singleColour.getBackground(); + FeatureColourI fc = new FeatureColour(c); fc.setColourByLabel(true); String byWhat = (String) colourByTextCombo.getSelectedItem(); if (!LABEL_18N.equals(byWhat)) @@ -1078,8 +1070,8 @@ public class FeatureTypeSettings extends JalviewDialog /** * Converts the slider value to its absolute value by dividing by the - * scaleFactor. Rounding errors are squashed by forcing min/max of slider range - * to the actual min/max of feature score range + * scaleFactor. Rounding errors are squashed by forcing min/max of slider + * range to the actual min/max of feature score range * * @return */ @@ -1102,11 +1094,11 @@ public class FeatureTypeSettings extends JalviewDialog } /** - * A helper method to build the drop-down choice of attributes for a feature. If - * 'withRange' is true, then Score, and any attributes with a min-max range, are - * added. If 'withText' is true, Label and any known attributes are added. This - * allows 'categorical numerical' attributes e.g. codon position to be coloured - * by text. + * A helper method to build the drop-down choice of attributes for a feature. + * If 'withRange' is true, then Score, and any attributes with a min-max + * range, are added. If 'withText' is true, Label and any known attributes are + * added. This allows 'categorical numerical' attributes e.g. codon position + * to be coloured by text. *

* Where metadata is available with a description for an attribute, that is * added as a tooltip. @@ -1203,6 +1195,8 @@ public class FeatureTypeSettings extends JalviewDialog andOrPanel.setBackground(Color.white); andFilters = new JRadioButton(MessageManager.getString("label.and")); orFilters = new JRadioButton(MessageManager.getString("label.or")); + andFilters.setOpaque(false); + orFilters.setOpaque(false); ActionListener actionListener = new ActionListener() { @Override @@ -1230,7 +1224,7 @@ public class FeatureTypeSettings extends JalviewDialog * for adding a condition. This should be called after a filter has been * removed, added or amended. */ - private void updateFiltersTab() + private void updateFiltersPanel() { /* * clear the panel and list of filter conditions @@ -1299,7 +1293,8 @@ public class FeatureTypeSettings extends JalviewDialog /** * A helper method that constructs a row (panel) with one filter condition: *