Example #1
0
  public static void disposeItem(TreeItem item) {
    TreeItem parentItem = item.getParentItem();

    if (parentItem == null && item.getParent().getItemCount() == 1) {
      CTabItem tabItem = (CTabItem) item.getParent().getData("tabItem");
      tabItem.dispose();
      return;
    }

    item.dispose();
    if (parentItem != null && parentItem.getItemCount() == 0) {
      disposeItem(parentItem);
    }
  }
Example #2
0
 public static int getColumnAtPos(TreeItem item, int x, int y) {
   int columnCount = item.getParent().getColumnCount();
   for (int i = 0; i < columnCount; i++) {
     Rectangle rect = item.getBounds(i);
     if (rect.contains(x, y)) {
       return i;
     }
   }
   return -1;
 }
Example #3
0
 /** Get the TreeItem that should be selected after removing the current selection. */
 public static TreeItem getNewlySelectedItem(Tree tree) {
   TreeItem[] selection = tree.getSelection();
   if ((selection == null) || (selection.length == 0)) {
     return null;
   }
   TreeSet<TreeItem> selectionSet =
       new TreeSet<TreeItem>(
           new Comparator<TreeItem>() {
             @Override
             public final int compare(TreeItem o1, TreeItem o2) {
               return CommonUtils.compare(o1.getBounds().y, o2.getBounds().y);
             }
           });
   List<TreeItem> selectionList = Arrays.asList(selection);
   selectionSet.addAll(selectionList);
   TreeItem previousItem = null;
   TreeItem parentItem = null;
   while (!selectionSet.isEmpty()) {
     TreeItem focusItem = selectionSet.iterator().next();
     parentItem = focusItem.getParentItem();
     TreeItem[] items =
         (parentItem != null ? parentItem.getItems() : focusItem.getParent().getItems());
     boolean found = false;
     for (int i = 0; i < items.length; i++) {
       TreeItem item = items[i];
       if (focusItem == item) {
         found = true;
         if ((i > 0) && (previousItem == null)) {
           previousItem = items[i - 1];
         }
       }
       if (found) {
         if (!selectionSet.remove(item)) {
           return item;
         }
       }
     }
   }
   if (previousItem != null && !selectionList.contains(previousItem)) {
     return previousItem;
   }
   if (parentItem != null && !selectionList.contains(parentItem)) {
     return parentItem;
   }
   return null;
 }
 /**
  * This returns the location of the mouse in the vertical direction, relative to the item widget,
  * from 0 (top) to 1 (bottom). NOTE : Copied from DragAndDropCommand.
  *
  * @param event the {@link DropTargetEvent}
  * @return the float representing the vertical direction
  */
 protected float getLocation(DropTargetEvent event) {
   float result = 0.0F;
   if (event.item instanceof TreeItem) {
     TreeItem treeItem = (TreeItem) event.item;
     Control control = treeItem.getParent();
     Point point = control.toControl(new Point(event.x, event.y));
     Rectangle bounds = treeItem.getBounds();
     result = (float) (point.y - bounds.y) / (float) bounds.height;
   } else if (event.item instanceof TableItem) {
     TableItem tableItem = (TableItem) event.item;
     Control control = tableItem.getParent();
     Point point = control.toControl(new Point(event.x, event.y));
     Rectangle bounds = tableItem.getBounds(0);
     result = (float) (point.y - bounds.y) / (float) bounds.height;
   }
   return result;
 }
  protected void installEditors(TreeItem treeItem, final Object parentPackage) {
    Object currentDataItem = treeItem.getData();
    if (currentDataItem instanceof ProfileApplication) {

      ProfileApplication profileApplication = (ProfileApplication) currentDataItem;

      Tree tree = treeItem.getParent();

      final Button checkbox = new Button(tree, SWT.CHECK);

      checkbox.setSelection(true);

      IProfileApplicationDelegate delegate = getDelegate(profileApplication);
      final Package applyingPackage = delegate.getApplyingPackage(profileApplication);
      final Profile appliedProfile = delegate.getAppliedProfile(profileApplication);
      getProfilesToReapply(applyingPackage).add(appliedProfile);

      checkbox.addSelectionListener(
          new SelectionListener() {

            public void widgetSelected(SelectionEvent e) {
              if (checkbox.getSelection()) {
                getProfilesToReapply(applyingPackage).add(appliedProfile);
              } else {
                getProfilesToReapply(applyingPackage).remove(appliedProfile);
              }
            }

            public void widgetDefaultSelected(SelectionEvent e) {
              // Nothing
            }
          });

      TreeEditor editor = new TreeEditor(tree);
      editor.horizontalAlignment = SWT.CENTER;
      editor.grabHorizontal = true;

      editor.setEditor(checkbox, treeItem, 4);
    }

    for (TreeItem subitem : treeItem.getItems()) {
      installEditors(subitem, currentDataItem);
    }
  }
 /** return the item of real context parameter. */
 private static IContextParameter searchNearItemParam(
     final TreeItem[] items, final TreeItem searchItem) {
   if (items == null || searchItem == null) {
     return null;
   }
   for (int i = items.length - 1; i >= 0; i--) {
     TreeItem item = items[i];
     IContextParameter param = searchNearItemParam(item.getItems(), searchItem);
     if (param != null) {
       return param;
     }
     //
     if (item == searchItem) {
       if (i > 0) { // before item
         return searchEndItemParam(items[i - 1]);
       } else { // first in current
         if (i + 1 < items.length) { // next item
           return searchEndItemParam(items[i + 1]);
         } else { // only one left
           TreeItem parentItem = item.getParentItem();
           if (parentItem != null) {
             final Tree parentTree = item.getParent();
             final int index = parentTree.indexOf(parentItem);
             if (index > -1) { // in tree root
               if (index > 0) {
                 return searchEndItemParam(parentTree.getItem(index - 1));
               } else { // is first
                 return null;
               }
             } else { // not found
               return null;
             }
           }
         }
       }
     }
   }
   return null;
 }