Package com.eviware.soapui.support

Source Code of com.eviware.soapui.support.DefaultEditorFactory$JTextComponentEditorModelDocumentListener

/*
* Copyright 2004-2014 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/

package com.eviware.soapui.support;

import javax.swing.JComponent;
import javax.swing.JScrollPane;
import javax.swing.text.Document;
import javax.swing.text.JTextComponent;

import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.fife.ui.rtextarea.RTextScrollPane;

import com.eviware.soapui.impl.wsdl.panels.teststeps.support.GroovyEditor;
import com.eviware.soapui.impl.wsdl.panels.teststeps.support.GroovyEditorModel;
import com.eviware.soapui.support.EditorModel.EditorModelListener;
import com.eviware.soapui.support.components.JUndoableTextArea;
import com.eviware.soapui.support.xml.SyntaxEditorUtil;

public class DefaultEditorFactory implements EditorFactory {
    public JComponent buildXPathEditor(EditorModel editorModel) {
        JUndoableTextArea textArea = new JUndoableTextArea();
        textArea.setText(editorModel.getEditorText());
        textArea.getDocument()
                .addDocumentListener(new JTextComponentEditorModelDocumentListener(editorModel, textArea));
        return new JScrollPane(textArea);
    }

    public JComponent buildXmlEditor(EditorModel editorModel) {
        RSyntaxTextArea xmlEditor = SyntaxEditorUtil.createDefaultXmlSyntaxTextArea();
        RTextScrollPane scrollPane = new RTextScrollPane(xmlEditor);
        xmlEditor = SyntaxEditorUtil.addDefaultActions(xmlEditor, scrollPane, false);
        xmlEditor.setText(editorModel.getEditorText());
        xmlEditor.getDocument().addDocumentListener(new EditorModelDocumentListener(editorModel, xmlEditor));
        UISupport.addPreviewCorner(scrollPane, false);
        return scrollPane;
    }

    public JComponent buildGroovyEditor(GroovyEditorModel editorModel) {
        return new GroovyEditor(editorModel);
    }

    private static class EditorModelDocumentListener extends DocumentListenerAdapter implements EditorModelListener {
        private EditorModel editorModel;
        private final RSyntaxTextArea xmlEditor;

        public EditorModelDocumentListener(EditorModel editorModel, RSyntaxTextArea xmlEditor) {
            this.editorModel = editorModel;
            this.xmlEditor = xmlEditor;

            editorModel.addEditorModelListener(this);
        }

        public void update(Document document) {
            editorModel.setEditorText(getText(document));
        }

        public void editorTextChanged(String oldText, String newText) {
            xmlEditor.getDocument().removeDocumentListener(this);
            xmlEditor.setText(newText);
            xmlEditor.getDocument().addDocumentListener(this);
        }
    }

    private static class JTextComponentEditorModelDocumentListener extends DocumentListenerAdapter implements
            EditorModelListener {
        private final JTextComponent textField;
        private final EditorModel editorModel;

        public JTextComponentEditorModelDocumentListener(EditorModel editorModel, JTextComponent textField) {
            this.editorModel = editorModel;
            editorModel.addEditorModelListener(this);
            this.textField = textField;
        }

        public void editorTextChanged(String oldText, String newText) {
            textField.getDocument().removeDocumentListener(this);
            textField.setText(newText);
            textField.getDocument().addDocumentListener(this);
        }

        public void update(Document document) {
            editorModel.setEditorText(getText(document));
        }
    }
}
TOP

Related Classes of com.eviware.soapui.support.DefaultEditorFactory$JTextComponentEditorModelDocumentListener

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.