Updated EditRow to manage to more than one row

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-widgetx@111330 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2015-01-09 17:17:55 +00:00 committed by Giancarlo Panichi
parent 9152ce10e1
commit 99146fa0c0
2 changed files with 13 additions and 211 deletions

View File

@ -75,7 +75,6 @@ import com.sencha.gxt.widget.core.client.event.HeaderContextMenuEvent.HeaderCont
import com.sencha.gxt.widget.core.client.event.HeaderMouseDownEvent;
import com.sencha.gxt.widget.core.client.event.HeaderMouseDownEvent.HeaderMouseDownHandler;
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
import com.sencha.gxt.widget.core.client.grid.ColumnHeader;
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.filters.Filter;
@ -286,10 +285,11 @@ public class TabularDataXGridPanel extends ContentPanel {
/**
*
*
* @return Selected Row as RowRaw
* @return Selected Rows as List<RowRaw>
*/
public RowRaw getSelectedRowAsRaw() {
public ArrayList<RowRaw> getSelectedRowsAsRaw() {
if (grid != null && grid.getSelectionModel() != null) {
ArrayList<RowRaw> listRowRaw = new ArrayList<RowRaw>();
List<DataRow> dataRows = grid.getSelectionModel()
.getSelectedItems();
List<Row> rows = new ArrayList<Row>();
@ -299,14 +299,12 @@ public class TabularDataXGridPanel extends ContentPanel {
}
}
RowRaw r = null;
if (rows.size() > 0) {
for(Row row:rows) {
HashMap<String, String> map = new HashMap<String, String>();
ColumnModel<DataRow> columnModel = grid.getColumnModel();
List<ColumnConfig<DataRow, ?>> columns = columnModel
.getColumns();
Row rowFirst = rows.get(0);
DataRowColumnConfig<?> columnDataRow = null;
String rowId = null;
for (ColumnConfig<DataRow, ?> col : columns) {
@ -315,10 +313,10 @@ public class TabularDataXGridPanel extends ContentPanel {
if (colDef != null) {
String value;
if (colDef.getColumnDataType().compareTo("Date") == 0) {
value = rowFirst.getFieldAsDate(colDef
value = row.getFieldAsDate(colDef
.getColumnLocalId());
} else {
value = rowFirst.getFieldAsText(colDef
value = row.getFieldAsText(colDef
.getColumnLocalId());
}
map.put(colDef.getColumnLocalId(), value);
@ -330,11 +328,12 @@ public class TabularDataXGridPanel extends ContentPanel {
}
}
if (rowId != null && !rowId.isEmpty() && map.size() > 0) {
r = new RowRaw(rowId, map);
RowRaw rr = new RowRaw(rowId, map);
listRowRaw.add(rr);
}
}
return r;
return listRowRaw;
}
return null;

View File

@ -11,21 +11,11 @@ import com.sencha.gxt.widget.core.client.grid.LiveGridView;
* @param <M>
*/
public class ExtendedLiveGridView<M> extends LiveGridView<M> {
//private boolean isLoading;
//private boolean isMasked;
@SuppressWarnings("unused")
private int viewIndexReload = -1;
//private int lastViewIndex = -1;
//private int lastScrollDirection = 0;
//private int rowHeightAdjust;
//private boolean measureRowHeight = true;
//private boolean ignoreScroll;
// private boolean adjustScrollHeight;
@Override
public void refresh(boolean headerToo) {
preventScrollToTopOnRefresh = true;
@ -47,193 +37,6 @@ public class ExtendedLiveGridView<M> extends LiveGridView<M> {
public void setCacheStore(ListStore<M> list) {
cacheStore = list;
}
/**
* Returns the total number of rows that are visible given the current grid
* height.
*
* @return the visible row count
@Override
public int getVisibleRowCount() {
int rh = getRowHeight();
int visibleHeight = getLiveScrollerHeight();
int result = (int) ((visibleHeight < 1) ? 0 : Math
.floor((double) visibleHeight / rh));
int calcHeight = rh * result;
while (calcHeight < visibleHeight) {
result++;
calcHeight = rh * result;
}
return result;
}
@Override
protected void handleComponentEvent(Event ge) {
super.handleComponentEvent(ge);
int type = ge.getTypeInt();
EventTarget t = ge.getEventTarget();
if (ignoreScroll || !Element.is(t)) {
return;
}
Element target = Element.as(t);
if (type == Event.ONMOUSEWHEEL && dataTable.isOrHasChild(target)) {
int v = ge.getMouseWheelVelocityY() * getRowHeight();
liveScroller.setScrollTop(liveScroller.getScrollTop() + v);
} else if (type == Event.ONSCROLL && liveScroller.isOrHasChild(target)) {
ge.stopPropagation();
ge.preventDefault();
int newIndex = (int) Math.ceil((double) liveScroller.getScrollTop()
/ getRowHeight());
Log.debug("HandleComponentEvent: totalCount:" + totalCount
+ ", scrollHeight:" + liveScroller.getScrollHeight()
+ ", scrollTop:" + liveScroller.getScrollTop()
+ ", rowHeight:" + getRowHeight() + ", newIndex:"
+ newIndex);
updateRows(newIndex, false);
}
}
private void maskView() {
if (!isMasked && grid.isLoadMask()) {
grid.mask(DefaultMessages.getMessages().loadMask_msg());
isMasked = true;
}
}
* Updates the rows based on the new index.
*
* @param newIndex
* the new index
* @param reload
* true to reload the data
@Override
protected void updateRows(int newIndex, boolean reload) {
Log.debug("updateRows(): newIndex: " + newIndex + " reload:" + reload);
// the number of rows visible within the grid's viewport
int rowCount = getVisibleRowCount();
newIndex = Math.min(newIndex, Math.max(0, totalCount - rowCount));
int diff = newIndex - viewIndex;
// the difference from the view index and the new index
int delta = Math.abs(diff);
Log.debug("updateRows(): totalCount:" + totalCount + " newIndex: "
+ newIndex + " viewIndex: " + viewIndex + " visibleRows: "
+ rowCount + " diff: " + diff);
// nothing has changed and we are not forcing a reload
if (delta == 0 && !reload) {
Log.debug("updateRows() nothing changed and not forcing reload");
return;
}
viewIndex = newIndex;
int liveStoreIndex = Math.max(0, viewIndex - liveStoreOffset);
// load data if not already cached
if (!isCached(viewIndex)) {
Log.debug("updateRows() not cached, loading data");
maskView();
if (loadLiveStore(getLiveStoreCalculatedIndex(viewIndex))) {
viewIndexReload = viewIndex;
}
return;
}
// do pre caching
if (shouldCache(viewIndex) && !isLoading) {
loadLiveStore(getLiveStoreCalculatedIndex(viewIndex));
}
int rc = getVisibleRowCount();
if (delta > rc - 1) {
reload = true;
}
if (reload) {
Log.debug("updateRows() newIndex: " + newIndex + " viewIndex: "
+ viewIndex + " visible rows: " + rowCount + " diff: "
+ diff);
delta = diff = rc;
if (ds.size() > 0) {
boolean p = preventScrollToTopOnRefresh;
preventScrollToTopOnRefresh = true;
ds.clear();
preventScrollToTopOnRefresh = p;
}
}
if (delta == 0) {
return;
}
int count = ds.size();
if (diff > 0) {
// rolling forward
for (int c = 0; c < delta && c < count; c++) {
ds.remove(0);
}
count = ds.size();
Log.debug("updateRows() forward adding to store from cache, liveStoreIndex: "
+ liveStoreIndex + " count: " + count);
ds.addAll(cacheStore.subList(liveStoreIndex + count, liveStoreIndex
+ count + delta));
} else {
// rolling back
for (int c = 0; c < delta && c < count; c++) {
ds.remove(count - c - 1);
}
if (GXTLogConfiguration.loggingIsEnabled()) {
Log.debug("updateRows() reverse adding to store from cache, liveStoreIndex: "
+ liveStoreIndex + " count: " + count);
}
ds.addAll(0,
cacheStore.subList(liveStoreIndex, liveStoreIndex + delta));
}
if (!measureRowHeight) {
if (viewIndex > lastViewIndex) {
scroller.setScrollTop(rowHeightAdjust);
lastScrollDirection = 1;
} else if (viewIndex < lastViewIndex) {
lastScrollDirection = 0;
scroller.setScrollTop(0);
} else {
scroller.setScrollTop(lastScrollDirection == 0 ? 0
: rowHeightAdjust);
}
}
Log.debug("updateRows() fireEvent Update: offset:" + liveStoreOffset
+ " viewIndex:" + viewIndex + " totalCount:" + totalCount
+ " visibleRowCount:" + getVisibleRowCount());
fireEvent(new LiveGridViewUpdateEvent(liveStoreOffset, viewIndex,
totalCount, getVisibleRowCount()));
lastViewIndex = viewIndex;
}
*/
}