summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2006-08-03 23:15:07 +0000
committerMark Wielaard <mark@klomp.org>2006-08-03 23:15:07 +0000
commit3003a65c6b00b72247b3cf17ce44156ea9170393 (patch)
treeafd43d1edcf99702afb8ccc924f5eab738dda2e0
parent4e094ae77fe2f0a38cf5a20e41ecd6cfad2255b7 (diff)
downloadclasspath-3003a65c6b00b72247b3cf17ce44156ea9170393.tar.gz
2006-07-31 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 b0a9d2bb6..9f26ce077 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2006-07-31 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 6530265b9..fa898c5a9 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 0ca30b7ad..4aa8a2026 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();
}