com.siteview.mde.internal.ui.search.dependencies.DependencyExtentSearchResultPage.java Source code

Java tutorial

Introduction

Here is the source code for com.siteview.mde.internal.ui.search.dependencies.DependencyExtentSearchResultPage.java

Source

/*******************************************************************************
 *  Copyright (c) 2005, 2008 IBM Corporation and others.
 *  All rights reserved. This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License v1.0
 *  which accompanies this distribution, and is available at
 *  http://www.eclipse.org/legal/epl-v10.html
 * 
 *  Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package com.siteview.mde.internal.ui.search.dependencies;

import com.siteview.mde.core.monitor.*;

import org.eclipse.jdt.core.*;
import org.eclipse.jdt.ui.JavaElementLabelProvider;
import org.eclipse.jdt.ui.actions.FindReferencesInWorkingSetAction;
import org.eclipse.jdt.ui.actions.JavaSearchActionGroup;
import org.eclipse.jface.action.*;
import org.eclipse.jface.viewers.*;
import com.siteview.mde.internal.ui.MDEPlugin;
import com.siteview.mde.internal.ui.MDEUIMessages;
import com.siteview.mde.internal.ui.search.*;
import org.eclipse.search.ui.text.Match;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.*;
import org.eclipse.ui.actions.ActionContext;

public class DependencyExtentSearchResultPage extends AbstractSearchResultPage {

    class Comparator extends ViewerComparator {
        /* (non-Javadoc)
         * @see org.eclipse.jface.viewers.ViewerSorter#category(java.lang.Object)
         */
        public int category(Object element) {
            try {
                if (element instanceof IType) {
                    if (((IType) element).isClass())
                        return 1;
                    return 0;
                }
            } catch (JavaModelException e) {
            }
            return 2;
        }
    }

    class LabelProvider extends JavaElementLabelProvider {
        /* (non-Javadoc)
         * @see org.eclipse.jdt.ui.JavaElementLabelProvider#getImage(java.lang.Object)
         */
        public Image getImage(Object element) {
            if (element instanceof IMonitorObject)
                return MDEPlugin.getDefault().getLabelProvider().getImage(element);
            return super.getImage(element);
        }

        /* (non-Javadoc)
         * @see org.eclipse.jdt.ui.JavaElementLabelProvider#getText(java.lang.Object)
         */
        public String getText(Object element) {
            if (element instanceof IMonitorExtensionPoint)
                return ((IMonitorExtensionPoint) element).getFullId();

            if (element instanceof IMonitorExtension)
                return ((IMonitorExtension) element).getPoint();

            if (element instanceof IJavaElement) {
                IJavaElement javaElement = (IJavaElement) element;
                String text = super.getText(javaElement) + " - " //$NON-NLS-1$
                        + javaElement.getAncestor(IJavaElement.PACKAGE_FRAGMENT).getElementName();
                if (!(javaElement instanceof IType)) {
                    IJavaElement ancestor = javaElement.getAncestor(IJavaElement.TYPE);
                    if (ancestor == null)
                        ancestor = javaElement.getAncestor(IJavaElement.CLASS_FILE);
                    if (ancestor == null)
                        ancestor = javaElement.getAncestor(IJavaElement.COMPILATION_UNIT);
                    if (ancestor != null)
                        text += "." + ancestor.getElementName(); //$NON-NLS-1$
                }
                return text;
            }
            return super.getText(element);
        }
    }

    public DependencyExtentSearchResultPage() {
        MDEPlugin.getDefault().getLabelProvider().connect(this);
    }

    /* (non-Javadoc)
     * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#dispose()
     */
    public void dispose() {
        MDEPlugin.getDefault().getLabelProvider().disconnect(this);
        super.dispose();
    }

    /* (non-Javadoc)
     * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#fillContextMenu(org.eclipse.jface.action.IMenuManager)
     */
    protected void fillContextMenu(IMenuManager mgr) {
        super.fillContextMenu(mgr);
        mgr.add(new Separator());
        JavaSearchActionGroup group = new JavaSearchActionGroup(this);
        group.setContext(new ActionContext(getViewer().getSelection()));
        group.fillContextMenu(mgr);
        addJavaSearchGroup(mgr);
        MonitorSearchActionGroup actionGroup = new MonitorSearchActionGroup();
        actionGroup.setContext(new ActionContext(getViewer().getSelection()));
        actionGroup.fillContextMenu(mgr);
    }

    private void addJavaSearchGroup(IMenuManager mgr) {
        IStructuredSelection ssel = (IStructuredSelection) getViewer().getSelection();
        if (ssel.size() == 1) {
            final Object object = ssel.getFirstElement();
            if (object instanceof IType) {
                mgr.add(new Separator());
                mgr.add(new Action(MDEUIMessages.DependencyExtentSearchResultPage_referencesInPlugin) {
                    public void run() {
                        DependencyExtentQuery query = (DependencyExtentQuery) getInput().getQuery();
                        IWorkingSetManager manager = PlatformUI.getWorkbench().getWorkingSetManager();
                        IWorkingSet set = manager.createWorkingSet("temp", query.getDirectRoots()); //$NON-NLS-1$
                        new FindReferencesInWorkingSetAction(getViewPart().getSite(), new IWorkingSet[] { set })
                                .run((IType) object);
                        manager.removeWorkingSet(set);
                    }
                });
            }
        }
    }

    /* (non-Javadoc)
     * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#showMatch(org.eclipse.search.ui.text.Match, int, int, boolean)
     */
    protected void showMatch(Match match, int currentOffset, int currentLength, boolean activate)
            throws PartInitException {
        if (match.getElement() instanceof IMonitorObject) {
            ManifestEditorOpener.open(match, activate);
        } else {
            try {
                JavaEditorOpener.open(match, currentOffset, currentLength, activate);
            } catch (PartInitException e) {
            } catch (JavaModelException e) {
            }
        }
    }

    /* (non-Javadoc)
     * @see org.eclipse.pde.internal.ui.search.AbstractSearchResultPage#createLabelProvider()
     */
    protected ILabelProvider createLabelProvider() {
        return new LabelProvider();
    }

    /* (non-Javadoc)
     * @see org.eclipse.pde.internal.ui.search.AbstractSearchResultPage#createViewerSorter()
     */
    protected ViewerComparator createViewerComparator() {
        return new Comparator();
    }

}