001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.gui.io;
003
004 import java.awt.GridBagConstraints;
005 import java.awt.GridBagLayout;
006 import java.awt.Insets;
007 import java.beans.PropertyChangeEvent;
008 import java.beans.PropertyChangeListener;
009
010 import javax.swing.JLabel;
011 import javax.swing.JPanel;
012 import javax.swing.JProgressBar;
013
014 import org.openstreetmap.josm.gui.io.SaveLayersModel.Mode;
015 import org.openstreetmap.josm.gui.progress.ProgressRenderer;
016
017 class UploadAndSaveProgressRenderer extends JPanel implements ProgressRenderer, PropertyChangeListener {
018
019 private JLabel lblTaskTitle;
020 private JLabel lblCustomText;
021 private JProgressBar progressBar;
022
023 protected void build() {
024 setLayout(new GridBagLayout());
025 GridBagConstraints gc = new GridBagConstraints();
026 gc.gridx = 0;
027 gc.gridy = 0;
028 gc.fill = GridBagConstraints.HORIZONTAL;
029 gc.weightx = 1.0;
030 gc.weighty = 0.0;
031 gc.insets = new Insets(5,0,0,5);
032 add(lblTaskTitle = new JLabel(""), gc);
033
034 gc.gridx = 0;
035 gc.gridy = 1;
036 gc.fill = GridBagConstraints.HORIZONTAL;
037 gc.weightx = 1.0;
038 gc.weighty = 0.0;
039 gc.insets = new Insets(5,0,0,5);
040 add(lblCustomText = new JLabel(""), gc);
041
042 gc.gridx = 0;
043 gc.gridy = 2;
044 gc.fill = GridBagConstraints.HORIZONTAL;
045 gc.weightx = 1.0;
046 gc.weighty = 0.0;
047 gc.insets = new Insets(5,0,0,5);
048 add(progressBar = new JProgressBar(JProgressBar.HORIZONTAL), gc);
049 }
050
051 public UploadAndSaveProgressRenderer() {
052 build();
053 // initially not visible
054 setVisible(false);
055 }
056
057 public void setCustomText(String message) {
058 lblCustomText.setText(message);
059 repaint();
060 }
061
062 public void setIndeterminate(boolean indeterminate) {
063 progressBar.setIndeterminate(indeterminate);
064 repaint();
065 }
066
067 public void setMaximum(int maximum) {
068 progressBar.setMaximum(maximum);
069 repaint();
070 }
071
072 public void setTaskTitle(String taskTitle) {
073 lblTaskTitle.setText(taskTitle);
074 repaint();
075 }
076
077 public void setValue(int value) {
078 progressBar.setValue(value);
079 repaint();
080 }
081
082 public void propertyChange(PropertyChangeEvent evt) {
083 if (evt.getPropertyName().equals(SaveLayersModel.MODE_PROP)) {
084 Mode mode = (Mode)evt.getNewValue();
085 switch(mode) {
086 case EDITING_DATA: setVisible(false); break;
087 case UPLOADING_AND_SAVING: setVisible(true); break;
088 }
089 }
090 getParent().validate();
091 }
092 }