X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FFeatureColourChooser.java;h=d0834e610f3a691b211d6cb2f682858a803b7350;hb=refs%2Fheads%2Ffeatures%2FJAL-2094_colourInterface;hp=c36d680c0a044d349e3e0e41d66ce9c8a2c6e23e;hpb=87ea83af3e209a8c3a4b19f9530a9c05b4541148;p=jalview.git diff --git a/src/jalview/appletgui/FeatureColourChooser.java b/src/jalview/appletgui/FeatureColourChooser.java index c36d680..d0834e6 100644 --- a/src/jalview/appletgui/FeatureColourChooser.java +++ b/src/jalview/appletgui/FeatureColourChooser.java @@ -1,31 +1,55 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8) - * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, 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.appletgui; -import java.util.*; - -import java.awt.*; -import java.awt.event.*; - -import jalview.datamodel.*; -import jalview.schemes.*; +import jalview.api.FeatureColourI; +import jalview.datamodel.GraphLine; +import jalview.schemes.AnnotationColourGradient; +import jalview.schemes.Colour; +import jalview.schemes.FeatureColour; +import jalview.util.ColorUtils; import jalview.util.MessageManager; +import java.awt.Checkbox; +import java.awt.Choice; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Frame; +import java.awt.GridLayout; +import java.awt.Label; +import java.awt.Panel; +import java.awt.Scrollbar; +import java.awt.TextField; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.AdjustmentEvent; +import java.awt.event.AdjustmentListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.Hashtable; + public class FeatureColourChooser extends Panel implements ActionListener, AdjustmentListener, ItemListener, MouseListener { @@ -39,9 +63,9 @@ public class FeatureColourChooser extends Panel implements ActionListener, // AlignmentPanel ap; - GraduatedColor cs; + FeatureColourI cs; - Object oldcs; + FeatureColourI oldcs; Hashtable oldgroupColours; @@ -70,29 +94,30 @@ public class FeatureColourChooser extends Panel implements ActionListener, { this.type = type; fr = frenderer; - float mm[] = ((float[][]) fr.minmax.get(type))[0]; + float mm[] = fr.getMinMax().get(type)[0]; min = mm[0]; max = mm[1]; - oldcs = fr.featureColours.get(type); - if (oldcs instanceof GraduatedColor) + oldcs = fr.getFeatureColours().get(type); + if (oldcs.isGraduatedColour()) { - cs = new GraduatedColor((GraduatedColor) oldcs, min, max); + cs = new FeatureColour((FeatureColour) oldcs, min, max); } else { // promote original color to a graduated color Color bl = Color.black; - if (oldcs instanceof Color) + if (oldcs.isSimpleColour()) { - bl = (Color) oldcs; + bl = ColorUtils.getColor(oldcs.getColour()); } // original colour becomes the maximum colour - cs = new GraduatedColor(Color.white, bl, mm[0], mm[1]); + cs = new FeatureColour(new Colour(Color.white), new Colour(bl), + mm[0], mm[1]); } - minColour.setBackground(cs.getMinColor()); - maxColour.setBackground(cs.getMaxColor()); - minColour.setForeground(cs.getMinColor()); - maxColour.setForeground(cs.getMaxColor()); + minColour.setBackground(ColorUtils.getColor(cs.getMinColour())); + maxColour.setBackground(ColorUtils.getColor(cs.getMaxColour())); + minColour.setForeground(ColorUtils.getColor(cs.getMinColour())); + maxColour.setForeground(ColorUtils.getColor(cs.getMaxColour())); colourFromLabel.setState(cs.isColourByLabel()); adjusting = true; @@ -102,10 +127,8 @@ public class FeatureColourChooser extends Panel implements ActionListener, } catch (Exception ex) { } - threshold - .select(cs.getThreshType() == AnnotationColourGradient.NO_THRESHOLD ? 0 - : cs.getThreshType() == AnnotationColourGradient.ABOVE_THRESHOLD ? 1 - : 2); + threshold.select(cs.isAboveThreshold() ? 1 : (cs.isBelowThreshold() ? 2 + : 0)); adjusting = false; changeColour(); @@ -113,7 +136,8 @@ public class FeatureColourChooser extends Panel implements ActionListener, slider.addAdjustmentListener(this); slider.addMouseListener(this); owner = (af != null) ? af : fs.frame; - frame = new JVDialog(owner, "Graduated Feature Colour for " + type, + frame = new JVDialog(owner, MessageManager.formatMessage( + "label.graduated_color_for_params", new String[] { type }), true, 480, 248); frame.setMainPanel(this); validate(); @@ -126,7 +150,7 @@ public class FeatureColourChooser extends Panel implements ActionListener, { // cancel reset(); - PaintRefresher.Refresh(this, fr.av.getSequenceSetId()); + PaintRefresher.Refresh(this, fr.getViewport().getSequenceSetId()); frame.setVisible(false); } } @@ -144,7 +168,8 @@ public class FeatureColourChooser extends Panel implements ActionListener, private void jbInit() throws Exception { - Label minLabel = new Label(MessageManager.getString("label.min")), maxLabel = new Label(MessageManager.getString("label.max")); + Label minLabel = new Label(MessageManager.getString("label.min")), maxLabel = new Label( + MessageManager.getString("label.max")); minLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); maxLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); // minColour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); @@ -168,9 +193,12 @@ public class FeatureColourChooser extends Panel implements ActionListener, jPanel2.setBackground(Color.white); jPanel4.setBackground(Color.white); threshold.addItemListener(this); - threshold.addItem("No Threshold"); - threshold.addItem("Above Threshold"); - threshold.addItem("Below Threshold"); + threshold.addItem(MessageManager + .getString("label.threshold_feature_no_threshold")); + threshold.addItem(MessageManager + .getString("label.threshold_feature_above_threshold")); + threshold.addItem(MessageManager + .getString("label.threshold_feature_below_threshold")); thresholdValue.addActionListener(this); slider.setBackground(Color.white); slider.setEnabled(false); @@ -183,11 +211,13 @@ public class FeatureColourChooser extends Panel implements ActionListener, jPanel3.setBackground(Color.white); colourFromLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); - colourFromLabel.setLabel(MessageManager.getString("label.colour_by_label")); + colourFromLabel.setLabel(MessageManager + .getString("label.colour_by_label")); colourFromLabel.setSize(new Dimension(139, 22)); // threshold.setBounds(new Rectangle(11, 3, 139, 22)); thresholdIsMin.setBackground(Color.white); - thresholdIsMin.setLabel(MessageManager.getString("label.threshold_minmax")); + thresholdIsMin.setLabel(MessageManager + .getString("label.threshold_minmax")); thresholdIsMin.setSize(new Dimension(135, 23)); // thresholdIsMin.setBounds(new Rectangle(328, 3, 135, 23)); jPanel1.add(minLabel); @@ -231,6 +261,7 @@ public class FeatureColourChooser extends Panel implements ActionListener, private GraphLine threshline; + @Override public void actionPerformed(ActionEvent evt) { if (evt.getSource() == thresholdValue) @@ -258,6 +289,7 @@ public class FeatureColourChooser extends Panel implements ActionListener, } } + @Override public void itemStateChanged(ItemEvent evt) { maxColour.setEnabled(!colourFromLabel.getState()); @@ -265,36 +297,37 @@ public class FeatureColourChooser extends Panel implements ActionListener, changeColour(); } + @Override public void adjustmentValueChanged(AdjustmentEvent evt) { if (!adjusting) { - thresholdValue.setText(((float) slider.getValue() / 1000f) + ""); + thresholdValue.setText((slider.getValue() / 1000f) + ""); valueChanged(); } } protected void valueChanged() { - threshline.value = (float) slider.getValue() / 1000f; - cs.setThresh(threshline.value); + threshline.value = slider.getValue() / 1000f; + cs.setThreshold(threshline.value); changeColour(); - PaintRefresher.Refresh(this, fr.av.getSequenceSetId()); + PaintRefresher.Refresh(this, fr.getViewport().getSequenceSetId()); // ap.paintAlignment(false); } - public void minColour_actionPerformed(Color newCol) + public void minColour_actionPerformed(Color c) { - if (newCol == null) + if (c == null) { UserDefinedColours udc = new UserDefinedColours(this, minColour.getBackground(), owner, - "Select Colour for Minimum Value"); // frame.owner, + MessageManager.getString("label.select_colour_minimum_value")); // frame.owner, } else { - minColour.setBackground(newCol); - minColour.setForeground(newCol); + minColour.setBackground(c); + minColour.setForeground(c); minColour.repaint(); changeColour(); } @@ -310,7 +343,7 @@ public class FeatureColourChooser extends Panel implements ActionListener, // "Select Colour for Maximum Value",maxColour.getBackground(),true); UserDefinedColours udc = new UserDefinedColours(this, maxColour.getBackground(), owner, - "Select Colour for Maximum Value"); + MessageManager.getString("label.select_colour_maximum_value")); } else { @@ -330,19 +363,20 @@ public class FeatureColourChooser extends Panel implements ActionListener, } 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; } slider.setEnabled(true); thresholdValue.setEnabled(true); - GraduatedColor acg = new GraduatedColor(minColour.getBackground(), - maxColour.getBackground(), min, max); + FeatureColour acg = new FeatureColour(new Colour( + minColour.getBackground()), new Colour( + maxColour.getBackground()), min, max); acg.setColourByLabel(colourFromLabel.getState()); maxColour.setEnabled(!colourFromLabel.getState()); @@ -365,7 +399,7 @@ public class FeatureColourChooser extends Panel implements ActionListener, if (aboveThreshold != AnnotationColourGradient.NO_THRESHOLD) { adjusting = true; - acg.setThresh(threshline.value); + acg.setThreshold(threshline.value); float range = max * 1000f - min * 1000f; @@ -378,42 +412,45 @@ public class FeatureColourChooser extends Panel implements ActionListener, adjusting = false; } - acg.setThreshType(aboveThreshold); + acg.setAboveThreshold(true); if (thresholdIsMin.getState() && aboveThreshold != AnnotationColourGradient.NO_THRESHOLD) { if (aboveThreshold == AnnotationColourGradient.ABOVE_THRESHOLD) { - acg = new GraduatedColor(acg, threshline.value, max); + acg = new FeatureColour(acg, threshline.value, max); } else { - acg = new GraduatedColor(acg, min, threshline.value); + acg = new FeatureColour(acg, min, threshline.value); } } - fr.featureColours.put(type, acg); + fr.setColour(type, acg); cs = acg; - PaintRefresher.Refresh(this, fr.av.getSequenceSetId()); + PaintRefresher.Refresh(this, fr.getViewport().getSequenceSetId()); // ap.paintAlignment(false); } void reset() { - fr.featureColours.put(type, oldcs); - PaintRefresher.Refresh(this, fr.av.getSequenceSetId()); + fr.setColour(type, oldcs); + PaintRefresher.Refresh(this, fr.getViewport().getSequenceSetId()); // ap.paintAlignment(true); } + @Override public void mouseClicked(MouseEvent evt) { } + @Override public void mousePressed(MouseEvent evt) { } + @Override public void mouseReleased(MouseEvent evt) { if (evt.getSource() == minColour || evt.getSource() == maxColour) @@ -423,15 +460,17 @@ public class FeatureColourChooser extends Panel implements ActionListener, } else { - PaintRefresher.Refresh(this, fr.av.getSequenceSetId()); + PaintRefresher.Refresh(this, fr.getViewport().getSequenceSetId()); } // ap.paintAlignment(true); } + @Override public void mouseEntered(MouseEvent evt) { } + @Override public void mouseExited(MouseEvent evt) { }