Example usage for org.eclipse.jface.viewers ViewerCell setImage

List of usage examples for org.eclipse.jface.viewers ViewerCell setImage

Introduction

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

Prototype

public void setImage(Image image) 

Source Link

Document

Set the Image for the cell.

Usage

From source file:org.eclipse.cdt.internal.ui.search.CSearchListLabelProvider.java

License:Open Source License

@Override
public void update(ViewerCell cell) {
    Object element = cell.getElement();
    switch (fColumnIndex) {
    case CSearchViewPage.LOCATION_COLUMN_INDEX:
        if (element instanceof LineSearchElement) {
            LineSearchElement lineElement = (LineSearchElement) element;
            String location = IndexLocationFactory.getPath(lineElement.getLocation()).toString();
            int lineNumber = lineElement.getLineNumber();
            cell.setText(/*from   ww  w  .j  av  a 2  s . c o  m*/
                    Messages.format(CSearchMessages.CSearchResultCollector_location, location, lineNumber));
            cell.setImage(CDTSharedImages.getImage(CDTSharedImages.IMG_OBJS_SEARCH_LINE));
        }
        break;
    case CSearchViewPage.DEFINITION_COLUMN_INDEX:
        if (element instanceof LineSearchElement) {
            LineSearchElement lineElement = (LineSearchElement) element;
            ICElement enclosingElement = lineElement.getMatches()[0].getEnclosingElement();
            if (fPage.isShowEnclosingDefinitions() && enclosingElement != null) {
                cell.setText(enclosingElement.getElementName());
                cell.setImage(getImage(element));
            } else {
                cell.setText(""); //$NON-NLS-1$
            }
        }
        break;
    case CSearchViewPage.MATCH_COLUMN_INDEX:
        super.update(cell);
        cell.setImage(null);
        break;
    default:
        cell.setText(""); //$NON-NLS-1$
        break;
    }
}

From source file:org.eclipse.cdt.internal.ui.search.PDOMSearchListLabelProvider.java

License:Open Source License

