/**
   * @param candidates Array of IFeatureModel
   * @param monitor
   * @throws CoreException
   */
  public void doAdd(Object[] candidates) throws CoreException {
    // Category to add features to
    String categoryName = null;
    ISelection selection = fCategoryViewer.getSelection();
    if (!selection.isEmpty() && selection instanceof IStructuredSelection) {
      Object element = ((IStructuredSelection) selection).getFirstElement();
      if (element instanceof ISiteCategoryDefinition) {
        categoryName = ((ISiteCategoryDefinition) element).getName();
      } else if (element instanceof SiteFeatureAdapter) {
        categoryName = ((SiteFeatureAdapter) element).category;
      }
    }
    //
    ISiteFeature[] added = new ISiteFeature[candidates.length];
    for (int i = 0; i < candidates.length; i++) {
      IFeatureModel candidate = (IFeatureModel) candidates[i];
      ISiteFeature child = createSiteFeature(fModel, candidate);
      if (categoryName != null) {
        addCategory(child, categoryName);
      }
      added[i] = child;
    }

    // Update model
    fModel.getSite().addFeatures(added);
    // Select last added feature
    if (added.length > 0) {
      if (categoryName != null) {
        expandCategory(categoryName);
      }
      fCategoryViewer.setSelection(
          new StructuredSelection(new SiteFeatureAdapter(categoryName, added[added.length - 1])),
          true);
    }
  }
 protected void updateCaches(IUElementListRoot newRoot, ProfileChangeOperation op) {
   resolvedOperation = op;
   if (newRoot != null) {
     setDrilldownElements(newRoot, resolvedOperation);
     if (treeViewer != null) {
       if (input != newRoot) treeViewer.setInput(newRoot);
       else treeViewer.refresh();
     }
     input = newRoot;
   }
 }
 public void setVisible(boolean visible) {
   if (visible == true) {
     if (fFilters != null) {
       sourceFileViewer.resetFilters();
       for (Iterator i = fFilters.iterator(); i.hasNext(); )
         sourceFileViewer.addFilter((ViewerFilter) i.next());
     }
     sourceFileViewer.setInput(ResourcesPlugin.getWorkspace().getRoot());
   }
   super.setVisible(visible);
 }
 public void toggleExpandState(int state, StructuredSelection selection) {
   TreeItem[] items = fExtensionTree.getTree().getSelection();
   if (state == NEEDS_EXPAND) { // expand sub tree
     traverseChildrenAndSetExpanded(items); // load non-expanded children
     fExtensionTree.refresh();
     expandChildrenElements(selection.toArray(), true);
     fExtensionTree.setSelection(selection, false);
   } else { // collapse sub tree
     for (Iterator<?> iterator = selection.iterator(); iterator.hasNext(); ) {
       fExtensionTree.setExpandedState(iterator.next(), false);
     }
   }
 }
