summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2006-08-03 23:14:17 +0000
committerMark Wielaard <mark@klomp.org>2006-08-03 23:14:17 +0000
commitc17e5b1045997bd1e42a901a097da94443589c48 (patch)
tree483d3e567691f23c5fe22eb959139a6bfe4b27c8
parentf05e472c9c8c779c45ccd4658b29c79799b4861c (diff)
downloadclasspath-c17e5b1045997bd1e42a901a097da94443589c48.tar.gz
2006-08-03 Roman Kennke <kennke@aicas.com>
PR 28534 * javax/swing/JTree.java (JTree(TreeModel)): Set cell renderer to null. * javax/swing/plaf/basic/BasicTreeUI.java (setCellRenderer): Finish editing before setting the cell renderer. Refresh the layout. Don't set the currentCellRenderer field here (that's done in updateRenderer). (updateRenderer): Handle createdRenderer field here too. Set renderer to a default handler when the current renderer in the JTree is null.
-rw-r--r--ChangeLog13
-rw-r--r--javax/swing/JTree.java3
-rw-r--r--javax/swing/plaf/basic/BasicTreeUI.java36
3 files changed, 47 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 0182576f4..65930e94c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2006-08-03 Roman Kennke <kennke@aicas.com>
+
+ PR 28534
+ * javax/swing/JTree.java
+ (JTree(TreeModel)): Set cell renderer to null.
+ * javax/swing/plaf/basic/BasicTreeUI.java
+ (setCellRenderer): Finish editing before setting the
+ cell renderer. Refresh the layout. Don't set the
+ currentCellRenderer field here (that's done in updateRenderer).
+ (updateRenderer): Handle createdRenderer field here too.
+ Set renderer to a default handler when the current renderer
+ in the JTree is null.
+
2006-08-03 Mark Wielaard <mark@klomp.org>
* scripts/Makefile.am (EXTRA_DIST): Add import-cacerts.sh.
diff --git a/javax/swing/JTree.java b/javax/swing/JTree.java
index 8120863e8..aaf326b69 100644
--- a/javax/swing/JTree.java
+++ b/javax/swing/JTree.java
@@ -1515,6 +1515,9 @@ public class JTree extends JComponent implements Scrollable, Accessible
// The root node appears expanded by default.
nodeStates = new Hashtable();
+ // The cell renderer gets set by the UI.
+ cellRenderer = null;
+
// Install the UI before installing the model. This way we avoid double
// initialization of lots of UI and model stuff inside the UI and related
// classes. The necessary UI updates are performed via property change
diff --git a/javax/swing/plaf/basic/BasicTreeUI.java b/javax/swing/plaf/basic/BasicTreeUI.java
index c8407925f..c1915567d 100644
--- a/javax/swing/plaf/basic/BasicTreeUI.java
+++ b/javax/swing/plaf/basic/BasicTreeUI.java
@@ -477,8 +477,18 @@ public class BasicTreeUI
*/
protected void setCellRenderer(TreeCellRenderer tcr)
{
- currentCellRenderer = tcr;
+ // Finish editing before changing the renderer.
+ completeEditing();
+
+ // The renderer is set in updateRenderer.
updateRenderer();
+
+ // Refresh the layout if necessary.
+ if (treeState != null)
+ {
+ treeState.invalidateSizes();
+ updateSize();
+ }
}
/**
@@ -1172,10 +1182,26 @@ public class BasicTreeUI
protected void updateRenderer()
{
if (tree != null)
- currentCellRenderer = tree.getCellRenderer();
-
- if (currentCellRenderer == null)
- currentCellRenderer = createDefaultCellRenderer();
+ {
+ TreeCellRenderer rend = tree.getCellRenderer();
+ if (rend != null)
+ {
+ createdRenderer = false;
+ currentCellRenderer = rend;
+ if (createdCellEditor)
+ tree.setCellEditor(null);
+ }
+ else
+ {
+ tree.setCellRenderer(createDefaultCellRenderer());
+ createdRenderer = true;
+ }
+ }
+ else
+ {
+ currentCellRenderer = null;
+ createdRenderer = false;
+ }
updateCellEditor();
}