|
What this is
Other links
The source code
/*
* DeployProgressMonitor.java
*
* Created on December 17, 2002, 10:38 AM
*/
package org.netbeans.modules.j2ee.deployment.impl.ui;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JCheckBox;
import javax.swing.SwingUtilities;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.text.MessageFormat;
import org.openide.util.NbBundle;
import org.openide.NotifyDescriptor;
import org.openide.DialogDisplayer;
import org.openide.ErrorManager;
import javax.enterprise.deploy.spi.status.ProgressObject;
import javax.enterprise.deploy.spi.status.ProgressListener;
import javax.enterprise.deploy.spi.status.DeploymentStatus;
import javax.enterprise.deploy.spi.status.ProgressEvent;
import javax.enterprise.deploy.shared.StateType;
import javax.enterprise.deploy.shared.CommandType;
import javax.enterprise.deploy.spi.exceptions.OperationUnsupportedException;
import org.netbeans.modules.j2ee.deployment.plugins.api.ServerProgress;
import org.netbeans.modules.j2ee.deployment.impl.ServerInstance;
import java.util.Vector;
import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;
/**
*
* @author Jeri Lockhart
*/
public class ServerStatusBar implements DeployProgressUI, ProgressListener {
private ServerInstance instance;
private ProgressUI progUI = null;
private ProgressObject progObj = null;
private DeploymentStatus status = null;
private int max = 0;
private CommandType currCommand = null;
private int workCompleted = 0;
private int progressRate = 1;
private static boolean debugMode = false;
private boolean stateChanging = false;
private JPanel buttonPanel;
private JButton startCommandBtn;
private JButton startDebugCommandBtn;
private JButton stopCommandBtn;
private JButton closeCommandBtn;
private JCheckBox debugModeCheck;
private GridBagConstraints gridBagConstraints;
private int progressEventCount = 0;
private Vector cancelHandlers = new Vector();
public ServerStatusBar(String title) {
progUI = new ProgressUI(false);
progUI.setTitle(title);
}
public ServerStatusBar(ServerInstance instance) {
this(NbBundle.getMessage(ServerStatusBar.class, "LBL_ServerStatus", instance.getDisplayName()));
this.instance = instance;
addButtonPanel();
}
public void startProgressUI(ProgressObject obj, int max) throws NullPointerException {
setProgressObject(obj);
startProgressUI(max);
}
public void startProgressUI(int max) {
this.max = max;
String msg = NbBundle.getMessage(ServerStatusBar.class, "MSG_CheckingStatus");
progUI.startTask("", max); //NOI18N
progUI.addMessage(msg);
setCommandControlButtons();
}
public boolean setProgressObject(ProgressObject obj) {
if (obj == null) {
if (progObj != null) {
progObj.removeProgressListener(this);
progObj = null;
}
return false;
}
//unregister with previous PO
if (progObj != null)
progObj.removeProgressListener(this);
progObj = obj;
progObj.addProgressListener(this);
progUI.addError(""); //NOI18N
return true;
}
public void handleProgressEvent(ProgressEvent progressEvent) {
status = progressEvent.getDeploymentStatus();
StateType state = status.getState();
progUI.addError("");
if (state == StateType.COMPLETED) {
progUI.addMessage(status.getMessage());
progUI.recordWork(max);
stateChanging = false;
setCommandControlButtons();
}
else if (state == StateType.FAILED) {
progUI.addError(status.getMessage());
stateChanging = false;
setCommandControlButtons();
}
else if (state == StateType.RUNNING) {
progUI.addMessage(status.getMessage());
// If too high, keep it at "almost done" //NOI18N
workCompleted += progressRate;
if (workCompleted > max-1) {
workCompleted = max-1;
}
progUI.recordWork(workCompleted);
}
else if (state == StateType.RELEASED) {
progUI.addMessage(status.getMessage());
}
}
private void addButtonPanel() {
//Runnable r = new Runnable() {
// public void run() {
buttonPanel = new JPanel();
buttonPanel.getAccessibleContext().setAccessibleName(NbBundle.getMessage(ServerStatusBar.class, "LBL_Stop_and_Cancel_Button_Panel"));
buttonPanel.setLayout(new GridBagLayout());
//PENDING: is debugModeCheck desirable??? If so need change semantics of StartServer.startDebugging
if (false && instance.getStartServer().isAlsoTargetServer(null)) {
debugModeCheck = new JCheckBox();
debugModeCheck.setText(NbBundle.getMessage(ServerStatusBar.class, "LBL_DebugMode"));
debugModeCheck.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
debugModeCheckActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 24, 12, 24);
buttonPanel.add(debugModeCheck, gridBagConstraints);
}
startCommandBtn = new JButton();
startCommandBtn.setText(NbBundle.getMessage(ServerStatusBar.class, "LBL_StartServer"));
startCommandBtn.setMnemonic(NbBundle.getMessage(ServerStatusBar.class, "LBL_Start_Mnemonic").charAt(0));
startCommandBtn.setToolTipText(NbBundle.getMessage(ServerStatusBar.class, "MSG_Start_Command_Tip"));
startCommandBtn.setEnabled(false);
startCommandBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
startCommandBtnActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
buttonPanel.add(startCommandBtn, gridBagConstraints);
startDebugCommandBtn = new JButton();
startDebugCommandBtn.setText(NbBundle.getMessage(ServerStatusBar.class, "LBL_StartDebugServer"));
startDebugCommandBtn.setMnemonic(NbBundle.getMessage(ServerStatusBar.class, "LBL_StartDebug_Mnemonic").charAt(0));
startDebugCommandBtn.setToolTipText(NbBundle.getMessage(ServerStatusBar.class, "MSG_StartDebug_Command_Tip"));
startDebugCommandBtn.setEnabled(false);
startDebugCommandBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
startDebugCommandBtnActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
buttonPanel.add(startDebugCommandBtn, gridBagConstraints);
stopCommandBtn = new JButton();
stopCommandBtn.setText(NbBundle.getMessage(ServerStatusBar.class, "LBL_StopServer"));
stopCommandBtn.setMnemonic(NbBundle.getMessage(ServerStatusBar.class, "LBL_Stop_Mnemonic").charAt(0));
stopCommandBtn.setToolTipText(NbBundle.getMessage(ServerStatusBar.class, "MSG_Stop_Command_Tip_Generic"));
stopCommandBtn.setEnabled(false);
stopCommandBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
stopCommandBtnActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
buttonPanel.add(stopCommandBtn, gridBagConstraints);
closeCommandBtn = new JButton();
closeCommandBtn.setText(NbBundle.getMessage(ServerStatusBar.class, "LBL_Close"));
closeCommandBtn.setMnemonic(NbBundle.getMessage(ServerStatusBar.class, "LBL_Close_Mnemonic").charAt(0));
closeCommandBtn.setToolTipText(NbBundle.getMessage(ServerStatusBar.class, "MSG_Close_Command_Tip"));
closeCommandBtn.setEnabled(false);
closeCommandBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
closeCommandBtnActionPerformed(evt);
}
});
buttonPanel.add(closeCommandBtn, gridBagConstraints);
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.insets = new java.awt.Insets(0, 24, 12, 24);
progUI.add(buttonPanel, gridBagConstraints);
// }
//};
//SwingUtilities.invokeLater(r);
}
private static String TXT_STATE_RUNNING;
private static String TXT_STATE_STOPPED;
private String getStateText(boolean running) {
if (TXT_STATE_RUNNING == null) {
TXT_STATE_RUNNING = NbBundle.getMessage(ServerStatusBar.class, "MSG_ServerRunning");
TXT_STATE_STOPPED = NbBundle.getMessage(ServerStatusBar.class, "MSG_ServerStopped");
}
return (running ? TXT_STATE_RUNNING : TXT_STATE_STOPPED);
}
private void setCommandControlButtons() {
if (buttonPanel != null) {
//SwingUtilities.invokeLater(new Runnable() {
// public void run() {
if (stateChanging) {
startCommandBtn.setEnabled(false);
startDebugCommandBtn.setEnabled(false);
stopCommandBtn.setEnabled(false);
closeCommandBtn.setEnabled(false);
return;
}
boolean isRunning = instance.isRunning();
//boolean isDebuggable = instance.isDebuggable();
progUI.addMessage(getStateText(isRunning));
/*if (debugModeCheck != null) {
debugModeCheck.setEnabled(!isRunning);
debugModeCheck.setSelected(instance.isDebuggable());
}*/
closeCommandBtn.setEnabled(!stateChanging);
if (instance.canStartServer()) {
startCommandBtn.setEnabled(!isRunning);
startDebugCommandBtn.setEnabled(!isRunning);
stopCommandBtn.setEnabled(isRunning);
} else {
startCommandBtn.setEnabled(false);
startDebugCommandBtn.setEnabled(false);
stopCommandBtn.setEnabled(false);
String msg = NbBundle.getMessage(ServerInstance.class, "MSG_StartingThisServerNotSupported", instance.getDisplayName());
this.addError(msg, false);
}
// }
//});
}
}
private void closeCommandBtnActionPerformed(java.awt.event.ActionEvent evt) {
progUI.finished(false);
}
private void debugModeCheckActionPerformed(java.awt.event.ActionEvent evt) {
debugMode = debugModeCheck.isSelected();
}
private void stopCommandBtnActionPerformed(java.awt.event.ActionEvent evt) {
String msg = NbBundle.getMessage(ServerStatusBar.class, "LBL_StopServer", instance.getDisplayName());
workCompleted = 0;
recordWork(0);
addError("", false); // NOI18N
progUI.addMessage(msg);
org.openide.util.RequestProcessor.getDefault().post(new Runnable() {
public void run() {
instance.stop(ServerStatusBar.this);
}
});
stateChanging = true;
setCommandControlButtons();
}
private void startCommandBtnActionPerformed(java.awt.event.ActionEvent evt) {
String msg = NbBundle.getMessage(ServerStatusBar.class, "LBL_StartServer", instance.getDisplayName());
workCompleted = 0;
recordWork(0);
addError("", false); // NOI18N
progUI.addMessage(msg);
org.openide.util.RequestProcessor.getDefault().post(new Runnable() {
public void run() {
instance.start(ServerStatusBar.this);
}
});
stateChanging = true;
setCommandControlButtons();
}
private void startDebugCommandBtnActionPerformed(java.awt.event.ActionEvent evt) {
String msg = NbBundle.getMessage(ServerStatusBar.class, "LBL_StartDebugServer", instance.getDisplayName());
progUI.addMessage(msg);
org.openide.util.RequestProcessor.getDefault().post(new Runnable() {
public void run() {
instance.startDebugTarget(null, ServerStatusBar.this);
}
});
stateChanging = true;
setCommandControlButtons();
}
public void addMessage(String message) {
progUI.addMessage(message);
}
public void addError(String errorMessage) {
addError(errorMessage, true);
}
public void addError(String errorMessage, boolean refreshButtons) {
progUI.addError(errorMessage);
stateChanging = false;
if (refreshButtons)
setCommandControlButtons();
}
public void recordWork(int work) {
progUI.recordWork(work);
if (work >= max)
progUI.finished();
}
public boolean checkCancelled() {
return progUI.checkCancelled();
}
public void addCancelHandler(CancelHandler handler) {
cancelHandlers.add(handler);
}
public void removeCancelHandler(CancelHandler handler) {
cancelHandlers.remove(handler);
}
private static Map commandTexts = null;
private static String _getCommandText(CommandType command){
if (commandTexts == null) {
commandTexts = new HashMap();
commandTexts.put(CommandType.START, NbBundle.getMessage(DeployProgressMonitor.class, "LBL_StartServer"));
commandTexts.put(CommandType.STOP, NbBundle.getMessage(DeployProgressMonitor.class, "LBL_StopServer"));
commandTexts.put(ServerProgress.START_SERVER, NbBundle.getMessage(DeployProgressMonitor.class, "LBL_StartServer"));
commandTexts.put(ServerProgress.STOP_SERVER, NbBundle.getMessage(DeployProgressMonitor.class, "LBL_StopServer"));
}
String ret = (String) commandTexts.get(command);
if (ret == null) ret = ""; //NOI18N
return ret;
}
private String getCommandText() {
return getCommandText(currCommand);
}
private String getCommandText(CommandType command) {
if (command == null) {
return NbBundle.getMessage(DeployProgressMonitor.class, "LBL_Unknown_Command");
} else
return _getCommandText(command);
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.