/** * @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); } } }
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); } } }
private void hookDoubleClickAction() { viewer.addDoubleClickListener( new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { doubleClickAction.run(); } }); }
/** 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(); }
@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; } } } }
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()); }