blob: 25fafe2c7c3ebcf20431952cbdfd7e8ed68e42bb [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class StatusWindow extends JFrame
{
private JProgressBar progressBar = null;
private JTextField statusLabel = null;
private JButton cancelButton = null;
private JFrame statusWindow = null;
private PostNewsgroup mainWindow = null;
private final int MAXPROGRESS = 13;
private final int MINPROGRESS = 0;
public StatusWindow( PostNewsgroup mw, String title, int parentX, int parentY )
{
this.setTitle( title );
this.setLocation( parentX + 100, parentY + 100 );
statusWindow = this;
mainWindow = mw;
mainWindow.enableButtons( false );
statusWindow.addWindowListener( new WindowAdapter()
{
public void windowClosing( WindowEvent event ) {
mainWindow.enableButtons( true );
}
});
progressBar = new JProgressBar();
progressBar.setStringPainted( true );
progressBar.setMaximum( MAXPROGRESS );
progressBar.setMinimum( MINPROGRESS );
progressBar.setSize( 30, 400 );
JLabel progLabel = new JLabel( "Progress:" );
JPanel progressPanel = new JPanel();
progressPanel.setLayout( new BorderLayout( 10, 0 ) );
progressPanel.add( progLabel, "West" );
progressPanel.add( progressBar, "East" );
statusLabel = new JTextField();
statusLabel.setColumns( 25 );
statusLabel.setEditable( false );
statusLabel.setBorder( null );
//statusLabel.setBorder( LineBorder.createGrayLineBorder() );
JPanel statusPanel = new JPanel();
//statusPanel.setBorder( LineBorder.createBlackLineBorder() );
statusPanel.setLayout( new BorderLayout() );
statusPanel.add( statusLabel, "West" );
cancelButton = new JButton( "Cancel" );
cancelButton.setSize( 30, 100 );
cancelButton.setEnabled( false );
cancelButton.addActionListener( new ActionListener()
{
public void actionPerformed( ActionEvent event ) {
// cancelling actions
mainWindow.enableButtons( true );
statusWindow.dispose();
}
});
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout( new BorderLayout( 0, 5 ) );
buttonPanel.add( cancelButton, "East" );
buttonPanel.add( new JSeparator( SwingConstants.HORIZONTAL ), "North" );
Container container = getContentPane();
container.setLayout( new GridBagLayout() );
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
constraints.gridx = 0;
constraints.gridy = 0;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.insets = new Insets( 15, 15, 10, 15 );
container.add( progressPanel, constraints );
constraints.gridx = 0;
constraints.gridy = 1;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.insets = new Insets( 10, 15, 10, 15 );
container.add( statusPanel, constraints );
constraints.gridx = 0;
constraints.gridy = 2;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.insets = new Insets( 10, 15, 5, 15 );
container.add( buttonPanel, constraints );
this.pack();
this.setResizable( false );
//this.setVisible( true );
}
public void setStatus( int progress, String status )
{
progressBar.setValue( progress );
statusLabel.setText( status );
statusLabel.setToolTipText( status );
if( progress == MAXPROGRESS )
{
cancelButton.setEnabled( true );
cancelButton.setText( "Close" );
}
update( getGraphics() );
mainWindow.update( mainWindow.getGraphics() );
}
public void enableCancelButton( boolean enable )
{
if( enable )
{
cancelButton.setEnabled( true );
cancelButton.setText( "Finish" );
}
else
{
cancelButton.setEnabled( false );
cancelButton.setText( "Cancel" );
}
}
}