mtarantini
17 Jul 2009, 5:22 AM
Hi, I've find an issue with the Expand / Collapse All of the TreePanel.
At first click on the expand all button, only the first node is expand, at second click, the second node is expand ect..ect..
Below the init of the TreeModel
private QueryTreeModel initTreeModel()
{
QueryTreeModel root = new QueryTreeModel("root");
List<Integer> queryIdList = viewPanel.configurationMgntApp.queryIdList;
QueryTreeModel[] qtm = new QueryTreeModel[queryIdList.size()];
for (int i = 0; i < queryIdList.size(); i++)
{
qtm[i] = new QueryTreeModel(viewPanel.configurationMgntApp.queryManager.getQueryFromQueryId(queryIdList.get(i)));
List<View> viewList = viewPanel.configurationMgntApp.viewManager.getViewFromQueryId(queryIdList.get(i));
for (View v : viewList)
{
if (viewPanel.configurationMgntApp.viewIdList.contains(v.getViewId()))
{
qtm[i].add(new ViewTreeModel(v));
}
}
root.add(qtm[i]);
}
return root;
}
Below the init of the TreePanel
private void initTreeGrid()
{
QueryTreeModel root = initTreeModel();
TreeStore<ModelData> store = new TreeStore<ModelData>();
store.add(root.getChildren(), true);
treeGrid = new TreePanel<ModelData>(store);
treeGrid.setCheckable(true);
treeGrid.setCheckStyle(CheckCascade.CHILDREN);
treeGrid.setBorders(true);
treeGrid.setDisplayProperty("name");
treeGrid.setIconProvider(new ModelIconProvider<ModelData>()
{
/**
* @see com.extjs.gxt.ui.client.data.ModelIconProvider#getIcon(com.extjs.gxt.ui.client.data.ModelData)
*/
@Override
public AbstractImagePrototype getIcon(ModelData model)
{
if (model instanceof ViewTreeModel)
{
ViewConfiguration conf = model.get("viewConfiguration");
if (conf instanceof GridConfiguration)
{
if (!((GridConfiguration) conf).isDetailed())
{
return Images.newGridView();
}
else
{
return Images.newGridDetailsView();
}
}
else if (conf instanceof TreeConfiguration)
{
if (!((TreeConfiguration) conf).isDetailed())
{
return Images.newTreeView();
}
else
{
return Images.newTreeDetailView();
}
}
else if (conf instanceof ChartConfiguration)
{
return Images.newChart();
}
}
return null;
}
});
treeGrid.getStyle().setNodeOpenIcon(Images.datasource());
treeGrid.getStyle().setNodeCloseIcon(Images.datasource());
treeGrid.setStyleAttribute("backgroundColor", "white");
add(treeGrid);
}
Below the two button event
button = new Button();
button.setIcon(Images.collapseAll());
button.setToolTip(commonMessage.btn_CollapseAll());
button.addSelectionListener(new SelectionListener<ButtonEvent>()
{
public void componentSelected(ButtonEvent ce)
{
treeGrid.collapseAll();
};
});
toolBar.add(button);
button = new Button();
button.setIcon(Images.expandAll());
button.setToolTip(commonMessage.btn_ExpandAll());
button.addSelectionListener(new SelectionListener<ButtonEvent>()
{
public void componentSelected(ButtonEvent ce)
{
treeGrid.expandAll();
};
});
toolBar.add(button);
When clicking on the button, I get an exception within the wrapper
Uncaught exception escaped
com.google.gwt.core.client.JavaScriptException: (Error): Erreur d'exécution inconnue
number: -2146827688
description: Erreur d'exécution inconnue
at com.google.gwt.dom.client.Element$.setInnerHTML$(Native Method)
at com.extjs.gxt.ui.client.widget.treepanel.TreePanelView.onTextChange(TreePanelView.java:273)
at com.extjs.gxt.ui.client.widget.treepanel.TreePanel.refresh(TreePanel.java:1301)
at com.extjs.gxt.ui.client.widget.treepanel.TreePanelView.expand(TreePanelView.java:55)
at com.extjs.gxt.ui.client.widget.treepanel.TreePanel.onExpand(TreePanel.java:1178)
at com.extjs.gxt.ui.client.widget.treepanel.TreePanel.setExpanded(TreePanel.java:731)
at com.extjs.gxt.ui.client.widget.treepanel.TreePanel.expandAll(TreePanel.java:348)
at com.comarch.web.app.configurationmgnt.client.app.ManageView$7.componentSelected(ManageView.java:160)
at com.comarch.web.app.configurationmgnt.client.app.ManageView$7.componentSelected(ManageView.java:1)
at com.extjs.gxt.ui.client.event.SelectionListener.handleEvent(SelectionListener.java:20)
at com.extjs.gxt.ui.client.event.SelectionListener.handleEvent(SelectionListener.java:1)
at com.extjs.gxt.ui.client.event.BaseObservable.callListener(BaseObservable.java:176)
at com.extjs.gxt.ui.client.event.BaseObservable.fireEvent(BaseObservable.java:96)
at com.extjs.gxt.ui.client.widget.Component.fireEvent(Component.java:444)
at com.extjs.gxt.ui.client.widget.button.Button.onClick(Button.java:529)
at com.extjs.gxt.ui.client.widget.button.Button.onComponentEvent(Button.java:277)
at com.extjs.gxt.ui.client.widget.Component.onBrowserEvent(Component.java:760)
at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1320)
at com.google.gwt.user.client.DOM.dispatchEventAndCatch(DOM.java:1299)
at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1262)
This issue occurs only with IE, I've test with FF3.5, Chrome 2, no problem at all.
Plateform : Win XP SP2, GWT 1.6.4 & 1.7.0, GXT 2.0
At first click on the expand all button, only the first node is expand, at second click, the second node is expand ect..ect..
Below the init of the TreeModel
private QueryTreeModel initTreeModel()
{
QueryTreeModel root = new QueryTreeModel("root");
List<Integer> queryIdList = viewPanel.configurationMgntApp.queryIdList;
QueryTreeModel[] qtm = new QueryTreeModel[queryIdList.size()];
for (int i = 0; i < queryIdList.size(); i++)
{
qtm[i] = new QueryTreeModel(viewPanel.configurationMgntApp.queryManager.getQueryFromQueryId(queryIdList.get(i)));
List<View> viewList = viewPanel.configurationMgntApp.viewManager.getViewFromQueryId(queryIdList.get(i));
for (View v : viewList)
{
if (viewPanel.configurationMgntApp.viewIdList.contains(v.getViewId()))
{
qtm[i].add(new ViewTreeModel(v));
}
}
root.add(qtm[i]);
}
return root;
}
Below the init of the TreePanel
private void initTreeGrid()
{
QueryTreeModel root = initTreeModel();
TreeStore<ModelData> store = new TreeStore<ModelData>();
store.add(root.getChildren(), true);
treeGrid = new TreePanel<ModelData>(store);
treeGrid.setCheckable(true);
treeGrid.setCheckStyle(CheckCascade.CHILDREN);
treeGrid.setBorders(true);
treeGrid.setDisplayProperty("name");
treeGrid.setIconProvider(new ModelIconProvider<ModelData>()
{
/**
* @see com.extjs.gxt.ui.client.data.ModelIconProvider#getIcon(com.extjs.gxt.ui.client.data.ModelData)
*/
@Override
public AbstractImagePrototype getIcon(ModelData model)
{
if (model instanceof ViewTreeModel)
{
ViewConfiguration conf = model.get("viewConfiguration");
if (conf instanceof GridConfiguration)
{
if (!((GridConfiguration) conf).isDetailed())
{
return Images.newGridView();
}
else
{
return Images.newGridDetailsView();
}
}
else if (conf instanceof TreeConfiguration)
{
if (!((TreeConfiguration) conf).isDetailed())
{
return Images.newTreeView();
}
else
{
return Images.newTreeDetailView();
}
}
else if (conf instanceof ChartConfiguration)
{
return Images.newChart();
}
}
return null;
}
});
treeGrid.getStyle().setNodeOpenIcon(Images.datasource());
treeGrid.getStyle().setNodeCloseIcon(Images.datasource());
treeGrid.setStyleAttribute("backgroundColor", "white");
add(treeGrid);
}
Below the two button event
button = new Button();
button.setIcon(Images.collapseAll());
button.setToolTip(commonMessage.btn_CollapseAll());
button.addSelectionListener(new SelectionListener<ButtonEvent>()
{
public void componentSelected(ButtonEvent ce)
{
treeGrid.collapseAll();
};
});
toolBar.add(button);
button = new Button();
button.setIcon(Images.expandAll());
button.setToolTip(commonMessage.btn_ExpandAll());
button.addSelectionListener(new SelectionListener<ButtonEvent>()
{
public void componentSelected(ButtonEvent ce)
{
treeGrid.expandAll();
};
});
toolBar.add(button);
When clicking on the button, I get an exception within the wrapper
Uncaught exception escaped
com.google.gwt.core.client.JavaScriptException: (Error): Erreur d'exécution inconnue
number: -2146827688
description: Erreur d'exécution inconnue
at com.google.gwt.dom.client.Element$.setInnerHTML$(Native Method)
at com.extjs.gxt.ui.client.widget.treepanel.TreePanelView.onTextChange(TreePanelView.java:273)
at com.extjs.gxt.ui.client.widget.treepanel.TreePanel.refresh(TreePanel.java:1301)
at com.extjs.gxt.ui.client.widget.treepanel.TreePanelView.expand(TreePanelView.java:55)
at com.extjs.gxt.ui.client.widget.treepanel.TreePanel.onExpand(TreePanel.java:1178)
at com.extjs.gxt.ui.client.widget.treepanel.TreePanel.setExpanded(TreePanel.java:731)
at com.extjs.gxt.ui.client.widget.treepanel.TreePanel.expandAll(TreePanel.java:348)
at com.comarch.web.app.configurationmgnt.client.app.ManageView$7.componentSelected(ManageView.java:160)
at com.comarch.web.app.configurationmgnt.client.app.ManageView$7.componentSelected(ManageView.java:1)
at com.extjs.gxt.ui.client.event.SelectionListener.handleEvent(SelectionListener.java:20)
at com.extjs.gxt.ui.client.event.SelectionListener.handleEvent(SelectionListener.java:1)
at com.extjs.gxt.ui.client.event.BaseObservable.callListener(BaseObservable.java:176)
at com.extjs.gxt.ui.client.event.BaseObservable.fireEvent(BaseObservable.java:96)
at com.extjs.gxt.ui.client.widget.Component.fireEvent(Component.java:444)
at com.extjs.gxt.ui.client.widget.button.Button.onClick(Button.java:529)
at com.extjs.gxt.ui.client.widget.button.Button.onComponentEvent(Button.java:277)
at com.extjs.gxt.ui.client.widget.Component.onBrowserEvent(Component.java:760)
at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1320)
at com.google.gwt.user.client.DOM.dispatchEventAndCatch(DOM.java:1299)
at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1262)
This issue occurs only with IE, I've test with FF3.5, Chrome 2, no problem at all.
Plateform : Win XP SP2, GWT 1.6.4 & 1.7.0, GXT 2.0