package scrum.client.workspace; import ilarkesto.core.scope.Scope; import scrum.client.common.AScrumWidget; import scrum.client.core.ServiceCaller; import scrum.client.test.ScrumStatusWidget; import com.google.gwt.dom.client.Style; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.FocusPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; public class CommunicationIndicatorWidget extends AScrumWidget { private ServiceCaller serviceCaller; private FocusPanel focusPanel; private Label status; private Style statusStyle; private long onTime; @Override protected Widget onInitialization() { serviceCaller = Scope.get().getComponent(ServiceCaller.class); serviceCaller.setStatusWidget(this); status = new Label(); status.setStyleName("StatusWidget"); statusStyle = status.getElement().getStyle(); focusPanel = new FocusPanel(status); focusPanel.addClickHandler(new StatusClickHandler()); return focusPanel; } @Override protected void onUpdate() { int count = serviceCaller.getActiveServiceCallCount(); if (count > 0) { if (!isOn()) switchOn(); } else { if (isOn()) switchOff(); } } private void switchOn() { onTime = System.currentTimeMillis(); statusStyle.setBackgroundColor("#aa6"); } private void switchOff() { onTime = 0; statusStyle.setBackgroundColor("#666"); } private boolean isOn() { return onTime > 0; } class StatusClickHandler implements ClickHandler { public void onClick(ClickEvent event) { Scope.get().getComponent(Ui.class).getWorkspace().getWorkarea().show(new ScrumStatusWidget()); focusPanel.setFocus(false); } } }