+++ /dev/null
-package tim.prune.gui;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-import javax.swing.BorderFactory;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JProgressBar;
-
-import tim.prune.I18nManager;
-import tim.prune.function.Cancellable;
-
-/**
- * Class to show a progress dialog for various time-consuming functions
- */
-public class GenericProgressDialog
-{
- private JDialog _progressDialog = null;
- private String _dialogTitleKey = null;
- private String _labelKey = null;
- private JProgressBar _progressBar = null;
- private JFrame _parentFrame = null;
- private Cancellable _function = null;
-
- /**
- * Constructor
- * @param inTitleKey key for dialog title text
- * @param inLabelKey key for label text
- * @param inParentFrame parent frame for creating dialog
- * @param inFunction function which can be cancelled
- */
- public GenericProgressDialog(String inTitleKey, String inLabelKey,
- JFrame inParentFrame, Cancellable inFunction)
- {
- _dialogTitleKey = inTitleKey;
- _labelKey = inLabelKey;
- if (_labelKey == null) {
- _labelKey = "confirm.running";
- }
- _parentFrame = inParentFrame;
- _function = inFunction;
- }
-
- /**
- * Create the dialog to show the progress
- */
- private void createProgressDialog()
- {
- _progressDialog = new JDialog(_parentFrame, I18nManager.getText(_dialogTitleKey));
- _progressDialog.setLocationRelativeTo(_parentFrame);
- _progressBar = new JProgressBar(0, 100);
- _progressBar.setValue(0);
- _progressBar.setStringPainted(true);
- _progressBar.setString("");
- JPanel panel = new JPanel();
- panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
- panel.setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));
- panel.add(new JLabel(I18nManager.getText(_labelKey)));
- panel.add(_progressBar);
- panel.add(Box.createVerticalStrut(6)); // spacer
- JButton cancelButton = new JButton(I18nManager.getText("button.cancel"));
- cancelButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e)
- {
- _function.cancel();
- }
- });
- panel.add(cancelButton);
- _progressDialog.getContentPane().add(panel);
- _progressDialog.pack();
- _progressDialog.setVisible(true);
- }
-
- /**
- * Show the dialog in indeterminate mode, before limits are calculated
- */
- public void show()
- {
- if (_progressDialog == null)
- {
- createProgressDialog();
- _progressBar.setIndeterminate(true);
- }
- }
-
- /**
- * Update the progress bar
- * @param inCurrent current value
- * @param inMax maximum value
- */
- public void showProgress(int inCurrent, int inMax)
- {
- if (_progressDialog == null)
- createProgressDialog();
- if (_progressBar.isIndeterminate())
- _progressBar.setIndeterminate(false);
- if (inMax > 0)
- _progressBar.setMaximum(inMax);
- _progressBar.setValue(inCurrent);
- _progressBar.setString("" + inCurrent + " / " + _progressBar.getMaximum());
- }
-
- /**
- * Close the dialog
- */
- public void close()
- {
- if (_progressDialog != null)
- _progressDialog.dispose();
- }
-}