Esempio n. 5
0
 private void hookContextMenu() {
   MenuManager menuMgr = new MenuManager("#PopupMenu");
   menuMgr.setRemoveAllWhenShown(true);
   menuMgr.addMenuListener(
       new IMenuListener() {
         public void menuAboutToShow(IMenuManager manager) {
           ResultsView.this.fillContextMenu(manager);
         }
       });
   Menu menu = menuMgr.createContextMenu(viewer.getControl());
   viewer.getControl().setMenu(menu);
   getSite().registerContextMenu(menuMgr, viewer);
 }
 @Override
 public void run() {
   StructuredSelection selection = (StructuredSelection) fExtensionTree.getSelection();
   if (fExtensionTree.getTree().getSelectionCount() > 0) {
     TreeItem[] items = fExtensionTree.getTree().getSelection();
     try {
       fFilteredTree.setRedraw(false);
       int state = getStateChangeRequired(items);
       toggleExpandState(state, selection);
     } finally {
       fFilteredTree.setRedraw(true);
       fExtensionTree.refresh();
     }
   }
 }
 /** @param children list of elements to be expand with their children */
 private void expandChildrenElements(Object[] children, boolean fullExpand) {
   for (int i = 0; i < children.length; i++) {
     Object child = children[i];
     if (child instanceof PluginParentNode) {
       PluginParentNode node = (PluginParentNode) child;
       if (node.getChildCount() > 0 && fullExpand) {
         boolean furtherExpanding =
             !(node instanceof PluginExtensionNode && !fExtensionTree.getExpandedState(node));
         expandChildrenElements(node.getChildren(), furtherExpanding);
       } else {
         fExtensionTree.expandToLevel(node, 0);
       }
     }
   }
 }
  /* (non-Javadoc)
   * Method declared on StructuredViewer.
   */
  protected void handleSelect(SelectionEvent event) {

    lastClickedItem = null;
    if (event.detail == SWT.CHECK) {
      TreeItem item = (TreeItem) event.item;
      lastClickedItem = item;
      super.handleSelect(event);

      Object data = item.getData();
      if (data != null) {
        fireCheckStateChanged(new CheckStateChangedEvent(this, data, item.getChecked()));
      }
    } else {
      super.handleSelect(event);
    }
  }
  public void addSelectedFilesToTargetList() {
    ISelection selection = sourceFileViewer.getSelection();

    if (isValidSourceFileViewerSelection(selection)) {
      java.util.List list = null;
      if (selection instanceof IStructuredSelection) {
        list = ((IStructuredSelection) selection).toList();

        if (list != null) {
          list = ((IStructuredSelection) selection).toList();
          for (Iterator i = list.iterator(); i.hasNext(); ) {
            IResource resource = (IResource) i.next();
            if (resource instanceof IFile) {
              // Check if its in the list. Don't add it if it is.
              String resourceName = resource.getFullPath().toString();
              if (selectedListBox.indexOf(resourceName) == -1) selectedListBox.add(resourceName);
            }
          }
          setFiles(selectedListBox.getItems());
        }

        setAddButtonEnabled(false);

        if (selectedListBox.getItemCount() > 0) {
          removeAllButton.setEnabled(true);
          if (isFileMandatory) setPageComplete(true);
          if (selectedListBox.getSelectionCount() > 0) setRemoveButtonEnabled(true);
          else setRemoveButtonEnabled(false);
        }
      }
    }
  }
 /*
  * Extends this method to update check box states.
  */
 protected void doUpdateItem(Item item, Object element) {
   super.doUpdateItem(item, element);
   if (!item.isDisposed() && checkStateProvider != null) {
     setChecked(element, checkStateProvider.isChecked(element));
     setGrayed(element, checkStateProvider.isGrayed(element));
   }
 }
 /* (non-Javadoc)
  * @see org.eclipse.ui.forms.AbstractFormPart#setFormInput(java.lang.Object)
  */
 public boolean setFormInput(Object input) {
   if (input instanceof ISiteCategoryDefinition) {
     fCategoryViewer.setSelection(new StructuredSelection(input), true);
     return true;
   }
   if (input instanceof SiteFeatureAdapter) {
     // first, expand the category, otherwise tree will not find the feature
     String category = ((SiteFeatureAdapter) input).category;
     if (category != null) {
       expandCategory(category);
     }
     fCategoryViewer.setSelection(new StructuredSelection(input), true);
     return true;
   }
   return super.setFormInput(input);
 }
 private void handleNewFeature() {
   final Control control = fCategoryViewer.getControl();
   BusyIndicator.showWhile(
       control.getDisplay(),
       new Runnable() {
         public void run() {
           IFeatureModel[] allModels = PDECore.getDefault().getFeatureModelManager().getModels();
           ArrayList<IFeatureModel> newModels = new ArrayList<IFeatureModel>();
           for (int i = 0; i < allModels.length; i++) {
             if (canAdd(allModels[i])) newModels.add(allModels[i]);
           }
           IFeatureModel[] candidateModels =
               newModels.toArray(new IFeatureModel[newModels.size()]);
           FeatureSelectionDialog dialog =
               new FeatureSelectionDialog(
                   fCategoryViewer.getTree().getShell(), candidateModels, true);
           if (dialog.open() == Window.OK) {
             Object[] models = dialog.getResult();
             try {
               doAdd(models);
             } catch (CoreException e) {
               PDEPlugin.log(e);
             }
           }
         }
       });
 }
  protected void fillContextMenu(IMenuManager manager) {
    Action removeAction =
        new Action(PDEUIMessages.CategorySection_remove) {
          public void run() {
            doGlobalAction(ActionFactory.DELETE.getId());
          }
        };
    removeAction.setEnabled(isEditable());
    manager.add(removeAction);
    getPage().getPDEEditor().getContributor().contextMenuAboutToShow(manager);

    ISelection selection = fCategoryViewer.getSelection();
    if (!selection.isEmpty() && selection instanceof IStructuredSelection) {
      final ISiteFeature[] features = getFeaturesFromSelection((IStructuredSelection) selection);
      if (features.length > 0) {
        manager.add(new Separator());
        Action synchronizeAction = new SynchronizePropertiesAction(features, fModel);
        manager.add(synchronizeAction);
        Action buildAction =
            new Action(PDEUIMessages.CategorySection_build) {
              public void run() {
                ((SiteEditor) getPage().getPDEEditor()).handleBuild(features);
              }
            };
        buildAction.setEnabled(isEditable());
        manager.add(buildAction);
      }
    }
  }
