X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFeatureColourChooser.java;h=e9a88acc15d94af75af08faa0af6661338481186;hb=153dd62dc91da13ae732600e6ea55ddbe15eab39;hp=3b39c2cd32399c22c27a5a36a6ebcacd4e9a25e2;hpb=a928b501e71cef2627004a73e2d5c460b44b2d7b;p=jalview.git diff --git a/src/jalview/gui/FeatureColourChooser.java b/src/jalview/gui/FeatureColourChooser.java index 3b39c2c..e9a88ac 100644 --- a/src/jalview/gui/FeatureColourChooser.java +++ b/src/jalview/gui/FeatureColourChooser.java @@ -1,20 +1,19 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1) - * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6) + * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle * - * This program 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 2 - * of the License, or (at your option) any later version. + * This file is part of Jalview. * - * This program 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. + * 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. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * 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 . */ package jalview.gui; @@ -30,55 +29,63 @@ import jalview.datamodel.*; import jalview.schemes.*; import java.awt.Dimension; -public class FeatureColourChooser extends JPanel +public class FeatureColourChooser extends JPanel { JDialog frame; - -// FeatureSettings fs; + // FeatureSettings fs; FeatureRenderer fr; - - + private GraduatedColor cs; + private Object oldcs; + /** * - * @return the last colour setting selected by user - either oldcs (which may be a java.awt.Color) or the new GraduatedColor + * @return the last colour setting selected by user - either oldcs (which may + * be a java.awt.Color) or the new GraduatedColor */ - public Object getLastColour() { - if (cs==null) + public Object getLastColour() + { + if (cs == null) { return oldcs; } return cs; } + Hashtable oldgroupColours; - + AlignmentPanel ap; - boolean adjusting = false; private float min; private float max; + String type = null; + public FeatureColourChooser(FeatureRenderer frender, String type) { - this(frender,false,type); + this(frender, false, type); } - public FeatureColourChooser(FeatureRenderer frender, boolean block, String type) - { + + public FeatureColourChooser(FeatureRenderer frender, boolean block, + String type) + { this.fr = frender; this.type = type; ap = fr.ap; - frame = new JDialog(Desktop.instance,true); - frame.setTitle("Graduated Feature Colour for "+type); + 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.setBounds(new Rectangle((int) (deskr.getCenterX() - 240), + (int) (deskr.getCenterY() - 92), 480, 185)); frame.setContentPane(this); - //frame.setLayer(JLayeredPane.PALETTE_LAYER); - //Desktop.addInternalFrame(frame, "Graduated Feature Colour for "+type, 480, 145); + // frame.setLayer(JLayeredPane.PALETTE_LAYER); + // Desktop.addInternalFrame(frame, "Graduated Feature Colour for "+type, + // 480, 145); slider.addChangeListener(new ChangeListener() { @@ -95,7 +102,11 @@ public class FeatureColourChooser extends JPanel { public void mouseReleased(MouseEvent evt) { - if (ap!=null) { ap.paintAlignment(true); }; + if (ap != null) + { + ap.paintAlignment(true); + } + ; } }); @@ -105,14 +116,18 @@ public class FeatureColourChooser extends JPanel oldcs = fr.featureColours.get(type); if (oldcs instanceof GraduatedColor) { - if (((GraduatedColor)oldcs).isAutoScale()) + if (((GraduatedColor) oldcs).isAutoScale()) { // update the scale cs = new GraduatedColor((GraduatedColor) oldcs, min, max); - } else { + } + else + { cs = new GraduatedColor((GraduatedColor) oldcs); } - } else { + } + else + { // promote original color to a graduated color Color bl = Color.black; if (oldcs instanceof Color) @@ -120,13 +135,13 @@ public class FeatureColourChooser extends JPanel bl = (Color) oldcs; } // original colour becomes the maximum colour - cs = new GraduatedColor(Color.white,bl,mm[0],mm[1]); + cs = new GraduatedColor(Color.white, bl, mm[0], mm[1]); cs.setColourByLabel(false); } - minColour.setBackground(oldminColour=cs.getMinColor()); - maxColour.setBackground(oldmaxColour=cs.getMaxColor()); + minColour.setBackground(oldminColour = cs.getMinColor()); + maxColour.setBackground(oldmaxColour = cs.getMaxColor()); adjusting = true; - + try { jbInit(); @@ -136,32 +151,36 @@ public class FeatureColourChooser extends JPanel // update the gui from threshold state thresholdIsMin.setSelected(!cs.isAutoScale()); colourByLabel.setSelected(cs.isColourByLabel()); - if (cs.getThreshType()!=AnnotationColourGradient.NO_THRESHOLD) + if (cs.getThreshType() != AnnotationColourGradient.NO_THRESHOLD) { // initialise threshold slider and selector - threshold.setSelectedIndex(cs.getThreshType()==AnnotationColourGradient.ABOVE_THRESHOLD ? 1 : 2); - slider.setEnabled(true); + threshold + .setSelectedIndex(cs.getThreshType() == AnnotationColourGradient.ABOVE_THRESHOLD ? 1 + : 2); + slider.setEnabled(true); thresholdValue.setEnabled(true); - threshline = new jalview.datamodel.GraphLine( - (max - min) / 2f, - "Threshold", Color.black); - - } + threshline = new jalview.datamodel.GraphLine((max - min) / 2f, + "Threshold", Color.black); + + } adjusting = false; changeColour(); if (!block) { - new Thread(new Runnable() { - - public void run() + new Thread(new Runnable() { - frame.show(); - } - - }).start(); - } else { + + public void run() + { + frame.show(); + } + + }).start(); + } + else + { frame.show(); } } @@ -179,7 +198,7 @@ public class FeatureColourChooser extends JPanel private void jbInit() throws Exception { - + minColour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); minColour.setBorder(BorderFactory.createLineBorder(Color.black)); minColour.setPreferredSize(new Dimension(40, 20)); @@ -266,7 +285,8 @@ public class FeatureColourChooser extends JPanel jPanel3.setBackground(Color.white); thresholdIsMin.setBackground(Color.white); thresholdIsMin.setText("Threshold is Min/Max"); - thresholdIsMin.setToolTipText("Toggle between absolute and relative display threshold."); + thresholdIsMin + .setToolTipText("Toggle between absolute and relative display threshold."); thresholdIsMin.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent actionEvent) @@ -276,7 +296,8 @@ public class FeatureColourChooser extends JPanel }); 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)"); + colourByLabel + .setToolTipText("Display features of the same type with a different label using a different colour. (e.g. domain features)"); colourByLabel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent actionEvent) @@ -287,8 +308,8 @@ public class FeatureColourChooser extends JPanel colourPanel.setBackground(Color.white); jPanel1.add(ok); jPanel1.add(cancel); - jPanel2.add(colourByLabel,java.awt.BorderLayout.WEST); - jPanel2.add(colourPanel,java.awt.BorderLayout.EAST); + jPanel2.add(colourByLabel, java.awt.BorderLayout.WEST); + jPanel2.add(colourPanel, java.awt.BorderLayout.EAST); colourPanel.add(minText); colourPanel.add(minColour); colourPanel.add(maxText); @@ -302,9 +323,10 @@ public class FeatureColourChooser extends JPanel this.add(jPanel2, java.awt.BorderLayout.NORTH); } - JLabel minText = new JLabel(); + JLabel maxText = new JLabel(); + JPanel minColour = new JPanel(); JPanel maxColour = new JPanel(); @@ -312,7 +334,9 @@ public class FeatureColourChooser extends JPanel JButton ok = new JButton(); JButton cancel = new JButton(); + JPanel colourPanel = new JPanel(); + JPanel jPanel1 = new JPanel(); JPanel jPanel2 = new JPanel(); @@ -330,18 +354,18 @@ public class FeatureColourChooser extends JPanel JSlider slider = new JSlider(); JTextField thresholdValue = new JTextField(20); + // TODO implement GUI for tolower flag // JCheckBox toLower = new JCheckBox(); JCheckBox thresholdIsMin = new JCheckBox(); + JCheckBox colourByLabel = new JCheckBox(); private GraphLine threshline; - private Color oldmaxColour; - private Color oldminColour; public void minColour_actionPerformed() @@ -378,7 +402,6 @@ public class FeatureColourChooser extends JPanel return; } - int aboveThreshold = AnnotationColourGradient.NO_THRESHOLD; if (threshold.getSelectedItem().equals("Above Threshold")) { @@ -387,19 +410,22 @@ public class FeatureColourChooser extends JPanel else if (threshold.getSelectedItem().equals("Below Threshold")) { aboveThreshold = AnnotationColourGradient.BELOW_THRESHOLD; - } + } slider.setEnabled(true); thresholdValue.setEnabled(true); - + GraduatedColor acg; if (cs.isColourByLabel()) - { - acg = new GraduatedColor(oldminColour, oldmaxColour, min, max); - } else { - acg = new GraduatedColor(oldminColour=minColour.getBackground(), oldmaxColour=maxColour.getBackground(), min, max); - - } + { + acg = new GraduatedColor(oldminColour, oldmaxColour, min, max); + } + else + { + acg = new GraduatedColor(oldminColour = minColour.getBackground(), + oldmaxColour = maxColour.getBackground(), min, max); + + } if (aboveThreshold == AnnotationColourGradient.NO_THRESHOLD) { @@ -412,9 +438,8 @@ public class FeatureColourChooser extends JPanel && threshline == null) { // todo visual indication of feature threshold - threshline = new jalview.datamodel.GraphLine( - (max - min) / 2f, - "Threshold", Color.black); + threshline = new jalview.datamodel.GraphLine((max - min) / 2f, + "Threshold", Color.black); } if (aboveThreshold != AnnotationColourGradient.NO_THRESHOLD) @@ -422,8 +447,7 @@ public class FeatureColourChooser extends JPanel adjusting = true; acg.setThresh(threshline.value); - float range = max * 1000f - - min * 1000f; + float range = max * 1000f - min * 1000f; slider.setMinimum((int) (min * 1000)); slider.setMaximum((int) (max * 1000)); @@ -437,16 +461,21 @@ public class FeatureColourChooser extends JPanel } acg.setThreshType(aboveThreshold); - if (thresholdIsMin.isSelected() && aboveThreshold != AnnotationColourGradient.NO_THRESHOLD) + if (thresholdIsMin.isSelected() + && aboveThreshold != AnnotationColourGradient.NO_THRESHOLD) { acg.setAutoScaled(false); - if (aboveThreshold==AnnotationColourGradient.ABOVE_THRESHOLD) - { + if (aboveThreshold == AnnotationColourGradient.ABOVE_THRESHOLD) + { acg = new GraduatedColor(acg, threshline.value, max); - } else { - acg = new GraduatedColor(acg, min,threshline.value); } - } else { + else + { + acg = new GraduatedColor(acg, min, threshline.value); + } + } + else + { acg.setAutoScaled(true); } acg.setColourByLabel(colourByLabel.isSelected()); @@ -458,8 +487,10 @@ public class FeatureColourChooser extends JPanel maxColour.setForeground(this.getBackground()); minColour.setBackground(this.getBackground()); minColour.setForeground(this.getBackground()); - - } else { + + } + else + { maxColour.setEnabled(true); minColour.setEnabled(true); maxColour.setBackground(oldmaxColour); @@ -467,16 +498,19 @@ public class FeatureColourChooser extends JPanel maxColour.setForeground(oldmaxColour); minColour.setForeground(oldminColour); } - fr.featureColours.put(type,acg); + fr.featureColours.put(type, acg); cs = acg; ap.paintAlignment(false); } - private void raiseClosed() { - if (this.colourEditor!=null) + + private void raiseClosed() + { + if (this.colourEditor != null) { colourEditor.actionPerformed(new ActionEvent(this, 0, "CLOSED")); } } + public void ok_actionPerformed(ActionEvent e) { changeColour(); @@ -495,7 +529,7 @@ public class FeatureColourChooser extends JPanel try { frame.dispose(); -// frame.setClosed(true); + // frame.setClosed(true); raiseClosed(); } catch (Exception ex) { @@ -548,16 +582,20 @@ public class FeatureColourChooser extends JPanel { changeColour(); } + public void colourByLabel_actionPerformed(ActionEvent actionEvent) { changeColour(); } - ActionListener colourEditor=null; + + ActionListener colourEditor = null; + public void addActionListener(ActionListener graduatedColorEditor) { - if (colourEditor!=null) + if (colourEditor != null) { - System.err.println("IMPLEMENTATION ISSUE: overwriting action listener for FeatureColourChooser"); + System.err + .println("IMPLEMENTATION ISSUE: overwriting action listener for FeatureColourChooser"); } colourEditor = graduatedColorEditor; }