Example usage for org.eclipse.jface.action ContributionItem ContributionItem

List of usage examples for org.eclipse.jface.action ContributionItem ContributionItem

Introduction

In this page you can find the example usage for org.eclipse.jface.action ContributionItem ContributionItem.

Prototype

protected ContributionItem() 

Source Link

Document

Creates a contribution item with a null id.

Usage

From source file:com.aptana.explorer.navigator.actions.CommandsActionProvider.java

License:Open Source License

protected void fillMenu(MenuManager menuManager) {
    IContributionItem item = menuManager.find(IContextMenuConstants.GROUP_PROPERTIES);
    if (item == null) {
        menuManager.add(new GroupMarker(IContextMenuConstants.GROUP_PROPERTIES));
    }// w ww . j  a  v a 2  s  .  com
    // Stick Delete in Properties area
    menuManager.appendToGroup(IContextMenuConstants.GROUP_PROPERTIES, new ContributionItem() {

        @Override
        public void fill(Menu menu, int index) {
            final IProject selectedProject = getSelectedProject();
            MenuItem item = new MenuItem(menu, SWT.PUSH);
            item.setText(Messages.SingleProjectView_DeleteProjectMenuItem_LBL);
            item.addSelectionListener(new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    DeleteResourceAction action = new DeleteResourceAction(getPartSite());
                    action.selectionChanged(new StructuredSelection(selectedProject));
                    action.run();
                }
            });
            boolean enabled = (selectedProject != null && selectedProject.exists());
            ISharedImages images = PlatformUI.getWorkbench().getSharedImages();
            item.setImage(enabled ? images.getImage(ISharedImages.IMG_TOOL_DELETE)
                    : images.getImage(ISharedImages.IMG_TOOL_DELETE_DISABLED));
            item.setEnabled(enabled);
        }

        @Override
        public boolean isDynamic() {
            return true;
        }
    });
}

From source file:com.aptana.git.ui.internal.actions.CommitDialog.java

License:Open Source License

