| /*******************************************************************************
|
| * Copyright (c) 2012, 2018 IBM Corporation and others.
|
| * All rights reserved. This program and the accompanying materials
|
| * are made available under the terms of the Eclipse Public License 2.0
|
| * which accompanies this distribution, and is available at
|
| * https://www.eclipse.org/legal/epl-2.0/
|
| *
|
| * SPDX-License-Identifier: EPL-2.0
|
| *
|
| * Contributors:
|
| * IBM Corporation - initial API and implementation
|
| *******************************************************************************/ |
| package org.eclipse.wst.sse.ui.internal.text;
|
|
|
| import org.eclipse.jface.text.IAutoEditStrategy;
|
| import org.eclipse.jface.text.IDocument;
|
| import org.eclipse.ui.IEditorPart;
|
| import org.eclipse.ui.IWorkbenchPage;
|
| import org.eclipse.ui.IWorkbenchWindow;
|
| import org.eclipse.ui.PlatformUI;
|
| import org.eclipse.ui.texteditor.IDocumentProvider;
|
| import org.eclipse.ui.texteditor.ITextEditor;
|
| import org.eclipse.ui.texteditor.ITextEditorExtension3;
|
|
|
| /**
|
| * Abstract class providing functionality to verify if a document supports
|
| * the smart insert mode.
|
| *
|
| */
|
| public abstract class StructuredAutoEditStrategy implements IAutoEditStrategy {
|
|
|
| /**
|
| * Evaluates if the document should support smart insert mode
|
| * @param document the document being edited
|
| * @return false if the document belongs to an active editor whose smart insert mode is disabled; otherwise, true.
|
| */
|
| protected boolean supportsSmartInsert(IDocument document) {
|
| Object editor = getActiveTextEditor();
|
| if (editor instanceof ITextEditor) {
|
| ITextEditor textEditor = (ITextEditor) editor;
|
| final IDocumentProvider provider = textEditor.getDocumentProvider();
|
| if (provider != null) {
|
| if (document == provider.getDocument(textEditor.getEditorInput())) {
|
| // Document belongs to the active editor
|
| if (!((textEditor instanceof ITextEditorExtension3) && (((ITextEditorExtension3) textEditor).getInsertMode() == ITextEditorExtension3.SMART_INSERT))) {
|
| return false;
|
| }
|
| }
|
| }
|
| }
|
| return true;
|
| }
|
|
|
| /**
|
| * Return the active text editor if possible, otherwise the active editor
|
| * part.
|
| *
|
| * @return Object
|
| */
|
| private Object getActiveTextEditor() {
|
| IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
|
| if (window != null) {
|
| IWorkbenchPage page = window.getActivePage();
|
| if (page != null) {
|
| IEditorPart editor = page.getActiveEditor();
|
| if (editor != null) {
|
| if (editor instanceof ITextEditor) {
|
| return editor;
|
| }
|
| ITextEditor textEditor = editor.getAdapter(ITextEditor.class);
|
| if (textEditor != null) {
|
| return textEditor;
|
| }
|
| return editor;
|
| }
|
| }
|
| }
|
| return null;
|
| }
|
| }
|