@Override
public void update(ViewerCell cell) {
    Object element = cell.getElement();
    switch (fColumnIndex) {
    case PDOMSearchViewPage.LOCATION_COLUMN_INDEX:
        if (element instanceof LineSearchElement) {
            LineSearchElement lineElement = (LineSearchElement) element;
            String location = IndexLocationFactory.getPath(lineElement.getLocation()).toString();
            int lineNumber = lineElement.getLineNumber();
            cell.setText(/*w  w w  .j a va2s . com*/
                    Messages.format(CSearchMessages.CSearchResultCollector_location, location, lineNumber));
            cell.setImage(CDTSharedImages.getImage(CDTSharedImages.IMG_OBJS_SEARCH_LINE));
        }
        break;
    case PDOMSearchViewPage.DEFINITION_COLUMN_INDEX:
        if (element instanceof LineSearchElement) {
            LineSearchElement lineElement = (LineSearchElement) element;
            ICElement enclosingElement = lineElement.getMatches()[0].getEnclosingElement();
            if (fPage.isShowEnclosingDefinitions() && enclosingElement != null) {
                cell.setText(enclosingElement.getElementName());
                cell.setImage(getImage(element));
            } else {
                cell.setText(""); //$NON-NLS-1$
            }
        }
        break;
    case PDOMSearchViewPage.MATCH_COLUMN_INDEX:
        super.update(cell);
        cell.setImage(null);
        break;
    default:
        cell.setText(""); //$NON-NLS-1$
        break;
    }
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.AbstractIconDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite comp = (Composite) super.createDialogArea(parent);

    getShell().setText(getShellTitle());
    setTitle(getDialogTitle());//w w  w.java  2 s.co m
    setMessage(getDialogMessage());

    Composite container = new Composite(comp, SWT.NONE);
    container.setLayoutData(new GridData(GridData.FILL_BOTH));
    container.setLayout(new GridLayout(2, false));

    Label l = new Label(container, SWT.NONE);
    l.setText(Messages.AbstractIconDialog_IconName);

    final Text t = new Text(container, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH);
    t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    new Label(container, SWT.NONE);

    viewer = new TableViewer(container);
    GridData gd = new GridData(GridData.FILL_BOTH);
    viewer.getControl().setLayoutData(gd);
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            IFile file = (IFile) cell.getElement();
            StyledString styledString = new StyledString(file.getProjectRelativePath().toString(), null);

            Image img = icons.get(file);
            if (img == null) {
                InputStream in = null;
                try {
                    in = file.getContents();
                    img = new Image(cell.getControl().getDisplay(), in);
                    icons.put(file, img);
                } catch (CoreException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } finally {
                    if (in != null) {
                        try {
                            in.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            }

            String bundle = getBundle(file);
            if (bundle != null) {
                styledString.append(" - " + bundle, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$   
            }

            cell.setImage(img);
            cell.setText(styledString.getString());
            cell.setStyleRanges(styledString.getStyleRanges());
        }
    });

    final WritableList list = new WritableList();
    viewer.setInput(list);
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        public void doubleClick(DoubleClickEvent event) {
            okPressed();
        }
    });

    t.addModifyListener(new ModifyListener() {
        private IconMatchCallback callback;
        private Timer timer = new Timer(true);
        private TimerTask task;

        public void modifyText(ModifyEvent e) {
            if (callback != null) {
                callback.cancel = true;
            }
            if (task != null) {
                task.cancel();
            }
            list.clear();

            clearImages();

            callback = new IconMatchCallback(list);
            task = new SearchThread(callback, t.getText(), project);
            timer.schedule(task, 500);
        }
    });

    getShell().addDisposeListener(new DisposeListener() {

        public void widgetDisposed(DisposeEvent e) {
            clearImages();
        }
    });

    return comp;
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.AbstractIconDialogWithHardcodedScope.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite comp = (Composite) super.createDialogArea(parent);

    getShell().setText(getShellTitle());
    setTitle(getDialogTitle());//from  www .ja v a 2 s  .co  m
    setMessage(getDialogMessage());
    String bundleFilter = (String) context.get("bundle");
    if (E.notEmpty(bundleFilter)) {
        setMessage("Filtering by bundle " + bundleFilter); //$NON-NLS-1$
    }

    Composite container = new Composite(comp, SWT.NONE);
    container.setLayoutData(new GridData(GridData.FILL_BOTH));
    container.setLayout(new GridLayout(2, false));

    Composite compOptions = new Composite(container, SWT.NONE);
    compOptions.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
    compOptions.setLayout(new RowLayout());

    if (E.isEmpty(bundleFilter)) {
        Button btnProject = new Button(compOptions, SWT.RADIO);
        btnProject.setText("Project");
        btnProject.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                searchScope = ResourceSearchScope.PROJECT;
                textSearch.notifyListeners(SWT.Modify, new Event());

            }
        });
        btnProject.setSelection(true);

        Button btnWorkspace = new Button(compOptions, SWT.RADIO);
        btnWorkspace.setText("Workspace");
        btnWorkspace.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                searchScope = ResourceSearchScope.WORKSPACE;
                textSearch.notifyListeners(SWT.Modify, new Event());
            }
        });

        btnWorkspace.setSelection(searchScope == ResourceSearchScope.WORKSPACE);
        btnProject.setSelection(searchScope == ResourceSearchScope.PROJECT);
    } else {
        searchScope = ResourceSearchScope.WORKSPACE;
    }

    Label l = new Label(container, SWT.NONE);
    l.setText(Messages.AbstractIconDialog_IconName);

    textSearch = new Text(container, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH);
    textSearch.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    new Label(container, SWT.NONE);

    viewer = new TableViewer(container, SWT.FULL_SELECTION | SWT.BORDER);
    GridData gd = new GridData(GridData.FILL_BOTH);
    viewer.getControl().setLayoutData(gd);
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            IFile file = (IFile) cell.getElement();
            StyledString styledString = new StyledString(file.getProjectRelativePath().toString(), null);

            Image img = icons.get(file);
            if (img == null) {
                InputStream in = null;
                try {
                    in = file.getContents();
                    img = new Image(cell.getControl().getDisplay(), in);
                    icons.put(file, img);
                } catch (CoreException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } finally {
                    if (in != null) {
                        try {
                            in.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            }

            String bundle = getBundle(file);
            if (bundle != null) {
                styledString.append(" - " + bundle, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            }

            cell.setImage(img);
            cell.setText(styledString.getString());
            cell.setStyleRanges(styledString.getStyleRanges());
        }
    });

    final WritableList list = new WritableList();
    viewer.setInput(list);
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            okPressed();
        }
    });

    textSearch.addModifyListener(new ModifyListener() {
        private IconMatchCallback callback;
        private Timer timer = new Timer(true);
        private TimerTask task;

        @Override
        public void modifyText(ModifyEvent e) {
            if (callback != null) {
                callback.cancel = true;
            }
            if (task != null) {
                task.cancel();
            }
            list.clear();

            clearImages();

            callback = new IconMatchCallback(list);
            task = new SearchThread(callback, textSearch.getText(), project, context, searchScope);
            timer.schedule(task, 500);
        }
    });

    getShell().addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            clearImages();
        }
    });

    textSearch.notifyListeners(SWT.Modify, new Event());

    return comp;
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.AbstractIconDialogWithScopeAndFilter.java

