Added rows editing
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-widgetx@92988 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
439da80030
commit
90982cda43
|
@ -3,6 +3,8 @@
|
||||||
*/
|
*/
|
||||||
package org.gcube.portlets.user.tdwx.client;
|
package org.gcube.portlets.user.tdwx.client;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.gcube.portlets.user.tdwx.client.event.CloseTableEvent;
|
import org.gcube.portlets.user.tdwx.client.event.CloseTableEvent;
|
||||||
import org.gcube.portlets.user.tdwx.client.event.FailureEvent;
|
import org.gcube.portlets.user.tdwx.client.event.FailureEvent;
|
||||||
import org.gcube.portlets.user.tdwx.client.event.FailureEventHandler;
|
import org.gcube.portlets.user.tdwx.client.event.FailureEventHandler;
|
||||||
|
@ -145,6 +147,11 @@ public class TabularDataX {
|
||||||
return new TableId(defaultDataSourceFactoryName, tableKey);
|
return new TableId(defaultDataSourceFactoryName, tableKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addRow(ArrayList<String> rows){
|
||||||
|
if(gridPanel!=null){
|
||||||
|
gridPanel.addRow(rows);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
@ -46,6 +46,7 @@ import com.sencha.gxt.core.client.resources.ThemeStyles;
|
||||||
import com.sencha.gxt.core.client.util.Margins;
|
import com.sencha.gxt.core.client.util.Margins;
|
||||||
import com.sencha.gxt.data.client.loader.HttpProxy;
|
import com.sencha.gxt.data.client.loader.HttpProxy;
|
||||||
import com.sencha.gxt.data.shared.ListStore;
|
import com.sencha.gxt.data.shared.ListStore;
|
||||||
|
import com.sencha.gxt.data.shared.event.StoreUpdateEvent;
|
||||||
import com.sencha.gxt.data.shared.loader.PagingLoadConfig;
|
import com.sencha.gxt.data.shared.loader.PagingLoadConfig;
|
||||||
import com.sencha.gxt.data.shared.loader.PagingLoadConfigBean;
|
import com.sencha.gxt.data.shared.loader.PagingLoadConfigBean;
|
||||||
import com.sencha.gxt.data.shared.loader.PagingLoadResult;
|
import com.sencha.gxt.data.shared.loader.PagingLoadResult;
|
||||||
|
@ -58,8 +59,11 @@ import com.sencha.gxt.widget.core.client.event.HeaderContextMenuEvent.HeaderCont
|
||||||
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
|
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.grid.ColumnModel;
|
||||||
import com.sencha.gxt.widget.core.client.grid.Grid;
|
import com.sencha.gxt.widget.core.client.grid.Grid;
|
||||||
|
import com.sencha.gxt.widget.core.client.grid.Grid.GridCell;
|
||||||
import com.sencha.gxt.widget.core.client.grid.LiveGridView;
|
import com.sencha.gxt.widget.core.client.grid.LiveGridView;
|
||||||
import com.sencha.gxt.widget.core.client.grid.LiveToolItem;
|
import com.sencha.gxt.widget.core.client.grid.LiveToolItem;
|
||||||
|
import com.sencha.gxt.widget.core.client.grid.editing.ClicksToEdit;
|
||||||
|
import com.sencha.gxt.widget.core.client.grid.editing.GridInlineEditing;
|
||||||
import com.sencha.gxt.widget.core.client.menu.Item;
|
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.Menu;
|
||||||
import com.sencha.gxt.widget.core.client.menu.MenuItem;
|
import com.sencha.gxt.widget.core.client.menu.MenuItem;
|
||||||
|
@ -83,7 +87,10 @@ public class TabularDataXGridPanel extends ContentPanel {
|
||||||
|
|
||||||
protected com.google.web.bindery.event.shared.EventBus externalBus;
|
protected com.google.web.bindery.event.shared.EventBus externalBus;
|
||||||
|
|
||||||
|
protected ListStore<DataRow> store;
|
||||||
protected Grid<DataRow> grid;
|
protected Grid<DataRow> grid;
|
||||||
|
protected GridInlineEditing<DataRow> editing;
|
||||||
|
protected TableDefinition tableDefinition;
|
||||||
protected VerticalLayoutContainer container;
|
protected VerticalLayoutContainer container;
|
||||||
|
|
||||||
protected ExtendedLiveGridView liveGridView;
|
protected ExtendedLiveGridView liveGridView;
|
||||||
|
@ -255,11 +262,22 @@ public class TabularDataXGridPanel extends ContentPanel {
|
||||||
unmask();
|
unmask();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setupGrid(TableDefinition tableDefinition) {
|
|
||||||
|
|
||||||
|
protected void setupGrid(TableDefinition tableDefinition) {
|
||||||
|
this.tableDefinition=tableDefinition;
|
||||||
|
|
||||||
ColumnDefinition modelKeyColumn = tableDefinition.getModelKeyColumn();
|
ColumnDefinition modelKeyColumn = tableDefinition.getModelKeyColumn();
|
||||||
ListStore<DataRow> store = new ListStore<DataRow>(
|
store = new ListStore<DataRow>(
|
||||||
new DataRowModelKeyProvider(modelKeyColumn.getKey()));
|
new DataRowModelKeyProvider(modelKeyColumn.getKey()));
|
||||||
|
|
||||||
|
store.addStoreUpdateHandler(new StoreUpdateEvent.StoreUpdateHandler<DataRow>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUpdate(StoreUpdateEvent<DataRow> event) {
|
||||||
|
Log.debug("UPDATE ROWS");
|
||||||
|
Log.debug(event.getItems().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
List<ColumnConfig<DataRow, ?>> columnsConfig = new ArrayList<ColumnConfig<DataRow, ?>>();
|
List<ColumnConfig<DataRow, ?>> columnsConfig = new ArrayList<ColumnConfig<DataRow, ?>>();
|
||||||
|
|
||||||
|
@ -274,10 +292,8 @@ public class TabularDataXGridPanel extends ContentPanel {
|
||||||
|
|
||||||
// IdentityValueProvider<DataRow> identity = new
|
// IdentityValueProvider<DataRow> identity = new
|
||||||
// IdentityValueProvider<DataRow>();
|
// IdentityValueProvider<DataRow>();
|
||||||
|
|
||||||
// LiveRowNumberer<DataRow> numberer = new
|
// LiveRowNumberer<DataRow> numberer = new
|
||||||
// LiveRowNumberer<DataRow>(identity);
|
// LiveRowNumberer<DataRow>(identity);
|
||||||
|
|
||||||
// columnsConfig.add(numberer);
|
// columnsConfig.add(numberer);
|
||||||
|
|
||||||
ColumnModel<DataRow> columnModel = new ColumnModel<DataRow>(
|
ColumnModel<DataRow> columnModel = new ColumnModel<DataRow>(
|
||||||
|
@ -306,11 +322,19 @@ public class TabularDataXGridPanel extends ContentPanel {
|
||||||
grid.setLoadMask(true);
|
grid.setLoadMask(true);
|
||||||
grid.setLoader(loader);
|
grid.setLoader(loader);
|
||||||
grid.setView(liveGridView);
|
grid.setView(liveGridView);
|
||||||
|
|
||||||
container.add(grid, new VerticalLayoutData(1, 1, new Margins(0)));
|
editing = new GridInlineEditing<DataRow>(grid);
|
||||||
|
editing.setClicksToEdit(ClicksToEdit.TWO);
|
||||||
|
|
||||||
|
for(ColumnConfig<DataRow, ?> c:columnsConfig){
|
||||||
|
ColumnConfigGenerator.setEditor(editing, c);
|
||||||
|
}
|
||||||
|
|
||||||
// numberer.initPlugin(grid);
|
// numberer.initPlugin(grid);
|
||||||
|
|
||||||
|
|
||||||
|
container.add(grid, new VerticalLayoutData(1, 1, new Margins(0)));
|
||||||
|
|
||||||
ToolBar toolBar = new ToolBar();
|
ToolBar toolBar = new ToolBar();
|
||||||
toolBar.add(new LiveToolItem(grid));
|
toolBar.add(new LiveToolItem(grid));
|
||||||
toolBar.addStyleName(ThemeStyles.getStyle().borderTop());
|
toolBar.addStyleName(ThemeStyles.getStyle().borderTop());
|
||||||
|
@ -339,13 +363,20 @@ public class TabularDataXGridPanel extends ContentPanel {
|
||||||
setHeaderContextMenuHandler();
|
setHeaderContextMenuHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// TODO we need to manually reset the sort
|
// TODO we need to manually reset the sort
|
||||||
loader.clearSortInfo();
|
loader.clearSortInfo();
|
||||||
reader.setDefinition(tableDefinition);
|
reader.setDefinition(tableDefinition);
|
||||||
grid.reconfigure(store, columnModel);
|
grid.reconfigure(store, columnModel);
|
||||||
|
editing = new GridInlineEditing<DataRow>(grid);
|
||||||
|
editing.setClicksToEdit(ClicksToEdit.TWO);
|
||||||
|
|
||||||
|
for(ColumnConfig<DataRow, ?> c:columnsConfig){
|
||||||
|
ColumnConfigGenerator.setEditor(editing, c);
|
||||||
|
}
|
||||||
|
|
||||||
// TODO workaround: the loader is called only if the scroll bar is
|
// TODO workaround: the loader is called only if the scroll bar is
|
||||||
// in the middle
|
// in the middle
|
||||||
if (loader.getOffset() == 0)
|
if (loader.getOffset() == 0)
|
||||||
|
@ -450,6 +481,31 @@ public class TabularDataXGridPanel extends ContentPanel {
|
||||||
return columnId;
|
return columnId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void addRow(ArrayList<String> rows){
|
||||||
|
if(grid!=null && editing!=null){
|
||||||
|
List<ColumnKey> keys=tableDefinition.getKeys();
|
||||||
|
|
||||||
|
DataRow dataRow=new DataRow(keys.size());
|
||||||
|
for(ColumnKey key:keys){
|
||||||
|
dataRow.set(key, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
editing.cancelEditing();
|
||||||
|
int pos=0;
|
||||||
|
if(rows!=null && rows.size()>0){
|
||||||
|
pos=new Integer(rows.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
store.add(pos, dataRow);
|
||||||
|
|
||||||
|
int row = store.indexOf(dataRow);
|
||||||
|
editing.startEditing(new GridCell(row, pos));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected class ExtendedLiveGridView extends LiveGridView<DataRow> {
|
protected class ExtendedLiveGridView extends LiveGridView<DataRow> {
|
||||||
//TODO bug in gxt3 3.0.0 fixed in future
|
//TODO bug in gxt3 3.0.0 fixed in future
|
||||||
/*@Override
|
/*@Override
|
||||||
|
|
|
@ -19,6 +19,8 @@ import com.sencha.gxt.widget.core.client.form.NumberPropertyEditor;
|
||||||
import com.sencha.gxt.widget.core.client.form.TextField;
|
import com.sencha.gxt.widget.core.client.form.TextField;
|
||||||
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
|
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
|
||||||
import com.sencha.gxt.widget.core.client.grid.editing.AbstractGridEditing;
|
import com.sencha.gxt.widget.core.client.grid.editing.AbstractGridEditing;
|
||||||
|
import com.sencha.gxt.widget.core.client.grid.editing.GridInlineEditing;
|
||||||
|
import com.sencha.gxt.widget.core.client.grid.editing.GridRowEditing;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -115,7 +117,7 @@ public class ColumnConfigGenerator {
|
||||||
return new DataRowColumnConfig<T>(columnDefinition);
|
return new DataRowColumnConfig<T>(columnDefinition);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setEditor(AbstractGridEditing<DataRow> editableGrid,
|
public static void setEditor(GridInlineEditing<DataRow> editableGrid,
|
||||||
ColumnConfig<DataRow, ?> columnConfig) {
|
ColumnConfig<DataRow, ?> columnConfig) {
|
||||||
if (!(columnConfig instanceof DataRowColumnConfig<?>))
|
if (!(columnConfig instanceof DataRowColumnConfig<?>))
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
|
@ -124,7 +126,7 @@ public class ColumnConfigGenerator {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public static void setEditor(AbstractGridEditing<DataRow> editableGrid,
|
public static void setEditor(GridInlineEditing<DataRow> editableGrid,
|
||||||
DataRowColumnConfig<?> columnConfig) {
|
DataRowColumnConfig<?> columnConfig) {
|
||||||
if (columnConfig.getDefinition().isEditable()) {
|
if (columnConfig.getDefinition().isEditable()) {
|
||||||
switch (columnConfig.getDefinition().getValueType()) {
|
switch (columnConfig.getDefinition().getValueType()) {
|
||||||
|
|
Loading…
Reference in New Issue