/** * Selects the saved item in the tree of preference pages. If it cannot do this it saves the first * one. */ protected void selectSavedItem() { IPreferenceNode node = findNodeMatching(getSelectedNodePreference()); if (node == null) { IPreferenceNode[] nodes = preferenceManager.getRootSubNodes(); ViewerComparator comparator = getTreeViewer().getComparator(); if (comparator != null) { comparator.sort(null, nodes); } for (int i = 0; i < nodes.length; i++) { IPreferenceNode selectedNode = nodes[i]; if (selectedNode != null) { node = selectedNode; break; } } } if (node != null) { getTreeViewer().setSelection(new StructuredSelection(node), true); // Keep focus in tree. See bugs 2692, 2621, and 6775. getTreeViewer().getControl().setFocus(); boolean expanded = getTreeViewer().getExpandedState(node); getTreeViewer().setExpandedState(node, !expanded); } }