private Table createTable(Composite composite, final boolean staged) {
    Table table = new Table(composite, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
    table.setLinesVisible(true);//from  ww w .j a  v  a2  s. c o m
    table.setHeaderVisible(true);
    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
    data.heightHint = 200;
    data.widthHint = 250;
    table.setLayoutData(data);
    String[] titles = { " ", Messages.CommitDialog_PathColumnLabel }; //$NON-NLS-1$
    int[] widths = new int[] { 20, 250 };
    for (int i = 0; i < titles.length; i++) {
        TableColumn column = new TableColumn(table, SWT.NONE);
        column.setText(titles[i]);
        column.setWidth(widths[i]);
    }
    List<ChangedFile> changedFiles = gitRepository.index().changedFiles();
    Collections.sort(changedFiles);
    for (ChangedFile file : changedFiles) {
        boolean match = false;
        if (staged && file.hasStagedChanges()) {
            match = true;
        } else if (!staged && file.hasUnstagedChanges()) {
            match = true;
        }

        if (match) {
            createTableItem(table, file, false);
        }
    }

    // Drag and Drop
    // FIXME If user drags and drops while we're still crunching on last drag/drop then we end up hanging
    // Seems to be related to manipulating the table here before we receive the index changed callback
    Transfer[] types = new Transfer[] { LocalSelectionTransfer.getTransfer() };

    // Drag Source
    DragSource source = new DragSource(table, DND.DROP_MOVE);
    source.setTransfer(types);
    source.addDragListener(new DragSourceAdapter() {
        public void dragStart(DragSourceEvent event) {
            DragSource ds = (DragSource) event.widget;
            draggingFromTable = ds.getControl();

            LocalSelectionTransfer.getTransfer()
                    .setSelection(new StructuredSelection(((Table) draggingFromTable).getSelection()));
            LocalSelectionTransfer.getTransfer().setSelectionSetTime(event.time & 0xFFFFFFFFL);
        }

        public void dragSetData(DragSourceEvent event) {
            // do nothing
        }
    });

    // Create the drop target
    DropTarget target = new DropTarget(table, DND.DROP_MOVE);
    target.setTransfer(types);
    if (table.getItemCount() == 0)
        target.setDropTargetEffect(null);
    target.addDropListener(new DropTargetAdapter() {
        public void dropAccept(DropTargetEvent event) {
            DropTarget dp = (DropTarget) event.widget;
            if (dp.getControl() == draggingFromTable) {
                event.detail = DND.DROP_NONE;
            }
        }

        public void dragEnter(DropTargetEvent event) {
            // Allow dropping text only
            for (int i = 0, n = event.dataTypes.length; i < n; i++) {
                if (LocalSelectionTransfer.getTransfer().isSupportedType(event.dataTypes[i])) {
                    event.currentDataType = event.dataTypes[i];
                }
            }
            event.operations = DND.DROP_MOVE;
        }

        public void dragOver(DropTargetEvent event) {
            event.feedback = DND.FEEDBACK_SCROLL;
        }

        @SuppressWarnings("unchecked")
        public void drop(DropTargetEvent event) {
            if (!LocalSelectionTransfer.getTransfer().isSupportedType(event.currentDataType))
                return;
            // Get the dropped data
            IStructuredSelection selection = (IStructuredSelection) event.data;
            moveItems(!staged, ((List<TableItem>) selection.toList()).toArray(new TableItem[selection.size()]));
        }
    });

    table.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            super.widgetSelected(e);
            if (e.item == null)
                return;
            TableItem item = (TableItem) e.item;
            updateDiff(staged, getChangedFile(item));
        }
    });
    // Allow double-clicking to toggle staged/unstaged
    table.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDown(MouseEvent e) {
            if (e.getSource() == null)
                return;
            Table table = (Table) e.getSource();
            Point point = new Point(e.x, e.y);
            TableItem item = table.getItem(point);
            if (item == null) {
                return;
            }
            // did user click on file image? If so, toggle staged/unstage
            Rectangle imageBounds = item.getBounds(0);
            if (imageBounds.contains(point)) {
                moveItems(staged, new TableItem[] { item });
            }
        }

        @Override
        public void mouseDoubleClick(MouseEvent e) {
            if (e.getSource() == null)
                return;
            Table table = (Table) e.getSource();
            TableItem[] selected = table.getSelection();
            moveItems(staged, selected);
        }
    });
    // Custom drawing so we can truncate filepaths in middle...
    table.addListener(SWT.EraseItem, new Listener() {

        public void handleEvent(Event event) {
            // Only draw the text custom
            if (event.index != 1)
                return;

            event.detail &= ~SWT.FOREGROUND;
        }
    });
    table.addListener(SWT.PaintItem, new Listener() {

        public void handleEvent(Event event) {
            // Only draw the text custom
            if (event.index != 1)
                return;
            TableItem item = (TableItem) event.item;
            String text = item.getText(event.index);

            // Truncate middle of string
            Table theTable = (Table) event.widget;
            int width = theTable.getColumn(event.index).getWidth();
            Point p = event.gc.stringExtent(text); // is text wider than available width?
            if (p.x > width) {
                // chop string in half and drop a few characters
                int middle = text.length() / 2;
                String beginning = text.substring(0, middle - 1);
                String end = text.substring(middle + 2, text.length());
                // Now repeatedly chop off one char from each end until we fit
                // TODO Chop each side separately? it'd take more loops, but text would fit tighter when uneven
                // lengths work better..
                while (event.gc.stringExtent(beginning + "..." + end).x > width) //$NON-NLS-1$
                {
                    if (beginning.length() > 0) {
                        beginning = beginning.substring(0, beginning.length() - 1);
                    } else {
                        break;
                    }
                    if (end.length() > 0) {
                        end = end.substring(1);
                    } else {
                        break;
                    }
                }
                text = beginning + "..." + end; //$NON-NLS-1$
            }
            event.gc.drawText(text, event.x, event.y, true);

            event.detail &= ~SWT.FOREGROUND;
        }
    });

    if (!staged) {
        final Table myTable = table;
        MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
        menuMgr.setRemoveAllWhenShown(true);
        menuMgr.addMenuListener(new IMenuListener() {
            public void menuAboutToShow(IMenuManager manager) {
                TableItem[] selected = myTable.getSelection();
                List<IResource> files = new ArrayList<IResource>();
                final List<ChangedFile> changedFiles = new ArrayList<ChangedFile>();
                for (TableItem item : selected) {
                    ChangedFile file = getChangedFile(item);
                    if (file != null) {
                        changedFiles.add(file);
                        IFile iFile = gitRepository.getFileForChangedFile(file);
                        if (iFile != null) {
                            files.add(iFile);
                        }
                    }
                }

                ContributionItem ci = new ContributionItem() {
                    public void fill(Menu menu, int index) {
                        MenuItem item = new MenuItem(menu, SWT.NONE);
                        item.setText(Messages.CommitDialog_RevertLabel);
                        // need to remove the file(s) from staged table once action runs
                        item.addSelectionListener(new SelectionAdapter() {
                            @Override
                            public void widgetSelected(SelectionEvent e) {
                                // need to make a copy because operation will actually change input files.
                                final List<ChangedFile> copy = new ArrayList<ChangedFile>(changedFiles);
                                for (ChangedFile cf : changedFiles) {
                                    copy.add(new ChangedFile(cf));
                                }

                                gitRepository.index().discardChangesForFiles(changedFiles);

                                PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {

                                    public void run() {
                                        // If this file was shown in diff area, we need to blank the diff area!
                                        if (fLastDiffFile != null) {
                                            for (ChangedFile file : copy) {
                                                if (file != null && file.equals(fLastDiffFile)) {
                                                    updateDiff(null, Messages.CommitDialog_NoFileSelected);
                                                }
                                            }
                                        }
                                        removeDraggedFilesFromSource(unstagedTable, copy);
                                    }
                                });
                            }
                        });
                    }
                };
                manager.add(ci);
                // Other plug-ins can contribute there actions here
                manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
            }
        });
        Menu menu = menuMgr.createContextMenu(table);
        table.setMenu(menu);
    }

    return table;
}

