Search in sources :

Example 1 with AsyncEditorProvider

use of org.eclipse.che.ide.api.editor.AsyncEditorProvider in project che by eclipse.

the class EditorAgentImpl method doOpen.

private void doOpen(final VirtualFile file, final OpenEditorCallback callback, final Constraints constraints) {
    EditorPartStack activePartStack = editorMultiPartStack.getActivePartStack();
    if (constraints == null && activePartStack != null) {
        PartPresenter partPresenter = activePartStack.getPartByPath(file.getLocation());
        if (partPresenter != null) {
            workspaceAgent.setActivePart(partPresenter, EDITING);
            callback.onEditorActivated((EditorPartPresenter) partPresenter);
            return;
        }
    }
    final FileType fileType = fileTypeRegistry.getFileTypeByFile(file);
    final EditorProvider editorProvider = editorRegistry.getEditor(fileType);
    if (editorProvider instanceof AsyncEditorProvider) {
        AsyncEditorProvider provider = (AsyncEditorProvider) editorProvider;
        Promise<EditorPartPresenter> promise = provider.createEditor(file);
        if (promise != null) {
            promise.then(new Operation<EditorPartPresenter>() {

                @Override
                public void apply(EditorPartPresenter arg) throws OperationException {
                    initEditor(file, callback, fileType, arg, constraints, editorProvider);
                }
            });
            return;
        }
    }
    final EditorPartPresenter editor = editorProvider.getEditor();
    initEditor(file, callback, fileType, editor, constraints, editorProvider);
}
Also used : FileType(org.eclipse.che.ide.api.filetypes.FileType) AsyncEditorProvider(org.eclipse.che.ide.api.editor.AsyncEditorProvider) PartPresenter(org.eclipse.che.ide.api.parts.PartPresenter) EditorPartPresenter(org.eclipse.che.ide.api.editor.EditorPartPresenter) EditorPartPresenter(org.eclipse.che.ide.api.editor.EditorPartPresenter) EditorPartStack(org.eclipse.che.ide.api.parts.EditorPartStack) EditorProvider(org.eclipse.che.ide.api.editor.EditorProvider) AsyncEditorProvider(org.eclipse.che.ide.api.editor.AsyncEditorProvider) OperationException(org.eclipse.che.api.promises.client.OperationException)

Example 2 with AsyncEditorProvider

use of org.eclipse.che.ide.api.editor.AsyncEditorProvider in project che by eclipse.

the class EditorAgentImpl method restoreCreateEditor.

private void restoreCreateEditor(final File resourceFile, JsonObject file, final EditorPartStack editorPartStack, final AsyncCallback<Void> openCallback, final Map<EditorPartPresenter, EditorPartStack> activeEditors) {
    String providerId = file.getString("EDITOR_PROVIDER");
    final OpenEditorCallback callback;
    if (file.hasKey("CURSOR_OFFSET") && file.hasKey("TOP_VISIBLE_LINE")) {
        final int cursorOffset = (int) file.getNumber("CURSOR_OFFSET");
        final int topLine = (int) file.getNumber("TOP_VISIBLE_LINE");
        callback = new RestoreStateEditorCallBack(cursorOffset, topLine);
    } else {
        callback = new OpenEditorCallbackImpl();
    }
    final boolean active = file.hasKey("ACTIVE") && file.getBoolean("ACTIVE");
    final EditorProvider provider = editorRegistry.findEditorProviderById(providerId);
    if (provider instanceof AsyncEditorProvider) {
        ((AsyncEditorProvider) provider).createEditor(resourceFile).then(new Operation<EditorPartPresenter>() {

            @Override
            public void apply(EditorPartPresenter arg) throws OperationException {
                restoreInitEditor(resourceFile, callback, fileTypeRegistry.getFileTypeByFile(resourceFile), arg, provider, editorPartStack);
                if (active) {
                    activeEditors.put(arg, editorPartStack);
                }
            }
        });
    } else {
        EditorPartPresenter editor = provider.getEditor();
        restoreInitEditor(resourceFile, callback, fileTypeRegistry.getFileTypeByFile(resourceFile), editor, provider, editorPartStack);
        if (active) {
            activeEditors.put(editor, editorPartStack);
        }
    }
    openCallback.onSuccess(null);
}
Also used : OpenEditorCallbackImpl(org.eclipse.che.ide.api.editor.OpenEditorCallbackImpl) AsyncEditorProvider(org.eclipse.che.ide.api.editor.AsyncEditorProvider) EditorPartPresenter(org.eclipse.che.ide.api.editor.EditorPartPresenter) EditorProvider(org.eclipse.che.ide.api.editor.EditorProvider) AsyncEditorProvider(org.eclipse.che.ide.api.editor.AsyncEditorProvider) OperationException(org.eclipse.che.api.promises.client.OperationException)

Aggregations

OperationException (org.eclipse.che.api.promises.client.OperationException)2 AsyncEditorProvider (org.eclipse.che.ide.api.editor.AsyncEditorProvider)2 EditorPartPresenter (org.eclipse.che.ide.api.editor.EditorPartPresenter)2 EditorProvider (org.eclipse.che.ide.api.editor.EditorProvider)2 OpenEditorCallbackImpl (org.eclipse.che.ide.api.editor.OpenEditorCallbackImpl)1 FileType (org.eclipse.che.ide.api.filetypes.FileType)1 EditorPartStack (org.eclipse.che.ide.api.parts.EditorPartStack)1 PartPresenter (org.eclipse.che.ide.api.parts.PartPresenter)1