226 lines
7.3 KiB
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;
|
|
}
|
|
}
|