From source file:com.genuitec.eclipse.gerrit.tools.internal.gps.commands.QuickGpsImportCommandsProvider.java

License:Open Source License

@Override
protected IContributionItem[] getContributionItems() {
    File[] files = GpsQuickImportFiles.getGpsFiles();
    if (files.length == 0) {
        return new IContributionItem[] { new ContributionItem() {
            @Override/*from  w w  w . ja  v  a2 s .  c  o  m*/
            public void fill(Menu menu, int index) {
                MenuItem item = new MenuItem(menu, 0);
                item.setText("No files available");
            }
        } };
    }

    IContributionItem[] result = new IContributionItem[files.length];
    for (int i = 0; i < result.length; i++) {
        CommandContributionItemParameter parameter = new CommandContributionItemParameter(serviceLocator,
                "com.genuitec.eclipse.gerrit.tools.quickImportProjects." + i, //$NON-NLS-1$
                "com.genuitec.eclipse.gerrit.tools.importProjects", SWT.PUSH); //$NON-NLS-1$
        parameter.parameters = Collections.singletonMap("file", files[i].toString()); //$NON-NLS-1$
        parameter.label = files[i].getName();
        result[i] = new CommandContributionItem(parameter);
    }
    return result;
}

From source file:com.google.gdt.eclipse.core.browser.BrowserMenuPopulator.java

License:Open Source License

public void populate(final IProject project, IMenuManager menu, final String url) {
    this.project = project;

    menu.add(new Action("&Open") {
        @Override/*from  www .j a  v  a2s.c  o m*/
        public void run() {
            openBrowser(getDefaultBrowserName(), url);
        }
    });

    // Open With:
    MenuManager openWithMenuManager = new MenuManager("Open wit&h");
    openWithMenuManager.add(new ContributionItem() {
        @Override
        public void fill(Menu menu, int index) {
            Menu openWithMenu = menu;
            for (final String browserName : BrowserUtilities.getBrowserNames()) {
                final MenuItem item = new MenuItem(openWithMenu, SWT.RADIO);
                // Add a keyboard accelerator
                item.setText("&" + browserName);
                item.setSelection(JavaUtilities.equalsWithNullCheck(browserName, getDefaultBrowserName()));
                item.addListener(SWT.Selection, new Listener() {
                    @Override
                    public void handleEvent(Event event) {
                        // The previously selected item will get a callback too, hence the selection check
                        if (item.getSelection()) {
                            openBrowser(browserName, url);
                            defaultProvider.setDefaultBrowserName(browserName);
                        }
                    }
                });
            }

            new MenuItem(openWithMenu, SWT.SEPARATOR);

            MenuItem configureItem = new MenuItem(openWithMenu, SWT.NONE);
            configureItem.setText("&Add a Browser");
            configureItem.addListener(SWT.Selection, new Listener() {
                @Override
                public void handleEvent(Event event) {
                    AddBrowserDialog addBrowserDialog = new AddBrowserDialog(SWTUtilities.getShell());
                    if (addBrowserDialog.open() == Window.OK) {
                        String browserName = addBrowserDialog.getBrowserName();
                        openBrowser(browserName, url);
                        defaultProvider.setDefaultBrowserName(browserName);
                    }
                }
            });
        }
    });

    menu.add(openWithMenuManager);

    // Registered launchers will be added to the menu
    addExtensionDebugLauncherMenus(menu, url);
}

