1717
1818import com .google .gwt .user .client .rpc .AsyncCallback ;
1919import com .google .inject .Inject ;
20- import com .google .inject .Provider ;
2120import com .google .inject .Singleton ;
2221import com .google .web .bindery .event .shared .EventBus ;
2322
5857import org .eclipse .che .ide .api .parts .EditorPartStack ;
5958import org .eclipse .che .ide .api .parts .EditorTab ;
6059import org .eclipse .che .ide .api .parts .PartPresenter ;
61- import org .eclipse .che .ide .api .parts .PropertyListener ;
6260import org .eclipse .che .ide .api .parts .WorkspaceAgent ;
6361import org .eclipse .che .ide .api .preferences .PreferencesManager ;
6462import org .eclipse .che .ide .api .resources .Resource ;
@@ -106,7 +104,7 @@ public class EditorAgentImpl implements EditorAgent,
106104
107105 private final List <EditorPartPresenter > openedEditors ;
108106 private final Map <EditorPartPresenter , String > openedEditorsToProviders ;
109- private final Provider < EditorContentSynchronizer > editorContentSynchronizerProvider ;
107+ private final EditorContentSynchronizer editorContentSynchronizer ;
110108 private final PromiseProvider promiseProvider ;
111109 private final ResourceProvider resourceProvider ;
112110 private List <EditorPartPresenter > dirtyEditors ;
@@ -121,7 +119,7 @@ public EditorAgentImpl(EventBus eventBus,
121119 WorkspaceAgent workspaceAgent ,
122120 CoreLocalizationConstant coreLocalizationConstant ,
123121 EditorMultiPartStackPresenter editorMultiPartStack ,
124- Provider < EditorContentSynchronizer > editorContentSynchronizerProvider ,
122+ EditorContentSynchronizer editorContentSynchronizer ,
125123 PromiseProvider promiseProvider ,
126124 ResourceProvider resourceProvider ) {
127125 this .eventBus = eventBus ;
@@ -131,7 +129,7 @@ public EditorAgentImpl(EventBus eventBus,
131129 this .workspaceAgent = workspaceAgent ;
132130 this .coreLocalizationConstant = coreLocalizationConstant ;
133131 this .editorMultiPartStack = editorMultiPartStack ;
134- this .editorContentSynchronizerProvider = editorContentSynchronizerProvider ;
132+ this .editorContentSynchronizer = editorContentSynchronizer ;
135133 this .promiseProvider = promiseProvider ;
136134 this .resourceProvider = resourceProvider ;
137135 this .openedEditors = newArrayList ();
@@ -236,7 +234,7 @@ private void doCloseEditor(EditorTab tab) {
236234 editor .close (false );
237235
238236 if (editor instanceof TextEditor ) {
239- editorContentSynchronizerProvider . get () .unTrackEditor (editor );
237+ editorContentSynchronizer .unTrackEditor (editor );
240238 }
241239
242240 if (activeEditor != null && activeEditor == editor ) {
@@ -291,28 +289,31 @@ private void initEditor(final VirtualFile file, final OpenEditorCallback callbac
291289 finalizeInit (file , callback , editor , editorProvider );
292290 }
293291
294- private void finalizeInit (final VirtualFile file , final OpenEditorCallback callback , final EditorPartPresenter editor ,
295- EditorProvider editorProvider ) {
296- openedEditors .add (editor );
297- openedEditorsToProviders .put (editor , editorProvider .getId ());
292+ private Promise <Void > finalizeInit (final VirtualFile file ,
293+ final OpenEditorCallback openEditorCallback ,
294+ final EditorPartPresenter editor ,
295+ EditorProvider editorProvider ) {
296+ return AsyncPromiseHelper .createFromAsyncRequest (promiseCallback -> {
297+ openedEditors .add (editor );
298+ openedEditorsToProviders .put (editor , editorProvider .getId ());
298299
299- workspaceAgent .setActivePart (editor );
300- editor .addPropertyListener (new PropertyListener () {
301- @ Override
302- public void propertyChanged (PartPresenter source , int propId ) {
300+ workspaceAgent .setActivePart (editor );
301+ editor .addPropertyListener ((source , propId ) -> {
303302 if (propId == EditorPartPresenter .PROP_INPUT ) {
303+ promiseCallback .onSuccess (null );
304+
304305 if (editor instanceof HasReadOnlyProperty ) {
305306 ((HasReadOnlyProperty )editor ).setReadOnly (file .isReadOnly ());
306307 }
307308
308309 if (editor instanceof TextEditor ) {
309- editorContentSynchronizerProvider . get () .trackEditor (editor );
310+ editorContentSynchronizer .trackEditor (editor );
310311 }
311- callback .onEditorOpened (editor );
312+ openEditorCallback .onEditorOpened (editor );
312313 eventBus .fireEvent (FileEvent .createFileOpenedEvent (file ));
313314 eventBus .fireEvent (new EditorOpenedEvent (file , editor ));
314315 }
315- }
316+ });
316317 });
317318 }
318319
@@ -557,34 +558,35 @@ private void restoreCreateEditor(final VirtualFile resourceFile, JsonObject file
557558
558559 final EditorProvider provider = editorRegistry .findEditorProviderById (providerId );
559560 if (provider instanceof AsyncEditorProvider ) {
560- ((AsyncEditorProvider )provider ).createEditor (resourceFile ).then (new Operation <EditorPartPresenter >() {
561- @ Override
562- public void apply (EditorPartPresenter arg ) throws OperationException {
563- restoreInitEditor (resourceFile , callback , fileTypeRegistry .getFileTypeByFile (resourceFile ), arg , provider ,
564- editorPartStack );
561+ ((AsyncEditorProvider )provider ).createEditor (resourceFile ).then (editor -> {
562+ restoreInitEditor (resourceFile , callback , fileTypeRegistry .getFileTypeByFile (resourceFile ), editor , provider ,
563+ editorPartStack ).then (arg -> {
565564 if (active ) {
566- activeEditors .put (arg , editorPartStack );
565+ activeEditors .put (editor , editorPartStack );
567566 }
568-
569- }
567+ openCallback . onSuccess ( null );
568+ });
570569 });
571570 } else {
572571 EditorPartPresenter editor = provider .getEditor ();
573- restoreInitEditor (resourceFile , callback , fileTypeRegistry .getFileTypeByFile (resourceFile ), editor , provider , editorPartStack );
574- if (active ) {
575- activeEditors .put (editor , editorPartStack );
576- }
572+ restoreInitEditor (resourceFile , callback , fileTypeRegistry .getFileTypeByFile (resourceFile ), editor , provider , editorPartStack )
573+ .then (arg -> {
574+ if (active ) {
575+ activeEditors .put (editor , editorPartStack );
576+ }
577+ openCallback .onSuccess (null );
578+ });
577579 }
578- openCallback .onSuccess (null );
579580 }
580581
581- private void restoreInitEditor (final VirtualFile file , final OpenEditorCallback callback , FileType fileType ,
582- final EditorPartPresenter editor , EditorProvider editorProvider , EditorPartStack editorPartStack ) {
582+ private Promise <Void > restoreInitEditor (final VirtualFile file , final OpenEditorCallback callback , FileType fileType ,
583+ final EditorPartPresenter editor , EditorProvider editorProvider ,
584+ EditorPartStack editorPartStack ) {
583585 editor .init (new EditorInputImpl (fileType , file ), callback );
584586 editor .addCloseHandler (this );
585587
586588 editorPartStack .addPart (editor );
587- finalizeInit (file , callback , editor , editorProvider );
589+ return finalizeInit (file , callback , editor , editorProvider );
588590 }
589591
590592 @ Override
0 commit comments