diff --git a/pom.xml b/pom.xml index c0e9b4f..e5b44a5 100644 --- a/pom.xml +++ b/pom.xml @@ -111,6 +111,14 @@ 1.0.0-SNAPSHOT + + + org.gcube.portlets.user + tabular-data-information-widget + [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT) + + + com.allen-sauer.gwt.log diff --git a/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBox.java b/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBox.java index b925c4e..9b0d643 100644 --- a/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBox.java +++ b/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBox.java @@ -1,20 +1,78 @@ package org.gcube.portlets.user.td.toolboxwidget.client; +import org.gcube.portlets.user.td.informationwidget.client.TabularResourceProperties; +import org.gcube.portlets.user.td.widgetcommonevent.client.event.UIStateEvent; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.user.client.ui.Widget; import com.google.web.bindery.event.shared.EventBus; +import com.sencha.gxt.widget.core.client.TabItemConfig; import com.sencha.gxt.widget.core.client.TabPanel; -import org.gcube.portlets.user.td.toolboxwidget.client.ToolBox; +import com.sencha.gxt.widget.core.client.event.BeforeCloseEvent; +import com.sencha.gxt.widget.core.client.event.BeforeCloseEvent.BeforeCloseHandler; public class ToolBox extends TabPanel { - private EventBus eventBus; - - public ToolBox(String name, EventBus eventBus) { + protected EventBus eventBus; + protected TabularResourceProperties trProperties; + protected ToolBoxPanel toolBoxPanel; + + public ToolBox(String name, EventBus eventBus, ToolBoxPanel toolBoxPanel) { super(); - this.eventBus=eventBus; + Log.debug("Create ToolBox"); + this.eventBus = eventBus; + this.toolBoxPanel = toolBoxPanel; setId(name); - + + setAnimScroll(true); + setTabScroll(true); + setCloseContextMenu(true); + // setResizeTabs(true); } + public void closeTabs() { + Log.debug("Close ToolBox Tabs"); + for (int i = 0; i < getTabIndex(); i++) { + remove(i); + } + + } + public void updateTabs(){ + Log.debug("Update ToolBox Tabs"); + if(trProperties!=null){ + trProperties.update(); + } + } + + public void openTabs() { + Log.debug("Open ToolBox Tabs"); + TabItemConfig propertiesItemConf = new TabItemConfig("Properties", true); + + trProperties = new TabularResourceProperties("TRProperties", eventBus); + trProperties.setHeaderVisible(false); + add(trProperties, propertiesItemConf); + addBeforeCloseHandler(new BeforeCloseHandler() { + + @Override + public void onBeforeClose(BeforeCloseEvent event) { + if (getWidgetCount() == 1) { + toolBoxPanel.closePanelOnly(); + remove(trProperties); + } + + } + + }); + + /* + * Label taskLabel = new Label("Task Properties"); + * taskLabel.addStyleName("pad-text"); functionalityTab .add(taskLabel, + * new TabItemConfig("Task", true)); + */ + setActiveWidget(getWidget(0)); + + } + } diff --git a/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBoxEntry.java b/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBoxEntry.java index 72a5f08..4f73a74 100644 --- a/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBoxEntry.java +++ b/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBoxEntry.java @@ -14,10 +14,10 @@ public class ToolBoxEntry implements EntryPoint { EventBus eventBus = new SimpleEventBus(); - ToolBox toolBox = new ToolBox("ToolBox", eventBus); + ToolBoxPanel toolBoxPanel = new ToolBoxPanel("ToolBoxPanel", eventBus); - RootPanel.get().add(toolBox); - Log.info("" + toolBox); + RootPanel.get().add(toolBoxPanel); + Log.info("ToolBoxPanel Added:" + toolBoxPanel); } } diff --git a/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBoxPanel.java b/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBoxPanel.java new file mode 100644 index 0000000..7e0bd20 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBoxPanel.java @@ -0,0 +1,137 @@ +package org.gcube.portlets.user.td.toolboxwidget.client; + + +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.UIStateType; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.web.bindery.event.shared.EventBus; +import com.sencha.gxt.widget.core.client.ContentPanel; + + +public class ToolBoxPanel extends ContentPanel { + + protected EventBus eventBus; + protected ToolBox toolBox; + protected ToolBoxPanelState state; + protected UIStateType uiStateType; + + + public ToolBoxPanel(String name, EventBus eventBus) { + super(); + Log.debug("Close ToolBoxPanel"); + this.eventBus=eventBus; + setId(name); + setWidth(310); + setHeaderVisible(false); + setResize(true); + state=ToolBoxPanelState.CLOSED; + toolBox = new ToolBox("ToolBox",eventBus,this); + + add(toolBox); + + bindToEvents(); + + } + + protected void bindToEvents() { + eventBus.addHandler(RibbonEvent.TYPE, + new RibbonEvent.RibbonEventHandler() { + + @Override + public void onRibbon(RibbonEvent event) { + manageRibbonEvents(event); + + } + }); + + eventBus.addHandler( + UIStateEvent.TYPE, + new UIStateEvent.UIStateHandler() { + + @Override + public void onUIState(UIStateEvent event) { + manageUIStateEvents(event); + + } + }); + } + + protected void manageRibbonEvents(RibbonEvent event){ + Log.debug("ToolBox recieved event: "+event.getRibbonType().toString()); + switch (event.getRibbonType()){ + case PROPERTIES: + doToolBoxPanelOpenSwitch(); + break; + default: + break; + } + } + + protected void manageUIStateEvents(UIStateEvent event){ + Log.debug("ToolBox recieved event: "+event.getUIStateType().toString()); + uiStateType = event.getUIStateType(); + switch (event.getUIStateType()){ + case START: + break; + case TR_CLOSE: + closePanel(); + break; + case TR_OPEN: + updatePanel(); + break; + case WIZARD_OPEN: + break; + default: + break; + + + } + } + + protected void doToolBoxPanelOpenSwitch(){ + if (uiStateType == UIStateType.TR_OPEN) { + if (state == ToolBoxPanelState.OPENED) { + collapse(); + disable(); + + state = ToolBoxPanelState.CLOSED; + toolBox.closeTabs(); + Log.debug("ToolBoxPanel Closed"); + } else { + enable(); + expand(); + state = ToolBoxPanelState.OPENED; + toolBox.openTabs(); + + } + } else { + Log.debug("ToolBoxPanel No table open"); + } + + + } + + public void closePanelOnly(){ + collapse(); + disable(); + state=ToolBoxPanelState.CLOSED; + } + + public void closePanel(){ + collapse(); + disable(); + state=ToolBoxPanelState.CLOSED; + toolBox.closeTabs(); + Log.debug("ToolBoxPanel Closed"); + } + + public void updatePanel(){ + if (state == ToolBoxPanelState.OPENED) { + toolBox.updateTabs(); + Log.debug("ToolBoxPanel Updated"); + } + } + +} diff --git a/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBoxPanelState.java b/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBoxPanelState.java new file mode 100644 index 0000000..706a0cc --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/toolboxwidget/client/ToolBoxPanelState.java @@ -0,0 +1,6 @@ +package org.gcube.portlets.user.td.toolboxwidget.client; + +public enum ToolBoxPanelState { + CLOSED, + OPENED; +} diff --git a/src/main/resources/org/gcube/portlets/user/td/toolboxwidget/ToolBox.gwt.xml b/src/main/resources/org/gcube/portlets/user/td/toolboxwidget/ToolBox.gwt.xml index d157f94..fe2c3b6 100644 --- a/src/main/resources/org/gcube/portlets/user/td/toolboxwidget/ToolBox.gwt.xml +++ b/src/main/resources/org/gcube/portlets/user/td/toolboxwidget/ToolBox.gwt.xml @@ -19,7 +19,8 @@ - + +