Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Intellij Community
Commits
fb78774f
Commit
fb78774f
authored
6 years ago
by
Yaroslav Pankratyev
Browse files
Options
Download
Email Patches
Plain Diff
IDEA-196403 Color picker for color icons in theme JSONs
parent
78ceef7e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
plugins/devkit/devkit-core/resources/org/jetbrains/idea/devkit/DevKitBundle.properties
+2
-0
...sources/org/jetbrains/idea/devkit/DevKitBundle.properties
plugins/devkit/devkit-core/src/themes/ThemeColorAnnotator.java
+32
-6
...ns/devkit/devkit-core/src/themes/ThemeColorAnnotator.java
with
34 additions
and
6 deletions
+34
-6
plugins/devkit/devkit-core/resources/org/jetbrains/idea/devkit/DevKitBundle.properties
+
2
-
0
View file @
fb78774f
...
...
@@ -108,6 +108,8 @@ new.theme.dialog.name.text.field.text=Name:
new.theme.dialog.is.dark.checkbox.text
=
Dark theme
new.theme.dialog.name.empty
=
Theme Name must not be empty
theme.choose.color.dialog.title
=
Choose Color
new.menu.application.component.text
=
Application Component
new.menu.module.component.text
=
Module Component
new.menu.project.component.text
=
Project Component
...
...
This diff is collapsed.
Click to expand it.
plugins/devkit/devkit-core/src/themes/ThemeColorAnnotator.java
+
32
-
6
View file @
fb78774f
...
...
@@ -2,21 +2,29 @@
package
org.jetbrains.idea.devkit.themes
;
import
com.intellij.codeInsight.daemon.LineMarkerSettings
;
import
com.intellij.json.psi.JsonElementGenerator
;
import
com.intellij.json.psi.JsonStringLiteral
;
import
com.intellij.lang.annotation.Annotation
;
import
com.intellij.lang.annotation.AnnotationHolder
;
import
com.intellij.lang.annotation.Annotator
;
import
com.intellij.openapi.actionSystem.AnAction
;
import
com.intellij.openapi.actionSystem.AnActionEvent
;
import
com.intellij.openapi.actionSystem.CommonDataKeys
;
import
com.intellij.openapi.command.WriteCommandAction
;
import
com.intellij.openapi.editor.Editor
;
import
com.intellij.openapi.editor.markup.GutterIconRenderer
;
import
com.intellij.openapi.project.Project
;
import
com.intellij.openapi.util.text.StringUtil
;
import
com.intellij.psi.PsiElement
;
import
com.intellij.ui.ColorChooser
;
import
com.intellij.ui.ColorLineMarkerProvider
;
import
com.intellij.ui.ColorUtil
;
import
com.intellij.util.ui.ColorIcon
;
import
com.intellij.util.ui.EmptyIcon
;
import
com.intellij.util.ui.JBUI
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.Nullable
;
import
org.jetbrains.idea.devkit.DevKitBundle
;
import
javax.swing.*
;
import
java.awt.*
;
...
...
@@ -60,7 +68,7 @@ public class ThemeColorAnnotator implements Annotator {
private
final
JsonStringLiteral
myLiteral
;
private
MyRenderer
(
String
colorHex
,
JsonStringLiteral
literal
)
{
private
MyRenderer
(
@NotNull
String
colorHex
,
@NotNull
JsonStringLiteral
literal
)
{
myColorHex
=
colorHex
;
myLiteral
=
literal
;
}
...
...
@@ -82,18 +90,36 @@ public class ThemeColorAnnotator implements Annotator {
return
new
AnAction
()
{
@Override
public
void
actionPerformed
(
@NotNull
AnActionEvent
e
)
{
//TODO implement
Editor
editor
=
CommonDataKeys
.
EDITOR
.
getData
(
e
.
getDataContext
());
if
(
editor
==
null
)
return
;
Color
currentColor
=
getColor
(
myColorHex
);
if
(
currentColor
==
null
)
return
;
Color
newColor
=
ColorChooser
.
chooseColor
(
editor
.
getComponent
(),
DevKitBundle
.
message
(
"theme.choose.color.dialog.title"
),
currentColor
);
if
(
newColor
==
null
||
newColor
.
equals
(
currentColor
))
return
;
String
newColorHex
=
ColorUtil
.
toHtmlColor
(
newColor
);
Project
project
=
myLiteral
.
getProject
();
JsonStringLiteral
newLiteral
=
new
JsonElementGenerator
(
project
).
createStringLiteral
(
newColorHex
);
WriteCommandAction
.
writeCommandAction
(
project
,
myLiteral
.
getContainingFile
()).
run
(()
->
myLiteral
.
replace
(
newLiteral
));
}
};
}
@Nullable
@Override
public
String
getTooltipText
()
{
return
null
;
//TODO implement
private
static
Color
getColor
(
@NotNull
String
colorHex
)
{
try
{
return
Color
.
decode
(
colorHex
);
}
catch
(
NumberFormatException
ignored
)
{
return
null
;
}
}
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help