/** * */ package org.gcube.portlets.user.dataminermanager.client.form; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.gcube.portlets.user.dataminermanager.client.DataMinerManager; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync; import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3; import org.gcube.portlets.user.dataminermanager.shared.exception.ExpiredSessionServiceException; import org.gcube.portlets.user.dataminermanager.shared.workspace.ItemDescription; import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener; import org.gcube.portlets.widgets.wsexplorer.client.select.WorkspaceExplorerSelectDialog; import org.gcube.portlets.widgets.wsexplorer.shared.Item; import org.gcube.portlets.widgets.wsexplorer.shared.ItemType; import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.Widget; import com.sencha.gxt.core.client.dom.XDOM; import com.sencha.gxt.core.client.util.Format; import com.sencha.gxt.widget.core.client.button.TextButton; import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.event.SelectEvent; /** * * @author Giancarlo Panichi * email: g.panichi@isti.cnr.it * */ public class FileFld extends AbstractFld { private VerticalLayoutContainer vp; // FileSelector fileSelector; private WorkspaceExplorerSelectDialog wselectDialog; private TextButton selectButton, selectButton2, cancelButton; private ItemDescription selectedFileItem = null; /** * @param parameter */ public FileFld(Parameter parameter) { super(parameter); vp=new VerticalLayoutContainer(); /* * fileSelector = new FileSelector() { * * @Override public void fireSelection(TableItemSimple fileItem) { * super.fireSelection(fileItem); selectedFileItem = fileItem; * showFieldWithSelection(); } }; */ List selectableTypes = new ArrayList(); selectableTypes.add(ItemType.EXTERNAL_FILE); List showableTypes = new ArrayList(); showableTypes.addAll(Arrays.asList(ItemType.values())); wselectDialog = new WorkspaceExplorerSelectDialog("Select CSV", false); // filterCriteria, selectableTypes); WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() { @Override public void onSelectedItem(Item item) { if (item.isFolder() || item.isRoot()) { UtilsGXT3.info("Attention", "Select a valid csv!"); } else { retrieveFileInformation(item); } } @Override public void onFailed(Throwable throwable) { Log.error("Error in create project: " + throwable.getLocalizedMessage()); UtilsGXT3.alert("Error", throwable.getLocalizedMessage()); throwable.printStackTrace(); } @Override public void onAborted() { } @Override public void onNotValidSelection() { UtilsGXT3.info("Attention", "Select a valid csv!"); } }; wselectDialog.addWorkspaceExplorerSelectNotificationListener(handler); wselectDialog.setZIndex(XDOM.getTopZIndex()); selectButton = new TextButton("Select File"); selectButton.setIcon(DataMinerManager.resources.folderExplore()); selectButton.addSelectHandler(new SelectEvent.SelectHandler() { @Override public void onSelect(SelectEvent event) { wselectDialog.show(); } }); selectButton.setToolTip("Select File"); selectButton2 = new TextButton(""); selectButton2.setIcon(DataMinerManager.resources.folderExplore()); selectButton2.addSelectHandler(new SelectEvent.SelectHandler() { @Override public void onSelect(SelectEvent event) { wselectDialog.show(); } }); selectButton2.setToolTip("Select Another File"); cancelButton = new TextButton(""); cancelButton.setIcon(DataMinerManager.resources.cancel()); cancelButton.addSelectHandler(new SelectEvent.SelectHandler() { @Override public void onSelect(SelectEvent event) { selectedFileItem = null; showNoSelectionField(); } }); showNoSelectionField(); } private void retrieveFileInformation(final Item item) { Log.debug("Retrieved: " + item); final ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(), item.getOwner(), item.getPath(), item.getType() .name()); DataMinerPortletServiceAsync.INSTANCE.getPublicLink(itemDescription, new AsyncCallback() { @Override public void onFailure(Throwable caught) { Log.error("Error in retrieveFileInformation: " + caught.getMessage()); if (caught instanceof ExpiredSessionServiceException) { UtilsGXT3.alert("Error", "Expired Session"); // sessionExpiredShowDelayed(); } else { UtilsGXT3.alert( "Error", "Error retrieving file informations: " + caught.getLocalizedMessage()); } } @Override public void onSuccess(String result) { itemDescription.setPublicLink(result); selectedFileItem = itemDescription; Log.debug("SelectedFileItem: " + selectedFileItem); showFieldWithSelection(); } }); } private void showNoSelectionField() { vp.clear(); vp.add(selectButton); vp.forceLayout(); } private void showFieldWithSelection() { // final String fileId = selectedFileItem.getId(); final String fileName = selectedFileItem.getName(); vp.clear(); HorizontalLayoutContainer hp = new HorizontalLayoutContainer(); hp.add(new HTML("
" + Format.ellipse(fileName, 30) + "
")); hp.add(selectButton2); hp.add(cancelButton); vp.add(hp); vp.forceLayout(); } /** * */ @Override public boolean isValid() { return (selectedFileItem != null); } @Override public Widget getWidget() { return vp; } @Override public String getValue() { return (selectedFileItem == null) ? null : selectedFileItem.getPublicLink(); } }