License:Open Source License

@Override
protected void rebuildViewer() {
    super.rebuildViewer();
    getViewer().getTable().setHeaderVisible(true);

    ((GridData) getViewer().getTable().getLayoutData()).minimumHeight = 100;

    TableViewerColumn colIcon = new TableViewerColumn(getViewer(), SWT.NONE);
    colIcon.getColumn().setText(Messages.AbstractIconDialogWithScopeAndFilter_icon);
    TableViewerColumn colText = new TableViewerColumn(getViewer(), SWT.NONE);
    colText.getColumn().setText(Messages.AbstractIconDialogWithScopeAndFilter_details);

    // resize the row height using a MeasureItem listener
    getViewer().getTable().addListener(SWT.MeasureItem, new Listener() {
        @Override/*w  w  w  .java  2 s  . c om*/
        public void handleEvent(Event event) {
            // height cannot be per row so simply set
            event.height = maxDisplayedImageSize;
        }
    });

    colIcon.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            IFile file;
            if (cell.getElement() instanceof ContributionData) {
                file = new ContributionDataFile((ContributionData) cell.getElement());
            } else if (cell.getElement() instanceof Entry) {
                file = ((Entry) cell.getElement()).file;
            } else {
                file = (IFile) cell.getElement();
            }

            Image img = icons.get(file);
            if (img == null) {
                InputStream in = null;
                try {
                    in = file.getContents();
                    img = new Image(cell.getControl().getDisplay(), in);
                    icons.put(file, img);
                } catch (Exception e) {
                    // e.printStackTrace();
                    return;
                } finally {
                    if (in != null) {
                        try {
                            in.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            // e.printStackTrace();
                        }
                    }
                }
            }

            // scale image if larger then max height
            // also remember max width for column resizing
            if (img != null) {
                double scale1 = ((double) maxDisplayedImageSize) / img.getImageData().height;
                double scale2 = ((double) maxDisplayedImageSize) / img.getImageData().width;
                if (scale2 < scale1) {
                    scale1 = scale2;
                }
                if (scale1 < 1) {
                    int width = (int) (img.getImageData().width * scale1);
                    if (width == 0)
                        width = 1;
                    int height = (int) (img.getImageData().height * scale1);
                    if (height == 0)
                        height = 1;
                    Image img2 = new Image(img.getDevice(), img.getImageData().scaledTo(width, height));
                    img.dispose();
                    img = img2;
                    icons.put(file, img);
                }
                int width = AbstractIconDialogWithScopeAndFilter.this.getViewer().getTable().getColumn(0)
                        .getWidth();
                if (img.getImageData().width > width) {
                    AbstractIconDialogWithScopeAndFilter.this.getViewer().getTable().getColumn(0)
                            .setWidth(img.getImageData().width);
                }
                int height = img.getImageData().height;
                if (height > maxImageHeight) {
                    maxImageHeight = height;
                }
            }

            cell.setImage(img);
        }
    });
    colIcon.getColumn().setWidth(30);

    colText.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            IFile file;
            String installLocation = null;
            if (cell.getElement() instanceof ContributionData) {
                ContributionData contributionData = (ContributionData) cell.getElement();
                file = new ContributionDataFile(contributionData);
                installLocation = contributionData.installLocation;
            } else if (cell.getElement() instanceof Entry) {
                file = ((Entry) cell.getElement()).file;
                installLocation = ((Entry) cell.getElement()).installLocation;
            } else {
                file = (IFile) cell.getElement();
            }
            StyledString styledString = new StyledString(file.getProjectRelativePath().toString(), null);
            String bundle = FilteredContributionDialog.getBundle(file);
            if (bundle != null) {
                styledString.append(" - " + bundle, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            } else if (installLocation != null) {
                styledString.append(" - " + installLocation, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            }

            cell.setText(styledString.getString());
            cell.setStyleRanges(styledString.getStyleRanges());
        }
    });
    colText.getColumn().setWidth(400);

    getShell().addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            clearImages();
        }
    });
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.FilteredContributionDialog.java

