diff --git a/.gwt/.gwt-log b/.gwt/.gwt-log index 41719f9..cdf0ed2 100644 --- a/.gwt/.gwt-log +++ b/.gwt/.gwt-log @@ -190,3 +190,67 @@ Compiling... Compilation completed in 0.00 seconds Removing invalidated units Finding entry point classes +Public resources found in... +Translatable source found in... +Found 0 cached/archived units. Used 0 / 2719 units from cache. +Compiling... + 30% complete (ETR: 9 seconds) + 30% complete (ETR: 9 seconds) + 30% complete (ETR: 9 seconds) + 30% complete (ETR: 9 seconds) + 40% complete (ETR: 8 seconds) + 50% complete (ETR: 6 seconds) + 60% complete (ETR: 5 seconds) + 70% complete (ETR: 3 seconds) + 80% complete (ETR: 2 seconds) + 90% complete (ETR: 1 seconds) + 100% complete (ETR: 0 seconds) + Compilation completed in 18.47 seconds +Removing invalidated units +Finding entry point classes +Public resources found in... +Translatable source found in... +Found 2719 cached/archived units. Used 2719 / 2719 units from cache. +Compiling... + Compilation completed in 0.00 seconds +Removing invalidated units +Finding entry point classes +Public resources found in... +Translatable source found in... +Found 2719 cached/archived units. Used 2719 / 2719 units from cache. +Compiling... + Compilation completed in 0.00 seconds +Removing invalidated units +Finding entry point classes +Public resources found in... +Translatable source found in... +Found 0 cached/archived units. Used 0 / 2719 units from cache. +Compiling... + 40% complete (ETR: 7 seconds) + 40% complete (ETR: 7 seconds) + 40% complete (ETR: 7 seconds) + 40% complete (ETR: 7 seconds) + 40% complete (ETR: 7 seconds) + 50% complete (ETR: 5 seconds) + 60% complete (ETR: 4 seconds) + 70% complete (ETR: 3 seconds) + 80% complete (ETR: 2 seconds) + 90% complete (ETR: 1 seconds) + 100% complete (ETR: 0 seconds) + Compilation completed in 9.42 seconds +Removing invalidated units +Finding entry point classes +Public resources found in... +Translatable source found in... +Found 2719 cached/archived units. Used 2719 / 2719 units from cache. +Compiling... + Compilation completed in 0.00 seconds +Removing invalidated units +Finding entry point classes +Public resources found in... +Translatable source found in... +Found 2719 cached/archived units. Used 2719 / 2719 units from cache. +Compiling... + Compilation completed in 0.00 seconds +Removing invalidated units +Finding entry point classes diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index d83846c..9356b64 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -4,6 +4,9 @@ + + uses + uses @@ -16,15 +19,15 @@ uses + + uses + uses uses - - uses - diff --git a/pom.xml b/pom.xml index 7a37488..32c6b78 100644 --- a/pom.xml +++ b/pom.xml @@ -241,6 +241,13 @@ tabular-data-sdmx-export-widget [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + + + + org.gcube.portlets.user + tabular-data-table-widget + [0.0.1-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 9f718e6..f9ffc15 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 @@ -3,6 +3,8 @@ */ package org.gcube.portlets.user.td.client; +import java.util.ArrayList; + import org.gcube.portlets.user.td.csvexportwidget.client.CSVExportWizardTD; import org.gcube.portlets.user.td.csvimportwidget.client.CSVImportWizardTD; import org.gcube.portlets.user.td.expressionwidget.client.ColumnFilterDialog; @@ -13,6 +15,7 @@ import org.gcube.portlets.user.td.sdmxexportwidget.client.SDMXExportWizardTD; import org.gcube.portlets.user.td.sdmximportwidget.client.SDMXImportWizardTD; import org.gcube.portlets.user.td.taskswidget.client.TdTaskController; import org.gcube.portlets.user.td.widgetcommonevent.client.event.ChangeTableRequestEvent; +import org.gcube.portlets.user.td.widgetcommonevent.client.event.GridContextMenuItemEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.GridHeaderColumnMenuItemEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.RibbonEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.TasksMonitorEvent; @@ -23,6 +26,7 @@ import org.gcube.portlets.user.td.widgetcommonevent.client.type.TaskType; import org.gcube.portlets.user.td.widgetcommonevent.client.type.UIStateType; import org.gcube.portlets.user.td.widgetcommonevent.client.type.WidgetRequestType; import org.gcube.portlets.user.td.widgetcommonevent.shared.GridHeaderOperationId; +import org.gcube.portlets.user.td.widgetcommonevent.shared.GridOperationId; import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; import org.gcube.portlets.user.td.wizardwidget.client.WizardListener; import org.gcube.portlets.user.tdtemplate.client.TdTemplateController; @@ -54,7 +58,7 @@ import com.sencha.gxt.widget.core.client.info.Info; */ public class TabularDataController { // implements HasCloseHandlers, HasOpenHandlers { - + protected SimpleEventBus eventBus; protected TabularDataX tabularData; protected UIStateType uiState = UIStateType.START; @@ -74,10 +78,7 @@ public class TabularDataController { * Grid TableId */ protected TableId tableOpening; - - - - + public TabularDataController() { eventBus = new SimpleEventBus(); callHello(); @@ -110,26 +111,26 @@ public class TabularDataController { public void setWestData(BorderLayoutData westData) { this.westData = westData; } - - protected void callHello(){ - TDGWTServiceAsync.INSTANCE.hello(new AsyncCallback(){ + + protected void callHello() { + TDGWTServiceAsync.INSTANCE.hello(new AsyncCallback() { @Override public void onFailure(Throwable caught) { - Log.info("No valid user found: "+caught.getMessage()); + Log.info("No valid user found: " + caught.getMessage()); alertMessage("Error", "No user found"); } @Override public void onSuccess(String result) { - Log.info("Hello: "+result); - + Log.info("Hello: " + result); + } - + }); - + } - + // Bind Controller to events on bus protected void bindToEvents() { eventBus.addHandler( @@ -144,6 +145,17 @@ public class TabularDataController { } }); + eventBus.addHandler(GridContextMenuItemEvent.TYPE, + new GridContextMenuItemEvent.GridContextMenuItemEventHandler() { + + public void onGridContextMenuItemEvent( + GridContextMenuItemEvent event) { + Log.debug("Catch Event ContextMenuItemEvent"); + doGridContextMenuCommand(event); + + } + }); + eventBus.addHandler(ChangeTableRequestEvent.TYPE, new ChangeTableRequestEvent.ChangeTableRequestEventHandler() { @@ -192,8 +204,6 @@ public class TabularDataController { d.show(); } - - // Resume state of user interface protected void resumeUIState() { try { @@ -748,6 +758,30 @@ public class TabularDataController { openTable(event.getTrId()); }; + protected void doGridContextMenuCommand(GridContextMenuItemEvent event) { + Log.debug("GridContextMenu Fire Event", + "OperationId: " + event.getGridOperationId()); + GridOperationId gridOperationId = event.getGridOperationId(); + ArrayList rows = event.getRows(); + + if(rows==null || rows.size()==0){ + alertMessage("No rows selected", "No rows selected"); + return; + } + + switch (gridOperationId) { + case ROWADD: + break; + case ROWEDIT: + break; + case ROWDELETE: + break; + default: + break; + } + + } + protected void doGridHeaderColumnMenuCommand( GridHeaderColumnMenuItemEvent event) { Log.debug("GridHeaderColumnMenu Fire Event", diff --git a/src/main/java/org/gcube/portlets/user/td/client/grid/GridContextMenu.java b/src/main/java/org/gcube/portlets/user/td/client/grid/GridContextMenu.java index 51dec8e..0c6235e 100644 --- a/src/main/java/org/gcube/portlets/user/td/client/grid/GridContextMenu.java +++ b/src/main/java/org/gcube/portlets/user/td/client/grid/GridContextMenu.java @@ -1,74 +1,225 @@ package org.gcube.portlets.user.td.client.grid; +import java.util.ArrayList; import java.util.List; import org.gcube.portlets.user.td.client.resource.TabularDataResources; +import org.gcube.portlets.user.td.widgetcommonevent.client.event.GridContextMenuItemEvent; import org.gcube.portlets.user.td.widgetcommonevent.shared.GridOperationId; import org.gcube.portlets.user.tdwx.client.TabularDataXGridPanel; import org.gcube.portlets.user.tdwx.client.config.Row; +import org.gcube.portlets.user.tdwx.client.model.grid.DataRowColumnConfig; +import org.gcube.portlets.user.tdwx.shared.model.ColumnDefinition; +import org.gcube.portlets.user.tdwx.shared.model.ColumnType; +import org.gcube.portlets.user.tdwx.shared.model.DataRow; import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.event.logical.shared.SelectionEvent; import com.google.gwt.event.logical.shared.SelectionHandler; import com.google.web.bindery.event.shared.EventBus; +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.menu.Item; import com.sencha.gxt.widget.core.client.menu.Menu; import com.sencha.gxt.widget.core.client.menu.MenuItem; /** * - * @author "Giancarlo Panichi" - * g.panichi@isti.cnr.it - * - * Defines the context menu of grid + * @author "Giancarlo Panichi" g.panichi@isti.cnr.it + * + * Defines the context menu of grid */ public class GridContextMenu { - protected Menu tableContextMenu; - protected final TabularDataXGridPanel gridPanel; - protected EventBus eventBus; - - public GridContextMenu(final TabularDataXGridPanel gridPanel,EventBus eventBus){ - this.gridPanel=gridPanel; - this.eventBus=eventBus; - tableContextMenu=new Menu(); - - MenuItem addRowItem = new MenuItem("Add Row"); - addRowItem.setId(GridOperationId.ROWADD.toString()); - addRowItem.setIcon(TabularDataResources.INSTANCE.rowInsert()); - addRowItem.addSelectionHandler(new SelectionHandler() { - - @Override - public void onSelection(SelectionEvent event) { - Log.debug("gridPanel is: " + gridPanel); - if (gridPanel != null) { - List rows = gridPanel.getSelectedRows(); - - + protected Menu tableContextMenu; + protected final TabularDataXGridPanel gridPanel; + protected EventBus eventBus; + + public GridContextMenu(final TabularDataXGridPanel gridPanel, + final EventBus eventBus) { + this.gridPanel = gridPanel; + this.eventBus = eventBus; + tableContextMenu = new Menu(); + + MenuItem addRowItem = new MenuItem("Add Row"); + addRowItem.setId(GridOperationId.ROWADD.toString()); + addRowItem.setIcon(TabularDataResources.INSTANCE.rowInsert()); + addRowItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + Log.debug("gridPanel is: " + gridPanel); + if (gridPanel != null) { + ColumnModel columnModel = gridPanel.getGrid() + .getColumnModel(); + + List> columns = columnModel + .getColumns(); + DataRowColumnConfig c = null; + boolean columnIdRetrieved = false; + for (ColumnConfig col : columns) { + c = (DataRowColumnConfig) col; + ColumnType ctype = c.getDefinition().getType(); + if (ctype == ColumnType.COLUMNID) { + columnIdRetrieved = true; + break; + } } - + + if (columnIdRetrieved) { + ColumnDefinition cd = c.getDefinition(); + Log.debug("CD - Definition:" + cd.getId() + + " ColumnLocalId:" + cd.getColumnLocalId() + + " Label:" + cd.getLabel() + " Key:" + + cd.getKey()); + List rowsSelected = gridPanel.getSelectedRows(); + Log.debug("Retriving rows selected"); + String rowS = ""; + ArrayList rows = new ArrayList(); + if (rowsSelected != null) { + for (Row row : rowsSelected) { + rowS = row.getFieldAsText(cd.getLabel()); + Log.debug("Selected Row:" + rowS); + rows.add(rowS); + } + } else { + Log.debug("no selected rows retrived"); + } + GridContextMenuItemEvent eventGridContextMenu = new GridContextMenuItemEvent( + GridOperationId.ROWADD, rows); + eventBus.fireEvent(eventGridContextMenu); + } else { + Log.debug("no COLUMNID retrived"); + } + } - }); - - - tableContextMenu.add(addRowItem); - - MenuItem editRowItem = new MenuItem("Edit Row"); - editRowItem.setId(GridOperationId.ROWEDIT.toString()); - editRowItem.setIcon(TabularDataResources.INSTANCE.rowEdit()); - tableContextMenu.add(editRowItem); - - MenuItem removeRowItem = new MenuItem("Delete Row"); - removeRowItem.setId(GridOperationId.ROWDELETE.toString()); - removeRowItem.setIcon(TabularDataResources.INSTANCE.rowRemove()); - tableContextMenu.add(removeRowItem); - - } + + } + }); + tableContextMenu.add(addRowItem); + - /** - * - * @return context menu for grid - */ - public Menu getMenu(){ - return tableContextMenu; - } + MenuItem editRowItem = new MenuItem("Edit Row"); + editRowItem.setId(GridOperationId.ROWEDIT.toString()); + editRowItem.setIcon(TabularDataResources.INSTANCE.rowEdit()); + editRowItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + Log.debug("gridPanel is: " + gridPanel); + if (gridPanel != null) { + ColumnModel columnModel = gridPanel.getGrid() + .getColumnModel(); + + List> columns = columnModel + .getColumns(); + DataRowColumnConfig c = null; + boolean columnIdRetrieved = false; + for (ColumnConfig col : columns) { + c = (DataRowColumnConfig) col; + ColumnType ctype = c.getDefinition().getType(); + if (ctype == ColumnType.COLUMNID) { + columnIdRetrieved = true; + break; + } + } + + if (columnIdRetrieved) { + ColumnDefinition cd = c.getDefinition(); + Log.debug("CD - Definition:" + cd.getId() + + " ColumnLocalId:" + cd.getColumnLocalId() + + " Label:" + cd.getLabel() + " Key:" + + cd.getKey()); + List rowsSelected = gridPanel.getSelectedRows(); + Log.debug("Retriving rows selected"); + String rowS = ""; + ArrayList rows = new ArrayList(); + if (rowsSelected != null) { + for (Row row : rowsSelected) { + rowS = row.getFieldAsText(cd.getLabel()); + Log.debug("Selected Row:" + rowS); + rows.add(rowS); + } + } else { + Log.debug("no selected rows retrived"); + } + GridContextMenuItemEvent eventGridContextMenu = new GridContextMenuItemEvent( + GridOperationId.ROWEDIT, rows); + eventBus.fireEvent(eventGridContextMenu); + } else { + Log.debug("no COLUMNID retrived"); + } + + } + + } + }); + tableContextMenu.add(editRowItem); + + MenuItem deleteRowItem = new MenuItem("Delete Row"); + deleteRowItem.setId(GridOperationId.ROWDELETE.toString()); + deleteRowItem.setIcon(TabularDataResources.INSTANCE.rowRemove()); + deleteRowItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + Log.debug("gridPanel is: " + gridPanel); + if (gridPanel != null) { + ColumnModel columnModel = gridPanel.getGrid() + .getColumnModel(); + + List> columns = columnModel + .getColumns(); + DataRowColumnConfig c = null; + boolean columnIdRetrieved = false; + for (ColumnConfig col : columns) { + c = (DataRowColumnConfig) col; + ColumnType ctype = c.getDefinition().getType(); + if (ctype == ColumnType.COLUMNID) { + columnIdRetrieved = true; + break; + } + } + + if (columnIdRetrieved) { + ColumnDefinition cd = c.getDefinition(); + Log.debug("CD - Definition:" + cd.getId() + + " ColumnLocalId:" + cd.getColumnLocalId() + + " Label:" + cd.getLabel() + " Key:" + + cd.getKey()); + List rowsSelected = gridPanel.getSelectedRows(); + Log.debug("Retriving rows selected"); + String rowS = ""; + ArrayList rows = new ArrayList(); + if (rowsSelected != null) { + for (Row row : rowsSelected) { + rowS = row.getFieldAsText(cd.getLabel()); + Log.debug("Selected Row:" + rowS); + rows.add(rowS); + } + } else { + Log.debug("no selected rows retrived"); + } + GridContextMenuItemEvent eventGridContextMenu = new GridContextMenuItemEvent( + GridOperationId.ROWDELETE, rows); + eventBus.fireEvent(eventGridContextMenu); + } else { + Log.debug("no COLUMNID retrived"); + } + + } + + } + }); + tableContextMenu.add(deleteRowItem); + + } + + /** + * + * @return context menu for grid + */ + public Menu getMenu() { + return tableContextMenu; + } }