[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [platform-ui-dev] Lazy creating editors / Changes to getEditors().
|
I notified the component owners by email as well.
The changes -are- in today's build.
Nick
Jared Burns <jared-eclipse@xxxxxxxxx>
Sent by: platform-ui-dev-admin@xxxxxxxxxxx
05/14/02 11:15 AM
Please respond to platform-ui-dev
To: platform-ui-dev@xxxxxxxxxxx
cc:
Subject: Re: [platform-ui-dev] Lazy creating editors / Changes to getEditors().
Have appropriate bugs been opened in the affected components? Not all
Eclipse
developers are subscribed to this mailing list.
Also, were these changes included in today's (20020514) build?
Thanks,
- Jared
On Monday 13 May 2002 09:37 am, you wrote:
> In order to lazy create editors on startup some changes to
org.eclipse.ui
> have happened. This changes will improve the startup time in case the
user
> has many open editors and in case he has editors from different plugins.
>
> The API getEditors() was deprecated and the APIs getEditorReferences(),
> getDirtyEditors (convenience API) and findEditor(input) were added to
> IWorkbenchPage. To keep backward compatibility, getEditors() was changed
> to initialize/instanciate all editors before returning them. So
> getEditors() should be avoided otherwise the first caller will pay the
> time saved from the startup.
>
> The API getViews was deprecated as well. The intention is to lazy create
> views so that views hidden on a tab folder are not going to be
> instanciated until they are made visible. The API getViewReferences was
> added to IWorkbenchPage but the implementation has not changed yet.
>
> Here is a list of senders of getEditors() from Eclipse Platform and JDT.
I
> have changed most of them in order to test it. It is important that
these
> methods are changed specially if they get called on startup. Any
operation
> that includes a call to getEditors may take seconds instead of
> milliseconds since it is going to activate plugins and create editors.
>
> Thanks.
> Eduardo.
>
> 1) run() - org.eclipse.ant.internal.ui.AntAction -> Use saveAllEditors
> instead.
> public void run() {
> if (file == null)
> return;
>
> // save the modified files if required by the user
> if
>
(AntUIPlugin.getPlugin().getPreferenceStore().getBoolean(IAntPreferenceCons
>tants.AUTO_SAVE)) {
>
>
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().saveAl
>lEditors(false); }
>
> Project project = extractProject(file);
> if (project == null)
> return;
>
> AntLaunchWizard wizard = new AntLaunchWizard(project,file);
> wizard.setNeedsProgressMonitor(true);
> WizardDialog dialog = new
>
WizardDialog(AntUIPlugin.getPlugin().getWorkbench().getActiveWorkbenchWindo
>w().getShell(),wizard); dialog.create();
> dialog.open();
> }
>
> 2) getDirtyEditors() - org.eclipse.compare.internal.CompareUIPlugin: Use
> getDirtyEditors() instead of getEditors();
> public static IEditorPart[] getDirtyEditors();
>
> 3) getDocument(IFile) - org.eclipse.compare.internal.EditionAction: Use
> findEditor instead
> private IDocument getDocument(IFile file) {
> IWorkbench wb= PlatformUI.getWorkbench();
> if (wb == null)
> return null;
> IWorkbenchWindow[] ws= wb.getWorkbenchWindows();
> if (ws == null)
> return null;
>
> FileEditorInput test= new FileEditorInput(file);
>
> for (int i= 0; i < ws.length; i++) {
> IWorkbenchWindow w= ws[i];
> IWorkbenchPage[] wps= w.getPages();
> if (wps != null) {
> for (int j= 0; j < wps.length; j++) {
> IWorkbenchPage wp= wps[j];
> IEditorPart ep =
> wp.findEditor(test);
> if (ep != null && ep instanceof
> ITextEditor) {
> ITextEditor te=
> (ITextEditor) ep;
> IDocumentProvider dp=
> te.getDocumentProvider();
> if (dp != null) {
> IDocument doc=
> dp.getDocument(ep.getEditorInput());
> if (doc != null)
> return doc;
> }
> }
> }
> }
> }
> return null;
> }
>
>
> 4) openEditorAndSetMarker(IEditorInput, String, int, int, int) -
> org.eclipse.debug.internal.ui.views.LaunchView (2 matches)
> page.getEditorReferences();
> 5) saveState(IMemento) - org.eclipse.debug.internal.ui.views.LaunchView
> page.getEditorReferences();
> 6) linkToEditor(IStructuredSelection) -
> org.eclipse.jdt.internal.ui.browsing.JavaBrowsingPart
> create inputs and use findEditor(IEditorInput) instead
> 7) isOpenInEditor(Object) -
> org.eclipse.jdt.internal.ui.javaeditor.EditorUtility
> public static IEditorPart isOpenInEditor(Object inputElement) {
> IEditorInput input= null;
>
> try {
> input= getEditorInput(inputElement);
> } catch (JavaModelException x) {
> JavaPlugin.log(x.getStatus());
> }
>
> if (input != null) {
> IWorkbenchPage p=
> JavaPlugin.getDefault().getActivePage();
> if (p != null) {
> return p.findEditor(input);
> }
> }
>
> return null;
> }
> 8) getDirtyEditors() - org.eclipse.jdt.internal.ui.JavaPlugin
> Use getDirtyEditors instead of getEditors()
> 9) linkToEditor(IStructuredSelection) -
> org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart
> Use findEditor instead
> 10) selectAndReveal(Object) -
>
org.eclipse.jdt.internal.ui.refactoring.RefactoringSupportFactory.RenameSup
>port IEditorReference refs[] = page.getEditorReferences();
> for (int i = 0; i < refs.length; i++) {
> if(refs[i].getPart(false) != null)
> parts.add(refs[i].getPart(false));
> }
> 11) showInEditor(IMarker, IWorkbenchPage, IEditorInput, String) -
> org.eclipse.jdt.internal.ui.search.GotoMarkerAction
> private void showInEditor(IMarker marker, IWorkbenchPage page,
> IEditorInput input, String editorId) {
> IEditorPart editor= page.findEditor(input);
> if (editor == null) {
> if (fEditor != null && !fEditor.isDirty())
> page.closeEditor(fEditor,
false);
> try {
> editor= page.openEditor(input, editorId,
> false);
> } catch (PartInitException ex) {
> ExceptionHandler.handle(ex,
> SearchMessages.getString("Search.Error.openEditor.title"),
> SearchMessages.getString("Search.Error.openEditor.message"));
> //$NON-NLS-2$ //$NON-NLS-1$
> return;
> }
> } else {
> page.bringToTop(editor);
> }
> if (editor != null) {
> editor.gotoMarker(marker);
> fEditor = editor;
> }
> }
> 12) getEditors() - org.eclipse.jdt.internal.ui.search.SearchUtil
> public static IEditorPart[] getEditors() {
> final Set inputs= new HashSet(7);
> final List result= new ArrayList(0);
> IWorkbench workbench=
> JavaPlugin.getDefault().getWorkbench();
> IWorkbenchWindow[] windows=
> workbench.getWorkbenchWindows();
> for (int i= 0; i < windows.length; i++) {
> IWorkbenchPage[] pages= windows[i].getPages();
> for (int x= 0; x < pages.length; x++) {
> IEditorReference[] editors=
> pages[x].getEditorReferences();
> for (int z= 0; z < editors.length; z++)
{
> IEditorPart editor=
> editors[z].getEditor(false);
> if(editor == null)
> continue;
> IEditorInput input=
> editor.getEditorInput();
> if (!inputs.contains(input)) {
> inputs.add(input);
> result.add(editor);
> }
> }
> }
> }
> return (IEditorPart[])result.toArray(new
> IEditorPart[result.size()]);
> }
> 13) getDirtyEditors() -
> org.eclipse.search.internal.core.text.TextSearchVisitor
> Use getDirtyEditors() instead of getEditors()
> 14) showWithReuse(IMarker) -
> org.eclipse.search.internal.ui.text.GotoMarkerAction
> Use findEditor instead of getEditors();
> _______________________________________________
> platform-ui-dev mailing list
> platform-ui-dev@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/platform-ui-dev
_______________________________________________
platform-ui-dev mailing list
platform-ui-dev@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/platform-ui-dev