インタフェース ISetSelectionTarget を使う
package org.eclipse.ui.part;
import org.eclipse.jface.viewers.ISelection;
public interface ISetSelectionTarget {
public void selectReveal(ISelection selection);
}
例えば、org.eclipse.ui.wizards.newresource.BasicNewResourceWizard では
こんな感じで使われている
public static void selectAndReveal(IResource resource,
IWorkbenchWindow window) {
・・・
IWorkbenchPage page = window.getActivePage();
List parts = new ArrayList();
IWorkbenchPartReference refs[] = page.getViewReferences();
for (int i = 0; i < refs.length; i++) {
IWorkbenchPart part = refs[i].getPart(false);
if (part != null) {
parts.add(part);
}
}
refs = page.getEditorReferences();
for (int i = 0; i < refs.length; i++) {
if (refs[i].getPart(false) != null) {
parts.add(refs[i].getPart(false));
}
}
final ISelection selection = new StructuredSelection(resource);
Iterator itr = parts.iterator();
while (itr.hasNext()) {
IWorkbenchPart part = (IWorkbenchPart) itr.next();
ISetSelectionTarget target = null;
if (part instanceof ISetSelectionTarget) {
target = (ISetSelectionTarget) part;
} else {
target = (ISetSelectionTarget) part
.getAdapter(ISetSelectionTarget.class);
}
if (target != null) {
// select and reveal resource
final ISetSelectionTarget finalTarget = target;
window.getShell().getDisplay().asyncExec(new Runnable() {
public void run() {
finalTarget.selectReveal(selection);
}
});
}
}
}
ちなみに、ISetSelectionTarget を実装しているクラスは
CommonNavigator , ( ProjectExplorer ) , PackageExplorerPart
ぐらい。
最終更新:2010年10月08日 20:59