modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
| 64 ++++++----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageCenterView.java
| 18 ++
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
| 1
3 files changed, 58 insertions(+), 25 deletions(-)
New commits:
commit 15099180a4a54d3d973ab8fe16116787e929c33b
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Mar 23 12:36:09 2011 -0400
be able to view details of the current message in the message bar via right-mouse
context menu
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
index 39648a2..f000569 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
@@ -24,14 +24,22 @@ import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.events.DoubleClickEvent;
import com.smartgwt.client.widgets.events.DoubleClickHandler;
+import com.smartgwt.client.widgets.events.RightMouseDownEvent;
+import com.smartgwt.client.widgets.events.RightMouseDownHandler;
+import com.smartgwt.client.widgets.menu.Menu;
+import com.smartgwt.client.widgets.menu.MenuItem;
+import com.smartgwt.client.widgets.menu.events.ClickHandler;
+import com.smartgwt.client.widgets.menu.events.MenuItemClickEvent;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableLabel;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableMenu;
/**
* A bar for displaying a message at the top of a page - the equivalent of the JSF
h:messages component.
- * The message will be displayed for 30 seconds and then will be automatically cleared.
+ * The message will be displayed for 30 seconds and then will be automatically cleared
unless
+ * it is a sticky message.
*
* @author Ian Springer
* @author Jay Shaughnessy
@@ -39,32 +47,42 @@ import
org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableLabel;
public class MessageBar extends LocatableHLayout implements MessageCenter.MessageListener
{
private static final String LOCATOR_ID = "MessageBar";
private static final int AUTO_HIDE_DELAY_MILLIS = 30000;
-
- private LocatableLabel label = new
LocatableLabel(extendLocatorId("Label"));
- private Message stickyMessage;
-
private static final String NON_BREAKING_SPACE = " ";
+ private LocatableLabel label;
+ private Message currentMessage;
+ private Message stickyMessage; // this message will always be shown until dismissed
by user.
+ private Menu showDetailsMenu;
+
public MessageBar() {
super(LOCATOR_ID);
-
setOverflow(Overflow.VISIBLE);
- }
-
- @Override
- protected void onDraw() {
- super.onDraw();
-
setWidth100();
setAlign(Alignment.CENTER);
+ label = new LocatableLabel(extendLocatorId("Label"));
label.setAlign(Alignment.CENTER);
label.setWidth("600px");
label.setHeight("30px");
label.setCanSelectText(true);
+ addMember(label);
+
+ showDetailsMenu = new
LocatableMenu(extendLocatorId("showDetailsMenu"));
+ MenuItem showDetailsMenuItem = new
MenuItem(MSG.view_messageCenter_messageBarShowDetails());
+ showDetailsMenuItem.addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(MenuItemClickEvent event) {
+ MessageCenterView.showDetails(MessageBar.this.currentMessage);
+ }
+ });
+ showDetailsMenu.setItems(showDetailsMenuItem);
+ }
+
+ @Override
+ protected void onDraw() {
+ super.onDraw();
setLabelEmpty();
- addMember(label);
// sometimes it's annoying to have the error message hang around for too
long;
// let the user click the message so it goes away on demand
@@ -75,12 +93,22 @@ public class MessageBar extends LocatableHLayout implements
MessageCenter.Messag
}
});
+ addRightMouseDownHandler(new RightMouseDownHandler() {
+ @Override
+ public void onRightMouseDown(RightMouseDownEvent event) {
+ if (MessageBar.this.currentMessage != null) {
+ showDetailsMenu.showContextMenu();
+ }
+ }
+ });
+
CoreGUI.getMessageCenter().addMessageListener(this);
}
@Override
public void onMessage(Message message) {
if (!message.isBackgroundJobResult()) {
+ this.currentMessage = message;
updateLabel(message);
// Auto-clear the message after some time unless it's been designated as
sticky.
@@ -91,6 +119,7 @@ public class MessageBar extends LocatableHLayout implements
MessageCenter.Messag
@Override
public void run() {
clearMessage(false);
+ // if we had a sticky message before, show it again, now that our
more recent message has gone away
if (stickyMessage != null) {
updateLabel(stickyMessage);
}
@@ -101,9 +130,9 @@ public class MessageBar extends LocatableHLayout implements
MessageCenter.Messag
}
public void clearMessage(boolean clearSticky) {
+ this.currentMessage = null;
setLabelEmpty();
markForRedraw();
-
if (clearSticky) {
this.stickyMessage = null;
}
@@ -123,13 +152,6 @@ public class MessageBar extends LocatableHLayout implements
MessageCenter.Messag
String styleName = (contents != null) ? message.getSeverity().getStyle() : null;
label.setStyleName(styleName);
- // TODO: perhaps just set the text to green/orange/red along with the proper icon
and not have the defined
- // color block...
-
- // TODO: Create some custom edge images in green, yellow, red, etc. so we can add
nice rounded corners to the
- // label.
- //label.setShowEdges(true);
-
String icon = (contents != null) ? message.getSeverity().getIcon() : null;
label.setIcon(icon);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageCenterView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageCenterView.java
index f9ac79c..f861a37 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageCenterView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageCenterView.java
@@ -317,8 +317,18 @@ public class MessageCenterView extends Table implements
MessageCenter.MessageLis
return record;
}
- private void showDetails(Message message) {
- DynamicForm form = new
LocatableDynamicForm(extendLocatorId("Details"));
+ /**
+ * This is a static utility method that is package protected so the message center
view
+ * and the message bar can pop up a dialog showing a message's details.
+ *
+ * @param message the message whose details are to be shown
+ */
+ static void showDetails(Message message) {
+ if (message == null) {
+ return;
+ }
+
+ DynamicForm form = new
LocatableDynamicForm("MessageCenterDetailsForm");
form.setWrapItemTitles(false);
form.setAlign(Alignment.LEFT);
@@ -340,7 +350,7 @@ public class MessageCenterView extends Table implements
MessageCenter.MessageLis
form.setItems(title, severity, date, detail);
- final Window dialogWin = new
LocatableWindow(this.extendLocatorId("MessageWindow"));
+ final Window dialogWin = new
LocatableWindow("MessageCenterDetailsWindow");
dialogWin.setTitle(MSG.common_title_message());
dialogWin.setWidth(600);
dialogWin.setHeight(400);
@@ -360,7 +370,7 @@ public class MessageCenterView extends Table implements
MessageCenter.MessageLis
});
}
- private String getSeverityIcon(Message.Severity severity) {
+ private static String getSeverityIcon(Message.Severity severity) {
if (severity == null) {
severity = Severity.Blank;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 678ba25..56b7270 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -2096,3 +2096,4 @@ view_messageCenter_messageTime = Time
view_messageCenter_messageSeverity = Severity
view_messageCenter_messageDetail = Detail
view_messageCenter_stackTraceFollows = --- STACK TRACE FOLLOWS ---
+view_messageCenter_messageBarShowDetails = Show Details
Show replies by date