package edu.washington.cs.oneswarm.ui.gwt.client.newui.settings;
import java.util.ArrayList;
import com.google.gwt.user.client.rpc.AsyncCallback;
import edu.washington.cs.oneswarm.ui.gwt.client.OneSwarmRPCClient;
import edu.washington.cs.oneswarm.ui.gwt.rpc.ClientServiceDTO;
import edu.washington.cs.oneswarm.ui.gwt.rpc.OneSwarmUIServiceAsync;
import edu.washington.cs.oneswarm.ui.gwt.rpc.SharedServiceDTO;
public class ServiceSharingSettingsPanel extends SettingsPanel {
// protected final static OSMessages msg = OneSwarmGWT.msg;
public static final int WIDTH = 400;
private boolean ready_save = false;
public boolean isReadyToSave() {
return ready_save;
}
public void loadNotify() {
ready_save = true;
}
public void sync() {
service.saveClientServices(clientTable.getServices(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
@Override
public void onSuccess(Void result) {
}
});
service.saveSharedServices(sharedTable.getServices(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
@Override
public void onSuccess(Void result) {
}
});
}
public String validData() {
return ready_save ? null : "services not loaded completely, save not possible";
}
OneSwarmUIServiceAsync service = OneSwarmRPCClient.getService();
int loadCount = 0;
private void partialLoad() {
loadCount++;
if (loadCount == 2) {
loadNotify();
}
}
private final ClientServicesTable clientTable;
private final SharedServicesTable sharedTable;
public ServiceSharingSettingsPanel() {
clientTable = new ClientServicesTable();
clientTable.setSyncHandler(this);
add(clientTable);
setWidth(ServiceSharingSettingsPanel.WIDTH + "px");
service.getClientServices(new AsyncCallback<ArrayList<ClientServiceDTO>>() {
@Override
public void onSuccess(ArrayList<ClientServiceDTO> result) {
result.add(new ClientServiceDTO(true));
clientTable.setTableData(result);
partialLoad();
}
@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
});
sharedTable = new SharedServicesTable();
sharedTable.setSyncHandler(this);
add(sharedTable);
service.getSharedServices(new AsyncCallback<ArrayList<SharedServiceDTO>>() {
@Override
public void onSuccess(ArrayList<SharedServiceDTO> result) {
result.add(new SharedServiceDTO(true));
sharedTable.setTableData(result);
partialLoad();
}
@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
});
}
}