/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.gui.operation;
import java.awt.Dimension;
import javax.swing.JDesktopPane;
/**
* Cette classe g�re l'affichage et la fermeture de la fen�tre d'attente.
*
* @version $Revision: 1.3 $
*
*
*/
public class WaitingWindowManager {
private WaitingWindow waitingWindow;
private JDesktopPane gexPane;
private String waitingMessage;
private int numberOfOper;
/**
* Constructeur.
*
* @param dp Le desktopPane.
* @param waitingMessage Le message � afficher dans la fen�tre d'attente.
* @param nbOper Le nombre d'op�ration lanc�es en parall�le.
*
* @throws IllegalArgumentException TODO
*/
public WaitingWindowManager(JDesktopPane dp, String waitingMessage, int nbOper) {
if (dp == null) {
throw new IllegalArgumentException();
}
gexPane = dp;
this.waitingMessage = waitingMessage;
numberOfOper = nbOper;
}
/**
* Affiche la fen�tre d'attente
*/
public void showWaitingWindow() {
waitingWindow = new WaitingWindow(waitingMessage);
gexPane.add(waitingWindow);
Dimension desktopSize = gexPane.getSize();
Dimension frameSize = waitingWindow.getSize();
waitingWindow.setLocation(desktopSize.width - frameSize.width, 0);
waitingWindow.setVisible(true);
try {
waitingWindow.setSelected(true);
}
catch (java.beans.PropertyVetoException ex) {
ex.printStackTrace();
}
}
/**
* Ferme la fen�tre d'attente
*/
public void disposeWaitingWindow() {
if (numberOfOper == 1 && waitingWindow != null) {
try {
waitingWindow.setClosed(true);
waitingWindow.dispose();
waitingWindow = null;
}
catch (java.beans.PropertyVetoException ex) {
ex.printStackTrace();
}
}
else {
numberOfOper--;
}
}
}