/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package Sirius.navigator.ui.status;
/**
* *****************************************************************************
*
* Copyright (c) : EIG (Environmental Informatics Group) http://www.htw-saarland.de/eig Prof. Dr. Reiner Guettler Prof.
* Dr. Ralf Denzer
*
* HTWdS Hochschule fuer Technik und Wirtschaft des Saarlandes Goebenstr. 40 66117 Saarbruecken Germany
*
* Programmers : Pascal
*
* Project : WuNDA 2 Filename : Version : 1.0 Purpose : Created : 16.02.2000 History :
*
******************************************************************************
*/
import Sirius.navigator.DefaultNavigatorExceptionHandler;
import Sirius.navigator.resource.*;
import Sirius.navigator.ui.widget.MutableImageLabel;
import org.apache.log4j.Logger;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import de.cismet.tools.gui.downloadmanager.DownloadManagerStatusPanel;
import de.cismet.tools.gui.exceptionnotification.ExceptionNotificationStatusPanel;
/**
* DOCUMENT ME!
*
* @version $Revision$, $Date$
*/
public class MutableStatusBar extends JPanel {
//~ Static fields/initializers ---------------------------------------------
protected static final Logger logger = Logger.getLogger(MutableStatusBar.class);
private static final ResourceManager resource = ResourceManager.getManager();
//~ Instance fields --------------------------------------------------------
private JLabel status_1;
private JLabel status_2;
private JLabel status_3;
private MutableImageLabel greenStatusIcon;
private MutableImageLabel redStatusIcon;
//~ Constructors -----------------------------------------------------------
/**
* Creates a new MutableStatusBar object.
*/
public MutableStatusBar() {
super();
status_1 = new JLabel(""); // NOI18N
status_2 = new JLabel(""); // NOI18N
status_3 = new JLabel(""); // NOI18N
this.init();
}
//~ Methods ----------------------------------------------------------------
/**
* public MutableStatusBar(String s1, String s2, String s3) { super(); status_1 = new JLabel(s1); status_2 = new
* JLabel(s2); status_3 = new JLabel(s3); this.init(); }.
*/
protected void init() {
this.setLayout(new GridBagLayout());
this.setBorder(BorderFactory.createEmptyBorder(3, 2, 1, 1));
final GridBagConstraints constraints = new GridBagConstraints();
// status_1.setHorizontalAlignment(JLabel.CENTER);
status_1.setBorder(new CompoundBorder(
new SoftBevelBorder(SoftBevelBorder.LOWERED),
new EmptyBorder(0, 2, 0, 2)));
status_1.setPreferredSize(new Dimension(180, 16));
status_2.setBorder(new CompoundBorder(
new SoftBevelBorder(SoftBevelBorder.LOWERED),
new EmptyBorder(0, 2, 0, 2)));
status_2.setPreferredSize(new Dimension(200, 16));
status_3.setBorder(new CompoundBorder(
new SoftBevelBorder(SoftBevelBorder.LOWERED),
new EmptyBorder(0, 2, 0, 2)));
status_3.setPreferredSize(new Dimension(300, 16));
final DownloadManagerStatusPanel downloadStatusPanel = new DownloadManagerStatusPanel();
downloadStatusPanel.setBorder(new CompoundBorder(
new SoftBevelBorder(SoftBevelBorder.LOWERED),
new EmptyBorder(0, 2, 0, 2)));
final ExceptionNotificationStatusPanel notificationStatusPanel = new ExceptionNotificationStatusPanel();
DefaultNavigatorExceptionHandler.getInstance().addListener(notificationStatusPanel);
greenStatusIcon = new MutableImageLabel(
resource.getIcon("green_off.gif"),
resource.getIcon("green_on.gif"));
greenStatusIcon.setBorder(new EmptyBorder(2, 2, 2, 1));
redStatusIcon = new MutableImageLabel(
resource.getIcon("red_off.gif"),
resource.getIcon("red_on.gif"));
redStatusIcon.setBorder(new EmptyBorder(2, 1, 2, 3));
// =====================================================================
constraints.insets = new Insets(0, 0, 0, 4);
constraints.anchor = GridBagConstraints.EAST;
constraints.fill = GridBagConstraints.VERTICAL;
constraints.weightx = 1.0;
constraints.weighty = 1.0;
constraints.gridx = 0;
constraints.gridy = 0;
constraints.gridwidth = 1;
constraints.gridheight = 1;
this.add(status_1, constraints);
constraints.weightx = 0.0;
constraints.gridx++;
this.add(status_2, constraints);
constraints.gridx = 2;
this.add(status_3, constraints);
constraints.gridx++;
this.add(downloadStatusPanel, constraints);
constraints.gridx++;
this.add(notificationStatusPanel, constraints);
constraints.insets = new Insets(0, 0, 0, 0);
// constraints.gridx++;
// if (greenStatusIcon != null) {
// this.add(greenStatusIcon, constraints);
// }
// constraints.gridx++;
// if (redStatusIcon != null) {
// this.add(redStatusIcon, constraints);
// }
}
/**
* DOCUMENT ME!
*
* @param statusMessage DOCUMENT ME!
* @param messagePosition DOCUMENT ME!
*/
public void setStatusMessage(final String statusMessage, final int messagePosition) {
// if(logger.isDebugEnabled())logger.debug("setStatusMessage: '" + statusMessage + "' @position: '" +
// messagePosition + "'");
switch (messagePosition) {
case Status.MESSAGE_IGNORE: {
break;
}
case Status.MESSAGE_POSITION_1: {
status_1.setText(statusMessage);
break;
}
case Status.MESSAGE_POSITION_2: {
status_2.setText(statusMessage);
break;
}
case Status.MESSAGE_POSITION_3: {
status_3.setText(statusMessage);
break;
}
}
}
/**
* DOCUMENT ME!
*
* @param greenIconStatus DOCUMENT ME!
*/
public void setGreenIconStatus(final int greenIconStatus) {
// if(logger.isDebugEnabled())logger.debug("setGreenIconStatus: '" + greenIconStatus + "'");
switch (greenIconStatus) {
case Status.ICON_IGNORE: {
break;
}
case Status.ICON_ACTIVATED: {
greenStatusIcon.switchOn(true);
break;
}
case Status.ICON_DEACTIVATED: {
greenStatusIcon.switchOff(true);
break;
}
case Status.ICON_BLINKING: {
greenStatusIcon.blink(500);
break;
}
default: {
greenStatusIcon.switchOff(true);
}
}
}
/**
* DOCUMENT ME!
*
* @param redIconStatus DOCUMENT ME!
*/
public void setRedIconStatus(final int redIconStatus) {
// if(logger.isDebugEnabled())logger.debug("setRedIconStatus: '" + redIconStatus + "'");
switch (redIconStatus) {
case Status.ICON_IGNORE: {
break;
}
case Status.ICON_ACTIVATED: {
redStatusIcon.switchOn(true);
break;
}
case Status.ICON_DEACTIVATED: {
redStatusIcon.switchOff(true);
break;
}
case Status.ICON_BLINKING: {
redStatusIcon.blink(500);
break;
}
default: {
redStatusIcon.switchOn(true);
}
}
}
/**
* DOCUMENT ME!
*
* @param status DOCUMENT ME!
*/
public void setStatus(final Status status) {
this.setStatusMessage(status.getStatusMessage(), status.getMessagePosition());
this.setRedIconStatus(status.getRedIconState());
this.setGreenIconStatus(status.getGreenIconState());
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public boolean isGreenStatusIconBlinking() {
return greenStatusIcon.isBlinking();
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public boolean isRedStatusIconBlinking() {
return redStatusIcon.isBlinking();
}
}