Example usage for org.eclipse.jface.viewers ViewerComparator ViewerComparator

List of usage examples for org.eclipse.jface.viewers ViewerComparator ViewerComparator

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers ViewerComparator ViewerComparator.

Prototype

public ViewerComparator() 

Source Link

Document

Creates a new ViewerComparator , which uses the default comparator to sort strings.

Usage

From source file:org.eclipse.linuxtools.tmf.ui.tests.statistics.TmfBaseColumnDataTest.java

License:Open Source License

private void init() {
    fHeader = "test Column1";
    fWidth = 300;//w ww . j a v  a2s.  c  om
    fAlignment = SWT.LEFT;
    fToolTip = "Tooltip " + fHeader;
    fLabelProvider = new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return ((TmfStatisticsTreeNode) element).getKey();
        }

        @Override
        public Image getImage(Object element) {
            return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
        }
    };
    fComparator = new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            TmfStatisticsTreeNode n1 = (TmfStatisticsTreeNode) e1;
            TmfStatisticsTreeNode n2 = (TmfStatisticsTreeNode) e2;

            return n1.getKey().compareTo(n2.getKey());
        }
    };
    fPercentageProvider = new ITmfColumnPercentageProvider() {
        @Override
        public double getPercentage(TmfStatisticsTreeNode node) {
            TmfStatisticsTreeNode parent = node;
            do {
                parent = parent.getParent();
            } while (parent != null && parent.getValue().nbEvents == 0);

            if (parent == null) {
                return 0;
            } else {
                return (double) node.getValue().nbEvents / parent.getValue().nbEvents;
            }
        }
    };

    TmfBaseStatisticsTree baseData = new TmfBaseStatisticsTree();
    fTraceName = "trace1";
    fTreeNode = new TmfStatisticsTreeNode(new TmfFixedArray<String>(fTraceName), baseData);

    fBaseColumnData = new TmfBaseColumnData(fHeader, fWidth, fAlignment, fToolTip, fLabelProvider, fComparator,
            fPercentageProvider);
}

From source file:org.eclipse.linuxtools.tmf.ui.views.statistics.model.TmfBaseColumnDataProvider.java

License:Open Source License

/**
 * Create basic columns to represent the statistics data
 *///from  w ww  . j a va 2s.  co  m
public TmfBaseColumnDataProvider() {
    // List that will be used to create the table.
    fColumnData = new Vector<TmfBaseColumnData>();
    fColumnData.add(
            new TmfBaseColumnData(LEVEL_COLUMN, 200, SWT.LEFT, LEVEL_COLUMN_TIP, new ColumnLabelProvider() {
                @Override
                public String getText(Object element) {
                    return ((TmfStatisticsTreeNode) element).getKey();
                }

                @Override
                public Image getImage(Object element) {
                    TmfStatisticsTreeNode node = (TmfStatisticsTreeNode) element;
                    if (fFolderLevels.contains(node.getKey())) {
                        return PlatformUI.getWorkbench().getSharedImages()
                                .getImage(ISharedImages.IMG_OBJ_FOLDER);
                    } else {
                        return PlatformUI.getWorkbench().getSharedImages()
                                .getImage(ISharedImages.IMG_OBJ_ELEMENT);
                    }
                }
            }, new ViewerComparator() {
                @Override
                public int compare(Viewer viewer, Object e1, Object e2) {
                    TmfStatisticsTreeNode n1 = (TmfStatisticsTreeNode) e1;
                    TmfStatisticsTreeNode n2 = (TmfStatisticsTreeNode) e2;

                    return n1.getKey().compareTo(n2.getKey());
                }
            }, null));

    fColumnData.add(new TmfBaseColumnData(EVENTS_COUNT_COLUMN, 125, SWT.LEFT, EVENTS_COUNT_COLUMN_TIP,
            new ColumnLabelProvider() {
                @Override
                public String getText(Object element) {
                    TmfStatisticsTreeNode node = (TmfStatisticsTreeNode) element;
                    if (!fFolderLevels.contains(node.getKey())) {
                        return Long.toString(node.getValue().nbEvents);
                    } else {
                        return ""; //$NON-NLS-1$
                    }
                }
            }, new ViewerComparator() {
                @Override
                public int compare(Viewer viewer, Object e1, Object e2) {
                    TmfStatisticsTreeNode n1 = (TmfStatisticsTreeNode) e1;
                    TmfStatisticsTreeNode n2 = (TmfStatisticsTreeNode) e2;

                    return (int) (n1.getValue().nbEvents - n2.getValue().nbEvents);
                }
            }, new ITmfColumnPercentageProvider() {

                @Override
                public double getPercentage(TmfStatisticsTreeNode node) {
                    TmfStatisticsTreeNode parent = node;
                    do {
                        parent = parent.getParent();
                    } while (parent != null && parent.getValue().nbEvents == 0);

                    if (parent == null) {
                        return 0;
                    } else {
                        return (double) node.getValue().nbEvents / parent.getValue().nbEvents;
                    }
                }
            }));
}

From source file:org.eclipse.linuxtools.tmf.ui.views.statistics.TmfStatisticsView.java

License:Open Source License

