Fix code highlighting in study task description for darcula laf

This commit is contained in:
Valentina Kiryushkina
2016-02-05 16:03:45 +03:00
parent d07d9ce6c5
commit 91ac9974bf
5 changed files with 552 additions and 12 deletions
@@ -0,0 +1,365 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
body {
margin-left: 20px;
/*font-family: Serif, serif;*/
font-family: monospace;
font-weight: lighter;
}
/* BASICS */
.task-help pre code {
background-color: #f7f7f7;
white-space: pre-wrap;
margin-bottom: 10px;
padding: 5px 25px 5px 15px;
display: inline-block;
margin-right: 21px;
}
.CodeMirror {
/* Set height, width, borders, and global font properties here */
font-family: monospace;
height: 300px;
color: black;
}
/* PADDING */
.CodeMirror-lines {
padding: 4px 0; /* Vertical padding around content */
}
.CodeMirror pre {
padding: 0 4px; /* Horizontal padding of content */
}
.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
background-color: white; /* The little square between H and V scrollbars */
}
/* GUTTER */
.CodeMirror-gutters {
border-right: 1px solid #ddd;
background-color: #f7f7f7;
white-space: nowrap;
}
.CodeMirror-linenumbers {}
.CodeMirror-linenumber {
padding: 0 3px 0 5px;
min-width: 20px;
text-align: right;
color: #999;
white-space: nowrap;
}
.CodeMirror-guttermarker { color: black; }
.CodeMirror-guttermarker-subtle { color: #999; }
/* CURSOR */
.CodeMirror-cursor {
border-left: 1px solid black;
border-right: none;
width: 0;
}
/* Shown when moving in bi-directional text */
.CodeMirror div.CodeMirror-secondarycursor {
border-left: 1px solid silver;
}
.cm-fat-cursor .CodeMirror-cursor {
width: auto;
border: 0;
background: #7e7;
}
.cm-fat-cursor div.CodeMirror-cursors {
z-index: 1;
}
.cm-animate-fat-cursor {
width: auto;
border: 0;
-webkit-animation: blink 1.06s steps(1) infinite;
-moz-animation: blink 1.06s steps(1) infinite;
animation: blink 1.06s steps(1) infinite;
background-color: #7e7;
}
@-moz-keyframes blink {
0% {}
50% { background-color: transparent; }
100% {}
}
@-webkit-keyframes blink {
0% {}
50% { background-color: transparent; }
100% {}
}
@keyframes blink {
0% {}
50% { background-color: transparent; }
100% {}
}
/* Can style cursor different in overwrite (non-insert) mode */
.CodeMirror-overwrite .CodeMirror-cursor {}
.cm-tab { display: inline-block; text-decoration: inherit; }
.CodeMirror-ruler {
border-left: 1px solid #ccc;
position: absolute;
}
/* DEFAULT THEME */
.cm-s-default .cm-header {color: #589df6;}
.cm-s-default .cm-quote {color: #6a864c;}
.cm-negative {color: #d44;}
.cm-positive {color: #6a864c;}
.cm-header, .cm-strong {font-weight: bold;}
.cm-em {font-style: italic;}
.cm-link {text-decoration: underline;}
.cm-strikethrough {text-decoration: line-through;}
.cm-s-default .cm-keyword {color: #708;}
.cm-s-default .cm-atom {color: #219;}
.cm-s-default .cm-number {color: #164;}
.cm-s-default .cm-def {color: #589df6;}
.cm-s-default .cm-variable,
.cm-s-default .cm-punctuation,
.cm-s-default .cm-property,
.cm-s-default .cm-operator {}
.cm-s-default .cm-variable-2 {color: #05a;}
.cm-s-default .cm-variable-3 {color: #085;}
.cm-s-default .cm-comment {color: #a50;}
.cm-s-default .cm-string {color: #a11;}
.cm-s-default .cm-string-2 {color: #f50;}
.cm-s-default .cm-meta {color: #555;}
.cm-s-default .cm-qualifier {color: #555;}
.cm-s-default .cm-builtin {color: #30a;}
.cm-s-default .cm-bracket {color: #997;}
.cm-s-default .cm-tag {color: #170;}
.cm-s-default .cm-attribute {color: #589df6;}
.cm-s-default .cm-hr {color: #999;}
.cm-s-default .cm-link {color: #589df6;}
.cm-s-default .cm-error {color: #f00;}
.cm-invalidchar {color: #f00;}
.CodeMirror-composing { border-bottom: 2px solid; }
/* Default styles for common addons */
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
.CodeMirror-activeline-background {background: #e8f2ff;}
/* STOP */
/* The rest of this file contains styles related to the mechanics of
the editor. You probably shouldn't touch them. */
.CodeMirror {
position: relative;
overflow: hidden;
background: white;
}
.CodeMirror-scroll {
overflow: scroll !important; /* Things will break if this is overridden */
/* 30px is the magic margin used to hide the element's real scrollbars */
/* See overflow: hidden in .CodeMirror */
margin-bottom: -30px; margin-right: -30px;
padding-bottom: 30px;
height: 100%;
outline: none; /* Prevent dragging from highlighting the element */
position: relative;
}
.CodeMirror-sizer {
position: relative;
border-right: 30px solid transparent;
}
/* The fake, visible scrollbars. Used to force redraw during scrolling
before actuall scrolling happens, thus preventing shaking and
flickering artifacts. */
.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
position: absolute;
z-index: 6;
display: none;
}
.CodeMirror-vscrollbar {
right: 0; top: 0;
overflow-x: hidden;
overflow-y: scroll;
}
.CodeMirror-hscrollbar {
bottom: 0; left: 0;
overflow-y: hidden;
overflow-x: scroll;
}
.CodeMirror-scrollbar-filler {
right: 0; bottom: 0;
}
.CodeMirror-gutter-filler {
left: 0; bottom: 0;
}
.CodeMirror-gutters {
position: absolute; left: 0; top: 0;
z-index: 3;
}
.CodeMirror-gutter {
white-space: normal;
height: 100%;
display: inline-block;
margin-bottom: -30px;
/* Hack to make IE7 behave */
*zoom:1;
*display:inline;
}
.CodeMirror-gutter-wrapper {
position: absolute;
z-index: 4;
background: none !important;
border: none !important;
}
.CodeMirror-gutter-background {
position: absolute;
top: 0; bottom: 0;
z-index: 4;
}
.CodeMirror-gutter-elt {
position: absolute;
cursor: default;
z-index: 4;
}
.CodeMirror-gutter-wrapper {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
.CodeMirror-lines {
cursor: text;
min-height: 1px; /* prevents collapsing before first draw */
}
.CodeMirror pre {
/* Reset some styles that the rest of the page might have set */
-moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
border-width: 0;
background: transparent;
font-family: inherit;
font-size: inherit;
margin: 0;
white-space: pre;
word-wrap: normal;
line-height: inherit;
color: inherit;
z-index: 2;
position: relative;
overflow: visible;
-webkit-tap-highlight-color: transparent;
}
.CodeMirror-wrap pre {
word-wrap: break-word;
white-space: pre-wrap;
word-break: normal;
}
.CodeMirror-linebackground {
position: absolute;
left: 0; right: 0; top: 0; bottom: 0;
z-index: 0;
}
.CodeMirror-linewidget {
position: relative;
z-index: 2;
overflow: auto;
}
.CodeMirror-widget {}
.CodeMirror-code {
outline: none;
}
/* Force content-box sizing for the elements where we expect it */
.CodeMirror-scroll,
.CodeMirror-sizer,
.CodeMirror-gutter,
.CodeMirror-gutters,
.CodeMirror-linenumber {
-moz-box-sizing: content-box;
box-sizing: content-box;
}
.CodeMirror-measure {
position: absolute;
width: 100%;
height: 0;
overflow: hidden;
visibility: hidden;
}
.CodeMirror-cursor { position: absolute; }
.CodeMirror-measure pre { position: static; }
div.CodeMirror-cursors {
visibility: hidden;
position: relative;
z-index: 3;
}
div.CodeMirror-dragcursors {
visibility: visible;
}
.CodeMirror-focused div.CodeMirror-cursors {
visibility: visible;
}
.CodeMirror-selected { background: #d9d9d9; }
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
.CodeMirror-crosshair { cursor: crosshair; }
.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }
.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }
.cm-searching {
background: #ffa;
background: rgba(255, 255, 0, .4);
}
/* IE7 hack to prevent it from returning funny offsetTops on the spans */
.CodeMirror span { *vertical-align: text-bottom; }
/* Used to force a border model for a node */
.cm-force-border { padding-right: .1px; }
@media print {
/* Hide the cursor when printing */
.CodeMirror div.CodeMirror-cursors {
visibility: hidden;
}
}
/* See issue #2901 */
.cm-tab-wrap-hack:after { content: ''; }
/* Help users use markselection to safely style text background */
span.CodeMirror-selectedtext { background: none; }
@@ -0,0 +1,147 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
.cm-s-default span.cm-keyword {
color: #b07732;
font-weight: bold;
}
.cm-s-default span.cm-softKeyword {
color: #b07732;
font-weight: bold;
}
.cm-s-default span.cm-atom {
color: #b07732;
font-weight: bold;
}
.cm-s-default span.cm-number {
color: #b07732;
}
.cm-s-default span.cm-string {
color: #588652;
font-weight: bold;
}
.cm-s-default span.cm-def {
color: #dddddd;
}
.cm-s-default span.cm-variable {
color: #dddddd;
}
.cm-s-default span.cm-variable-2 {
color: #b07732;
}
.cm-s-default span.cm-variable-3 {
color: #dddddd;
}
.cm-s-default span.cm-property {
color: #dddddd;
}
.cm-s-default span.cm-operator {
color: #dddddd;
}
.cm-s-default span.cm-comment {
color: #7f7f7f;
}
.cm-s-default span.cm-string-2 {
color: #f50;
}
.cm-s-default span.cm-meta {
color: #ba9d2a;
}
.cm-s-default span.cm-error {
color: #944b5e;
}
.cm-s-default span.cm-qualifier {
color: #555;
}
.cm-s-default span.cm-builtin {
color: #30a;
}
.cm-s-default span.cm-bracket {
color: #cc7;
}
.cm-s-default span.cm-tag {
color: #ba9d2a;
}
.cm-s-default span.cm-attribute {
color: #589df6;
}
.cm-s-default span.cm-header {
color: #a0a;
}
.cm-s-default span.cm-quote {
color: #6a7846;
}
.cm-s-default span.cm-hr {
color: #999;
}
.cm-s-default span.cm-link {
color: #589df6;
}
span.cm-header, span.cm-strong {
font-weight: bold;
}
span.cm-em {
font-style: italic;
}
span.cm-emstrong {
font-style: italic;
font-weight: bold;
}
span.cm-link {
text-decoration: underline;
}
div.CodeMirror span.CodeMirror-matchingbracket {
/*color: #0000ff;*/
/*border: 1px #0000ff solid;*/
/*background-color: #FFE87C;*/
background-color: #e4e4ff;
}
div.CodeMirror span.CodeMirror-nonmatchingbracket {
color: #b76b5e;
}
span.bullet {
padding-right: 5px;
}
@@ -1,3 +1,9 @@
body {
margin-left: 20px;
/*font-family: Serif, serif;*/
font-family: monospace;
font-weight: lighter;
}
/* BASICS */
.task-help pre code {
background-color: #f7f7f7;
@@ -4,21 +4,20 @@ background-color: #3c3f41;
body {
background-color: #3c3f41;
font-size: 12pt;
font-family: Serif;
font-weight: normal;
margin-left: 0;
margin-right: 0;
color: #dddddd
color: #bababa
}
p img {
background-color: #bbbbbb;
background-color: #bababa;
}
textarea {
background-color: #3c3f41;
color: #dddddd
color: #bababa
}
a {
color: #589df6
}
tr {
@@ -82,6 +82,7 @@ class StudyBrowserWindow extends JFrame {
myPane.getStylesheets().add(scrollBarStyleUrl.toExternalForm());
myPane.setStyle("-fx-background-color: #3c3f41");
myPanel.getScene().getStylesheets().add(engineStyleUrl.toExternalForm());
myEngine.reload();
});
}
@@ -154,15 +155,37 @@ class StudyBrowserWindow extends JFrame {
}
template = template.replace("${highlight_mode}", getClass().getResource("/code-mirror/clike.js").toExternalForm());
template = template.replace("${codemirror}", getClass().getResource("/code-mirror/codemirror.js").toExternalForm());
template = template.replace("${python}", getClass().getResource("/code-mirror/python.js").toExternalForm());
template = template.replace("${runmode}", getClass().getResource("/code-mirror/runmode.js").toExternalForm());
template = template.replace("${colorize}", getClass().getResource("/code-mirror/colorize.js").toExternalForm());
template = template.replace("${codemirror}", getClass().getResource("/code-mirror/codemirror.js").toExternalForm());
template = template.replace("${javascript}", getClass().getResource("/code-mirror/javascript.js").toExternalForm());
template = template.replace("${css_codemirror}", getClass().getResource("/code-mirror/codemirror.css").toExternalForm());
template = template.replace("${css_oldcodemirror}", getClass().getResource("/code-mirror/codemirror-old.css").toExternalForm());
if (LafManager.getInstance().getCurrentLookAndFeel() instanceof DarculaLookAndFeelInfo) {
template = template.replace("${css_oldcodemirror}", getClass().getResource("/code-mirror/codemirror-old-darcula.css").toExternalForm());
template = template.replace("${css_codemirror}", getClass().getResource("/code-mirror/codemirror-darcula.css").toExternalForm());
}
else {
template = template.replace("${css_oldcodemirror}", getClass().getResource("/code-mirror/codemirror-old.css").toExternalForm());
template = template.replace("${css_codemirror}", getClass().getResource("/code-mirror/codemirror.css").toExternalForm());
}
template = template.replace("${default-mode}", configurator.getDefaultHighlightingMode());
template = template.replace("${code}", content);
template = template.replace("${code}", "<h2>Nullable types</h2>\n" +
"<p>Read about <a href=\"http://kotlinlang.org/docs/reference/null-safety.html\">null safety and safe calls</a> in Kotlin and rewrite the following Java code using only one <code>if</code> expression:</p><pre><code data-lang=\"text/x-java\">public void sendMessageToClient(\n" +
" @Nullable Client client,\n" +
" @Nullable String message,\n" +
" @NotNull Mailer mailer\n" +
") {\n" +
" if (client == null || message == null) return;\n" +
"\n" +
" PersonalInfo personalInfo = client.getPersonalInfo();\n" +
" if (personalInfo == null) return;\n" +
"\n" +
" String email = personalInfo.getEmail();\n" +
" if (email == null) return;\n" +
"\n" +
" mailer.sendMessage(email, message);\n" +
"}\n" +
"</code></pre>");
return template;
}