// 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 final JLabel lblTaskTitle = new JLabel(""); private final JLabel lblCustomText = new JLabel(""); private final JProgressBar progressBar = new JProgressBar(JProgressBar.HORIZONTAL); /** * Constructs a new {@code UploadAndSaveProgressRenderer}. */ UploadAndSaveProgressRenderer() { build(); // initially not visible setVisible(false); } 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, gc); lblTaskTitle.setLabelFor(lblCustomText); gc.gridy = 1; add(lblCustomText, gc); lblCustomText.setLabelFor(progressBar); gc.gridy = 2; add(progressBar, gc); } @Override public void setCustomText(String message) { lblCustomText.setText(message); repaint(); } @Override public void setIndeterminate(boolean indeterminate) { progressBar.setIndeterminate(indeterminate); repaint(); } @Override public void setMaximum(int maximum) { progressBar.setMaximum(maximum); repaint(); } @Override public void setTaskTitle(String taskTitle) { lblTaskTitle.setText(taskTitle); repaint(); } @Override public void setValue(int value) { progressBar.setValue(value); repaint(); } @Override public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals(SaveLayersModel.MODE_PROP)) { setVisible(Mode.UPLOADING_AND_SAVING.equals(evt.getNewValue())); } getParent().validate(); } }