tabular-data-manager/src/main/java/org/gcube/portlets/user/td/client/grid/GridContextMenu.java

226 lines
7.3 KiB
Java

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" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
* Defines the context menu of grid
*/
public class GridContextMenu {
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<Item>() {
@Override
public void onSelection(SelectionEvent<Item> event) {
Log.debug("gridPanel is: " + gridPanel);
if (gridPanel != null) {
ColumnModel<DataRow> columnModel = gridPanel.getGrid()
.getColumnModel();
List<ColumnConfig<DataRow, ?>> columns = columnModel
.getColumns();
DataRowColumnConfig<?> c = null;
boolean columnIdRetrieved = false;
for (ColumnConfig<DataRow, ?> 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<Row> rowsSelected = gridPanel.getSelectedRows();
Log.debug("Retriving rows selected");
String rowS = "";
ArrayList<String> rows = new ArrayList<String>();
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());
editRowItem.addSelectionHandler(new SelectionHandler<Item>() {
@Override
public void onSelection(SelectionEvent<Item> event) {
Log.debug("gridPanel is: " + gridPanel);
if (gridPanel != null) {
ColumnModel<DataRow> columnModel = gridPanel.getGrid()
.getColumnModel();
List<ColumnConfig<DataRow, ?>> columns = columnModel
.getColumns();
DataRowColumnConfig<?> c = null;
boolean columnIdRetrieved = false;
for (ColumnConfig<DataRow, ?> 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<Row> rowsSelected = gridPanel.getSelectedRows();
Log.debug("Retriving rows selected");
String rowS = "";
ArrayList<String> rows = new ArrayList<String>();
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<Item>() {
@Override
public void onSelection(SelectionEvent<Item> event) {
Log.debug("gridPanel is: " + gridPanel);
if (gridPanel != null) {
ColumnModel<DataRow> columnModel = gridPanel.getGrid()
.getColumnModel();
List<ColumnConfig<DataRow, ?>> columns = columnModel
.getColumns();
DataRowColumnConfig<?> c = null;
boolean columnIdRetrieved = false;
for (ColumnConfig<DataRow, ?> 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<Row> rowsSelected = gridPanel.getSelectedRows();
Log.debug("Retriving rows selected");
String rowS = "";
ArrayList<String> rows = new ArrayList<String>();
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;
}
}