License:Open Source License

protected void rebuildViewer() {

    viewerList = new WritableList();

    TableViewer oldViewer = viewer;/* w  w  w  .j  a  va 2  s  .co  m*/
    viewer = new TableViewer(compOptions, SWT.FULL_SELECTION | SWT.BORDER);
    if (oldViewer != null) {
        viewer.getTable().moveAbove(oldViewer.getTable());
        oldViewer.getTable().dispose();
    }
    GridData gd = new GridData(GridData.FILL_BOTH);
    viewer.getControl().setLayoutData(gd);
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            ContributionData data;
            if (cell.getElement() instanceof ContributionData) {
                data = (ContributionData) cell.getElement();
            } else if (cell.getElement() instanceof ContributionDataFile) {
                data = ((ContributionDataFile) cell.getElement()).getContributionData();
            } else {
                return;
            }

            StyledString styledString = new StyledString();
            if (data.className != null) {
                styledString.append(data.className, null);
            }

            if (data.bundleName != null) {
                styledString.append(" - " + data.bundleName, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            } else if (data.installLocation != null) {
                styledString.append(" - " + data.installLocation, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            }

            if (data.sourceType != null) {
                styledString.append(" - ", StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
                styledString.append(data.sourceType + "", StyledString.COUNTER_STYLER); //$NON-NLS-1$
            }

            if (data.iconPath == null) {
                cell.setImage(contributionTypeImage);
            }

            cell.setText(styledString.getString());
            cell.setStyleRanges(styledString.getStyleRanges());
        }
    });
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            okPressed();
        }
    });

    viewer.setInput(viewerList);

    if (oldViewer != null) {
        getViewer().getTable().getParent().layout(true, true);
        getViewer().getTable().getParent().redraw();
    }
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.FindImportElementDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite comp = (Composite) super.createDialogArea(parent);

    final Image titleImage = new Image(parent.getDisplay(),
            getClass().getClassLoader().getResourceAsStream("/icons/full/wizban/import_wiz.png")); //$NON-NLS-1$
    setTitleImage(titleImage);/*from   w  ww  .  java 2  s. co  m*/
    getShell().addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            titleImage.dispose();
        }
    });

    getShell().setText(Messages.FindImportElementDialog_ShellTitle);
    setTitle(Messages.FindImportElementDialog_Title);
    setMessage(Messages.FindImportElementDialog_Message);

    Composite container = new Composite(comp, SWT.NONE);
    container.setLayoutData(new GridData(GridData.FILL_BOTH));
    container.setLayout(new GridLayout(2, false));

    Label l = new Label(container, SWT.NONE);
    l.setText(Messages.FindImportElementDialog_Search);

    final Text searchText = new Text(container, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH);
    GridData gd = new GridData(GridData.FILL_HORIZONTAL);
    searchText.setLayoutData(gd);

    l = new Label(container, SWT.PUSH);

    viewer = new TableViewer(container);
    gd = new GridData(GridData.FILL_BOTH);
    gd.heightHint = 200;
    viewer.getControl().setLayoutData(gd);
    viewer.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            EObject o = (EObject) cell.getElement();
            cell.setImage(editor.getImage(o, searchText.getDisplay()));

            MApplicationElement appEl = (MApplicationElement) o;
            StyledString styledString = new StyledString(editor.getLabel(o) + " (" //$NON-NLS-1$
                    + (appEl.getElementId() == null ? "<" + Messages.FindImportElementDialog_noId + ">" //$NON-NLS-1$//$NON-NLS-2$
                            : appEl.getElementId())
                    + ")", null); //$NON-NLS-1$
            String detailLabel = editor.getDetailLabel(o);
            if (detailLabel != null && !detailLabel.equals(appEl.getElementId())) {
                styledString.append(" - " + detailLabel, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            }

            styledString.append(" - " + o.eResource().getURI(), StyledString.COUNTER_STYLER); //$NON-NLS-1$
            cell.setStyleRanges(styledString.getStyleRanges());
            cell.setText(styledString.getString());
        }
    });
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            okPressed();
        }
    });

    final WritableList list = new WritableList();
    viewer.setInput(list);

    final ClassContributionCollector collector = getCollector();

    searchText.addModifyListener(new ModifyListener() {
        private ModelResultHandlerImpl currentResultHandler;

        @Override
        public void modifyText(ModifyEvent e) {
            if (currentResultHandler != null) {
                currentResultHandler.cancled = true;
            }
            list.clear();
            Filter filter = new Filter(element.eClass(), searchText.getText());
            currentResultHandler = new ModelResultHandlerImpl(list, filter, editor, element.eResource());
            collector.findModelElements(filter, currentResultHandler);
        }
    });

    Button button = new Button(container, SWT.PUSH);
    button.setText(Messages.FindImportElementDialog_ClearCache);
    button.setLayoutData(new GridData(GridData.END, GridData.CENTER, true, false, 2, 1));
    button.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            collector.clearModelCache();
        }
    });

    return comp;
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.FindParentReferenceElementDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite comp = (Composite) super.createDialogArea(parent);

    final Image titleImage = new Image(parent.getDisplay(),
            getClass().getClassLoader().getResourceAsStream("/icons/full/wizban/import_wiz.png")); //$NON-NLS-1$
    setTitleImage(titleImage);/* w  w  w. j  a va  2 s .  c  o m*/
    getShell().addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            titleImage.dispose();
        }
    });

    getShell().setText(Messages.FindParentReferenceElementDialog_ShellTitle);
    setTitle(Messages.FindParentReferenceElementDialog_Title);
    setMessage(Messages.FindParentReferenceElementDialog_Message);

    Composite container = new Composite(comp, SWT.NONE);
    container.setLayoutData(new GridData(GridData.FILL_BOTH));
    container.setLayout(new GridLayout(2, false));

    Label l = new Label(container, SWT.NONE);
    l.setText(Messages.FindParentReferenceElementDialog_ContainerType);

    eClassViewer = new ComboViewer(container);
    eClassViewer.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            return ((EClass) element).getName();
        }
    });
    eClassViewer.setContentProvider(new ArrayContentProvider());
    List<EClass> eClassList = new ArrayList<EClass>();
    for (InternalPackage p : Util.loadPackages()) {
        eClassList.addAll(p.getAllClasses());
    }
    eClassViewer.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            EClass ec1 = (EClass) e1;
            EClass ec2 = (EClass) e2;
            return ec1.getName().compareTo(ec2.getName());
        }
    });
    eClassViewer.setInput(eClassList);
    eClassViewer.getCombo().select(0);
    eClassViewer.getControl().setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    eClassViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            updateSearch();

        }
    });

    l = new Label(container, SWT.NONE);
    l.setText(Messages.FindParentReferenceElementDialog_Search);

    searchText = new Text(container, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH);
    GridData gd = new GridData(GridData.FILL_HORIZONTAL);
    searchText.setLayoutData(gd);

    l = new Label(container, SWT.PUSH);

    viewer = new TableViewer(container);
    gd = new GridData(GridData.FILL_BOTH);
    gd.heightHint = 200;
    viewer.getControl().setLayoutData(gd);
    viewer.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            EObject o = (EObject) cell.getElement();
            AbstractComponentEditor editor = FindParentReferenceElementDialog.this.editor.getEditor()
                    .getEditor(o.eClass());
            cell.setImage(editor.getImage(o, searchText.getDisplay()));

            MApplicationElement appEl = (MApplicationElement) o;

            StyledString styledString = new StyledString(editor.getLabel(o) + " (" //$NON-NLS-1$
                    + (appEl.getElementId() == null ? "<" + Messages.FindParentReferenceElementDialog_NoId + ">" //$NON-NLS-1$//$NON-NLS-2$
                            : appEl.getElementId())
                    + ")", null); //$NON-NLS-1$
            String detailLabel = editor.getDetailLabel(o);
            if (detailLabel != null && !detailLabel.equals(appEl.getElementId())) {
                styledString.append(" - " + detailLabel, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            }

            styledString.append(" - " + o.eResource().getURI(), StyledString.COUNTER_STYLER); //$NON-NLS-1$
            cell.setStyleRanges(styledString.getStyleRanges());
            cell.setText(styledString.getString());
        }
    });
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            okPressed();
        }
    });

    list = new WritableList();
    viewer.setInput(list);

    final ClassContributionCollector collector = getCollector();

    searchText.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent e) {
            updateSearch();
        }
    });

    Button button = new Button(container, SWT.PUSH);
    button.setText(Messages.FindParentReferenceElementDialog_ClearCache);
    button.setLayoutData(new GridData(GridData.END, GridData.CENTER, true, false, 2, 1));
    button.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            collector.clearModelCache();
        }
    });
    return comp;
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider.java

