package scrum.client.workspace; import ilarkesto.core.logging.Log; import ilarkesto.gwt.client.FullscreenPanel; import ilarkesto.gwt.client.Gwt; import ilarkesto.gwt.client.LockWidget; import ilarkesto.gwt.client.SwitcherWidget; import scrum.client.common.AScrumWidget; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.Widget; public class WorkspaceWidget extends AScrumWidget { private static final Log LOG = Log.get(WorkspaceWidget.class); public static final int HEADER_HEIGHT = 25; private LockWidget locker; private LockInfoWidget lockInfo; private SwitcherWidget sidebar; private SwitcherWidget workarea = new SwitcherWidget(true); @Override protected Widget onInitialization() { setHeight100(); lockInfo = new LockInfoWidget(); HeaderWidget header = new HeaderWidget(); sidebar = new SwitcherWidget(true); workarea.setStyleName("Workspace-body-center-content"); ScrollPanel sidebarScroller = new ScrollPanel(sidebar); sidebarScroller.setHeight("100%"); ScrollPanel workareaScroller = new ScrollPanel(Gwt.createDiv("Workspace-body-center-content", workarea)); workareaScroller.setHeight("100%"); workarea.setScrollPanel(workareaScroller); FlowPanel body = new FlowPanel(); body.setStyleName("Workspace-body"); body.add(Gwt.createDiv("Workspace-body-west", sidebarScroller)); body.add(Gwt.createDiv("Workspace-body-center", workareaScroller)); FlowPanel workspace = Gwt.createFlowPanel(Gwt.createDiv("Workspace-header", header), body); workspace.setStyleName("Workspace"); locker = new LockWidget(workspace); return new FullscreenPanel(locker); } @Override protected void onUpdate() { LOG.debug("Updating UI"); super.onUpdate(); } public void abort(String message) { Log.DEBUG("Locking UI for ABORT:", message); lockInfo.showBug(message + " Restarting your session..."); locker.lock(lockInfo); Gwt.runLater(5000, new Runnable() { @Override public void run() { Window.Location.reload(); } }); } public void lock(String message) { initialize(); Log.DEBUG("Locking UI:", message); lockInfo.showWait(message); locker.lock(lockInfo); } public void unlock() { Log.DEBUG("Unlocking UI"); locker.unlock(); } public void showError(String message) { final DialogBox db = new DialogBox(); db.setSize("200", "150"); db.setPopupPosition(100, 100); FlowPanel panel = new FlowPanel(); Label text = new Label(message); panel.add(text); Button close = new Button("close"); close.addClickListener(new ClickListener() { @Override public void onClick(Widget sender) { db.hide(); } }); panel.add(close); db.add(panel); db.show(); } public SwitcherWidget getWorkarea() { return workarea; } public SwitcherWidget getSidebar() { return sidebar; } }