@Override
public void createPartControl(Composite parent) {
    final Vector<TmfBaseColumnData> columnDataList = getColumnDataProvider().getColumnData();
    parent.setLayout(new FillLayout());

    fTreeViewer = new TreeViewer(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    fTreeViewer.setContentProvider(new TmfTreeContentProvider());
    fTreeViewer.getTree().setHeaderVisible(true);
    fTreeViewer.setUseHashlookup(true);//  w ww.j  a v a 2s  . c  o m

    for (final TmfBaseColumnData columnData : columnDataList) {
        final TreeViewerColumn treeColumn = new TreeViewerColumn(fTreeViewer, columnData.getAlignment());
        treeColumn.getColumn().setText(columnData.getHeader());
        treeColumn.getColumn().setWidth(columnData.getWidth());
        treeColumn.getColumn().setToolTipText(columnData.getTooltip());

        if (columnData.getComparator() != null) {
            treeColumn.getColumn().addSelectionListener(new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    if (fTreeViewer.getTree().getSortDirection() == SWT.UP
                            || fTreeViewer.getTree().getSortColumn() != treeColumn.getColumn()) {
                        fTreeViewer.setComparator(columnData.getComparator());
                        fTreeViewer.getTree().setSortDirection(SWT.DOWN);
                    } else {
                        fTreeViewer.setComparator(new ViewerComparator() {
                            @Override
                            public int compare(Viewer viewer, Object e1, Object e2) {
                                return -1 * columnData.getComparator().compare(viewer, e1, e2);
                            }
                        });
                        fTreeViewer.getTree().setSortDirection(SWT.UP);
                    }
                    fTreeViewer.getTree().setSortColumn(treeColumn.getColumn());
                }
            });
        }
        treeColumn.setLabelProvider(columnData.getLabelProvider());
    }

    // Handler that will draw the bar charts.
    fTreeViewer.getTree().addListener(SWT.EraseItem, new Listener() {
        @Override
        public void handleEvent(Event event) {
            if (columnDataList.get(event.index).getPercentageProvider() != null) {
                TmfStatisticsTreeNode node = (TmfStatisticsTreeNode) event.item.getData();

                double percentage = columnDataList.get(event.index).getPercentageProvider().getPercentage(node);
                if (percentage == 0) {
                    return;
                }

                if ((event.detail & SWT.SELECTED) > 0) {
                    Color oldForeground = event.gc.getForeground();
                    event.gc.setForeground(event.item.getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION));
                    event.gc.fillRectangle(event.x, event.y, event.width, event.height);
                    event.gc.setForeground(oldForeground);
                    event.detail &= ~SWT.SELECTED;
                }

                int barWidth = (int) ((fTreeViewer.getTree().getColumn(1).getWidth() - 8) * percentage);
                int oldAlpha = event.gc.getAlpha();
                Color oldForeground = event.gc.getForeground();
                Color oldBackground = event.gc.getBackground();
                event.gc.setAlpha(64);
                event.gc.setForeground(event.item.getDisplay().getSystemColor(SWT.COLOR_BLUE));
                event.gc.setBackground(event.item.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
                event.gc.fillGradientRectangle(event.x, event.y, barWidth, event.height, true);
                event.gc.drawRectangle(event.x, event.y, barWidth, event.height);
                event.gc.setForeground(oldForeground);
                event.gc.setBackground(oldBackground);
                event.gc.setAlpha(oldAlpha);
                event.detail &= ~SWT.BACKGROUND;
            }
        }
    });

    fTreeViewer.setComparator(columnDataList.get(0).getComparator());
    fTreeViewer.getTree().setSortColumn(fTreeViewer.getTree().getColumn(0));
    fTreeViewer.getTree().setSortDirection(SWT.DOWN);

    // Read current data if any available
    TmfExperiment<?> experiment = TmfExperiment.getCurrentExperiment();
    if (experiment != null) {
        // Insert the statistics data into the tree
        @SuppressWarnings({ "rawtypes", "unchecked" })
        TmfExperimentSelectedSignal<?> signal = new TmfExperimentSelectedSignal(this, experiment);
        experimentSelected(signal);
    }
}

From source file:org.eclipse.ltk.internal.ui.refactoring.PreviewWizardPage.java

License:Open Source License

protected ViewerComparator createTreeComparator() {
    return new ViewerComparator() {
        public int compare(Viewer viewer, Object e1, Object e2) {
            PreviewNode node1 = (PreviewNode) e1;
            PreviewNode node2 = (PreviewNode) e2;
            if (node1.hasDerived()) {
                if (node2.hasDerived()) {
                    return 0;
                } else {
                    return +1;
                }//  w  w  w  .j av  a  2 s.  co  m
            } else {
                if (node2.hasDerived()) {
                    return -1;
                } else {
                    return 0;
                }
            }
        }
    };
}

From source file:org.eclipse.m2e.core.ui.internal.components.NestedProjectsComposite.java

License:Open Source License

public NestedProjectsComposite(Composite parent, int style, IProject[] initialSelection,
        boolean showOutOfDateWarning) {
    super(parent, style);
    this.showOutOfDateUI = showOutOfDateWarning;

    setLayout(new GridLayout(2, false));

    Label lblAvailable = new Label(this, SWT.NONE);
    lblAvailable.setText(Messages.UpdateDepenciesDialog_availableCodebasesLabel);
    lblAvailable.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1));

    codebaseViewer = new CheckboxTreeViewer(this, SWT.BORDER);
    codebaseViewer.setContentProvider(new ITreeContentProvider() {

        public void dispose() {
        }/*from www. j  av a 2 s  .  com*/

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        public Object[] getElements(Object element) {
            if (element instanceof Collection) {
                return ((Collection<?>) element).toArray();
            }
            return null;
        }

        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof IProject) {
                String elePath = getElePath(parentElement);
                String prevPath = null;
                List<IProject> children = new ArrayList<IProject>();
                for (String path : projectPaths.keySet()) {
                    if (path.length() != elePath.length() && path.startsWith(elePath)) {
                        if (prevPath == null || !path.startsWith(prevPath)) {
                            prevPath = path;
                            children.add(getProject(path));
                        }
                    }
                }
                return children.toArray();
            } else if (parentElement instanceof Collection) {
                return ((Collection<?>) parentElement).toArray();
            }
            return null;
        }

        public Object getParent(Object element) {
            String elePath = getElePath(element);
            String prevPath = null;
            for (String path : projectPaths.keySet()) {
                if (elePath.length() != path.length() && elePath.startsWith(path)
                        && (prevPath == null || prevPath.length() < path.length())) {
                    prevPath = path;
                }
            }
            return prevPath == null ? projects : getProject(prevPath);
        }

        public boolean hasChildren(Object element) {
            if (element instanceof IProject) {
                String elePath = getElePath(element);
                for (String path : projectPaths.keySet()) {
                    if (elePath.length() != path.length() && path.startsWith(elePath)) {
                        return true;
                    }
                }
            } else if (element instanceof Collection) {
                return !((Collection<?>) element).isEmpty();
            }
            return false;
        }
    });
    codebaseViewer.setLabelProvider(new MavenProjectLabelProvider() {
        public Image getImage(Object element) {
            Image img = super.getImage(element);
            if (showOutOfDateUI && requiresUpdate((IProject) element)) {
                img = MavenImages.createOverlayImage(MavenImages.OOD_MVN_PROJECT, img,
                        MavenImages.OUT_OF_DATE_OVERLAY, IDecoration.BOTTOM_RIGHT);
            }
            return img;
        }
    });
    codebaseViewer.setComparator(new ViewerComparator());

    projects = getMavenCodebases();

    // prevent flicker
    codebaseViewer.getTree().setRedraw(false);
    try {
        codebaseViewer.setInput(projects);
        codebaseViewer.expandAll();
        if (initialSelection != null) { // windowbuilder compat
            for (IProject project : initialSelection) {
                setSubtreeChecked(project, true);
            }

            // Reveal the first element
            if (initialSelection.length > 0) {
                codebaseViewer.reveal(initialSelection[0]);
            }
        }
    } finally {
        codebaseViewer.getTree().setRedraw(true);
    }

    Tree tree = codebaseViewer.getTree();
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
    gd.heightHint = 300;
    gd.widthHint = 300;
    tree.setLayoutData(gd);

    GridLayout layout = new GridLayout(2, false);
    layout.marginLeft = 10;

    Composite selectionActionComposite = new Composite(this, SWT.NONE);
    selectionActionComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
    GridLayout gl_selectionActionComposite = new GridLayout(1, false);
    gl_selectionActionComposite.marginWidth = 0;
    gl_selectionActionComposite.marginHeight = 0;
    selectionActionComposite.setLayout(gl_selectionActionComposite);

    createButtons(selectionActionComposite);

    createOutOfDateProjectsWarning(parent);

    createMenu();

    codebaseViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateSelectedProjects();
        }
    });

    updateSelectedProjects();
}

