From 2826ec08117a35c2b53fdc7729921a5087e54c1f Mon Sep 17 00:00:00 2001 From: gmungoc Date: Mon, 5 Dec 2016 15:36:24 +0000 Subject: [PATCH] JAL-2346 JAL-1553 pull-up / push-down of fields and methods --- src/jalview/gui/AnnotationColourChooser.java | 193 +++++++++----------- src/jalview/gui/AnnotationColumnChooser.java | 118 ++---------- src/jalview/gui/AnnotationRowFilter.java | 252 +++++++++++++++----------- 3 files changed, 245 insertions(+), 318 deletions(-) diff --git a/src/jalview/gui/AnnotationColourChooser.java b/src/jalview/gui/AnnotationColourChooser.java index b2c4255..d24409f 100644 --- a/src/jalview/gui/AnnotationColourChooser.java +++ b/src/jalview/gui/AnnotationColourChooser.java @@ -20,6 +20,14 @@ */ package jalview.gui; +import jalview.bin.Cache; +import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.GraphLine; +import jalview.datamodel.SequenceGroup; +import jalview.schemes.AnnotationColourGradient; +import jalview.schemes.ColourSchemeI; +import jalview.util.MessageManager; + import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; @@ -31,15 +39,9 @@ import java.awt.event.MouseEvent; import java.util.Hashtable; import java.util.Vector; -import jalview.bin.Cache; -import jalview.datamodel.GraphLine; -import jalview.datamodel.SequenceGroup; -import jalview.schemes.AnnotationColourGradient; -import jalview.schemes.ColourSchemeI; -import jalview.util.MessageManager; - import javax.swing.BorderFactory; import javax.swing.JButton; +import javax.swing.JCheckBox; import javax.swing.JColorChooser; import javax.swing.JComboBox; import javax.swing.JInternalFrame; @@ -51,27 +53,21 @@ import net.miginfocom.swing.MigLayout; @SuppressWarnings("serial") public class AnnotationColourChooser extends AnnotationRowFilter { + private static final int ONETHOUSAND = 1000; - ColourSchemeI oldcs; - - Hashtable oldgroupColours; - - /** - * enabled if the user is dragging the slider - try to keep updates to a - * minimun - */ + private ColourSchemeI oldcs; - JComboBox annotations; + private JButton defColours; - JButton defColours = new JButton(); + private Hashtable oldgroupColours; - JPanel jPanel1 = new JPanel(); + private JCheckBox currentColours = new JCheckBox(); - JPanel jPanel2 = new JPanel(); + private JPanel minColour = new JPanel(); - BorderLayout borderLayout1 = new BorderLayout(); + private JPanel maxColour = new JPanel(); - private JComboBox threshold = new JComboBox(); + private JCheckBox thresholdIsMin = new JCheckBox(); public AnnotationColourChooser(AlignViewport av, final AlignmentPanel ap) { @@ -151,12 +147,7 @@ public class AnnotationColourChooser extends AnnotationRowFilter thresholdValue.setText("" + acg.getAnnotationThreshold()); } - try - { - jbInit(); - } catch (Exception ex) - { - } + jbInit(); adjusting = false; updateView(); @@ -164,19 +155,11 @@ public class AnnotationColourChooser extends AnnotationRowFilter frame.pack(); } - public AnnotationColourChooser() + @Override + protected void jbInit() { - try - { - jbInit(); - } catch (Exception ex) - { - ex.printStackTrace(); - } - } + super.jbInit(); - private void jbInit() throws Exception - { minColour.setFont(JvSwingUtils.getLabelFont()); minColour.setBorder(BorderFactory.createEtchedBorder()); minColour.setPreferredSize(new Dimension(40, 20)); @@ -207,26 +190,8 @@ public class AnnotationColourChooser extends AnnotationRowFilter } } }); - ok.setOpaque(false); - ok.setText(MessageManager.getString("action.ok")); - ok.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - ok_actionPerformed(); - } - }); - cancel.setOpaque(false); - cancel.setText(MessageManager.getString("action.cancel")); - cancel.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - cancel_actionPerformed(); - } - }); + + defColours = new JButton(); defColours.setOpaque(false); defColours.setText(MessageManager.getString("action.set_defaults")); defColours.setToolTipText(MessageManager @@ -241,38 +206,6 @@ public class AnnotationColourChooser extends AnnotationRowFilter } }); - annotations.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - annotations_actionPerformed(); - } - }); - getThreshold().addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - threshold_actionPerformed(); - } - }); - thresholdValue.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - thresholdValue_actionPerformed(); - } - }); - slider.setPaintLabels(false); - slider.setPaintTicks(true); - slider.setBackground(Color.white); - slider.setEnabled(false); - slider.setOpaque(false); - slider.setPreferredSize(new Dimension(100, 32)); - thresholdValue.setEnabled(false); - thresholdValue.setColumns(7); currentColours.setFont(JvSwingUtils.getLabelFont()); currentColours.setOpaque(false); currentColours.setText(MessageManager @@ -311,7 +244,9 @@ public class AnnotationColourChooser extends AnnotationRowFilter } }); - this.setLayout(borderLayout1); + this.setLayout(new BorderLayout()); + JPanel jPanel1 = new JPanel(); + JPanel jPanel2 = new JPanel(); jPanel2.setLayout(new MigLayout("", "[left][center][right]", "[][][]")); jPanel1.setBackground(Color.white); jPanel2.setBackground(Color.white); @@ -407,16 +342,6 @@ public class AnnotationColourChooser extends AnnotationRowFilter } } - public JComboBox getThreshold() - { - return threshold; - } - - public void setThreshold(JComboBox threshold) - { - this.threshold = threshold; - } - public void currentColours_actionPerformed() { if (currentColours.isSelected()) @@ -467,12 +392,12 @@ public class AnnotationColourChooser extends AnnotationRowFilter if (selectedThresholdItem != AnnotationColourGradient.NO_THRESHOLD) { adjusting = true; - float range = getCurrentAnnotation().graphMax * 1000 - - getCurrentAnnotation().graphMin * 1000; + float range = getCurrentAnnotation().graphMax * ONETHOUSAND + - getCurrentAnnotation().graphMin * ONETHOUSAND; - slider.setMinimum((int) (getCurrentAnnotation().graphMin * 1000)); - slider.setMaximum((int) (getCurrentAnnotation().graphMax * 1000)); - slider.setValue((int) (getCurrentAnnotation().threshold.value * 1000)); + slider.setMinimum((int) (getCurrentAnnotation().graphMin * ONETHOUSAND)); + slider.setMaximum((int) (getCurrentAnnotation().graphMax * ONETHOUSAND)); + slider.setValue((int) (getCurrentAnnotation().threshold.value * ONETHOUSAND)); thresholdValue.setText(getCurrentAnnotation().threshold.value + ""); slider.setMajorTickSpacing((int) (range / 10f)); slider.setEnabled(true); @@ -487,4 +412,60 @@ public class AnnotationColourChooser extends AnnotationRowFilter ap.paintAlignment(true); } + protected boolean colorAlignmentContaining(AlignmentAnnotation currentAnn, int selectedThresholdOption) + { + + AnnotationColourGradient acg = null; + if (currentColours.isSelected()) + { + acg = new AnnotationColourGradient(currentAnn, + av.getGlobalColourScheme(), selectedThresholdOption); + } + else + { + acg = new AnnotationColourGradient(currentAnn, + minColour.getBackground(), maxColour.getBackground(), + selectedThresholdOption); + } + acg.setSeqAssociated(seqAssociated.isSelected()); + + if (currentAnn.graphMin == 0f && currentAnn.graphMax == 0f) + { + acg.setPredefinedColours(true); + } + + acg.setThresholdIsMinMax(thresholdIsMin.isSelected()); + + av.setGlobalColourScheme(acg); + + if (av.getAlignment().getGroups() != null) + { + + for (SequenceGroup sg : ap.av.getAlignment().getGroups()) + { + if (sg.cs == null) + { + continue; + } + + if (currentColours.isSelected()) + { + sg.cs = new AnnotationColourGradient(currentAnn, sg.cs, + selectedThresholdOption); + ((AnnotationColourGradient) sg.cs).setSeqAssociated(seqAssociated + .isSelected()); + } + else + { + sg.cs = new AnnotationColourGradient(currentAnn, + minColour.getBackground(), maxColour.getBackground(), + selectedThresholdOption); + ((AnnotationColourGradient) sg.cs).setSeqAssociated(seqAssociated + .isSelected()); + } + } + } + return false; + } + } diff --git a/src/jalview/gui/AnnotationColumnChooser.java b/src/jalview/gui/AnnotationColumnChooser.java index 1290d70..637eb30 100644 --- a/src/jalview/gui/AnnotationColumnChooser.java +++ b/src/jalview/gui/AnnotationColumnChooser.java @@ -30,7 +30,6 @@ import jalview.viewmodel.annotationfilter.AnnotationFilterParameter; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; -import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; @@ -55,28 +54,10 @@ import net.miginfocom.swing.MigLayout; public class AnnotationColumnChooser extends AnnotationRowFilter implements ItemListener { - - private JComboBox annotations; - - private JPanel actionPanel = new JPanel(); - - private JPanel thresholdPanel = new JPanel(); - private JPanel switchableViewsPanel = new JPanel(new CardLayout()); - private CardLayout switchableViewsLayout = (CardLayout) (switchableViewsPanel - .getLayout()); - - private JPanel noGraphFilterView = new JPanel(); - - private JPanel graphFilterView = new JPanel(); - private JPanel annotationComboBoxPanel = new JPanel(); - private BorderLayout borderLayout1 = new BorderLayout(); - - private JComboBox threshold = new JComboBox(); - private StructureFilterPanel gStructureFilterPanel; private StructureFilterPanel ngStructureFilterPanel; @@ -107,17 +88,6 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements private ColumnSelection oldColumnSelection; - public AnnotationColumnChooser() - { - try - { - jbInit(); - } catch (Exception ex) - { - ex.printStackTrace(); - } - } - public AnnotationColumnChooser(AlignViewport av, final AlignmentPanel ap) { super(av, ap); @@ -169,72 +139,27 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements frame.pack(); } - private void jbInit() throws Exception + @Override + protected void jbInit() { - ok.setOpaque(false); - ok.setText(MessageManager.getString("action.ok")); - ok.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - ok_actionPerformed(); - } - }); - - cancel.setOpaque(false); - cancel.setText(MessageManager.getString("action.cancel")); - cancel.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - cancel_actionPerformed(); - } - }); - - annotations.addItemListener(this); - annotations.setToolTipText(MessageManager - .getString("info.select_annotation_row")); - threshold.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - threshold_actionPerformed(); - } - }); - - thresholdValue.setEnabled(false); - thresholdValue.setColumns(7); - thresholdValue.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - thresholdValue_actionPerformed(); - } - }); - - slider.setPaintLabels(false); - slider.setPaintTicks(true); - slider.setBackground(Color.white); - slider.setEnabled(false); - slider.setOpaque(false); - slider.setPreferredSize(new Dimension(100, 32)); + super.jbInit(); + JPanel thresholdPanel = new JPanel(); thresholdPanel.setBorder(new TitledBorder(MessageManager .getString("label.threshold_filter"))); thresholdPanel.setBackground(Color.white); thresholdPanel.setFont(JvSwingUtils.getLabelFont()); thresholdPanel.setLayout(new MigLayout("", "[left][right]", "[][]")); + JPanel actionPanel = new JPanel(); actionPanel.setBackground(Color.white); actionPanel.setFont(JvSwingUtils.getLabelFont()); + JPanel graphFilterView = new JPanel(); graphFilterView.setLayout(new MigLayout("", "[left][right]", "[][]")); graphFilterView.setBackground(Color.white); + JPanel noGraphFilterView = new JPanel(); noGraphFilterView.setLayout(new MigLayout("", "[left][right]", "[][]")); noGraphFilterView.setBackground(Color.white); @@ -270,7 +195,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements switchableViewsPanel.add(graphFilterView, AnnotationColumnChooser.GRAPH_VIEW); - this.setLayout(borderLayout1); + this.setLayout(new BorderLayout()); this.add(annotationComboBoxPanel, java.awt.BorderLayout.PAGE_START); this.add(switchableViewsPanel, java.awt.BorderLayout.CENTER); this.add(actionPanel, java.awt.BorderLayout.SOUTH); @@ -280,7 +205,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements this.validate(); } - public void updateThresholdPanelToolTip() + protected void updateThresholdPanelToolTip() { thresholdValue.setToolTipText(""); slider.setToolTipText(""); @@ -297,7 +222,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } @Override - public void reset() + protected void reset() { if (this.getOldColumnSelection() != null) { @@ -338,26 +263,6 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } } - public JComboBox getThreshold() - { - return threshold; - } - - public void setThreshold(JComboBox threshold) - { - this.threshold = threshold; - } - - public JComboBox getAnnotations() - { - return annotations; - } - - public void setAnnotations(JComboBox annotations) - { - this.annotations = annotations; - } - @Override public void updateView() { @@ -568,6 +473,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements selectedAnnotationChanged(); } + @Override public void selectedAnnotationChanged() { String currentView = AnnotationColumnChooser.NO_GRAPH_VIEW; @@ -585,6 +491,8 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements ngFurtherActionPanel.syncState(); ngStructureFilterPanel.syncState(); + CardLayout switchableViewsLayout = (CardLayout) switchableViewsPanel + .getLayout(); switchableViewsLayout.show(switchableViewsPanel, currentView); updateView(); } diff --git a/src/jalview/gui/AnnotationRowFilter.java b/src/jalview/gui/AnnotationRowFilter.java index ea531f2..128b99c 100644 --- a/src/jalview/gui/AnnotationRowFilter.java +++ b/src/jalview/gui/AnnotationRowFilter.java @@ -20,18 +20,25 @@ */ package jalview.gui; +import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.GraphLine; +import jalview.schemes.AnnotationColourGradient; +import jalview.util.MessageManager; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.HashMap; import java.util.Map; import java.util.Vector; -import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.GraphLine; -import jalview.datamodel.SequenceGroup; -import jalview.schemes.AnnotationColourGradient; -import jalview.util.MessageManager; - import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; @@ -51,28 +58,10 @@ public abstract class AnnotationRowFilter extends JPanel protected int[] annmap; - /* - * map from annotation to its menu item display label - * - so we know which item to pre-select on restore - */ - private Map annotationLabels; - - protected boolean enableSeqAss = false; - - private AlignmentAnnotation currentAnnotation; - protected boolean adjusting = false; - protected JCheckBox currentColours = new JCheckBox(); - - protected JPanel minColour = new JPanel(); - - protected JPanel maxColour = new JPanel(); - protected JCheckBox seqAssociated = new JCheckBox(); - protected JCheckBox thresholdIsMin = new JCheckBox(); - protected JSlider slider = new JSlider(); protected JTextField thresholdValue = new JTextField(20); @@ -89,6 +78,40 @@ public abstract class AnnotationRowFilter extends JPanel */ protected boolean sliderDragging = false; + protected JComboBox threshold = new JComboBox(); + + protected JComboBox annotations; + + /* + * map from annotation to its menu item display label + * - so we know which item to pre-select on restore + */ + private Map annotationLabels; + + private boolean enableSeqAss = false; + + private AlignmentAnnotation currentAnnotation; + + /** + * Constructor + * + * @param av + * @param ap + */ + public AnnotationRowFilter(AlignViewport av, final AlignmentPanel ap) + { + this.av = av; + this.ap = ap; + thresholdValue.addFocusListener(new FocusAdapter() + { + @Override + public void focusLost(FocusEvent e) + { + thresholdValue_actionPerformed(); + } + }); + } + protected void addSliderChangeListener() { @@ -138,17 +161,6 @@ public abstract class AnnotationRowFilter extends JPanel }); } - public AnnotationRowFilter(AlignViewport av, final AlignmentPanel ap) - { - this.av = av; - this.ap = ap; - } - - public AnnotationRowFilter() - { - - } - /** * Builds and returns a list of menu items (display text) for choice of * annotation. Also builds maps between annotations, their positions in the @@ -249,22 +261,22 @@ public abstract class AnnotationRowFilter extends JPanel } } - public void thresholdCheck_actionPerformed() + protected void thresholdCheck_actionPerformed() { updateView(); } - public void annotations_actionPerformed() + protected void selectedAnnotationChanged() { updateView(); } - public void threshold_actionPerformed() + protected void threshold_actionPerformed() { updateView(); } - public void thresholdValue_actionPerformed() + protected void thresholdValue_actionPerformed() { try { @@ -276,18 +288,18 @@ public abstract class AnnotationRowFilter extends JPanel } } - public void thresholdIsMin_actionPerformed() + protected void thresholdIsMin_actionPerformed() { updateView(); } - protected void populateThresholdComboBox(JComboBox threshold) + protected void populateThresholdComboBox(JComboBox thresh) { - threshold.addItem(MessageManager + thresh.addItem(MessageManager .getString("label.threshold_feature_no_threshold")); - threshold.addItem(MessageManager + thresh.addItem(MessageManager .getString("label.threshold_feature_above_threshold")); - threshold.addItem(MessageManager + thresh.addItem(MessageManager .getString("label.threshold_feature_below_threshold")); } @@ -295,14 +307,14 @@ public abstract class AnnotationRowFilter extends JPanel * Rebuilds the drop-down list of annotations to choose from when the 'per * sequence only' checkbox is checked or unchecked. * - * @param annotations + * @param anns */ - protected void seqAssociated_actionPerformed(JComboBox annotations) + protected void seqAssociated_actionPerformed(JComboBox anns) { adjusting = true; - String cursel = (String) annotations.getSelectedItem(); + String cursel = (String) anns.getSelectedItem(); boolean isvalid = false, isseqs = seqAssociated.isSelected(); - annotations.removeAllItems(); + anns.removeAllItems(); for (String anitem : getAnnotationItems(seqAssociated.isSelected())) { if (anitem.equals(cursel) || (isseqs && cursel.startsWith(anitem))) @@ -310,18 +322,18 @@ public abstract class AnnotationRowFilter extends JPanel isvalid = true; cursel = anitem; } - annotations.addItem(anitem); + anns.addItem(anitem); } adjusting = false; if (isvalid) { - annotations.setSelectedItem(cursel); + anns.setSelectedItem(cursel); } else { - if (annotations.getItemCount() > 0) + if (anns.getItemCount() > 0) { - annotations.setSelectedIndex(0); + anns.setSelectedIndex(0); } } } @@ -354,81 +366,107 @@ public abstract class AnnotationRowFilter extends JPanel } } - protected boolean colorAlignmentContaining( - AlignmentAnnotation currentAnn, int selectedThresholdOption) + protected AlignmentAnnotation getCurrentAnnotation() + { + return currentAnnotation; + } + + protected void setCurrentAnnotation(AlignmentAnnotation currentAnnotation) { + this.currentAnnotation = currentAnnotation; + } - AnnotationColourGradient acg = null; - if (currentColours.isSelected()) - { - acg = new AnnotationColourGradient(currentAnn, - av.getGlobalColourScheme(), selectedThresholdOption); - } - else - { - acg = new AnnotationColourGradient(currentAnn, - minColour.getBackground(), maxColour.getBackground(), - selectedThresholdOption); - } - acg.setSeqAssociated(seqAssociated.isSelected()); + protected abstract void valueChanged(boolean updateAllAnnotation); - if (currentAnn.graphMin == 0f && currentAnn.graphMax == 0f) - { - acg.setPredefinedColours(true); - } + protected abstract void updateView(); - acg.setThresholdIsMinMax(thresholdIsMin.isSelected()); + protected abstract void reset(); - av.setGlobalColourScheme(acg); + protected String getAnnotationMenuLabel(AlignmentAnnotation ann) + { + return annotationLabels.get(ann); + } - if (av.getAlignment().getGroups() != null) + protected void jbInit() + { + ok.setOpaque(false); + ok.setText(MessageManager.getString("action.ok")); + ok.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + ok_actionPerformed(); + } + }); - for (SequenceGroup sg : ap.av.getAlignment().getGroups()) + cancel.setOpaque(false); + cancel.setText(MessageManager.getString("action.cancel")); + cancel.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) { - if (sg.cs == null) - { - continue; - } + cancel_actionPerformed(); + } + }); - if (currentColours.isSelected()) - { - sg.cs = new AnnotationColourGradient(currentAnn, sg.cs, - selectedThresholdOption); - ((AnnotationColourGradient) sg.cs).setSeqAssociated(seqAssociated - .isSelected()); - } - else - { - sg.cs = new AnnotationColourGradient(currentAnn, - minColour.getBackground(), maxColour.getBackground(), - selectedThresholdOption); - ((AnnotationColourGradient) sg.cs).setSeqAssociated(seqAssociated - .isSelected()); - } + annotations.addItemListener(new ItemListener() + { + @Override + public void itemStateChanged(ItemEvent e) + { + selectedAnnotationChanged(); } - } - return false; + }); + annotations.setToolTipText(MessageManager + .getString("info.select_annotation_row")); + + threshold.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + threshold_actionPerformed(); + } + }); + + thresholdValue.setEnabled(false); + thresholdValue.setColumns(7); + thresholdValue.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + thresholdValue_actionPerformed(); + } + }); + + slider.setPaintLabels(false); + slider.setPaintTicks(true); + slider.setBackground(Color.white); + slider.setEnabled(false); + slider.setOpaque(false); + slider.setPreferredSize(new Dimension(100, 32)); } - public AlignmentAnnotation getCurrentAnnotation() + public JComboBox getThreshold() { - return currentAnnotation; + return threshold; } - public void setCurrentAnnotation(AlignmentAnnotation currentAnnotation) + public void setThreshold(JComboBox thresh) { - this.currentAnnotation = currentAnnotation; + this.threshold = thresh; } - public abstract void valueChanged(boolean updateAllAnnotation); - - public abstract void updateView(); - - public abstract void reset(); + public JComboBox getAnnotations() + { + return annotations; + } - protected String getAnnotationMenuLabel(AlignmentAnnotation ann) + public void setAnnotations(JComboBox anns) { - return annotationLabels.get(ann); + this.annotations = anns; } } -- 1.7.10.2