package edu.washington.cs.oneswarm.ui.gwt.client.newui.settings;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
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 edu.washington.cs.oneswarm.ui.gwt.client.OneSwarmGWT;
import edu.washington.cs.oneswarm.ui.gwt.client.OneSwarmRPCClient;
import edu.washington.cs.oneswarm.ui.gwt.client.fileDialog.FileBrowser;
import edu.washington.cs.oneswarm.ui.gwt.client.newui.OneSwarmCss;
import edu.washington.cs.oneswarm.ui.gwt.rpc.StringTools;
public class SaveLocationPanel extends SettingsPanel {
final Label pathLabel = new Label(msg.loading());
public boolean ready_to_save = false;
String loc = "";
public String getSaveLocation() {
return loc;
}
public SaveLocationPanel() {
super();
final HorizontalPanel button_and_path = new HorizontalPanel();
Label l = new Label(msg.settings_files_save_loc());
VerticalPanel stacked = new VerticalPanel();
stacked.add(l);
final Button chooseButton = new Button(msg.button_browse());
chooseButton.addStyleName(OneSwarmCss.SMALL_BUTTON);
button_and_path.add(chooseButton);
button_and_path.setSpacing(3);
stacked.add(button_and_path);
if (OneSwarmGWT.isRemoteAccess()) {
chooseButton.setEnabled(false);
} else {
chooseButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
chooseButton.setEnabled(false);
FileBrowser dialog = new FileBrowser(
OneSwarmRPCClient.getSessionID(), true, new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
public void onSuccess(String path) {
if (path != null) {
pathLabel.setText(path);
chooseButton.setEnabled(true);
}
}
});
dialog.show();
}
});
}
button_and_path.add(pathLabel);
button_and_path.setCellVerticalAlignment(pathLabel, VerticalPanel.ALIGN_MIDDLE);
button_and_path.setCellHorizontalAlignment(chooseButton, HorizontalPanel.ALIGN_LEFT);
this.add(stacked);
OneSwarmRPCClient.getService().getStringParameterValue(OneSwarmRPCClient.getSessionID(),
"Default save path", new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
public void onSuccess(String result) {
if (result != null) {
loc = result;
pathLabel.setText(StringTools.truncate(loc, 50, false));
loadNotify();
}
}
});
}
public void sync() {
OneSwarmRPCClient.getService().setStringParameterValue(OneSwarmRPCClient.getSessionID(),
"Default save path", pathLabel.getText(), new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
public void onSuccess(Void result) {
System.out.println("success for save dir sync");
}
});
}
String validData() {
return null; // chosen with file chooser
}
}