From source file:com.rcpcompany.uibindings.navigator.internal.handlers.OpenWithContributionFactory.java

License:Open Source License

@Override
public void createContributionItems(IServiceLocator serviceLocator, IContributionRoot additions) {
    final ISelectionService ss = (ISelectionService) serviceLocator.getService(ISelectionService.class);

    final List<EObject> list = SelectionUtils.computeSelection(ss.getSelection(), EObject.class);

    /*/*from  w  w w .j a va2  s  .co m*/
     * Only know how to handle one item
     */
    if (list.size() != 1)
        return;
    final EObject obj = list.get(0);

    final IEditorInformation mt = INavigatorManager.Factory.getManager().getEditorInformation(obj.getClass());
    if (mt == null)
        return;
    final List<IEditorPartDescriptor> editors = mt.getEnabledEditors();

    /*
     * Less than two editors... no need for an open with menu... Ignore.
     */
    if (editors.size() < 2)
        return;

    /*
     * Create contributions items for all the editors based on the name and image
     */
    for (final IEditorPartDescriptor d : editors) {
        final IContributionItem item = new ContributionItem() {
            @Override
            public void fill(Menu menu, int index) {
                final MenuItem mi = new MenuItem(menu, SWT.NONE);
                mi.setText(d.getName());
                final CEResourceHolder image = d.getImage();
                if (image != null) {
                    mi.setImage(image.getImage());
                }

                mi.addSelectionListener(new SelectionAdapter() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        mt.setPreferredEditor(d);
                        INavigatorManager.Factory.getManager().openView(obj, false);
                    }
                });
            }
        };
        additions.addContributionItem(item, null);
    }
}

From source file:de.bodden.tamiflex.views.ReflectionView.java

License:Open Source License

private void fillContextMenu(IMenuManager manager) {
    manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
    manager.add(new ContributionItem() {
        @Override/*from w  ww  . j ava 2  s. c o m*/
        public void fill(Menu menu, int index) {
            super.fill(menu, index);
            MenuItem menuItem = new MenuItem(menu, 0);
            menuItem.setText("Remove log from view");
            menuItem.addSelectionListener(new SelectionListener() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    TreeItem[] selection = viewer.getTree().getSelection();
                    if (selection.length == 1) {
                        TreeItem treeItem = selection[0];
                        TreeObject node = (TreeObject) treeItem.getData();
                        if (node.getKind() == Kind.ONLINEMONITOR) {
                            contentProvider.removeRoot(node);
                        } else if (node.getKind() == Kind.TRACEFILE) {
                            TraceFileNode tfn = (TraceFileNode) node;
                            traceFiles.remove(tfn.getAbsolutePath());
                            contentProvider.removeRoot(node);
                        }
                    }
                }

                @Override
                public void widgetDefaultSelected(SelectionEvent e) {
                }
            });
        }
    });
}

From source file:descent.internal.ui.actions.MultiActionGroup.java

License:Open Source License

/**
 * Adds the actions to the given menu manager.
 *//*from w  w  w  .j  a  v a 2s . c o  m*/
protected void addActions(IMenuManager viewMenu) {

    viewMenu.add(new Separator());
    fItems = new MenuItem[fActions.length];

    for (int i = 0; i < fActions.length; i++) {
        final int j = i;

        viewMenu.add(new ContributionItem() {

            public void fill(Menu menu, int index) {

                int style = SWT.CHECK;
                if ((fActions[j].getStyle() & IAction.AS_RADIO_BUTTON) != 0)
                    style = SWT.RADIO;

                MenuItem mi = new MenuItem(menu, style, index);
                ImageDescriptor d = fActions[j].getImageDescriptor();
                mi.setImage(JavaPlugin.getImageDescriptorRegistry().get(d));
                fItems[j] = mi;
                mi.setText(fActions[j].getText());
                mi.setSelection(fCurrentSelection == j);
                mi.addSelectionListener(new SelectionAdapter() {

                    public void widgetSelected(SelectionEvent e) {
                        if (fCurrentSelection == j) {
                            fItems[fCurrentSelection].setSelection(true);
                            return;
                        }
                        fActions[j].run();

                        // Update checked state
                        fItems[fCurrentSelection].setSelection(false);
                        fCurrentSelection = j;
                        fItems[fCurrentSelection].setSelection(true);
                    }

                });
            }

            public boolean isDynamic() {
                return false;
            }
        });
    }
}

