From 5cb8d6366ad590b3aa5979447571834b504a3bef Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Wed, 1 Apr 2015 11:35:15 +0000 Subject: [PATCH] Added RuleToolBar git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-portlet@113857 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../user/td/client/TabularDataController.java | 15 +- .../user/td/client/ribbon/RuleToolBar.java | 228 ++++++++++++++++++ .../td/client/ribbon/TabularDataRibbon.java | 6 + 3 files changed, 245 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/td/client/ribbon/RuleToolBar.java 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 9d5e3af..9344087 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 @@ -761,10 +761,7 @@ public class TabularDataController { case LOGS: openLogsWindow(); break; - case RULE_NEW: - break; - case RULE_MANAGE: - break; + case DUPLICATE_DETECTION: openDuplicatesRowsDetection(); break; @@ -860,6 +857,16 @@ public class TabularDataController { break; case COLUMN_BATCH_REPLACE: break; + case RULE_NEW: + break; + case RULE_MODIFY: + break; + case RULE_DELETE: + break; + case RULE_APPLY: + break; + case RULE_SHARE: + break; case TEMPLATE_OPEN: openTemplateOpen(); break; diff --git a/src/main/java/org/gcube/portlets/user/td/client/ribbon/RuleToolBar.java b/src/main/java/org/gcube/portlets/user/td/client/ribbon/RuleToolBar.java new file mode 100644 index 0000000..d6d3d0f --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/client/ribbon/RuleToolBar.java @@ -0,0 +1,228 @@ +/** + * + */ +package org.gcube.portlets.user.td.client.ribbon; + +import org.gcube.portlets.user.td.client.resource.TabularDataResources; +import org.gcube.portlets.user.td.widgetcommonevent.client.event.RibbonEvent; +import org.gcube.portlets.user.td.widgetcommonevent.client.event.UIStateEvent; +import org.gcube.portlets.user.td.widgetcommonevent.client.type.RibbonType; +import org.gcube.portlets.user.td.widgetcommonevent.client.type.UIStateType; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.NodeList; +import com.google.gwt.user.client.ui.FlexTable; +import com.google.web.bindery.event.shared.EventBus; +import com.sencha.gxt.cell.core.client.ButtonCell.ButtonArrowAlign; +import com.sencha.gxt.cell.core.client.ButtonCell.ButtonScale; +import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; +import com.sencha.gxt.core.client.dom.XElement; +import com.sencha.gxt.widget.core.client.button.ButtonGroup; +import com.sencha.gxt.widget.core.client.button.TextButton; +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.toolbar.ToolBar; + +/** + * + * @author "Giancarlo Panichi" g.panichi@isti.cnr.it + * + */ +public class RuleToolBar { + + private EventBus eventBus; + private ToolBar toolBar; + + //Rules + private TextButton ruleNewButton; + private TextButton ruleModifyButton; + private TextButton ruleDeleteButton; + private TextButton ruleApplyButton; + private TextButton ruleShareButton; + + + public RuleToolBar(EventBus eventBus) { + this.eventBus = eventBus; + build(); + } + + public ToolBar getToolBar() { + return toolBar; + } + + protected void build() { + toolBar = new ToolBar(); + toolBar.setSpacing(1); + toolBar.setEnableOverflow(false); + + // Rules + ButtonGroup rulesGroup = new ButtonGroup(); + rulesGroup.setId("Manage"); + rulesGroup.setStyleName("ribbon"); + rulesGroup.setHeadingText("Manage"); + //templateGroup.disable(); + toolBar.add(rulesGroup); + + FlexTable templateLayout = new FlexTable(); + rulesGroup.add(templateLayout); + + ruleNewButton = new TextButton("New", + TabularDataResources.INSTANCE.templateEdit32()); + ruleNewButton.enable(); + ruleNewButton.setToolTip("New"); + ruleNewButton.setScale(ButtonScale.LARGE); + ruleNewButton.setIconAlign(IconAlign.TOP); + ruleNewButton.setArrowAlign(ButtonArrowAlign.BOTTOM); + ruleNewButton.addSelectHandler(new SelectHandler() { + + public void onSelect(SelectEvent event) { + eventBus.fireEvent(new RibbonEvent( + RibbonType.RULE_NEW)); + } + }); + + templateLayout.setWidget(0, 0, ruleNewButton); + templateLayout.getFlexCellFormatter().setRowSpan(0, 0, 2); + + ruleModifyButton = new TextButton("Modify", + TabularDataResources.INSTANCE.templateAdd32()); + ruleModifyButton.enable(); + ruleModifyButton.setToolTip("Modify"); + ruleModifyButton.setScale(ButtonScale.LARGE); + ruleModifyButton.setIconAlign(IconAlign.TOP); + ruleModifyButton.setArrowAlign(ButtonArrowAlign.BOTTOM); + ruleModifyButton.addSelectHandler(new SelectHandler() { + + public void onSelect(SelectEvent event) { + eventBus.fireEvent(new RibbonEvent( + RibbonType.RULE_MODIFY)); + } + }); + + templateLayout.setWidget(0, 1, ruleModifyButton); + templateLayout.getFlexCellFormatter().setRowSpan(0, 1, 2); + + + ruleDeleteButton = new TextButton("Delete", + TabularDataResources.INSTANCE.templateDelete32()); + ruleDeleteButton.enable(); + ruleDeleteButton.setToolTip("Delete"); + ruleDeleteButton.setScale(ButtonScale.LARGE); + ruleDeleteButton.setIconAlign(IconAlign.TOP); + ruleDeleteButton.setArrowAlign(ButtonArrowAlign.BOTTOM); + ruleDeleteButton.addSelectHandler(new SelectHandler() { + + public void onSelect(SelectEvent event) { + eventBus.fireEvent(new RibbonEvent( + RibbonType.RULE_DELETE)); + } + }); + + templateLayout.setWidget(0, 2, ruleDeleteButton); + templateLayout.getFlexCellFormatter().setRowSpan(0, 2, 2); + + + ruleApplyButton = new TextButton("Apply", + TabularDataResources.INSTANCE.templateApply32()); + ruleApplyButton.disable(); + ruleApplyButton.setScale(ButtonScale.LARGE); + ruleApplyButton.setIconAlign(IconAlign.TOP); + ruleApplyButton.setToolTip("Apply Rule"); + ruleApplyButton.setArrowAlign(ButtonArrowAlign.BOTTOM); + ruleApplyButton.addSelectHandler(new SelectHandler() { + + public void onSelect(SelectEvent event) { + eventBus.fireEvent(new RibbonEvent(RibbonType.RULE_APPLY)); + } + }); + + templateLayout.setWidget(0, 3, ruleApplyButton); + templateLayout.getFlexCellFormatter().setRowSpan(0, 3, 2); + + + ruleShareButton = new TextButton("Share", + TabularDataResources.INSTANCE.templateShare32()); + ruleShareButton.enable(); + ruleShareButton.setScale(ButtonScale.LARGE); + ruleShareButton.setIconAlign(IconAlign.TOP); + ruleShareButton.setToolTip("Share Rule"); + ruleShareButton.setArrowAlign(ButtonArrowAlign.BOTTOM); + ruleShareButton.addSelectHandler(new SelectHandler() { + + public void onSelect(SelectEvent event) { + eventBus.fireEvent(new RibbonEvent(RibbonType.RULE_SHARE)); + } + }); + + templateLayout.setWidget(0, 4, ruleShareButton); + templateLayout.getFlexCellFormatter().setRowSpan(0, 4, 2); + + cleanCells(templateLayout.getElement()); + + eventBus.addHandler(UIStateEvent.TYPE, + new UIStateEvent.UIStateHandler() { + + public void onUIState(UIStateEvent event) { + setUI(event); + + } + }); + + } + + private void cleanCells(Element elem) { + NodeList tds = elem. cast().select("td"); + for (int i = 0; i < tds.getLength(); i++) { + Element td = tds.getItem(i); + + if (!td.hasChildNodes() && td.getClassName().equals("")) { + td.removeFromParent(); + } + } + } + + public void setUI(UIStateEvent event) { + UIStateType uiStateType = event.getUIStateType(); + try { + switch (uiStateType) { + case START: + ruleModifyButton.enable(); + ruleNewButton.enable(); + ruleDeleteButton.enable(); + ruleApplyButton.disable(); + ruleShareButton.enable(); + break; + case TR_CLOSE: + case TR_READONLY: + ruleModifyButton.enable(); + ruleNewButton.enable(); + ruleDeleteButton.enable(); + ruleApplyButton.disable(); + ruleShareButton.enable(); + break; + case TR_OPEN: + case TABLEUPDATE: + case TABLECURATION: + ruleModifyButton.enable(); + ruleNewButton.enable(); + ruleDeleteButton.enable(); + ruleApplyButton.enable(); + ruleShareButton.enable(); + break; + case WIZARD_OPEN: + ruleModifyButton.disable(); + ruleNewButton.disable(); + ruleDeleteButton.disable(); + ruleApplyButton.disable(); + ruleShareButton.disable(); + break; + default: + break; + } + } catch (Exception e) { + Log.error("setUI Error : " + e.getLocalizedMessage()); + } + } +} diff --git a/src/main/java/org/gcube/portlets/user/td/client/ribbon/TabularDataRibbon.java b/src/main/java/org/gcube/portlets/user/td/client/ribbon/TabularDataRibbon.java index cb07536..e8b1be3 100644 --- a/src/main/java/org/gcube/portlets/user/td/client/ribbon/TabularDataRibbon.java +++ b/src/main/java/org/gcube/portlets/user/td/client/ribbon/TabularDataRibbon.java @@ -27,6 +27,7 @@ public class TabularDataRibbon { private FileToolBar fileToolBar; private CurationToolBar curationToolBar; private ModifyToolBar modifyToolBar; + private RuleToolBar ruleToolBar; private TemplateToolBar templateToolBar; private AnalyseToolBar analyseToolBar; @@ -54,6 +55,11 @@ public class TabularDataRibbon { con.add(modifyToolBar.getToolBar(), vldata); ribbon.add(con, "Modify"); + ruleToolBar = new RuleToolBar(eventBus); + con = new VerticalLayoutContainer(); + con.add(ruleToolBar.getToolBar(), vldata); + ribbon.add(con, "Rule"); + templateToolBar = new TemplateToolBar(eventBus); con = new VerticalLayoutContainer(); con.add(templateToolBar.getToolBar(), vldata);