private int fetchMessages(MessageListPopup popup) { List<Message> messages = messageCenter.getMessages(); popup.getMessageList().setRowCount(messages.size(), true); popup.getMessageList().setRowData(0, messages); return messages.size(); }
private void reflectMessageCount() { int numMessages = messageCenter.getNewMessageCount(); messageButton.setHTML(MESSAGE_LABEL + ": " + numMessages); }
public Widget asWidget() { HorizontalPanel layout = new HorizontalPanel(); layout.getElement().setAttribute("title", "Notification Center"); layout.setStyleName("notification-center"); messageButton = new HTML(MESSAGE_LABEL + ": " + messageCenter.getNewMessageCount()); messageButton.addStyleName("notification-button"); ClickHandler clickHandler = new ClickHandler() { public void onClick(ClickEvent event) { int numMessages = fetchMessages(messagePopup); if (numMessages == 0) numMessages = 1; int width = 250; int height = numMessages * 35; messagePopup.setPopupPosition( messageButton.getAbsoluteLeft() - (width + 10 - messageButton.getOffsetWidth()), messageButton.getAbsoluteTop() + 25); messagePopup.show(); Scheduler.get() .scheduleDeferred( new Scheduler.ScheduledCommand() { @Override public void execute() { messagePopup.focusOnFirstMessage(); } }); messagePopup.setWidth(width + "px"); messagePopup.setHeight(height + "px"); } }; messageButton.addClickHandler(clickHandler); messageDisplay = new HorizontalPanel(); messageDisplay.getElement().setAttribute("role", "log"); messageDisplay.getElement().setAttribute("aria-live", "polite"); messageDisplay.getElement().setAttribute("aria-atomic", "true"); layout.add(messageDisplay); layout.add(messageButton); messageDisplay .getElement() .getParentElement() .setAttribute("style", "width:100%;padding-right:5px"); messageDisplay.getElement().getParentElement().setAttribute("align", "right"); messageButton.getElement().getParentElement().setAttribute("style", "width:60px"); messageButton.getElement().getParentElement().setAttribute("align", "right"); // register listener messageCenter.addMessageListener(this); Console.getEventBus().addHandler(ReloadEvent.TYPE, this); return layout; }