下面列出了怎么用org.eclipse.ui.IEditorDescriptor的API类实例代码及写法,或者点击链接到github查看源代码。
private void updateDefaultEditorMappingIfAbsent() {
final EditorRegistry registry = (EditorRegistry) WorkbenchPlugin.getDefault().getEditorRegistry();
for (final IFileEditorMapping editorMapping : registry.getFileEditorMappings()) {
final IEditorDescriptor defaultEditor = editorMapping.getDefaultEditor();
if (null == defaultEditor) {
final String extension = editorMapping.getExtension();
LOGGER.info("No default editor is associated with files with extension: '." + extension + "'.");
final IEditorDescriptor defaultTextEditor = registry.findEditor(DEFAULT_TEXT_EDITOR_ID);
if (null != defaultTextEditor) {
((FileEditorMapping) editorMapping).setDefaultEditor(defaultTextEditor);
String editorName = defaultTextEditor.getLabel();
if (null == editorName) {
editorName = defaultTextEditor.getId();
}
if (null != editorName) {
LOGGER.info("Associated files with extension " + extension + " with '" + editorName + "'.");
}
}
}
}
registry.saveAssociations();
PrefUtil.savePrefs();
}
public IEditorDescriptor findXbaseEditor(IEditorInput editorInput, boolean ignorePreference) {
IFile file = ResourceUtil.getFile(editorInput);
if (file == null)
return null;
if (!ignorePreference) {
if (file.exists()) {
try {
String favoriteEditor = file.getPersistentProperty(IDE.EDITOR_KEY);
if (favoriteEditor != null)
return null;
} catch (CoreException e) {
logger.debug(e.getMessage(), e);
}
}
}
// TODO stay in same editor if local navigation
Decision decision = decisions.decideAccordingToCaller();
if (decision == Decision.FORCE_JAVA) {
return null;
}
IEclipseTrace traceToSource = traceInformation.getTraceToSource(file);
return getXtextEditor(traceToSource);
}
@Override
public boolean collectSourceFileOpeners(IEditorPart editor, IAcceptor<FileOpener> acceptor) {
if (!(editor instanceof XtextEditor) && editor.getEditorInput() != null) {
try {
IClassFile classFile = Adapters.adapt(editor, IClassFile.class);
if (classFile == null) {
return false;
}
ITrace trace = traceForTypeRootProvider.getTraceToSource(classFile);
if (trace == null) {
return false;
}
for (ILocationInResource location : trace.getAllAssociatedLocations()) {
String name = location.getAbsoluteResourceURI().getURI().lastSegment();
IEditorDescriptor editorDescriptor = IDE.getEditorDescriptor(name);
acceptor.accept(createEditorOpener(editor.getEditorInput(), editorDescriptor.getId()));
return true;
}
} catch (PartInitException e) {
LOG.error(e.getMessage(), e);
}
}
return false;
}
protected void showMatch( Match match, int currentOffset
, int currentLength, boolean activate
) throws PartInitException
{
if (match instanceof ModulaSymbolMatch) {
try {
ModulaSymbolMatch em = (ModulaSymbolMatch)match;
IFile f = em.getFile();
IWorkbenchPage page = WorkbenchUtils.getActivePage();
IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(f.getName());
IEditorPart ep = page.openEditor(new FileEditorInput(f), desc.getId());
ITextEditor te = (ITextEditor)ep;
Control ctr = (Control)te.getAdapter(Control.class);
ctr.setFocus();
te.selectAndReveal(em.getOffset(), em.getLength());
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void initializeTitle(final IEditorInput input) {
final Image oldImage = fTitleImage;
fTitleImage = null;
String title = ""; //$NON-NLS-1$
if (input != null) {
final IEditorRegistry editorRegistry = PlatformUI.getWorkbench().getEditorRegistry();
final IEditorDescriptor editorDesc = editorRegistry.findEditor(getSite().getId());
final ImageDescriptor imageDesc = editorDesc != null ? editorDesc.getImageDescriptor() : null;
fTitleImage = imageDesc != null ? imageDesc.createImage() : null;
title = input.getName();
}
setTitleImage(fTitleImage);
setPartName(title);
firePropertyChange(PROP_DIRTY);
if (oldImage != null && !oldImage.isDisposed())
oldImage.dispose();
}
public IEditorPart openAndSelect(IWorkbenchPage wbPage, IFile file, int offset, int length, boolean activate) throws PartInitException {
String editorId= null;
IEditorDescriptor desc= IDE.getEditorDescriptor(file);
if (desc == null || !desc.isInternal()) {
editorId= "org.eclipse.ui.DefaultTextEditor"; //$NON-NLS-1$
} else {
editorId= desc.getId();
}
IEditorPart editor;
if (NewSearchUI.reuseEditor()) {
editor= showWithReuse(file, wbPage, editorId, activate);
} else {
editor= showWithoutReuse(file, wbPage, editorId, activate);
}
if (editor instanceof ITextEditor) {
ITextEditor textEditor= (ITextEditor) editor;
textEditor.selectAndReveal(offset, length);
} else if (editor != null) {
showWithMarker(editor, file, offset, length);
}
return editor;
}
/**
* Opens a subdiagram for a given {@link Diagram}
*/
public static IEditorPart openEditor(Diagram diagramToOpen) {
IFile file = WorkspaceSynchronizer.getFile(diagramToOpen.eResource());
try {
IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(file.getName());
final IWorkbenchPage wbPage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
if (diagramToOpen.getElement() instanceof Statechart) {
return wbPage.openEditor(new FileEditorInput(file), desc.getId());
} else if (diagramToOpen.getElement() instanceof State) {
return wbPage.openEditor(new DiagramEditorInput(diagramToOpen), desc.getId());
}
} catch (PartInitException e) {
e.printStackTrace();
}
return null;
}
public static void resetDefaultEditor(String extension) {
EditorRegistry editorRegistry = (EditorRegistry) PlatformUI.getWorkbench().getEditorRegistry();
IFileEditorMapping[] editorMappings = editorRegistry.getFileEditorMappings();
// Search the file=>editor mappings for the specified extension
for (IFileEditorMapping editorMapping : editorMappings) {
if (extension.equals(editorMapping.getExtension())) {
FileEditorMapping internalMapping = (FileEditorMapping) editorMapping;
// Only need to do anything if there's an explicit default set
if (internalMapping.getDeclaredDefaultEditors().length > 0) {
// Clear any default editor associations for this extension
List<IEditorDescriptor> list = new ArrayList<IEditorDescriptor>();
internalMapping.setDefaultEditors(list);
// Save the updated editor registry to disk
editorRegistry.saveAssociations();
// TODO: remove
GWTPluginLog.logInfo("Reset default editor for extension: "
+ extension);
}
break;
}
}
}
private String getEditorId(IFileStore file) {
IWorkbench workbench = PlatformUI.getWorkbench();
IEditorRegistry editorRegistry= workbench.getEditorRegistry();
IEditorDescriptor descriptor= editorRegistry.getDefaultEditor(file.getName(), getContentType(file));
// check the OS for in-place editor (OLE on Win32)
if (descriptor == null && editorRegistry.isSystemInPlaceEditorAvailable(file.getName()))
descriptor= editorRegistry.findEditor(IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID);
// check the OS for external editor
if (descriptor == null && editorRegistry.isSystemExternalEditorAvailable(file.getName()))
descriptor= editorRegistry.findEditor(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID);
if (descriptor != null)
return descriptor.getId();
return EditorsUI.DEFAULT_TEXT_EDITOR_ID;
}
/**
* Open a file in an editor and return the opened editor part.<br>
* This method will try to open the file in an internal editor, unless there is no editor descriptor assigned to
* that file type.
*
* @param file
* @return The {@link IEditorPart} that was created when the file was opened; Return null in case of an error
*/
public static IEditorPart openInEditor(File file)
{
// NOTE: Moved from PHP's EditorUtils
if (file == null)
{
IdeLog.logError(CommonEditorPlugin.getDefault(),
"Error open a file in the editor", new IllegalArgumentException("file is null")); //$NON-NLS-1$ //$NON-NLS-2$
return null;
}
try
{
URI uri = file.toURI();
IEditorDescriptor desc = getEditorDescriptor(uri);
String editorId = (desc == null) ? IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID : desc.getId();
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
return IDE.openEditor(page, uri, editorId, true);
}
catch (Exception e)
{
IdeLog.logError(CommonEditorPlugin.getDefault(), "Error open a file in the editor", e); //$NON-NLS-1$
}
return null;
}
@Override
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
setSite(site);
setInput(input);
setPartName(input.getName());
Image oldTitleImage = titleImage;
if (input != null) {
IEditorRegistry editorRegistry = PlatformUI.getWorkbench().getEditorRegistry();
IEditorDescriptor editorDesc = editorRegistry.findEditor(getSite().getId());
ImageDescriptor imageDesc = editorDesc != null ? editorDesc.getImageDescriptor() : null;
titleImage = imageDesc != null ? imageDesc.createImage() : null;
}
setTitleImage(titleImage);
if (oldTitleImage != null && !oldTitleImage.isDisposed()) {
oldTitleImage.dispose();
}
FileEditorInput fileInput = (FileEditorInput) input;
htmlUrl = fileInput.getFile().getLocation().toOSString();
}
/**
* 启动编辑器。
*
* @param site
* the site
* @param input
* the input
* @throws PartInitException
* the part init exception
* @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite,
* org.eclipse.ui.IEditorInput)
*/
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("init(IEditorSite site, IEditorInput input)");
}
setSite(site);
setInput(input);
// 设置Editor标题栏的显示名称,否则名称用plugin.xml中的name属性
setPartName(input.getName());
Image oldTitleImage = titleImage;
if (input != null) {
IEditorRegistry editorRegistry = PlatformUI.getWorkbench().getEditorRegistry();
IEditorDescriptor editorDesc = editorRegistry.findEditor(getSite().getId());
ImageDescriptor imageDesc = editorDesc != null ? editorDesc.getImageDescriptor() : null;
titleImage = imageDesc != null ? imageDesc.createImage() : null;
}
setTitleImage(titleImage);
if (oldTitleImage != null && !oldTitleImage.isDisposed()) {
oldTitleImage.dispose();
}
getSite().setSelectionProvider(this);
}
@Override
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
setSite(site);
setInput(input);
setPartName(input.getName());
Image oldTitleImage = titleImage;
if (input != null) {
IEditorRegistry editorRegistry = PlatformUI.getWorkbench().getEditorRegistry();
IEditorDescriptor editorDesc = editorRegistry.findEditor(getSite().getId());
ImageDescriptor imageDesc = editorDesc != null ? editorDesc.getImageDescriptor() : null;
titleImage = imageDesc != null ? imageDesc.createImage() : null;
}
setTitleImage(titleImage);
if (oldTitleImage != null && !oldTitleImage.isDisposed()) {
oldTitleImage.dispose();
}
FileEditorInput fileInput = (FileEditorInput) input;
htmlUrl = fileInput.getFile().getLocation().toOSString();
}
/**
* 启动编辑器。
*
* @param site
* the site
* @param input
* the input
* @throws PartInitException
* the part init exception
* @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite,
* org.eclipse.ui.IEditorInput)
*/
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("init(IEditorSite site, IEditorInput input)");
}
setSite(site);
setInput(input);
// 设置Editor标题栏的显示名称,否则名称用plugin.xml中的name属性
setPartName(input.getName());
Image oldTitleImage = titleImage;
if (input != null) {
IEditorRegistry editorRegistry = PlatformUI.getWorkbench().getEditorRegistry();
IEditorDescriptor editorDesc = editorRegistry.findEditor(getSite().getId());
ImageDescriptor imageDesc = editorDesc != null ? editorDesc.getImageDescriptor() : null;
titleImage = imageDesc != null ? imageDesc.createImage() : null;
}
setTitleImage(titleImage);
if (oldTitleImage != null && !oldTitleImage.isDisposed()) {
oldTitleImage.dispose();
}
getSite().setSelectionProvider(this);
}
private String getEditorId( IFileStore file )
{
IWorkbench workbench = window.getWorkbench( );
IEditorRegistry editorRegistry = workbench.getEditorRegistry( );
IEditorDescriptor descriptor = editorRegistry.getDefaultEditor( file.getName( ),
getContentType( file ) );
// check the OS for in-place editor (OLE on Win32)
if ( descriptor == null
&& editorRegistry.isSystemInPlaceEditorAvailable( file.getName( ) ) )
{
descriptor = editorRegistry.findEditor( IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID );
}
// check the OS for external editor
if ( descriptor == null
&& editorRegistry.isSystemExternalEditorAvailable( file.getName( ) ) )
{
descriptor = editorRegistry.findEditor( IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID );
}
return ( descriptor == null ) ? "" : descriptor.getId( ); //$NON-NLS-1$
}
public IEditorPart openAndSelect(IWorkbenchPage wbPage, IFile file, int offset, int length, boolean activate)
throws PartInitException {
String editorId = null;
IEditorDescriptor desc = IDE.getEditorDescriptor(file);
if (desc == null || !desc.isInternal()) {
editorId = "org.eclipse.ui.DefaultTextEditor"; //$NON-NLS-1$
} else {
editorId = desc.getId();
}
IEditorPart editor;
if (NewSearchUI.reuseEditor()) {
editor = showWithReuse(file, wbPage, editorId, activate);
} else {
editor = showWithoutReuse(file, wbPage, editorId, activate);
}
if (editor instanceof ITextEditor) {
ITextEditor textEditor = (ITextEditor) editor;
textEditor.selectAndReveal(offset, length);
} else if (editor != null) {
showWithMarker(editor, file, offset, length);
}
return editor;
}
@Override
protected void openFiles(PythonpathZipChildTreeNode[] pythonPathFilesSelected) {
for (PythonpathZipChildTreeNode n : pythonPathFilesSelected) {
try {
if (PythonPathHelper.isValidSourceFile(n.zipPath)) {
new PyOpenAction().run(new ItemPointer(n.zipStructure.file, new Location(), new Location(), null,
n.zipPath));
} else {
IEditorRegistry editorReg = PlatformUI.getWorkbench().getEditorRegistry();
IEditorDescriptor defaultEditor = editorReg.getDefaultEditor(n.zipPath);
PydevZipFileStorage storage = new PydevZipFileStorage(n.zipStructure.file, n.zipPath);
PydevZipFileEditorInput input = new PydevZipFileEditorInput(storage);
if (defaultEditor != null) {
IDE.openEditor(page, input, defaultEditor.getId());
} else {
IDE.openEditor(page, input, EditorsUI.DEFAULT_TEXT_EDITOR_ID);
}
}
} catch (PartInitException e) {
Log.log(e);
}
}
}
private void initializeTitle(IEditorInput input) {
Image oldImage = fTitleImage;
fTitleImage = null;
String title = ""; //$NON-NLS-1$
if (input != null) {
IEditorRegistry editorRegistry = PlatformUI.getWorkbench()
.getEditorRegistry();
IEditorDescriptor editorDesc = editorRegistry.findEditor(getSite()
.getId());
ImageDescriptor imageDesc = editorDesc != null ? editorDesc
.getImageDescriptor() : null;
fTitleImage = imageDesc != null ? imageDesc.createImage() : null;
title = input.getName();
}
setTitleImage(fTitleImage);
setPartName(title);
firePropertyChange(PROP_DIRTY);
if (oldImage != null && !oldImage.isDisposed())
oldImage.dispose();
}
private String getEditorId(String fileName) {
if (fileName.endsWith("xml")) { //$NON-NLS-1$
//if file type is .xml, return the associated XML editor
IEditorRegistry editorReg = PlatformUI.getWorkbench().getEditorRegistry();
IEditorDescriptor desc = editorReg.getDefaultEditor(fileName, Platform.getContentTypeManager().findContentTypeFor(fileName));
if (desc != null) {
return desc.getId();
}
}
//use eclipse default text editor for all other files
return IDEWorkbenchPlugin.DEFAULT_TEXT_EDITOR_ID;
}
private void tryOpenFileInEditor(final IFile file, final IFile generatedFile) {
final IEditorDescriptor desc = getWorkbench().getEditorRegistry().getDefaultEditor(file.getName());
if (null != desc) {
final IWorkbenchPage page = getWorkbench().getActiveWorkbenchWindow().getActivePage();
try {
page.openEditor(new FileEditorInput(generatedFile), desc.getId());
} catch (final PartInitException e) {
throw new RuntimeException("Error while trying to open generated JS file for " + file, e);
}
}
}
public IEditorDescriptor[] overrideEditors(IEditorInput editorInput, IContentType contentType, IEditorDescriptor[] editorDescriptors) {
IEditorDescriptor xbaseEditor = findXbaseEditor(editorInput, true);
if (xbaseEditor != null) {
List<IEditorDescriptor> result = Lists.asList(xbaseEditor, editorDescriptors);
return (IEditorDescriptor[]) result.toArray(new IEditorDescriptor[result.size()]);
}
return editorDescriptors;
}
public IEditorDescriptor[] overrideEditors(String fileName, IContentType contentType, IEditorDescriptor[] editorDescriptors) {
IEditorDescriptor xbaseEditor = findXbaseEditor(fileName, true);
if (xbaseEditor != null) {
List<IEditorDescriptor> result = Lists.asList(xbaseEditor, editorDescriptors);
return (IEditorDescriptor[]) result.toArray(new IEditorDescriptor[result.size()]);
}
return editorDescriptors;
}
protected IEditorDescriptor findXbaseEditor(String fileName, boolean ignorePreference) {
if (decisions.isJDI()) {
String file = debugPluginListener.findXtextSourceFileNameForClassFile(fileName);
if (file != null)
return getXtextEditor(URI.createURI(file));
}
if (decisions.decideAccordingToCallerForSimpleFileName() == Decision.FORCE_JAVA) {
return null;
}
IType type = findJavaTypeForSimpleFileName(fileName);
if (type != null) {
if (!ignorePreference) {
IResource resource = type.getResource();
if (resource != null) {
try {
// the user has chosen to always use a particular editor, e.g. by means of
// Open With in the package explorer
String favoriteEditor = resource.getPersistentProperty(IDE.EDITOR_KEY);
if (favoriteEditor != null)
return null;
} catch (CoreException e) {
logger.debug(e.getMessage(), e);
}
}
}
IEclipseTrace trace = traceForTypeRootProvider.getTraceToSource(type.getTypeRoot());
return getXtextEditor(trace);
}
return null;
}
/**
* @param traceToSource
*/
protected IEditorDescriptor getXtextEditor(IEclipseTrace traceToSource) {
if (traceToSource != null) {
Iterator<? extends ILocationInEclipseResource> sourceInformationIterator = traceToSource.getAllAssociatedLocations().iterator();
if (sourceInformationIterator.hasNext()) {
ILocationInEclipseResource sourceInformation = sourceInformationIterator.next();
AbsoluteURI absoluteURI = sourceInformation.getAbsoluteResourceURI();
if (absoluteURI != null) {
URI uri = absoluteURI.getURI();
return getXtextEditor(uri);
}
}
}
return null;
}
protected IEditorDescriptor getXtextEditor(URI uri) {
IResourceServiceProvider serviceProvider = resourceServiceProviderRegistry.getResourceServiceProvider(uri);
if (serviceProvider != null) {
XtextEditorInfo editorInfo = serviceProvider.get(XtextEditorInfo.class);
if (editorInfo != null) {
IEditorRegistry editorRegistry = workbench.getEditorRegistry();
IEditorDescriptor result = editorRegistry.findEditor(editorInfo.getEditorId());
return result; // null is ok
}
}
return null;
}
@Override
public void open(IWorkbenchPage page) {
try {
IEditorInput input = EditorUtils.createEditorInput(storage);
IEditorDescriptor editorDescriptor = IDE.getEditorDescriptor(storage.getName());
IEditorPart opened = IDE.openEditor(page, input, editorDescriptor.getId());
if (region != null && opened instanceof ITextEditor) {
ITextEditor openedTextEditor = (ITextEditor) opened;
openedTextEditor.selectAndReveal(region.getOffset(), region.getLength());
}
} catch (PartInitException e) {
LOG.error(e.getMessage(), e);
}
}
public ImageDescriptor getDefaultEditorImageDescriptor(String fileName) {
if (fileName != null && workbench != null) {
IEditorDescriptor defaultEditor = workbench.getEditorRegistry().getDefaultEditor(fileName);
if (defaultEditor != null) {
return defaultEditor.getImageDescriptor();
} else {
return workbench.getEditorRegistry().getSystemExternalEditorImageDescriptor(fileName);
}
}
return null;
}
@Override
public Image getDefaultImage() {
IEditorRegistry editorRegistry = PlatformUI.getWorkbench().getEditorRegistry();
IEditorDescriptor editorDesc = editorRegistry.findEditor(getSite().getId());
ImageDescriptor imageDesc = editorDesc != null ? editorDesc.getImageDescriptor() : null;
return imageDesc != null ? imageHelper.getImage(imageDesc) : super.getDefaultImage();
}
public static String getEditorID(IEditorInput input) throws PartInitException {
Assert.isNotNull(input);
IEditorDescriptor editorDescriptor;
if (input instanceof IFileEditorInput)
editorDescriptor= IDE.getEditorDescriptor(((IFileEditorInput)input).getFile());
else {
editorDescriptor= IDE.getEditorDescriptor(input.getName());
}
return editorDescriptor.getId();
}
private static String getEditorId(File file) {
IWorkbench workbench = PlatformUI.getWorkbench();
IEditorRegistry editorRegistry = workbench.getEditorRegistry();
IEditorDescriptor descriptor = editorRegistry.getDefaultEditor(file.getName(), getContentType(file));
if (descriptor != null) {
return descriptor.getId();
}
return EditorsUI.DEFAULT_TEXT_EDITOR_ID;
}