/******************************************************************************* * Copyright (c) 2000, 2008 QNX Software Systems 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: * QNX Software Systems - Initial API and implementation * Anton Leherbauer (Wind River Systems) *******************************************************************************/ package org.eclipse.cdt.ui.actions; import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.internal.ui.actions.SelectionConverter; import org.eclipse.cdt.internal.ui.editor.CEditorMessages; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchSite; import org.eclipse.ui.PartInitException; import org.eclipse.ui.actions.SelectionProviderAction; import org.eclipse.ui.part.ISetSelectionTarget; import org.eclipse.ui.texteditor.ITextEditor; /** * This class will open the C/C++ Projects view and highlight the * selected resource matching the current resouce being edited in * the C/C++ Editor. It uses the IShowInSource/IShowInTarget to * accomplish this task so as to provide some additional portability * and future proofing. * * @deprecated Use generic IShowInTarget support instead. */ @Deprecated public class ShowInCViewAction extends SelectionProviderAction { private IWorkbenchPage page; private ITextEditor fEditor; public ShowInCViewAction(IWorkbenchSite site) { this(site.getPage(), site.getSelectionProvider()); } public ShowInCViewAction(ITextEditor editor) { this(editor.getEditorSite().getWorkbenchWindow().getActivePage(), editor.getSelectionProvider()); fEditor = editor; } public ShowInCViewAction(IWorkbenchPage page, ISelectionProvider viewer) { super(viewer, CEditorMessages.ShowInCView_label); setToolTipText(CEditorMessages.ShowInCView_tooltip); setDescription(CEditorMessages.ShowInCView_description); this.page = page; setDescription(CEditorMessages.ShowInCView_tooltip); //WorkbenchHelp.setHelp(this, ICHelpContextIds.SHOW_IN_CVIEW_ACTION); } @Override public void run() { ISelection selection = getSelection(); if (selection instanceof ITextSelection) { run(fEditor); } else if (selection instanceof IStructuredSelection) { run((IStructuredSelection)selection); } } public void run(IStructuredSelection selection) { if (page == null) { page = CUIPlugin.getActivePage(); if (page == null) { return; } } //Locate a source and a target for us to use try { IWorkbenchPart part = page.showView(CUIPlugin.CVIEW_ID); if (part instanceof ISetSelectionTarget) { ((ISetSelectionTarget) part).selectReveal(selection); } } catch(PartInitException ex) { } } public void run(ITextEditor editor) { if (editor != null) { try { ICElement celement = SelectionConverter.getElementAtOffset(editor); if (celement != null) { run(new StructuredSelection(celement)); } } catch (CModelException e) { } } } /* * (non-Javadoc) * Method declared on SelectionProviderAction. */ @Override public void selectionChanged(IStructuredSelection selection) { setEnabled(!getSelection().isEmpty()); } }