From source file:org.eclipse.m2e.core.ui.internal.components.WorkingSetGroup.java

License:Open Source License

private void createControl(Composite container) {
    addToWorkingSetButton = new Button(container, SWT.CHECK);
    GridData gd_addToWorkingSetButton = new GridData(SWT.LEFT, SWT.CENTER, false, false, 3, 1);
    gd_addToWorkingSetButton.verticalIndent = 12;
    addToWorkingSetButton.setLayoutData(gd_addToWorkingSetButton);
    addToWorkingSetButton.setSelection(true);
    addToWorkingSetButton.setData("name", "addToWorkingSetButton"); //$NON-NLS-1$ //$NON-NLS-2$
    addToWorkingSetButton.setText(Messages.WorkingSetGroup_btnAddSet);
    addToWorkingSetButton.setSelection(false);

    final Label workingsetLabel = new Label(container, SWT.NONE);
    GridData gd_workingsetLabel = new GridData();
    gd_workingsetLabel.horizontalIndent = 10;
    workingsetLabel.setLayoutData(gd_workingsetLabel);
    workingsetLabel.setEnabled(false);/* w  w w.  j a  va2  s.c  o  m*/
    workingsetLabel.setData("name", "workingsetLabel"); //$NON-NLS-1$ //$NON-NLS-2$
    workingsetLabel.setText(Messages.WorkingSetGroup_lblSet);

    Combo workingsetCombo = new Combo(container, SWT.READ_ONLY);
    workingsetCombo.setEnabled(false);
    workingsetCombo.setData("name", "workingsetCombo"); //$NON-NLS-1$ //$NON-NLS-2$
    workingsetCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    workingsetComboViewer = new ComboViewer(workingsetCombo);
    workingsetComboViewer.setContentProvider(new IStructuredContentProvider() {
        public Object[] getElements(Object input) {
            if (input instanceof IWorkingSet[]) {
                return (IWorkingSet[]) input;
            } else if (input instanceof List<?>) {
                return new Object[] { input };
            } else if (input instanceof Set<?>) {
                return ((Set<?>) input).toArray();
            }
            return new IWorkingSet[0];
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        public void dispose() {
        }
    });
    workingsetComboViewer.setLabelProvider(new LabelProvider() {
        private ResourceManager images = new LocalResourceManager(JFaceResources.getResources());

        @SuppressWarnings("deprecation")
        public Image getImage(Object element) {
            if (element instanceof IWorkingSet) {
                ImageDescriptor imageDescriptor = ((IWorkingSet) element).getImage();
                if (imageDescriptor != null) {
                    try {
                        return (Image) images.create(imageDescriptor);
                    } catch (DeviceResourceException ex) {
                        return null;
                    }
                }
            }
            return super.getImage(element);
        }

        public String getText(Object element) {
            if (element instanceof IWorkingSet) {
                return ((IWorkingSet) element).getLabel();
            } else if (element instanceof List<?>) {
                StringBuffer sb = new StringBuffer();
                for (Object o : (List<?>) element) {
                    if (o instanceof IWorkingSet) {
                        if (sb.length() > 0) {
                            sb.append(", "); //$NON-NLS-1$
                        }
                        sb.append(((IWorkingSet) o).getLabel());
                    }
                }
                return sb.toString();
            }
            return super.getText(element);
        }

        public void dispose() {
            images.dispose();
            super.dispose();
        }
    });

    workingsetComboViewer.setComparator(new ViewerComparator());

    final Button newWorkingSetButton = new Button(container, SWT.NONE);
    newWorkingSetButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
    newWorkingSetButton.setData("name", "configureButton"); //$NON-NLS-1$ //$NON-NLS-2$
    newWorkingSetButton.setText(Messages.WorkingSetGroup_btnMore);
    newWorkingSetButton.setEnabled(false);
    newWorkingSetButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(final SelectionEvent e) {
            IWorkingSetManager workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager();
            IWorkingSetSelectionDialog dialog = workingSetManager.createWorkingSetSelectionDialog(shell, true,
                    WORKING_SET_IDS.toArray(new String[0]));
            if (dialog.open() == Window.OK) {
                IWorkingSet[] workingSets = dialog.getSelection();
                selectWorkingSets(Arrays.asList(workingSets));
            }
        }
    });

    if (selectWorkingSets(workingSets)) {
        addToWorkingSetButton.setSelection(true);
        workingsetLabel.setEnabled(true);
        workingsetComboViewer.getCombo().setEnabled(true);
        newWorkingSetButton.setEnabled(true);
    }

    addToWorkingSetButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            boolean addToWorkingingSet = addToWorkingSetButton.getSelection();
            workingsetLabel.setEnabled(addToWorkingingSet);
            workingsetComboViewer.getCombo().setEnabled(addToWorkingingSet);
            newWorkingSetButton.setEnabled(addToWorkingingSet);
            if (addToWorkingingSet) {
                updateConfiguration();
            } else {
                workingSets.clear();
            }
        }
    });

    workingsetComboViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateConfiguration();
        }
    });
}

From source file:org.eclipse.m2e.core.ui.internal.wizards.LifecycleMappingPage.java

License:Open Source License

/**
 * Create contents of the wizard./*from w w w . ja  v  a 2  s .c  om*/
 * 
 * @param parent
 */
