/*
* @(#)ProgressIndicator.java
*
* Copyright (c) 2007-2008 The authors and contributors of JHotDraw.
* You may not use, copy or modify this file, except in compliance with the
* accompanying license terms.
*/
package org.jhotdraw.samples.svg.gui;
import edu.umd.cs.findbugs.annotations.Nullable;
import java.awt.*;
import javax.swing.*;
/**
* ProgressIndicator.
*
* @author Werner Randelshofer
* @version $Id$
*/
public class ProgressIndicator extends javax.swing.JPanel {
private static final long serialVersionUID = 1L;
ProgressMonitor m;
private BoundedRangeModel progressModel;
/** Creates new instance. */
public ProgressIndicator() {
this(null, null);
}
/** Creates new instance. */
public ProgressIndicator(@Nullable String message, @Nullable String note) {
this(message, note, 0, 100, true);
}
/** Creates new instance. */
public ProgressIndicator(
@Nullable String message,
@Nullable String note,
int min,
int max,
boolean indeterminate) {
initComponents();
messageLabel.setFont(messageLabel.getFont().deriveFont(Font.BOLD));
progressModel = new DefaultBoundedRangeModel(0, 0, min, max);
progressBar.setModel(progressModel);
setMessage(message);
setNote(note);
setIndeterminate(indeterminate);
}
public void setMessage(@Nullable String message) {
messageLabel.setText(message);
}
@Nullable public String getMessage() {
return messageLabel.getText();
}
public void setNote(@Nullable final String newValue) {
String oldValue = noteLabel.getText();
noteLabel.setText(newValue);
if (oldValue == null || newValue == null && oldValue != newValue) {
Runnable r = new Runnable() {
@Override
public void run() {
noteLabel.setVisible(newValue != null);
validate();
}
};
SwingUtilities.invokeLater(r);
}
}
public String getNote() {
return noteLabel.getText();
}
public void setProgressModel(BoundedRangeModel m) {
// BoundedRangeModel oldValue = progressModel;
progressModel = m;
progressBar.setModel(m);
}
/**
* Returns the minimum value -- the lower end of the progress value.
*
* @return an int representing the minimum value
* @see #setMinimum
*/
public int getMinimum() {
return progressModel.getMinimum();
}
/**
* Specifies the minimum value.
*
* @param m an int specifying the minimum value
* @see #getMinimum
*/
public void setMinimum(int m) {
progressModel.setMinimum(m);
}
/**
* Indicate the progress of the operation being monitored.
* @param nv an int specifying the current value, between the
* maximum and minimum specified for this component
*/
public void setProgress(int nv) {
progressModel.setValue(nv);
}
/**
* Returns the maximum value -- the higher end of the progress value.
*
* @return an int representing the maximum value
* @see #setMaximum
*/
public int getMaximum() {
return progressModel.getMaximum();
}
/**
* Specifies the maximum value.
*
* @param m an int specifying the maximum value
* @see #getMaximum
*/
public void setMaximum(int m) {
progressModel.setMaximum(m);
}
public void setIndeterminate(boolean b) {
progressBar.setIndeterminate(b);
}
public boolean isIndeterminate() {
return progressBar.isIndeterminate();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
messageLabel = new javax.swing.JLabel();
noteLabel = new javax.swing.JLabel();
progressBar = new javax.swing.JProgressBar();
setBackground(new java.awt.Color(255, 255, 255));
setLayout(new java.awt.GridBagLayout());
messageLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
add(messageLabel, gridBagConstraints);
noteLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(4, 0, 0, 0);
add(noteLabel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.insets = new java.awt.Insets(4, 0, 0, 0);
add(progressBar, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel messageLabel;
private javax.swing.JLabel noteLabel;
private javax.swing.JProgressBar progressBar;
// End of variables declaration//GEN-END:variables
}