Package com.dci.intellij.dbn.common.editor.document

Source Code of com.dci.intellij.dbn.common.editor.document.OverrideReadonlyFragmentModificationHandler

package com.dci.intellij.dbn.common.editor.document;

import com.dci.intellij.dbn.common.util.MessageUtil;
import com.dci.intellij.dbn.vfs.SourceCodeFile;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.ReadOnlyFragmentModificationException;
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
import com.intellij.openapi.editor.actionSystem.ReadonlyFragmentModificationHandler;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.LightVirtualFile;

public class OverrideReadonlyFragmentModificationHandler implements
        ReadonlyFragmentModificationHandler {

    public static final Key<String> GUARDED_BLOCK_REASON = Key.create("GUARDED_BLOCK_REASON");

    private static ReadonlyFragmentModificationHandler originalHandler = EditorActionManager.getInstance().getReadonlyFragmentModificationHandler();
    public static final ReadonlyFragmentModificationHandler INSTANCE = new OverrideReadonlyFragmentModificationHandler();
    private OverrideReadonlyFragmentModificationHandler() {

    }

    public void handle(ReadOnlyFragmentModificationException e) {
        Document document = e.getGuardedBlock().getDocument();
        String message = document.getUserData(GUARDED_BLOCK_REASON);
        if (message != null) {
            MessageUtil.showErrorDialog(message, "Action denied");
        } else {
            VirtualFile virtualFile = FileDocumentManager.getInstance().getFile(document);
            if (virtualFile instanceof SourceCodeFile || virtualFile instanceof LightVirtualFile) {
                //Messages.showErrorDialog("You're not allowed to change name and type of the edited component.", "Action denied");
            } else {
                originalHandler.handle(e);
            }
        }
    }
}
TOP

Related Classes of com.dci.intellij.dbn.common.editor.document.OverrideReadonlyFragmentModificationHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.