/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
package org.libreoffice.example.java_scripts;
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);
JPanel statusPanel =
new JPanel();
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);
}
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");
}
}
}