1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / dialogs / MessageLine.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/dialogs/MessageLine.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/dialogs/MessageLine.java
new file mode 100644 (file)
index 0000000..dc9ac8d
--- /dev/null
@@ -0,0 +1,87 @@
+package net.sourceforge.phpdt.internal.ui.dialogs;
+
+import net.sourceforge.phpdt.internal.ui.PHPUiImages;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * A message line displaying a status.
+ */
+public class MessageLine extends CLabel {
+
+       private static final RGB ERROR_BACKGROUND_RGB = new RGB(230, 226, 221);
+
+       private Color fNormalMsgAreaBackground;
+
+       private Color fErrorMsgAreaBackground;
+
+       /**
+        * Creates a new message line as a child of the given parent.
+        */
+       public MessageLine(Composite parent) {
+               this(parent, SWT.LEFT);
+       }
+
+       /**
+        * Creates a new message line as a child of the parent and with the given
+        * SWT stylebits.
+        */
+       public MessageLine(Composite parent, int style) {
+               super(parent, style);
+               fNormalMsgAreaBackground = getBackground();
+               fErrorMsgAreaBackground = null;
+       }
+
+       private Image findImage(IStatus status) {
+               if (status.isOK()) {
+                       return null;
+               } else if (status.matches(IStatus.ERROR)) {
+                       return PHPUiImages.get(PHPUiImages.IMG_OBJS_ERROR);
+               } else if (status.matches(IStatus.WARNING)) {
+                       return PHPUiImages.get(PHPUiImages.IMG_OBJS_WARNING);
+               } else if (status.matches(IStatus.INFO)) {
+                       return PHPUiImages.get(PHPUiImages.IMG_OBJS_INFO);
+               }
+               return null;
+       }
+
+       /**
+        * Sets the message and image to the given status. <code>null</code> is a
+        * valid argument and will set the empty text and no image
+        */
+       public void setErrorStatus(IStatus status) {
+               if (status != null) {
+                       String message = status.getMessage();
+                       if (message != null && message.length() > 0) {
+                               setText(message);
+                               setImage(findImage(status));
+                               if (fErrorMsgAreaBackground == null) {
+                                       fErrorMsgAreaBackground = new Color(getDisplay(),
+                                                       ERROR_BACKGROUND_RGB);
+                               }
+                               setBackground(fErrorMsgAreaBackground);
+                               return;
+                       }
+               }
+               setText("");
+               setImage(null);
+               setBackground(fNormalMsgAreaBackground);
+       }
+
+       /*
+        * @see Widget#dispose()
+        */
+       public void dispose() {
+               if (fErrorMsgAreaBackground != null) {
+                       fErrorMsgAreaBackground.dispose();
+                       fErrorMsgAreaBackground = null;
+               }
+               super.dispose();
+       }
+}
\ No newline at end of file