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

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

Introduction

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

Prototype

public void setStyleRanges(StyleRange[] styleRanges) 

Source Link

Document

Set the style ranges to be applied on the text label Note: Requires StyledCellLabelProvider with owner draw enabled.

Usage

From source file:org.csstudio.display.pvtable.ui.PVTableCellLabelProviderWithChangeIndicator.java

License:Open Source License

@Override
public void update(final ViewerCell cell) {
    final String text = cell.getText();
    final PVTableItem item = (PVTableItem) cell.getElement();
    if (item.isChanged())
        cell.setStyleRanges(new StyleRange[] { new StyleRange(0, text.length(), null, changed_background) });
    else/*from   www.  ja  v  a  2 s .c o  m*/
        cell.setStyleRanges(null);

    super.update(cell);
}

From source file:org.eclipse.ant.internal.ui.model.AntModelLabelProvider.java

License:Open Source License

@Override
public void update(ViewerCell cell) {
    Object obj = cell.getElement();
    StyledString str = getStyledText(obj);
    cell.setText(str.toString());// w w w.java  2  s. c  o  m
    cell.setStyleRanges(str.getStyleRanges());
    cell.setImage(getImage(obj));
}

From source file:org.eclipse.babel.tapiji.tools.core.ui.widgets.provider.ResKeyTreeLabelProvider.java

License:Open Source License

private void updateCell(ViewerCell cell) {
    Object element = cell.getElement();
    int columnIndex = cell.getColumnIndex();

    if (isSearchEnabled(element)) {
        if (isMatchingToPattern(element, columnIndex)) {
            List<StyleRange> styleRanges = new ArrayList<StyleRange>();
            FilterInfo filterInfo = (FilterInfo) ((IValuedKeyTreeNode) element).getInfo();

            if (columnIndex > 0) {
                for (Region reg : filterInfo.getFoundInLocaleRanges(locales.get(columnIndex - 1))) {
                    styleRanges/*w  w  w.  j  a  v a2s . com*/
                            .add(new StyleRange(reg.getOffset(), reg.getLength(), black, info_color, SWT.BOLD));
                }
            } else {
                // check if the pattern has been found within the key
                // section
                if (filterInfo.isFoundInKey()) {
                    for (Region reg : filterInfo.getKeyOccurrences()) {
                        StyleRange sr = new StyleRange(reg.getOffset(), reg.getLength(), black, info_color,
                                SWT.BOLD);
                        styleRanges.add(sr);
                    }
                }
            }
            cell.setStyleRanges(styleRanges.toArray(new StyleRange[styleRanges.size()]));
        } else {
            cell.setForeground(gray);
        }
    } else if (columnIndex == 0) {
        super.update(cell);
    }
}

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());/*from  w w w .  j ava  2  s . com*/
    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());/* www. j av a  2  s.  com*/
    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/*  www  .  j  a va 2s  .c  o m*/
        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.AbstractIdDialog.java

License:Open Source License

protected IBaseLabelProvider getLabelProvider() {
    return new StyledCellLabelProvider() {

        @Override//w  ww . ja v  a  2 s. co  m
        public void update(ViewerCell cell) {
            ElementClass el = (ElementClass) cell.getElement();
            String elementId = (el.getElementId() != null && el.getElementId().trim().length() > 0)
                    ? el.getElementId()
                    : "(Id missing)"; //$NON-NLS-1$
            StyledString str = new StyledString(elementId);

            String infoString = getListItemInformation(el);
            if (infoString != null && infoString.trim().length() > 0)
                str.append(" - " + getListItemInformation(el), StyledString.DECORATIONS_STYLER); //$NON-NLS-1$

            cell.setText(str.getString());
            cell.setStyleRanges(str.getStyleRanges());
        }
    };
}

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;//from   w ww  . j  ava2 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   www  . ja v  a 2 s .  c o 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);/*from  w ww  .jav a 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;
}