diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index d7b32dd..32dc0da 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -10,7 +10,7 @@
uses
-
+
uses
@@ -19,6 +19,9 @@
uses
+
+ uses
+
diff --git a/pom.xml b/pom.xml
index f781806..e5e8d0a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,7 +89,7 @@
aslcore
[3.2.1-SNAPSHOT,4.0.0-SNAPSHOT)
provided
-
+
@@ -117,18 +117,10 @@
-
+
org.gcube.portlets.user
tabular-data-widget-td-source
@@ -147,7 +139,7 @@
[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT]
sources
-
+
org.gcube.portlets.user
@@ -167,30 +159,37 @@
SDMXImportWizardTD
1.0.0-SNAPSHOT
-
+
org.gcube.portlets.user
SDMXExportWizardTD
1.0.0-SNAPSHOT
-
-
+
+
org.gcube.portlets.user
TDOpen
1.0.0-SNAPSHOT
-
+
+
+
+ org.gcube.portlets.user
+ tabular-data-information
+ 1.0.0-SNAPSHOT
+
+
org.gcube.data.analysis.tabulardata
service-client-mock
[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 586ce8c..9599740 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
@@ -14,18 +14,33 @@ import org.gcube.portlets.user.td.client.event.ExportTableEvent;
import org.gcube.portlets.user.td.client.event.ExportTableType;
import org.gcube.portlets.user.td.client.event.ImportTableEvent;
import org.gcube.portlets.user.td.client.event.ImportTableType;
+import org.gcube.portlets.user.td.client.event.OpenFunctionalityEvent;
+import org.gcube.portlets.user.td.client.event.OpenFunctionalityType;
import org.gcube.portlets.user.td.client.event.OpenTabularResourceEvent;
import org.gcube.portlets.user.td.client.event.OpenTabularResourceType;
import org.gcube.portlets.user.td.importer.client.TabularDataImporterListener;
+import org.gcube.portlets.user.td.information.client.TabularResourceProperties;
import org.gcube.portlets.user.td.open.client.TDOpen;
import org.gcube.portlets.user.tdw.client.TabularData;
import org.gcube.portlets.user.tdw.shared.model.TableId;
import com.allen_sauer.gwt.log.client.Log;
+import com.extjs.gxt.ui.client.event.ResizeEvent;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.RunAsyncCallback;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Widget;
import com.google.web.bindery.event.shared.EventBus;
import com.google.web.bindery.event.shared.SimpleEventBus;
+import com.sencha.gxt.core.client.util.Margins;
+import com.sencha.gxt.widget.core.client.ContentPanel;
+import com.sencha.gxt.widget.core.client.TabItemConfig;
+import com.sencha.gxt.widget.core.client.TabPanel;
+import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer;
+import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer.BorderLayoutData;
+import com.sencha.gxt.widget.core.client.event.BeforeCloseEvent;
+import com.sencha.gxt.widget.core.client.event.BeforeCloseEvent.BeforeCloseHandler;
import com.sencha.gxt.widget.core.client.info.Info;
/**
* @author "Federico De Faveri defaveri@isti.cnr.it"
@@ -37,7 +52,15 @@ public class TabularDataController {
protected SimpleEventBus eventBus;
protected TabularData tabularData;
+ protected BorderLayoutContainer centerContainer;
+ protected ContentPanel functionalityPanel;
+ protected TabPanel functionalityTab;
+ protected int indexFunctionalityTab = 0;
+ protected boolean functionalityOpen;
+ protected Label propertiesLabel;
+
+ protected BorderLayoutData eastData;
/**
* Table Open
@@ -72,6 +95,44 @@ public class TabularDataController {
}
+ public BorderLayoutContainer getCenterContainer() {
+ return centerContainer;
+ }
+
+ public void setCenterContainer(BorderLayoutContainer centerContainer) {
+ this.centerContainer = centerContainer;
+ }
+
+
+ public ContentPanel getFunctionalityPanel() {
+ return functionalityPanel;
+ }
+
+ public void setFunctionalityPanel(ContentPanel functionalityPanel) {
+ this.functionalityPanel = functionalityPanel;
+ }
+
+ public TabPanel getFunctionalityTab() {
+ return functionalityTab;
+ }
+
+ public void setFunctionalityTab(TabPanel functionalityTab) {
+ this.functionalityTab = functionalityTab;
+ }
+
+ public BorderLayoutData getEastData() {
+ return eastData;
+ }
+
+ public void setEastData(BorderLayoutData eastData) {
+ this.eastData = eastData;
+ }
+
+
+
+
+
+
protected void bindToEvents() {
eventBus.addHandler(ImportTableEvent.TYPE,
new ImportTableEvent.ImportTableHandler() {
@@ -105,6 +166,15 @@ public class TabularDataController {
doCloseTabularResource(event.getCloseType());
}
});
+ eventBus.addHandler(OpenFunctionalityEvent.TYPE,
+ new OpenFunctionalityEvent.OpenFunctionalityHandler() {
+
+ @Override
+ public void onOpenFunctionality(OpenFunctionalityEvent event) {
+ doOpenFunctionality(event.getOpenFunctionalityType());
+ }
+ });
+
}
@@ -186,6 +256,74 @@ public class TabularDataController {
}
}
+ public void doOpenFunctionality(OpenFunctionalityType openType) {
+ Log.trace("doOpenFunctionality openType: " + openType);
+ Info.display("Open Functionality", "open: " + openType);
+ try {
+ switch (openType) {
+ case PROPERTIES:
+ openFunctionalityProperties();
+ break;
+ default:
+ break;
+ }
+ } catch (Exception e) {
+ Log.error("doOpenFunctionality Error : " + e.getLocalizedMessage());
+ e.printStackTrace();
+ }
+ }
+
+
+
+ protected void openFunctionalityProperties(){
+ if(propertiesLabel==null){
+ propertiesLabel = new Label("Tabular Resources Properties");
+ propertiesLabel.addStyleName("pad-text");
+ TabItemConfig propertiesItemConf=new TabItemConfig("Properties", true);
+
+ org.gcube.portlets.user.td.information.shared.TRId trId=new org.gcube.portlets.user.td.information.shared.TRId("0","1");
+ TabularResourceProperties trProperties=new TabularResourceProperties("TRProperties",eventBus,trId);
+ trProperties.setHeaderVisible(false);
+ functionalityTab.add(trProperties, propertiesItemConf);
+ functionalityTab.addBeforeCloseHandler(new BeforeCloseHandler(){
+
+ @Override
+ public void onBeforeClose(BeforeCloseEvent event) {
+ if(functionalityTab.getWidgetCount()==1){
+ functionalityPanel.disable();
+ functionalityPanel.collapse();
+ functionalityOpen=false;
+ propertiesLabel=null;
+ }
+
+ }
+
+ }
+ );
+
+ Label taskLabel = new Label("Task Properties");
+ taskLabel.addStyleName("pad-text");
+ functionalityTab.add(taskLabel, new TabItemConfig("Task", true));
+
+
+ //Last is functionalityTab.getWidgetCount() - 1)
+ functionalityTab.setActiveWidget(functionalityTab
+ .getWidget(0));
+
+ centerContainer.onResize();
+ }
+
+ if(functionalityOpen){
+ functionalityPanel.collapse();
+ functionalityOpen=false;
+ } else {
+ functionalityPanel.enable();
+ functionalityPanel.expand();
+ functionalityOpen=true;
+ }
+ centerContainer.onResize();
+ };
+
protected void openSDMXImportWizard() {
GWT.runAsync(new RunAsyncCallback() {
@@ -330,7 +468,8 @@ public class TabularDataController {
tableOpening=new TableId(Constants.TD_DATASOURCE_FACTORY_ID,trId.getTableId());
tabularData.openTable(tableOpening);
tableOpen=true;
-
+
+
}
diff --git a/src/main/java/org/gcube/portlets/user/td/client/TabularDataPortlet.java b/src/main/java/org/gcube/portlets/user/td/client/TabularDataPortlet.java
index 8b80015..f6160c5 100644
--- a/src/main/java/org/gcube/portlets/user/td/client/TabularDataPortlet.java
+++ b/src/main/java/org/gcube/portlets/user/td/client/TabularDataPortlet.java
@@ -4,31 +4,29 @@ package org.gcube.portlets.user.td.client;
import org.gcube.portlets.user.td.client.ribbon.TabularDataRibbon;
import org.gcube.portlets.user.td.client.rpc.TabularDataService;
import org.gcube.portlets.user.td.client.rpc.TabularDataServiceAsync;
-
import org.gcube.portlets.user.tdw.client.TabularData;
import org.gcube.portlets.user.tdw.client.TabularDataGridPanel;
import org.gcube.portlets.user.tdw.client.event.FailureEvent;
import org.gcube.portlets.user.tdw.client.event.FailureEventHandler;
-import org.gcube.portlets.user.tdw.shared.model.DataRow;
-import org.gcube.portlets.user.tdw.shared.model.TableId;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.EntryPoint;
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.user.client.ui.ResizeLayoutPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.core.client.util.Margins;
-import com.sencha.gxt.widget.core.client.Dialog;
+import com.sencha.gxt.widget.core.client.ContentPanel;
+import com.sencha.gxt.widget.core.client.Portlet;
+import com.sencha.gxt.widget.core.client.TabPanel;
+import com.sencha.gxt.widget.core.client.button.ToolButton;
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer;
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer.BorderLayoutData;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.Viewport;
-import com.sencha.gxt.widget.core.client.grid.Grid;
import com.sencha.gxt.widget.core.client.info.Info;
/**
@@ -57,6 +55,11 @@ public class TabularDataPortlet implements EntryPoint {
//Private TabularData
private static TabularData tabularData;
+ private static BorderLayoutContainer centerContainer;
+ private static ContentPanel functionalityPanel;
+ private static TabPanel functionalityTab;
+ private static BorderLayoutData eastData;
+
/**
* {@inheritDoc}
*/
@@ -114,16 +117,53 @@ public class TabularDataPortlet implements EntryPoint {
mainPanelLayout.setNorthWidget(toolBarPanel, toolBarData);
- //Grid
+ //Set Center Container
+ centerContainer = new BorderLayoutContainer();
+ centerContainer.setResize(true);
+ centerContainer.setBorders(false);
+
+
+ //Grid Panel
final TabularDataGridPanel gridPanel = tabularData.getGridPanel();
- MarginData gridData = new MarginData();
+ gridPanel.setHeaderVisible(false);
+
+ MarginData gridData = new MarginData();
+ centerContainer.setCenterWidget(gridPanel,gridData);
+
+ //Functionality Panel
+ functionalityPanel= new ContentPanel();
+ functionalityPanel.setHeaderVisible(false);
+ functionalityPanel.setResize(true);
+
+ functionalityTab=new TabPanel();
+ //functionalityTab.setPixelSize(600, 250);
+ functionalityTab.setAnimScroll(true);
+ functionalityTab.setTabScroll(true);
+ functionalityTab.setCloseContextMenu(true);
- /*TableId tableopening=new TableId(Constants.TD_DATASOURCE_FACTORY_ID,"1");
- tabularData.openTable(tableopening);
- gridPanel.setHeaderVisible(false);*/
+ eastData = new BorderLayoutData(200);
+ eastData.setCollapsible(true);
+ eastData.setSplit(true);
+ eastData.setFloatable(false);
+ eastData.setCollapseMini(true);
+ eastData.setMargins(new Margins(0, 5, 0, 5));
+ eastData.setCollapseHidden(true);
+ //eastData.setCollapsed(true);
+
+ functionalityPanel.add(functionalityTab);
+ //functionalityPanel.setVisible(false);
+
+ centerContainer.setEastWidget(functionalityPanel,eastData);
+ functionalityPanel.collapse();
+ functionalityPanel.disable();
+
+ controller.setFunctionalityTab(functionalityTab);
+ controller.setFunctionalityPanel(functionalityPanel);
- mainPanelLayout.setCenterWidget(gridPanel, gridData);
+ //Set Center Container
+ mainPanelLayout.setCenterWidget(centerContainer, gridData);
+ controller.setCenterContainer(centerContainer);
//Main
SimpleContainer mainPanel = new SimpleContainer();
@@ -148,6 +188,13 @@ public class TabularDataPortlet implements EntryPoint {
root.add(viewport);
}
}
+
+ private void configPanel(final Portlet panel) {
+ panel.setCollapsible(true);
+ panel.setAnimCollapse(false);
+ //panel.getHeader().addTool(new ToolButton(ToolButton.GEAR));
+ panel.getHeader().addTool(new ToolButton(ToolButton.CLOSE));
-
+ }
+
}
diff --git a/src/main/java/org/gcube/portlets/user/td/client/event/OpenFunctionalityEvent.java b/src/main/java/org/gcube/portlets/user/td/client/event/OpenFunctionalityEvent.java
new file mode 100644
index 0000000..c9b904f
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/client/event/OpenFunctionalityEvent.java
@@ -0,0 +1,42 @@
+package org.gcube.portlets.user.td.client.event;
+
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.EventHandler;
+
+import com.google.gwt.event.shared.HasHandlers;
+
+public class OpenFunctionalityEvent extends GwtEvent {
+
+ public static Type TYPE = new Type();
+ private OpenFunctionalityType openFunctionalityType;
+
+ public interface OpenFunctionalityHandler extends EventHandler {
+ void onOpenFunctionality(OpenFunctionalityEvent event);
+ }
+
+ public OpenFunctionalityEvent(OpenFunctionalityType openFunctionalityType) {
+ this.openFunctionalityType = openFunctionalityType;
+ }
+
+ public OpenFunctionalityType getOpenFunctionalityType() {
+ return openFunctionalityType;
+ }
+
+ @Override
+ protected void dispatch(OpenFunctionalityHandler handler) {
+ handler.onOpenFunctionality(this);
+ }
+
+ @Override
+ public Type getAssociatedType() {
+ return TYPE;
+ }
+
+ public static Type getType() {
+ return TYPE;
+ }
+
+ public static void fire(HasHandlers source, OpenFunctionalityType openFunctionalityType) {
+ source.fireEvent(new OpenFunctionalityEvent(openFunctionalityType));
+ }
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/client/event/OpenFunctionalityType.java b/src/main/java/org/gcube/portlets/user/td/client/event/OpenFunctionalityType.java
new file mode 100644
index 0000000..3237712
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/client/event/OpenFunctionalityType.java
@@ -0,0 +1,12 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.client.event;
+
+/**
+ * @author "Federico De Faveri defaveri@isti.cnr.it"
+ *
+ */
+public enum OpenFunctionalityType {
+ PROPERTIES;
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/client/ribbon/FileToolBar.java b/src/main/java/org/gcube/portlets/user/td/client/ribbon/FileToolBar.java
index 5e14c27..6161fc5 100644
--- a/src/main/java/org/gcube/portlets/user/td/client/ribbon/FileToolBar.java
+++ b/src/main/java/org/gcube/portlets/user/td/client/ribbon/FileToolBar.java
@@ -9,6 +9,8 @@ import org.gcube.portlets.user.td.client.event.ExportTableEvent;
import org.gcube.portlets.user.td.client.event.ExportTableType;
import org.gcube.portlets.user.td.client.event.ImportTableEvent;
import org.gcube.portlets.user.td.client.event.ImportTableType;
+import org.gcube.portlets.user.td.client.event.OpenFunctionalityEvent;
+import org.gcube.portlets.user.td.client.event.OpenFunctionalityType;
import org.gcube.portlets.user.td.client.event.OpenTabularResourceEvent;
import org.gcube.portlets.user.td.client.event.OpenTabularResourceType;
import org.gcube.portlets.user.td.client.resource.TabularDataResources;
@@ -132,7 +134,7 @@ public class FileToolBar {
@Override
public void onSelect(SelectEvent event) {
- //eventBus.fireEvent(new ImportTableEvent(ImportTableType.JSON));
+ eventBus.fireEvent(new OpenFunctionalityEvent(OpenFunctionalityType.PROPERTIES));
}
});
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 8271990..cde12d0 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
@@ -8,11 +8,15 @@
-
-
+
-
+
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index f0ab032..b58aa30 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -23,6 +23,12 @@
org.gcube.portlets.user.tdw.server.TabularDataServlet
+
+
+ TDInformationService
+ org.gcube.portlets.user.td.information.server.TDInformationServiceImpl
+
+
TDOpenService
@@ -34,6 +40,12 @@
SDMXImportWizardService
org.gcube.portlets.user.sdmximportwizardtd.server.SDMXImportWizardServiceImpl
+
+
+
+ SDMXExportWizardService
+ org.gcube.portlets.user.sdmxexportwizardtd.server.SDMXExportWizardServiceImpl
+
@@ -90,7 +102,7 @@
org.gcube.portlets.user.workspace.server.UploadServlet
-
+
tdservlet
/tabulardataportlet/tds
@@ -108,6 +120,13 @@
/tabulardataportlet/tdwdata
+
+
+ TDInformationService
+ /tabulardataportlet/TDInformationService
+
+
+
TDOpenService
@@ -120,10 +139,13 @@
SDMXImportWizardService
/tabulardataportlet/SDMXImportWizardService
-
-
-
-
+
+
+
+ SDMXExportWizardService
+ /tabulardataportlet/SDMXExportWizardService
+
+