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


Reply via email to