Esempio n. 14
0
 private void hookDoubleClickAction() {
   viewer.addDoubleClickListener(
       new IDoubleClickListener() {
         public void doubleClick(DoubleClickEvent event) {
           doubleClickAction.run();
         }
       });
 }
Esempio n. 15
0
  /** This is a callback that will allow us to create the viewer and initialize it. */
  public void createPartControl(Composite parent) {
    viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
    drillDownAdapter = new DrillDownAdapter(viewer);
    viewer.setContentProvider(new ViewContentProvider());
    viewer.setLabelProvider(new ViewLabelProvider());
    viewer.setSorter(new NameSorter());
    viewer.setInput(getViewSite());

    // Create the help context id for the viewer's control
    PlatformUI.getWorkbench()
        .getHelpSystem()
        .setHelp(viewer.getControl(), "cyrilqc-eclipse.viewer");
    makeActions();
    hookContextMenu();
    hookDoubleClickAction();
    contributeToActionBars();
  }
Esempio n. 16
0
  @Override
  public void createPartControl(Composite parent) {
    super.createPartControl(parent);
    final TreeViewer viewer = getNavigatorViewer();
    assert viewer != null;
    viewer.getTree().setHeaderVisible(true);
    createColumns(viewer);
    UIUtils.setHelp(parent, IHelpContextIds.CTX_PROJECT_EXPLORER);

    viewer.addFilter(
        new ViewerFilter() {
          @Override
          public boolean select(Viewer viewer, Object parentElement, Object element) {
            return !(element instanceof DBNProjectDatabases);
          }
        });
    updateTitle();
  }
 private void handleImportEnvironment() {
   IStructuredSelection sel = (IStructuredSelection) fCategoryViewer.getSelection();
   final ISiteFeature[] selectedFeatures = getFeaturesFromSelection(sel);
   BusyIndicator.showWhile(
       fCategoryTreePart.getControl().getDisplay(),
       new Runnable() {
         public void run() {
           new SynchronizePropertiesAction(selectedFeatures, getModel()).run();
         }
       });
 }
 private void updateButtons() {
   if (!isEditable()) {
     return;
   }
   IStructuredSelection sel = (IStructuredSelection) fCategoryViewer.getSelection();
   fCategoryTreePart.setButtonEnabled(
       BUTTON_BUILD_FEATURE, getFeaturesFromSelection(sel).length > 0);
   int featureCount = fModel.getSite().getFeatures().length;
   fCategoryTreePart.setButtonEnabled(BUTTON_BUILD_ALL, featureCount > 0);
   fCategoryTreePart.setButtonEnabled(BUTTON_IMPORT_ENVIRONMENT, featureCount > 0);
 }
 private void expandCategory(String category) {
   if (category != null) {
     ISiteCategoryDefinition[] catDefs = fModel.getSite().getCategoryDefinitions();
     for (int i = 0; i < catDefs.length; i++) {
       if (category.equals(catDefs[i].getName())) {
         fCategoryViewer.expandToLevel(catDefs[i], 1);
         break;
       }
     }
   }
 }