public void createControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NULL);

    setControl(container);
    container.setLayout(new GridLayout(1, false));

    treeViewer = new TreeViewer(container, SWT.BORDER | SWT.FULL_SELECTION);

    Tree tree = treeViewer.getTree();
    tree.setLinesVisible(true);
    tree.setHeaderVisible(true);
    tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE);
    TreeColumn trclmnNewColumn = treeViewerColumn.getColumn();
    trclmnNewColumn.setText(Messages.LifecycleMappingPage_mavenBuildColumnTitle);

    TreeViewerColumn columnViewerAction = new TreeViewerColumn(treeViewer, SWT.NONE);
    TreeColumn columnAction = columnViewerAction.getColumn();
    columnAction.setText(Messages.LifecycleMappingPage_actionColumnTitle);
    columnViewerAction.setEditingSupport(new EditingSupport(treeViewer) {

        @Override
        protected void setValue(Object element, Object value) {
            if (element instanceof ILifecycleMappingLabelProvider) {
                ILifecycleMappingLabelProvider prov = (ILifecycleMappingLabelProvider) element;
                int intVal = ((Integer) value).intValue();
                List<IMavenDiscoveryProposal> all = mappingConfiguration.getProposals(prov.getKey());

                if (ignore.contains(element)) {
                    ignore.remove(element);
                } else if (ignoreAtDefinition.contains(element)) {
                    ignoreAtDefinition.remove(element);
                } else if (intVal == all.size() + NO_ACTION_IDX || shouldDeslectProposal(prov)) {
                    IMavenDiscoveryProposal prop = mappingConfiguration.getSelectedProposal(prov.getKey());
                    mappingConfiguration.removeSelectedProposal(prop);
                }

                // Set new selection
                if (intVal < all.size()) {
                    IMavenDiscoveryProposal sel = all.get(intVal);
                    if (sel != null) {
                        mappingConfiguration.addSelectedProposal(sel);
                    }
                } else {
                    switch (intVal - all.size()) {
                    case IGNORE_IDX:
                        ignore.add(prov);
                        break;
                    case IGNORE_PARENT_IDX:
                        ignoreAtDefinition.add(prov);
                    }
                }
                getViewer().refresh(true);
                updateErrorCount();
            }
        }

        @Override
        protected Object getValue(Object element) {
            if (element instanceof ILifecycleMappingLabelProvider) {
                ILifecycleMappingLabelProvider prov = (ILifecycleMappingLabelProvider) element;
                IMavenDiscoveryProposal prop = mappingConfiguration.getSelectedProposal(prov.getKey());
                List<IMavenDiscoveryProposal> all = mappingConfiguration.getProposals(prov.getKey());
                if (ignore.contains(element)) {
                    return Integer.valueOf(all.size() + IGNORE_IDX);
                } else if (ignoreAtDefinition.contains(element)) {
                    return Integer.valueOf(all.size() + IGNORE_PARENT_IDX);
                } else {
                    int index = all.indexOf(prop);
                    return index >= 0 ? Integer.valueOf(index) : Integer.valueOf(all.size() + NO_ACTION_IDX);
                }
            }
            return Integer.valueOf(0);
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            if (element instanceof ILifecycleMappingLabelProvider) {
                ILifecycleMappingLabelProvider prov = (ILifecycleMappingLabelProvider) element;
                List<IMavenDiscoveryProposal> all = mappingConfiguration.getProposals(prov.getKey());
                List<String> values = new ArrayList<String>();
                for (IMavenDiscoveryProposal prop : all) {
                    values.add(NLS.bind(Messages.LifecycleMappingPage_installDescription, prop.toString()));
                }
                if (prov.isError(mappingConfiguration)) {
                    values.add(Messages.LifecycleMappingPage_resolveLaterDescription);
                } else {
                    values.add(EMPTY_STRING);
                }
                addIgnoreProposals(values, prov);
                ComboBoxCellEditor edit = new ComboBoxCellEditor(treeViewer.getTree(),
                        values.toArray(new String[values.size()]));
                Control cont = edit.getControl();
                //this attempts to disable text edits in the combo..
                if (cont instanceof CCombo) {
                    CCombo combo = (CCombo) cont;
                    combo.setEditable(false);
                }
                return edit;
            }
            throw new IllegalStateException();
        }

        @Override
        protected boolean canEdit(Object element) {
            if (element instanceof AggregateMappingLabelProvider) {
                ILifecycleMappingLabelProvider prov = (ILifecycleMappingLabelProvider) element;
                List<IMavenDiscoveryProposal> all = mappingConfiguration.getProposals(prov.getKey());
                return all != null && !all.isEmpty()
                        || prov.getKey() instanceof MojoExecutionMappingRequirement;
            }
            return false;
        }
    });

    treeViewer.setContentProvider(new ITreeContentProvider() {

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof LifecycleMappingConfiguration) {
                Map<ILifecycleMappingRequirement, List<ILifecycleMappingLabelProvider>> packagings = new HashMap<ILifecycleMappingRequirement, List<ILifecycleMappingLabelProvider>>();
                Map<ILifecycleMappingRequirement, List<ILifecycleMappingLabelProvider>> mojos = new HashMap<ILifecycleMappingRequirement, List<ILifecycleMappingLabelProvider>>();
                Collection<ProjectLifecycleMappingConfiguration> projects = ((LifecycleMappingConfiguration) inputElement)
                        .getProjects();
                for (ProjectLifecycleMappingConfiguration prjconf : projects) {
                    PackagingTypeMappingConfiguration pack = prjconf.getPackagingTypeMappingConfiguration();
                    if (pack != null) {
                        ILifecycleMappingRequirement packReq = pack.getLifecycleMappingRequirement();
                        if (packReq != null && !mappingConfiguration.getProposals(packReq).isEmpty()) {
                            List<ILifecycleMappingLabelProvider> val = packagings.get(packReq);
                            if (val == null) {
                                val = new ArrayList<ILifecycleMappingLabelProvider>();
                                packagings.put(packReq, val);
                            }
                            val.add(new PackagingTypeMappingLabelProvider(prjconf, pack));
                        }
                    }
                    List<MojoExecutionMappingConfiguration> mojoExecs = prjconf
                            .getMojoExecutionConfigurations();
                    if (mojoExecs != null) {
                        for (MojoExecutionMappingConfiguration mojoMap : mojoExecs) {
                            ILifecycleMappingRequirement mojoReq = mojoMap.getLifecycleMappingRequirement();
                            // include mojo execution if it has available proposals or interesting phase not mapped locally
                            if (mojoReq != null && !mappingConfiguration.getProposals(mojoReq).isEmpty()
                                    || (LifecycleMappingFactory
                                            .isInterestingPhase(mojoMap.getExecution().getLifecyclePhase())
                                            && !mappingConfiguration.isRequirementSatisfied(mojoReq, true))) {
                                List<ILifecycleMappingLabelProvider> val = mojos.get(mojoReq);
                                if (val == null) {
                                    val = new ArrayList<ILifecycleMappingLabelProvider>();
                                    mojos.put(mojoReq, val);
                                }
                                val.add(new MojoExecutionMappingLabelProvider(prjconf, mojoMap));
                            }
                        }
                    }
                }
                List<ILifecycleMappingLabelProvider> toRet = new ArrayList<ILifecycleMappingLabelProvider>();
                for (Map.Entry<ILifecycleMappingRequirement, List<ILifecycleMappingLabelProvider>> ent : packagings
                        .entrySet()) {
                    toRet.add(new AggregateMappingLabelProvider(ent.getKey(), ent.getValue()));
                }
                for (Map.Entry<ILifecycleMappingRequirement, List<ILifecycleMappingLabelProvider>> ent : mojos
                        .entrySet()) {
                    toRet.add(new AggregateMappingLabelProvider(ent.getKey(), ent.getValue()));
                }
                return toRet.toArray();
            }
            return null;
        }

        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof AggregateMappingLabelProvider) {
                return ((AggregateMappingLabelProvider) parentElement).getChildren();
            }
            return new Object[0];
        }

        public Object getParent(Object element) {
            return null;
        }

        public boolean hasChildren(Object element) {
            Object[] children = getChildren(element);
            return children != null && children.length > 0;
        }

    });
    treeViewer.setLabelProvider(new ITableLabelProvider() {

        public void removeListener(ILabelProviderListener listener) {
        }

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        public void dispose() {
        }

        public void addListener(ILabelProviderListener listener) {
        }

        public String getColumnText(Object element, int columnIndex) {
            if (element instanceof ILifecycleMappingLabelProvider) {
                ILifecycleMappingLabelProvider prov = (ILifecycleMappingLabelProvider) element;
                if (columnIndex == MAVEN_INFO_IDX) {
                    String text = prov.getMavenText();
                    if (prov instanceof AggregateMappingLabelProvider && !isHandled(prov)) {
                        text = NLS.bind(Messages.LifecycleMappingPage_errorMavenBuild, new String[] { text,
                                String.valueOf(((AggregateMappingLabelProvider) prov).getChildren().length) });
                    }
                    return text;
                } else if (columnIndex == ACTION_INFO_IDX && element instanceof AggregateMappingLabelProvider) {
                    IMavenDiscoveryProposal proposal = mappingConfiguration.getSelectedProposal(prov.getKey());
                    if (ignore.contains(element)) {
                        return Messages.LifecycleMappingPage_doNotExecutePom;
                    } else if (ignoreAtDefinition.contains(element)) {
                        return Messages.LifecycleMappingPage_doNotExecuteParent;
                    } else if (proposal != null) {
                        return NLS.bind(Messages.LifecycleMappingPage_installDescription, proposal.toString()); //not really feeling well here. 
                    } else if (loading || !prov.isError(mappingConfiguration)) {
                        return EMPTY_STRING;
                    } else {
                        return Messages.LifecycleMappingPage_resolveLaterDescription;
                    }
                }
            }
            return null;
        }

        public Image getColumnImage(Object element, int columnIndex) {
            if (columnIndex != 0) {
                return null;
            }
            if (element instanceof AggregateMappingLabelProvider) {
                ILifecycleMappingLabelProvider prov = (ILifecycleMappingLabelProvider) element;
                if (prov.isError(mappingConfiguration)) {
                    if (!isHandled(prov)) {
                        return MavenImages.IMG_ERROR;
                    }
                }
                return MavenImages.IMG_PASSED;
            }
            return MavenImages.IMG_POM;
        }
    });

    treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {
            if (event.getSelection() instanceof IStructuredSelection
                    && ((IStructuredSelection) event.getSelection()).size() == 1) {
                ILifecycleMappingLabelProvider prov = (ILifecycleMappingLabelProvider) ((IStructuredSelection) event
                        .getSelection()).getFirstElement();
                if (ignore.contains(prov)) {
                    details.setText(Messages.LifecycleMappingPage_doNotExecutePomDescription);
                    license.setText(EMPTY_STRING);
                } else if (ignoreAtDefinition.contains(prov)) {
                    details.setText(Messages.LifecycleMappingPage_doNotExecuteParentDescription);
                    license.setText(EMPTY_STRING);
                } else {
                    IMavenDiscoveryProposal proposal = mappingConfiguration.getSelectedProposal(prov.getKey());
                    details.setText(proposal != null ? proposal.getDescription()
                            : mappingConfiguration.getProposals(prov.getKey()).isEmpty()
                                    ? NLS.bind(Messages.LifecycleMappingPage_noMarketplaceEntryDescription,
                                            prov.getMavenText())
                                    : EMPTY_STRING);
                    license.setText(proposal == null ? EMPTY_STRING : proposal.getLicense());
                }
            } else {
                details.setText(EMPTY_STRING);
                license.setText(EMPTY_STRING);
            }
        }
    });

    treeViewer.setComparator(new ViewerComparator() {
        public int compare(Viewer viewer, Object e1, Object e2) {
            if (!(e1 instanceof ILifecycleMappingLabelProvider
                    && e2 instanceof ILifecycleMappingLabelProvider)) {
                return super.compare(viewer, e1, e2);
            }
            int cat1 = category(e1);
            int cat2 = category(e2);

            if (cat1 != cat2) {
                return cat1 - cat2;
            }
            return ((ILifecycleMappingLabelProvider) e1).getMavenText()
                    .compareTo(((ILifecycleMappingLabelProvider) e2).getMavenText());
        }
    });

    Composite composite = new Composite(container, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    composite.setLayout(new GridLayout(3, false));

    errorCountLabel = new Label(composite, SWT.NONE);
    errorCountLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

    Button btnNewButton_1 = new Button(composite, SWT.NONE);
    btnNewButton_1.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            mappingConfiguration.clearSelectedProposals();
            ignore.clear();
            ignoreAtDefinition.clear();
            treeViewer.refresh();
            getWizard().getContainer().updateButtons(); // needed to enable/disable Finish button
            updateErrorCount();
        }
    });
    btnNewButton_1.setText(Messages.LifecycleMappingPage_deselectAllButton);

    autoSelectButton = new Button(composite, SWT.NONE);
    autoSelectButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            ignore.clear();
            ignoreAtDefinition.clear();
            discoverProposals();
        }
    });
    autoSelectButton.setText(Messages.LifecycleMappingPage_autoSelectButton);

    // Provide a reasonable height for the details box 
    GC gc = new GC(container);
    gc.setFont(JFaceResources.getDialogFont());
    FontMetrics fontMetrics = gc.getFontMetrics();
    gc.dispose();

    Group grpDetails = new Group(container, SWT.NONE);
    grpDetails.setLayout(new GridLayout(1, false));
    grpDetails.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    grpDetails.setText(Messages.LifecycleMappingPage_descriptionLabel);

    details = new Text(grpDetails, SWT.WRAP | SWT.READ_ONLY | SWT.V_SCROLL);
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    gd.heightHint = Dialog.convertHeightInCharsToPixels(fontMetrics, 3);
    gd.minimumHeight = Dialog.convertHeightInCharsToPixels(fontMetrics, 1);
    details.setLayoutData(gd);

    Group grpLicense = new Group(container, SWT.NONE);
    grpLicense.setLayout(new GridLayout(1, false));
    grpLicense.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    grpLicense.setText(Messages.LifecycleMappingPage_licenseLabel);

    license = new Text(grpLicense, SWT.READ_ONLY);
    gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    gd.heightHint = Dialog.convertHeightInCharsToPixels(fontMetrics, 1);
    gd.minimumHeight = Dialog.convertHeightInCharsToPixels(fontMetrics, 1);
    license.setLayoutData(gd);
}

