зеркало из https://github.com/mozilla/pjs.git
172 строки
4.3 KiB
Java
172 строки
4.3 KiB
Java
|
/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||
|
*
|
||
|
* The contents of this file are subject to the Mozilla Public License
|
||
|
* Version 1.0 (the "License"); you may not use this file except in
|
||
|
* compliance with the License. You may obtain a copy of the License at
|
||
|
* http://www.mozilla.org/MPL/
|
||
|
*
|
||
|
* Software distributed under the License is distributed on an "AS IS"
|
||
|
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
|
||
|
* the License for the specific language governing rights and limitations
|
||
|
* under the License.
|
||
|
*
|
||
|
* The Original Code is the Grendel mail/news client.
|
||
|
*
|
||
|
* The Initial Developer of the Original Code is Netscape Communications
|
||
|
* Corporation. Portions created by Netscape are Copyright (C) 1997
|
||
|
* Netscape Communications Corporation. All Rights Reserved.
|
||
|
*
|
||
|
* Created: Will Scullin <scullin@netscape.com>, 26 Sep 1997.
|
||
|
*/
|
||
|
|
||
|
package grendel.ui;
|
||
|
|
||
|
import java.awt.Color;
|
||
|
import java.awt.Container;
|
||
|
import java.awt.Dimension;
|
||
|
import java.awt.GridBagConstraints;
|
||
|
import java.awt.GridBagLayout;
|
||
|
import java.awt.Insets;
|
||
|
import java.awt.Panel;
|
||
|
import java.awt.event.ActionEvent;
|
||
|
import java.util.Locale;
|
||
|
import java.util.ResourceBundle;
|
||
|
|
||
|
import com.sun.java.swing.AbstractAction;
|
||
|
import com.sun.java.swing.Box;
|
||
|
import com.sun.java.swing.JButton;
|
||
|
import com.sun.java.swing.JFrame;
|
||
|
import com.sun.java.swing.JLabel;
|
||
|
import com.sun.java.swing.JProgressBar;
|
||
|
import com.sun.java.swing.UIManager;
|
||
|
|
||
|
public abstract class ProgressFrame extends GeneralFrame implements Runnable {
|
||
|
int fMax;
|
||
|
JProgressBar fMeter;
|
||
|
JButton fCancel;
|
||
|
JLabel fStatus;
|
||
|
Thread fThread;
|
||
|
boolean fDone;
|
||
|
boolean fCanceled;
|
||
|
boolean fDisposed;
|
||
|
Container fContentPanel;
|
||
|
|
||
|
public ProgressFrame(String aCaption) {
|
||
|
super("", "mail.progress");
|
||
|
|
||
|
setTitle(fLabels.getString(aCaption));
|
||
|
setBackground(UIManager.getColor("control"));
|
||
|
|
||
|
fContentPanel = new Panel();
|
||
|
getContentPane().add(fContentPanel);
|
||
|
|
||
|
GridBagLayout gridbag = new GridBagLayout();
|
||
|
GridBagConstraints c = new GridBagConstraints();
|
||
|
|
||
|
fContentPanel.setLayout(gridbag);
|
||
|
|
||
|
fStatus = new JLabel("Status");
|
||
|
fMeter = new JProgressBar();
|
||
|
fMeter.setMinimum(0);
|
||
|
fMeter.setMaximum(1);
|
||
|
fMeter.setValue(0);
|
||
|
fCancel = new JButton("Cancel");
|
||
|
fCancel.addActionListener(new AbstractAction() {
|
||
|
public void actionPerformed(ActionEvent aEvent) {
|
||
|
setCanceled(true);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
c.weightx = 1;
|
||
|
c.weighty = 1;
|
||
|
c.gridheight = 1;
|
||
|
|
||
|
c.fill = GridBagConstraints.HORIZONTAL;
|
||
|
c.gridwidth = GridBagConstraints.REMAINDER;
|
||
|
c.insets = new Insets(5,5,5,5);
|
||
|
gridbag.setConstraints(fStatus, c);
|
||
|
fContentPanel.add(fStatus);
|
||
|
|
||
|
c.fill = GridBagConstraints.HORIZONTAL;
|
||
|
c.gridwidth = GridBagConstraints.REMAINDER;
|
||
|
c.insets = new Insets(0,5,0,5);
|
||
|
gridbag.setConstraints(fMeter, c);
|
||
|
fContentPanel.add(fMeter);
|
||
|
|
||
|
c.fill = GridBagConstraints.NONE;
|
||
|
c.gridwidth = 1;
|
||
|
c.insets = new Insets(5,5,5,5);
|
||
|
gridbag.setConstraints(fCancel, c);
|
||
|
fContentPanel.add(fCancel);
|
||
|
|
||
|
// Dimension size = getPreferredSize();
|
||
|
restoreBounds(320, 200);
|
||
|
setVisible(true);
|
||
|
}
|
||
|
|
||
|
public synchronized void dispose() {
|
||
|
if (!fDisposed) {
|
||
|
super.dispose();
|
||
|
|
||
|
fDisposed = true;
|
||
|
|
||
|
setCanceled(true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public synchronized void setMax(int aMax) {
|
||
|
fMax = aMax;
|
||
|
fMeter.setMaximum(aMax);
|
||
|
}
|
||
|
|
||
|
public synchronized int getMax() {
|
||
|
return fMax;
|
||
|
}
|
||
|
|
||
|
public synchronized void setProgress(int aProgress) {
|
||
|
fMeter.setValue(aProgress);
|
||
|
}
|
||
|
|
||
|
public synchronized int getProgress() {
|
||
|
return fMeter.getValue();
|
||
|
}
|
||
|
|
||
|
public synchronized void setStatus(String aStatus) {
|
||
|
fStatus.setText(aStatus);
|
||
|
}
|
||
|
|
||
|
public synchronized String getStatus() {
|
||
|
return fStatus.getText();
|
||
|
}
|
||
|
|
||
|
public synchronized void setDone(boolean aDone) {
|
||
|
fDone = aDone;
|
||
|
}
|
||
|
|
||
|
public synchronized boolean getDone() {
|
||
|
return fDone;
|
||
|
}
|
||
|
|
||
|
public synchronized void setCanceled(boolean aCanceled) {
|
||
|
fCanceled = aCanceled;
|
||
|
}
|
||
|
|
||
|
public synchronized boolean isCanceled() {
|
||
|
return fCanceled;
|
||
|
}
|
||
|
|
||
|
public void start() {
|
||
|
fThread = new Thread(this);
|
||
|
fThread.start();
|
||
|
}
|
||
|
|
||
|
public void run() {
|
||
|
progressLoop();
|
||
|
|
||
|
fThread = null;
|
||
|
this.dispose();
|
||
|
}
|
||
|
|
||
|
public abstract void progressLoop();
|
||
|
}
|