/** Populate tree. */
 protected void populateTree() {
   if (getTreeViewer() == null
       || getTreeViewer().getTree() == null
       || getViewInfo() == null
       || getDiagram() == null) {
     return;
   }
   Diagram diagram = getDiagram();
   Collection<Integer> filters = MDTUtil.getAllViewsToFilterFromDiagram(diagram);
   for (TreeItem item : getTreeViewer().getTree().getItems()) {
     Object data = item.getData();
     if (data instanceof ViewInfo) {
       ViewInfo info = (ViewInfo) data;
       if (filters.contains(info.getVisualID())) {
         item.setChecked(false);
       } else {
         item.setChecked(true);
       }
       if (((ViewInfo) data).isSelectable() == false) {
         item.setForeground(ColorConstants.gray);
       }
     }
     setChecked(item, filters);
   }
 }
 /**
  * Sets the checked.
  *
  * @param root the root
  * @param filters the filters
  */
 protected void setChecked(TreeItem root, Collection<Integer> filters) {
   for (TreeItem item : root.getItems()) {
     Object data = item.getData();
     if (data instanceof ViewInfo) {
       ViewInfo info = (ViewInfo) data;
       if (filters.contains(info.getVisualID())) {
         item.setChecked(false);
       } else {
         item.setChecked(true);
       }
     }
     setChecked(item, filters);
   }
 }
 /**
  * When one element from the tree is selected, all elements with the same VisualID are put into
  * the same state (checked or unchecked).
  *
  * @param items
  * @param visualID
  * @param check
  */
 protected void setAllVisualIDsChecked(TreeItem[] items, int visualID, boolean check) {
   ViewInfo viewInfo = null;
   for (TreeItem item : items) {
     if (item != null) {
       viewInfo =
           (ViewInfo) Platform.getAdapterManager().getAdapter(item.getData(), ViewInfo.class);
       if (viewInfo != null && visualID == viewInfo.getVisualID()) {
         item.setChecked(check);
       }
       if (item.getItems() != null) {
         setAllVisualIDsChecked(item.getItems(), visualID, check);
       }
     }
   }
 }
 protected void treeItemSelected(SelectionEvent e) {
   if (e.detail == SWT.CHECK && isChecking == false) {
     isChecking = true;
     try {
       Object data = e.item.getData();
       ViewInfo viewInfo =
           (ViewInfo) Platform.getAdapterManager().getAdapter(data, ViewInfo.class);
       TreeItem item = (TreeItem) Platform.getAdapterManager().getAdapter(e.item, TreeItem.class);
       if (viewInfo != null && item != null && getTreeViewer().getTree().getItems() != null) {
         if (viewInfo.isSelectable()) {
           setAllVisualIDsChecked(
               getTreeViewer().getTree().getItems(), viewInfo.getVisualID(), item.getChecked());
         } else {
           item.setChecked(!item.getChecked());
         }
       }
     } finally {
       isChecking = false;
     }
   }
 }