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 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 @Override 058 public void setCustomText(String message) { 059 lblCustomText.setText(message); 060 repaint(); 061 } 062 063 @Override 064 public void setIndeterminate(boolean indeterminate) { 065 progressBar.setIndeterminate(indeterminate); 066 repaint(); 067 } 068 069 @Override 070 public void setMaximum(int maximum) { 071 progressBar.setMaximum(maximum); 072 repaint(); 073 } 074 075 @Override 076 public void setTaskTitle(String taskTitle) { 077 lblTaskTitle.setText(taskTitle); 078 repaint(); 079 } 080 081 @Override 082 public void setValue(int value) { 083 progressBar.setValue(value); 084 repaint(); 085 } 086 087 @Override 088 public void propertyChange(PropertyChangeEvent evt) { 089 if (evt.getPropertyName().equals(SaveLayersModel.MODE_PROP)) { 090 Mode mode = (Mode)evt.getNewValue(); 091 switch(mode) { 092 case EDITING_DATA: setVisible(false); break; 093 case UPLOADING_AND_SAVING: setVisible(true); break; 094 } 095 } 096 getParent().validate(); 097 } 098}