From source file:org.eclipse.m2e.core.ui.internal.wizards.MavenProjectWizardArchetypePage.java

License:Open Source License

/** Creates the archetype table viewer. */
@SuppressWarnings({ "unchecked", "rawtypes" })
private void createViewer(Composite parent) {
    Label catalogsLabel = new Label(parent, SWT.NONE);
    catalogsLabel.setText(org.eclipse.m2e.core.ui.internal.Messages.MavenProjectWizardArchetypePage_lblCatalog);

    Composite catalogsComposite = new Composite(parent, SWT.NONE);
    GridLayout catalogsCompositeLayout = new GridLayout();
    catalogsCompositeLayout.marginWidth = 0;
    catalogsCompositeLayout.marginHeight = 0;
    catalogsCompositeLayout.numColumns = 2;
    catalogsComposite.setLayout(catalogsCompositeLayout);
    catalogsComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1));

    catalogsComboViewer = new ComboViewer(catalogsComposite);
    catalogsComboViewer.getControl().setData("name", "catalogsCombo"); //$NON-NLS-1$ //$NON-NLS-2$
    catalogsComboViewer.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    catalogsComboViewer.setContentProvider(new IStructuredContentProvider() {
        public Object[] getElements(Object input) {

            if (input instanceof Collection) {
                return ((Collection<?>) input).toArray();
            }//from   w  ww.ja  v a2  s .  co  m
            return new Object[0];
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        public void dispose() {
        }
    });

    catalogsComboViewer.setLabelProvider(new LabelProvider() {
        public String getText(Object element) {
            if (element instanceof ArchetypeCatalogFactory) {
                return ((ArchetypeCatalogFactory) element).getDescription();
            } else if (element instanceof String) {
                return element.toString();
            }
            return super.getText(element);
        }
    });

    catalogsComboViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            ISelection selection = event.getSelection();
            if (selection instanceof IStructuredSelection) {
                Object factory = ((IStructuredSelection) selection).getFirstElement();
                if (factory instanceof ArchetypeCatalogFactory) {
                    catalogFactory = (ArchetypeCatalogFactory) factory;
                } else if (factory instanceof String) {
                    catalogFactory = null;
                }
                reloadViewer();
            } else {
                catalogFactory = null;
                loadArchetypes(null, null, null);
            }
            //remember what was switched to here
            if (dialogSettings != null) {
                if (catalogFactory != null)
                    dialogSettings.put(KEY_CATALOG, catalogFactory.getId());
                else
                    dialogSettings.put(KEY_CATALOG, ALL_CATALOGS);
            }
        }
    });

    final ArchetypeManager archetypeManager = MavenPluginActivator.getDefault().getArchetypeManager();
    ArrayList allCatalogs = new ArrayList(archetypeManager.getArchetypeCatalogs());
    allCatalogs.add(0, ALL_CATALOGS);
    catalogsComboViewer.setInput(allCatalogs);

    Button configureButton = new Button(catalogsComposite, SWT.NONE);
    configureButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
    configureButton
            .setText(org.eclipse.m2e.core.ui.internal.Messages.MavenProjectWizardArchetypePage_btnConfigure);
    configureButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            PreferencesUtil
                    .createPreferenceDialogOn(getShell(),
                            "org.eclipse.m2e.core.preferences.MavenArchetypesPreferencePage", null, null) //$NON-NLS-1$
                    .open();

            if (catalogFactory == null
                    || archetypeManager.getArchetypeCatalogFactory(catalogFactory.getId()) == null) {
                catalogFactory = archetypeManager.getArchetypeCatalogFactory(NexusIndexerCatalogFactory.ID);
            }

            ArrayList allCatalogs = new ArrayList(archetypeManager.getArchetypeCatalogs());
            allCatalogs.add(0, ALL_CATALOGS);
            catalogsComboViewer.setInput(allCatalogs);
            catalogsComboViewer.setSelection(new StructuredSelection(catalogFactory));
        }
    });

    Label filterLabel = new Label(parent, SWT.NONE);
    filterLabel.setLayoutData(new GridData());
    filterLabel.setText(org.eclipse.m2e.core.ui.internal.Messages.MavenProjectWizardArchetypePage_lblFilter);

    QuickViewerFilter quickViewerFilter = new QuickViewerFilter();
    VersionsFilter versionFilter = new VersionsFilter(DEFAULT_SHOW_LAST_VERSION, DEFAULT_INCLUDE_SNAPSHOTS);

    filterText = new Text(parent, SWT.BORDER | SWT.SEARCH);
    filterText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    filterText.addModifyListener(quickViewerFilter);
    filterText.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.ARROW_DOWN) {
                viewer.getTable().setFocus();
                viewer.getTable().setSelection(0);

                viewer.setSelection(new StructuredSelection(viewer.getElementAt(0)), true);
            }
        }
    });

    ToolBar toolBar = new ToolBar(parent, SWT.FLAT);
    toolBar.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));

    final ToolItem clearToolItem = new ToolItem(toolBar, SWT.PUSH);
    clearToolItem.setEnabled(false);
    clearToolItem.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_ELCL_REMOVE));
    clearToolItem.setDisabledImage(
            PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_ELCL_REMOVE_DISABLED));
    clearToolItem.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            filterText.setText(""); //$NON-NLS-1$
        }
    });

    filterText.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            clearToolItem.setEnabled(filterText.getText().length() > 0);
        }
    });

    SashForm sashForm = new SashForm(parent, SWT.VERTICAL);
    GridData gd_sashForm = new GridData(SWT.FILL, SWT.FILL, false, true, 3, 1);
    // gd_sashForm.widthHint = 500;
    gd_sashForm.heightHint = 200;
    sashForm.setLayoutData(gd_sashForm);
    sashForm.setLayout(new GridLayout());

    Composite composite1 = new Composite(sashForm, SWT.NONE);
    GridLayout gridLayout1 = new GridLayout();
    gridLayout1.horizontalSpacing = 0;
    gridLayout1.marginWidth = 0;
    gridLayout1.marginHeight = 0;
    composite1.setLayout(gridLayout1);

    viewer = new TableViewer(composite1,
            SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
    Table table = viewer.getTable();
    table.setData("name", "archetypesTable"); //$NON-NLS-1$ //$NON-NLS-2$
    table.setHeaderVisible(true);

    TableColumn column1 = new TableColumn(table, SWT.LEFT);
    column1.setWidth(150);
    column1.setText(Messages.wizardProjectPageArchetypeColumnGroupId);

    TableColumn column0 = new TableColumn(table, SWT.LEFT);
    column0.setWidth(150);
    column0.setText(Messages.wizardProjectPageArchetypeColumnArtifactId);

    TableColumn column2 = new TableColumn(table, SWT.LEFT);
    column2.setWidth(100);
    column2.setText(Messages.wizardProjectPageArchetypeColumnVersion);

    GridData tableData = new GridData(SWT.FILL, SWT.FILL, true, true);
    tableData.widthHint = 400;
    tableData.heightHint = 200;
    table.setLayoutData(tableData);

    viewer.setLabelProvider(new ArchetypeLabelProvider());

    viewer.setComparator(new ViewerComparator() {
        public int compare(Viewer viewer, Object e1, Object e2) {
            return ARCHETYPE_COMPARATOR.compare((Archetype) e1, (Archetype) e2);
        }
    });

    viewer.setComparer(new IElementComparer() {
        public int hashCode(Object obj) {
            if (obj instanceof Archetype) {
                return ArchetypeUtil.getHashCode((Archetype) obj);
            }
            return obj.hashCode();
        }

        public boolean equals(Object one, Object another) {
            if (one instanceof Archetype && another instanceof Archetype) {
                return ArchetypeUtil.areEqual((Archetype) one, (Archetype) another);
            }
            return one.equals(another);
        }
    });

    viewer.setFilters(new ViewerFilter[] { versionFilter, quickViewerFilter });

    viewer.setContentProvider(new IStructuredContentProvider() {
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Collection) {
                return ((Collection<?>) inputElement).toArray();
            }
            return new Object[0];
        }

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
    });

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            Archetype archetype = getArchetype();
            if (archetype != null) {
                String repositoryUrl = archetype.getRepository();
                String description = archetype.getDescription();

                String text = description == null ? "" : description; //$NON-NLS-1$
                text = text.replaceAll("\n", "").replaceAll("\\s{2,}", " "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$

                if (repositoryUrl != null) {
                    text += text.length() > 0 ? "\n" + repositoryUrl : repositoryUrl; //$NON-NLS-1$
                }

                descriptionText.setText(text);
                setPageComplete(true);
            } else {
                descriptionText.setText(""); //$NON-NLS-1$
                setPageComplete(false);
            }
        }
    });

    viewer.addOpenListener(new IOpenListener() {
        public void open(OpenEvent openevent) {
            if (canFlipToNextPage()) {
                getContainer().showPage(getNextPage());
            }
        }
    });

    Composite composite2 = new Composite(sashForm, SWT.NONE);
    GridLayout gridLayout2 = new GridLayout();
    gridLayout2.marginHeight = 0;
    gridLayout2.marginWidth = 0;
    gridLayout2.horizontalSpacing = 0;
    composite2.setLayout(gridLayout2);

    descriptionText = new Text(composite2, SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY | SWT.MULTI | SWT.BORDER);

    GridData descriptionTextData = new GridData(SWT.FILL, SWT.FILL, true, true);
    descriptionTextData.heightHint = 40;
    descriptionText.setLayoutData(descriptionTextData);
    //whole dialog resizes badly without the width hint to the desc text
    descriptionTextData.widthHint = 250;
    sashForm.setWeights(new int[] { 80, 20 });

    Composite buttonComposite = new Composite(parent, SWT.NONE);
    GridData gd_buttonComposite = new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1);
    buttonComposite.setLayoutData(gd_buttonComposite);
    GridLayout gridLayout = new GridLayout();
    gridLayout.marginHeight = 0;
    gridLayout.marginWidth = 0;
    gridLayout.numColumns = 3;
    buttonComposite.setLayout(gridLayout);

    showLastVersionButton = new Button(buttonComposite, SWT.CHECK);
    showLastVersionButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));
    showLastVersionButton
            .setText(org.eclipse.m2e.core.ui.internal.Messages.MavenProjectWizardArchetypePage_btnLast);
    showLastVersionButton.setSelection(DEFAULT_SHOW_LAST_VERSION);
    showLastVersionButton.addSelectionListener(versionFilter);

    includeShapshotsButton = new Button(buttonComposite, SWT.CHECK);
    GridData buttonData = new GridData(SWT.LEFT, SWT.CENTER, true, false);
    buttonData.horizontalIndent = 25;
    includeShapshotsButton.setLayoutData(buttonData);
    includeShapshotsButton
            .setText(org.eclipse.m2e.core.ui.internal.Messages.MavenProjectWizardArchetypePage_btnSnapshots);
    includeShapshotsButton.setSelection(DEFAULT_INCLUDE_SNAPSHOTS);
    includeShapshotsButton.addSelectionListener(versionFilter);

    addArchetypeButton = new Button(buttonComposite, SWT.NONE);
    addArchetypeButton
            .setText(org.eclipse.m2e.core.ui.internal.Messages.MavenProjectWizardArchetypePage_btnAdd);
    addArchetypeButton.setData("name", "addArchetypeButton"); //$NON-NLS-1$ //$NON-NLS-2$
    buttonData = new GridData(SWT.RIGHT, SWT.CENTER, true, false);
    buttonData.horizontalIndent = 35;
    addArchetypeButton.setLayoutData(buttonData);

    addArchetypeButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            CustomArchetypeDialog dialog = new CustomArchetypeDialog(getShell(),
                    org.eclipse.m2e.core.ui.internal.Messages.MavenProjectWizardArchetypePage_add_title);
            if (dialog.open() == Window.OK) {
                String archetypeGroupId = dialog.getArchetypeGroupId();
                String archetypeArtifactId = dialog.getArchetypeArtifactId();
                String archetypeVersion = dialog.getArchetypeVersion();
                String repositoryUrl = dialog.getRepositoryUrl();
                downloadArchetype(archetypeGroupId, archetypeArtifactId, archetypeVersion, repositoryUrl);
            }
        }
    });
}

