2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
23 import jalview.api.RendererListenerI;
25 import java.awt.BorderLayout;
26 import java.beans.PropertyChangeEvent;
28 import javax.swing.JLabel;
29 import javax.swing.JPanel;
30 import javax.swing.JProgressBar;
31 import javax.swing.border.EmptyBorder;
34 * A class to manage a panel containing a label and progress bar updated by an
40 public class ProgressPanel extends JPanel implements RendererListenerI
42 // max value of progress bar: values expected to be %s
43 private final int MAXVALUE = 100;
45 // name of event property which updates the progress bar
46 private String eventName;
48 private JProgressBar progressBar;
50 private JLabel progressLabel;
53 * Construct a JPanel containing a progress bar and a label.
55 * @param eventPropertyName
56 * The name of the event property to update the progress bar
58 * The label to place next to the progress bar
60 public ProgressPanel(String eventPropertyName, String label)
62 super(new BorderLayout(10, 0));
63 setBorder(new EmptyBorder(0, 3, 0, 20));
65 eventName = eventPropertyName;
67 progressBar = new JProgressBar();
68 progressBar.setMinimum(0);
69 progressLabel = new JLabel(label);
71 add(progressLabel, BorderLayout.WEST);
72 add(progressBar, BorderLayout.CENTER);
77 * Update the progress bar in response to the event. Expects the value
78 * supplied by the event to be in the range 0-100 i.e. a percentage
80 public void propertyChange(PropertyChangeEvent evt)
82 if (evt.getPropertyName().equals(eventName))
84 int progress = (int) evt.getNewValue();
86 System.out.println(progress);
88 progressBar.setValue(progress);
89 if (progress < MAXVALUE && !progressBar.isVisible())
91 progressBar.setVisible(true);
92 progressLabel.setVisible(true);
94 else if (progress >= MAXVALUE)
96 progressBar.setVisible(false);
97 progressLabel.setVisible(false);