/*
  * (non-Javadoc) react to check/uncheck events and check/uncheck and gray/ungray children and dependent metrics
  *
  * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse .swt.events.SelectionEvent)
  */
 public void widgetSelected(SelectionEvent e) {
   TableTreeItem item = (TableTreeItem) e.item;
   if (item != null) {
     boolean checked = item.getChecked();
     if (e.detail == 32) {
       // check to see if metric can be enabled and undo check if
       // it can't
       TableTreeItem parent = item.getParentItem();
       if (parent == null) {
         if (checked) {
           if (allowEnable(item)) {
             enableItem(item, true, false);
           } else { // undo damage done by UI
             item.setChecked(false);
             item.setGrayed(true);
           }
         } else {
           enableItem(item, false, false);
         }
       } else {
         // disable and gray a folder if metric is disabled
         if (!parent.getChecked()) {
           item.setChecked(false);
           item.setGrayed(true);
         }
       }
     }
     addPattern.setEnabled(item.getChecked() && !item.getGrayed());
   } else {
     addPattern.setEnabled(false);
   }
 }