X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FSliderPanel.java;h=565ebe84bb088bc5bb3638d2c1c637788240de32;hb=f4766a7bbcfae845fc95923b01fa14ff83d589ff;hp=d25caa4fe3308c0f69a81a3aa5d429cff19f188b;hpb=ad20cd92225f2ee8c251d39b00b90555d382a616;p=jalview.git diff --git a/src/jalview/appletgui/SliderPanel.java b/src/jalview/appletgui/SliderPanel.java old mode 100755 new mode 100644 index d25caa4..565ebe8 --- a/src/jalview/appletgui/SliderPanel.java +++ b/src/jalview/appletgui/SliderPanel.java @@ -1,63 +1,90 @@ /* - * 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.*; - -public class SliderPanel extends Panel implements ActionListener, - AdjustmentListener, MouseListener +import jalview.analysis.Conservation; +import jalview.datamodel.SequenceGroup; +import jalview.renderer.ResidueShaderI; +import jalview.util.MessageManager; + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Checkbox; +import java.awt.Color; +import java.awt.FlowLayout; +import java.awt.Frame; +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.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.util.List; + +public class SliderPanel extends Panel + implements ActionListener, AdjustmentListener, MouseListener { + private static final String BACKGROUND = "Background"; + AlignmentPanel ap; boolean forConservation = true; - ColourSchemeI cs; + ResidueShaderI cs; static Frame conservationSlider; static Frame PIDSlider; public static int setConservationSlider(AlignmentPanel ap, - ColourSchemeI cs, String source) + ResidueShaderI ccs, String source) { SliderPanel sp = null; if (conservationSlider == null) { - sp = new SliderPanel(ap, cs.getConservationInc(), true, cs); + sp = new SliderPanel(ap, ccs.getConservationInc(), true, ccs); conservationSlider = new Frame(); conservationSlider.add(sp); } else { sp = (SliderPanel) conservationSlider.getComponent(0); - sp.cs = cs; + sp.cs = ccs; + sp.valueField.setText(String.valueOf(ccs.getConservationInc())); } - conservationSlider.setTitle("Conservation Colour Increment (" + source - + ")"); - if (ap.av.getAlignment().getGroups() != null) + conservationSlider.setTitle(MessageManager.formatMessage( + "label.conservation_colour_increment", new String[] + { source == null ? BACKGROUND : source })); + List groups = ap.av.getAlignment().getGroups(); + if (groups != null && !groups.isEmpty()) { sp.setAllGroupsCheckEnabled(true); } @@ -85,6 +112,7 @@ public class SliderPanel extends Panel implements ActionListener, conservationSlider.getTitle(), 420, 100); conservationSlider.addWindowListener(new WindowAdapter() { + @Override public void windowClosing(WindowEvent e) { conservationSlider = null; @@ -95,22 +123,25 @@ public class SliderPanel extends Panel implements ActionListener, } - public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs, - String source) + public static int setPIDSliderSource(AlignmentPanel ap, + ResidueShaderI ccs, String source) { SliderPanel pid = null; if (PIDSlider == null) { - pid = new SliderPanel(ap, 50, false, cs); + pid = new SliderPanel(ap, ccs.getThreshold(), false, ccs); PIDSlider = new Frame(); PIDSlider.add(pid); } else { pid = (SliderPanel) PIDSlider.getComponent(0); - pid.cs = cs; + pid.cs = ccs; + pid.valueField.setText(String.valueOf(ccs.getThreshold())); } - PIDSlider.setTitle("Percentage Identity Threshold (" + source + ")"); + PIDSlider.setTitle(MessageManager.formatMessage( + "label.percentage_identity_threshold", new String[] + { source == null ? BACKGROUND : source })); if (ap.av.getAlignment().getGroups() != null) { @@ -137,10 +168,11 @@ public class SliderPanel extends Panel implements ActionListener, if (!PIDSlider.isVisible()) { - jalview.bin.JalviewLite.addFrame(PIDSlider, PIDSlider.getTitle(), - 420, 100); + jalview.bin.JalviewLite.addFrame(PIDSlider, PIDSlider.getTitle(), 420, + 100); PIDSlider.addWindowListener(new WindowAdapter() { + @Override public void windowClosing(WindowEvent e) { PIDSlider = null; @@ -150,8 +182,32 @@ public class SliderPanel extends Panel implements ActionListener, } + /** + * Hides the PID slider panel if it is shown + */ + public static void hidePIDSlider() + { + if (PIDSlider != null) + { + PIDSlider.setVisible(false); + PIDSlider = null; + } + } + + /** + * Hides the Conservation slider panel if it is shown + */ + public static void hideConservationSlider() + { + if (conservationSlider != null) + { + conservationSlider.setVisible(false); + conservationSlider = null; + } + } + public SliderPanel(AlignmentPanel ap, int value, boolean forConserve, - ColourSchemeI cs) + ResidueShaderI shader) { try { @@ -161,20 +217,22 @@ public class SliderPanel extends Panel implements ActionListener, e.printStackTrace(); } this.ap = ap; - this.cs = cs; + this.cs = shader; forConservation = forConserve; undoButton.setVisible(false); applyButton.setVisible(false); if (forConservation) { - label.setText("Modify conservation visibility"); + label.setText(MessageManager + .getString("label.modify_conservation_visibility")); slider.setMinimum(0); slider.setMaximum(50 + slider.getVisibleAmount()); slider.setUnitIncrement(1); } else { - label.setText("Colour residues above % occurence"); + label.setText(MessageManager + .getString("label.colour_residues_above_occurrence")); slider.setMinimum(0); slider.setMaximum(100 + slider.getVisibleAmount()); slider.setBlockIncrement(1); @@ -193,46 +251,57 @@ public class SliderPanel extends Panel implements ActionListener, { return; } - - ColourSchemeI toChange = null; - Iterator allGroups = null; - - if (allGroupsCheck.getState()) + if (forConservation) { - allGroups = ap.av.getAlignment().getGroups().listIterator(); + cs.setConservationApplied(true); + cs.setConservationInc(i); } else { - toChange = cs; + cs.setThreshold(i, ap.av.isIgnoreGapsConsensus()); } - do + if (allGroupsCheck.getState()) { - if (allGroups != null) - { - toChange = allGroups.next().cs; - } - - if (forConservation) - { - toChange.setConservationInc(i); - } - else + for (SequenceGroup group : ap.av.getAlignment().getGroups()) { - toChange.setThreshold(i, ap.av.getIgnoreGapsConsensus()); + ResidueShaderI groupColourScheme = group.getGroupColourScheme(); + if (forConservation) + { + if (!groupColourScheme.conservationApplied()) + { + /* + * first time the colour scheme has had Conservation shading applied + * - compute conservation + */ + Conservation c = new Conservation("Group", + group.getSequences(null), group.getStartRes(), + group.getEndRes()); + c.calculate(); + c.verdict(false, ap.av.getConsPercGaps()); + group.cs.setConservation(c); + + } + groupColourScheme.setConservationApplied(true); + groupColourScheme.setConservationInc(i); + } + else + { + groupColourScheme.setThreshold(i, ap.av.isIgnoreGapsConsensus()); + } } - - } while (allGroups != null && allGroups.hasNext()); + } ap.seqPanel.seqCanvas.repaint(); - } public void setAllGroupsCheckEnabled(boolean b) { + allGroupsCheck.setState(ap.av.getColourAppliesToAllGroups()); allGroupsCheck.setEnabled(b); } + @Override public void actionPerformed(ActionEvent evt) { if (evt.getSource() == applyButton) @@ -249,6 +318,7 @@ public class SliderPanel extends Panel implements ActionListener, } } + @Override public void adjustmentValueChanged(AdjustmentEvent evt) { valueField.setText(slider.getValue() + ""); @@ -259,11 +329,11 @@ public class SliderPanel extends Panel implements ActionListener, { try { - int i = Integer.parseInt(valueField.getText()); + int i = Integer.valueOf(valueField.getText()); slider.setValue(i); - } catch (Exception ex) + } catch (NumberFormatException ex) { - valueField.setText(slider.getValue() + ""); + valueField.setText(String.valueOf(slider.getValue())); } } @@ -313,23 +383,36 @@ public class SliderPanel extends Panel implements ActionListener, slider.setFont(new java.awt.Font("Verdana", 0, 11)); slider.setOrientation(0); valueField.setFont(new java.awt.Font("Verdana", 0, 11)); - valueField.setText(" "); + valueField.setText(" "); valueField.addActionListener(this); + valueField.setColumns(3); + valueField.addFocusListener(new FocusAdapter() + { + @Override + public void focusLost(FocusEvent e) + { + valueField_actionPerformed(); + valueChanged(slider.getValue()); + } + }); + label.setFont(new java.awt.Font("Verdana", 0, 11)); - label.setText("set this label text"); + label.setText(MessageManager.getString("label.set_this_label_text")); jPanel1.setLayout(borderLayout1); jPanel2.setLayout(flowLayout1); applyButton.setFont(new java.awt.Font("Verdana", 0, 11)); - applyButton.setLabel("Apply"); + applyButton.setLabel(MessageManager.getString("action.apply")); applyButton.addActionListener(this); undoButton.setEnabled(false); undoButton.setFont(new java.awt.Font("Verdana", 0, 11)); - undoButton.setLabel("Undo"); + undoButton.setLabel(MessageManager.getString("action.undo")); undoButton.addActionListener(this); allGroupsCheck.setEnabled(false); allGroupsCheck.setFont(new java.awt.Font("Verdana", 0, 11)); - allGroupsCheck.setLabel("Apply threshold to all groups"); - allGroupsCheck.setName("Apply to all Groups"); + allGroupsCheck.setLabel( + MessageManager.getString("action.apply_threshold_all_groups")); + allGroupsCheck + .setName(MessageManager.getString("action.apply_all_groups")); this.setBackground(Color.white); this.setForeground(Color.black); jPanel2.add(label, null); @@ -350,23 +433,28 @@ public class SliderPanel extends Panel implements ActionListener, { } + @Override public void mousePressed(MouseEvent evt) { } + @Override public void mouseReleased(MouseEvent evt) { ap.paintAlignment(true); } + @Override public void mouseClicked(MouseEvent evt) { } + @Override public void mouseEntered(MouseEvent evt) { } + @Override public void mouseExited(MouseEvent evt) { }