package edu.washington.cs.oneswarm.ui.gwt.client.newui;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import edu.washington.cs.oneswarm.ui.gwt.client.OneSwarmDialogBox;
import edu.washington.cs.oneswarm.ui.gwt.client.OneSwarmRPCClient;
import edu.washington.cs.oneswarm.ui.gwt.rpc.BackendTask;
public class BackendTasksDialog extends OneSwarmDialogBox {
public static final int WIDTH = 500;
public BackendTasksDialog(BackendTask[] inTasks) {
super();
setText("Tasks");
VerticalPanel mainPanel = new VerticalPanel();
Label selectLabel = new Label("Cancel running tasks.");
selectLabel.addStyleName(CSS_DIALOG_HEADER);
selectLabel.setWidth(WIDTH + "px");
mainPanel.add(selectLabel);
mainPanel.setCellVerticalAlignment(selectLabel, VerticalPanel.ALIGN_TOP);
mainPanel.setWidth(WIDTH + "px");
for (BackendTask t : inTasks) {
mainPanel.add(taskPanel(t));
}
Button hideButton = new Button("Hide");
HorizontalPanel hideButtonHP = new HorizontalPanel();
hideButtonHP.add(hideButton);
mainPanel.add(hideButtonHP);
mainPanel.setCellHorizontalAlignment(hideButtonHP, HorizontalPanel.ALIGN_RIGHT);
hideButton.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
hide();
}
});
mainPanel.setWidth("100%");
this.setWidget(mainPanel);
}
private VerticalPanel taskPanel(final BackendTask inTask) {
final VerticalPanel outPanel = new VerticalPanel();
outPanel.setWidth("100%");
outPanel.add(new Label(inTask.getShortname()));
outPanel.add(new Label(inTask.getSummary()));
Button cancelButton = new Button("Cancel");
cancelButton.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
OneSwarmRPCClient.getService().cancelBackendTask(OneSwarmRPCClient.getSessionID(),
inTask.getTaskID(), new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
public void onSuccess(Void result) {
System.out.println("cancelled");
outPanel.removeFromParent();
}
});
}
});
outPanel.add(cancelButton);
outPanel.setSpacing(3);
outPanel.setCellHorizontalAlignment(cancelButton, HorizontalPanel.ALIGN_LEFT);
return outPanel;
}
}