Author: tchemit Date: 2010-06-14 18:33:04 +0200 (Mon, 14 Jun 2010) New Revision: 1972 Url: http://nuiton.org/repositories/revision/jaxx/1972 Log: Anomalie #674: ClassCastException when using navigation tree filtred by a simple TreeModel Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxTreeHelper.java Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxTreeHelper.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxTreeHelper.java 2010-06-14 16:15:35 UTC (rev 1971) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/JaxxTreeHelper.java 2010-06-14 16:33:04 UTC (rev 1972) @@ -126,9 +126,13 @@ @Override public void treeWillExpand(TreeExpansionEvent event) { - DefaultTreeModel model = (DefaultTreeModel) - ((JTree) event.getSource()).getModel(); + if (model == null) { + // no model set, + log.warn("No model set in " + this); + return; + } + JaxxNode<?> source = (JaxxNode<?>) event.getPath().getLastPathComponent(); if (log.isDebugEnabled()) { @@ -153,8 +157,14 @@ treeModelListener = new TreeModelListener() { @Override public void treeNodesChanged(TreeModelEvent e) { - JaxxNode<?> source = (JaxxNode<?>) e.getTreePath().getLastPathComponent(); - DefaultTreeModel model = (DefaultTreeModel) e.getSource(); + if (model == null) { + + // no model set, + log.warn("No model set in " + this); + return; + } + + JaxxNode<?> source = getNode(e); DataProvider dataProvider = getDataProvider(); source.populateNode(model, dataProvider, false); if (log.isDebugEnabled()) { @@ -172,8 +182,13 @@ @Override public void treeNodesInserted(TreeModelEvent e) { - JaxxNode<?> source = (JaxxNode<?>) e.getTreePath().getLastPathComponent(); - DefaultTreeModel model = (DefaultTreeModel) e.getSource(); + if (model == null) { + + // no model set, + log.warn("No model set in " + this); + return; + } + JaxxNode<?> source = getNode(e); DataProvider dataProvider = getDataProvider(); source.populateNode(model, dataProvider, false); if (log.isDebugEnabled()) { @@ -191,7 +206,13 @@ @Override public void treeNodesRemoved(TreeModelEvent e) { - JaxxNode<?> source = (JaxxNode<?>) e.getTreePath().getLastPathComponent(); + if (model == null) { + + // no model set, + log.warn("No model set in " + this); + return; + } + JaxxNode<?> source = getNode(e); if (log.isDebugEnabled()) { String message = getLogMessage(e, source); log.debug(message); @@ -200,8 +221,13 @@ @Override public void treeStructureChanged(TreeModelEvent e) { - JaxxNode<?> source = (JaxxNode<?>) e.getTreePath().getLastPathComponent(); - DefaultTreeModel model = (DefaultTreeModel) e.getSource(); + if (model == null) { + + // no model set, + log.warn("No model set in " + this); + return; + } + JaxxNode<?> source = getNode(e); DataProvider dataProvider = getDataProvider(); source.populateNode(model, dataProvider, false); if (log.isDebugEnabled()) { @@ -224,6 +250,12 @@ Arrays.toString(e.getChildIndices()); return message; } + + + protected JaxxNode<?> getNode(TreeModelEvent e) { + JaxxNode<?> source = (JaxxNode<?>) e.getTreePath().getLastPathComponent(); + return source; + } }; } @@ -250,8 +282,10 @@ return null; } TreeCellRenderer r = t.getCellRenderer(); - return (AbstractJaxxTreeCellRenderer<N>) - (r instanceof AbstractJaxxTreeCellRenderer ? r : null); + if (r instanceof AbstractJaxxTreeCellRenderer<?>) { + return (AbstractJaxxTreeCellRenderer<N>) r; + } + return null; } public DefaultTreeModel getModel() {