X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FFeatureColourChooser.java;h=69f667a8fc0bbc28254d171182535cdd836837c2;hb=811fb76382f3601b35dc08b8c0ceabed049c3326;hp=cb8f23b701096faf16b030a12c96d5188aaabf4c;hpb=7542c09a302d40313e8c112a556b9cdd7ef160ea;p=jalview.git diff --git a/src/jalview/appletgui/FeatureColourChooser.java b/src/jalview/appletgui/FeatureColourChooser.java index cb8f23b..69f667a 100644 --- a/src/jalview/appletgui/FeatureColourChooser.java +++ b/src/jalview/appletgui/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.appletgui; @@ -27,38 +26,48 @@ import jalview.datamodel.*; import jalview.schemes.*; import java.awt.Rectangle; -public class FeatureColourChooser extends Panel implements - ActionListener, AdjustmentListener, ItemListener, MouseListener +public class FeatureColourChooser extends Panel implements ActionListener, + AdjustmentListener, ItemListener, MouseListener { JVDialog frame; + Frame owner; + FeatureRenderer fr; + FeatureSettings fs = null; + // AlignmentPanel ap; GraduatedColor cs; + Object oldcs; Hashtable oldgroupColours; - boolean adjusting = false; - private float min,max; - String type=null; - private AlignFrame af=null; + private float min, max; + + String type = null; + + private AlignFrame af = null; + public FeatureColourChooser(AlignFrame af, String type) { this.af = af; init(af.getSeqcanvas().getFeatureRenderer(), type); } + public FeatureColourChooser(FeatureSettings fsettings, String type) { this.fs = fsettings; init(fsettings.fr, type); // this.ap = fsettings.ap; } - private void init(FeatureRenderer frenderer,String type) { + + private void init(FeatureRenderer frenderer, String type) + { this.type = type; fr = frenderer; float mm[] = ((float[][]) fr.minmax.get(type))[0]; @@ -68,7 +77,9 @@ public class FeatureColourChooser extends Panel implements if (oldcs instanceof GraduatedColor) { cs = new GraduatedColor((GraduatedColor) oldcs, min, max); - } else { + } + else + { // promote original color to a graduated color Color bl = Color.black; if (oldcs instanceof Color) @@ -76,7 +87,7 @@ public class FeatureColourChooser extends Panel implements 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]); } minColour.setBackground(cs.getMinColor()); maxColour.setBackground(cs.getMaxColor()); @@ -91,25 +102,32 @@ public class FeatureColourChooser extends Panel implements } catch (Exception ex) { } - threshold.select(cs.getThreshType()==AnnotationColourGradient.NO_THRESHOLD ? 0 : cs.getThreshType() == AnnotationColourGradient.ABOVE_THRESHOLD ? 1 : 2); - + threshold + .select(cs.getThreshType() == AnnotationColourGradient.NO_THRESHOLD ? 0 + : cs.getThreshType() == AnnotationColourGradient.ABOVE_THRESHOLD ? 1 + : 2); + adjusting = false; changeColour(); colourFromLabel.addItemListener(this); slider.addAdjustmentListener(this); slider.addMouseListener(this); - owner = (af!=null) ? af : fs.frame; - frame = new JVDialog(owner,"Graduated Feature Colour for "+type,true,480,248); + owner = (af != null) ? af : fs.frame; + frame = new JVDialog(owner, "Graduated Feature Colour for " + type, + true, 480, 248); frame.setMainPanel(this); validate(); frame.setVisible(true); - if (frame.accept) { + if (frame.accept) + { changeColour(); - } else { + } + else + { // cancel - reset(); - PaintRefresher.Refresh(this, fr.av.getSequenceSetId()); - frame.setVisible(false); + reset(); + PaintRefresher.Refresh(this, fr.av.getSequenceSetId()); + frame.setVisible(false); } } @@ -126,14 +144,14 @@ public class FeatureColourChooser extends Panel implements private void jbInit() throws Exception { - Label minLabel = new Label("Min:"),maxLabel=new Label("Max:"); + Label minLabel = new Label("Min:"), maxLabel = new 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)); - //minColour.setLabel("Min Colour"); - - minColour.setBounds(0,0,40,27); - maxColour.setBounds(0,0,40,27); + // minColour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); + // minColour.setLabel("Min Colour"); + + minColour.setBounds(0, 0, 40, 27); + maxColour.setBounds(0, 0, 40, 27); minColour.addMouseListener(this); maxColour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); @@ -141,10 +159,10 @@ public class FeatureColourChooser extends Panel implements thresholdIsMin.addItemListener(this); - this.setLayout(new GridLayout(4,1)); + this.setLayout(new GridLayout(4, 1)); jPanel1.setLayout(new FlowLayout()); jPanel2.setLayout(new FlowLayout()); - jPanel3.setLayout(new GridLayout(1,1)); + jPanel3.setLayout(new GridLayout(1, 1)); jPanel4.setLayout(new FlowLayout()); jPanel1.setBackground(Color.white); jPanel2.setBackground(Color.white); @@ -158,18 +176,20 @@ public class FeatureColourChooser extends Panel implements slider.setEnabled(false); slider.setSize(new Dimension(93, 21)); thresholdValue.setEnabled(false); - thresholdValue.setSize(new Dimension(79,22)); //setBounds(new Rectangle(248, 2, 79, 22)); + thresholdValue.setSize(new Dimension(79, 22)); // setBounds(new + // Rectangle(248, 2, 79, + // 22)); thresholdValue.setColumns(5); jPanel3.setBackground(Color.white); - + colourFromLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); colourFromLabel.setLabel("Colour by Label"); - colourFromLabel.setSize(new Dimension(139,22)); - //threshold.setBounds(new Rectangle(11, 3, 139, 22)); + colourFromLabel.setSize(new Dimension(139, 22)); + // threshold.setBounds(new Rectangle(11, 3, 139, 22)); thresholdIsMin.setBackground(Color.white); thresholdIsMin.setLabel("Threshold is min/max"); - thresholdIsMin.setSize(new Dimension(135,23)); - //thresholdIsMin.setBounds(new Rectangle(328, 3, 135, 23)); + thresholdIsMin.setSize(new Dimension(135, 23)); + // thresholdIsMin.setBounds(new Rectangle(328, 3, 135, 23)); jPanel1.add(minLabel); jPanel1.add(minColour); jPanel1.add(maxLabel); @@ -179,17 +199,16 @@ public class FeatureColourChooser extends Panel implements jPanel3.add(slider); jPanel4.add(thresholdValue); jPanel4.add(thresholdIsMin); - this.add(jPanel1);//, java.awt.BorderLayout.NORTH); - this.add(jPanel2);//, java.awt.BorderLayout.NORTH); - this.add(jPanel3);//, java.awt.BorderLayout.CENTER); - this.add(jPanel4);//, java.awt.BorderLayout.CENTER); + this.add(jPanel1);// , java.awt.BorderLayout.NORTH); + this.add(jPanel2);// , java.awt.BorderLayout.NORTH); + this.add(jPanel3);// , java.awt.BorderLayout.CENTER); + this.add(jPanel4);// , java.awt.BorderLayout.CENTER); } Panel minColour = new Panel(); Panel maxColour = new Panel(); - Panel jPanel1 = new Panel(); Panel jPanel2 = new Panel(); @@ -197,16 +216,17 @@ public class FeatureColourChooser extends Panel implements Choice threshold = new Choice(); Panel jPanel3 = new Panel(); + Panel jPanel4 = new Panel(); Scrollbar slider = new Scrollbar(Scrollbar.HORIZONTAL); TextField thresholdValue = new TextField(20); - -// BorderLayout borderLayout1 = new BorderLayout(); + // BorderLayout borderLayout1 = new BorderLayout(); Checkbox thresholdIsMin = new Checkbox(); + Checkbox colourFromLabel = new Checkbox(); private GraphLine threshline; @@ -253,35 +273,47 @@ public class FeatureColourChooser extends Panel implements valueChanged(); } } - protected void valueChanged() { + + protected void valueChanged() + { threshline.value = (float) slider.getValue() / 1000f; cs.setThresh(threshline.value); changeColour(); PaintRefresher.Refresh(this, fr.av.getSequenceSetId()); // ap.paintAlignment(false); } + public void minColour_actionPerformed(Color newCol) { if (newCol == null) { - UserDefinedColours udc = new UserDefinedColours(this,minColour.getBackground(),owner, "Select Colour for Minimum Value"); // frame.owner, - } else { + UserDefinedColours udc = new UserDefinedColours(this, + minColour.getBackground(), owner, + "Select Colour for Minimum Value"); // frame.owner, + } + else + { minColour.setBackground(newCol); minColour.setForeground(newCol); minColour.repaint(); changeColour(); } - + } public void maxColour_actionPerformed(Color newCol) { if (newCol == null) { - - // UserDefinedColours udc = new UserDefinedColours(this, "Select Colour for Maximum Value",maxColour.getBackground(),true); - UserDefinedColours udc = new UserDefinedColours(this, maxColour.getBackground(), owner, "Select Colour for Maximum Value"); - } else { + + // UserDefinedColours udc = new UserDefinedColours(this, + // "Select Colour for Maximum Value",maxColour.getBackground(),true); + UserDefinedColours udc = new UserDefinedColours(this, + maxColour.getBackground(), owner, + "Select Colour for Maximum Value"); + } + else + { maxColour.setBackground(newCol); maxColour.setForeground(newCol); maxColour.repaint(); @@ -309,7 +341,8 @@ public class FeatureColourChooser extends Panel implements slider.setEnabled(true); thresholdValue.setEnabled(true); - GraduatedColor acg = new GraduatedColor(minColour.getBackground(), maxColour.getBackground(), min, max); + GraduatedColor acg = new GraduatedColor(minColour.getBackground(), + maxColour.getBackground(), min, max); acg.setColourByLabel(colourFromLabel.getState()); maxColour.setEnabled(!colourFromLabel.getState()); @@ -320,14 +353,13 @@ public class FeatureColourChooser extends Panel implements thresholdValue.setEnabled(false); thresholdValue.setText(""); } - + else if (aboveThreshold != AnnotationColourGradient.NO_THRESHOLD && 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) @@ -335,8 +367,7 @@ public class FeatureColourChooser extends Panel implements 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)); @@ -348,17 +379,20 @@ public class FeatureColourChooser extends Panel implements } acg.setThreshType(aboveThreshold); - if (thresholdIsMin.getState() && aboveThreshold != AnnotationColourGradient.NO_THRESHOLD) + if (thresholdIsMin.getState() + && aboveThreshold != AnnotationColourGradient.NO_THRESHOLD) { - 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 + { + acg = new GraduatedColor(acg, min, threshline.value); } } - - fr.featureColours.put(type,acg); + + fr.featureColours.put(type, acg); cs = acg; PaintRefresher.Refresh(this, fr.av.getSequenceSetId()); // ap.paintAlignment(false); @@ -382,11 +416,13 @@ public class FeatureColourChooser extends Panel implements public void mouseReleased(MouseEvent evt) { - if (evt.getSource()==minColour || evt.getSource()==maxColour) + if (evt.getSource() == minColour || evt.getSource() == maxColour) { // relay the event actionPerformed(new ActionEvent(evt.getSource(), 1, "Clicked")); - } else { + } + else + { PaintRefresher.Refresh(this, fr.av.getSequenceSetId()); } // ap.paintAlignment(true);