diff --git a/pom.xml b/pom.xml index debf8a7..48e5b03 100644 --- a/pom.xml +++ b/pom.xml @@ -297,6 +297,13 @@ tabular-data-share-widget [0.0.1-SNAPSHOT,2.0.0-SNAPSHOT) + + + + org.gcube.portlets.user + tabular-data-rule-widget + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + diff --git a/src/main/java/org/gcube/portlets/user/td/client/TabularDataController.java b/src/main/java/org/gcube/portlets/user/td/client/TabularDataController.java index 1320661..963ef0e 100644 --- a/src/main/java/org/gcube/portlets/user/td/client/TabularDataController.java +++ b/src/main/java/org/gcube/portlets/user/td/client/TabularDataController.java @@ -8,11 +8,6 @@ import java.util.HashMap; import org.gcube.portlets.user.td.chartswidget.client.ChartsWidgetTD; import org.gcube.portlets.user.td.client.logs.TDMLogs; import org.gcube.portlets.user.td.client.rstudio.RStudio; -import org.gcube.portlets.user.td.client.rule.RuleActiveDialog; -import org.gcube.portlets.user.td.client.rule.RuleApplyDialog; -import org.gcube.portlets.user.td.client.rule.RuleDeleteDialog; -import org.gcube.portlets.user.td.client.rule.RuleOpenDialog; -import org.gcube.portlets.user.td.client.rule.RuleShareDialog; import org.gcube.portlets.user.td.client.template.TemplateApplyDialog; import org.gcube.portlets.user.td.client.template.TemplateDeleteDialog; import org.gcube.portlets.user.td.client.template.TemplateOpenDialog; @@ -25,7 +20,7 @@ import org.gcube.portlets.user.td.csvimportwidget.client.CSVImportWizardTD; import org.gcube.portlets.user.td.expressionwidget.client.MultiColumnFilterDialog; import org.gcube.portlets.user.td.expressionwidget.client.ReplaceColumnByMultiColumnExpressionDialog; import org.gcube.portlets.user.td.expressionwidget.client.RowsDeleteByMultiColumnExpressionDialog; -import org.gcube.portlets.user.td.expressionwidget.client.RuleDialog; +import org.gcube.portlets.user.td.expressionwidget.client.RuleOnColumnCreateDialog; import org.gcube.portlets.user.td.extractcodelistwidget.client.ExtractCodelistWizardTD; import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsLockedException; @@ -37,6 +32,11 @@ import org.gcube.portlets.user.td.mainboxwidget.client.MainBoxPanel; import org.gcube.portlets.user.td.mapwidget.client.MapWidgetTD; import org.gcube.portlets.user.td.openwidget.client.TDOpen; import org.gcube.portlets.user.td.replacebyexternalwidget.client.ReplaceByExternalTD; +import org.gcube.portlets.user.td.rulewidget.client.RuleActiveDialog; +import org.gcube.portlets.user.td.rulewidget.client.RuleApplyDialog; +import org.gcube.portlets.user.td.rulewidget.client.RuleDeleteDialog; +import org.gcube.portlets.user.td.rulewidget.client.RuleOpenDialog; +import org.gcube.portlets.user.td.rulewidget.client.RuleShareDialog; import org.gcube.portlets.user.td.sdmxexportwidget.client.SDMXExportWizardTD; import org.gcube.portlets.user.td.sdmximportwidget.client.SDMXImportWizardTD; import org.gcube.portlets.user.td.sharewidget.client.TRShare; @@ -1714,7 +1714,7 @@ public class TabularDataController { private void openNewRule() { Log.debug("Request Open New Rule Dialog"); - RuleDialog cfDialog = new RuleDialog(eventBus); + RuleOnColumnCreateDialog cfDialog = new RuleOnColumnCreateDialog(eventBus); cfDialog.show(); } diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleActiveDialog.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleActiveDialog.java deleted file mode 100644 index 5518133..0000000 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleActiveDialog.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.gcube.portlets.user.td.client.rule; - -import org.gcube.portlets.user.td.client.resource.TabularDataResources; -import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; - -import com.google.web.bindery.event.shared.EventBus; -import com.sencha.gxt.widget.core.client.Window; -import com.sencha.gxt.widget.core.client.event.SelectEvent; -import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; - -/** - * - * @author "Giancarlo Panichi" g.panichi@isti.cnr.it - * - */ -public class RuleActiveDialog extends Window { - private static final String WIDTH = "720px"; - private static final String HEIGHT = "428px"; - public RuleActiveDialog(TRId trId, EventBus eventBus) { - initWindow(); - - RuleActivePanel ruleActivePanel = new RuleActivePanel(this, - trId, eventBus); - add(ruleActivePanel); - } - - protected void initWindow() { - setWidth(WIDTH); - setHeight(HEIGHT); - setBodyBorder(false); - setResizable(false); - setHeadingText("Active Rules On TabularResource"); - setClosable(true); - setModal(true); - forceLayoutOnResize = true; - getHeader().setIcon(TabularDataResources.INSTANCE.ruleTabularResource()); - - } - - /** - * {@inheritDoc} - */ - @Override - protected void initTools() { - super.initTools(); - - closeBtn.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - close(); - } - }); - - } - - protected void close() { - hide(); - } - - - -} diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleActivePanel.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleActivePanel.java deleted file mode 100644 index 48b4a82..0000000 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleActivePanel.java +++ /dev/null @@ -1,481 +0,0 @@ -package org.gcube.portlets.user.td.client.rule; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import org.gcube.portlets.user.td.client.resource.TabularDataResources; -import org.gcube.portlets.user.td.expressionwidget.client.rpc.ExpressionServiceAsync; -import org.gcube.portlets.user.td.expressionwidget.shared.rule.RuleDescriptionDataProperties; -import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsFinalException; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsLockedException; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; -import org.gcube.portlets.user.td.gwtservice.shared.rule.AppliedRulesResponseData; -import org.gcube.portlets.user.td.gwtservice.shared.rule.DetachColumnRulesSession; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleDescriptionData; -import org.gcube.portlets.user.td.tablewidget.client.util.UtilsGXT3; -import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; -import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType; -import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; -import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnData; - -import com.allen_sauer.gwt.log.client.Log; -import com.google.gwt.cell.client.AbstractCell; -import com.google.gwt.core.client.GWT; -import com.google.gwt.event.logical.shared.SelectionEvent; -import com.google.gwt.event.logical.shared.SelectionHandler; -import com.google.gwt.safehtml.shared.SafeHtml; -import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.web.bindery.event.shared.EventBus; -import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; -import com.sencha.gxt.core.client.XTemplates; -import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode; -import com.sencha.gxt.core.client.util.Margins; -import com.sencha.gxt.data.shared.ListStore; -import com.sencha.gxt.widget.core.client.FramedPanel; -import com.sencha.gxt.widget.core.client.button.TextButton; -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.HBoxLayoutContainer.HBoxLayoutAlign; -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.grid.ColumnConfig; -import com.sencha.gxt.widget.core.client.grid.ColumnModel; -import com.sencha.gxt.widget.core.client.grid.Grid; -import com.sencha.gxt.widget.core.client.grid.filters.GridFilters; -import com.sencha.gxt.widget.core.client.grid.filters.StringFilter; -import com.sencha.gxt.widget.core.client.menu.Item; -import com.sencha.gxt.widget.core.client.menu.Menu; -import com.sencha.gxt.widget.core.client.menu.MenuItem; - -/** - * - * @author giancarlo email: g.panichi@isti.cnr.it - * - */ -public class RuleActivePanel extends FramedPanel { - private static final int RULE_ON_COLUMN_FIELDSET_HEIGHT = 348; - private static final String RULES_GRID_HEIGHT = "102px"; - private static final String WIDTH = "630px"; - private static final String HEIGHT = "418px"; - - interface RuleApplyTemplates extends XTemplates { - @XTemplate("{value}") - SafeHtml format(String value); - } - - private EventBus eventBus; - private RuleActiveDialog parent; - private TRId trId; - private ArrayList columns; - - private AppliedRulesResponseData appliedRuleResponseData; - - private TextButton btnClose; - private VerticalLayoutContainer mainLayoutContainer; - - public RuleActivePanel(RuleActiveDialog parent, TRId trId, - EventBus eventBus) { - this.parent = parent; - this.trId = trId; - - Log.debug("RuleActivePanel"); - setWidth(WIDTH); - setHeight(HEIGHT); - setHeaderVisible(false); - setBodyBorder(false); - this.eventBus = eventBus; - retrieveColumns(); - - } - - protected void retrieveColumns() { - TDGWTServiceAsync.INSTANCE.getColumns(trId, - new AsyncCallback>() { - - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - if (caught instanceof TDGWTIsLockedException) { - Log.error(caught.getLocalizedMessage()); - UtilsGXT3.alert("Error Locked", - caught.getLocalizedMessage()); - } else { - if (caught instanceof TDGWTIsFinalException) { - Log.error(caught.getLocalizedMessage()); - UtilsGXT3.alert("Error Final", - caught.getLocalizedMessage()); - } else { - Log.debug("Error retrieving columns: " - + caught.getLocalizedMessage()); - UtilsGXT3 - .alert("Error retrieving columns", - "Error retrieving column on server!"); - } - } - } - - } - - @Override - public void onSuccess(ArrayList result) { - Log.debug("Retrieved Columns"); - if (result == null) { - UtilsGXT3.alert("Error", - "The requested columns is null"); - } - columns = result; - - getActiveRulesOnColumn(); - - } - }); - } - - protected void create() { - - Log.debug("Create RuleActivePanel(): " + trId); - - // SimpleContainer rulesOnColumnContainer=new SimpleContainer(); - FieldSet columnRulesFieldSet = new FieldSet(); - columnRulesFieldSet.setHeadingText("Rules On Column"); - columnRulesFieldSet.setCollapsible(false); - - VerticalLayoutContainer columnRulesFieldSetLayout = new VerticalLayoutContainer(); - columnRulesFieldSetLayout.setScrollMode(ScrollMode.AUTO); - columnRulesFieldSetLayout.setAdjustForScroll(true); - - columnRulesFieldSet.add(columnRulesFieldSetLayout); - - HashMap> columnRuleMapping = appliedRuleResponseData - .getColumnRuleMapping(); - if (columnRuleMapping != null && columnRuleMapping.size() > 0) { - - for (ColumnData column : columns) { - ArrayList columnAppliedRules = columnRuleMapping - .get(column.getColumnId()); - if (columnAppliedRules != null && columnAppliedRules.size() > 0) { - FieldLabel columnLabel = createColumnRules(column, - columnAppliedRules); - columnRulesFieldSetLayout.add(columnLabel, - new VerticalLayoutData(1, -1, new Margins(0))); - } - } - } else { - FieldLabel noRulesLabel = new FieldLabel(null, "No rules applied!"); - noRulesLabel.setLabelSeparator(""); - columnRulesFieldSetLayout.add(noRulesLabel, new VerticalLayoutData( - 1, -1, new Margins(0))); - - } - - btnClose = new TextButton("Close"); - btnClose.setIcon(TabularDataResources.INSTANCE.close()); - btnClose.setIconAlign(IconAlign.RIGHT); - btnClose.setToolTip("Close"); - btnClose.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - Log.debug("Pressed Close"); - close(); - } - }); - - HBoxLayoutContainer flowButton = new HBoxLayoutContainer(); - flowButton.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE); - flowButton.setPack(BoxLayoutPack.CENTER); - flowButton.add(btnClose, new BoxLayoutData(new Margins(2, 4, 2, 4))); - - mainLayoutContainer = new VerticalLayoutContainer(); - mainLayoutContainer.add(columnRulesFieldSet, new VerticalLayoutData(-1, - RULE_ON_COLUMN_FIELDSET_HEIGHT, new Margins(0))); - mainLayoutContainer.add(flowButton, - new VerticalLayoutData(1, 36, new Margins(5, 2, 5, 2))); - add(mainLayoutContainer); - - } - - private FieldLabel createColumnRules(ColumnData column, - ArrayList columnAppliedRules) { - // Rules - - RuleDescriptionDataProperties propsRules = GWT - .create(RuleDescriptionDataProperties.class); - - ColumnConfig nameCol = new ColumnConfig( - propsRules.name(), 120, "Name"); - - nameCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleApplyTemplates ruleApplyTemplates = GWT - .create(RuleApplyTemplates.class); - sb.append(ruleApplyTemplates.format(value)); - } - }); - - ColumnConfig descriptionCol = new ColumnConfig( - propsRules.description(), 120, "Description"); - descriptionCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleApplyTemplates ruleApplyTemplates = GWT - .create(RuleApplyTemplates.class); - sb.append(ruleApplyTemplates.format(value)); - } - }); - - ColumnConfig ownerCol = new ColumnConfig( - propsRules.ownerLogin(), 70, "Owner"); - ownerCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleApplyTemplates ruleApplyTemplates = GWT - .create(RuleApplyTemplates.class); - sb.append(ruleApplyTemplates.format(value)); - } - }); - - /* - ColumnConfig readableExpressionCol = new ColumnConfig( - propsRules.readableExpression(), 160, "Expression"); - - - readableExpressionCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleApplyTemplates ruleApplyTemplates = GWT - .create(RuleApplyTemplates.class); - sb.append(ruleApplyTemplates.format(value)); - } - });*/ - - List> l = new ArrayList>(); - l.add(nameCol); - l.add(descriptionCol); - l.add(ownerCol); - //l.add(readableExpressionCol); - - ColumnModel cm = new ColumnModel( - l); - - StringFilter nameFilter = new StringFilter( - propsRules.name()); - StringFilter descriptionFilter = new StringFilter( - propsRules.description()); - - // Applies Rules - ListStore appliedRulesStore = new ListStore( - propsRules.id()); - - if (columnAppliedRules != null && columnAppliedRules.size() > 0) { - appliedRulesStore.addAll(columnAppliedRules); - } - - final Grid gridAppliedRules = new Grid( - appliedRulesStore, cm); - gridAppliedRules.setItemId(column.getColumnId()); - gridAppliedRules.setHeight(RULES_GRID_HEIGHT); - gridAppliedRules.getView().setStripeRows(true); - gridAppliedRules.getView().setColumnLines(true); - gridAppliedRules.getView().setAutoFill(true); - gridAppliedRules.setBorders(false); - gridAppliedRules.setLoadMask(true); - gridAppliedRules.setColumnReordering(true); - gridAppliedRules.setColumnResize(true); - gridAppliedRules.getView().setAutoExpandColumn(descriptionCol); - - GridFilters filtersAppliesRules = new GridFilters(); - filtersAppliesRules.initPlugin(gridAppliedRules); - filtersAppliesRules.setLocal(true); - filtersAppliesRules.addFilter(nameFilter); - filtersAppliesRules.addFilter(descriptionFilter); - - createContextMenu(gridAppliedRules); - - FieldLabel rulesAppliedLabel = new FieldLabel(gridAppliedRules, - column.getLabel()); - - return rulesAppliedLabel; - } - - protected void getActiveRulesOnColumn() { - - ExpressionServiceAsync.INSTANCE.getActiveRulesByTabularResourceId( - trId, new AsyncCallback() { - - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - Log.error(caught.getLocalizedMessage()); - UtilsGXT3.alert("Error retrieving active rules", - caught.getLocalizedMessage()); - } - - } - - @Override - public void onSuccess(AppliedRulesResponseData result) { - Log.trace("AppliedRuleResponseData: " + result); - appliedRuleResponseData = result; - create(); - } - }); - - } - - - protected void updateActiveRulesOnColumn() { - - ExpressionServiceAsync.INSTANCE.getActiveRulesByTabularResourceId( - trId, new AsyncCallback() { - - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - Log.error(caught.getLocalizedMessage()); - UtilsGXT3.alert("Error retrieving applied rules", - caught.getLocalizedMessage()); - } - - } - - @Override - public void onSuccess(AppliedRulesResponseData result) { - Log.trace("AppliedRuleResponseData: " + result); - appliedRuleResponseData = result; - recreate(); - } - }); - - } - - - protected void close() { - parent.close(); - } - - - - - protected void requestInfo(RuleDescriptionData rule) { - final RuleInfoDialog infoRuleDialog = new RuleInfoDialog(rule); - infoRuleDialog.show(); - - - } - - protected void createContextMenu(final Grid grid) { - Menu contextMenu = new Menu(); - - MenuItem infoItem = new MenuItem(); - infoItem.setText("Info"); - infoItem.setToolTip("Info"); - infoItem.setIcon(TabularDataResources.INSTANCE.information()); - infoItem.addSelectionHandler(new SelectionHandler() { - - @Override - public void onSelection(SelectionEvent event) { - RuleDescriptionData selected = grid.getSelectionModel() - .getSelectedItem(); - Log.debug(selected.toString()); - requestInfo(selected); - } - }); - - MenuItem detachItem = new MenuItem(); - detachItem.setText("Detach"); - detachItem.setToolTip("Detach rule"); - detachItem.setIcon(TabularDataResources.INSTANCE.ruleColumnDetach()); - detachItem.addSelectionHandler(new SelectionHandler() { - - @Override - public void onSelection(SelectionEvent event) { - RuleDescriptionData selected = grid.getSelectionModel() - .getSelectedItem(); - Log.debug(selected.toString()); - requestDetach(selected, grid); - } - - - }); - - - contextMenu.add(infoItem); - contextMenu.add(detachItem); - - grid.setContextMenu(contextMenu); - - } - - protected void requestDetach(RuleDescriptionData selected, - final Grid grid) { - - String columnLocalId=grid.getItemId(); - ColumnData columnData=new ColumnData(); - columnData.setColumnId(columnLocalId); - ArrayList detachRules=new ArrayList(); - detachRules.add(selected); - - DetachColumnRulesSession detachColumnRulesSession=new DetachColumnRulesSession(trId, columnData, detachRules); - - ExpressionServiceAsync.INSTANCE.setDetachColumnRules(detachColumnRulesSession, - new AsyncCallback() { - - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - Log.error(caught.getLocalizedMessage()); - UtilsGXT3.alert("Error in detach rules", - caught.getLocalizedMessage()); - } - - } - - @Override - public void onSuccess(Void result) { - updateActiveRulesOnColumn(); - Log.debug("The rule is detached!"); - UtilsGXT3.info("Detach Rule", - "The rule is detached!"); - - } - }); - - } - - - protected void recreate(){ - remove(mainLayoutContainer); - create(); - forceLayout(); - - - } - - -} diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyDialog.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyDialog.java deleted file mode 100644 index d1db23b..0000000 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyDialog.java +++ /dev/null @@ -1,171 +0,0 @@ -package org.gcube.portlets.user.td.client.rule; - -import org.gcube.portlets.user.td.client.resource.TabularDataResources; -import org.gcube.portlets.user.td.expressionwidget.client.rpc.ExpressionServiceAsync; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsFinalException; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsLockedException; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; -import org.gcube.portlets.user.td.gwtservice.shared.rule.ApplyAndDetachColumnRulesSession; -import org.gcube.portlets.user.td.monitorwidget.client.MonitorDialog; -import org.gcube.portlets.user.td.monitorwidget.client.MonitorDialogListener; -import org.gcube.portlets.user.td.tablewidget.client.util.UtilsGXT3; -import org.gcube.portlets.user.td.widgetcommonevent.client.event.ChangeTableRequestEvent; -import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; -import org.gcube.portlets.user.td.widgetcommonevent.client.type.ChangeTableRequestType; -import org.gcube.portlets.user.td.widgetcommonevent.client.type.ChangeTableWhy; -import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType; -import org.gcube.portlets.user.td.widgetcommonevent.shared.OperationResult; -import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; - -import com.allen_sauer.gwt.log.client.Log; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.web.bindery.event.shared.EventBus; -import com.sencha.gxt.widget.core.client.Window; -import com.sencha.gxt.widget.core.client.event.SelectEvent; -import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; - -/** - * - * @author "Giancarlo Panichi" g.panichi@isti.cnr.it - * - */ -public class RuleApplyDialog extends Window implements - MonitorDialogListener { - private static final String WIDTH = "720px"; - private static final String HEIGHT = "530px"; - private EventBus eventBus; - - public RuleApplyDialog(TRId trId, EventBus eventBus) { - this.eventBus = eventBus; - initWindow(); - - RuleApplyPanel ruleApplyPanel = new RuleApplyPanel(this, - trId, eventBus); - add(ruleApplyPanel); - } - - protected void initWindow() { - setWidth(WIDTH); - setHeight(HEIGHT); - setBodyBorder(false); - setResizable(false); - setHeadingText("Apply Rules On Column"); - setClosable(true); - setModal(true); - forceLayoutOnResize = true; - getHeader().setIcon(TabularDataResources.INSTANCE.ruleColumnApply()); - - } - - /** - * {@inheritDoc} - */ - @Override - protected void initTools() { - super.initTools(); - - closeBtn.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - close(); - } - }); - - } - - protected void close() { - hide(); - } - - protected void applyRules(ApplyAndDetachColumnRulesSession applyColumnRulesSession) { - ExpressionServiceAsync.INSTANCE.startApplyAndDetachColumnRules(applyColumnRulesSession, new AsyncCallback() { - - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - if (caught instanceof TDGWTIsLockedException) { - Log.error(caught.getLocalizedMessage()); - UtilsGXT3.alert("Error Locked", - caught.getLocalizedMessage()); - } else { - if (caught instanceof TDGWTIsFinalException) { - Log.error(caught.getLocalizedMessage()); - UtilsGXT3.alert("Error Is Final", - caught.getLocalizedMessage()); - } else { - Log.debug("Apply Rules On Column Error: " - + caught.getLocalizedMessage()); - UtilsGXT3 - .alert("Apply Rules On Column", - caught.getLocalizedMessage()); - } - } - } - - } - - @Override - public void onSuccess(String taskId) { - if(taskId!=null){ - openMonitorDialog(taskId); - } else { - close(); - } - - } - - - - }); - - } - - protected void openMonitorDialog(String taskId) { - MonitorDialog monitorDialog = new MonitorDialog(taskId, eventBus); - monitorDialog.addProgressDialogListener(this); - monitorDialog.show(); - } - - @Override - public void operationComplete(OperationResult operationResult) { - ChangeTableWhy why = ChangeTableWhy.TABLEUPDATED; - ChangeTableRequestEvent changeTableRequestEvent = new ChangeTableRequestEvent( - ChangeTableRequestType.RULESONCOLUMNAPPLY, operationResult.getTrId(), why); - eventBus.fireEvent(changeTableRequestEvent); - close(); - } - - @Override - public void operationFailed(Throwable caught, String reason, String details) { - UtilsGXT3.alert(reason, details); - close(); - - } - - @Override - public void operationStopped(OperationResult operationResult, String reason, String details) { - ChangeTableWhy why = ChangeTableWhy.TABLECURATION; - ChangeTableRequestEvent changeTableRequestEvent = new ChangeTableRequestEvent( - ChangeTableRequestType.RULESONCOLUMNAPPLY, operationResult.getTrId(), why); - eventBus.fireEvent(changeTableRequestEvent); - close(); - - } - - @Override - public void operationAborted() { - close(); - - } - - @Override - public void operationPutInBackground() { - close(); - - } - -} diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyPanel.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyPanel.java deleted file mode 100644 index 7c02be1..0000000 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyPanel.java +++ /dev/null @@ -1,602 +0,0 @@ -package org.gcube.portlets.user.td.client.rule; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import org.gcube.portlets.user.td.client.resource.TabularDataResources; -import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataPropertiesCombo; -import org.gcube.portlets.user.td.expressionwidget.client.rpc.ExpressionServiceAsync; -import org.gcube.portlets.user.td.expressionwidget.shared.rule.RuleDescriptionDataProperties; -import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsFinalException; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsLockedException; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; -import org.gcube.portlets.user.td.gwtservice.shared.rule.AppliedRulesResponseData; -import org.gcube.portlets.user.td.gwtservice.shared.rule.ApplyAndDetachColumnRulesSession; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleDescriptionData; -import org.gcube.portlets.user.td.tablewidget.client.util.UtilsGXT3; -import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; -import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType; -import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; -import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnData; - -import com.allen_sauer.gwt.log.client.Log; -import com.google.gwt.cell.client.AbstractCell; -import com.google.gwt.core.client.GWT; -import com.google.gwt.event.logical.shared.SelectionEvent; -import com.google.gwt.event.logical.shared.SelectionHandler; -import com.google.gwt.safehtml.shared.SafeHtml; -import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.HTML; -import com.google.web.bindery.event.shared.EventBus; -import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; -import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction; -import com.sencha.gxt.core.client.XTemplates; -import com.sencha.gxt.core.client.util.Margins; -import com.sencha.gxt.data.shared.LabelProvider; -import com.sencha.gxt.data.shared.ListStore; -import com.sencha.gxt.dnd.core.client.GridDragSource; -import com.sencha.gxt.dnd.core.client.GridDropTarget; -import com.sencha.gxt.widget.core.client.FramedPanel; -import com.sencha.gxt.widget.core.client.button.TextButton; -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.HBoxLayoutContainer.HBoxLayoutAlign; -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.ComboBox; -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.grid.ColumnConfig; -import com.sencha.gxt.widget.core.client.grid.ColumnModel; -import com.sencha.gxt.widget.core.client.grid.Grid; -import com.sencha.gxt.widget.core.client.grid.filters.GridFilters; -import com.sencha.gxt.widget.core.client.grid.filters.StringFilter; -import com.sencha.gxt.widget.core.client.info.Info; -import com.sencha.gxt.widget.core.client.menu.Item; -import com.sencha.gxt.widget.core.client.menu.Menu; -import com.sencha.gxt.widget.core.client.menu.MenuItem; - -/** - * - * @author giancarlo email: g.panichi@isti.cnr.it - * - */ -public class RuleApplyPanel extends FramedPanel { - private static final String RULE_TIP = "

Tip.: Use drag and drop in order to change selected rules.

"; - private static final String RULES_GRID_HEIGHT = "184px"; - private static final String SET_RULES = "SetRules"; - - interface RuleApplyTemplates extends XTemplates { - @XTemplate("{value}") - SafeHtml format(String value); - } - - private static final String WIDTH = "630px"; - private static final String HEIGHT = "520px"; - - private EventBus eventBus; - private RuleApplyDialog parent; - private TRId trId; - private ArrayList columns; - private ColumnData column; - private AppliedRulesResponseData appliedRuleResponseData; - private ArrayList applicableRules; - private ArrayList appliedRules; - - private TextButton btnApply; - private TextButton btnClose; - - private ComboBox comboColumns; - private ListStore applicableRulesStore; - private Grid gridApplicableRules; - private ListStore selectedRulesStore; - private Grid gridSelectedRules; - - public RuleApplyPanel(RuleApplyDialog parent, TRId trId, EventBus eventBus) { - this.parent = parent; - this.trId = trId; - applicableRules = new ArrayList(); - - Log.debug("RuleApplyPanel"); - setWidth(WIDTH); - setHeight(HEIGHT); - setHeaderVisible(false); - setBodyBorder(false); - this.eventBus = eventBus; - retrieveColumns(); - - } - - protected void retrieveColumns() { - TDGWTServiceAsync.INSTANCE.getColumns(trId, - new AsyncCallback>() { - - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - if (caught instanceof TDGWTIsLockedException) { - Log.error(caught.getLocalizedMessage()); - UtilsGXT3.alert("Error Locked", - caught.getLocalizedMessage()); - } else { - if (caught instanceof TDGWTIsFinalException) { - Log.error(caught.getLocalizedMessage()); - UtilsGXT3.alert("Error Final", - caught.getLocalizedMessage()); - } else { - Log.debug("Error retrieving columns: " - + caught.getLocalizedMessage()); - UtilsGXT3 - .alert("Error retrieving columns", - "Error retrieving column on server!"); - } - } - } - - } - - @Override - public void onSuccess(ArrayList result) { - Log.debug("Retrieved Columns"); - if (result == null) { - UtilsGXT3.alert("Error", - "The requested columns is null"); - } - columns = result; - - getAppliedBaseColumnRules(); - - } - }); - } - - protected void create() { - - Log.debug("Create RuleApplyPanel(): " + trId); - - FieldSet configurationFieldSet = new FieldSet(); - configurationFieldSet.setHeadingText("Configuration"); - configurationFieldSet.setCollapsible(false); - - VerticalLayoutContainer configurationFieldSetLayout = new VerticalLayoutContainer(); - configurationFieldSet.add(configurationFieldSetLayout); - - // Column Data - ColumnDataPropertiesCombo propsColumnData = GWT - .create(ColumnDataPropertiesCombo.class); - ListStore storeCombo = new ListStore( - propsColumnData.id()); - storeCombo.addAll(columns); - - Log.trace("StoreCombo created"); - comboColumns = new ComboBox(storeCombo, - propsColumnData.label()); - - Log.trace("Combo ColumnData created"); - - addHandlersForComboColumn(propsColumnData.label()); - comboColumns.setEmptyText("Select a column..."); - comboColumns.setWidth(191); - comboColumns.setTypeAhead(false); - comboColumns.setEditable(false); - comboColumns.setTriggerAction(TriggerAction.ALL); - - FieldLabel comboColumnsLabel = new FieldLabel(comboColumns, "Column"); - configurationFieldSetLayout.add(comboColumnsLabel, - new VerticalLayoutData(1, -1, new Margins(0))); - - // Rules - - RuleDescriptionDataProperties propsRules = GWT - .create(RuleDescriptionDataProperties.class); - - ColumnConfig nameCol = new ColumnConfig( - propsRules.name(), 120, "Name"); - - nameCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleApplyTemplates ruleApplyTemplates = GWT - .create(RuleApplyTemplates.class); - sb.append(ruleApplyTemplates.format(value)); - } - }); - - ColumnConfig descriptionCol = new ColumnConfig( - propsRules.description(), 120, "Description"); - descriptionCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleApplyTemplates ruleApplyTemplates = GWT - .create(RuleApplyTemplates.class); - sb.append(ruleApplyTemplates.format(value)); - } - }); - - ColumnConfig ownerCol = new ColumnConfig( - propsRules.ownerLogin(), 70, "Owner"); - ownerCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleApplyTemplates ruleApplyTemplates = GWT - .create(RuleApplyTemplates.class); - sb.append(ruleApplyTemplates.format(value)); - } - }); - - List> l = new ArrayList>(); - l.add(nameCol); - l.add(descriptionCol); - l.add(ownerCol); - // l.add(readableExpressionCol); - - ColumnModel cm = new ColumnModel( - l); - - StringFilter nameFilter = new StringFilter( - propsRules.name()); - StringFilter descriptionFilter = new StringFilter( - propsRules.description()); - - // Applicable Rules - applicableRulesStore = new ListStore( - propsRules.id()); - - gridApplicableRules = new Grid( - applicableRulesStore, cm); - gridApplicableRules.setHeight(RULES_GRID_HEIGHT); - gridApplicableRules.getView().setStripeRows(true); - gridApplicableRules.getView().setColumnLines(true); - gridApplicableRules.getView().setAutoFill(true); - gridApplicableRules.setBorders(false); - gridApplicableRules.setLoadMask(true); - gridApplicableRules.setColumnReordering(true); - gridApplicableRules.setColumnResize(true); - gridApplicableRules.getView().setAutoExpandColumn(descriptionCol); - - GridFilters filtersApplicableRules = new GridFilters(); - filtersApplicableRules.initPlugin(gridApplicableRules); - filtersApplicableRules.setLocal(true); - filtersApplicableRules.addFilter(nameFilter); - filtersApplicableRules.addFilter(descriptionFilter); - - createContextMenu(gridApplicableRules); - - // Selected Rules - selectedRulesStore = new ListStore(propsRules.id()); - - gridSelectedRules = new Grid(selectedRulesStore, - cm); - gridSelectedRules.setHeight(RULES_GRID_HEIGHT); - gridSelectedRules.getView().setStripeRows(true); - gridSelectedRules.getView().setColumnLines(true); - gridSelectedRules.getView().setAutoFill(true); - gridSelectedRules.setBorders(false); - gridSelectedRules.setLoadMask(true); - gridSelectedRules.setColumnReordering(true); - gridSelectedRules.setColumnResize(true); - gridSelectedRules.getView().setAutoExpandColumn(descriptionCol); - - GridFilters filtersSelectedRules = new GridFilters(); - filtersSelectedRules.initPlugin(gridSelectedRules); - filtersSelectedRules.setLocal(true); - filtersSelectedRules.addFilter(nameFilter); - filtersSelectedRules.addFilter(descriptionFilter); - - createContextMenu(gridSelectedRules); - - // - - new GridDragSource(gridApplicableRules) - .setGroup(SET_RULES); - new GridDragSource(gridSelectedRules) - .setGroup(SET_RULES); - - new GridDropTarget(gridApplicableRules) - .setGroup(SET_RULES); - new GridDropTarget(gridSelectedRules) - .setGroup(SET_RULES); - - // - FieldLabel rulesApplicableLabel = new FieldLabel(gridApplicableRules, - "Applicable Rules"); - - configurationFieldSetLayout.add(rulesApplicableLabel, - new VerticalLayoutData(1, -1, new Margins(0))); - - FieldLabel rulesSelectedLabel = new FieldLabel(gridSelectedRules, - "Selected Rules"); - - configurationFieldSetLayout.add(rulesSelectedLabel, - new VerticalLayoutData(1, -1, new Margins(0))); - - // - HTML rulesNote = new HTML(RULE_TIP); - configurationFieldSetLayout.add(rulesNote, - new VerticalLayoutData(-1, -1, new Margins(0))); - // Button - btnApply = new TextButton("Apply"); - btnApply.setIcon(TabularDataResources.INSTANCE.ruleColumnApply()); - btnApply.setIconAlign(IconAlign.RIGHT); - btnApply.setToolTip("Apply Rule"); - btnApply.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - Log.debug("Pressed Apply"); - apply(); - - } - }); - - btnClose = new TextButton("Close"); - btnClose.setIcon(TabularDataResources.INSTANCE.close()); - btnClose.setIconAlign(IconAlign.RIGHT); - btnClose.setToolTip("Close"); - btnClose.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - Log.debug("Pressed Close"); - close(); - } - }); - - HBoxLayoutContainer flowButton = new HBoxLayoutContainer(); - flowButton.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE); - flowButton.setPack(BoxLayoutPack.CENTER); - - flowButton.add(btnApply, new BoxLayoutData(new Margins(2, 4, 2, 4))); - flowButton.add(btnClose, new BoxLayoutData(new Margins(2, 4, 2, 4))); - - VerticalLayoutContainer v = new VerticalLayoutContainer(); - v.add(configurationFieldSet, new VerticalLayoutData(-1, -1, - new Margins(0))); - v.add(flowButton, - new VerticalLayoutData(1, 36, new Margins(5, 2, 5, 2))); - add(v); - - } - - private void addHandlersForComboColumn( - final LabelProvider labelProvider) { - comboColumns.addSelectionHandler(new SelectionHandler() { - public void onSelection(SelectionEvent event) { - Info.display( - "Column Selected", - "You selected " - + (event.getSelectedItem() == null ? "nothing" - : labelProvider.getLabel(event - .getSelectedItem()) + "!")); - Log.debug("ComboColumn selected: " + event.getSelectedItem()); - ColumnData columnData = event.getSelectedItem(); - updateRulesInGrids(columnData); - } - - }); - - } - - protected void updateRulesInGrids(ColumnData columnData) { - column = columnData; - applicableRulesStore.clear(); - selectedRulesStore.clear(); - HashMap> columnRuleMapping = appliedRuleResponseData - .getColumnRuleMapping(); - - if (columnRuleMapping != null) { - ArrayList applied = columnRuleMapping - .get(columnData.getColumnId()); - - if (applied != null) { - appliedRules = applied; - selectedRulesStore.addAll(new ArrayList( - applied)); - - } - } - getApplicableBaseColumnRules(); - - } - - protected void getApplicableBaseColumnRules() { - ExpressionServiceAsync.INSTANCE.getApplicableBaseColumnRules(column, - new AsyncCallback>() { - - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - Log.error(caught.getLocalizedMessage()); - UtilsGXT3.alert( - "Error retrieving applicable rules", - caught.getLocalizedMessage()); - } - - } - - @Override - public void onSuccess(ArrayList result) { - Log.trace("loaded " + result.size() + " Rules"); - if (appliedRules != null && appliedRules.size() > 0) { - ArrayList removableRules = new ArrayList(); - for (RuleDescriptionData ruleApplied : appliedRules) { - for (RuleDescriptionData ruleApplicable : result) { - if (ruleApplicable.equals(ruleApplied)) { - removableRules.add(ruleApplicable); - break; - } - } - - } - result.removeAll(removableRules); - - } - applicableRules = result; - applicableRulesStore - .addAll(new ArrayList( - applicableRules)); - - forceLayout(); - - } - }); - - } - - protected void getAppliedBaseColumnRules() { - - ExpressionServiceAsync.INSTANCE.getActiveRulesByTabularResourceId(trId, - new AsyncCallback() { - - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - Log.error(caught.getLocalizedMessage()); - UtilsGXT3.alert("Error retrieving selected rules", - caught.getLocalizedMessage()); - } - - } - - @Override - public void onSuccess(AppliedRulesResponseData result) { - Log.trace("AppliedRuleResponseData: " + result); - appliedRuleResponseData = result; - create(); - } - }); - - } - - protected ArrayList getSelectedItems() { - List selectedItems = selectedRulesStore.getAll(); - ArrayList rulesSelected = new ArrayList( - selectedItems); - return rulesSelected; - } - - protected void apply() { - ColumnData column = comboColumns.getCurrentValue(); - if (column != null) { - ArrayList selectedRules = getSelectedItems(); - if(selectedRules==null){ - selectedRules=new ArrayList(); - } - ArrayList rulesThatWillBeDetach = new ArrayList(); - ArrayList rulesThatWillBeApplied = new ArrayList(); - HashMap> columnRuleMapping = appliedRuleResponseData - .getColumnRuleMapping(); - if (columnRuleMapping != null) { - ArrayList rulesApplied = columnRuleMapping - .get(column.getColumnId()); - if (rulesApplied != null && rulesApplied.size() > 0) { - for (RuleDescriptionData ruleApplied : rulesApplied) { - boolean ruleStillApplied = false; - for (RuleDescriptionData ruleSelected : selectedRules) { - if (ruleSelected.getId() == ruleApplied.getId()) { - ruleStillApplied = true; - break; - } - } - - if (!ruleStillApplied) { - rulesThatWillBeDetach.add(ruleApplied); - } - } - } - } - - for (RuleDescriptionData ruleSelected : selectedRules) { - boolean ruleApplied = false; - - if (columnRuleMapping != null) { - ArrayList rulesApplied = columnRuleMapping - .get(column.getColumnId()); - if (rulesApplied != null) { - for (RuleDescriptionData ruleAlreadyApplied : rulesApplied) { - if (ruleSelected.getId() == ruleAlreadyApplied - .getId()) { - ruleApplied = true; - break; - } - } - } else { - - } - } else { - - } - - if (ruleApplied == false) { - rulesThatWillBeApplied.add(ruleSelected); - } - } - - if(rulesThatWillBeApplied.size()<=0&&rulesThatWillBeDetach.size()<=0){ - Log.error("Select a rule!"); - UtilsGXT3.alert("Attention", "Select a rule!"); - return; - } - - ApplyAndDetachColumnRulesSession applyColumnRulesSession = new ApplyAndDetachColumnRulesSession( - trId, column, rulesThatWillBeApplied, rulesThatWillBeDetach); - parent.applyRules(applyColumnRulesSession); - - } else { - Log.error("No column selected"); - UtilsGXT3.alert("Attention", "Select a column"); - } - } - - protected void close() { - parent.close(); - } - - protected void requestInfo(RuleDescriptionData rule) { - final RuleInfoDialog infoRuleDialog = new RuleInfoDialog(rule); - infoRuleDialog.show(); - - - } - - protected void createContextMenu(final Grid grid) { - Menu contextMenu = new Menu(); - - MenuItem infoItem = new MenuItem(); - infoItem.setText("Info"); - infoItem.setIcon(TabularDataResources.INSTANCE.information()); - infoItem.addSelectionHandler(new SelectionHandler() { - - @Override - public void onSelection(SelectionEvent event) { - RuleDescriptionData selected = grid.getSelectionModel() - .getSelectedItem(); - Log.debug(selected.toString()); - requestInfo(selected); - } - }); - - contextMenu.add(infoItem); - - grid.setContextMenu(contextMenu); - - } - -} diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeleteDialog.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeleteDialog.java deleted file mode 100644 index d14b4b0..0000000 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeleteDialog.java +++ /dev/null @@ -1,105 +0,0 @@ -package org.gcube.portlets.user.td.client.rule; - -import java.util.ArrayList; - -import org.gcube.portlets.user.td.client.resource.TabularDataResources; -import org.gcube.portlets.user.td.expressionwidget.client.rpc.ExpressionServiceAsync; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleDescriptionData; -import org.gcube.portlets.user.td.tablewidget.client.util.UtilsGXT3; -import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; -import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType; - -import com.allen_sauer.gwt.log.client.Log; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.web.bindery.event.shared.EventBus; -import com.sencha.gxt.widget.core.client.Window; -import com.sencha.gxt.widget.core.client.event.SelectEvent; -import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; - -/** - * - * @author "Giancarlo Panichi" g.panichi@isti.cnr.it - * - */ -public class RuleDeleteDialog extends Window { - private static final String WIDTH = "720px"; - private static final String HEIGHT = "530px"; - private EventBus eventBus; - private RuleDeletePanel ruleDeletePanel; - - public RuleDeleteDialog(EventBus eventBus) { - this.eventBus = eventBus; - initWindow(); - - ruleDeletePanel = new RuleDeletePanel(this, - eventBus); - add(ruleDeletePanel); - } - - protected void initWindow() { - setWidth(WIDTH); - setHeight(HEIGHT); - setBodyBorder(false); - setResizable(false); - setHeadingText("Delete Rule"); - setClosable(true); - setModal(true); - forceLayoutOnResize = true; - getHeader().setIcon(TabularDataResources.INSTANCE.ruleDelete()); - - } - - /** - * {@inheritDoc} - */ - @Override - protected void initTools() { - super.initTools(); - - closeBtn.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - close(); - } - }); - - } - - protected void close() { - hide(); - } - - protected void removeRule( - ArrayList rules) { - - ExpressionServiceAsync.INSTANCE.removeRulesById(rules, - new AsyncCallback() { - - @Override - public void onSuccess(Void v) { - Log.debug("Rule is deleted!"); - UtilsGXT3.info("Delete Rule", "The rule is deleted!"); - ruleDeletePanel.gridReload(); - } - - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - Log.error("Error deleting column rule: " - + caught.getLocalizedMessage()); - caught.printStackTrace(); - UtilsGXT3.alert("Error deleting column rule", - caught.getLocalizedMessage()); - } - ruleDeletePanel.gridReload(); - - } - }); - } - -} diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeletePanel.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeletePanel.java deleted file mode 100644 index 90d7add..0000000 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeletePanel.java +++ /dev/null @@ -1,430 +0,0 @@ -package org.gcube.portlets.user.td.client.rule; - -import java.util.ArrayList; -import java.util.List; - -import org.gcube.portlets.user.td.client.resource.TabularDataResources; -import org.gcube.portlets.user.td.expressionwidget.client.rpc.ExpressionServiceAsync; -import org.gcube.portlets.user.td.expressionwidget.shared.rule.RuleDescriptionDataProperties; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleDescriptionData; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleScopeType; -import org.gcube.portlets.user.td.tablewidget.client.util.UtilsGXT3; -import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; -import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType; - -import com.allen_sauer.gwt.log.client.Log; -import com.google.gwt.cell.client.AbstractCell; -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.event.dom.client.KeyUpEvent; -import com.google.gwt.event.dom.client.KeyUpHandler; -import com.google.gwt.event.logical.shared.SelectionEvent; -import com.google.gwt.event.logical.shared.SelectionHandler; -import com.google.gwt.safehtml.shared.SafeHtml; -import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.web.bindery.event.shared.EventBus; -import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; -import com.sencha.gxt.core.client.IdentityValueProvider; -import com.sencha.gxt.core.client.Style.SelectionMode; -import com.sencha.gxt.core.client.XTemplates; -import com.sencha.gxt.core.client.resources.ThemeStyles; -import com.sencha.gxt.core.client.util.Margins; -import com.sencha.gxt.data.client.loader.RpcProxy; -import com.sencha.gxt.data.shared.ListStore; -import com.sencha.gxt.data.shared.ModelKeyProvider; -import com.sencha.gxt.data.shared.Store; -import com.sencha.gxt.data.shared.Store.StoreFilter; -import com.sencha.gxt.data.shared.loader.ListLoadConfig; -import com.sencha.gxt.data.shared.loader.ListLoadResult; -import com.sencha.gxt.data.shared.loader.ListLoadResultBean; -import com.sencha.gxt.data.shared.loader.ListLoader; -import com.sencha.gxt.data.shared.loader.LoadResultListStoreBinding; -import com.sencha.gxt.widget.core.client.FramedPanel; -import com.sencha.gxt.widget.core.client.button.TextButton; -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.HBoxLayoutContainer.HBoxLayoutAlign; -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.TextField; -import com.sencha.gxt.widget.core.client.grid.CheckBoxSelectionModel; -import com.sencha.gxt.widget.core.client.grid.ColumnConfig; -import com.sencha.gxt.widget.core.client.grid.ColumnModel; -import com.sencha.gxt.widget.core.client.grid.Grid; -import com.sencha.gxt.widget.core.client.menu.Item; -import com.sencha.gxt.widget.core.client.menu.Menu; -import com.sencha.gxt.widget.core.client.menu.MenuItem; -import com.sencha.gxt.widget.core.client.toolbar.LabelToolItem; -import com.sencha.gxt.widget.core.client.toolbar.ToolBar; - -public class RuleDeletePanel extends FramedPanel { - private static final String WIDTH = "630px"; - private static final String HEIGHT = "520px"; - - interface RuleDeleteTemplates extends XTemplates { - @XTemplate("{value}") - SafeHtml format(String value); - } - - private EventBus eventBus; - private RuleDeleteDialog parent; - - private TextButton btnDelete; - private TextButton btnClose; - - private ListLoader> loader; - private Grid grid; - private ExtendedListStore store; - - public RuleDeletePanel(RuleDeleteDialog parent, EventBus eventBus) { - this.parent = parent; - Log.debug("RuleDeletePanel"); - setWidth(WIDTH); - setHeight(HEIGHT); - setHeaderVisible(false); - setBodyBorder(false); - this.eventBus = eventBus; - - create(); - - } - - protected void create() { - ToolBar toolBarHead = new ToolBar(); - toolBarHead.add(new LabelToolItem("Search: ")); - final TextField searchField = new TextField(); - toolBarHead.add(searchField); - - TextButton btnReload = new TextButton(); - // btnReload.setText("Reload"); - btnReload.setIcon(TabularDataResources.INSTANCE.refresh()); - btnReload.setToolTip("Reload"); - toolBarHead.add(btnReload); - - IdentityValueProvider identity = new IdentityValueProvider(); - CheckBoxSelectionModel sm = new CheckBoxSelectionModel( - identity); - - RuleDescriptionDataProperties props = GWT - .create(RuleDescriptionDataProperties.class); - - ColumnConfig nameCol = new ColumnConfig( - props.name(), 120, "Name"); - - nameCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleDeleteTemplates ruleDeleteTemplates = GWT - .create(RuleDeleteTemplates.class); - sb.append(ruleDeleteTemplates.format(value)); - } - }); - - ColumnConfig scopeCol = new ColumnConfig( - props.scopeLabel(), 40, "Scope"); - - nameCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleDeleteTemplates ruleDeleteTemplates = GWT - .create(RuleDeleteTemplates.class); - sb.append(ruleDeleteTemplates.format(value)); - } - }); - - ColumnConfig descriptionCol = new ColumnConfig( - props.description(), 120, "Description"); - descriptionCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleDeleteTemplates ruleDeleteTemplates = GWT - .create(RuleDeleteTemplates.class); - sb.append(ruleDeleteTemplates.format(value)); - } - }); - - ColumnConfig ownerCol = new ColumnConfig( - props.ownerLogin(), 70, "Owner"); - ownerCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleDeleteTemplates ruleDeleteTemplates = GWT - .create(RuleDeleteTemplates.class); - sb.append(ruleDeleteTemplates.format(value)); - } - }); - - /* - ColumnConfig readableExpressionCol = new ColumnConfig( - props.readableExpression(), 160, "Expression"); - - readableExpressionCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleDeleteTemplates ruleDeleteTemplates = GWT - .create(RuleDeleteTemplates.class); - sb.append(ruleDeleteTemplates.format(value)); - } - });*/ - - List> l = new ArrayList>(); - l.add(nameCol); - l.add(scopeCol); - l.add(descriptionCol); - l.add(ownerCol); - //l.add(readableExpressionCol); - - ColumnModel cm = new ColumnModel( - l); - - store = new ExtendedListStore(props.id()); - - searchField.addKeyUpHandler(new KeyUpHandler() { - - public void onKeyUp(KeyUpEvent event) { - Log.trace("searchTerm: " + searchField.getCurrentValue()); - store.applyFilters(); - } - }); - - store.addFilter(new StoreFilter() { - - @Override - public boolean select(Store store, - RuleDescriptionData parent, RuleDescriptionData item) { - String searchTerm = searchField.getCurrentValue(); - if (searchTerm == null) - return true; - return RuleDeletePanel.this.select(item, searchTerm); - } - }); - - store.setEnableFilters(true); - - RpcProxy> proxy = new RpcProxy>() { - - public void load( - ListLoadConfig loadConfig, - final AsyncCallback> callback) { - loadData(loadConfig, callback); - } - }; - loader = new ListLoader>( - proxy); - - loader.setRemoteSort(false); - loader.addLoadHandler(new LoadResultListStoreBinding>( - store) { - }); - - SelectHandler sh = new SelectHandler() { - public void onSelect(SelectEvent event) { - loader.load(); - } - }; - - btnReload.addSelectHandler(sh); - - grid = new Grid(store, cm) { - @Override - protected void onAfterFirstAttach() { - super.onAfterFirstAttach(); - Scheduler.get().scheduleDeferred(new ScheduledCommand() { - - public void execute() { - loader.load(); - } - }); - } - }; - - sm.setSelectionMode(SelectionMode.MULTI); - grid.setLoader(loader); - grid.setSelectionModel(sm); - grid.setHeight("384px"); - grid.getView().setStripeRows(true); - grid.getView().setColumnLines(true); - grid.getView().setAutoFill(true); - grid.setBorders(false); - grid.setLoadMask(true); - grid.setColumnReordering(true); - grid.setColumnResize(true); - grid.getView().setAutoExpandColumn(descriptionCol); - - createContextMenu(); - - ToolBar toolBar = new ToolBar(); - toolBar.add(grid); - toolBar.addStyleName(ThemeStyles.get().style().borderTop()); - toolBar.getElement().getStyle().setProperty("borderBottom", "none"); - - btnDelete = new TextButton("Delete"); - btnDelete.setIcon(TabularDataResources.INSTANCE.ruleDelete()); - btnDelete.setIconAlign(IconAlign.RIGHT); - btnDelete.setToolTip("Delete"); - btnDelete.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - Log.debug("Pressed Delete"); - delete(); - - } - }); - - btnClose = new TextButton("Close"); - btnClose.setIcon(TabularDataResources.INSTANCE.close()); - btnClose.setIconAlign(IconAlign.RIGHT); - btnClose.setToolTip("Close"); - btnClose.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - Log.debug("Pressed Close"); - close(); - } - }); - - HBoxLayoutContainer flowButton = new HBoxLayoutContainer(); - flowButton.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE); - flowButton.setPack(BoxLayoutPack.CENTER); - - BoxLayoutData boxLayoutData = new BoxLayoutData(new Margins(2, 4, 2, 4)); - flowButton.add(btnDelete, boxLayoutData); - flowButton.add(btnClose, boxLayoutData); - - VerticalLayoutContainer v = new VerticalLayoutContainer(); - v.add(toolBarHead, new VerticalLayoutData(1, -1, new Margins(0))); - v.add(grid, new VerticalLayoutData(1, -1, new Margins(0))); - v.add(toolBar, new VerticalLayoutData(1, 25, new Margins(0))); - v.add(flowButton, - new VerticalLayoutData(1, 36, new Margins(5, 2, 5, 2))); - add(v); - - } - - protected void loadData(ListLoadConfig loadConfig, - final AsyncCallback> callback) { - - ExpressionServiceAsync.INSTANCE.getRules(RuleScopeType.COLUMN, - new AsyncCallback>() { - - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - Log.error("Load rules failure:" - + caught.getLocalizedMessage()); - UtilsGXT3.alert("Error retrieving rules", - "Error retrieving rules"); - } - callback.onFailure(caught); - - } - - @Override - public void onSuccess(ArrayList result) { - Log.trace("loaded " + result.size() + " Rules"); - callback.onSuccess(new ListLoadResultBean( - result)); - - } - }); - } - - protected ArrayList getSelectedItem() { - ArrayList rules = new ArrayList(); - for (RuleDescriptionData rule : grid.getSelectionModel() - .getSelectedItems()) { - rules.add(rule); - } - return rules; - } - - protected void delete() { - ArrayList rules = getSelectedItem(); - if (rules == null || rules.size() == 0) { - UtilsGXT3.info("Attention", "Select the rule to be deleted"); - } else { - Log.debug("Rules Delete: " + rules); - parent.removeRule(rules); - - } - - } - - protected void close() { - parent.close(); - } - - protected class ExtendedListStore extends ListStore { - - public ExtendedListStore(ModelKeyProvider keyProvider) { - super(keyProvider); - } - - public void applyFilters() { - super.applyFilters(); - } - - } - - public void gridReload() { - grid.getLoader().load(); - } - - protected boolean select(RuleDescriptionData item, String searchTerm) { - if (item.getName() != null - && item.getName().toLowerCase() - .contains(searchTerm.toLowerCase())) - return true; - if (item.getDescription() != null - && item.getDescription().toLowerCase() - .contains(searchTerm.toLowerCase())) - return true; - return false; - } - - protected void requestInfo(RuleDescriptionData rule) { - - final RuleInfoDialog infoRuleDialog = new RuleInfoDialog(rule); - infoRuleDialog.show(); - - - } - - protected void createContextMenu() { - Menu contextMenu = new Menu(); - - MenuItem infoItem = new MenuItem(); - infoItem.setText("Info"); - infoItem.setIcon(TabularDataResources.INSTANCE.information()); - infoItem.addSelectionHandler(new SelectionHandler() { - - @Override - public void onSelection(SelectionEvent event) { - RuleDescriptionData selected = grid.getSelectionModel() - .getSelectedItem(); - Log.debug(selected.toString()); - requestInfo(selected); - } - }); - - contextMenu.add(infoItem); - - grid.setContextMenu(contextMenu); - - } - -} diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleInfoDialog.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleInfoDialog.java deleted file mode 100644 index ce4cd2f..0000000 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleInfoDialog.java +++ /dev/null @@ -1,98 +0,0 @@ -package org.gcube.portlets.user.td.client.rule; - -import org.gcube.portlets.user.td.client.resource.TabularDataResources; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleDescriptionData; - -import com.sencha.gxt.core.client.util.Margins; -import com.sencha.gxt.widget.core.client.Dialog; -import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutPack; -import com.sencha.gxt.widget.core.client.container.MarginData; -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.form.FieldLabel; -import com.sencha.gxt.widget.core.client.form.FieldSet; -import com.sencha.gxt.widget.core.client.form.TextArea; -import com.sencha.gxt.widget.core.client.form.TextField; - - -/** - * - * @author giancarlo - * email: g.panichi@isti.cnr.it - * - */ -public class RuleInfoDialog extends Dialog { - RuleDescriptionData ruleDescriptionData; - - public RuleInfoDialog(RuleDescriptionData ruleDescriptionData){ - this.ruleDescriptionData=ruleDescriptionData; - initWindow(); - create(); - } - - protected void initWindow(){ - setModal(true); - setHeadingText("Info Rule"); - getHeader().setIcon( - TabularDataResources.INSTANCE.information()); - setPredefinedButtons(PredefinedButton.OK); - setHideOnButtonClick(true); - setButtonAlign(BoxLayoutPack.CENTER); - setWidth(500); - - } - - protected void create(){ - FieldSet configurationFieldSet = new FieldSet(); - configurationFieldSet.setHeadingText("Configuration"); - configurationFieldSet.setCollapsible(false); - configurationFieldSet.setBorders(true); - - VerticalLayoutContainer configurationFieldSetLayout = new VerticalLayoutContainer(); - configurationFieldSet.add(configurationFieldSetLayout, - new MarginData(0)); - - TextField ruleName = new TextField(); - ruleName.setValue(ruleDescriptionData.getName()); - ruleName.setReadOnly(true); - FieldLabel ruleNameLabel = new FieldLabel(ruleName, "Name"); - configurationFieldSetLayout.add(ruleNameLabel, new VerticalLayoutData( - 1, -1, new Margins(0))); - - TextField ruleScope = new TextField(); - ruleScope.setValue(ruleDescriptionData.getScopeLabel()); - ruleScope.setReadOnly(true); - FieldLabel ruleScopeLabel = new FieldLabel(ruleScope, "Scope"); - configurationFieldSetLayout.add(ruleScopeLabel, new VerticalLayoutData( - 1, -1, new Margins(0))); - - TextArea ruleDescription = new TextArea(); - ruleDescription.setValue(ruleDescriptionData.getDescription()); - ruleDescription.setReadOnly(true); - FieldLabel ruleDescriptionLabel = new FieldLabel(ruleDescription, - "Description"); - configurationFieldSetLayout.add(ruleDescriptionLabel, - new VerticalLayoutData(1, -1, new Margins(0))); - - TextField ruleOwner = new TextField(); - ruleOwner.setValue(ruleDescriptionData.getOwnerLogin()); - ruleOwner.setReadOnly(true); - FieldLabel ruleOwnerLabel = new FieldLabel(ruleOwner, "Owner"); - configurationFieldSetLayout.add(ruleOwnerLabel, new VerticalLayoutData( - 1, -1, new Margins(0))); - - TextArea ruleExpression = new TextArea(); - ruleExpression.setValue(ruleDescriptionData.getReadableExpression()); - ruleExpression.setReadOnly(true); - ruleExpression.setHeight("82px"); - FieldLabel ruleExpressionLabel = new FieldLabel(ruleExpression, - "Expression"); - configurationFieldSetLayout.add(ruleExpressionLabel, - new VerticalLayoutData(1, -1, new Margins(0))); - - add(configurationFieldSet, new MarginData(0)); - - } - - -} diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleOpenDialog.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleOpenDialog.java deleted file mode 100644 index f8736e7..0000000 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleOpenDialog.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.gcube.portlets.user.td.client.rule; - -import org.gcube.portlets.user.td.client.resource.TabularDataResources; -import org.gcube.portlets.user.td.expressionwidget.client.RuleEditDialog; -import org.gcube.portlets.user.td.expressionwidget.client.notification.RuleEditDialogNotification; -import org.gcube.portlets.user.td.expressionwidget.client.notification.RuleEditDialogNotification.RuleEditDialogNotificationListener; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleDescriptionData; - -import com.allen_sauer.gwt.log.client.Log; -import com.google.web.bindery.event.shared.EventBus; -import com.sencha.gxt.widget.core.client.Window; -import com.sencha.gxt.widget.core.client.event.SelectEvent; -import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; - -/** - * - * @author "Giancarlo Panichi" g.panichi@isti.cnr.it - * - */ -public class RuleOpenDialog extends Window implements RuleEditDialogNotificationListener { - private static final String WIDTH = "720px"; - private static final String HEIGHT = "530px"; - private RuleOpenPanel rulesOpenPanel; - private EventBus eventBus; - - public RuleOpenDialog(EventBus eventBus) { - this.eventBus=eventBus; - initWindow(); - rulesOpenPanel= new RuleOpenPanel(this, - eventBus); - add(rulesOpenPanel); - } - - protected void initWindow() { - setWidth(WIDTH); - setHeight(HEIGHT); - setBodyBorder(false); - setResizable(false); - setHeadingText("Open Rule"); - setClosable(true); - setModal(true); - forceLayoutOnResize = true; - getHeader().setIcon(TabularDataResources.INSTANCE.ruleOpen()); - - } - - /** - * {@inheritDoc} - */ - @Override - protected void initTools() { - super.initTools(); - - closeBtn.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - close(); - } - }); - - } - - protected void close() { - hide(); - } - - public void ruleEdit(RuleDescriptionData ruleDescriptionData) { - openRuleDialog(ruleDescriptionData); - - } - - protected void openRuleDialog(RuleDescriptionData ruleDescriptionData) { - Log.debug("Request Open New Rule Dialog"); - RuleEditDialog reDialog = new RuleEditDialog(ruleDescriptionData,eventBus); - reDialog.addRuleEditDialogNotificationListener(this); - reDialog.show(); - - - /*RuleDialog cfDialog = new RuleDialog(ruleDescriptionData,eventBus); - cfDialog.addRuleDialogNotificationListener(this); - cfDialog.show();*/ - - - } - - @Override - public void onNotification(RuleEditDialogNotification ruleEditDialogNotification) { - rulesOpenPanel.gridReload(); - - } - - @Override - public void aborted() { - - } - - @Override - public void failed(Throwable throwable) { - Log.debug("Error in edit rule: "+throwable.getLocalizedMessage()); - - } - - - - - - - -} diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleOpenPanel.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleOpenPanel.java deleted file mode 100644 index 975b335..0000000 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleOpenPanel.java +++ /dev/null @@ -1,436 +0,0 @@ -package org.gcube.portlets.user.td.client.rule; - -import java.util.ArrayList; -import java.util.List; - -import org.gcube.portlets.user.td.client.resource.TabularDataResources; -import org.gcube.portlets.user.td.expressionwidget.client.rpc.ExpressionServiceAsync; -import org.gcube.portlets.user.td.expressionwidget.shared.rule.RuleDescriptionDataProperties; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleDescriptionData; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleScopeType; -import org.gcube.portlets.user.td.tablewidget.client.util.UtilsGXT3; -import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; -import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType; - -import com.allen_sauer.gwt.log.client.Log; -import com.google.gwt.cell.client.AbstractCell; -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.event.dom.client.KeyUpEvent; -import com.google.gwt.event.dom.client.KeyUpHandler; -import com.google.gwt.event.logical.shared.SelectionEvent; -import com.google.gwt.event.logical.shared.SelectionHandler; -import com.google.gwt.safehtml.shared.SafeHtml; -import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.web.bindery.event.shared.EventBus; -import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; -import com.sencha.gxt.core.client.IdentityValueProvider; -import com.sencha.gxt.core.client.Style.SelectionMode; -import com.sencha.gxt.core.client.XTemplates; -import com.sencha.gxt.core.client.resources.ThemeStyles; -import com.sencha.gxt.core.client.util.Margins; -import com.sencha.gxt.data.client.loader.RpcProxy; -import com.sencha.gxt.data.shared.ListStore; -import com.sencha.gxt.data.shared.ModelKeyProvider; -import com.sencha.gxt.data.shared.Store; -import com.sencha.gxt.data.shared.Store.StoreFilter; -import com.sencha.gxt.data.shared.loader.ListLoadConfig; -import com.sencha.gxt.data.shared.loader.ListLoadResult; -import com.sencha.gxt.data.shared.loader.ListLoadResultBean; -import com.sencha.gxt.data.shared.loader.ListLoader; -import com.sencha.gxt.data.shared.loader.LoadResultListStoreBinding; -import com.sencha.gxt.widget.core.client.FramedPanel; -import com.sencha.gxt.widget.core.client.button.TextButton; -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.HBoxLayoutContainer.HBoxLayoutAlign; -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.TextField; -import com.sencha.gxt.widget.core.client.grid.CheckBoxSelectionModel; -import com.sencha.gxt.widget.core.client.grid.ColumnConfig; -import com.sencha.gxt.widget.core.client.grid.ColumnModel; -import com.sencha.gxt.widget.core.client.grid.Grid; -import com.sencha.gxt.widget.core.client.menu.Item; -import com.sencha.gxt.widget.core.client.menu.Menu; -import com.sencha.gxt.widget.core.client.menu.MenuItem; -import com.sencha.gxt.widget.core.client.toolbar.LabelToolItem; -import com.sencha.gxt.widget.core.client.toolbar.ToolBar; - -/** - * - * @author giancarlo email: g.panichi@isti.cnr.it - * - */ -public class RuleOpenPanel extends FramedPanel { - private static final String WIDTH = "630px"; - private static final String HEIGHT = "520px"; - - interface RuleOpenTemplates extends XTemplates { - @XTemplate("{value}") - SafeHtml format(String value); - } - - private EventBus eventBus; - private RuleOpenDialog parent; - - private TextButton btnOpen; - private TextButton btnClose; - - private ListLoader> loader; - private Grid grid; - private ExtendedListStore store; - - public RuleOpenPanel(RuleOpenDialog parent, EventBus eventBus) { - this.parent = parent; - Log.debug("RuleOpenPanel"); - setWidth(WIDTH); - setHeight(HEIGHT); - setHeaderVisible(false); - setBodyBorder(false); - this.eventBus = eventBus; - - create(); - - } - - protected void create() { - ToolBar toolBarHead = new ToolBar(); - toolBarHead.add(new LabelToolItem("Search: ")); - final TextField searchField = new TextField(); - toolBarHead.add(searchField); - - TextButton btnReload = new TextButton(); - // btnReload.setText("Reload"); - btnReload.setIcon(TabularDataResources.INSTANCE.refresh()); - btnReload.setToolTip("Reload"); - toolBarHead.add(btnReload); - - IdentityValueProvider identity = new IdentityValueProvider(); - CheckBoxSelectionModel sm = new CheckBoxSelectionModel( - identity); - - RuleDescriptionDataProperties props = GWT - .create(RuleDescriptionDataProperties.class); - - ColumnConfig nameCol = new ColumnConfig( - props.name(), 120, "Name"); - - nameCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleOpenTemplates ruleOpenTemplates = GWT - .create(RuleOpenTemplates.class); - sb.append(ruleOpenTemplates.format(value)); - } - }); - - ColumnConfig scopeCol = new ColumnConfig( - props.scopeLabel(), 40, "Scope"); - - nameCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleOpenTemplates ruleOpenTemplates = GWT - .create(RuleOpenTemplates.class); - sb.append(ruleOpenTemplates.format(value)); - } - }); - - ColumnConfig descriptionCol = new ColumnConfig( - props.description(), 120, "Description"); - descriptionCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleOpenTemplates ruleOpenTemplates = GWT - .create(RuleOpenTemplates.class); - sb.append(ruleOpenTemplates.format(value)); - } - }); - - ColumnConfig ownerCol = new ColumnConfig( - props.ownerLogin(), 70, "Owner"); - ownerCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleOpenTemplates ruleOpenTemplates = GWT - .create(RuleOpenTemplates.class); - sb.append(ruleOpenTemplates.format(value)); - } - }); - - /* - ColumnConfig readableExpressionCol = new ColumnConfig( - props.readableExpression(), 160, "Expression"); - - readableExpressionCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleOpenTemplates ruleOpenTemplates = GWT - .create(RuleOpenTemplates.class); - sb.append(ruleOpenTemplates.format(value)); - } - });*/ - - List> l = new ArrayList>(); - l.add(nameCol); - l.add(scopeCol); - l.add(descriptionCol); - l.add(ownerCol); - //l.add(readableExpressionCol); - - ColumnModel cm = new ColumnModel( - l); - - store = new ExtendedListStore(props.id()); - - searchField.addKeyUpHandler(new KeyUpHandler() { - - public void onKeyUp(KeyUpEvent event) { - Log.trace("searchTerm: " + searchField.getCurrentValue()); - store.applyFilters(); - } - }); - - store.addFilter(new StoreFilter() { - - @Override - public boolean select(Store store, - RuleDescriptionData parent, RuleDescriptionData item) { - String searchTerm = searchField.getCurrentValue(); - if (searchTerm == null) - return true; - return RuleOpenPanel.this.select(item, searchTerm); - } - }); - - store.setEnableFilters(true); - - RpcProxy> proxy = new RpcProxy>() { - - public void load( - ListLoadConfig loadConfig, - final AsyncCallback> callback) { - loadData(loadConfig, callback); - } - }; - loader = new ListLoader>( - proxy); - - loader.setRemoteSort(false); - loader.addLoadHandler(new LoadResultListStoreBinding>( - store) { - }); - - SelectHandler sh = new SelectHandler() { - public void onSelect(SelectEvent event) { - loader.load(); - } - }; - - btnReload.addSelectHandler(sh); - - grid = new Grid(store, cm) { - @Override - protected void onAfterFirstAttach() { - super.onAfterFirstAttach(); - Scheduler.get().scheduleDeferred(new ScheduledCommand() { - - public void execute() { - loader.load(); - } - }); - } - }; - - sm.setSelectionMode(SelectionMode.SINGLE); - grid.setLoader(loader); - grid.setSelectionModel(sm); - grid.setHeight("384px"); - grid.getView().setStripeRows(true); - grid.getView().setColumnLines(true); - grid.getView().setAutoFill(true); - grid.setBorders(false); - grid.setLoadMask(true); - grid.setColumnReordering(true); - grid.setColumnResize(true); - grid.getView().setAutoExpandColumn(descriptionCol); - - createContextMenu(); - - ToolBar toolBar = new ToolBar(); - toolBar.add(grid); - toolBar.addStyleName(ThemeStyles.get().style().borderTop()); - toolBar.getElement().getStyle().setProperty("borderBottom", "none"); - - btnOpen = new TextButton("Edit"); - btnOpen.setIcon(TabularDataResources.INSTANCE.ruleEdit()); - btnOpen.setIconAlign(IconAlign.RIGHT); - btnOpen.setToolTip("Edit Rule"); - btnOpen.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - Log.debug("Pressed Open"); - edit(); - - } - }); - - btnClose = new TextButton("Close"); - btnClose.setIcon(TabularDataResources.INSTANCE.close()); - btnClose.setIconAlign(IconAlign.RIGHT); - btnClose.setToolTip("Close"); - btnClose.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - Log.debug("Pressed Close"); - close(); - } - }); - - HBoxLayoutContainer flowButton = new HBoxLayoutContainer(); - flowButton.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE); - flowButton.setPack(BoxLayoutPack.CENTER); - - BoxLayoutData boxLayoutData = new BoxLayoutData(new Margins(2, 4, 2, 4)); - flowButton.add(btnOpen, boxLayoutData); - flowButton.add(btnClose, boxLayoutData); - - VerticalLayoutContainer v = new VerticalLayoutContainer(); - v.add(toolBarHead, new VerticalLayoutData(1, -1, new Margins(0))); - v.add(grid, new VerticalLayoutData(1, -1, new Margins(0))); - v.add(toolBar, new VerticalLayoutData(1, 25, new Margins(0))); - v.add(flowButton, - new VerticalLayoutData(1, 36, new Margins(5, 2, 5, 2))); - add(v); - - } - - protected void loadData(ListLoadConfig loadConfig, - final AsyncCallback> callback) { - - ExpressionServiceAsync.INSTANCE.getRules(RuleScopeType.COLUMN, - new AsyncCallback>() { - - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - Log.error("Load rules failure:" - + caught.getLocalizedMessage()); - UtilsGXT3.alert("Error retrieving rules", - "Error retrieving rules"); - } - callback.onFailure(caught); - - } - - @Override - public void onSuccess(ArrayList result) { - if (result != null) { - Log.trace("loaded " + result.size() + " Rules"); - } else { - Log.trace("get Rules return: null"); - } - callback.onSuccess(new ListLoadResultBean( - result)); - - } - }); - - } - - protected RuleDescriptionData getSelectedItem() { - RuleDescriptionData template = grid.getSelectionModel() - .getSelectedItem(); - return template; - } - - protected void edit() { - - RuleDescriptionData rule = getSelectedItem(); - if (rule == null) { - UtilsGXT3.info("Attention", "Select the rule"); - } else { - parent.ruleEdit(rule); - - } - - } - - protected void close() { - parent.close(); - } - - protected class ExtendedListStore extends ListStore { - - public ExtendedListStore(ModelKeyProvider keyProvider) { - super(keyProvider); - } - - public void applyFilters() { - super.applyFilters(); - } - - } - - public void gridReload() { - grid.getLoader().load(); - } - - protected boolean select(RuleDescriptionData item, String searchTerm) { - if (item.getName() != null - && item.getName().toLowerCase() - .contains(searchTerm.toLowerCase())) - return true; - if (item.getDescription() != null - && item.getDescription().toLowerCase() - .contains(searchTerm.toLowerCase())) - return true; - return false; - } - - protected void requestInfo(RuleDescriptionData rule) { - final RuleInfoDialog infoRuleDialog = new RuleInfoDialog(rule); - infoRuleDialog.show(); - - - } - - protected void createContextMenu() { - Menu contextMenu = new Menu(); - - MenuItem infoItem = new MenuItem(); - infoItem.setText("Info"); - infoItem.setIcon(TabularDataResources.INSTANCE.information()); - infoItem.addSelectionHandler(new SelectionHandler() { - - @Override - public void onSelection(SelectionEvent event) { - RuleDescriptionData selected = grid.getSelectionModel() - .getSelectedItem(); - Log.debug(selected.toString()); - requestInfo(selected); - } - }); - - contextMenu.add(infoItem); - - grid.setContextMenu(contextMenu); - - } -} diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleShareDialog.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleShareDialog.java deleted file mode 100644 index c6ca539..0000000 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleShareDialog.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.gcube.portlets.user.td.client.rule; - -import org.gcube.portlets.user.td.client.resource.TabularDataResources; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleDescriptionData; -import org.gcube.portlets.user.td.sharewidget.client.RuleShare; - -import com.allen_sauer.gwt.log.client.Log; -import com.google.web.bindery.event.shared.EventBus; -import com.sencha.gxt.widget.core.client.Window; -import com.sencha.gxt.widget.core.client.event.SelectEvent; -import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; - -/** - * - * @author "Giancarlo Panichi" g.panichi@isti.cnr.it - * - */ -public class RuleShareDialog extends Window { - private static final String WIDTH = "720px"; - private static final String HEIGHT = "530px"; - - private EventBus eventBus; - - public RuleShareDialog(EventBus eventBus) { - this.eventBus = eventBus; - initWindow(); - - RuleSharePanel templateDeletePanel = new RuleSharePanel(this, - eventBus); - add(templateDeletePanel); - } - - protected void initWindow() { - setWidth(WIDTH); - setHeight(HEIGHT); - setBodyBorder(false); - setResizable(false); - setHeadingText("Share Rule"); - setClosable(true); - setModal(true); - forceLayoutOnResize = true; - getHeader().setIcon(TabularDataResources.INSTANCE.ruleShare()); - - } - - /** - * {@inheritDoc} - */ - @Override - protected void initTools() { - super.initTools(); - - closeBtn.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - close(); - } - }); - - } - - protected void close() { - hide(); - } - - - public void ruleShare(RuleDescriptionData ruleDescriptionData) { - Log.debug("Share Window"); - @SuppressWarnings("unused") - RuleShare ruleShare = new RuleShare(ruleDescriptionData, eventBus); - close(); - - } - -} diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleSharePanel.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleSharePanel.java deleted file mode 100644 index 0bd66b7..0000000 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleSharePanel.java +++ /dev/null @@ -1,422 +0,0 @@ -package org.gcube.portlets.user.td.client.rule; - -import java.util.ArrayList; -import java.util.List; - -import org.gcube.portlets.user.td.client.resource.TabularDataResources; -import org.gcube.portlets.user.td.client.rule.RuleDeletePanel.RuleDeleteTemplates; -import org.gcube.portlets.user.td.expressionwidget.client.rpc.ExpressionServiceAsync; -import org.gcube.portlets.user.td.expressionwidget.shared.rule.RuleDescriptionDataProperties; -import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleDescriptionData; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleScopeType; -import org.gcube.portlets.user.td.tablewidget.client.util.UtilsGXT3; -import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; -import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType; - -import com.allen_sauer.gwt.log.client.Log; -import com.google.gwt.cell.client.AbstractCell; -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.event.dom.client.KeyUpEvent; -import com.google.gwt.event.dom.client.KeyUpHandler; -import com.google.gwt.event.logical.shared.SelectionEvent; -import com.google.gwt.event.logical.shared.SelectionHandler; -import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.web.bindery.event.shared.EventBus; -import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; -import com.sencha.gxt.core.client.IdentityValueProvider; -import com.sencha.gxt.core.client.Style.SelectionMode; -import com.sencha.gxt.core.client.resources.ThemeStyles; -import com.sencha.gxt.core.client.util.Margins; -import com.sencha.gxt.data.client.loader.RpcProxy; -import com.sencha.gxt.data.shared.ListStore; -import com.sencha.gxt.data.shared.ModelKeyProvider; -import com.sencha.gxt.data.shared.Store; -import com.sencha.gxt.data.shared.Store.StoreFilter; -import com.sencha.gxt.data.shared.loader.ListLoadConfig; -import com.sencha.gxt.data.shared.loader.ListLoadResult; -import com.sencha.gxt.data.shared.loader.ListLoadResultBean; -import com.sencha.gxt.data.shared.loader.ListLoader; -import com.sencha.gxt.data.shared.loader.LoadResultListStoreBinding; -import com.sencha.gxt.widget.core.client.FramedPanel; -import com.sencha.gxt.widget.core.client.button.TextButton; -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.HBoxLayoutContainer.HBoxLayoutAlign; -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.TextField; -import com.sencha.gxt.widget.core.client.grid.CheckBoxSelectionModel; -import com.sencha.gxt.widget.core.client.grid.ColumnConfig; -import com.sencha.gxt.widget.core.client.grid.ColumnModel; -import com.sencha.gxt.widget.core.client.grid.Grid; -import com.sencha.gxt.widget.core.client.menu.Item; -import com.sencha.gxt.widget.core.client.menu.Menu; -import com.sencha.gxt.widget.core.client.menu.MenuItem; -import com.sencha.gxt.widget.core.client.toolbar.LabelToolItem; -import com.sencha.gxt.widget.core.client.toolbar.ToolBar; - -/** - * - * @author giancarlo email: g.panichi@isti.cnr.it - * - */ -public class RuleSharePanel extends FramedPanel { - private static final String WIDTH = "630px"; - private static final String HEIGHT = "520px"; - private EventBus eventBus; - private RuleShareDialog parent; - - private TextButton btnClose; - private TextButton btnShare; - - private ListLoader> loader; - private Grid grid; - private ExtendedListStore store; - - public RuleSharePanel(RuleShareDialog parent, EventBus eventBus) { - this.parent = parent; - Log.debug("RuleSharePanel"); - setWidth(WIDTH); - setHeight(HEIGHT); - setHeaderVisible(false); - setBodyBorder(false); - this.eventBus = eventBus; - - create(); - - } - - protected void create() { - ToolBar toolBarHead = new ToolBar(); - toolBarHead.add(new LabelToolItem("Search: ")); - final TextField searchField = new TextField(); - toolBarHead.add(searchField); - - TextButton btnReload = new TextButton(); - // btnReload.setText("Reload"); - btnReload.setIcon(TabularDataResources.INSTANCE.refresh()); - btnReload.setToolTip("Reload"); - toolBarHead.add(btnReload); - - IdentityValueProvider identity = new IdentityValueProvider(); - CheckBoxSelectionModel sm = new CheckBoxSelectionModel( - identity); - - RuleDescriptionDataProperties props = GWT - .create(RuleDescriptionDataProperties.class); - - ColumnConfig nameCol = new ColumnConfig( - props.name(), 120, "Name"); - - nameCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleDeleteTemplates ruleDeleteTemplates = GWT - .create(RuleDeleteTemplates.class); - sb.append(ruleDeleteTemplates.format(value)); - } - }); - - ColumnConfig scopeCol = new ColumnConfig( - props.scopeLabel(), 40, "Scope"); - - nameCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleDeleteTemplates ruleDeleteTemplates = GWT - .create(RuleDeleteTemplates.class); - sb.append(ruleDeleteTemplates.format(value)); - } - }); - - ColumnConfig descriptionCol = new ColumnConfig( - props.description(), 120, "Description"); - descriptionCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleDeleteTemplates ruleDeleteTemplates = GWT - .create(RuleDeleteTemplates.class); - sb.append(ruleDeleteTemplates.format(value)); - } - }); - - ColumnConfig ownerCol = new ColumnConfig( - props.ownerLogin(), 70, "Owner"); - ownerCol.setCell(new AbstractCell() { - - @Override - public void render(Context context, String value, SafeHtmlBuilder sb) { - RuleDeleteTemplates ruleDeleteTemplates = GWT - .create(RuleDeleteTemplates.class); - sb.append(ruleDeleteTemplates.format(value)); - } - }); - - - List> l = new ArrayList>(); - l.add(nameCol); - l.add(scopeCol); - l.add(descriptionCol); - l.add(ownerCol); - - - ColumnModel cm = new ColumnModel(l); - - store = new ExtendedListStore(props.id()); - - searchField.addKeyUpHandler(new KeyUpHandler() { - - public void onKeyUp(KeyUpEvent event) { - Log.trace("searchTerm: " + searchField.getCurrentValue()); - store.applyFilters(); - } - }); - - store.addFilter(new StoreFilter() { - - @Override - public boolean select(Store store, - RuleDescriptionData parent, RuleDescriptionData item) { - String searchTerm = searchField.getCurrentValue(); - if (searchTerm == null) - return true; - return RuleSharePanel.this.select(item, searchTerm); - } - }); - - store.setEnableFilters(true); - - RpcProxy> proxy = new RpcProxy>() { - - public void load(ListLoadConfig loadConfig, - final AsyncCallback> callback) { - loadData(loadConfig, callback); - } - }; - loader = new ListLoader>( - proxy); - - loader.setRemoteSort(false); - loader.addLoadHandler(new LoadResultListStoreBinding>( - store) { - }); - - SelectHandler sh = new SelectHandler() { - public void onSelect(SelectEvent event) { - loader.load(); - } - }; - - btnReload.addSelectHandler(sh); - - grid = new Grid(store, cm) { - @Override - protected void onAfterFirstAttach() { - super.onAfterFirstAttach(); - Scheduler.get().scheduleDeferred(new ScheduledCommand() { - - public void execute() { - loader.load(); - } - }); - } - }; - - sm.setSelectionMode(SelectionMode.SINGLE); - grid.setLoader(loader); - grid.setSelectionModel(sm); - grid.setHeight("384px"); - grid.getView().setStripeRows(true); - grid.getView().setColumnLines(true); - grid.getView().setAutoFill(true); - grid.setBorders(false); - grid.setLoadMask(true); - grid.setColumnReordering(true); - grid.setColumnResize(true); - grid.getView().setAutoExpandColumn(descriptionCol); - - createContextMenu(); - - - ToolBar toolBar = new ToolBar(); - toolBar.add(grid); - toolBar.addStyleName(ThemeStyles.get().style().borderTop()); - toolBar.getElement().getStyle().setProperty("borderBottom", "none"); - - - - btnClose = new TextButton("Close"); - btnClose.setIcon(TabularDataResources.INSTANCE.close()); - btnClose.setIconAlign(IconAlign.RIGHT); - btnClose.setToolTip("Close"); - btnClose.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - Log.debug("Pressed Close"); - close(); - } - }); - - btnShare = new TextButton("Share"); - btnShare.setIcon(TabularDataResources.INSTANCE.ruleShare()); - btnShare.setIconAlign(IconAlign.RIGHT); - btnShare.setToolTip("Share"); - btnShare.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - Log.debug("Pressed Share"); - share(); - } - }); - - HBoxLayoutContainer flowButton = new HBoxLayoutContainer(); - flowButton.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE); - flowButton.setPack(BoxLayoutPack.CENTER); - - BoxLayoutData boxLayoutData = new BoxLayoutData(new Margins(2, 4, 2, 4)); - flowButton.add(btnShare, boxLayoutData); - flowButton.add(btnClose, boxLayoutData); - - VerticalLayoutContainer v = new VerticalLayoutContainer(); - v.add(toolBarHead, new VerticalLayoutData(1, -1, new Margins(0))); - v.add(grid, new VerticalLayoutData(1, -1, new Margins(0))); - v.add(toolBar, new VerticalLayoutData(1, 25, new Margins(0))); - v.add(flowButton, - new VerticalLayoutData(1, 36, new Margins(5, 2, 5, 2))); - add(v); - - } - - protected void loadData(ListLoadConfig loadConfig, - final AsyncCallback> callback) { - - ExpressionServiceAsync.INSTANCE.getRules(RuleScopeType.COLUMN, - new AsyncCallback>() { - - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - Log.error("Load rules failure:" - + caught.getLocalizedMessage()); - UtilsGXT3.alert("Error retrieving rules", - "Error retrieving rules"); - } - callback.onFailure(caught); - - } - - @Override - public void onSuccess(ArrayList result) { - Log.trace("loaded " + result.size() + " Rules"); - callback.onSuccess(new ListLoadResultBean( - result)); - - } - }); - - } - - - - protected ArrayList getSelectedItem() { - ArrayList rules = new ArrayList(); - for (RuleDescriptionData rule : grid.getSelectionModel() - .getSelectedItems()) { - rules.add(rule); - } - return rules; - } - - - protected void share() { - - ArrayList rules = getSelectedItem(); - if (rules == null || rules.size() == 0) { - UtilsGXT3.info("Attention", "Select the rule"); - } else { - RuleDescriptionData rule = rules.get(0); - Log.debug("templateShare: " + rule); - parent.ruleShare(rule); - - } - - } - - protected void close() { - parent.close(); - } - - protected class ExtendedListStore extends ListStore { - - public ExtendedListStore(ModelKeyProvider keyProvider) { - super(keyProvider); - } - - public void applyFilters() { - super.applyFilters(); - } - - } - - public void gridReload() { - grid.getLoader().load(); - } - - protected boolean select(RuleDescriptionData item, String searchTerm) { - if (item.getName() != null - && item.getName().toLowerCase() - .contains(searchTerm.toLowerCase())) - return true; - if (item.getDescription() != null - && item.getDescription().toLowerCase() - .contains(searchTerm.toLowerCase())) - return true; - return false; - } - - protected void requestInfo(RuleDescriptionData rule) { - final RuleInfoDialog infoRuleDialog = new RuleInfoDialog(rule); - infoRuleDialog.show(); - - } - - protected void createContextMenu() { - Menu contextMenu = new Menu(); - - MenuItem infoItem = new MenuItem(); - infoItem.setText("Info"); - infoItem.setIcon(TabularDataResources.INSTANCE.information()); - infoItem.addSelectionHandler(new SelectionHandler() { - - @Override - public void onSelection(SelectionEvent event) { - RuleDescriptionData selected = grid.getSelectionModel() - .getSelectedItem(); - Log.debug(selected.toString()); - requestInfo(selected); - } - }); - - contextMenu.add(infoItem); - - grid.setContextMenu(contextMenu); - - } - - - -} diff --git a/src/main/java/org/gcube/portlets/user/td/tabulardataportlet.gwt.xml b/src/main/java/org/gcube/portlets/user/td/tabulardataportlet.gwt.xml index 8a4c1ea..2c14ea0 100644 --- a/src/main/java/org/gcube/portlets/user/td/tabulardataportlet.gwt.xml +++ b/src/main/java/org/gcube/portlets/user/td/tabulardataportlet.gwt.xml @@ -33,6 +33,7 @@ + diff --git a/src/main/resources/org/gcube/portlets/user/td/tabulardataportlet.gwt.xml b/src/main/resources/org/gcube/portlets/user/td/tabulardataportlet.gwt.xml index 26eaf26..2fe84cf 100644 --- a/src/main/resources/org/gcube/portlets/user/td/tabulardataportlet.gwt.xml +++ b/src/main/resources/org/gcube/portlets/user/td/tabulardataportlet.gwt.xml @@ -1,6 +1,5 @@ - @@ -38,7 +37,8 @@ - + + --> - + -->