Author: pmouawad
Date: Thu Nov 23 14:04:45 2017
New Revision: 1816155
URL: http://svn.apache.org/viewvc?rev=1816155&view=rev
Log:
Bug 61697 Introduce Darcula Look And Feel to make JMeter UI more attractive
Bugzilla Id: 61697
Added:
jmeter/trunk/src/core/org/apache/jmeter/gui/util/theme/
jmeter/trunk/src/core/org/apache/jmeter/gui/util/theme/darcula_theme.xml
(with props)
Modified:
jmeter/trunk/src/core/org/apache/jmeter/gui/util/JSyntaxTextArea.java
Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/util/JSyntaxTextArea.java
URL:
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/util/JSyntaxTextArea.java?rev=1816155&r1=1816154&r2=1816155&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/util/JSyntaxTextArea.java
(original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/util/JSyntaxTextArea.java Thu
Nov 23 14:04:45 2017
@@ -20,11 +20,14 @@ package org.apache.jmeter.gui.util;
import java.awt.Font;
import java.awt.HeadlessException;
+import java.io.IOException;
import java.util.Properties;
+import org.apache.jmeter.gui.action.LookAndFeelCommand;
import org.apache.jmeter.util.JMeterUtils;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
+import org.fife.ui.rsyntaxtextarea.Theme;
import org.fife.ui.rtextarea.RUndoManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,6 +40,9 @@ import org.slf4j.LoggerFactory;
public class JSyntaxTextArea extends RSyntaxTextArea {
private static final long serialVersionUID = 211L;
+ private static final Logger log =
LoggerFactory.getLogger(JSyntaxTextArea.class);
+
+ private static final Theme DARCULA_THEME = initTheme();
private final Properties languageProperties =
JMeterUtils.loadProperties("org/apache/jmeter/gui/util/textarea.properties");
//$NON-NLS-1$
@@ -47,7 +53,6 @@ public class JSyntaxTextArea extends RSy
private static final int MAX_UNDOS =
JMeterUtils.getPropDefault("jsyntaxtextarea.maxundos", 50);
private static final String USER_FONT_FAMILY =
JMeterUtils.getPropDefault("jsyntaxtextarea.font.family", null);
private static final int USER_FONT_SIZE =
JMeterUtils.getPropDefault("jsyntaxtextarea.font.size", -1);
- private static final Logger log =
LoggerFactory.getLogger(JSyntaxTextArea.class);
/**
* Creates the default syntax highlighting text area. The following are
set:
@@ -69,7 +74,9 @@ public class JSyntaxTextArea extends RSy
*/
public static JSyntaxTextArea getInstance(int rows, int cols, boolean
disableUndo) {
try {
- return new JSyntaxTextArea(rows, cols, disableUndo);
+ JSyntaxTextArea jSyntaxTextArea = new JSyntaxTextArea(rows, cols,
disableUndo);
+ applyTheme(jSyntaxTextArea);
+ return jSyntaxTextArea;
} catch (HeadlessException e) {
// Allow override for unit testing only
if ("true".equals(System.getProperty("java.awt.headless"))) { //
$NON-NLS-1$ $NON-NLS-2$
@@ -102,6 +109,17 @@ public class JSyntaxTextArea extends RSy
}
/**
+ * Apply XML Theme to syntax text area
+ * @param jSyntaxTextArea
+ */
+ private static void applyTheme(JSyntaxTextArea jSyntaxTextArea) {
+ String laf = LookAndFeelCommand.getJMeterLaf();
+ if(JMeterMenuBar.DARCULA_LAF_CLASS.equals(laf)) {
+ DARCULA_THEME.apply(jSyntaxTextArea);
+ }
+ }
+
+ /**
* Creates the default syntax highlighting text area. The following are
set:
* <ul>
* <li>setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA)</li>
@@ -241,4 +259,15 @@ public class JSyntaxTextArea extends RSy
setText(string);
discardAllEdits();
}
+
+
+ private static final Theme initTheme() {
+ try {
+ return
Theme.load(JSyntaxTextArea.class.getClassLoader().getResourceAsStream(
+ "org/apache/jmeter/gui/util/theme/darcula_theme.xml"));
+ } catch (IOException e) {
+ log.error("Error reading darcula_theme for JSyntaxTextArea", e);
+ return null;
+ }
+ }
}
Added: jmeter/trunk/src/core/org/apache/jmeter/gui/util/theme/darcula_theme.xml
URL:
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/util/theme/darcula_theme.xml?rev=1816155&view=auto
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/util/theme/darcula_theme.xml
(added)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/util/theme/darcula_theme.xml
Thu Nov 23 14:04:45 2017
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE RSyntaxTheme SYSTEM "theme.dtd">
+<!--
+ Theme that mimics IntelliJ IDEA's defaults.
+ See theme.dtd and org.fife.ui.rsyntaxtextarea.Theme for more information.
+-->
+<RSyntaxTheme version="1.0">
+
+ <!-- Omitting baseFont will use a system-appropriate monospaced. -->
+ <!--<baseFont family="..." size="13"/>-->
+
+ <!-- General editor colors. -->
+ <background color="45494A" />
+ <caret color="bbbbbb" />
+ <selection fg="ffffff" bg="0D293E" />
+ <currentLineHighlight color="ffffd7" fade="false" />
+ <marginLine fg="b0b4b9" />
+ <markAllHighlight color="ccccff" />
+ <markOccurrencesHighlight color="ccccff" border="false" />
+ <matchedBracket fg="99ccff" bg="99ccff" highlightBoth="true"
animate="false" />
+ <hyperlinks fg="0000ff" />
+ <secondaryLanguages>
+ <language index="1" bg="fff0cc" />
+ <language index="2" bg="dafeda" />
+ <language index="3" bg="ffe0f0" />
+ </secondaryLanguages>
+
+ <!-- Gutter styling. -->
+ <gutterBorder color="dddddd" />
+ <lineNumbers fg="787878" />
+ <foldIndicator fg="808080" iconBg="ffffff" />
+ <iconRowHeader activeLineRange="3399ff" />
+
+ <!-- Syntax tokens. -->
+ <tokenStyles>
+ <style token="IDENTIFIER" fg="000000" />
+ <style token="RESERVED_WORD" fg="000080" bold="true" />
+ <style token="RESERVED_WORD_2" fg="000080" bold="true" />
+ <style token="ANNOTATION" fg="808000" />
+ <style token="COMMENT_DOCUMENTATION" fg="808080" italic="true" />
+ <style token="COMMENT_EOL" fg="808080" italic="true" />
+ <style token="COMMENT_MULTILINE" fg="808080" italic="true" />
+ <style token="COMMENT_KEYWORD" fg="808080" bold="true" underline="true"
italic="true" />
+ <style token="COMMENT_MARKUP" fg="808080" bg="e2ffe2" italic="true" />
+ <style token="DATA_TYPE" fg="000080" bold="true" />
+ <style token="FUNCTION" fg="000000" />
+ <style token="LITERAL_BOOLEAN" fg="000080" bold="true" />
+ <style token="LITERAL_NUMBER_DECIMAL_INT" fg="0000ff" />
+ <style token="LITERAL_NUMBER_FLOAT" fg="0000ff" />
+ <style token="LITERAL_NUMBER_HEXADECIMAL" fg="0000ff" />
+ <style token="LITERAL_STRING_DOUBLE_QUOTE" fg="008000" bold="true" />
+ <style token="LITERAL_CHAR" fg="008000" bold="true" />
+ <style token="LITERAL_BACKQUOTE" fg="008000" bold="true" />
+ <style token="MARKUP_TAG_DELIMITER" fg="000000" bold="true" />
+ <style token="MARKUP_TAG_NAME" fg="000080" bold="true" />
+ <style token="MARKUP_TAG_ATTRIBUTE" fg="0000ff" bold="true" />
+ <style token="MARKUP_TAG_ATTRIBUTE_VALUE" fg="008000" bold="true" />
+ <style token="MARKUP_COMMENT" fg="808080" italic="true"/>
+ <style token="MARKUP_DTD" fg="808080"/>
+ <style token="MARKUP_PROCESSING_INSTRUCTION" fg="808080"/>
+ <style token="MARKUP_CDATA" fg="cc6600"/>
+ <style token="MARKUP_CDATA_DELIMITER" fg="008080"/>
+ <style token="MARKUP_ENTITY_REFERENCE" fg="008000"/>
+ <style token="OPERATOR" fg="000000" />
+ <style token="PREPROCESSOR" fg="808080" />
+ <style token="REGEX" fg="008040" />
+ <style token="SEPARATOR" fg="000000" />
+ <style token="VARIABLE" fg="810ca8" bold="true" />
+ <style token="WHITESPACE" fg="000000" />
+
+ <style token="ERROR_IDENTIFIER" fg="ff0000" />
+ <style token="ERROR_NUMBER_FORMAT" fg="ff0000" />
+ <style token="ERROR_STRING_DOUBLE" fg="ff0000" />
+ <style token="ERROR_CHAR" fg="ff0000" />
+ </tokenStyles>
+
+</RSyntaxTheme>
\ No newline at end of file
Propchange:
jmeter/trunk/src/core/org/apache/jmeter/gui/util/theme/darcula_theme.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jmeter/trunk/src/core/org/apache/jmeter/gui/util/theme/darcula_theme.xml
------------------------------------------------------------------------------
svn:mime-type = text/plain