From source file:org.eclipse.m2e.editor.pom.DependencyTreePage.java

License:Open Source License

private void createHierarchyToolbar(Section hierarchySection,
        final DependencyTreeLabelProvider treeLabelProvider, FormToolkit formToolkit) {
    ToolBarManager hiearchyToolBarManager = new ToolBarManager(SWT.FLAT);

    hiearchyToolBarManager/* w w w .j a v  a  2s  . co m*/
            .add(new Action(Messages.DependencyTreePage_action_collapseAll, MavenEditorImages.COLLAPSE_ALL) {
                public void run() {
                    treeViewer.collapseAll();
                }
            });

    hiearchyToolBarManager
            .add(new Action(Messages.DependencyTreePage_action_expandAll, MavenEditorImages.EXPAND_ALL) {
                public void run() {
                    treeViewer.expandAll();
                }
            });

    hiearchyToolBarManager.add(new Separator());

    hiearchyToolBarManager.add(new Action(Messages.DependencyTreePage_action_sort, MavenEditorImages.SORT) {
        public int getStyle() {
            return AS_CHECK_BOX;
        }

        public void run() {
            if (treeViewer.getComparator() == null) {
                treeViewer.setComparator(new ViewerComparator());
            } else {
                treeViewer.setComparator(null);
            }
        }
    });

    hiearchyToolBarManager
            .add(new Action(Messages.DependencyTreePage_action_showGroupId, MavenEditorImages.SHOW_GROUP) {
                public int getStyle() {
                    return AS_CHECK_BOX;
                }

                public void run() {
                    treeLabelProvider.setShowGroupId(isChecked());
                    treeViewer.refresh();
                }
            });

    hierarchyFilterAction = new Action(Messages.DependencyTreePage_action_filterSearch,
            MavenEditorImages.FILTER) {
        public int getStyle() {
            return AS_CHECK_BOX;
        }

        public void run() {
            if (isChecked()) {
                setTreeFilter(currentFilter, true);
                //          treeViewer.setFilters(new ViewerFilter[] {searchFilter, listSelectionFilter});
            } else {
                treeViewer.removeFilter(searchFilter);
            }
            treeViewer.refresh();
            treeViewer.expandAll();
        }
    };
    hierarchyFilterAction.setChecked(true);
    hiearchyToolBarManager.add(hierarchyFilterAction);

    Composite toolbarComposite = formToolkit.createComposite(hierarchySection);
    toolbarComposite.setBackground(null);
    RowLayout rowLayout = new RowLayout();
    rowLayout.wrap = false;
    rowLayout.marginRight = 0;
    rowLayout.marginLeft = 0;
    rowLayout.marginTop = 0;
    rowLayout.marginBottom = 0;
    toolbarComposite.setLayout(rowLayout);

    hiearchyToolBarManager.createControl(toolbarComposite);
    hierarchySection.setTextClient(toolbarComposite);
}

