From 9debcac658224e1a84ddff4c4fd9f696e812913f Mon Sep 17 00:00:00 2001 From: gmungoc Date: Wed, 8 Feb 2017 12:50:41 +0000 Subject: [PATCH] JAL-2399 JAL-2400 tidy Text Colour wording, behaviour including Cancel --- resources/lang/Messages.properties | 3 +- resources/lang/Messages_es.properties | 3 +- src/jalview/gui/TextColourChooser.java | 138 ++++++++++++++++++++++++-------- src/jalview/jbgui/GAlignFrame.java | 6 +- 4 files changed, 109 insertions(+), 41 deletions(-) diff --git a/resources/lang/Messages.properties b/resources/lang/Messages.properties index c451f07..8c3c84f 100644 --- a/resources/lang/Messages.properties +++ b/resources/lang/Messages.properties @@ -667,8 +667,7 @@ label.2d_rna_sequence_name = 2D RNA - {0} label.edit_name_and_description_current_group = Edit name and description of current group label.from_file = From File label.enter_pdb_id = Enter PDB Id (or pdbid:chaincode) -label.text_colour = Text Colour -action.set_text_colour = Text Colour... +label.text_colour = Text Colour... label.structure = Structure label.show_pdbstruct_dialog = 3D Structure Data... label.view_rna_structure = VARNA 2D Structure diff --git a/resources/lang/Messages_es.properties b/resources/lang/Messages_es.properties index 0a330b9..64a3654 100644 --- a/resources/lang/Messages_es.properties +++ b/resources/lang/Messages_es.properties @@ -621,7 +621,7 @@ label.2d_rna_sequence_name = 2D RNA - {0} label.edit_name_and_description_current_group = Editar el nombre y la descripción del grupo actual label.from_file = desde fichero label.enter_pdb_id = Introducir PDB Id -label.text_colour = Color del texto +label.text_colour = Color de texto... label.structure = Estructura label.create_sequence_details_report_annotation_for = Anotación para {0} label.sequence_details_for = Detalles de la secuencia para {0} @@ -1157,7 +1157,6 @@ label.invalid_search=Texto de b action.export_annotations=Exportar Anotaciones action.set_as_reference=Marcar como Referencia action.unmark_as_reference=Desmarcar como Referencia -action.set_text_colour=Color de Texto... label.chimera_failed=Error al abrir Chimera - está instalado?\nCompruebe ruta en Preferencias, Estructura label.find=Buscar label.select_pdb_file=Seleccionar Fichero PDB diff --git a/src/jalview/gui/TextColourChooser.java b/src/jalview/gui/TextColourChooser.java index 49fdaf7..91e05c6 100644 --- a/src/jalview/gui/TextColourChooser.java +++ b/src/jalview/gui/TextColourChooser.java @@ -28,11 +28,12 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.HashMap; +import java.util.Map; import javax.swing.BorderFactory; import javax.swing.JColorChooser; import javax.swing.JLabel; -import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; @@ -44,36 +45,43 @@ public class TextColourChooser SequenceGroup sg; - public void chooseColour(AlignmentPanel ap, SequenceGroup sg) + Color original1, original2; + + int originalThreshold; + + Map groupColour1; + + Map groupColour2; + + Map groupThreshold; + + /** + * Show a dialogue which allows the user to select two text colours and adjust + * a slider for the cross-over point + * + * @param alignPanel + * the AlignmentPanel context + * @param sequenceGroup + * the SequenceGroup context (only for group pop-menu option) + */ + public void chooseColour(AlignmentPanel alignPanel, SequenceGroup sequenceGroup) { - this.ap = ap; - this.sg = sg; + this.ap = alignPanel; + this.sg = sequenceGroup; - int original1, original2, originalThreshold; - if (sg == null) - { - original1 = ap.av.getTextColour().getRGB(); - original2 = ap.av.getTextColour2().getRGB(); - originalThreshold = ap.av.getThresholdTextColour(); - } - else - { - original1 = sg.textColour.getRGB(); - original2 = sg.textColour2.getRGB(); - originalThreshold = sg.thresholdTextColour; - } + saveInitialSettings(); final JSlider slider = new JSlider(0, 750, originalThreshold); final JPanel col1 = new JPanel(); col1.setPreferredSize(new Dimension(40, 20)); col1.setBorder(BorderFactory.createEtchedBorder()); col1.setToolTipText(MessageManager.getString("label.dark_colour")); - col1.setBackground(new Color(original1)); + col1.setBackground(original1); final JPanel col2 = new JPanel(); col2.setPreferredSize(new Dimension(40, 20)); col2.setBorder(BorderFactory.createEtchedBorder()); col2.setToolTipText(MessageManager.getString("label.light_colour")); - col2.setBackground(new Color(original2)); + col2.setBackground(original2); final JPanel bigpanel = new JPanel(new BorderLayout()); JPanel panel = new JPanel(); bigpanel.add(panel, BorderLayout.CENTER); @@ -130,7 +138,7 @@ public class TextColourChooser int reply = JvOptionPane .showInternalOptionDialog( - ap, + alignPanel, bigpanel, MessageManager .getString("label.adjunst_foreground_text_colour_threshold"), @@ -139,19 +147,81 @@ public class TextColourChooser if (reply == JvOptionPane.CANCEL_OPTION) { - if (sg == null) - { - ap.av.setTextColour(new Color(original1)); - ap.av.setTextColour2(new Color(original2)); - ap.av.setThresholdTextColour(originalThreshold); - } - else + restoreInitialSettings(); + } + } + + /** + * Restore initial settings on Cancel + */ + protected void restoreInitialSettings() + { + if (sg == null) + { + ap.av.setTextColour(original1); + ap.av.setTextColour2(original2); + ap.av.setThresholdTextColour(originalThreshold); + } + else + { + sg.textColour = original1; + sg.textColour2 = original2; + sg.thresholdTextColour = originalThreshold; + } + + /* + * if 'Apply To All Groups' was in force, there will be + * group-specific settings to restore as well + */ + for (SequenceGroup group : this.groupColour1.keySet()) + { + group.textColour = groupColour1.get(group); + group.textColour2 = groupColour2.get(group); + group.thresholdTextColour = groupThreshold.get(group); + } + } + + /** + * Save settings on entry, for restore on Cancel + */ + protected void saveInitialSettings() + { + groupColour1 = new HashMap(); + groupColour2 = new HashMap(); + groupThreshold = new HashMap(); + + if (sg == null) + { + /* + * alignment scope + */ + original1 = ap.av.getTextColour(); + original2 = ap.av.getTextColour2(); + originalThreshold = ap.av.getThresholdTextColour(); + if (ap.av.getColourAppliesToAllGroups() + && ap.av.getAlignment().getGroups() != null) { - sg.textColour = new Color(original1); - sg.textColour2 = new Color(original2); - sg.thresholdTextColour = originalThreshold; + /* + * if applying changes to all groups, need to be able to + * restore group settings as well + */ + for (SequenceGroup group : ap.av.getAlignment().getGroups()) + { + groupColour1.put(group, group.textColour); + groupColour2.put(group, group.textColour2); + groupThreshold.put(group, group.thresholdTextColour); + } } } + else + { + /* + * Sequence group scope + */ + original1 = sg.textColour; + original2 = sg.textColour2; + originalThreshold = sg.thresholdTextColour; + } } void colour1Changed(Color col) @@ -215,11 +285,11 @@ public class TextColourChooser return; } - for (SequenceGroup sg : ap.av.getAlignment().getGroups()) + for (SequenceGroup group : ap.av.getAlignment().getGroups()) { - sg.textColour = ap.av.getTextColour(); - sg.textColour2 = ap.av.getTextColour2(); - sg.thresholdTextColour = ap.av.getThresholdTextColour(); + group.textColour = ap.av.getTextColour(); + group.textColour2 = ap.av.getTextColour2(); + group.thresholdTextColour = ap.av.getThresholdTextColour(); } } diff --git a/src/jalview/jbgui/GAlignFrame.java b/src/jalview/jbgui/GAlignFrame.java index b39f4a8..8d1eacd 100755 --- a/src/jalview/jbgui/GAlignFrame.java +++ b/src/jalview/jbgui/GAlignFrame.java @@ -113,7 +113,7 @@ public class GAlignFrame extends JInternalFrame protected JMenu colourMenu = new JMenu(); - protected JRadioButtonMenuItem textColour; + protected JMenuItem textColour; protected JCheckBoxMenuItem conservationMenuItem; @@ -1921,8 +1921,8 @@ public class GAlignFrame extends JInternalFrame } }); - textColour = new JRadioButtonMenuItem( - MessageManager.getString("action.set_text_colour")); + textColour = new JMenuItem( + MessageManager.getString("label.text_colour")); textColour.addActionListener(new ActionListener() { @Override -- 1.7.10.2