@Override
 protected void fireValueChanged(TreeSelectionEvent e) {
   if (e.isAddedPath()) {
     HierarchicalData selectedObject = (HierarchicalData) e.getPath().getLastPathComponent();
     tree.setSelectedNode(selectedObject);
   } else if (getSelectionCount() > 0) {
     HierarchicalData selectedObject =
         (HierarchicalData) getSelectionPaths()[0].getLastPathComponent();
     tree.setSelectedNode(selectedObject);
   } else tree.setSelectedNode(null);
   super.fireValueChanged(e);
 }