/**
  * 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);
   }
 }