X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FFeatureColourChooser.java;h=064d58b9f0f1c39a24076d80e9947840ab20ec8b;hb=56ee0306058d4d31bb0e106deb605a29d9c84194;hp=e9a88acc15d94af75af08faa0af6661338481186;hpb=153dd62dc91da13ae732600e6ea55ddbe15eab39;p=jalview.git
diff --git a/src/jalview/gui/FeatureColourChooser.java b/src/jalview/gui/FeatureColourChooser.java
index e9a88ac..064d58b 100644
--- a/src/jalview/gui/FeatureColourChooser.java
+++ b/src/jalview/gui/FeatureColourChooser.java
@@ -1,38 +1,54 @@
/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- *
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License along with Jalview. If not, see .
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see .
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.gui;
-import java.util.*;
-
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-import javax.swing.border.LineBorder;
-import javax.swing.event.*;
+import jalview.datamodel.GraphLine;
+import jalview.schemes.AnnotationColourGradient;
+import jalview.schemes.GraduatedColor;
+import jalview.util.MessageManager;
-import jalview.datamodel.*;
-import jalview.schemes.*;
+import java.awt.BorderLayout;
+import java.awt.Color;
import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.util.Hashtable;
+
+import javax.swing.BorderFactory;
+import javax.swing.JCheckBox;
+import javax.swing.JColorChooser;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JSlider;
+import javax.swing.JTextField;
+import javax.swing.border.LineBorder;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
-public class FeatureColourChooser extends JPanel
+public class FeatureColourChooser extends JalviewDialog
{
- JDialog frame;
-
// FeatureSettings fs;
FeatureRenderer fr;
@@ -60,9 +76,11 @@ public class FeatureColourChooser extends JPanel
boolean adjusting = false;
- private float min;
+ final private float min;
+
+ final private float max;
- private float max;
+ final private float scaleFactor;
String type = null;
@@ -77,29 +95,28 @@ public class FeatureColourChooser extends JPanel
this.fr = frender;
this.type = type;
ap = fr.ap;
- frame = new JDialog(Desktop.instance, true);
- frame.setTitle("Graduated Feature Colour for " + type);
- Rectangle deskr = Desktop.instance.getBounds();
- frame.setBounds(new Rectangle((int) (deskr.getCenterX() - 240),
- (int) (deskr.getCenterY() - 92), 480, 185));
- frame.setContentPane(this);
+ String title = MessageManager.formatMessage(
+ "label.graduated_color_for_params", new String[] { type });
+ initDialogFrame(this, true, block, title, 480, 185);
// frame.setLayer(JLayeredPane.PALETTE_LAYER);
// Desktop.addInternalFrame(frame, "Graduated Feature Colour for "+type,
// 480, 145);
slider.addChangeListener(new ChangeListener()
{
+ @Override
public void stateChanged(ChangeEvent evt)
{
if (!adjusting)
{
- thresholdValue.setText(((float) slider.getValue() / 1000f) + "");
+ thresholdValue.setText((slider.getValue() / scaleFactor) + "");
valueChanged();
}
}
});
slider.addMouseListener(new MouseAdapter()
{
+ @Override
public void mouseReleased(MouseEvent evt)
{
if (ap != null)
@@ -110,10 +127,18 @@ public class FeatureColourChooser extends JPanel
}
});
- float mm[] = ((float[][]) fr.minmax.get(type))[0];
+ float mm[] = ((float[][]) fr.getMinMax().get(type))[0];
min = mm[0];
max = mm[1];
- oldcs = fr.featureColours.get(type);
+
+ /*
+ * ensure scale factor allows a scaled range with
+ * 10 integer divisions ('ticks'); if we have got here,
+ * we should expect that max != min
+ */
+ scaleFactor = (max == min) ? 1f : 100f / (max - min);
+
+ oldcs = fr.getFeatureColours().get(type);
if (oldcs instanceof GraduatedColor)
{
if (((GraduatedColor) oldcs).isAutoScale())
@@ -167,44 +192,19 @@ public class FeatureColourChooser extends JPanel
adjusting = false;
changeColour();
- if (!block)
- {
- new Thread(new Runnable()
- {
-
- public void run()
- {
- frame.show();
- }
-
- }).start();
- }
- else
- {
- frame.show();
- }
- }
-
- public FeatureColourChooser()
- {
- try
- {
- jbInit();
- } catch (Exception ex)
- {
- ex.printStackTrace();
- }
+ waitForInput();
}
private void jbInit() throws Exception
{
- minColour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
+ minColour.setFont(JvSwingUtils.getLabelFont());
minColour.setBorder(BorderFactory.createLineBorder(Color.black));
minColour.setPreferredSize(new Dimension(40, 20));
- minColour.setToolTipText("Minimum Colour");
+ minColour.setToolTipText(MessageManager.getString("label.min_colour"));
minColour.addMouseListener(new MouseAdapter()
{
+ @Override
public void mousePressed(MouseEvent e)
{
if (minColour.isEnabled())
@@ -213,12 +213,13 @@ public class FeatureColourChooser extends JPanel
}
}
});
- maxColour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
+ maxColour.setFont(JvSwingUtils.getLabelFont());
maxColour.setBorder(BorderFactory.createLineBorder(Color.black));
maxColour.setPreferredSize(new Dimension(40, 20));
- maxColour.setToolTipText("Maximum Colour");
+ maxColour.setToolTipText(MessageManager.getString("label.max_colour"));
maxColour.addMouseListener(new MouseAdapter()
{
+ @Override
public void mousePressed(MouseEvent e)
{
if (maxColour.isEnabled())
@@ -228,46 +229,34 @@ public class FeatureColourChooser extends JPanel
}
});
maxColour.setBorder(new LineBorder(Color.black));
- minText.setText("Min:");
- minText.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
- maxText.setText("Max:");
- maxText.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
- ok.setOpaque(false);
- ok.setText("OK");
- ok.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- ok_actionPerformed(e);
- }
- });
- cancel.setOpaque(false);
- cancel.setText("Cancel");
- cancel.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- cancel_actionPerformed(e);
- }
- });
+ minText.setText(MessageManager.getString("label.min"));
+ minText.setFont(JvSwingUtils.getLabelFont());
+ maxText.setText(MessageManager.getString("label.max"));
+ maxText.setFont(JvSwingUtils.getLabelFont());
this.setLayout(borderLayout1);
jPanel2.setLayout(flowLayout1);
jPanel1.setBackground(Color.white);
jPanel2.setBackground(Color.white);
threshold.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
threshold_actionPerformed(e);
}
});
- threshold.setToolTipText("Threshold the feature display by score.");
- threshold.addItem("No Threshold"); // index 0
- threshold.addItem("Above Threshold"); // index 1
- threshold.addItem("Below Threshold"); // index 2
+ threshold.setToolTipText(MessageManager
+ .getString("label.threshold_feature_display_by_score"));
+ threshold.addItem(MessageManager
+ .getString("label.threshold_feature_no_thereshold")); // index 0
+ threshold.addItem(MessageManager
+ .getString("label.threshold_feature_above_thereshold")); // index 1
+ threshold.addItem(MessageManager
+ .getString("label.threshold_feature_below_thereshold")); // index 2
jPanel3.setLayout(flowLayout2);
thresholdValue.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
thresholdValue_actionPerformed(e);
@@ -279,27 +268,33 @@ public class FeatureColourChooser extends JPanel
slider.setEnabled(false);
slider.setOpaque(false);
slider.setPreferredSize(new Dimension(100, 32));
- slider.setToolTipText("Adjust threshold");
+ slider.setToolTipText(MessageManager
+ .getString("label.adjust_thereshold"));
thresholdValue.setEnabled(false);
thresholdValue.setColumns(7);
jPanel3.setBackground(Color.white);
thresholdIsMin.setBackground(Color.white);
- thresholdIsMin.setText("Threshold is Min/Max");
- thresholdIsMin
- .setToolTipText("Toggle between absolute and relative display threshold.");
+ thresholdIsMin.setText(MessageManager
+ .getString("label.threshold_minmax"));
+ thresholdIsMin.setToolTipText(MessageManager
+ .getString("label.toggle_absolute_relative_display_threshold"));
thresholdIsMin.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent actionEvent)
{
thresholdIsMin_actionPerformed(actionEvent);
}
});
colourByLabel.setBackground(Color.white);
- colourByLabel.setText("Colour by Label");
colourByLabel
- .setToolTipText("Display features of the same type with a different label using a different colour. (e.g. domain features)");
+ .setText(MessageManager.getString("label.colour_by_label"));
+ colourByLabel
+ .setToolTipText(MessageManager
+ .getString("label.display_features_same_type_different_label_using_different_colour"));
colourByLabel.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent actionEvent)
{
colourByLabel_actionPerformed(actionEvent);
@@ -331,10 +326,6 @@ public class FeatureColourChooser extends JPanel
JPanel maxColour = new JPanel();
- JButton ok = new JButton();
-
- JButton cancel = new JButton();
-
JPanel colourPanel = new JPanel();
JPanel jPanel1 = new JPanel();
@@ -371,7 +362,8 @@ public class FeatureColourChooser extends JPanel
public void minColour_actionPerformed()
{
Color col = JColorChooser.showDialog(this,
- "Select Colour for Minimum Value", minColour.getBackground());
+ MessageManager.getString("label.select_colour_minimum_value"),
+ minColour.getBackground());
if (col != null)
{
minColour.setBackground(col);
@@ -384,7 +376,8 @@ public class FeatureColourChooser extends JPanel
public void maxColour_actionPerformed()
{
Color col = JColorChooser.showDialog(this,
- "Select Colour for Maximum Value", maxColour.getBackground());
+ MessageManager.getString("label.select_colour_maximum_value"),
+ maxColour.getBackground());
if (col != null)
{
maxColour.setBackground(col);
@@ -403,11 +396,11 @@ public class FeatureColourChooser extends JPanel
}
int aboveThreshold = AnnotationColourGradient.NO_THRESHOLD;
- if (threshold.getSelectedItem().equals("Above Threshold"))
+ if (threshold.getSelectedIndex() == 1)
{
aboveThreshold = AnnotationColourGradient.ABOVE_THRESHOLD;
}
- else if (threshold.getSelectedItem().equals("Below Threshold"))
+ else if (threshold.getSelectedIndex() == 2)
{
aboveThreshold = AnnotationColourGradient.BELOW_THRESHOLD;
}
@@ -447,11 +440,11 @@ public class FeatureColourChooser extends JPanel
adjusting = true;
acg.setThresh(threshline.value);
- float range = max * 1000f - min * 1000f;
+ float range = (max - min) * scaleFactor;
- slider.setMinimum((int) (min * 1000));
- slider.setMaximum((int) (max * 1000));
- slider.setValue((int) (threshline.value * 1000));
+ slider.setMinimum((int) (min * scaleFactor));
+ slider.setMaximum((int) (max * scaleFactor));
+ slider.setValue((int) (threshline.value * scaleFactor));
thresholdValue.setText(threshline.value + "");
slider.setMajorTickSpacing((int) (range / 10f));
slider.setEnabled(true);
@@ -498,12 +491,13 @@ public class FeatureColourChooser extends JPanel
maxColour.setForeground(oldmaxColour);
minColour.setForeground(oldminColour);
}
- fr.featureColours.put(type, acg);
+ fr.setColour(type, acg);
cs = acg;
ap.paintAlignment(false);
}
- private void raiseClosed()
+ @Override
+ protected void raiseClosed()
{
if (this.colourEditor != null)
{
@@ -511,34 +505,21 @@ public class FeatureColourChooser extends JPanel
}
}
- public void ok_actionPerformed(ActionEvent e)
+ @Override
+ public void okPressed()
{
changeColour();
- try
- {
- frame.dispose();
- raiseClosed();
- } catch (Exception ex)
- {
- }
}
- public void cancel_actionPerformed(ActionEvent e)
+ @Override
+ public void cancelPressed()
{
reset();
- try
- {
- frame.dispose();
- // frame.setClosed(true);
- raiseClosed();
- } catch (Exception ex)
- {
- }
}
void reset()
{
- fr.featureColours.put(type, oldcs);
+ fr.setColour(type, oldcs);
ap.paintAlignment(false);
cs = null;
}
@@ -563,7 +544,7 @@ public class FeatureColourChooser extends JPanel
try
{
float f = Float.parseFloat(thresholdValue.getText());
- slider.setValue((int) (f * 1000));
+ slider.setValue((int) (f * scaleFactor));
threshline.value = f;
} catch (NumberFormatException ex)
{
@@ -572,7 +553,7 @@ public class FeatureColourChooser extends JPanel
public void valueChanged()
{
- threshline.value = (float) slider.getValue() / 1000f;
+ threshline.value = slider.getValue() / scaleFactor;
cs.setThresh(threshline.value);
changeColour();
ap.paintAlignment(false);