package org.openswing.swing.miscellaneous.client; import java.awt.*; import java.awt.event.*; import javax.swing.*; import org.openswing.swing.mdi.client.*; import org.openswing.swing.util.client.*; /** * <p>Title: OpenSwing Framework</p> * <p>Description: Dialog used to show a progress bar and messages related to progress state.</p> * <p>Copyright: Copyright (C) 2006 Mauro Carniel</p> * * <p> This file is part of OpenSwing Framework. * This library is free software; you can redistribute it and/or * modify it under the terms of the (LGPL) Lesser General Public * License as published by the Free Software Foundation; * * GNU LESSER GENERAL PUBLIC LICENSE * Version 2.1, February 1999 * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * The author may be contacted at: * maurocarniel@tin.it</p> * * @author Mauro Carniel * @version 1.0 */ public class ProgressDialog extends JDialog { BorderLayout borderLayout1 = new BorderLayout(); ProgressPanel progressPanel = null; /** * Constructor that shows this window inside the MDI Frame. * @param title window title; this text will be automatically translate, according to ClientSettings content * @param mainTitle main title (showed in BOLD style); this text will be automatically translate, according to ClientSettings content * @param mainMessage main message; this text will be automatically translate, according to ClientSettings content * @param messageLabels list of label texts to set above the progress bar; this text will be automatically translate, according to ClientSettings content * @param minValue minimum value allowed in the progress bar * @param maxValue maximum value allowed in the progress bar * @param modal flag used to set the window as modal * @param boolean showCancelButton flag that indicates if the cancel button must be showed */ public ProgressDialog(String title,String mainTitle,String mainMessage,String[] messageLabels,double minValue,double maxValue,boolean modal,boolean showCancelButton) { this(MDIFrame.getInstance(),title,mainTitle,mainMessage,messageLabels,minValue,maxValue,modal,showCancelButton); } /** * Constructor that can be used with any JFrame. * @param title window title; this text will be automatically translate, according to ClientSettings content * @param mainTitle main title (showed in BOLD style); this text will be automatically translate, according to ClientSettings content * @param mainMessage main message; this text will be automatically translate, according to ClientSettings content * @param messageLabels list of label texts to set above the progress bar; this text will be automatically translate, according to ClientSettings content * @param minValue minimum value allowed in the progress bar * @param maxValue maximum value allowed in the progress bar * @param modal flag used to set the window as modal * @param boolean showCancelButton flag that indicates if the cancel button must be showed */ public ProgressDialog(JFrame parentFrame,String title,String mainTitle,String mainMessage,String[] messageLabels,double minValue,double maxValue,boolean modal,boolean showCancelButton) { super(parentFrame,ClientSettings.getInstance().getResources().getResource(title), modal); try { progressPanel = new ProgressPanel(mainTitle,mainMessage,messageLabels,minValue,maxValue,showCancelButton); progressPanel.addCancelButtonListener(new ProgressDialog_buttonCancel_actionAdapter(this)); jbInit(); // set window dimension... setSize(500,80+(int)progressPanel.getPreferredSize().getHeight()); ClientUtils.centerDialog(parentFrame,this); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.getContentPane().setLayout(borderLayout1); this.getContentPane().add(progressPanel, BorderLayout.CENTER); } void buttonCancel_actionPerformed(ActionEvent e) { setVisible(false); this.dispose(); } /** * Notify an event that will update the progress bar and the other window content. * @param event progress event */ public final void processProgressEvent(ProgressEvent event) { progressPanel.processProgressEvent(event); if (event.getProgressValue()>=progressPanel.getMaximumValue()) buttonCancel_actionPerformed(null); } /** * Add an action listener to the cancel button. * @param listener listener to add */ public final void addCancelButtonListener(ActionListener listener) { progressPanel.addCancelButtonListener(listener); } /** * Remove the specified action listener to the cancel button. * @param listener listener to remove */ public final void removeCancelButtonListener(ActionListener listener) { progressPanel.removeCancelButtonListener(listener); } /** * Set the minimum value allowed in the progress bar. * @param minValue minimum value allowed in the progress bar */ public final void setMinimumValue(double minValue) { progressPanel.setMinimumValue(minValue); } /** * Set the maximum value allowed in the progress bar. * @param maxValue maximum value allowed in the progress bar */ public final void setMaximumValue(double maxValue) { progressPanel.setMaximumValue(maxValue); } /** * @return inimum value allowed in the progress bar */ public final double getMinimumValue() { return progressPanel.getMinimumValue(); } /** * @return maximum value allowed in the progress bar */ public final double getMaximumValue() { return progressPanel.getMaximumValue(); } /** * Set the progress bar color. * @param color progress bar color */ public final void setProgressBarColor(Color color) { progressPanel.setProgressBarColor(color); } /** * @return progress bar color */ public final Color getProgressBarColor() { return progressPanel.getProgressBarColor(); } /** * Set an image panel a the left of the main title. * @param imageName image name that identifies the image to show; the image must be located in "images" sub-folder */ public final void setImageName(String imageName) { progressPanel.setImageName(imageName); } /** * @return imageName image name that identifies the image to show; the image must be located in "images" sub-folder */ public final String getImageName() { return progressPanel.getImageName(); } /** * Add an interval [minValue,maxValue] and a color to use to paint that interval. * @param minValue minimum value of this interval * @param maxValue maximum value of this interval * @param color color to use to paint this band * @return <code>true</code> if the specified interval does not match any other interval, <code>false</code> otherwise */ public final boolean addColoredBand(double minValue,double maxValue,Color color) { return progressPanel.addColoredBand(minValue,maxValue,color); } /** * @return flag used to determine how color the progress bar: <code>true</code> to paint the bar with many colors, each band with its color, <code>false</code> to paint the bar with ony one color: the color related to the last matched band */ public final boolean isShowAllBands() { return progressPanel.isShowAllBands(); } /** * Determine how color the progress bar: <code>true</code> to paint the bar with many colors, each band with its color, <code>false</code> to paint the bar with ony one color: the color related to the last matched band. * @param showAllBands flag used to determine how color the progress bar: <code>true</code> to paint the bar with many colors, each band with its color, <code>false</code> to paint the bar with ony one color: the color related to the last matched band */ public final void setShowAllBands(boolean showAllBands) { progressPanel.setShowAllBands(showAllBands); } } class ProgressDialog_buttonCancel_actionAdapter implements java.awt.event.ActionListener { ProgressDialog adaptee; ProgressDialog_buttonCancel_actionAdapter(ProgressDialog adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.buttonCancel_actionPerformed(e); } }