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