diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.java index b93f95f..776e42b 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.java @@ -1,6 +1,7 @@ package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.form; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -23,6 +24,7 @@ import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.resources.Ad import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.resources.AddedResourcesSummary; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.tags.TagsPanel; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.utils.InfoIconsLabels; +import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.utils.WizardCreator; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.workspace.SelectResourceByWEMainPanel; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.DatasetBean; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.OrganizationBean; @@ -163,6 +165,8 @@ public class CreateDatasetForm extends Composite{ @UiField ControlGroup versionControlGroup; @UiField ControlGroup organizationsGroup; @UiField ControlGroup groupsControlGroup; + + @UiField HTMLPanel wizardCreatorPanel; // Create a remote service proxy to talk to the server-side ckan service. private final CKanPublisherServiceAsync ckanServices = GWT.create(CKanPublisherService.class); @@ -215,6 +219,7 @@ public class CreateDatasetForm extends Composite{ // map of organization name title private Map nameTitleOrganizationMap = new HashMap(); + private WizardCreator wizCreator; /** * Invoked in the most general case @@ -268,6 +273,18 @@ public class CreateDatasetForm extends Composite{ initWidget(uiBinder.createAndBindUi(this)); this.eventBus = eventBus; this.isWorkspaceRequest = isWorkspaceRequest; + + List listOfSteps = null; + if(isWorkspaceRequest) { + listOfSteps = Arrays.asList("Insert Base Information","Select Item Resources", "Insert Profile Information and Publish"); + }else { + listOfSteps = Arrays.asList("Insert Base Information", "Insert Profile Information and Publish"); + } + + this.wizCreator = new WizardCreator(listOfSteps); + wizardCreatorPanel.add(wizCreator); + + bind(); prepareInfoIcons(); @@ -854,8 +871,17 @@ public class CreateDatasetForm extends Composite{ // we need to show the page to handle resources one by one from the workspace formFirstStep.setVisible(false); - formSecondStep.setVisible(!hideManageResources()); - formThirdStep.setVisible(hideManageResources()); + boolean hideManageRes = hideManageResources(); + int stepActive = -1; + if(hideManageRes) { + stepActive = 3; + }else { + stepActive = 2; + } + + formSecondStep.setVisible(!hideManageRes); + formThirdStep.setVisible(hideManageRes); + wizCreator.activeStep(stepActive); // add the resources to the container panel if(workspaceResourcesContainer.getWidget() == null){ @@ -868,6 +894,7 @@ public class CreateDatasetForm extends Composite{ // this is not a workspace request formFirstStep.setVisible(false); formThirdStep.setVisible(true); + wizCreator.activeStep(3); } @@ -884,6 +911,7 @@ public class CreateDatasetForm extends Composite{ // swap forms formFirstStep.setVisible(true); + wizCreator.activeStep(1); formSecondStep.setVisible(false); formThirdStep.setVisible(false); @@ -895,9 +923,18 @@ public class CreateDatasetForm extends Composite{ // swap forms if(isWorkspaceRequest){ - formFirstStep.setVisible(hideManageResources()); - formSecondStep.setVisible(!hideManageResources()); + boolean hideManageRes = hideManageResources(); + int stepActive = -1; + if(hideManageRes) { + stepActive = 1; + }else { + stepActive = 2; + } + formFirstStep.setVisible(hideManageRes); + formSecondStep.setVisible(!hideManageRes); + wizCreator.activeStep(stepActive); }else{ + wizCreator.activeStep(1); formFirstStep.setVisible(true); formSecondStep.setVisible(false); } @@ -911,6 +948,7 @@ public class CreateDatasetForm extends Composite{ // swap forms formSecondStep.setVisible(false); formThirdStep.setVisible(true); + wizCreator.activeStep(3); } diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.ui.xml b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.ui.xml index d22c431..eb22060 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.ui.xml +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.ui.xml @@ -50,6 +50,7 @@ } + diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/utils/WizardCreator.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/utils/WizardCreator.java new file mode 100644 index 0000000..f7f267b --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/utils/WizardCreator.java @@ -0,0 +1,159 @@ +package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.utils; + +import java.util.ArrayList; +import java.util.List; + +import org.gcube.portlets.widgets.ckandatapublisherwidget.client.openlayerwidget.GeoJsonAreaSelectionDialog; +import org.gcube.portlets.widgets.openlayerbasicwidgets.client.widgets.GeometryType; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.core.client.Scheduler; +import com.google.gwt.core.client.Scheduler.ScheduledCommand; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.NodeList; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.HTMLPanel; +import com.google.gwt.user.client.ui.Widget; + +/** + * The Class WizardCreator. + * + * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) + * + * Mar 15, 2021 + */ +public class WizardCreator extends Composite { + + /** The ui binder. */ + private static WizardCreatorUiBinder uiBinder = GWT.create(WizardCreatorUiBinder.class); + + /** + * The Interface WizardCreatorUiBinder. + * + * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) + * + * Mar 15, 2021 + */ + interface WizardCreatorUiBinder extends UiBinder { + } + + /** The title of steps. */ + private List titleOfSteps; + + /** The html steps. */ + private List htmlSteps; + + /** The wizard container. */ + @UiField + HTMLPanel theWizardContainer; + + + /** + * Instantiates a new wizard creator. + * + * @param titleOfSteps the title of steps + */ + public WizardCreator(List titleOfSteps) { + initWidget(uiBinder.createAndBindUi(this)); + this.titleOfSteps = titleOfSteps; + createSteps(); + } + + + /** + * Creates the steps. + */ + private void createSteps() { + + if(titleOfSteps==null) + return; + + int i = 1; + htmlSteps = new ArrayList<>(titleOfSteps.size()); + for (String step : titleOfSteps) { + HTML toHML = createStep(i, step); + htmlSteps.add(toHML); + theWizardContainer.add(toHML); + i++; + } + + + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override + public void execute() { + activeStep(1); + } + }); + } + + /** + * Active step. + * + * @param stepNumber the step number + */ + public void activeStep(int stepNumber) { + disableAllBadge(); + + int index = stepNumber-1; + if(index>=0) { + HTML html = htmlSteps.get(index); + html.getElement().addClassName("current"); +// NodeList spans = html.getElement().getElementsByTagName("span"); +// if(spans!=null && spans.getLength()>0) { +// Element el = spans.getItem(0); +// el.addClassName("badge-inverse"); +// } + } + } + + private void disableAllBadge() { + for (HTML html : htmlSteps) { + html.getElement().removeClassName("current"); +// NodeList spans = html.getElement().getElementsByTagName("span"); +// if(spans!=null && spans.getLength()>0) { +// Element el = spans.getItem(0); +// el.removeClassName("badge-inverse"); +// } + } + + } + + + /** + * Creates the step. + * + * @param stepNumber the step number + * @param stepTitle the step title + * @return the string + */ + private HTML createStep(int stepNumber, String stepTitle) { + + StringBuilder builder = new StringBuilder(); + builder.append(""); + builder.append(stepNumber+"."); + builder.append(""); + builder.append(" "+stepTitle); + + + return new HTML(builder.toString()); + + } + + public static class HTMLNoDiv extends HTML{ + + public static HTML noDiv(String theHtml) { + HTML html = new HTML() { + + }; + + html.setHTML(theHtml); + return html; + } + } + + + +} diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/utils/WizardCreator.ui.xml b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/utils/WizardCreator.ui.xml new file mode 100644 index 0000000..4c5ed16 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/utils/WizardCreator.ui.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/workspace/SelectResourceByWEMainPanel.ui.xml b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/workspace/SelectResourceByWEMainPanel.ui.xml index b4a21ec..13b4395 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/workspace/SelectResourceByWEMainPanel.ui.xml +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/workspace/SelectResourceByWEMainPanel.ui.xml @@ -31,7 +31,7 @@ - Publishing Resources + Select Item Resources diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/workspace/SelectedResourceWidget.ui.xml b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/workspace/SelectedResourceWidget.ui.xml index 3b0c9d4..b6e3419 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/workspace/SelectedResourceWidget.ui.xml +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/workspace/SelectedResourceWidget.ui.xml @@ -34,7 +34,7 @@ - +