// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.io; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; import org.openstreetmap.josm.gui.io.SaveLayersModel.Mode; import org.openstreetmap.josm.gui.progress.ProgressRenderer; class UploadAndSaveProgressRenderer extends JPanel implements ProgressRenderer, PropertyChangeListener { private JLabel lblTaskTitle; private JLabel lblCustomText; private JProgressBar progressBar; protected void build() { setLayout(new GridBagLayout()); GridBagConstraints gc = new GridBagConstraints(); gc.gridx = 0; gc.gridy = 0; gc.fill = GridBagConstraints.HORIZONTAL; gc.weightx = 1.0; gc.weighty = 0.0; gc.insets = new Insets(5,0,0,5); add(lblTaskTitle = new JLabel(""), gc); gc.gridx = 0; gc.gridy = 1; gc.fill = GridBagConstraints.HORIZONTAL; gc.weightx = 1.0; gc.weighty = 0.0; gc.insets = new Insets(5,0,0,5); add(lblCustomText = new JLabel(""), gc); gc.gridx = 0; gc.gridy = 2; gc.fill = GridBagConstraints.HORIZONTAL; gc.weightx = 1.0; gc.weighty = 0.0; gc.insets = new Insets(5,0,0,5); add(progressBar = new JProgressBar(JProgressBar.HORIZONTAL), gc); } public UploadAndSaveProgressRenderer() { build(); // initially not visible setVisible(false); } public void setCustomText(String message) { lblCustomText.setText(message); repaint(); } public void setIndeterminate(boolean indeterminate) { progressBar.setIndeterminate(indeterminate); repaint(); } public void setMaximum(int maximum) { progressBar.setMaximum(maximum); repaint(); } public void setTaskTitle(String taskTitle) { lblTaskTitle.setText(taskTitle); repaint(); } public void setValue(int value) { progressBar.setValue(value); repaint(); } public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals(SaveLayersModel.MODE_PROP)) { Mode mode = (Mode)evt.getNewValue(); switch(mode) { case EDITING_DATA: setVisible(false); break; case UPLOADING_AND_SAVING: setVisible(true); break; } } getParent().validate(); } }