Files
mars-flaim/xflaim/java/util/XEdit/ProgressBox.java
ahodgkinson d5e0796b0d Added Java utilities.
git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@253 0109f412-320b-0410-ab79-c3e0c5ffbbe6
2006-04-03 15:55:36 +00:00

259 lines
5.7 KiB
Java

//------------------------------------------------------------------------------
// Desc: Progress Box
//
// Tabs: 3
//
// Copyright (c) 2003,2005-2006 Novell, Inc. All Rights Reserved.
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of version 2 of the GNU General Public
// License as published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, contact Novell, Inc.
//
// To contact Novell about this file by physical or electronic mail,
// you may find current contact information at www.novell.com
//
// $Id: ProgressBox.java 3120 2006-01-19 13:41:12 -0700 (Thu, 19 Jan 2006) dsanders $
//------------------------------------------------------------------------------
package xedit;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import xedit.UITools;
/**
* To change the template for this generated type comment go to
* Window->Preferences->Java->Code Generation->Code and Comments
*/
public class ProgressBox extends JDialog implements ActionListener
{
private JLabel m_label1;
private JLabel m_label2;
private JCheckBox m_checkBox;
private JButton m_button;
private JProgressBar m_bar;
private boolean m_bCloseOnExit = false;
private boolean m_bToggled = false;
private boolean m_bCancelPressed = false;
/**
* @throws java.awt.HeadlessException
*/
public ProgressBox(
Frame owner,
int iWidth,
int iHeight,
String label1,
String label2,
int iMin,
int iMax)
{
super();
JPanel p1;
JPanel p2;
JPanel p3;
JPanel p4;
Container CP; // The content pane for this dialog
// Coordinates for location this window in the center of its parent.
Point p;
Dimension d;
int x;
int y;
m_label1 = new JLabel(label1);
m_label2 = new JLabel(label2);
setDefaultCloseOperation( DISPOSE_ON_CLOSE);
CP = getContentPane();
CP.setLayout( new GridLayout( 4, 1));
p1 = new JPanel();
p1.add(m_label1);
CP.add(p1);
p2 = new JPanel();
p2.add(m_label2);
CP.add(p2);
m_bar = new JProgressBar(iMin, iMax);
m_bar.setStringPainted(true);
if (iMax == 0)
{
m_bar.setIndeterminate(true);
}
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
UITools.buildConstraints(gbc, 0, 0, 0, 0, 100, 100);
gbc.fill = GridBagConstraints.BOTH;
gbl.setConstraints(m_bar, gbc);
p3 = new JPanel();
p3.setLayout(gbl);
p3.add(m_bar);
CP.add(p3);
p4 = new JPanel();
GridBagLayout grid = new GridBagLayout();
p4.setLayout(grid);
m_checkBox = new JCheckBox();
m_checkBox.setEnabled(true);
m_checkBox.addActionListener(this);
UITools.buildConstraints(gbc, 0, 0, 1, 1, 10, 100);
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.NONE;
grid.setConstraints(m_checkBox, gbc);
p4.add(m_checkBox);
JLabel lbl1 = new JLabel("Close when finished");
UITools.buildConstraints(gbc, 1, 0, 1, 2, 60, 0);
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.NONE;
grid.setConstraints(lbl1, gbc);
p4.add(lbl1);
m_button = new JButton("Cancel");
m_button.addActionListener(this);
UITools.buildConstraints(gbc, 2, 0, 1, 1, 30, 0);
gbc.anchor = GridBagConstraints.EAST;
gbc.fill = GridBagConstraints.NONE;
grid.setConstraints(m_button, gbc);
p4.add(m_button);
CP.add(p4);
setSize(iWidth,iHeight);
if (owner != null)
{
p = owner.getLocationOnScreen();
d = owner.getSize();
x = (d.width - iWidth) / 2;
y = (d.height - iHeight) / 2;
setLocation(Math.max(0, p.x + x), Math.max(0, p.y + y));
}
setVisible(true);
}
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e)
{
Object obj = e.getSource();
if (obj == m_checkBox)
{
m_bCloseOnExit = !m_bCloseOnExit;
}
else if (obj == m_button)
{
if (m_button.getText().equals("Cancel"))
{
m_bCancelPressed = true;
}
else
{
dispose();
}
}
}
public void setLabel1( String newLabel1)
{
m_label1.setText( newLabel1);
}
public void setLabel2( String newLabel2)
{
m_label2.setText( newLabel2);
}
public void updateProgress( int iValue)
{
m_bar.setValue( iValue);
if (iValue >= m_bar.getMaximum() && m_bar.getMaximum() > 0)
{
if (m_bCloseOnExit)
{
dispose();
}
else
{
toggleOkCancelButton();
}
}
}
public void terminate()
{
dispose();
}
private void toggleOkCancelButton()
{
if (m_bToggled)
{
m_button.setText("Cancel");
m_bToggled = false;
}
else
{
m_button.setText("Okay");
m_bToggled = true;
}
}
public boolean Cancelled()
{
return m_bCancelPressed;
}
public void setMax( int iMax)
{
m_bar.setMaximum( iMax);
}
public static void main(String[] args)
{
ProgressBox b = new ProgressBox(null, 400, 160, "Label 1Label 1Label 1Label 1Label 1Label 1Label 1",
"Label 2Label 2Label 2Label 2Label 2Label 2Label 2",
0, 999);
for (int i = 0; i < 1000; i++)
{
if (i % 100 == 0)
{
b.setLabel1( "Importing file " + i + "of 1000");
}
b.setLabel2("Filename: xxxx" + i + ".xml");
b.updateProgress(i);
if (b.Cancelled())
{
b.terminate();
break;
}
try
{
Thread.sleep(10);
}
catch (Exception e)
{
// Do nothing...
}
}
System.exit(0);
}
}