package edu.washington.cs.oneswarm.ui.gwt.client.newui; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DockPanel; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.RadioButton; import com.google.gwt.user.client.ui.VerticalPanel; 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.client.ReportableErrorDialogBox; import edu.washington.cs.oneswarm.ui.gwt.rpc.OneSwarmUIServiceAsync; import edu.washington.cs.oneswarm.ui.gwt.rpc.ReportableException; import edu.washington.cs.oneswarm.ui.gwt.rpc.StringTools; import edu.washington.cs.oneswarm.ui.gwt.rpc.TorrentInfo; public class DeleteTorrentDialog extends OneSwarmDialogBox { // private FlexTable panel; // // private Button deleteDataButton = new Button("Delete Data"); // // private Button deleteDataAndFromListButton = new Button( // "Delete From Library"); // // private Button deleteCompletelyButton = new Button("Delete Completely"); private TorrentInfo[] torrentInfo; EntireUIRoot mRoot = null; Button okButton = new Button("Delete"); Button cancelButton = new Button("Cancel"); RadioButton swarmOnlyRadioButton = new RadioButton("deleteOptions", Strings.get(Strings.DELETE_DIALOG_SWARM_ONLY)); RadioButton everythingRadioButton = new RadioButton("deleteOptions", Strings.get(Strings.DELETE_DIALOG_ALL)); public DeleteTorrentDialog(TorrentInfo[] torrentInfo, EntireUIRoot inRoot) { super(false, true, true); mRoot = inRoot; this.torrentInfo = torrentInfo; setText("Remove: " + (torrentInfo.length > 1 ? torrentInfo.length + " swarms" : StringTools.truncate( torrentInfo[0].getName(), 25, true))); this.setWidth("250px"); this.setHeight("100px"); DockPanel panel = new DockPanel(); Label promptLabel = new Label(Strings.get(Strings.DELETE_DIALOG_SELECT_PROMPT)); promptLabel.setHeight("20px"); panel.add(promptLabel, DockPanel.NORTH); VerticalPanel radioButtons = new VerticalPanel(); radioButtons.add(swarmOnlyRadioButton); radioButtons.add(everythingRadioButton); swarmOnlyRadioButton.setValue(true); HorizontalPanel bottom = new HorizontalPanel(); bottom.add(cancelButton); bottom.add(okButton); okButton.addClickHandler(this); cancelButton.addClickHandler(this); bottom.setWidth("100%"); bottom.setSpacing(3); panel.add(radioButtons, DockPanel.CENTER); panel.add(bottom, DockPanel.SOUTH); // panel = new FlexTable(); // // deleteDataButton.addClickListener(this); // deleteDataAndFromListButton.addClickListener(this); // deleteCompletelyButton.addClickListener(this); // // panel.setWidget(0, 0, new Label( // "Only delete data (to free up hard disk space)", true)); // panel.setWidget(0, 1, deleteDataButton); // // panel // .setWidget( // 1, // 0, // new Label( // "Delete data and from the library (will still show up when searching)", // true)); // panel.setWidget(1, 1, deleteDataAndFromListButton); // // panel.setWidget(2, 0, new Label("Delete completely", true)); // panel.setWidget(2, 1, deleteCompletelyButton); // panel.setWidget(3, 0, new Label("")); // panel.setWidget(4, 1, cancelButton); // setWidget(panel); } public void onClick(ClickEvent event) { if (event.getSource().equals(okButton)) { if (swarmOnlyRadioButton.getValue()) { stopSharingKeepData(); } else { assert everythingRadioButton.getValue() == true : "radio button sanity violation"; deleteCompletely(); } hide(); } else if (event.getSource().equals(cancelButton)) { hide(); } else { super.onClick(event); } } private void refreshRoot() { System.out.println("refreshRoot() -> refreshSwarms()"); mRoot.refreshSwarms(); } AsyncCallback<ReportableException> callback = new AsyncCallback<ReportableException>() { public void onFailure(Throwable caught) { caught.printStackTrace(); } public void onSuccess(ReportableException result) { hide(); if (result != null) new ReportableErrorDialogBox(result, false); else refreshRoot(); } }; private void deleteCompletely() { System.out.println("Delete completely"); OneSwarmUIServiceAsync service = OneSwarmRPCClient.getService(); String[] torrentIDs = new String[torrentInfo.length]; for (int i = 0; i < torrentInfo.length; i++) { torrentIDs[i] = torrentInfo[i].getTorrentID(); } service.deleteCompletely(OneSwarmRPCClient.getSessionID(), torrentIDs, callback); } private void stopSharingKeepData() { System.out.println("stopSharingKeepData"); OneSwarmUIServiceAsync service = OneSwarmRPCClient.getService(); String[] torrentIDs = new String[torrentInfo.length]; for (int i = 0; i < torrentInfo.length; i++) { torrentIDs[i] = torrentInfo[i].getTorrentID(); } service.deleteFromShareKeepData(OneSwarmRPCClient.getSessionID(), torrentIDs, callback); } }