License:Open Source License

@Override
public void update(final ViewerCell cell) {
    if (cell.getElement() instanceof EObject) {

        EObject o = (EObject) cell.getElement();
        AbstractComponentEditor elementEditor = editor.getEditor(o.eClass());
        if (elementEditor != null) {
            String label = elementEditor.getLabel(o);
            String detailText = elementEditor.getDetailLabel(o);
            Styler styler = null;//from ww w.j  a  v a2 s  .co m

            if (o instanceof MUIElement) {

                if (!((MUIElement) o).isVisible() && !((MUIElement) o).isToBeRendered()) {
                    label += "<" + Messages.ComponentLabelProvider_invisible + "/" //$NON-NLS-1$//$NON-NLS-2$
                            + Messages.ComponentLabelProvider_notrendered + ">"; //$NON-NLS-1$
                    styler = BOTH_STYLER;
                } else if (!((MUIElement) o).isVisible()) {
                    label += "<" + Messages.ComponentLabelProvider_invisible + ">"; //$NON-NLS-1$//$NON-NLS-2$
                    styler = NOT_VISIBLE_STYLER;
                } else if (!((MUIElement) o).isToBeRendered()) {
                    label += "<" + Messages.ComponentLabelProvider_notrendered + ">"; //$NON-NLS-1$ //$NON-NLS-2$
                    styler = NOT_RENDERED_STYLER;
                }
            }

            if (detailText == null) {
                StyledString styledString = new StyledString(label, styler);
                cell.setText(styledString.getString());
                cell.setStyleRanges(styledString.getStyleRanges());
            } else {
                StyledString styledString = new StyledString(label, styler);
                styledString.append(" - " + detailText, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
                cell.setText(styledString.getString());
                cell.setStyleRanges(styledString.getStyleRanges());
            }
            cell.setImage(elementEditor.getImage(o, cell.getControl().getDisplay()));
        } else {
            cell.setText(cell.getElement().toString());
        }
    } else if (cell.getElement() instanceof VirtualEntry<?>) {
        String s = cell.getElement().toString();
        if (font == null) {
            FontData[] data = cell.getControl().getFont().getFontData();
            font = new Font(cell.getControl().getDisplay(),
                    new FontData(data[0].getName(), data[0].getHeight(), SWT.ITALIC));
        }
        cell.setFont(font);
        cell.setText(s);
    } else {
        cell.setText(cell.getElement().toString());
    }
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.dialogs.FindContributionDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite comp = (Composite) super.createDialogArea(parent);

    // TODO param
    getShell().setText(Messages.ContributionClassDialog_ShellTitle);

    if ("show-bundles".equals(mode)) { //$NON-NLS-1$
        // TODO create icon
    } else if ("show-packages".equals(mode)) { //$NON-NLS-1$
        // TODO create icon
    } else if ("show-icons".equals(mode)) { //$NON-NLS-1$
        // TODO create icon
    } else {//from  ww w .j  av a2 s.  c  o  m
        titleImage = new Image(comp.getDisplay(),
                getClass().getClassLoader().getResourceAsStream("/icons/full/wizban/newclass_wiz.png")); //$NON-NLS-1$
        setTitleImage(titleImage);
    }

    getShell().addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            javaClassImage.dispose();
            if (titleImage != null) {
                titleImage.dispose();
            }
        }
    });

    javaClassImage = new Image(getShell().getDisplay(),
            getClass().getClassLoader().getResourceAsStream("/icons/full/obj16/class_obj.gif")); //$NON-NLS-1$

    Composite container = new Composite(comp, SWT.NONE);
    container.setLayoutData(new GridData(GridData.FILL_BOTH));
    container.setLayout(new GridLayout(2, false));

    Label l = new Label(container, SWT.NONE);
    // TODO param
    l.setText(Messages.ContributionClassDialog_Label_Classname);

    final Text t = new Text(container, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH);
    t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    // TODO param
    t.setMessage(Messages.ContributionClassDialog_FilterText_Message);

    new Label(container, SWT.NONE);

    viewer = new TableViewer(container, SWT.FULL_SELECTION | SWT.BORDER);
    GridData gd = new GridData(GridData.FILL_BOTH);
    viewer.getControl().setLayoutData(gd);
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            ContributionData data = (ContributionData) cell.getElement();
            StyledString styledString = new StyledString();
            if ("show-bundles".equals(mode)) { //$NON-NLS-1$
                styledString.append(data.bundleName, StyledString.DECORATIONS_STYLER);
            } else if ("show-packages".equals(mode)) { //$NON-NLS-1$
                int dot = data.className.lastIndexOf("."); //$NON-NLS-1$
                String packageName;
                if (dot >= 0) {
                    packageName = data.className.substring(0, dot);
                } else {
                    packageName = ""; //$NON-NLS-1$
                }
                styledString.append(packageName, StyledString.DECORATIONS_STYLER);
            } else if ("show-icons".equals(mode)) { //$NON-NLS-1$
                styledString.append(data.iconPath, null);

                if (data.bundleName != null) {
                    styledString.append(" - " + data.bundleName, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
                }

                if (data.sourceType != null) {
                    styledString.append(" - ", StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
                    styledString.append(data.sourceType + "", StyledString.COUNTER_STYLER); //$NON-NLS-1$
                }

                if (data.iconPath == null) {
                    cell.setImage(javaClassImage);
                }
            } else {
                styledString.append(data.className, null);

                if (data.bundleName != null) {
                    styledString.append(" - " + data.bundleName, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
                }

                if (data.sourceType != null) {
                    styledString.append(" - ", StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
                    styledString.append(data.sourceType + "", StyledString.COUNTER_STYLER); //$NON-NLS-1$
                }

                if (data.iconPath == null) {
                    cell.setImage(javaClassImage);
                }
            }

            cell.setText(styledString.getString());
            cell.setStyleRanges(styledString.getStyleRanges());
        }
    });
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            okPressed();
        }
    });

    final WritableList list = new WritableList();
    viewer.setInput(list);

    final ClassContributionCollector collector = getCollector();

    t.addModifyListener(new ModifyListener() {
        private ContributionResultHandlerImpl currentResultHandler;

        @Override
        public void modifyText(ModifyEvent e) {
            if (currentResultHandler != null) {
                currentResultHandler.cancled = true;
            }
            list.clear();
            currentResultHandler = new ContributionResultHandlerImpl(list);
            Filter filter = new Filter(project, t.getText());
            collector.findContributions(filter, currentResultHandler);
            t.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    if (e.keyCode == SWT.ARROW_DOWN) {
                        if (viewer.getTable().getItemCount() > 0) {
                            viewer.getTable().setFocus();
                            viewer.getTable().select(0);
                        }
                    }
                }
            });
            viewer.getTable().addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    super.keyPressed(e);
                    if ((e.keyCode == SWT.ARROW_UP) && (viewer.getTable().getSelectionIndex() == 0)) {
                        t.setFocus();
                    }
                }
            });
        }
    });

    viewer.setFilters(new ViewerFilter[] { new ViewerFilter() {

        @Override
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            ContributionData cd = (ContributionData) element;
            if ("show-bundles".equals(mode)) { //$NON-NLS-1$
                // only add first item from each bundle
                boolean found = false;
                for (Iterator it = list.iterator(); it.hasNext();) {
                    ContributionData cd2 = (ContributionData) it.next();
                    if (cd2.bundleName == null || cd2.bundleName.equals(cd.bundleName)) {
                        if (found == false) {
                            found = true;
                        } else {
                            return false;
                        }
                    }
                }
                return true;
            } else if ("show-packages".equals(mode)) { //$NON-NLS-1$
                if (bundleFilter != null && bundleFilter.isEmpty() == false) {
                    if (!bundleFilter.equals(cd.bundleName)) {
                        return false;
                    }
                }
                String packageName;
                int last = cd.className.lastIndexOf("."); //$NON-NLS-1$
                if (last >= 0) {
                    packageName = cd.className.substring(0, last);
                } else {
                    packageName = ""; //$NON-NLS-1$
                }
                // only add first item from each package
                boolean found = false;
                for (Iterator it = list.iterator(); it.hasNext();) {
                    boolean matches = false;
                    ContributionData cd2 = (ContributionData) it.next();
                    if (packageName.isEmpty() && cd2.className.contains(".") == false) { //$NON-NLS-1$
                        matches = true;
                    } else if (cd2.className.startsWith(packageName + ".")) { //$NON-NLS-1$
                        matches = true;
                    }
                    if (matches) {
                        if (found == false) {
                            found = true;
                        } else {
                            return false;
                        }
                    }
                }
                return true;
            } else if ("show-icons".equals(mode)) { //$NON-NLS-1$
                if (cd.iconPath == null) {
                    return false;
                }
                if (bundleFilter != null && bundleFilter.isEmpty() == false) {
                    if (!bundleFilter.equals(cd.bundleName)) {
                        return false;
                    }
                }
                if (packageFilter != null && packageFilter.isEmpty() == false) {
                    if (!cd.className.startsWith(packageFilter + ".")) { //$NON-NLS-1$
                        return false;
                    }
                }
                return true;
            } else {
                if (bundleFilter != null && bundleFilter.isEmpty() == false) {
                    if (!bundleFilter.equals(cd.bundleName)) {
                        return false;
                    }
                }
                if (packageFilter != null && packageFilter.isEmpty() == false) {
                    if (!cd.className.startsWith(packageFilter + ".")) { //$NON-NLS-1$
                        return false;
                    }
                }

                return true;
            }
        }
    } });

    StringBuilder sbFind = new StringBuilder();

    if ("show-bundles".equals(mode)) { //$NON-NLS-1$
        setTitle(
                org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_findBundle);
        sbFind.append(
                org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_findBundle);
    } else if ("show-packages".equals(mode)) { //$NON-NLS-1$
        setTitle(
                org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_findPackage);
        sbFind.append(
                org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_findPackage);
        if (E.notEmpty(bundleFilter)) {
            sbFind.append(" " //$NON-NLS-1$
                    + org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_inBundle
                    + " " + bundleFilter); //$NON-NLS-3$
        }
    } else if ("show-icons".equals(mode)) { //$NON-NLS-1$
        setTitle(
                org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_findIcon);
        sbFind.append(
                org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_findIcon);
        if (E.notEmpty(bundleFilter)) {
            sbFind.append(" " //$NON-NLS-1$
                    + org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_inBundle
                    + " " + bundleFilter); //$NON-NLS-3$
        }
        if (E.notEmpty(packageFilter)) {
            sbFind.append(" " //$NON-NLS-1$
                    + org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_inPackage
                    + " " + packageFilter); //$NON-NLS-3$
        }
    } else {
        setTitle(
                org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_findClass);
        sbFind.append(
                org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_findClass);
        if (E.notEmpty(bundleFilter)) {
            sbFind.append(" " //$NON-NLS-1$
                    + org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_inBundle
                    + " " + bundleFilter); //$NON-NLS-3$
        }
        if (E.notEmpty(packageFilter)) {
            sbFind.append(" " //$NON-NLS-1$
                    + org.eclipse.e4.tools.emf.ui.internal.common.resourcelocator.Messages.FindContributionDialog_inPackage
                    + " " + packageFilter); //$NON-NLS-3$
        }
    }
    setMessage(sbFind.toString());

    // preload list if few items
    if (list.size() <= 30) {
        t.notifyListeners(SWT.Modify, null);
    }
    return comp;
}