diff --git a/src/main/java/org/gcube/portlets/user/td/csvexportwidget/client/CSVWorkSpaceSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/csvexportwidget/client/CSVWorkSpaceSelectionCard.java index da429be..43645ce 100644 --- a/src/main/java/org/gcube/portlets/user/td/csvexportwidget/client/CSVWorkSpaceSelectionCard.java +++ b/src/main/java/org/gcube/portlets/user/td/csvexportwidget/client/CSVWorkSpaceSelectionCard.java @@ -5,6 +5,8 @@ package org.gcube.portlets.user.td.csvexportwidget.client; import java.util.ArrayList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.gcube.portlets.user.td.csvexportwidget.client.workspace.WorkspacePanel; import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; @@ -16,8 +18,17 @@ import org.gcube.portlets.widgets.lighttree.client.event.ItemSelectionEvent; import org.gcube.portlets.widgets.lighttree.client.event.ItemSelectionHandler; import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.user.client.Command; +import com.sencha.gxt.widget.core.client.FramedPanel; +import com.sencha.gxt.widget.core.client.box.AlertMessageBox; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; +import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; +import com.sencha.gxt.widget.core.client.event.HideEvent; +import com.sencha.gxt.widget.core.client.event.HideEvent.HideHandler; +import com.sencha.gxt.widget.core.client.form.FieldLabel; +import com.sencha.gxt.widget.core.client.form.TextField; /** * @@ -26,11 +37,11 @@ import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; * */ public class CSVWorkSpaceSelectionCard extends WizardCard { - + protected CSVExportSession exportSession; protected CSVWorkSpaceSelectionCard thisCard; - - + protected TextField fileName; + protected Item item; protected VerticalLayoutContainer p; protected WorkspacePanel wpanel; @@ -40,53 +51,97 @@ public class CSVWorkSpaceSelectionCard extends WizardCard { this.exportSession = exportSession; thisCard = this; - - p=new VerticalLayoutContainer(); + + FramedPanel formPanel = new FramedPanel(); + formPanel.setHeaderVisible(false); + p = new VerticalLayoutContainer(); + formPanel.setWidget(p); + + fileName = new TextField(); + fileName.setAllowBlank(false); + fileName.setWidth("410px"); + fileName.setValue("filename.csv"); + p.add(new FieldLabel(fileName, "File Name"), new VerticalLayoutData(-1, + -1)); Log.debug("Set Workspace Panel"); - wpanel=new WorkspacePanel(); - wpanel.setSpWidth("536px"); - wpanel.setSpHeight("384px"); - List lItemType= new ArrayList(); + wpanel = new WorkspacePanel(); + wpanel.setSpWidth("410px"); + wpanel.setSpHeight("356px"); + List lItemType = new ArrayList(); lItemType.add(ItemType.ROOT); lItemType.add(ItemType.FOLDER); wpanel.setShowableTypes(lItemType); wpanel.setSelectableTypes(lItemType); wpanel.addSelectionHandler(new ItemSelectionHandler() { - + @Override public void onSelection(ItemSelectionEvent event) { - item=event.getSelectedItem(); - Log.debug("Selected Item:"+item); - if(item.getType()==ItemType.FOLDER || item.getType()==ItemType.ROOT){ - /*String filename=item.getName(); - if(filename!=null&&!filename.isEmpty()){ - Log.debug("Item name: "+filename); - Log.debug("Item path: "+item.getPath()); - - importSession.setItemId(item.getId()); - getWizardWindow().setEnableNextButton(true); - - } else { - Log.debug("Item name null or empty"); - getWizardWindow().setEnableNextButton(false); - }*/ - + item = event.getSelectedItem(); + Log.debug("Selected Item:" + item); + if (item.getType() == ItemType.FOLDER + || item.getType() == ItemType.ROOT) { + thisCard.exportSession.setItemId(item.getId()); } else { - Log.debug("Item type:"+item.getType()); - getWizardWindow().setEnableNextButton(false); + thisCard.exportSession.setItemId(null); + Log.debug("Item type:" + item.getType()); } } }); - p.add(wpanel); + p.add(new FieldLabel(wpanel, "Directory"), new VerticalLayoutData(-1, + -1)); wpanel.loadTree(); - setContent(p); + setContent(formPanel); } + protected void checkExportData() { + Log.debug("File Name:" + fileName.getCurrentValue() + " Item id: " + + exportSession.getItemId()); + wpanel.disable(); + getWizardWindow().setEnableNextButton(false); + getWizardWindow().setEnableBackButton(false); + AlertMessageBox d; + HideHandler hideHandler=new HideHandler() { + + @Override + public void onHide(HideEvent event) { + wpanel.enable(); + getWizardWindow().setEnableNextButton(true); + getWizardWindow().setEnableBackButton(true); + } + }; + if (fileName.getCurrentValue() != null + && !fileName.getCurrentValue().isEmpty() && fileName.validate()) { + Pattern p = Pattern.compile("[_a-zA-Z0-9\\-\\.]+"); + Matcher matcher = p.matcher(fileName.getCurrentValue()); + if (matcher.matches()) { + Log.debug("fileName match"); + if (exportSession.getItemId() != null) { + exportSession.setFileName(fileName.getCurrentValue()); + getFileFromWorkspace(); + } else { + d = new AlertMessageBox("Attention", "No folder selected"); + d.addHideHandler(hideHandler); + d.show(); + + } + + } else { + Log.debug("fileName no match"); + d = new AlertMessageBox("Attention", "No valid file name"); + d.addHideHandler(hideHandler); + d.show(); + } + } else { + + d = new AlertMessageBox("Attention", "No valid file name"); + d.addHideHandler(hideHandler); + d.show(); + } - - + } + @Override public void setup() { Log.debug("CSVWorkSpaceSelectionCard Call Setup "); @@ -94,12 +149,9 @@ public class CSVWorkSpaceSelectionCard extends WizardCard { @Override public void execute() { - Log.debug("CSVWorkSpaceSelectionCard Call sayNextCard wpanel:"+wpanel); - wpanel.disable(); - wpanel.startWaiting(); - getWizardWindow().setEnableNextButton(false); - getWizardWindow().setEnableBackButton(false); - getFileFromWorkspace(); + Log.debug("CSVWorkSpaceSelectionCard Call sayNextCard wpanel:" + + wpanel); + checkExportData(); } }; @@ -119,40 +171,39 @@ public class CSVWorkSpaceSelectionCard extends WizardCard { }; getWizardWindow().setPreviousButtonCommand(sayPreviousCard); - getWizardWindow().setEnableNextButton(false); + getWizardWindow().setEnableNextButton(true); } - - protected void getFileFromWorkspace(){ - TDGWTServiceAsync tdGwtServiceAsync=TDGWTServiceAsync.INSTANCE; - /*tdGwtServiceAsync.setFileInWorkspace(exportSession, new AsyncCallback(){ - @Override - public void onFailure(Throwable caught) { - wpanel.endWaiting(); - thisCard.showErrorAndHide("Error", "Error retrieving the file from the workspace: "+caught.getLocalizedMessage(), - caught.toString(), caught); - - } - - @Override - public void onSuccess(Void result) { - wpanel.endWaiting(); - goForward(); - - } - - }); - */ - } - - protected void goForward(){ - /*CSVConfigCard csvConfigCard = new CSVConfigCard(importSession); - getWizardWindow().addCard(csvConfigCard); - Log.info("NextCard CSVConfigCard"); - getWizardWindow().nextCard();*/ - + protected void getFileFromWorkspace() { + TDGWTServiceAsync tdGwtServiceAsync = TDGWTServiceAsync.INSTANCE; + /* + * tdGwtServiceAsync.setFileInWorkspace(exportSession, new + * AsyncCallback(){ + * + * @Override public void onFailure(Throwable caught) { + * wpanel.endWaiting(); thisCard.showErrorAndHide("Error", + * "Error retrieving the file from the workspace: " + * +caught.getLocalizedMessage(), caught.toString(), caught); + * + * } + * + * @Override public void onSuccess(Void result) { wpanel.endWaiting(); + * goForward(); + * + * } + * + * }); + */ + } + + protected void goForward() { + /* + * CSVConfigCard csvConfigCard = new CSVConfigCard(importSession); + * getWizardWindow().addCard(csvConfigCard); + * Log.info("NextCard CSVConfigCard"); getWizardWindow().nextCard(); + */ + } - }