blob: 9ae31957a3d2a8339ee434500e74b17dfccd3e36 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.ui.search2;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.PlatformObject;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.util.Assert;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.IKeyBindingService;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.search.ui.ISearchResultViewEntry;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.search.IJavaSearchUIConstants;
import org.eclipse.jdt.internal.ui.search.SearchMessages;
import org.eclipse.jdt.internal.ui.util.ExceptionHandler;
import org.eclipse.jdt.internal.ui.util.SelectionUtil;
/**
* This class adapts a Search view site.
* It converts selection of Search view entries to
* be a selection of Java elements.
*
* @since 2.0
*/
class SearchViewSiteAdapter extends PlatformObject implements IWorkbenchPartSite {
private ISelectionProvider fProvider;
private IWorkbenchSite fSite;
private ISelectionChangedListener fListener;
public SearchViewSiteAdapter(IWorkbenchSite site){
fSite= site;
setSelectionProvider(site.getSelectionProvider());
}
public IWorkbenchPage getPage() {
return fSite.getPage();
}
public ISelectionProvider getSelectionProvider() {
return fProvider;
}
public Shell getShell() {
return JavaPlugin.getActiveWorkbenchShell();
}
public IWorkbenchWindow getWorkbenchWindow() {
return fSite.getWorkbenchWindow();
}
public void setSelectionProvider(final ISelectionProvider provider) {
Assert.isNotNull(provider);
fProvider=
new ISelectionProvider() {
public void addSelectionChangedListener(final ISelectionChangedListener listener) {
fListener=
new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
listener.selectionChanged(new SelectionChangedEvent(fProvider, convertSelection(event.getSelection())));
}
};
provider.addSelectionChangedListener(fListener);
}
public ISelection getSelection() {
return convertSelection(provider.getSelection());
}
public void removeSelectionChangedListener(ISelectionChangedListener listener) {
provider.removeSelectionChangedListener(fListener);
}
public void setSelection(ISelection selection) {
// empty implementation
}
};
}
private ISelection convertSelection(ISelection selection) {
Object element= SelectionUtil.getSingleElement(selection);
if (element instanceof ISearchResultViewEntry) {
IMarker marker= ((ISearchResultViewEntry)element).getSelectedMarker();
if (marker != null && marker.exists())
try {
IJavaElement je= JavaCore.create((String) marker.getAttribute(IJavaSearchUIConstants.ATT_JE_HANDLE_ID));
if (je != null)
return new StructuredSelection(je);
} catch (CoreException ex) {
ExceptionHandler.log(ex, SearchMessages.getString("Search.Error.createJavaElement.message")); //$NON-NLS-1$
}
}
return StructuredSelection.EMPTY;
}
// --------- only empty stubs below ---------
/*
* @see org.eclipse.ui.IWorkbenchPartSite#getId()
*/
public String getId() {
return null;
}
/*
* @see org.eclipse.ui.IWorkbenchPartSite#getKeyBindingService()
*/
public IKeyBindingService getKeyBindingService() {
return null;
}
/*
* @see org.eclipse.ui.IWorkbenchPartSite#getPluginId()
*/
public String getPluginId() {
return null;
}
/*
* @see org.eclipse.ui.IWorkbenchPartSite#getRegisteredName()
*/
public String getRegisteredName() {
return null;
}
/*
* @see org.eclipse.ui.IWorkbenchPartSite#registerContextMenu(MenuManager, ISelectionProvider)
*/
public void registerContextMenu(MenuManager menuManager, ISelectionProvider selectionProvider) {
// empty implementation
}
/*
* @see org.eclipse.ui.IWorkbenchPartSite#registerContextMenu(String, MenuManager, ISelectionProvider)
*/
public void registerContextMenu(String menuId, MenuManager menuManager, ISelectionProvider selectionProvider) {
// empty implementation
}
}