Index: src/core/org/apache/jmeter/testbeans/gui/TextAreaEditor.java =================================================================== --- src/core/org/apache/jmeter/testbeans/gui/TextAreaEditor.java (revision 1496951) +++ src/core/org/apache/jmeter/testbeans/gui/TextAreaEditor.java (working copy) @@ -24,18 +24,27 @@ import java.awt.Component; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.beans.PropertyEditorSupport; -import javax.swing.JScrollPane; -import javax.swing.JTextArea; -import javax.swing.ScrollPaneConstants; -public class TextAreaEditor extends PropertyEditorSupport implements FocusListener { +import org.apache.jmeter.util.JMeterUtils; +import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; +import org.fife.ui.rsyntaxtextarea.SyntaxConstants; +import org.fife.ui.rtextarea.RTextScrollPane; - private JTextArea textUI; +import java.util.Locale; +import java.util.Properties;; - private JScrollPane scroller; +public class TextAreaEditor extends PropertyEditorSupport implements FocusListener, PropertyChangeListener { + private RSyntaxTextArea textUI; + + private RTextScrollPane scroller; + + private Properties languageProperties; + /** {@inheritDoc} */ @Override public void focusGained(FocusEvent e) { @@ -45,15 +54,20 @@ @Override public void focusLost(FocusEvent e) { firePropertyChange(); - } + } private final void init() {// called from ctor, so must not be overridable - textUI = new JTextArea(); + textUI = new RSyntaxTextArea(20,20); + textUI.discardAllEdits(); + textUI.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA); + textUI.setCodeFoldingEnabled(true); + textUI.setAntiAliasingEnabled(true); textUI.addFocusListener(this); textUI.setWrapStyleWord(true); textUI.setLineWrap(true); - scroller = new JScrollPane(textUI, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, - ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + scroller = new RTextScrollPane(textUI); + scroller.setFoldIndicatorEnabled(true); + languageProperties = JMeterUtils.loadProperties("org/apache/jmeter/testbeans/gui/textarea.properties"); } /** @@ -112,4 +126,20 @@ public boolean supportsCustomEditor() { return true; } + + @Override + public void propertyChange(PropertyChangeEvent evt){ + Object source = evt.getSource(); + if (source instanceof ComboStringEditor && source !=null){ + ComboStringEditor cse = (ComboStringEditor)source; + String lang = cse.getAsText().toLowerCase(); + if (languageProperties.containsKey(lang)){ + textUI.setSyntaxEditingStyle(languageProperties.getProperty(lang)); + } + else{ + textUI.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_NONE); + } + + } + } }