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@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