From source file:org.eclipse.m2e.editor.pom.DependencyTreePage.java

License:Open Source License

private void createListSection(SashForm sashForm, FormToolkit formToolkit) {
    Composite listComposite = formToolkit.createComposite(sashForm, SWT.NONE);
    listComposite.setLayout(new GridLayout());

    Section listSection = formToolkit.createSection(listComposite, ExpandableComposite.TITLE_BAR);
    listSection.marginHeight = 1;/*from  w  w w . jav a  2 s.  c o  m*/
    GridData gd_listSection = new GridData(SWT.FILL, SWT.FILL, true, true);
    gd_listSection.widthHint = 100;
    gd_listSection.minimumWidth = 100;
    listSection.setLayoutData(gd_listSection);
    listSection.setText(Messages.DependencyTreePage_section_resolvedDeps);
    formToolkit.paintBordersFor(listSection);

    final DependencyListLabelProvider listLabelProvider = new DependencyListLabelProvider();

    Table table = formToolkit.createTable(listSection, SWT.FLAT | SWT.MULTI);
    listSection.setClient(table);

    // listViewer = new TableViewer(listSection, SWT.FLAT | SWT.MULTI);
    listViewer = new TableViewer(table);
    listViewer.setData(FormToolkit.KEY_DRAW_BORDER, Boolean.TRUE);
    listViewer.setContentProvider(new DependencyListContentProvider());
    listViewer.setLabelProvider(listLabelProvider);
    listViewer.setComparator(new ViewerComparator()); // by default is sorted

    listSelectionFilter = new ListSelectionFilter();
    listViewer.addSelectionChangedListener(listSelectionFilter);
    listViewer.getTable().addFocusListener(listSelectionFilter);

    listViewer.addOpenListener(new IOpenListener() {
        public void open(OpenEvent event) {
            IStructuredSelection selection = (IStructuredSelection) listViewer.getSelection();
            for (Iterator<?> it = selection.iterator(); it.hasNext();) {
                Object o = it.next();
                if (o instanceof Artifact) {
                    Artifact a = (Artifact) o;
                    OpenPomAction.openEditor(a.getGroupId(), a.getArtifactId(), a.getVersion(), null);
                }
            }
        }
    });

    createListToolbar(listSection, listLabelProvider, formToolkit);

}