Hi,
The use case:
A tree can be recreated, sometimes with new data, sometimes with other data. Whenever this happens, it seems the TreeGrid is giving me 'unselect' events on the current data's selected records.
I don't expect those events, since I just try to overwrite the data.
Am I creating the new data wrong? Is there a better way to discard the previous data to not receive the 'unselect state' events when data is overwritten?
Illustration:
	1) click Recreate Tree
2) open the folders and click one
=> the cascading comes in action and throws onChangedEvents (OK)
3) click Recreate Tree again
=> I receive onChangedEvents for the unselected state (OK?)
thanks,
using SNAPSHOT_v8.3d_2012-08-31/Pro Deployment (built 2012-08-31)
					The use case:
A tree can be recreated, sometimes with new data, sometimes with other data. Whenever this happens, it seems the TreeGrid is giving me 'unselect' events on the current data's selected records.
I don't expect those events, since I just try to overwrite the data.
Am I creating the new data wrong? Is there a better way to discard the previous data to not receive the 'unselect state' events when data is overwritten?
Illustration:
Code:
	
	private static final String fieldName1 = "id";
private static final String fieldName2 = "name";
private static final String parentField = "parent";
public Canvas getViewPanel() {
	
	final HTMLPane logger = new HTMLPane();
	logger.setContents("");
	logger.setWidth(300);
	logger.setHeight(300);
	
	final TreeGrid grid = new TreeGrid();
	grid.setWidth(300);
	grid.setHeight(300);
	grid.setShowPartialSelection(true);
	grid.setCascadeSelection(true);
	grid.setSelectionAppearance(SelectionAppearance.CHECKBOX);
	grid.setShowSelectedStyle(false);
	
	ListGridField field1 = new ListGridField(fieldName1);
	ListGridField field2 = new ListGridField(fieldName2);
	ListGridField field3 = new ListGridField(parentField);
	grid.setFields(field2, field1, field3);
	
	
	
	IButton addData = new IButton("Recreate tree");
	addData.addClickHandler(new ClickHandler() {
		
		public void onClick(ClickEvent event) {
			logger.setContents(logger.getContents()+ "recreating tree<br/>");
			
			TreeNode rootNode = new TreeNode();
			int rootNodeID = 0;
			rootNode.setAttribute(fieldName1, rootNodeID);
			rootNode.setAttribute(fieldName2, "root");
			TreeNode [] records = new TreeNode[5];
			for (int i=0; i<records.length; i++) {
				records[i] = new TreeNode();
				records[i].setAttribute(fieldName1, (i+1));
				records[i].setAttribute(fieldName2, "oho" + (i+1));
				records[i].setAttribute(parentField, i);
			}
			
			Tree dataTree = new Tree();
			dataTree.setModelType(TreeModelType.PARENT);
			dataTree.setIdField(fieldName1);
			dataTree.setParentIdField(parentField);
			dataTree.setNameProperty(fieldName2);
			dataTree.setAutoOpenRoot(true);
			dataTree.setReportCollisions(false);
			dataTree.setShowRoot(false);
			dataTree.setAutoOpenRoot(true);
			dataTree.setRoot(rootNode);
			dataTree.setData(records);
			grid.setData(dataTree);
		}
	});
	
	grid.addSelectionChangedHandler(new SelectionChangedHandler() {
		
		public void onSelectionChanged(SelectionEvent event) {
			String logLine = "";
			
			Record r = event.getRecord();
			
			if (event.getState()) {
				logLine = "selected " + r.getAttribute(fieldName1)+"<br/>";
			} else {
				logLine = "unselected " + r.getAttribute(fieldName1)+"<br/>";
			}
			
			logger.setContents(logger.getContents() + logLine);
		}
	});
	
	
	VLayout layout = new VLayout();
	layout.setWidth100();
	layout.setMembers(grid, addData, logger);
	return layout;
}
2) open the folders and click one
=> the cascading comes in action and throws onChangedEvents (OK)
3) click Recreate Tree again
=> I receive onChangedEvents for the unselected state (OK?)
thanks,
using SNAPSHOT_v8.3d_2012-08-31/Pro Deployment (built 2012-08-31)

Comment