From 98f8c1859d3ebfdd154a91d32e804981c874e09b Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Fri, 8 Apr 2016 18:34:05 +0000 Subject: [PATCH] 2521: Explore the possibility to port the StatMan interface onto Dataminer https://support.d4science.org/issues/2521 Fixed Layout on ComputationPanel git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/data-miner-manager@126949 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/bean/Operator.java | 4 +- .../events/ComponentRefreshLayoutEvent.java | 59 ++++ .../events/EmptyComputationPanelEvent.java | 58 ---- .../client/events/StartComputationEvent.java | 83 +++++ .../experimentArea/ComputationPanel.java | 63 ++-- .../ComputationParametersPanel.java | 295 ++++++++++++++++++ .../experimentArea/WorkflowOperatorPanel.java | 252 --------------- .../client/experimentArea/WorkflowPanel.java | 52 ++- .../client/form/StringFld.java | 55 ---- .../AbstractFld.java | 6 +- .../{form => parametersfield}/BooleanFld.java | 2 +- .../{form => parametersfield}/ColumnFld.java | 2 +- .../ColumnListFld.java | 2 +- .../{form => parametersfield}/DoubleFld.java | 2 +- .../{form => parametersfield}/EnumFld.java | 2 +- .../{form => parametersfield}/FileFld.java | 2 +- .../{form => parametersfield}/FloatFld.java | 2 +- .../{form => parametersfield}/IntFld.java | 2 +- .../{form => parametersfield}/ListIntFld.java | 2 +- .../ListStringFld.java | 2 +- .../OpenTableButton.java | 2 +- .../OperatorFieldWidget.java | 49 ++- .../client/parametersfield/StringFld.java | 87 ++++++ .../{form => parametersfield}/TabularFld.java | 2 +- .../TabularListFld.java | 2 +- .../client/rpc/DataMinerPortletService.java | 57 ++-- .../rpc/DataMinerPortletServiceAsync.java | 48 ++- .../dataminermanager/dataminermanager.gwt.xml | 8 +- .../server/DataMinerManagerServiceImpl.java | 105 +------ src/main/webapp/DataMinerManager.css | 38 ++- 30 files changed, 704 insertions(+), 641 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/dataminermanager/client/events/ComponentRefreshLayoutEvent.java delete mode 100644 src/main/java/org/gcube/portlets/user/dataminermanager/client/events/EmptyComputationPanelEvent.java create mode 100644 src/main/java/org/gcube/portlets/user/dataminermanager/client/events/StartComputationEvent.java create mode 100644 src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/ComputationParametersPanel.java delete mode 100644 src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/WorkflowOperatorPanel.java delete mode 100644 src/main/java/org/gcube/portlets/user/dataminermanager/client/form/StringFld.java rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/AbstractFld.java (82%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/BooleanFld.java (92%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/ColumnFld.java (97%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/ColumnListFld.java (98%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/DoubleFld.java (93%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/EnumFld.java (94%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/FileFld.java (98%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/FloatFld.java (93%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/IntFld.java (93%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/ListIntFld.java (98%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/ListStringFld.java (98%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/OpenTableButton.java (96%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/OperatorFieldWidget.java (69%) create mode 100644 src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/StringFld.java rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/TabularFld.java (99%) rename src/main/java/org/gcube/portlets/user/dataminermanager/client/{form => parametersfield}/TabularListFld.java (98%) diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/bean/Operator.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/bean/Operator.java index 1f60e37..ae90a08 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/bean/Operator.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/bean/Operator.java @@ -11,7 +11,9 @@ import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter import org.gcube.portlets.user.dataminermanager.shared.StringUtil; /** - * @author ceras + * + * @author Giancarlo Panichi + * email: g.panichi@isti.cnr.it * */ public class Operator implements Serializable { diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/events/ComponentRefreshLayoutEvent.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/events/ComponentRefreshLayoutEvent.java new file mode 100644 index 0000000..7d303a2 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/events/ComponentRefreshLayoutEvent.java @@ -0,0 +1,59 @@ +package org.gcube.portlets.user.dataminermanager.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +/** + * Component Refresh Layout Event + * + * + * @author "Giancarlo Panichi" g.panichi@isti.cnr.it + * + */ +public class ComponentRefreshLayoutEvent + extends + GwtEvent { + + public static Type TYPE = new Type(); + + public interface ComponentRefreshLayoutEventHandler extends EventHandler { + void onRefresh(ComponentRefreshLayoutEvent event); + } + + public interface HasComponentRefreshLayoutEventHandler extends HasHandlers { + public HandlerRegistration addComponentRefreshLayoutEventHandler( + ComponentRefreshLayoutEventHandler handler); + } + + public ComponentRefreshLayoutEvent() { + + } + + @Override + protected void dispatch(ComponentRefreshLayoutEventHandler handler) { + handler.onRefresh(this); + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + + public static Type getType() { + return TYPE; + } + + public static void fire(HasHandlers source, + ComponentRefreshLayoutEvent event) { + source.fireEvent(event); + } + + @Override + public String toString() { + return "ComponentRefreshLayoutEvent []"; + } + +} diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/events/EmptyComputationPanelEvent.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/events/EmptyComputationPanelEvent.java deleted file mode 100644 index 81816ab..0000000 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/events/EmptyComputationPanelEvent.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.gcube.portlets.user.dataminermanager.client.events; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; - -/** - * Empty ComputationPanal Event - * - * - * @author "Giancarlo Panichi" g.panichi@isti.cnr.it - * - */ -public class EmptyComputationPanelEvent extends - GwtEvent { - - public static Type TYPE = new Type(); - - public interface EmptyComputationPanelEventHandler extends EventHandler { - void onEmpty(EmptyComputationPanelEvent event); - } - - public interface HasEmptyComputationPanelEventHandler extends HasHandlers { - public HandlerRegistration addEmptyComputationPanelEventHandler( - EmptyComputationPanelEventHandler handler); - } - - public EmptyComputationPanelEvent() { - - } - - @Override - protected void dispatch(EmptyComputationPanelEventHandler handler) { - handler.onEmpty(this); - } - - @Override - public Type getAssociatedType() { - return TYPE; - } - - public static Type getType() { - return TYPE; - } - - public static void fire(HasHandlers source, - EmptyComputationPanelEvent emptyComputationPanelEvent) { - source.fireEvent(emptyComputationPanelEvent); - } - - @Override - public String toString() { - return "EmptyComputationPanelEvent []"; - } - -} diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/events/StartComputationEvent.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/events/StartComputationEvent.java new file mode 100644 index 0000000..a0f5aba --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/events/StartComputationEvent.java @@ -0,0 +1,83 @@ +package org.gcube.portlets.user.dataminermanager.client.events; + +import org.gcube.portlets.user.dataminermanager.client.bean.Operator; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +/** + * Start Computation Event + * + * + * @author "Giancarlo Panichi" g.panichi@isti.cnr.it + * + */ +public class StartComputationEvent extends + GwtEvent { + + public static Type TYPE = new Type(); + private Operator op; + private String computationTitle; + private String computationDescription; + + public interface StartComputationEventHandler extends EventHandler { + void onStart(StartComputationEvent event); + } + + public interface HasStartComputationEventHandler extends HasHandlers { + public HandlerRegistration addStartComputationEventHandler( + StartComputationEventHandler handler); + } + + public StartComputationEvent(Operator op, String computationTitle, String computationDescription) { + this.op=op; + this.computationTitle=computationTitle; + this.computationDescription=computationDescription; + + } + + @Override + protected void dispatch(StartComputationEventHandler handler) { + handler.onStart(this); + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + + public static Type getType() { + return TYPE; + } + + public static void fire(HasHandlers source, + StartComputationEvent startComputationEvent) { + source.fireEvent(startComputationEvent); + } + + public Operator getOp() { + return op; + } + + public String getComputationTitle() { + return computationTitle; + } + + public String getComputationDescription() { + return computationDescription; + } + + @Override + public String toString() { + return "StartComputationEvent [op=" + op + ", computationTitle=" + + computationTitle + ", computationDescription=" + + computationDescription + "]"; + } + + + + +} diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/ComputationPanel.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/ComputationPanel.java index 07cd58e..2d3e8de 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/ComputationPanel.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/ComputationPanel.java @@ -1,9 +1,13 @@ package org.gcube.portlets.user.dataminermanager.client.experimentArea; import org.gcube.portlets.user.dataminermanager.client.DataMinerManager; -import org.gcube.portlets.user.dataminermanager.client.events.EmptyComputationPanelEvent; -import org.gcube.portlets.user.dataminermanager.client.events.EmptyComputationPanelEvent.EmptyComputationPanelEventHandler; -import org.gcube.portlets.user.dataminermanager.client.events.EmptyComputationPanelEvent.HasEmptyComputationPanelEventHandler; +import org.gcube.portlets.user.dataminermanager.client.bean.Operator; +import org.gcube.portlets.user.dataminermanager.client.events.ComponentRefreshLayoutEvent; +import org.gcube.portlets.user.dataminermanager.client.events.StartComputationEvent; +import org.gcube.portlets.user.dataminermanager.client.events.ComponentRefreshLayoutEvent.ComponentRefreshLayoutEventHandler; +import org.gcube.portlets.user.dataminermanager.client.events.StartComputationEvent.StartComputationEventHandler; +import org.gcube.portlets.user.dataminermanager.client.events.StartComputationEvent.HasStartComputationEventHandler; +import org.gcube.portlets.user.dataminermanager.client.experimentArea.ComputationParametersPanel.ComputationParametersPanelHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.ui.HTML; @@ -31,13 +35,14 @@ import com.sencha.gxt.widget.core.client.toolbar.ToolBar; * */ public class ComputationPanel extends FramedPanel implements - HasEmptyComputationPanelEventHandler { + HasStartComputationEventHandler { private static final String DELETE_ALL_BUTTON_TOOLTIP = "Remove All Operators"; private TextButton removeAllButton; private ToolBar toolBar; private VerticalLayoutContainer topV; private VerticalLayoutContainer v; - + private ComputationParametersPanel computationParametersPanel; + public ComputationPanel() { super(); init(); @@ -47,10 +52,10 @@ public class ComputationPanel extends FramedPanel implements private void init() { setHeaderVisible(false); setBodyStyle("backgroundColor:white;"); - ; } private void create() { + computationParametersPanel=null; topV = new VerticalLayoutContainer(); setToolBar(); topV.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0))); @@ -76,8 +81,7 @@ public class ComputationPanel extends FramedPanel implements @Override public void onSelect(SelectEvent event) { emptyPanel(); - EmptyComputationPanelEvent emptyEvent = new EmptyComputationPanelEvent(); - fireEvent(emptyEvent); + computationParametersPanel = null; } }); @@ -95,30 +99,49 @@ public class ComputationPanel extends FramedPanel implements } - /** - * - * @param workflowOperatorPanel - * algorithm - */ - public void addWorkflowOperatorPanel( - WorkflowOperatorPanel workflowOperatorPanel) { + + private void addComputationParametersPanel( + ComputationParametersPanel computationParametersPanel) { v.clear(); HBoxLayoutContainer hBox = new HBoxLayoutContainer(); hBox.setPack(BoxLayoutPack.CENTER); hBox.add(new Image(DataMinerManager.resources.workflowConnector1()), new BoxLayoutData(new Margins(0))); v.add(hBox, new VerticalLayoutData(1, -1, new Margins(10,0,0,0))); - v.add(workflowOperatorPanel, new VerticalLayoutData(-1, -1, - new Margins(0))); // operator + v.add(computationParametersPanel, new VerticalLayoutData(1, -1, + new Margins(0,5,5,5))); removeAllButton.setEnabled(true); forceLayout(); } @Override - public HandlerRegistration addEmptyComputationPanelEventHandler( - EmptyComputationPanelEventHandler handler) { - return addHandler(handler, EmptyComputationPanelEvent.getType()); + public HandlerRegistration addStartComputationEventHandler( + StartComputationEventHandler handler) { + return addHandler(handler, StartComputationEvent.getType()); } + public void addOperator(Operator op) { + computationParametersPanel = new ComputationParametersPanel(op); + computationParametersPanel.setHandler(new ComputationParametersPanelHandler() { + @Override + public void startComputation(String computationTitle, + String computationDescription) { + if (computationParametersPanel != null) { + forceLayout(); + computationParametersPanel.updateOperatorParametersValues(); + Operator op = computationParametersPanel.getOperator(); + StartComputationEvent startComputationEvent = new StartComputationEvent(op, computationTitle, computationDescription); + fireEvent(startComputationEvent); + } + + } + }); + + addComputationParametersPanel(computationParametersPanel); + + } + + + } diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/ComputationParametersPanel.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/ComputationParametersPanel.java new file mode 100644 index 0000000..0a94ec9 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/ComputationParametersPanel.java @@ -0,0 +1,295 @@ +/** + * + */ +package org.gcube.portlets.user.dataminermanager.client.experimentArea; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.gcube.portlets.user.dataminermanager.client.DataMinerManager; +import org.gcube.portlets.user.dataminermanager.client.bean.Operator; +import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ColumnListParameter; +import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ColumnParameter; +import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; +import org.gcube.portlets.user.dataminermanager.client.events.ComponentRefreshLayoutEvent; +import org.gcube.portlets.user.dataminermanager.client.events.ComponentRefreshLayoutEvent.ComponentRefreshLayoutEventHandler; +import org.gcube.portlets.user.dataminermanager.client.events.ComponentRefreshLayoutEvent.HasComponentRefreshLayoutEventHandler; +import org.gcube.portlets.user.dataminermanager.client.parametersfield.AbstractFld; +import org.gcube.portlets.user.dataminermanager.client.parametersfield.OperatorFieldWidget; +import org.gcube.portlets.user.dataminermanager.client.parametersfield.TabularFld; +import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.i18n.client.DateTimeFormat; +import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat; +import com.google.gwt.resources.client.ImageResource; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.Image; +import com.sencha.gxt.core.client.util.Margins; +import com.sencha.gxt.widget.core.client.button.TextButton; +import com.sencha.gxt.widget.core.client.container.HtmlLayoutContainer; +import com.sencha.gxt.widget.core.client.container.MarginData; +import com.sencha.gxt.widget.core.client.container.SimpleContainer; +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.SelectEvent; +import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; +import com.sencha.gxt.widget.core.client.form.FieldLabel; +import com.sencha.gxt.widget.core.client.form.FieldSet; +import com.sencha.gxt.widget.core.client.form.FormPanel; +import com.sencha.gxt.widget.core.client.form.TextField; + +/** + * + * @author Giancarlo Panichi email: g.panichi@isti.cnr.it + * + */ +public class ComputationParametersPanel extends SimpleContainer { + + public interface ComputationParametersPanelHandler { + public void startComputation(String computationTitle, + String computationDescription); + } + + private static final String START_BUTTON_TOOLTIP = "Start Computation"; + + private static final ImageResource PRELOAD_IMAGE = DataMinerManager.resources + .loaderBig(); + + private VerticalLayoutContainer v; + private Operator operator; + private FormPanel parametersPanel; + private FieldSet parametersFieldSet; + private VerticalLayoutContainer vParameters; + private Map fieldWidgetsMap; + private ComputationParametersPanelHandler handler = null; + private TextField titleField; + private String defaultComputationTitle; + + /* + * public ComputationParametersPanel(DataMinerPortletServiceAsync service, + * Operator operator, ComputationParametersPanelHandler handler) { + * this(operator); this.setHandler(handler); } + */ + + public ComputationParametersPanel(Operator operator) { + super(); + this.operator = operator; + fieldWidgetsMap = new HashMap<>(); + try { + setDefaultComputationTitle(); + init(); + create(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + + private void init() { + addStyleName("workflow"); + } + + private void create() { + v = new VerticalLayoutContainer(); + add(v); + + Image img = new Image(GWT.getModuleBaseURL() + "../images/operators/" + + (operator.hasImage() ? operator.getId() : "DEFAULT_IMAGE") + + ".png"); + img.setStylePrimaryName("workflow-icon"); + v.add(img, new VerticalLayoutData(-1, -1, new Margins(-10,0,0,5))); + + HtmlLayoutContainer title = new HtmlLayoutContainer(operator.getName()); + title.addStyleName("workflow-title"); + v.add(title, new VerticalLayoutData(-1, -1, new Margins(15,0,0,-25))); + + String descr = operator.getDescription(); + descr = (descr == null || descr.contentEquals("")) ? "no-description" + : operator.getDescription(); + HtmlLayoutContainer description = new HtmlLayoutContainer(descr); + description.addStyleName("workflow-description"); + v.add(description, new VerticalLayoutData(-1, -1, new Margins(0,0,0,5))); + + addTitleField(); + + parametersPanel = new FormPanel() { + @Override + public boolean isValid(boolean preventMark) { + boolean flag = super.isValid(preventMark); + + if (flag) { + for (Map.Entry entry : fieldWidgetsMap + .entrySet()) { + OperatorFieldWidget fieldWidget = entry.getValue(); + flag = flag && fieldWidget.isValid(); + } + } + return flag; + } + + }; + parametersPanel.setBorders(false); + + // parametersPanel.getElement().getStyle().setMargin(20, px); + parametersFieldSet = new FieldSet(); + parametersFieldSet.setHeadingText("Parameters"); + vParameters = new VerticalLayoutContainer(); + parametersFieldSet.add(vParameters, new MarginData(0)); + parametersFieldSet.setCollapsible(false); + parametersPanel.add(parametersFieldSet, new MarginData(new Margins(5,5, 5, 5))); + + v.add(parametersPanel, new VerticalLayoutData(1, -1, new Margins())); + + loadOperatorParameters(); + + fireEvent(new ComponentRefreshLayoutEvent()); + } + + /** + * + */ + private void addTitleField() { + titleField = new TextField(); + titleField.setWidth(250); + titleField.setValue(defaultComputationTitle); + FieldLabel titleLabel = new FieldLabel(titleField, "Computation Title"); + v.add(titleLabel, new VerticalLayoutData(-1, -1, + new Margins(0,0,0,5))); + } + + /** + * @param parametersPanel + */ + private void loadOperatorParameters() { + DataMinerManager.getService().getParameters(operator, + new AsyncCallback>() { + @Override + public void onSuccess(List result) { + Log.debug("Retrieved Parameters!"); + operator.setOperatorParameters(result); + vParameters.clear(); + showForm(); + } + + @Override + public void onFailure(Throwable caught) { + UtilsGXT3.alert("Error ", + "Impossible to retrieve parameters."); + } + }); + Image img = new Image(PRELOAD_IMAGE); + img.setStyleName("workflow-parameters-preload"); + vParameters.add(img, new VerticalLayoutData(-1, -1, new Margins())); + forceLayout(); + } + + /** + * + */ + protected void showForm() { + try { + + // field widgets creation + for (Parameter p : operator.getOperatorParameters()) { + OperatorFieldWidget fieldWidget = new OperatorFieldWidget(p); + fieldWidgetsMap.put(p.getName(), fieldWidget); + vParameters.add(fieldWidget.getParameterLabel(), + new VerticalLayoutData(1, -1, new Margins())); + } + + for (Parameter p : operator.getOperatorParameters()) { + if (p.isColumn() || p.isColumnList()) { + // search for the table parameter which it depends + String tabParamName = (p.isColumn() ? ((ColumnParameter) p) + .getReferredTabularParameterName() + : ((ColumnListParameter) p) + .getReferredTabularParameterName()); + + try { + // get the column field and the tabular field referred + TabularFld tabularField = (TabularFld) fieldWidgetsMap + .get(tabParamName).getField(); + if (tabularField != null) { + AbstractFld field = fieldWidgetsMap + .get(p.getName()).getField(); + tabularField.addChangeListener(field); + } + } catch (Exception e) { + e.printStackTrace(); + UtilsGXT3 + .alert("Error", + "Column parameter \"" + + p.getName() + + " refers to a tabular parameter that doesn't exists (" + + tabParamName + ")\"", null); + } + } + } + + final TextButton submit = new TextButton("Start Computation"); + submit.setToolTip(START_BUTTON_TOOLTIP); + submit.setIcon(DataMinerManager.resources.startComputation()); + submit.getElement().getStyle().setMarginLeft(20, Unit.PX); + submit.getElement().getStyle().setMarginBottom(20, Unit.PX); + + submit.addSelectHandler(new SelectHandler() { + + @Override + public void onSelect(SelectEvent event) { + if (handler != null && parametersPanel.isValid()) { + String value = titleField.getValue(); + String title = (value == null || value + .contentEquals("")) ? defaultComputationTitle + : value; + handler.startComputation(title, title); // TODO insert + // description + } + + } + }); + + //new VerticalLayoutData(-1, -1, new Margins(0, 0, 20,20)) + v.add(submit); + + forceLayout(); + } catch (Throwable e) { + Log.error("Error in show form:" + e.getLocalizedMessage()); + e.printStackTrace(); + } + } + + public void updateOperatorParametersValues() { + for (Map.Entry entry : fieldWidgetsMap + .entrySet()) { + OperatorFieldWidget fieldWidget = entry.getValue(); + fieldWidget.updateOperatorParameterValue(); + } + } + + /** + * @return the operator + */ + public Operator getOperator() { + return operator; + } + + public void setHandler(ComputationParametersPanelHandler handler) { + this.handler = handler; + } + + public void setDefaultComputationTitle() { + String name = this.operator.getName(); + String date = DateTimeFormat + .getFormat(PredefinedFormat.DATE_TIME_SHORT).format(new Date()); + defaultComputationTitle = name + "-" + date; + } + +} diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/WorkflowOperatorPanel.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/WorkflowOperatorPanel.java deleted file mode 100644 index e0b4268..0000000 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/WorkflowOperatorPanel.java +++ /dev/null @@ -1,252 +0,0 @@ -/** - * - */ -package org.gcube.portlets.user.dataminermanager.client.experimentArea; - -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.gcube.portlets.user.dataminermanager.client.DataMinerManager; -import org.gcube.portlets.user.dataminermanager.client.bean.Operator; -import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ColumnListParameter; -import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ColumnParameter; -import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; -import org.gcube.portlets.user.dataminermanager.client.form.AbstractFld; -import org.gcube.portlets.user.dataminermanager.client.form.OperatorFieldWidget; -import org.gcube.portlets.user.dataminermanager.client.form.TabularFld; -import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync; -import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.Style.Unit; -import com.google.gwt.i18n.client.DateTimeFormat; -import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat; -import com.google.gwt.resources.client.ImageResource; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.HTML; -import com.google.gwt.user.client.ui.Image; -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.SimpleContainer; -import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; -import com.sencha.gxt.widget.core.client.event.SelectEvent; -import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; -import com.sencha.gxt.widget.core.client.form.FieldLabel; -import com.sencha.gxt.widget.core.client.form.FieldSet; -import com.sencha.gxt.widget.core.client.form.FormPanel; -import com.sencha.gxt.widget.core.client.form.TextField; - -/** - * @author ceras - * - */ -public class WorkflowOperatorPanel extends SimpleContainer { - - /** - * @author ceras - * - */ - public interface WorkflowOperatorPanelHandler { - public void startComputation(String computationTitle, String computationDescription); - } - - private static final String START_BUTTON_TOOLTIP = "Start Computation"; - - private static final ImageResource PRELOAD_IMAGE = DataMinerManager.resources.loaderBig(); - - private VerticalLayoutContainer v; - private Operator operator; - private FormPanel parametersPanel; - private FieldSet parametersFieldSet; - private Map fieldWidgetsMap = new HashMap(); - //private Map parameterValues = new HashMap(); - private WorkflowOperatorPanelHandler handler=null; - private TextField titleField; - - private String defaultComputationTitle; - - - public WorkflowOperatorPanel(DataMinerPortletServiceAsync service, Operator operator, WorkflowOperatorPanelHandler handler) { - this(operator); - this.setHandler(handler); - } - /** - * - */ - public WorkflowOperatorPanel(Operator operator) { - super(); - v=new VerticalLayoutContainer(); - add(v); - - this.operator = operator; - - this.defaultComputationTitle = getDefaultComputationTitle(); - //lc.setLayout(new FitLayout()); - - addStyleName("workflow"); - - Image img = new Image(GWT.getModuleBaseURL()+"../images/operators/"+(operator.hasImage() ? operator.getId() : "DEFAULT_IMAGE")+".png"); - img.addStyleName("workflow-icon"); - v.add(img); - - HTML title = new HTML(operator.getName()); - title.addStyleName("workflow-title"); - v.add(title); - - String descr = operator.getDescription(); - descr = (descr==null || descr.contentEquals("")) ? "no-description" : operator.getDescription(); - HTML description = new HTML(descr); - description.addStyleName("workflow-description"); - v.add(description); - - addTitleField(); - - parametersPanel = new FormPanel(){ - @Override - public boolean isValid(boolean preventMark) { - boolean flag = super.isValid(preventMark); - - if (flag) { - for (Map.Entry entry : fieldWidgetsMap.entrySet()) { - OperatorFieldWidget fieldWidget = entry.getValue(); - flag = flag && fieldWidget.isValid(); - } - } - return flag; - } - - - }; - parametersPanel.setBorders(false); - - //parametersPanel.getElement().getStyle().setMargin(20, px); - parametersFieldSet = new FieldSet(); - parametersFieldSet.setHeadingText("Parameters"); - parametersPanel.add(parametersFieldSet); - - v.add(parametersPanel); - - loadOperatorParameters(); - - } - - /** - * - */ - private void addTitleField() { - HorizontalLayoutContainer hp = new HorizontalLayoutContainer(); - hp.add(new HTML("
Computation Title:
")); - titleField = new TextField(); - titleField.setWidth(250); - titleField.setValue(this.defaultComputationTitle); - FieldLabel titleLabel=new FieldLabel(titleField,"Computation Title"); - hp.add(titleLabel); - v.add(hp); - } - - /** - * @param parametersPanel - */ - private void loadOperatorParameters() { - DataMinerManager.getService().getParameters(operator, new AsyncCallback>() { - @Override - public void onSuccess(List result) { - operator.setOperatorParameters(result); - parametersFieldSet.clear(); - showForm(); - } - - @Override - public void onFailure(Throwable caught) { - UtilsGXT3.alert("Error ", "Impossible to retrieve parameters."); - } - }); - Image img = new Image(PRELOAD_IMAGE); - img.setStyleName("workflow-parameters-preload"); - parametersFieldSet.add(img); - } - - /** - * - */ - protected void showForm() { - // field widgets creation - for (Parameter p : operator.getOperatorParameters()) { - OperatorFieldWidget fieldWidget = new OperatorFieldWidget(p); - fieldWidgetsMap.put(p.getName(), fieldWidget); - parametersFieldSet.add(fieldWidget); - } - - for (Parameter p: operator.getOperatorParameters()) { - if (p.isColumn() || p.isColumnList()) { - // search for the table parameter which it depends - String tabParamName = (p.isColumn() - ? ((ColumnParameter)p).getReferredTabularParameterName() - : ((ColumnListParameter)p).getReferredTabularParameterName()); - - try { - // get the column field and the tabular field referred - TabularFld tabularField = (TabularFld)fieldWidgetsMap.get(tabParamName).getField(); - AbstractFld field = fieldWidgetsMap.get(p.getName()).getField(); - tabularField.addChangeListener(field); - } catch (Exception e) { - e.printStackTrace(); - UtilsGXT3.alert("Error", "Column parameter \""+p.getName()+" refers to a tabular parameter that doesn't exists ("+tabParamName+")\"", null); - } - } - } - - - final TextButton submit = new TextButton("Start Computation"); - submit.setToolTip(START_BUTTON_TOOLTIP); - submit.setIcon(DataMinerManager.resources.startComputation()); - submit.getElement().getStyle().setMarginLeft(20,Unit.PX); - submit.getElement().getStyle().setMarginBottom(20, Unit.PX); - - submit.addSelectHandler(new SelectHandler() { - - @Override - public void onSelect(SelectEvent event) { - if (handler!=null && parametersPanel.isValid()) { - String value = titleField.getValue(); - String title = (value==null || value.contentEquals("")) ? defaultComputationTitle : value; - handler.startComputation(title, title); // TODO insert description - } - - } - }); - - v.add(submit); - forceLayout(); - - parametersPanel.forceLayout(); - } - - public void updateOperatorParametersValues() { - for (Map.Entry entry : fieldWidgetsMap.entrySet()) { - OperatorFieldWidget fieldWidget = entry.getValue(); - fieldWidget.updateOperatorParameterValue(); - } - } - - /** - * @return the operator - */ - public Operator getOperator() { - return operator; - } - - public void setHandler(WorkflowOperatorPanelHandler handler) { - this.handler = handler; - } - - public String getDefaultComputationTitle() { - String name = this.operator.getName(); - //String date = DateTimeFormat.getShortDateTimeFormat().format(new Date()); - String date = DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_SHORT).format(new Date()); - - return name+"-"+date; - } -} diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/WorkflowPanel.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/WorkflowPanel.java index 246bd43..9d32594 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/WorkflowPanel.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/experimentArea/WorkflowPanel.java @@ -6,9 +6,8 @@ package org.gcube.portlets.user.dataminermanager.client.experimentArea; import org.gcube.portlets.user.dataminermanager.client.DataMinerManager; import org.gcube.portlets.user.dataminermanager.client.bean.Operator; import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider; -import org.gcube.portlets.user.dataminermanager.client.events.EmptyComputationPanelEvent; import org.gcube.portlets.user.dataminermanager.client.events.ResubmitComputationEvent; -import org.gcube.portlets.user.dataminermanager.client.experimentArea.WorkflowOperatorPanel.WorkflowOperatorPanelHandler; +import org.gcube.portlets.user.dataminermanager.client.events.StartComputationEvent; import com.allen_sauer.gwt.log.client.Log; import com.sencha.gxt.widget.core.client.TabItemConfig; @@ -24,7 +23,7 @@ public class WorkflowPanel extends TabPanel { public static final String DEFAULT_OPERATOR = "AQUAMAPS_SUITABLE"; - private WorkflowOperatorPanel workflowOperatorPanel; + private ComputationExecutionPanel computationExecutionPanel; private ComputationPanel computationPanel; @@ -44,7 +43,6 @@ public class WorkflowPanel extends TabPanel { } private void create() { - workflowOperatorPanel = null; TabItemConfig tabWorkFlowLcItemConf = new TabItemConfig( ".: Computation", false); @@ -52,13 +50,14 @@ public class WorkflowPanel extends TabPanel { .folderExplore()); computationPanel = new ComputationPanel(); computationPanel - .addEmptyComputationPanelEventHandler(new EmptyComputationPanelEvent.EmptyComputationPanelEventHandler() { + .addStartComputationEventHandler(new StartComputationEvent.StartComputationEventHandler() { @Override - public void onEmpty(EmptyComputationPanelEvent event) { - Log.debug("EmptyComputationPanelEvent Received"); - workflowOperatorPanel = null; - + public void onStart(StartComputationEvent event) { + Log.debug("StartComputationEvent Received:"+event); + startComputation(event.getOp(), event.getComputationTitle(), + event.getComputationDescription()); + } }); add(computationPanel, tabWorkFlowLcItemConf); @@ -93,35 +92,22 @@ public class WorkflowPanel extends TabPanel { * @param operator * */ - private void startComputation(String computationTitle, + private void startComputation(Operator op, String computationTitle, String computationDescription) { - - if (workflowOperatorPanel != null) { - forceLayout(); - workflowOperatorPanel.updateOperatorParametersValues(); - Operator op = workflowOperatorPanel.getOperator(); - - computationExecutionPanel.startNewComputation(op, computationTitle, - computationDescription); - } + setActiveWidget(computationExecutionPanel); + computationExecutionPanel.startNewComputation(op, computationTitle, + computationDescription); + + } public void addOperator(Operator op) { setActiveWidget(computationPanel); - - workflowOperatorPanel = new WorkflowOperatorPanel(op); - workflowOperatorPanel.setHandler(new WorkflowOperatorPanelHandler() { - @Override - public void startComputation(String computationTitle, - String computationDescription) { - WorkflowPanel.this.startComputation(computationTitle, - computationDescription); - setActiveWidget(computationExecutionPanel); - } - }); - - computationPanel.addWorkflowOperatorPanel(workflowOperatorPanel); + computationPanel.addOperator(op); } - + + + + } diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/StringFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/StringFld.java deleted file mode 100644 index 1949c6e..0000000 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/StringFld.java +++ /dev/null @@ -1,55 +0,0 @@ -/** - * - */ -package org.gcube.portlets.user.dataminermanager.client.form; - -import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter; -import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; - -import com.google.gwt.user.client.ui.Widget; -import com.sencha.gxt.widget.core.client.form.TextField; - -/** - * - * @author Giancarlo Panichi - * email: g.panichi@isti.cnr.it - * - */ -public class StringFld extends AbstractFld { - - private TextField textField; - - /** - * @param parameter - */ - public StringFld(Parameter parameter) { - super(parameter); - - textField = new TextField(); - ObjectParameter p = (ObjectParameter) parameter; - textField.setValue(p.getDefaultValue()); - - if (p.getDefaultValue() == null) - textField.setAllowBlank(false); - if (p.getDescription() != null) - textField.setToolTip(p.getDescription()); - - } - - /** - * - */ - @Override - public String getValue() { - return textField.getValue(); - } - - /** - * - */ - @Override - public Widget getWidget() { - return textField; - } - -} diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/AbstractFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/AbstractFld.java similarity index 82% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/AbstractFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/AbstractFld.java index baaab3a..29c7de5 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/AbstractFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/AbstractFld.java @@ -1,14 +1,16 @@ /** * */ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; import com.google.gwt.user.client.ui.Widget; /** - * @author ceras + * + * @author Giancarlo Panichi + * email: g.panichi@isti.cnr.it * */ public abstract class AbstractFld { diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/BooleanFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/BooleanFld.java similarity index 92% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/BooleanFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/BooleanFld.java index 4737614..d8f9b6d 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/BooleanFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/BooleanFld.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/ColumnFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/ColumnFld.java similarity index 97% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/ColumnFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/ColumnFld.java index 4ff2c7e..8e73055 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/ColumnFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/ColumnFld.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import java.util.ArrayList; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/ColumnListFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/ColumnListFld.java similarity index 98% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/ColumnListFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/ColumnListFld.java index da4c938..9d6a200 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/ColumnListFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/ColumnListFld.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/DoubleFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/DoubleFld.java similarity index 93% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/DoubleFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/DoubleFld.java index bd2e27e..5c9eb5e 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/DoubleFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/DoubleFld.java @@ -1,4 +1,4 @@ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/EnumFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/EnumFld.java similarity index 94% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/EnumFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/EnumFld.java index d254549..b3155a8 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/EnumFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/EnumFld.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.EnumParameter; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/FileFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/FileFld.java similarity index 98% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/FileFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/FileFld.java index a83fbd8..2816e7c 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/FileFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/FileFld.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/FloatFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/FloatFld.java similarity index 93% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/FloatFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/FloatFld.java index d984f28..c379c66 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/FloatFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/FloatFld.java @@ -1,4 +1,4 @@ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/IntFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/IntFld.java similarity index 93% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/IntFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/IntFld.java index 12784c2..dad45de 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/IntFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/IntFld.java @@ -1,5 +1,5 @@ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/ListIntFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/ListIntFld.java similarity index 98% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/ListIntFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/ListIntFld.java index 20594f7..b36da7a 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/ListIntFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/ListIntFld.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/ListStringFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/ListStringFld.java similarity index 98% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/ListStringFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/ListStringFld.java index 8d95c35..31a8d34 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/ListStringFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/ListStringFld.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/OpenTableButton.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/OpenTableButton.java similarity index 96% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/OpenTableButton.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/OpenTableButton.java index 846bcdc..0bcc47c 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/OpenTableButton.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/OpenTableButton.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import org.gcube.portlets.user.dataminermanager.client.DataMinerManager; import org.gcube.portlets.user.dataminermanager.shared.data.TableItemSimple; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/OperatorFieldWidget.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/OperatorFieldWidget.java similarity index 69% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/OperatorFieldWidget.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/OperatorFieldWidget.java index bac6d6f..e0499ca 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/OperatorFieldWidget.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/OperatorFieldWidget.java @@ -1,35 +1,27 @@ /** * */ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ListParameter; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; import com.allen_sauer.gwt.log.client.Log; -import com.google.gwt.user.client.ui.HTML; -import com.sencha.gxt.core.client.util.Margins; -import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer; -import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer.HorizontalLayoutData; -import com.sencha.gxt.widget.core.client.container.MarginData; -import com.sencha.gxt.widget.core.client.container.SimpleContainer; import com.sencha.gxt.widget.core.client.form.FieldLabel; /** - * @author ceras + * + * @author Giancarlo Panichi email: g.panichi@isti.cnr.it * */ -public class OperatorFieldWidget extends SimpleContainer { +public class OperatorFieldWidget { private Parameter parameter; private AbstractFld field; - private HorizontalLayoutContainer horiz; - - // private Field generalParameterField; - // private SimpleComboBox inputDataParameterField; - // private TextField outputDataParameterField; + private FieldLabel parameterLabel; /** * @@ -37,10 +29,8 @@ public class OperatorFieldWidget extends SimpleContainer { public OperatorFieldWidget(Parameter p) { super(); this.parameter = p; - horiz = new HorizontalLayoutContainer(); - + try { - // this.setStyleAttribute("margin", "10px"); if (p.isObject()) field = createObjectField((ObjectParameter) p); else if (p.isEnum()) @@ -58,22 +48,21 @@ public class OperatorFieldWidget extends SimpleContainer { else if (p.isFile()) field = new FileFld(p); - FieldLabel label = new FieldLabel(field.getWidget(), p.getName()); - horiz.add(label, new HorizontalLayoutData(-1, 1, new Margins(0))); - - if (p.getDescription() != null) { - HTML descr = new HTML(p.getDescription()); - descr.addStyleName("workflow-fieldDescription"); - horiz.add(descr); + if (field == null) { + parameterLabel = new FieldLabel(null, p.getName()); + parameterLabel.setLabelWidth(200); + parameterLabel.setLabelWordWrap(true); + + } else { + parameterLabel = new FieldLabel(field.getWidget(), p.getName()); + parameterLabel.setLabelWidth(200); + parameterLabel.setLabelWordWrap(true); } - } catch (Throwable e) { Log.error("Error: " + e.getLocalizedMessage()); e.printStackTrace(); - horiz.add(new FieldLabel(new HTML("Error in field retrieving!"),p.getName())); } - - add(horiz, new MarginData(0)); + } /** @@ -91,6 +80,10 @@ public class OperatorFieldWidget extends SimpleContainer { return getFieldValue(); } + public FieldLabel getParameterLabel() { + return parameterLabel; + } + /** * @param p * @return diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/StringFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/StringFld.java new file mode 100644 index 0000000..71aecf1 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/StringFld.java @@ -0,0 +1,87 @@ +/** + * + */ +package org.gcube.portlets.user.dataminermanager.client.parametersfield; + +import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter; +import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; + +import com.google.gwt.user.client.ui.Widget; +import com.sencha.gxt.core.client.util.Margins; +import com.sencha.gxt.core.client.util.Padding; +import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData; +import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutPack; +import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer; +import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer; +import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer.HorizontalLayoutData; +import com.sencha.gxt.widget.core.client.container.HtmlLayoutContainer; +import com.sencha.gxt.widget.core.client.container.SimpleContainer; +import com.sencha.gxt.widget.core.client.form.TextField; + +/** + * + * @author Giancarlo Panichi email: g.panichi@isti.cnr.it + * + */ +public class StringFld extends AbstractFld { + + private SimpleContainer simpleContainer; + private HorizontalLayoutContainer horiz; + private TextField textField; + + /** + * @param parameter + */ + public StringFld(Parameter parameter) { + super(parameter); + simpleContainer=new SimpleContainer(); + HBoxLayoutContainer horiz = new HBoxLayoutContainer(); + horiz.setPack(BoxLayoutPack.START); + horiz.setEnableOverflow(false); + + ObjectParameter p = (ObjectParameter) parameter; + + textField = new TextField(); + textField.setValue(p.getDefaultValue()); + + if (p.getDefaultValue() == null) + textField.setAllowBlank(false); + + HtmlLayoutContainer descr; + + if (p.getDescription() == null) { + descr=new HtmlLayoutContainer("

"); + descr.addStyleName("workflow-fieldDescription"); + + } else { + textField.setToolTip(p.getDescription()); + descr=new HtmlLayoutContainer("

"+p.getDescription()+"

"); + descr.addStyleName("workflow-fieldDescription"); + } + + horiz.add(textField,new BoxLayoutData(new Margins())); + horiz.add(descr,new BoxLayoutData(new Margins())); + + /*horiz.add(textField, new HorizontalLayoutData(-1,-1,new Margins())); + horiz.add(descr,new HorizontalLayoutData(1,-1,new Margins()));*/ + simpleContainer.add(horiz); + } + + /** + * + */ + @Override + public String getValue() { + return textField.getValue(); + } + + /** + * + */ + @Override + public Widget getWidget() { + return simpleContainer; + } + +} diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/TabularFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabularFld.java similarity index 99% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/TabularFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabularFld.java index 7975ef4..81fb5e5 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/TabularFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabularFld.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/TabularListFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabularListFld.java similarity index 98% rename from src/main/java/org/gcube/portlets/user/dataminermanager/client/form/TabularListFld.java rename to src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabularListFld.java index c8cc0f0..0a2803a 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/TabularListFld.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabularListFld.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.portlets.user.dataminermanager.client.form; +package org.gcube.portlets.user.dataminermanager.client.parametersfield; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/rpc/DataMinerPortletService.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/rpc/DataMinerPortletService.java index 52209f6..9f3b14c 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/rpc/DataMinerPortletService.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/rpc/DataMinerPortletService.java @@ -1,13 +1,9 @@ package org.gcube.portlets.user.dataminermanager.client.rpc; -import java.util.Date; import java.util.List; import java.util.Map; import org.gcube.portlets.user.dataminermanager.client.bean.ComputationStatus; -import org.gcube.portlets.user.dataminermanager.client.bean.CsvMetadata; -import org.gcube.portlets.user.dataminermanager.client.bean.FileMetadata; -import org.gcube.portlets.user.dataminermanager.client.bean.ImportStatus; import org.gcube.portlets.user.dataminermanager.client.bean.Operator; import org.gcube.portlets.user.dataminermanager.client.bean.OperatorsClassification; import org.gcube.portlets.user.dataminermanager.client.bean.ResourceItem; @@ -32,22 +28,7 @@ import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; @RemoteServiceRelativePath("dataminerman") public interface DataMinerPortletService extends RemoteService { - public UserInfo hello() throws ServiceException; - - // get all operators and categories - public List getOperatorsClassifications() - throws Exception; - - // get parameters for a given operator - public List getParameters(Operator operator) throws Exception; - - public ComputationId startComputation(Operator op, String computationTitle, - String computationDescription) throws Exception; - - // get a status for a computation - public ComputationStatus getComputationStatus(ComputationId computationId) - throws Exception; - + // get tables info belongs to a given templates set (for relative user) public List getTableItems(List templates) throws Exception; @@ -59,17 +40,7 @@ public interface DataMinerPortletService extends RemoteService { public Map getParametersMapByComputationId(ComputationId computationId) throws ServiceException; - public String importTable(CsvMetadata csvMetadata) throws Exception; - - public CsvMetadata getCsvMetadataFromCsvImporterWizard() throws Exception; - - public List getImportsStatus(Date todayDate) - throws ServiceException; - - // get a status for an import - public ImportStatus getImportStatusById(String id) throws ServiceException; - - + public Map getMapFromMapResource(MapResource mapResource) throws Exception; @@ -86,12 +57,28 @@ public interface DataMinerPortletService extends RemoteService { public String exportResource(String folderId, String fileName, ResourceItem resourceItem) throws Exception; + + /** + * Dataminer + * + */ + public UserInfo hello() throws ServiceException; + + public List getOperatorsClassifications() + throws Exception; + + public List getParameters(Operator operator) throws Exception; + + public ComputationId startComputation(Operator op, String computationTitle, + String computationDescription) throws Exception; + + public ComputationStatus getComputationStatus(ComputationId computationId) + throws Exception; + + public ComputationId resubmit(ComputationId computationId) throws ServiceException; - public FileMetadata getFilePathFromImporterWizard() throws Exception; - - public String importFile(FileMetadata fileMetadata) throws Exception; - + public TableItemSimple retrieveTableInformation(Item item) throws ServiceException; diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/rpc/DataMinerPortletServiceAsync.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/rpc/DataMinerPortletServiceAsync.java index 3a65c0e..3be7f24 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/rpc/DataMinerPortletServiceAsync.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/rpc/DataMinerPortletServiceAsync.java @@ -36,21 +36,6 @@ public interface DataMinerPortletServiceAsync { public static DataMinerPortletServiceAsync INSTANCE = (DataMinerPortletServiceAsync) GWT .create(DataMinerPortletService.class); - - void hello(AsyncCallback callback); - - void getOperatorsClassifications( - AsyncCallback> callback); - - void getParameters(Operator operator, - AsyncCallback> callback); - - void startComputation(Operator op, String computationTitle, - String computationDescription, - AsyncCallback asyncCallback); - - void getComputationStatus(ComputationId computationId, - AsyncCallback asyncCallback); void getTableItems(List templates, AsyncCallback> callback); @@ -62,13 +47,6 @@ public interface DataMinerPortletServiceAsync { void getResourceByComputationId(ComputationId computationId, AsyncCallback callback); - void importTable(CsvMetadata csvMetadata, AsyncCallback callback); - - void getImportsStatus(Date todayDate, - AsyncCallback> callback); - - void getImportStatusById(String id, AsyncCallback callback); - void getMapFromMapResource(MapResource mapResource, AsyncCallback> callback); @@ -82,17 +60,31 @@ public interface DataMinerPortletServiceAsync { void removeImport(String id, AsyncCallback callback); - void getCsvMetadataFromCsvImporterWizard(AsyncCallback callback); - void exportResource(String folderId, String fileName, ResourceItem resourceItem, AsyncCallback callback); + + /** + * DataMiner + * + */ + void hello(AsyncCallback callback); + + void getOperatorsClassifications( + AsyncCallback> callback); + + void getParameters(Operator operator, + AsyncCallback> callback); + + void startComputation(Operator op, String computationTitle, + String computationDescription, + AsyncCallback asyncCallback); + + void getComputationStatus(ComputationId computationId, + AsyncCallback asyncCallback); + void resubmit(ComputationId computationId, AsyncCallback callback); - void getFilePathFromImporterWizard(AsyncCallback callback); - - void importFile(FileMetadata fileMetadata, AsyncCallback callback); - void retrieveTableInformation(Item item, AsyncCallback callback); void getDataMinerWorkArea(AsyncCallback asyncCallback); diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/dataminermanager.gwt.xml b/src/main/java/org/gcube/portlets/user/dataminermanager/dataminermanager.gwt.xml index b2035bc..276ee50 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/dataminermanager.gwt.xml +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/dataminermanager.gwt.xml @@ -47,19 +47,19 @@ - + /> - + diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/server/DataMinerManagerServiceImpl.java b/src/main/java/org/gcube/portlets/user/dataminermanager/server/DataMinerManagerServiceImpl.java index 5eab9b9..76f3219 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/server/DataMinerManagerServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/server/DataMinerManagerServiceImpl.java @@ -3,7 +3,6 @@ package org.gcube.portlets.user.dataminermanager.server; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; -import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -20,10 +19,6 @@ import org.gcube.common.homelibrary.home.workspace.WorkspaceItem; import org.gcube.common.homelibrary.home.workspace.exceptions.ItemAlreadyExistException; import org.gcube.common.homelibrary.util.WorkspaceUtil; import org.gcube.portlets.user.dataminermanager.client.bean.ComputationStatus; -import org.gcube.portlets.user.dataminermanager.client.bean.ComputationStatus.Status; -import org.gcube.portlets.user.dataminermanager.client.bean.CsvMetadata; -import org.gcube.portlets.user.dataminermanager.client.bean.FileMetadata; -import org.gcube.portlets.user.dataminermanager.client.bean.ImportStatus; import org.gcube.portlets.user.dataminermanager.client.bean.Operator; import org.gcube.portlets.user.dataminermanager.client.bean.OperatorsClassification; import org.gcube.portlets.user.dataminermanager.client.bean.ResourceItem; @@ -327,106 +322,7 @@ public class DataMinerManagerServiceImpl extends RemoteServiceServlet implements } } - @Override - public String importTable(CsvMetadata csvMetadata) throws Exception { - try { - HttpSession session = this.getThreadLocalRequest().getSession(); - ASLSession aslSession = SessionUtil.getASLSession(session); - return "1"; - } catch (Exception e) { - logger.error(e.getLocalizedMessage(), e); - // e.printStackTrace(); - throw (e); - } - } - - @Override - public String importFile(FileMetadata fileMetadata) throws Exception { - try { - HttpSession session = this.getThreadLocalRequest().getSession(); - ASLSession aslSession = SessionUtil.getASLSession(session); - - String id = ""; - - return id; - } catch (Exception e) { - logger.error(e.getLocalizedMessage(), e); - throw (e); - } - } - - @Override - public CsvMetadata getCsvMetadataFromCsvImporterWizard() throws Exception { - HttpSession httpSession = this.getThreadLocalRequest().getSession(); - //CSVParserConfiguration csvParserConfiguration = (CSVParserConfiguration) httpSession - // .getAttribute("csvParserConfiguration"); - //String csvImportFilePath = (String) httpSession - // .getAttribute("csvImportFilePath"); - //boolean hasHeader = csvParserConfiguration.isHasHeader(); - //String delimiter = "" + csvParserConfiguration.getDelimiter(); - //String comment = "" + csvParserConfiguration.getComment(); - - //return new CsvMetadata(hasHeader, csvImportFilePath, delimiter, comment); - return null; - } - - @Override - public FileMetadata getFilePathFromImporterWizard() throws Exception { - FileMetadata result; - // logger.info("getFilePathFromImporterWizard"); - HttpSession httpSession = this.getThreadLocalRequest().getSession(); - String fileImportFilePath = (String) httpSession - .getAttribute("fileImportPath"); - // logger.info("filePaht: " + fileImportFilePath); - String type = (String) httpSession.getAttribute("typeFile"); - // logger.info("type: " + type); - - if (type == "DARWINCORE") { - String fileTaxaImportFilePath = (String) httpSession - .getAttribute("generatedTaxaFilePath"); - // logger.info("fileTaxaImportFilePath: " + fileTaxaImportFilePath); - String fileVernacularImportFilePath = (String) httpSession - .getAttribute("generatedVernacular"); - // logger.info("fileVernacularImportFilePath: " - // + fileVernacularImportFilePath); - - result = new FileMetadata(fileImportFilePath, - fileTaxaImportFilePath, fileVernacularImportFilePath, type); - } else - result = new FileMetadata(fileImportFilePath, type); - - // logger.info("result.filePath: " + result.getFileAbsolutePath()); - // logger.info("result.type: " + result.getType()); - - return result; - } - - @Override - public List getImportsStatus(Date todayDate) - throws ServiceException { - HttpSession session = this.getThreadLocalRequest().getSession(); - ASLSession aslSession = SessionUtil.getASLSession(session); - - List listStatus = new ArrayList(); - - return listStatus; - } - - @Override - public ImportStatus getImportStatusById(String importId) - throws ServiceException { - HttpSession session = this.getThreadLocalRequest().getSession(); - ASLSession aslSession = SessionUtil.getASLSession(session); - - Status status = Status.COMPLETE; - - ImportStatus importStatus = new ImportStatus(); - - importStatus.setStatus(status); - - return importStatus; - } @@ -616,5 +512,6 @@ public class DataMinerManagerServiceImpl extends RemoteServiceServlet implements } + } diff --git a/src/main/webapp/DataMinerManager.css b/src/main/webapp/DataMinerManager.css index 4acebd6..68c71bc 100644 --- a/src/main/webapp/DataMinerManager.css +++ b/src/main/webapp/DataMinerManager.css @@ -191,8 +191,7 @@ opacity: 0.6; } -/* WORKFLOW PANEL */ -.workflow, .tableImporter, .uploadMonitor { +.tableImporter, .uploadMonitor { box-shadow: inset 0 0 28px rgba(0, 0, 0, 0.11), 0 0 0 rgba(255, 255, 255, 1), 0 0 1px rgba(196, 196, 196, 1), inset 0 0 1px rgba(77, 77, 77, 1); @@ -215,6 +214,33 @@ margin-right: 5px; } +/* WORKFLOW PANEL */ +.workflow { + box-shadow: inset 0 0 28px rgba(0, 0, 0, 0.11), 0 0 0 + rgba(255, 255, 255, 1), 0 0 1px rgba(196, 196, 196, 1), inset 0 0 1px + rgba(77, 77, 77, 1); + -moz-box-shadow: inset 0 0 28px rgba(0, 0, 0, 0.11), 0 0 0 + rgba(255, 255, 255, 1), 0 0 1px rgba(196, 196, 196, 1), inset 0 0 1px + rgba(77, 77, 77, 1); + -webkit-box-shadow: inset 0 0 28px rgba(0, 0, 0, 0.11), 0 0 0 + rgba(255, 255, 255, 1), 0 0 1px rgba(196, 196, 196, 1), inset 0 0 1px + rgba(77, 77, 77, 1); + -o-box-shadow: inset 0 0 28px rgba(0, 0, 0, 0.11), 0 0 0 + rgba(255, 255, 255, 1), 0 0 1px rgba(196, 196, 196, 1), inset 0 0 1px + rgba(77, 77, 77, 1); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + -o-border-radius: 5px; + /*padding: 5px;*/ + border: 1px solid black; + /*margin-left: 5px; + margin-right: 5px;*/ +} + + + + .workflow-icon { border: 1px solid black; float: left; @@ -228,22 +254,18 @@ font-size: 16px; font-weight: bold; color: #000077; - margin: 5px; } + .workflow-description { font-size: 13px; color: #505050; - margin-left: 65px; - margin-bottom: 20px; } + .workflow-fieldDescription { font-size: 12px; color: #505050; - text-align: right; - margin-left: 20px; - margin-top: 4px; } .workflow-templatesList {