Esempio n. 20
0
  protected Control createDialogArea(Composite parent) {
    Composite container = (Composite) super.createDialogArea(parent);
    GridLayout layout = new GridLayout();
    layout.numColumns = 2;
    layout.marginWidth = layout.marginHeight = 9;
    container.setLayout(layout);
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.widthHint = 300;
    gd.heightHint = 300;
    container.setLayoutData(gd);

    fLoopViewer = new TreeViewer(container);
    fLoopViewer.setContentProvider(new ContentProvider());
    fLoopViewer.setLabelProvider(new LoopLabelProvider());
    Tree tree = fLoopViewer.getTree();
    gd = new GridData(GridData.FILL_BOTH);
    tree.setLayoutData(gd);
    fLoopViewer.setInput(PDEPlugin.getDefault());
    fLoopViewer.expandAll();
    getShell().setText(PDEUIMessages.LoopDialog_title);
    return container;
  }
  private void createSourceViewer(Composite parent) {
    sourceFileViewer =
        new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER));
    sourceFileViewer.setContentProvider(new WorkbenchContentProvider());
    sourceFileViewer.setLabelProvider(new WorkbenchLabelProvider());
    sourceFileViewer.addSelectionChangedListener(
        new ISelectionChangedListener() {
          public void selectionChanged(SelectionChangedEvent event) {
            java.util.List list;
            ISelection selection = event.getSelection();
            boolean newFilesSelected = false;

            if (selection instanceof IStructuredSelection) {
              list = ((IStructuredSelection) selection).toList();
              for (Iterator i = list.iterator(); i.hasNext(); ) {
                IResource resource = (IResource) i.next();
                if (resource instanceof IFile) {
                  if (checkIfFileInTarget((IFile) resource) == false) newFilesSelected = true;
                }
              }
              setAddButtonEnabled(newFilesSelected);
            }
          }
        });
    sourceFileViewer.addDoubleClickListener(
        new IDoubleClickListener() {
          public void doubleClick(DoubleClickEvent event) {
            addSelectedFilesToTargetList();
          }
        });

    Control treeWidget = sourceFileViewer.getTree();
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.widthHint = SIZING_LISTS_WIDTH;
    gd.heightHint = SIZING_LISTS_HEIGHT;
    treeWidget.setLayoutData(gd);
  }
  /* (non-Javadoc)
   * Method declared on StructuredViewer.
   */
  protected void handleDoubleSelect(SelectionEvent event) {

    if (lastClickedItem != null) {
      TreeItem item = lastClickedItem;
      Object data = item.getData();
      if (data != null) {
        boolean state = item.getChecked();
        setChecked(data, !state);
        fireCheckStateChanged(new CheckStateChangedEvent(this, data, !state));
      }
      lastClickedItem = null;
    } else {
      super.handleDoubleSelect(event);
    }
  }
  /* (non-Javadoc)
   * Method declared on Viewer.
   */
  protected void preservingSelection(Runnable updateCode) {
    if (!getPreserveSelection()) {
      return;
    }
    // If a check provider is present, it determines the state across input
    // changes.
    if (checkStateProvider != null) {
      // Try to preserve the selection, let the ICheckProvider manage
      // the check states
      super.preservingSelection(updateCode);
      return;
    }

    // Preserve checked items
    int n = getItemCount(getControl());
    CustomHashtable checkedNodes = newHashtable(n * 2 + 1);
    CustomHashtable grayedNodes = newHashtable(n * 2 + 1);

    gatherState(checkedNodes, grayedNodes, getControl());

    super.preservingSelection(updateCode);

    applyState(checkedNodes, grayedNodes, getControl());
  }
 public boolean doGlobalAction(String actionId) {
   if (actionId.equals(ActionFactory.CUT.getId())) {
     handleRemove();
     return false;
   }
   if (actionId.equals(ActionFactory.PASTE.getId())) {
     doPaste();
     return true;
   }
   if (actionId.equals(ActionFactory.DELETE.getId())) {
     return handleRemove();
   }
   if (actionId.equals(ActionFactory.SELECT_ALL.getId())) {
     fCategoryViewer.getTree().selectAll();
     refresh();
   }
   return false;
 }
 private boolean handleRemoveCategoryDefinition(ISiteCategoryDefinition catDef) {
   try {
     Object[] children =
         ((CategoryContentProvider) fCategoryViewer.getContentProvider()).getChildren(catDef);
     for (int i = 0; i < children.length; i++) {
       SiteFeatureAdapter adapter = (SiteFeatureAdapter) children[i];
       ISiteCategory[] cats = adapter.feature.getCategories();
       for (int j = 0; j < cats.length; j++) {
         if (adapter.category.equals(cats[j].getName()))
           adapter.feature.removeCategories(new ISiteCategory[] {cats[j]});
       }
       if (adapter.feature.getCategories().length == 0) {
         fModel.getSite().removeFeatures(new ISiteFeature[] {adapter.feature});
       }
     }
     fModel.getSite().removeCategoryDefinitions(new ISiteCategoryDefinition[] {catDef});
     return true;
   } catch (CoreException e) {
   }
   return false;
 }
 private void handleAddCategoryDefinition() {
   String name =
       NLS.bind(
           PDEUIMessages.CategorySection_newCategoryName, Integer.toString(++newCategoryCounter));
   while (categoryExists(name)) {
     name =
         NLS.bind(
             PDEUIMessages.CategorySection_newCategoryName,
             Integer.toString(++newCategoryCounter));
   }
   String label =
       NLS.bind(
           PDEUIMessages.CategorySection_newCategoryLabel, Integer.toString(newCategoryCounter));
   ISiteCategoryDefinition categoryDef = fModel.getFactory().createCategoryDefinition();
   try {
     categoryDef.setName(name);
     categoryDef.setLabel(label);
     fModel.getSite().addCategoryDefinitions(new ISiteCategoryDefinition[] {categoryDef});
   } catch (CoreException e) {
     PDEPlugin.logException(e);
   }
   fCategoryViewer.setSelection(new StructuredSelection(categoryDef), true);
 }
  private boolean handleRemove() {
    IStructuredSelection ssel = (IStructuredSelection) fCategoryViewer.getSelection();
    Iterator<?> iterator = ssel.iterator();
    boolean success = true;
    Set<?> removedCategories = new HashSet<Object>();
    while (iterator.hasNext()) {
      Object object = iterator.next();
      if (object == null) continue;
      if (object instanceof ISiteCategoryDefinition) {
        if (!handleRemoveCategoryDefinition((ISiteCategoryDefinition) object)) {
          success = false;
        }
      } else {
        // check if some of features was not removed during category removal
        SiteFeatureAdapter fa = (SiteFeatureAdapter) object;
        if (removedCategories.contains(fa.category)) continue;

        if (!handleRemoveSiteFeatureAdapter(fa)) {
          success = false;
        }
      }
    }
    return success;
  }
 private void handleBuild() {
   IStructuredSelection sel = (IStructuredSelection) fCategoryViewer.getSelection();
   ((SiteEditor) getPage().getPDEEditor()).handleBuild(getFeaturesFromSelection(sel));
 }
 public void refresh() {
   fCategoryViewer.refresh();
   updateButtons();
   super.refresh();
 }
 void fireSelection() {
   fCategoryViewer.setSelection(fCategoryViewer.getSelection());
 }