From source file:eu.numberfour.n4js.ui.navigator.internal.SelectTopLevelElementActionGroup.java

License:Open Source License

private void addActions(final IMenuManager menuManager) {
    menuManager.add(new Separator());

    // Projects menu item
    menuManager.add(new ContributionItem() {

        @Override/*  w w  w  .jav  a 2s.  c o  m*/
        public void fill(final Menu menu, final int index) {

            projectsItem = new MenuItem(menu, SWT.CHECK);
            projectsItem.setText("Projects");
            projectsItem.addSelectionListener(new SelectionAdapter() {

                @Override
                public void widgetSelected(final SelectionEvent e) {
                    projectsItem.setSelection(true);
                    workingSetsItem.setSelection(false);
                    workingSetManagerBroker.setWorkingSetTopLevel(false);
                }

            });

            if (!workingSetManagerBroker.isWorkingSetTopLevel()) {
                projectsItem.setSelection(true);
            }
        }
    });

    menuManager.add(new ContributionItem() {

        @Override
        public void fill(final Menu menu, final int index) {

            workingSetsItem = new MenuItem(menu, SWT.CHECK);
            workingSetsItem.setText("Working Sets");
            workingSetsItem.addSelectionListener(new SelectionAdapter() {

                @Override
                public void widgetSelected(final SelectionEvent e) {
                    workingSetsItem.setSelection(true);
                    projectsItem.setSelection(false);
                    workingSetManagerBroker.setWorkingSetTopLevel(true);
                }

            });

            if (workingSetManagerBroker.isWorkingSetTopLevel()) {
                workingSetsItem.setSelection(true);
            }
        }
    });

}

From source file:ext.org.eclipse.jdt.internal.ui.actions.MultiActionGroup.java

License:Open Source License

/**
 * Adds the actions to the given menu manager.
 *//*  w w w .ja v  a2  s  .c  o m*/
protected void addActions(IMenuManager viewMenu) {

    viewMenu.add(new Separator());
    fItems = new MenuItem[fActions.length];

    for (int i = 0; i < fActions.length; i++) {
        final int j = i;

        viewMenu.add(new ContributionItem() {

            @Override
            public void fill(Menu menu, int index) {

                int style = SWT.CHECK;
                if ((fActions[j].getStyle() & IAction.AS_RADIO_BUTTON) != 0)
                    style = SWT.RADIO;

                MenuItem mi = new MenuItem(menu, style, index);
                ImageDescriptor d = fActions[j].getImageDescriptor();
                mi.setImage(JavaPlugin.getImageDescriptorRegistry().get(d));
                fItems[j] = mi;
                mi.setText(fActions[j].getText());
                mi.setSelection(fCurrentSelection == j);
                mi.addSelectionListener(new SelectionAdapter() {

                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        if (fCurrentSelection == j) {
                            fItems[fCurrentSelection].setSelection(true);
                            return;
                        }
                        fActions[j].run();

                        // Update checked state
                        fItems[fCurrentSelection].setSelection(false);
                        fCurrentSelection = j;
                        fItems[fCurrentSelection].setSelection(true);
                    }

                });
            }

            @Override
            public boolean isDynamic() {
                return false;
            }
        });
    }
}

From source file:gov.nasa.ensemble.common.ui.detail.view.DetailPage.java

License:Open Source License

private void createActions() {
    IActionBars bars = getSite().getActionBars();
    ContributionItem item = new ContributionItem() {

        @Override/*from w w w.  j ava2s  . co m*/
        public void fill(Menu menu, int index) {
            Collection<String> disabledFilterFlags = DetailUtils.getDisabledFilterFlags();
            Collection<String> availableFilterFlags = DetailUtils.getAvailableFilterFlags();
            for (final String filterFlag : availableFilterFlags) {
                final MenuItem item = new MenuItem(menu, SWT.CHECK);
                item.setText("Hide " + filterFlag + " parameters");
                item.setSelection(!disabledFilterFlags.contains(filterFlag));

                Listener listener = new Listener() {
                    @Override
                    public void handleEvent(Event event) {
                        switch (event.type) {
                        case SWT.Selection:
                            if (item.getSelection()) {
                                DetailUtils.removeDisabledFilterFlags(filterFlag);
                            } else {
                                DetailUtils.addDisabledFilterFlags(filterFlag);
                            }
                            break;
                        }
                    }
                };
                item.addListener(SWT.Selection, listener);
            }
        }

        @Override
        public boolean isDynamic() {
            return true;
        }

    };
    bars.getMenuManager().add(item);
}