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(); }
@Override public void earlyStartup() { EditorRegistry editorReg = (EditorRegistry)PlatformUI.getWorkbench().getEditorRegistry(); EditorDescriptor editor = (EditorDescriptor)editorReg.findEditor("org.eclipse.ui.DefaultTextEditor"); FileEditorMapping mapping = new FileEditorMapping("inf"); mapping.addEditor(editor); mapping.setDefaultEditor(editor); IFileEditorMapping[] mappings = editorReg.getFileEditorMappings(); FileEditorMapping[] newMappings = new FileEditorMapping[mappings.length+1]; for (int i = 0; i < mappings.length; i++) { newMappings[i] = (FileEditorMapping) mappings[i]; } newMappings[mappings.length] = mapping; Display.getDefault().asyncExec(new Runnable() { @Override public void run() { editorReg.setFileEditorMappings(newMappings); } }); //reg.setDefaultEditor("inf", "org.eclipse.ui.DefaultTextEditor"); }
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 void setAnATLyzerDefaultEditor() { String extension = "atl"; String editorId = "org.eclipse.m2m.atl.adt.editor.AtlEditor"; EditorRegistry editorReg = (EditorRegistry)PlatformUI.getWorkbench().getEditorRegistry(); //EditorDescriptor editor = (EditorDescriptor) editorReg.findEditor(editorId); //editor. IFileEditorMapping[] mappings = editorReg.getFileEditorMappings(); for (IFileEditorMapping mapping : mappings) { if ( "atl".equals(mapping.getExtension()) ) { IEditorDescriptor[] descriptors = mapping.getEditors(); IEditorDescriptor anatlyzerEditor = null; for (IEditorDescriptor editorDesc : descriptors) { if ( "anatlyzer.atl.editor.AtlEditorExt".equals( ((EditorDescriptor) editorDesc).getClassName()) ) { anatlyzerEditor = editorDesc; break; } } if ( anatlyzerEditor != null ) { ((FileEditorMapping) mapping).setDefaultEditor((EditorDescriptor) anatlyzerEditor); break; } } } }
@Override public void register(IVizService service) { if (service != null) { String name = service.getName(); // Put the service in service map so it can be retrieved later serviceMap.put(name, service); // Register the plot editor as default editor for all file // extensions handled by the new viz service for (String ext : service.getSupportedExtensions()) { EditorRegistry editorReg = (EditorRegistry) PlatformUI .getWorkbench().getEditorRegistry(); EditorDescriptor editor = (EditorDescriptor) editorReg .findEditor("org.eclipse.eavp.viz.service.PlotEditor"); FileEditorMapping mapping = new FileEditorMapping(ext); mapping.addEditor(editor); mapping.setDefaultEditor(editor); IFileEditorMapping[] mappings = editorReg .getFileEditorMappings(); FileEditorMapping[] newMappings = new FileEditorMapping[mappings.length + 1]; for (int i = 0; i < mappings.length; i++) { newMappings[i] = (FileEditorMapping) mappings[i]; } newMappings[mappings.length] = mapping; editorReg.setFileEditorMappings(newMappings); } logger.info("VizServiceFactory message: " + "Viz service \"" + name + "\" registered."); } return; }
public void run() { EditorRegistry registry = (EditorRegistry) WorkbenchPlugin.getDefault().getEditorRegistry(); IFileEditorMapping[] mappings = registry.getFileEditorMappings(); IFileEditorMapping c = null; IFileEditorMapping cws = null; // Search Class file editor mappings for (IFileEditorMapping mapping : mappings) { if (mapping.getExtension().equals("class")) { // ... Helios 3.6, Indigo 3.7, Juno 4.2, Kepler 4.3, ... c = mapping; } else if (mapping.getExtension().equals("class without source")) { // Juno 4.2, Kepler 4.3, ... cws = mapping; } } if ((c != null) && (cws != null)) { // Search JD editor descriptor on "class" extension for (IEditorDescriptor descriptor : c.getEditors()) { if (descriptor.getId().equals(EDITOR_ID)) { // Remove JD editor on "class" extension //((FileEditorMapping)c).removeEditor((EditorDescriptor)descriptor); // Set JD as default editor on "class without source" extension registry.setDefaultEditor( "." + cws.getExtension(), descriptor.getId()); break; } } // Restore the default editor for "class" extension IEditorDescriptor defaultClassFileEditor = registry.findEditor(JavaUI.ID_CF_EDITOR); if (defaultClassFileEditor != null) { registry.setDefaultEditor( "." + c.getExtension(), JavaUI.ID_CF_EDITOR); } registry.setFileEditorMappings((FileEditorMapping[]) mappings); registry.saveAssociations(); } }
private void scheduleJob(final FileAssociationDef def) { if (def != null) { Job job = new UIJob(mJobName) { private boolean isValidEditor(String[] editorIds, IEditorDescriptor descriptor) { if (descriptor != null) { String id = descriptor.getId(); for (int i = 0; i < editorIds.length; i++) { if (editorIds[i].equals(id)) { return true; } } } return false; } @Override public IStatus runInUIThread(final IProgressMonitor monitor) { if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } if (!cCheckedAssociations.contains(def.getAssociationId())) { final boolean toggleState = getFileAssociationChecking(def.getAssociationId()); if (toggleState) { cCheckedAssociations.add(def.getAssociationId()); final String[] fileTypes = def.getFileTypes(); for (int i = 0; i < fileTypes.length; i++) { if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } if (!isValidEditor(def.getEditorIds(), mEditorRegistry.getDefaultEditor(fileTypes[i]))) { if (!monitor.isCanceled()) { String[] args = new String[]{def.getFileTypesName(), def.getEditorsName()}; MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoCancelQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), mDialogTitleFormat.format(args), mDialogMessageFormat.format(args), mDialogToggleMessageFormat.format(args), !toggleState, null, null); int rc = dialog.getReturnCode(); switch (rc) { case IDialogConstants.YES_ID: { for (int j = 0; j < fileTypes.length; j++) { mEditorRegistry.setDefaultEditor(fileTypes[j], def.getEditorIds()[0]); } //Cast to inner class because otherwise it cannot be saved. ((EditorRegistry)mEditorRegistry).saveAssociations(); //Fall through to next case to save the toggle state } //$FALL-THROUGH$ case IDialogConstants.NO_ID: { boolean newToggleState = !dialog.getToggleState(); if (toggleState != newToggleState) { setFileAssociationChecking(def.getAssociationId(), newToggleState); } break; } case IDialogConstants.CANCEL_ID: return Status.CANCEL_STATUS; } } break; } } } } if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } else { return Status.OK_STATUS; } } }; job.setRule(cSchedulingRule); job.schedule(5000); } }