package scrum.client.tasks; import ilarkesto.gwt.client.AIntegerViewEditWidget; import ilarkesto.gwt.client.AWidget; import ilarkesto.gwt.client.ToolbarWidget; import scrum.client.common.AScrumAction; import scrum.client.sprint.CloseTaskAction; import scrum.client.sprint.ReopenTaskAction; import scrum.client.sprint.Task; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Widget; public class TaskRemainingWorkWidget extends AWidget { private Task task; private HorizontalPanel panel; private RemainingWorkWidget remainingWork; private ToolbarWidget toolbar; public TaskRemainingWorkWidget(Task task) { this.task = task; } @Override protected Widget onInitialization() { remainingWork = new RemainingWorkWidget(); toolbar = new ToolbarWidget(); panel = new HorizontalPanel(); panel.setStyleName("TaskRemainingWorkWidget"); // panel.setWidth("100%"); panel.add(remainingWork); panel.add(toolbar); return panel; } @Override protected void onUpdate() { toolbar.clear(); if (task.isClosed()) { AScrumAction action = new ReopenTaskAction(task); if (action.isExecutable()) { toolbar.addButton(action); } } else { AScrumAction action = new CloseTaskAction(task); if (action.isExecutable()) { toolbar.addButton(action); } } super.onUpdate(); } class RemainingWorkWidget extends AIntegerViewEditWidget { @Override protected void onIntegerViewerUpdate() { setViewerValue(task.getRemainingWork()); } @Override protected void onEditorUpdate() { setEditorValue(task.getRemainingWork()); } @Override protected void onEditorSubmit() { task.setRemainingWork(getEditorValue(1)); } @Override protected void onMinusClicked() { task.decrementRemainingWork(); } @Override protected void onPlusClicked() { task.incrementRemainingWork(); } @Override public boolean isEditable() { return task.isEditable(); } } }