Skip to content
Snippets Groups Projects
ScoreChanger.java 6.19 KiB
Newer Older
  • Learn to ignore specific revisions
  • tjc's avatar
    tjc committed
    /* ScoreChanger.java
     *
     * created: Thu Oct 21 1999
     *
     * This file is part of Artemis
     * 
     * Copyright (C) 1999  Genome Research Limited
     * 
     * 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 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.
     * 
     * 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
     *
     * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/ScoreChanger.java,v 1.1 2004-06-09 09:47:29 tjc Exp $
     */
    
    package uk.ac.sanger.artemis.components;
    
    import java.awt.*;
    import java.awt.event.*;
    
    import javax.swing.*;
    
    /**
     *  This is a JFrame component that contains ScoreScrollbar components.
     *
     *  @author Kim Rutherford
     *  @version $Id: ScoreChanger.java,v 1.1 2004-06-09 09:47:29 tjc Exp $
     **/
    
    public class ScoreChanger extends JFrame {
      /**
       *  Create a new ScoreChanger.
       *  @param minimum_value The minimum allowable value for the scroll bars.
       *  @param maximum_value The maximum allowable value for the scroll bars.
       **/
      public ScoreChanger (final String name,
                           final ScoreChangeListener minimum_listener,
                           final ScoreChangeListener maximum_listener,
                           final int minimum_value, final int maximum_value)
          throws IllegalArgumentException {
    
        super (name);
    
        this.minimum_listener = minimum_listener;
        this.maximum_listener = maximum_listener;
        this.minimum_value = minimum_value;
        this.maximum_value = maximum_value;
    
        getContentPane ().setLayout (new GridLayout (5, 1));
    
        minimum_label = new JLabel ();
    
        getContentPane ().add (minimum_label);
    
        minimum_score_scrollbar =
          new ScoreScrollbar (minimum_value, maximum_value);
    
        final ScoreChangeListener this_minimum_listener =
          new ScoreChangeListener () {
            public void scoreChanged (ScoreChangeEvent event) {
              minimum_label.setText ("Minimum Cutoff: " + event.getValue ());
            }
          };
    
        minimum_score_scrollbar.addScoreChangeListener (this_minimum_listener);
    
        getContentPane ().add (minimum_score_scrollbar);
    
        maximum_label = new JLabel ();
    
        getContentPane ().add (maximum_label);
    
        maximum_score_scrollbar =
          new ScoreScrollbar (minimum_value, maximum_value);
    
        final ScoreChangeListener this_maximum_listener =
          new ScoreChangeListener () {
            public void scoreChanged (ScoreChangeEvent event) {
              maximum_label.setText ("Maximum Cutoff: " + event.getValue ());
            }
          };
    
        maximum_score_scrollbar.addScoreChangeListener (this_maximum_listener);
    
        getContentPane ().add (maximum_score_scrollbar);
    
        final FlowLayout flow_layout =
          new FlowLayout (FlowLayout.CENTER, 18, 0);
    
        final JPanel button_panel = new JPanel (flow_layout);
    
        final JButton reset_button = new JButton ("Reset");
    
        reset_button.addActionListener (new ActionListener () {
          public void actionPerformed (ActionEvent e) {
            reset ();
          }
        });
    
        button_panel.add (reset_button);
    
    
        final JButton close_button = new JButton ("Close");
    
        close_button.addActionListener (new ActionListener () {
          public void actionPerformed (ActionEvent e) {
            dispose ();
          }
        });
    
    
        button_panel.add (close_button);
    
        getContentPane ().add (button_panel);
    
        addWindowListener (new WindowAdapter () {
          public void windowClosing (WindowEvent event) {
            dispose ();
          }
        });
    
        pack ();
    
        setSize (270, getSize ().height);
    
        final Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        setLocation (new Point ((screen.width - getSize ().width) / 2,
                                (screen.height - getSize ().height) / 2));
    
        reset ();
        
        minimum_score_scrollbar.addScoreChangeListener (minimum_listener);
        maximum_score_scrollbar.addScoreChangeListener (maximum_listener);
      }
    
      /**
       *  Call reset (), clean up the listeners then call super.dispose ().
       **/
      public void dispose () {
        reset ();
    
        minimum_score_scrollbar.removeScoreChangeListener (minimum_listener);
        maximum_score_scrollbar.removeScoreChangeListener (maximum_listener);
    
        super.dispose ();
      }
    
      /**
       *  Reset the minimum_score_scrollbar to 0 and the maximum_score_scrollbar
       *  to 100.
       **/
      private void reset () {
        minimum_score_scrollbar.setValue (minimum_value);
        maximum_score_scrollbar.setValue (maximum_value);
    
        minimum_label.setText ("Minimum Cutoff: " + minimum_value);
        maximum_label.setText ("Maximum Cutoff: " + maximum_value);
    
        final ScoreChangeEvent minimum_event =
          new ScoreChangeEvent (this, minimum_value);
    
        minimum_listener.scoreChanged (minimum_event);
    
        final ScoreChangeEvent maximum_event =
          new ScoreChangeEvent (this, maximum_value);
    
        maximum_listener.scoreChanged (maximum_event);
      }
    
      /**
       *  The ScoreChangeListener for the minimum score that was passed to the
       *  constructor.
       **/
      final ScoreChangeListener minimum_listener;
    
      /**
       *  The minimum score scrollbar the created by the constructor.
       **/
      final ScoreScrollbar minimum_score_scrollbar;
    
      /**
       *  The ScoreChangeListener for the maximum score that was passed to the
       *  constructor.
       **/
      final ScoreChangeListener maximum_listener;
    
      /**
       *  The maximum score scrollbar the created by the constructor.
       **/
      final ScoreScrollbar maximum_score_scrollbar;
    
      /**
       *  The minimum allowable value for the scroll bars.
       **/
      final int minimum_value;
    
      /**
       *  The maximum allowable value for the scroll bars.
       **/
      final int maximum_value;
    
      /**
       *  A Label that shows something like this: "Minimum Cutoff: 0"
       **/
      final JLabel minimum_label;
    
      /**
       *  A Label that shows something like this: "Maximum Cutoff: 100"
       **/
      final JLabel maximum_label;
    }