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 }