--- a/jdk/src/java.desktop/share/classes/javax/swing/JTree.java Wed Feb 11 15:10:33 2015 +0300
+++ b/jdk/src/java.desktop/share/classes/javax/swing/JTree.java Thu Feb 12 14:56:30 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -872,11 +872,13 @@
treeModelListener = createTreeModelListener();
if(treeModelListener != null)
treeModel.addTreeModelListener(treeModelListener);
+
// Mark the root as expanded, if it isn't a leaf.
- if(treeModel.getRoot() != null &&
- !treeModel.isLeaf(treeModel.getRoot())) {
- expandedState.put(new TreePath(treeModel.getRoot()),
- Boolean.TRUE);
+ Object treeRoot = treeModel.getRoot();
+ if(treeRoot != null &&
+ !treeModel.isLeaf(treeRoot)) {
+ expandedState.put(new TreePath(treeRoot),
+ Boolean.TRUE);
}
}
firePropertyChange(TREE_MODEL_PROPERTY, oldModel, treeModel);
@@ -3000,8 +3002,7 @@
* Expands the root path, assuming the current TreeModel has been set.
*/
private void expandRoot() {
- TreeModel model = getModel();
-
+ TreeModel model = getModel();
if(model != null && model.getRoot() != null) {
expandPath(new TreePath(model.getRoot()));
}
@@ -3271,9 +3272,12 @@
return null;
int count = indexs.length;
+
Object parent = model.getRoot();
+ if (parent == null)
+ return null;
+
TreePath parentPath = new TreePath(parent);
-
for(int counter = 0; counter < count; counter++) {
parent = model.getChild(parent, indexs[counter]);
if(parent == null)
@@ -3860,8 +3864,11 @@
if (parent.getPathCount() == 1) {
// New root, remove everything!
clearToggledPaths();
- if(treeModel.getRoot() != null &&
- !treeModel.isLeaf(treeModel.getRoot())) {
+
+ Object treeRoot = treeModel.getRoot();
+
+ if(treeRoot != null &&
+ !treeModel.isLeaf(treeRoot)) {
// Mark the root as expanded, if it isn't a leaf.
expandedState.put(parent, Boolean.TRUE);
}
@@ -4351,7 +4358,12 @@
if (model == null) {
return null;
}
- TreePath path = new TreePath(model.getRoot());
+
+ Object treeRoot = model.getRoot();
+ if (treeRoot == null) {
+ return null;
+ }
+ TreePath path = new TreePath(treeRoot);
if (JTree.this.isVisible(path)) {
TreeCellRenderer r = JTree.this.getCellRenderer();
TreeUI ui = JTree.this.getUI();
@@ -4364,8 +4376,8 @@
boolean expanded = JTree.this.isExpanded(path);
return r.getTreeCellRendererComponent(JTree.this,
- model.getRoot(), selected, expanded,
- model.isLeaf(model.getRoot()), row, hasFocus);
+ treeRoot, selected, expanded,
+ model.isLeaf(treeRoot), row, hasFocus);
}
}
return null;
@@ -4418,8 +4430,12 @@
return 1; // the root node
}
+ Object treeRoot = model.getRoot();
+ if (treeRoot == null)
+ return 0;
+
// return the root's first set of children count
- return model.getChildCount(model.getRoot());
+ return model.getChildCount(treeRoot);
}
/**
@@ -4433,9 +4449,15 @@
if (model == null) {
return null;
}
+
+ Object treeRoot = model.getRoot();
+ if (treeRoot == null) {
+ return null;
+ }
+
if (isRootVisible()) {
if (i == 0) { // return the root node Accessible
- Object[] objPath = { model.getRoot() };
+ Object[] objPath = { treeRoot };
TreePath path = new TreePath(objPath);
return new AccessibleJTreeNode(JTree.this, path, JTree.this);
} else {
@@ -4444,12 +4466,16 @@
}
// return Accessible for one of root's child nodes
- int count = model.getChildCount(model.getRoot());
+ int count = model.getChildCount(treeRoot);
if (i < 0 || i >= count) {
return null;
}
- Object obj = model.getChild(model.getRoot(), i);
- Object[] objPath = { model.getRoot(), obj };
+ Object obj = model.getChild(treeRoot, i);
+ if (obj == null)
+ return null;
+
+ Object[] objPath = {treeRoot, obj };
+
TreePath path = new TreePath(objPath);
return new AccessibleJTreeNode(JTree.this, path, JTree.this);
}
@@ -4488,6 +4514,9 @@
public int getAccessibleSelectionCount() {
Object[] rootPath = new Object[1];
rootPath[0] = treeModel.getRoot();
+ if (rootPath[0] == null)
+ return 0;
+
TreePath childPath = new TreePath(rootPath);
if (JTree.this.isPathSelected(childPath)) {
return 1;
@@ -4510,6 +4539,9 @@
if (i == 0) {
Object[] rootPath = new Object[1];
rootPath[0] = treeModel.getRoot();
+ if (rootPath[0] == null)
+ return null;
+
TreePath childPath = new TreePath(rootPath);
if (JTree.this.isPathSelected(childPath)) {
return new AccessibleJTreeNode(JTree.this, childPath, JTree.this);
@@ -4529,6 +4561,9 @@
if (i == 0) {
Object[] rootPath = new Object[1];
rootPath[0] = treeModel.getRoot();
+ if (rootPath[0] == null)
+ return false;
+
TreePath childPath = new TreePath(rootPath);
return JTree.this.isPathSelected(childPath);
} else {
@@ -4549,7 +4584,10 @@
TreeModel model = JTree.this.getModel();
if (model != null) {
if (i == 0) {
- Object[] objPath = {model.getRoot()};
+ Object[] objPath = {model.getRoot()};
+ if (objPath[0] == null)
+ return;
+
TreePath path = new TreePath(objPath);
JTree.this.addSelectionPath(path);
}
@@ -4568,6 +4606,9 @@
if (model != null) {
if (i == 0) {
Object[] objPath = {model.getRoot()};
+ if (objPath[0] == null)
+ return;
+
TreePath path = new TreePath(objPath);
JTree.this.removeSelectionPath(path);
}
@@ -4593,6 +4634,9 @@
TreeModel model = JTree.this.getModel();
if (model != null) {
Object[] objPath = {model.getRoot()};
+ if (objPath[0] == null)
+ return;
+
TreePath path = new TreePath(objPath);
JTree.this.addSelectionPath(path);
}