editorColorsSchemes;
@@ -192,7 +198,6 @@ private static String getSettingsPrefix() {
return pluginId == null ? "com.chrisrm.idea.MaterialThemeUI" : pluginId.getIdString();
}
-
//region Action Toggles
public void toggleMaterialDesign() {
final MTConfig mtConfig = MTConfig.getInstance();
@@ -250,6 +255,12 @@ public void toggleMaterialIcons() {
this.updateFileIcons();
}
+ public void toggleUpperCaseTabs() {
+ final MTConfig mtConfig = MTConfig.getInstance();
+ mtConfig.setIsUpperCaseTabs(!mtConfig.isUpperCaseTabs());
+ mtConfig.fireChanged();
+ }
+
public void toggleStatusBarIndicator() {
final MTConfig mtConfig = MTConfig.getInstance();
mtConfig.setIsStatusBarTheme(!mtConfig.isStatusBarTheme());
@@ -280,7 +291,7 @@ public void setStatusBarBorders() {
if (component != null) {
final IdeStatusBarImpl ideStatusBar = UIUtil.findComponentOfType(component, IdeStatusBarImpl.class);
if (ideStatusBar != null) {
- ideStatusBar.setBorder(compactSidebar ? JBUI.Borders.empty() : JBUI.Borders.empty(8, 0));
+ ideStatusBar.setBorder(compactSidebar ? JBUI.Borders.empty() : JBUI.Borders.empty(DEFAULT_STATUSBAR_PADDING, 0));
}
}
});
@@ -316,7 +327,14 @@ public void activate(final MTTheme mtTheme) {
MTConfig.getInstance().setSelectedTheme(newTheme);
try {
- UIManager.setLookAndFeel(new MTLaf(newTheme));
+ if (newTheme.isDark()) {
+ LafManager.getInstance().setCurrentLookAndFeel(new DarculaLookAndFeelInfo());
+ UIManager.setLookAndFeel(new MTLaf(newTheme));
+ }
+ else {
+ LafManager.getInstance().setCurrentLookAndFeel(new IntelliJLookAndFeelInfo());
+ UIManager.setLookAndFeel(new MTLightLaf(newTheme));
+ }
JBColor.setDark(newTheme.isDark());
IconLoader.setUseDarkIcons(newTheme.isDark());
@@ -339,10 +357,14 @@ public void activate(final MTTheme mtTheme) {
final EditorColorsScheme scheme = EditorColorsManager.getInstance().getScheme(makeActiveScheme);
// We need this to update parts of the UI that do not change
- DarculaInstaller.uninstall();
- if (newTheme.isDark()) {
+ if (UIUtil.isUnderDarcula()) {
+ DarculaInstaller.uninstall();
DarculaInstaller.install();
}
+ else {
+ DarculaInstaller.uninstall();
+ }
+ LafManager.getInstance().updateUI();
if (scheme != null) {
EditorColorsManager.getInstance().setGlobalScheme(scheme);
@@ -365,12 +387,12 @@ public void applyAccents(final boolean reloadUI) {
// override for transparency
UIManager.put("Focus.color", ColorUtil.toAlpha(accentColorColor, 70));
- if (reloadUI) {
- reloadUI();
- }
+ // if (reloadUI) {
+ // final MTTheme mtTheme = MTConfig.getInstance().getSelectedTheme();
+ // reloadUI(mtTheme);
+ // }
}
-
private void askForRestart() {
final String title = MaterialThemeBundle.message("mt.restartDialog.title");
final String message = MaterialThemeBundle.message("mt.restartDialog.content");
@@ -381,7 +403,6 @@ private void askForRestart() {
}
}
-
/**
* Completely remove theme
*
@@ -391,9 +412,10 @@ private void removeTheme(final MTTheme mtTheme) {
try {
resetContrast();
- if (mtTheme.isDark()) {
+ if (UIUtil.isUnderDarcula()) {
UIManager.setLookAndFeel(new DarculaLaf());
- } else {
+ }
+ else {
UIManager.setLookAndFeel(new IntelliJLaf());
}
@@ -402,11 +424,15 @@ private void removeTheme(final MTTheme mtTheme) {
PropertiesComponent.getInstance().unsetValue(getSettingsPrefix() + ".theme");
// We need this to update parts of the UI that do not change
- DarculaInstaller.uninstall();
- if (mtTheme.isDark()) {
+ if (UIUtil.isUnderDarcula()) {
+ DarculaInstaller.uninstall();
DarculaInstaller.install();
}
- } catch (final UnsupportedLookAndFeelException e) {
+ else {
+ DarculaInstaller.uninstall();
+ }
+ }
+ catch (final UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
}
@@ -440,10 +466,11 @@ private void applyFonts() {
if (uiSettings.getOverrideLafFonts()) {
applyCustomFonts(lookAndFeelDefaults, uiSettings.getFontFace(), uiSettings.getFontSize());
- } else {
- final Font roboto = MTUiUtils.findFont("Roboto");
+ }
+ else {
+ final Font roboto = MTUiUtils.findFont(DEFAULT_FONT);
if (roboto != null) {
- applyCustomFonts(lookAndFeelDefaults, "Roboto", JBUI.scale(12));
+ applyCustomFonts(lookAndFeelDefaults, DEFAULT_FONT, JBUI.scale(DEFAULT_FONT_SIZE));
}
}
}
@@ -465,7 +492,7 @@ private void applyContrast(final boolean reloadUI) {
}
if (reloadUI) {
- reloadUI();
+ reloadUI(mtTheme);
}
}
@@ -486,12 +513,12 @@ private void resetContrast() {
*/
private void applyCustomTreeIndent() {
final MTConfig mtConfig = MTConfig.getInstance();
- final int defaultIndent = 6;
if (mtConfig.isCustomTreeIndentEnabled) {
UIManager.put("Tree.rightChildIndent", mtConfig.customTreeIndent);
- } else {
- UIManager.put("Tree.rightChildIndent", defaultIndent);
+ }
+ else {
+ UIManager.put("Tree.rightChildIndent", DEFAULT_INDENT);
}
}
//endregion
@@ -502,19 +529,20 @@ private void applyCustomTreeIndent() {
* Use compact sidebar option
*/
private void applyCompactSidebar(final boolean reloadUI) {
- final boolean compactSidebar = MTConfig.getInstance().isCompactSidebar();
- final int rowHeight = compactSidebar ? JBUI.scale(18) : JBUI.scale(28);
+ final boolean isCustomSidebarHeight = MTConfig.getInstance().isCompactSidebar();
+ final int customSidebarHeight = MTConfig.getInstance().getCustomSidebarHeight();
+ final int rowHeight = isCustomSidebarHeight ? JBUI.scale(customSidebarHeight) : JBUI.scale(DEFAULT_SIDEBAR_HEIGHT);
UIManager.put("Tree.rowHeight", rowHeight);
if (reloadUI) {
- reloadUI();
+ final MTTheme mtTheme = MTConfig.getInstance().getSelectedTheme();
+ reloadUI(mtTheme);
}
}
//endregion
//region Accents supports
-
/**
* Override patch style editor kit for custom accent support
*/
@@ -536,14 +564,15 @@ private void patchStyledEditorKit() {
final Field keyField = HTMLEditorKit.class.getDeclaredField("DEFAULT_STYLES_KEY");
keyField.setAccessible(true);
AppContext.getAppContext().put(keyField.get(null), styleSheet);
- } catch (final Exception ignored) {
+ }
+ catch (final Exception ignored) {
}
}
//endregion
//region Tabs Height support
public void setTabsHeight() {
- PropertiesComponent.getInstance().setValue(TABS_HEIGHT, MTConfig.getInstance().getTabsHeight(), 24);
+ PropertiesComponent.getInstance().setValue(TABS_HEIGHT, MTConfig.getInstance().getTabsHeight(), DEFAULT_TAB_HEIGHT);
}
public void setTabsHeight(final int newTabsHeight) {
@@ -552,33 +581,33 @@ public void setTabsHeight(final int newTabsHeight) {
}
public void setBoldTabs() {
- // Project[] openProjects = ProjectManager.getInstance().getOpenProjects();
- // boolean isBoldTabs = MTConfig.getInstance().getIsBoldTabs();
- //
- // for (Project openProject : openProjects) {
- // final FileEditorManagerEx manager = FileEditorManagerEx.getInstanceEx(openProject);
- // for (final EditorWindow editorWindow : manager.getWindows()) {
- // EditorTabbedContainer tabbedPane = editorWindow.getTabbedPane();
- // if (tabbedPane != null) {
- // JBTabs tabs = tabbedPane.getTabs();
- // for (int i = 0; i < tabs.getTabCount(); i++) {
- // TabInfo tabAt = tabs.getTabAt(i);
- // tabAt.setDefaultStyle(isBoldTabs ? SimpleTextAttributes.STYLE_BOLD : SimpleTextAttributes.STYLE_PLAIN);
- // }
- // }
- // }
- // }
+ PropertiesComponent.getInstance().setValue(BOLD_TABS, MTConfig.getInstance().isUpperCaseTabs(), DEFAULT_IS_BOLD_TABS);
}
//endregion
/**
* Trigger a reloadUI event
+ *
+ * @param mtTheme
*/
- private void reloadUI() {
+ private void reloadUI(final MTTheme mtTheme) {
try {
- UIManager.setLookAndFeel(new MTLaf(MTConfig.getInstance().getSelectedTheme()));
+ if (mtTheme.isDark()) {
+ LafManager.getInstance().setCurrentLookAndFeel(new DarculaLookAndFeelInfo());
+ UIManager.setLookAndFeel(new MTLaf(mtTheme));
+ }
+ else {
+ LafManager.getInstance().setCurrentLookAndFeel(new IntelliJLookAndFeelInfo());
+ UIManager.setLookAndFeel(new MTLightLaf(mtTheme));
+ }
applyFonts();
- } catch (final UnsupportedLookAndFeelException e) {
+
+ DarculaInstaller.uninstall();
+ if (UIUtil.isUnderDarcula()) {
+ DarculaInstaller.install();
+ }
+ }
+ catch (final UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
}
diff --git a/src/main/java/com/chrisrm/idea/actions/MTAbstractTheme.java b/src/main/java/com/chrisrm/idea/actions/MTAbstractThemeAction.java
similarity index 58%
rename from src/main/java/com/chrisrm/idea/actions/MTAbstractTheme.java
rename to src/main/java/com/chrisrm/idea/actions/MTAbstractThemeAction.java
index b60f72b51..3b7fb5a24 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTAbstractTheme.java
+++ b/src/main/java/com/chrisrm/idea/actions/MTAbstractThemeAction.java
@@ -30,24 +30,7 @@
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
-public abstract class MTAbstractTheme extends ToggleAction {
- public static final String BACKGROUND = ""; // 38, 50, 56
- public static final String FOREGROUND = ""; // 176, 190, 197
- public static final String CARET = ""; // 255, 204, 0
- public static final String BORDER = ""; // 34, 45, 51
- public static final String TEXT = ""; // 96, 125, 139
- public static final String SELECTION_BACKGROUND = ""; // 84, 110, 122
- public static final String SELECTION_FOREGROUND = "";
- public static final String LABEL = ""; // 176, 190, 197
- public static final String SUB_LABEL = ""; // 84, 110, 122
- public static final String DISABLED = ""; // 65, 89, 103
- public static final String SIDEBAR_HEADING = ""; // 207, 216, 220
- public static final String STATUS_LABEL = ""; // 120, 144, 156
- public static final String INPUT_BORDER = ""; //55, 71, 79
- public static final String BUTTON_BACKGROUND = ""; // 44, 60, 65
- public static final String BUTTON_FOREGROUND = ""; // 96, 125, 139
- public static final String BUTTON_SELECTED = ""; // 49, 69, 73
- public static final String ACCENT_COLOR = ""; // 128, 203, 196
+public abstract class MTAbstractThemeAction extends ToggleAction {
/**
* Set button disabled if material theme is disabled
diff --git a/src/main/java/com/chrisrm/idea/actions/MTBiggerTabsAction.java b/src/main/java/com/chrisrm/idea/actions/MTBiggerTabsAction.java
index 5eb9fb829..d590027f6 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTBiggerTabsAction.java
+++ b/src/main/java/com/chrisrm/idea/actions/MTBiggerTabsAction.java
@@ -26,7 +26,7 @@
package com.chrisrm.idea.actions;
-import com.chrisrm.idea.themes.MTThemeManager;
+import com.chrisrm.idea.MTThemeManager;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
diff --git a/src/main/java/com/chrisrm/idea/actions/MTCompactSidebarAction.java b/src/main/java/com/chrisrm/idea/actions/MTCompactSidebarAction.java
index efde6cc71..7b494ca03 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTCompactSidebarAction.java
+++ b/src/main/java/com/chrisrm/idea/actions/MTCompactSidebarAction.java
@@ -27,7 +27,7 @@
package com.chrisrm.idea.actions;
import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.themes.MTThemeManager;
+import com.chrisrm.idea.MTThemeManager;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
diff --git a/src/main/java/com/chrisrm/idea/actions/MTCompactStatusBarAction.java b/src/main/java/com/chrisrm/idea/actions/MTCompactStatusBarAction.java
index 408ce3e22..2e9232184 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTCompactStatusBarAction.java
+++ b/src/main/java/com/chrisrm/idea/actions/MTCompactStatusBarAction.java
@@ -27,7 +27,7 @@
package com.chrisrm.idea.actions;
import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.themes.MTThemeManager;
+import com.chrisrm.idea.MTThemeManager;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
diff --git a/src/main/java/com/chrisrm/idea/actions/MTContrastAction.java b/src/main/java/com/chrisrm/idea/actions/MTContrastAction.java
index bdf037683..6f631b633 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTContrastAction.java
+++ b/src/main/java/com/chrisrm/idea/actions/MTContrastAction.java
@@ -27,7 +27,7 @@
package com.chrisrm.idea.actions;
import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.themes.MTThemeManager;
+import com.chrisrm.idea.MTThemeManager;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
diff --git a/src/main/java/com/chrisrm/idea/actions/MTDarkerThemeAction.java b/src/main/java/com/chrisrm/idea/actions/MTDarkerThemeAction.java
new file mode 100644
index 000000000..b531b5e40
--- /dev/null
+++ b/src/main/java/com/chrisrm/idea/actions/MTDarkerThemeAction.java
@@ -0,0 +1,44 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2017 Chris Magnussen and Elior Boukhobza
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ *
+ */
+
+package com.chrisrm.idea.actions;
+
+import com.chrisrm.idea.MTConfig;
+import com.chrisrm.idea.MTTheme;
+import com.chrisrm.idea.MTThemeManager;
+import com.intellij.openapi.actionSystem.AnActionEvent;
+
+public final class MTDarkerThemeAction extends MTAbstractThemeAction {
+ @Override
+ public boolean isSelected(final AnActionEvent e) {
+ return MTConfig.getInstance().getSelectedTheme() == MTTheme.DARKER;
+ }
+
+ @Override
+ public void setSelected(final AnActionEvent e, final boolean state) {
+ MTThemeManager.getInstance().activate(MTTheme.DARKER);
+ }
+}
diff --git a/src/main/java/com/chrisrm/idea/actions/MTDefaultThemeAction.java b/src/main/java/com/chrisrm/idea/actions/MTDefaultThemeAction.java
new file mode 100644
index 000000000..b6ea303f0
--- /dev/null
+++ b/src/main/java/com/chrisrm/idea/actions/MTDefaultThemeAction.java
@@ -0,0 +1,44 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2017 Chris Magnussen and Elior Boukhobza
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ *
+ */
+
+package com.chrisrm.idea.actions;
+
+import com.chrisrm.idea.MTConfig;
+import com.chrisrm.idea.MTTheme;
+import com.chrisrm.idea.MTThemeManager;
+import com.intellij.openapi.actionSystem.AnActionEvent;
+
+public final class MTDefaultThemeAction extends MTAbstractThemeAction {
+ @Override
+ public boolean isSelected(final AnActionEvent e) {
+ return MTConfig.getInstance().getSelectedTheme() == MTTheme.DEFAULT;
+ }
+
+ @Override
+ public void setSelected(final AnActionEvent e, final boolean state) {
+ MTThemeManager.getInstance().activate(MTTheme.DEFAULT);
+ }
+}
diff --git a/src/main/java/com/chrisrm/idea/actions/MTDisableComponentsAction.java b/src/main/java/com/chrisrm/idea/actions/MTDisableComponentsAction.java
index 8dc3154c8..545ced5cc 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTDisableComponentsAction.java
+++ b/src/main/java/com/chrisrm/idea/actions/MTDisableComponentsAction.java
@@ -27,7 +27,7 @@
package com.chrisrm.idea.actions;
import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.themes.MTThemeManager;
+import com.chrisrm.idea.MTThemeManager;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
diff --git a/src/main/java/com/chrisrm/idea/actions/MTDisableThemeAction.java b/src/main/java/com/chrisrm/idea/actions/MTDisableThemeAction.java
index 2e5eef28c..7fdc0d048 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTDisableThemeAction.java
+++ b/src/main/java/com/chrisrm/idea/actions/MTDisableThemeAction.java
@@ -27,7 +27,7 @@
package com.chrisrm.idea.actions;
import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.themes.MTThemeManager;
+import com.chrisrm.idea.MTThemeManager;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
diff --git a/src/main/java/com/chrisrm/idea/actions/MTHideFileIconsAction.java b/src/main/java/com/chrisrm/idea/actions/MTHideFileIconsAction.java
index b94f24141..d0bcf9658 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTHideFileIconsAction.java
+++ b/src/main/java/com/chrisrm/idea/actions/MTHideFileIconsAction.java
@@ -27,7 +27,7 @@
package com.chrisrm.idea.actions;
import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.themes.MTThemeManager;
+import com.chrisrm.idea.MTThemeManager;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
diff --git a/src/main/java/com/chrisrm/idea/actions/MTLighterThemeAction.java b/src/main/java/com/chrisrm/idea/actions/MTLighterThemeAction.java
new file mode 100644
index 000000000..7f9cdf317
--- /dev/null
+++ b/src/main/java/com/chrisrm/idea/actions/MTLighterThemeAction.java
@@ -0,0 +1,44 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2017 Chris Magnussen and Elior Boukhobza
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ *
+ */
+
+package com.chrisrm.idea.actions;
+
+import com.chrisrm.idea.MTConfig;
+import com.chrisrm.idea.MTTheme;
+import com.chrisrm.idea.MTThemeManager;
+import com.intellij.openapi.actionSystem.AnActionEvent;
+
+public final class MTLighterThemeAction extends MTAbstractThemeAction {
+ @Override
+ public boolean isSelected(final AnActionEvent e) {
+ return MTConfig.getInstance().getSelectedTheme() == MTTheme.LIGHTER;
+ }
+
+ @Override
+ public void setSelected(final AnActionEvent e, final boolean state) {
+ MTThemeManager.getInstance().activate(MTTheme.LIGHTER);
+ }
+}
diff --git a/src/main/java/com/chrisrm/idea/actions/MTMaterialIconsAction.java b/src/main/java/com/chrisrm/idea/actions/MTMaterialIconsAction.java
index 54ba34447..44f116ea0 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTMaterialIconsAction.java
+++ b/src/main/java/com/chrisrm/idea/actions/MTMaterialIconsAction.java
@@ -27,7 +27,7 @@
package com.chrisrm.idea.actions;
import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.themes.MTThemeManager;
+import com.chrisrm.idea.MTThemeManager;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
diff --git a/src/main/java/com/chrisrm/idea/actions/MTPalenightThemeAction.java b/src/main/java/com/chrisrm/idea/actions/MTPalenightThemeAction.java
new file mode 100644
index 000000000..6752fce92
--- /dev/null
+++ b/src/main/java/com/chrisrm/idea/actions/MTPalenightThemeAction.java
@@ -0,0 +1,44 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2017 Chris Magnussen and Elior Boukhobza
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ *
+ */
+
+package com.chrisrm.idea.actions;
+
+import com.chrisrm.idea.MTConfig;
+import com.chrisrm.idea.MTTheme;
+import com.chrisrm.idea.MTThemeManager;
+import com.intellij.openapi.actionSystem.AnActionEvent;
+
+public final class MTPalenightThemeAction extends MTAbstractThemeAction {
+ @Override
+ public boolean isSelected(final AnActionEvent e) {
+ return MTConfig.getInstance().getSelectedTheme() == MTTheme.PALENIGHT;
+ }
+
+ @Override
+ public void setSelected(final AnActionEvent e, final boolean state) {
+ MTThemeManager.getInstance().activate(MTTheme.PALENIGHT);
+ }
+}
diff --git a/src/main/java/com/chrisrm/idea/actions/MTToggleProjectViewDecoratorsAction.java b/src/main/java/com/chrisrm/idea/actions/MTToggleProjectViewDecoratorsAction.java
index 5e4e939e7..cdbe6eaa3 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTToggleProjectViewDecoratorsAction.java
+++ b/src/main/java/com/chrisrm/idea/actions/MTToggleProjectViewDecoratorsAction.java
@@ -27,7 +27,7 @@
package com.chrisrm.idea.actions;
import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.themes.MTThemeManager;
+import com.chrisrm.idea.MTThemeManager;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
diff --git a/src/main/java/com/chrisrm/idea/actions/MTToggleStatusbarIndicatorAction.java b/src/main/java/com/chrisrm/idea/actions/MTToggleStatusbarIndicatorAction.java
index 2a157e03f..1958717cd 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTToggleStatusbarIndicatorAction.java
+++ b/src/main/java/com/chrisrm/idea/actions/MTToggleStatusbarIndicatorAction.java
@@ -27,7 +27,7 @@
package com.chrisrm.idea.actions;
import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.themes.MTThemeManager;
+import com.chrisrm.idea.MTThemeManager;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
diff --git a/src/main/java/com/chrisrm/idea/actions/MTUpperCaseTabsAction.java b/src/main/java/com/chrisrm/idea/actions/MTUpperCaseTabsAction.java
new file mode 100644
index 000000000..0f13ac162
--- /dev/null
+++ b/src/main/java/com/chrisrm/idea/actions/MTUpperCaseTabsAction.java
@@ -0,0 +1,45 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2017 Chris Magnussen and Elior Boukhobza
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ *
+ */
+
+package com.chrisrm.idea.actions;
+
+import com.chrisrm.idea.MTConfig;
+import com.chrisrm.idea.MTThemeManager;
+import com.intellij.openapi.actionSystem.AnActionEvent;
+import com.intellij.openapi.actionSystem.ToggleAction;
+
+public final class MTUpperCaseTabsAction extends ToggleAction {
+ @Override
+ public boolean isSelected(final AnActionEvent e) {
+ return MTConfig.getInstance().isUpperCaseTabs();
+ }
+
+ @Override
+ public void setSelected(final AnActionEvent e, final boolean state) {
+ MTThemeManager.getInstance().toggleUpperCaseTabs();
+
+ }
+}
diff --git a/src/main/java/com/chrisrm/idea/actions/accents/MTAbstractAccentAction.java b/src/main/java/com/chrisrm/idea/actions/accents/MTAbstractAccentAction.java
index 308019fa2..a7d3949d5 100644
--- a/src/main/java/com/chrisrm/idea/actions/accents/MTAbstractAccentAction.java
+++ b/src/main/java/com/chrisrm/idea/actions/accents/MTAbstractAccentAction.java
@@ -27,7 +27,7 @@
package com.chrisrm.idea.actions.accents;
import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.themes.MTThemeManager;
+import com.chrisrm.idea.MTThemeManager;
import com.chrisrm.idea.utils.IconReplacer;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.AnAction;
diff --git a/src/main/java/com/chrisrm/idea/config/MTConfigTopHitProvider.java b/src/main/java/com/chrisrm/idea/config/MTConfigTopHitProvider.java
index 2d79a0c73..2912ad127 100644
--- a/src/main/java/com/chrisrm/idea/config/MTConfigTopHitProvider.java
+++ b/src/main/java/com/chrisrm/idea/config/MTConfigTopHitProvider.java
@@ -51,6 +51,8 @@ public final class MTConfigTopHitProvider extends OptionsTopHitProvider {
option(messageIde("mt.materialdesign"), "getIsMaterialDesign", "setIsMaterialDesign"),
option(messageIde("mt.boldtabs"), "getIsBoldTabs", "setIsBoldTabs"),
option(messageIde("mt.iswallpaperset"), "isWallpaperSet", "setIsWallpaperSet"),
+ option(messageIde("MTForm.isUpperCaseTabsCheckbox.text"), "isUpperCaseTabs", "setIsUpperCaseTabs"),
+
option(messageIde("MTForm.customTreeIndentCheckbox.text"), "isCustomTreeIndent", "setIsCustomTreeIndent"),
diff --git a/src/main/java/com/chrisrm/idea/config/MTConfigurable.java b/src/main/java/com/chrisrm/idea/config/MTConfigurable.java
index 8e91119ae..7e26a3425 100644
--- a/src/main/java/com/chrisrm/idea/config/MTConfigurable.java
+++ b/src/main/java/com/chrisrm/idea/config/MTConfigurable.java
@@ -30,6 +30,7 @@
import com.chrisrm.idea.config.ui.MTForm;
import com.chrisrm.idea.messages.MaterialThemeBundle;
import com.intellij.openapi.options.SearchableConfigurable;
+import com.intellij.ui.ColorUtil;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -82,6 +83,7 @@ protected void setFormState(final MTForm mtForm, final MTConfig mtConfig) {
getForm().setCustomWallpaper(mtConfig.getWallpaper());
getForm().setIsCustomTreeIndent(mtConfig.isCustomTreeIndent());
getForm().setCustomTreeIndent(mtConfig.getCustomTreeIndent());
+ getForm().setIsUpperCaseTabs(mtConfig.isUpperCaseTabs());
getForm().setIsUseMaterialIcons(mtConfig.isUseMaterialIcons());
getForm().setUseProjectViewDecorators(mtConfig.isUseProjectViewDecorators());
@@ -90,9 +92,12 @@ protected void setFormState(final MTForm mtForm, final MTConfig mtConfig) {
getForm().setIsCompactStatusBar(mtConfig.isCompactStatusBar());
getForm().setIsStatusBarTheme(mtConfig.isStatusBarTheme());
getForm().setIsMaterialTheme(mtConfig.isMaterialTheme());
+ getForm().setCustomSidebarHeight(mtConfig.getCustomSidebarHeight());
getForm().setIsThemedScrollbars(mtConfig.isThemedScrollbars());
+ getForm().setCustomAccentColor(ColorUtil.fromHex(mtConfig.getAccentColor()));
+
getForm().afterStateSet();
}
@@ -111,6 +116,7 @@ protected void doApply(final MTForm mtForm, final MTConfig mtConfig) {
mtConfig.setWallpaper(getForm().getWallpaper());
mtConfig.setIsCustomTreeIndent(getForm().isCustomTreeIndent());
mtConfig.setCustomTreeIndent(getForm().getCustomTreeIndent());
+ mtConfig.setIsUpperCaseTabs(getForm().isUpperCaseTabs());
mtConfig.setUseMaterialIcons(getForm().isUseMaterialIcons());
mtConfig.setUseProjectViewDecorators(getForm().getUseProjectViewDecorators());
@@ -119,8 +125,10 @@ protected void doApply(final MTForm mtForm, final MTConfig mtConfig) {
mtConfig.setIsStatusBarTheme(getForm().isStatusBarTheme());
mtConfig.setIsCompactStatusBar(getForm().isCompactStatusBar());
mtConfig.setIsMaterialTheme(getForm().getIsMaterialTheme());
+ mtConfig.setCustomSidebarHeight(getForm().getCustomSidebarHeight());
mtConfig.setThemedScrollbars(getForm().isThemedScrollbars());
+ mtConfig.setAccentColor(ColorUtil.toHex(getForm().getCustomAccentColor()));
mtConfig.fireChanged();
}
@@ -139,6 +147,7 @@ protected boolean checkModified(final MTForm mtForm, final MTConfig mtConfig) {
modified = modified || mtConfig.isCustomTreeIndentChanged(getForm().isCustomTreeIndent());
modified = modified || mtConfig.customTreeIndentChanged(getForm().getCustomTreeIndent());
+ modified = modified || mtConfig.isUpperCaseTabsChanged(getForm().isUpperCaseTabs());
modified = modified || mtConfig.isMaterialIconsChanged(getForm().isUseMaterialIcons());
modified = modified || mtConfig.isUseProjectViewDecoratorsChanged(getForm().getUseProjectViewDecorators());
@@ -147,8 +156,10 @@ protected boolean checkModified(final MTForm mtForm, final MTConfig mtConfig) {
modified = modified || mtConfig.isCompactStatusBarChanged(getForm().isCompactStatusBar());
modified = modified || mtConfig.isStatusBarThemeChanged(getForm().isStatusBarTheme());
modified = modified || mtConfig.isMaterialThemeChanged(getForm().getIsMaterialTheme());
+ modified = modified || mtConfig.customSidebarHeightChanged(getForm().getCustomSidebarHeight());
modified = modified || mtConfig.isThemedScrollbarsChanged(getForm().isThemedScrollbars());
+ modified = modified || mtConfig.isAccentColorChanged(getForm().getCustomAccentColor());
return modified;
diff --git a/src/main/java/com/chrisrm/idea/config/MTOptionContributor.java b/src/main/java/com/chrisrm/idea/config/MTOptionContributor.java
index 47a1c8c6e..454877423 100644
--- a/src/main/java/com/chrisrm/idea/config/MTOptionContributor.java
+++ b/src/main/java/com/chrisrm/idea/config/MTOptionContributor.java
@@ -48,6 +48,8 @@ public void processOptions(@NotNull final SearchableOptionProcessor processor) {
displayName, true);
processor.addOptions(MaterialThemeBundle.message("mt.boldtabs"), null, displayName, MTConfigurable.ID,
displayName, true);
+ processor.addOptions(MaterialThemeBundle.message("MTForm.isUpperCaseTabsCheckbox.text"), null, displayName, MTConfigurable.ID,
+ displayName, true);
processor.addOptions(MaterialThemeBundle.message("MTForm.tabHeight"), null, displayName, MTConfigurable.ID,
displayName, true);
processor.addOptions(MaterialThemeBundle.message("mt.iswallpaperset"), null, displayName, MTConfigurable.ID,
diff --git a/src/main/java/com/chrisrm/idea/config/scope/MTScopeComponent.java b/src/main/java/com/chrisrm/idea/config/scope/MTScopeComponent.java
index af7c698fb..646ebd78b 100644
--- a/src/main/java/com/chrisrm/idea/config/scope/MTScopeComponent.java
+++ b/src/main/java/com/chrisrm/idea/config/scope/MTScopeComponent.java
@@ -26,10 +26,10 @@
package com.chrisrm.idea.config.scope;
-import com.chrisrm.idea.actions.MTDarkerTheme;
-import com.chrisrm.idea.actions.MTDefaultTheme;
-import com.chrisrm.idea.actions.MTLighterTheme;
-import com.chrisrm.idea.actions.MTPalenightTheme;
+import com.chrisrm.idea.themes.MTDarkerTheme;
+import com.chrisrm.idea.themes.MTDefaultTheme;
+import com.chrisrm.idea.themes.MTLighterTheme;
+import com.chrisrm.idea.themes.MTPalenightTheme;
import com.intellij.openapi.components.AbstractProjectComponent;
import com.intellij.openapi.components.ProjectComponent;
import com.intellij.openapi.project.Project;
@@ -56,7 +56,7 @@ public void initComponent() {
* Note: If the scope has changed somehow (by changing the name or the color), it will add a duplicate.
*/
private void addDisabledFileColors() {
- FileColorManager manager = FileColorManager.getInstance(myProject);
+ final FileColorManager manager = FileColorManager.getInstance(myProject);
manager.addScopeColor(MTDefaultNonProjectScope.NAME, MTDefaultTheme.DISABLED, false);
manager.addScopeColor(MTDarkerNonProjectScope.NAME, MTDarkerTheme.DISABLED, false);
manager.addScopeColor(MTLighterNonProjectScope.NAME, MTLighterTheme.DISABLED, false);
diff --git a/src/main/java/com/chrisrm/idea/config/ui/MTForm.java b/src/main/java/com/chrisrm/idea/config/ui/MTForm.java
index 678ca69b3..e67a1da6f 100644
--- a/src/main/java/com/chrisrm/idea/config/ui/MTForm.java
+++ b/src/main/java/com/chrisrm/idea/config/ui/MTForm.java
@@ -50,6 +50,8 @@ public class MTForm implements MTFormUI {
private SpinnerModel highlightSpinnerModel;
private SpinnerModel tabsHeightSpinnerModel;
private SpinnerModel customTreeIndentModel;
+ private SpinnerModel customSidebarHeightModel;
+
@Override
public JComponent getContent() {
@@ -94,19 +96,30 @@ public Integer getCustomTreeIndent() {
return (Integer) customTreeIndentModel.getValue();
}
- public void setCustomTreeIndent(Integer customTreeIndent) {
+ public void setCustomTreeIndent(final Integer customTreeIndent) {
customTreeIndentModel.setValue(customTreeIndent);
}
+ public Integer getCustomSidebarHeight() {
+ return (Integer) customSidebarHeightModel.getValue();
+ }
+
+ public void setCustomSidebarHeight(final Integer customSidebarHeight) {
+ customSidebarHeightModel.setValue(customSidebarHeight);
+ }
+
+
@Override
public void init() {
- MTConfig config = MTConfig.getInstance();
+ final MTConfig config = MTConfig.getInstance();
highlightSpinnerModel = new SpinnerNumberModel(config.getHighlightThickness(), 1, 5, 1);
highlightSpinner.setModel(highlightSpinnerModel);
- tabsHeightSpinnerModel = new SpinnerNumberModel(config.getTabsHeight(), 25, 60, 1);
+ tabsHeightSpinnerModel = new SpinnerNumberModel(config.getTabsHeight(), 18, 60, 1);
tabHeightSpinner.setModel(tabsHeightSpinnerModel);
customTreeIndentModel = new SpinnerNumberModel(config.getCustomTreeIndent(), 2, 8, 2);
customIndentSpinner.setModel(customTreeIndentModel);
+ customSidebarHeightModel = new SpinnerNumberModel(config.getCustomSidebarHeight(), 18, 30, 2);
+ customSidebarSpinner.setModel(customSidebarHeightModel);
}
public boolean getIsContrastMode() {
@@ -207,14 +220,18 @@ public void setTabsHeight(int tabsHeight) {
private ColorPanel activeTabHighlightColor;
private JSpinner highlightSpinner;
private JButton resetTabDefaultsBtn;
- private JCheckBox boldTabs;
+ private JCheckBox isUpperCaseTabsCheckbox;
private JSpinner tabHeightSpinner;
private JCheckBox isContrastModeCheckbox;
private JCheckBox hideFileIconsCheckbox;
private JCheckBox isCompactSidebarCheckbox;
+ private JSpinner customSidebarSpinner;
private JCheckBox customTreeIndentCheckbox;
private JSpinner customIndentSpinner;
private JCheckBox isCompactStatusbarCheckbox;
+ private JCheckBox boldTabs;
+ private JLabel customAccentColorLabel;
+ private ColorPanel customAccentColorChooser;
private JCheckBox isWallpaperSetCheckbox;
private JLabel customBgLabel;
private TextFieldWithBrowseButton customBgChooser;
@@ -254,6 +271,7 @@ public MTForm() {
public void setIsCompactSidebar(boolean compactSidebar) {
this.isCompactSidebarCheckbox.setSelected(compactSidebar);
+ enableDisableCustomSidebarHeight(compactSidebar);
}
public boolean isCompactSidebar() {
@@ -280,28 +298,49 @@ public boolean getIsMaterialTheme() {
return this.materialThemeCheckbox.isSelected();
}
- public void setIsMaterialTheme(boolean materialTheme) {
+ public void setIsMaterialTheme(final boolean materialTheme) {
this.materialThemeCheckbox.setSelected(materialTheme);
}
- private void enableDisableCustomBg(boolean isWallpaperSet) {
+ public void setIsUpperCaseTabs(final boolean upperCaseTabs) {
+ this.isUpperCaseTabsCheckbox.setSelected(upperCaseTabs);
+ }
+
+ public boolean isUpperCaseTabs() {
+ return this.isUpperCaseTabsCheckbox.isSelected();
+ }
+
+ public void setCustomAccentColor(Color customAccentColor) {
+ this.customAccentColorChooser.setSelectedColor(customAccentColor);
+ }
+
+ public Color getCustomAccentColor() {
+ return this.customAccentColorChooser.getSelectedColor();
+ }
+
+ private void enableDisableCustomBg(final boolean isWallpaperSet) {
this.customBgLabel.setEnabled(isWallpaperSet);
this.customBgChooser.setEnabled(isWallpaperSet);
this.customBgRestoreButton.setEnabled(isWallpaperSet);
}
- private void enableDisableFileIcons(boolean isMaterialIconsSet) {
+ private void enableDisableFileIcons(final boolean isMaterialIconsSet) {
this.hideFileIconsCheckbox.setEnabled(isMaterialIconsSet);
}
- private void enableDisableCustomTreeIndent(boolean isCustomTreeIndent) {
+ private void enableDisableCustomTreeIndent(final boolean isCustomTreeIndent) {
this.customIndentSpinner.setEnabled(isCustomTreeIndent);
}
- private void enableDisableActiveTabColor(boolean isCustomTreeIndent) {
+ private void enableDisableActiveTabColor(final boolean isCustomTreeIndent) {
this.activeTabHighlightColor.setEnabled(isCustomTreeIndent);
}
+ private void enableDisableCustomSidebarHeight(final boolean isCustomSidebarHeight) {
+ this.customSidebarSpinner.setEnabled(isCustomSidebarHeight);
+ }
+
+
//region Events - Actions Listeners
/**
@@ -328,6 +367,10 @@ private void customTreeIndentCheckboxActionPerformed(ActionEvent e) {
private void activeTabHighlightCheckboxActionPerformed(ActionEvent e) {
enableDisableActiveTabColor(this.activeTabHighlightCheckbox.isSelected());
}
+
+ private void isCompactSidebarCheckboxActionPerformed(ActionEvent e) {
+ enableDisableCustomSidebarHeight(this.isCompactSidebarCheckbox.isSelected());
+ }
//endregion
private void initComponents() {
@@ -341,7 +384,7 @@ private void initComponents() {
JLabel label1 = new JLabel();
highlightSpinner = new JSpinner();
resetTabDefaultsBtn = new JButton();
- boldTabs = new JCheckBox();
+ isUpperCaseTabsCheckbox = new JCheckBox();
JLabel tabHeight = new JLabel();
tabHeightSpinner = new JSpinner();
Spacer vSpacer2 = new Spacer();
@@ -350,9 +393,13 @@ private void initComponents() {
Spacer hSpacer2 = new Spacer();
hideFileIconsCheckbox = new JCheckBox();
isCompactSidebarCheckbox = new JCheckBox();
+ customSidebarSpinner = new JSpinner();
customTreeIndentCheckbox = new JCheckBox();
customIndentSpinner = new JSpinner();
isCompactStatusbarCheckbox = new JCheckBox();
+ boldTabs = new JCheckBox();
+ customAccentColorLabel = new JLabel();
+ customAccentColorChooser = new ColorPanel();
JPanel panel3 = new JPanel();
isWallpaperSetCheckbox = new JCheckBox();
customBgLabel = new JLabel();
@@ -391,10 +438,8 @@ private void initComponents() {
activeTabHighlightCheckbox.addActionListener(e -> activeTabHighlightCheckboxActionPerformed(e));
panel1.add(activeTabHighlightCheckbox, new GridConstraints(0, 0, 1, 1,
GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE,
- GridConstraints.SIZEPOLICY_CAN_SHRINK |
- GridConstraints.SIZEPOLICY_CAN_GROW,
- GridConstraints.SIZEPOLICY_CAN_SHRINK |
- GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
null, null, null));
panel1.add(activeTabHighlightColor, new GridConstraints(0, 1, 1, 1,
GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE,
@@ -427,14 +472,13 @@ private void initComponents() {
GridConstraints.SIZEPOLICY_FIXED,
null, null, null));
- //---- boldTabs ----
- boldTabs.setLabel(bundle.getString("mt.boldtabs"));
- boldTabs.setText(bundle.getString("mt.boldtabs"));
- boldTabs.setToolTipText(bundle.getString("mt.boldtabs.tooltip"));
- panel1.add(boldTabs, new GridConstraints(3, 0, 1, 1,
+ //---- isUpperCaseTabsCheckbox ----
+ isUpperCaseTabsCheckbox.setText(bundle.getString("MTForm.isUpperCaseTabsCheckbox.text"));
+ isUpperCaseTabsCheckbox.setToolTipText(bundle.getString("MTForm.isUpperCaseTabsCheckbox.toolTipText"));
+ panel1.add(isUpperCaseTabsCheckbox, new GridConstraints(3, 0, 1, 1,
GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE,
GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
- GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
null, null, null));
//---- tabHeight ----
@@ -467,7 +511,7 @@ private void initComponents() {
//======== panel2 ========
{
panel2.setBorder(new TitledBorder(new EtchedBorder(), bundle.getString("mt.panels.section")));
- panel2.setLayout(new GridLayoutManager(5, 2, new Insets(0, 0, 0, 0), -1, -1));
+ panel2.setLayout(new GridLayoutManager(7, 2, new Insets(0, 0, 0, 0), -1, -1));
//---- isContrastModeCheckbox ----
isContrastModeCheckbox.setLabel(bundle.getString("mt.contrast"));
@@ -496,24 +540,29 @@ private void initComponents() {
//---- isCompactSidebarCheckbox ----
isCompactSidebarCheckbox.setText(bundle.getString("MTForm.isCompactSidebarCheckbox.text"));
isCompactSidebarCheckbox.setToolTipText(bundle.getString("MTForm.isCompactSidebarCheckbox.toolTipText"));
+ isCompactSidebarCheckbox.addActionListener(e -> isCompactSidebarCheckboxActionPerformed(e));
panel2.add(isCompactSidebarCheckbox, new GridConstraints(2, 0, 1, 1,
GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE,
- GridConstraints.SIZEPOLICY_CAN_SHRINK |
- GridConstraints.SIZEPOLICY_CAN_GROW,
- GridConstraints.SIZEPOLICY_CAN_SHRINK |
- GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
null, null, null));
+ //---- customSidebarSpinner ----
+ customSidebarSpinner.setToolTipText(bundle.getString("MTForm.customSidebarSpinner.toolTipText"));
+ panel2.add(customSidebarSpinner, new GridConstraints(2, 1, 1, 1,
+ GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ null, new Dimension(89, 29), null));
+
//---- customTreeIndentCheckbox ----
customTreeIndentCheckbox.setText(bundle.getString("MTForm.customTreeIndentCheckbox.text"));
customTreeIndentCheckbox.setToolTipText(bundle.getString("MTForm.customTreeIndentCheckbox.toolTipText"));
customTreeIndentCheckbox.addActionListener(e -> customTreeIndentCheckboxActionPerformed(e));
panel2.add(customTreeIndentCheckbox, new GridConstraints(3, 0, 1, 1,
GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE,
- GridConstraints.SIZEPOLICY_CAN_SHRINK |
- GridConstraints.SIZEPOLICY_CAN_GROW,
- GridConstraints.SIZEPOLICY_CAN_SHRINK |
- GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
null, null, null));
//---- customIndentSpinner ----
@@ -522,7 +571,9 @@ private void initComponents() {
GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE,
GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
- null, new Dimension(89, 29), null));//---- isCompactStatusbarCheckbox ----
+ null, new Dimension(89, 29), null));
+
+ //---- isCompactStatusbarCheckbox ----
isCompactStatusbarCheckbox.setText(bundle.getString("MTForm.isCompactStatusbarCheckbox.text"));
isCompactStatusbarCheckbox.setToolTipText(bundle.getString("MTForm.isCompactStatusBar.tooltip"));
panel2.add(isCompactStatusbarCheckbox, new GridConstraints(4, 0, 1, 1,
@@ -530,6 +581,30 @@ private void initComponents() {
GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
null, null, null));
+
+ //---- boldTabs ----
+ boldTabs.setLabel(bundle.getString("mt.boldtabs"));
+ boldTabs.setText(bundle.getString("mt.boldtabs"));
+ boldTabs.setToolTipText(bundle.getString("mt.boldtabs.tooltip"));
+ panel2.add(boldTabs, new GridConstraints(5, 0, 1, 1,
+ GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_FIXED,
+ null, null, null));
+
+ //---- customAccentColorLabel ----
+ customAccentColorLabel.setText(bundle.getString("MTForm.customAccentColorLabel.text"));
+ customAccentColorLabel.setToolTipText(bundle.getString("MTForm.customAccentColorLabel.toolTipText"));
+ panel2.add(customAccentColorLabel, new GridConstraints(6, 0, 1, 1,
+ GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ null, null, null, 2));
+ panel2.add(customAccentColorChooser, new GridConstraints(6, 1, 1, 1,
+ GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ null, null, null));
}
content.add(panel2, new GridConstraints(1, 0, 1, 1,
GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH,
@@ -585,8 +660,7 @@ private void initComponents() {
isMaterialDesignCheckbox.setToolTipText(bundle.getString("MTForm.isMaterialDesignCheckbox.toolTipText"));
panel3.add(isMaterialDesignCheckbox, new GridConstraints(2, 0, 1, 1,
GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE,
- GridConstraints.SIZEPOLICY_CAN_SHRINK |
- GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
GridConstraints.SIZEPOLICY_FIXED,
null, null, null));
@@ -605,10 +679,8 @@ private void initComponents() {
isProjectViewDecoratorsCheckbox.setToolTipText(bundle.getString("MTForm.projectViewDecorators.tooltip"));
panel3.add(isProjectViewDecoratorsCheckbox, new GridConstraints(4, 0, 1, 1,
GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE,
- GridConstraints.SIZEPOLICY_CAN_SHRINK |
- GridConstraints.SIZEPOLICY_CAN_GROW,
- GridConstraints.SIZEPOLICY_CAN_SHRINK |
- GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
null, null, null));
//---- materialThemeCheckbox ----
@@ -634,10 +706,8 @@ private void initComponents() {
themedScrollbarsCheckbox.setToolTipText(bundle.getString("MTForm.themedScrollbarsCheckbox.toolTipText"));
panel3.add(themedScrollbarsCheckbox, new GridConstraints(7, 0, 1, 1,
GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE,
- GridConstraints.SIZEPOLICY_CAN_SHRINK |
- GridConstraints.SIZEPOLICY_CAN_GROW,
- GridConstraints.SIZEPOLICY_CAN_SHRINK |
- GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
null, null, null));
}
content.add(panel3, new GridConstraints(2, 0, 1, 1,
diff --git a/src/main/java/com/chrisrm/idea/config/ui/MTForm.jfd b/src/main/java/com/chrisrm/idea/config/ui/MTForm.jfd
index 32265ae27..c13e169c0 100644
--- a/src/main/java/com/chrisrm/idea/config/ui/MTForm.jfd
+++ b/src/main/java/com/chrisrm/idea/config/ui/MTForm.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "6.0.1.0.112" Java: "1.8.0_112-release" encoding: "UTF-8"
+JFDML JFormDesigner: "6.0.2.0.116" Java: "1.8.0_152-release" encoding: "UTF-8"
new FormModel {
"i18n.bundlePackage": "messages"
@@ -73,14 +73,12 @@ new FormModel {
"vSizePolicy": 0
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
- name: "boldTabs"
- "label": new FormMessage( null, "mt.boldtabs" )
- "text": new FormMessage( null, "mt.boldtabs" )
- "toolTipText": new FormMessage( null, "mt.boldtabs.tooltip" )
+ name: "isUpperCaseTabsCheckbox"
+ "text": new FormMessage( null, "MTForm.isUpperCaseTabsCheckbox.text" )
+ "toolTipText": new FormMessage( null, "MTForm.isUpperCaseTabsCheckbox.toolTipText" )
}, new FormLayoutConstraints( class com.intellij.uiDesigner.core.GridConstraints ) {
"row": 3
"anchor": 8
- "vSizePolicy": 0
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "tabHeight"
@@ -123,7 +121,7 @@ new FormModel {
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class com.intellij.uiDesigner.core.GridLayoutManager ) {
"$columnCount": 2
- "$rowCount": 5
+ "$rowCount": 7
} ) {
name: "panel2"
"border": new javax.swing.border.TitledBorder( #EtchedBorder0, "i18nKey=mt.panels.section" )
@@ -155,17 +153,27 @@ new FormModel {
"text": new FormMessage( null, "MTForm.hideFileIcons" )
"toolTipText": new FormMessage( null, "MTForm.hideFileIcons.tooltip" )
}, new FormLayoutConstraints( class com.intellij.uiDesigner.core.GridConstraints ) {
- "row": 1
"anchor": 8
+ "row": 1
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "isCompactSidebarCheckbox"
"text": new FormMessage( null, "MTForm.isCompactSidebarCheckbox.text" )
"toolTipText": new FormMessage( null, "MTForm.isCompactSidebarCheckbox.toolTipText" )
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "isCompactSidebarCheckboxActionPerformed", true ) )
}, new FormLayoutConstraints( class com.intellij.uiDesigner.core.GridConstraints ) {
"row": 2
"anchor": 8
} )
+ add( new FormComponent( "javax.swing.JSpinner" ) {
+ name: "customSidebarSpinner"
+ "toolTipText": new FormMessage( null, "MTForm.customSidebarSpinner.toolTipText" )
+ }, new FormLayoutConstraints( class com.intellij.uiDesigner.core.GridConstraints ) {
+ "row": 2
+ "anchor": 4
+ "preferredSize": #Dimension1
+ "column": 1
+ } )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "customTreeIndentCheckbox"
"text": new FormMessage( null, "MTForm.customTreeIndentCheckbox.text" )
@@ -192,6 +200,32 @@ new FormModel {
"row": 4
"anchor": 8
} )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "boldTabs"
+ "label": new FormMessage( null, "mt.boldtabs" )
+ "text": new FormMessage( null, "mt.boldtabs" )
+ "toolTipText": new FormMessage( null, "mt.boldtabs.tooltip" )
+ }, new FormLayoutConstraints( class com.intellij.uiDesigner.core.GridConstraints ) {
+ "row": 5
+ "anchor": 8
+ "vSizePolicy": 0
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "customAccentColorLabel"
+ "text": new FormMessage( null, "MTForm.customAccentColorLabel.text" )
+ "toolTipText": new FormMessage( null, "MTForm.customAccentColorLabel.toolTipText" )
+ }, new FormLayoutConstraints( class com.intellij.uiDesigner.core.GridConstraints ) {
+ "row": 6
+ "anchor": 8
+ "indent": 2
+ } )
+ add( new FormComponent( "com.intellij.ui.ColorPanel" ) {
+ name: "customAccentColorChooser"
+ }, new FormLayoutConstraints( class com.intellij.uiDesigner.core.GridConstraints ) {
+ "anchor": 4
+ "row": 6
+ "column": 1
+ } )
}, new FormLayoutConstraints( class com.intellij.uiDesigner.core.GridConstraints ) {
"row": 1
"fill": 3
diff --git a/src/main/java/com/chrisrm/idea/themes/MTFrameComponentExtension.java b/src/main/java/com/chrisrm/idea/panes/MTFrameComponentExtension.java
similarity index 99%
rename from src/main/java/com/chrisrm/idea/themes/MTFrameComponentExtension.java
rename to src/main/java/com/chrisrm/idea/panes/MTFrameComponentExtension.java
index 5d02a3124..cb8f64dc4 100644
--- a/src/main/java/com/chrisrm/idea/themes/MTFrameComponentExtension.java
+++ b/src/main/java/com/chrisrm/idea/panes/MTFrameComponentExtension.java
@@ -24,7 +24,7 @@
*
*/
-package com.chrisrm.idea.themes;
+package com.chrisrm.idea.panes;
import com.intellij.ide.ui.UISettings;
import com.intellij.openapi.project.Project;
diff --git a/src/main/java/com/chrisrm/idea/themes/MTIdePanePanel.java b/src/main/java/com/chrisrm/idea/panes/MTIdePanePanel.java
similarity index 97%
rename from src/main/java/com/chrisrm/idea/themes/MTIdePanePanel.java
rename to src/main/java/com/chrisrm/idea/panes/MTIdePanePanel.java
index 907fc3265..6b832b5e1 100644
--- a/src/main/java/com/chrisrm/idea/themes/MTIdePanePanel.java
+++ b/src/main/java/com/chrisrm/idea/panes/MTIdePanePanel.java
@@ -24,7 +24,7 @@
*
*/
-package com.chrisrm.idea.themes;
+package com.chrisrm.idea.panes;
import com.intellij.openapi.wm.impl.IdePanePanel;
diff --git a/src/main/java/com/chrisrm/idea/schemes/MTThemesComponent.java b/src/main/java/com/chrisrm/idea/schemes/MTThemesComponent.java
index a890430c3..f3d164a6a 100644
--- a/src/main/java/com/chrisrm/idea/schemes/MTThemesComponent.java
+++ b/src/main/java/com/chrisrm/idea/schemes/MTThemesComponent.java
@@ -26,8 +26,8 @@
package com.chrisrm.idea.schemes;
+import com.chrisrm.idea.MTThemeManager;
import com.chrisrm.idea.config.ConfigNotifier;
-import com.chrisrm.idea.themes.MTThemeManager;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.ApplicationComponent;
import org.jetbrains.annotations.NotNull;
diff --git a/src/main/java/com/chrisrm/idea/tabs/MTEditorTabColor.java b/src/main/java/com/chrisrm/idea/tabs/MTEditorTabColor.java
index d2232d4d4..9a63d38b2 100644
--- a/src/main/java/com/chrisrm/idea/tabs/MTEditorTabColor.java
+++ b/src/main/java/com/chrisrm/idea/tabs/MTEditorTabColor.java
@@ -31,33 +31,16 @@
import com.intellij.openapi.fileEditor.impl.EditorTabColorProvider;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.ui.JBColor;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
import java.awt.*;
public final class MTEditorTabColor implements EditorTabColorProvider {
- private static final Color COLOR_DARKER = new JBColor(new Color(33, 33, 33, 255), new Color(33, 33, 33, 255));
- private static final Color COLOR_DEFAULT = new JBColor(new Color(38, 50, 56, 255), new Color(38, 50, 56, 255));
- private static final Color COLOR_PALENIGHT = new JBColor(new Color(41, 45, 62, 255), new Color(41, 45, 62, 255));
- private static final Color COLOR_LIGHTER = new JBColor(new Color(250, 250, 250, 255), new Color(250, 250, 250, 255));
-
- @Nullable
@Override
public Color getEditorTabColor(@NotNull final Project project, @NotNull final VirtualFile virtualFile) {
final MTTheme mtTheme = MTConfig.getInstance().getSelectedTheme();
- switch (mtTheme) {
- case DARKER:
- return COLOR_DARKER;
- case PALENIGHT:
- return COLOR_PALENIGHT;
- case LIGHTER:
- return COLOR_LIGHTER;
- default:
- return COLOR_DEFAULT;
- }
+ return mtTheme.getBackgroundColor();
}
}
diff --git a/src/main/java/com/chrisrm/idea/tabs/MTEditorUpperTabs.java b/src/main/java/com/chrisrm/idea/tabs/MTEditorUpperTabs.java
new file mode 100644
index 000000000..4161ef194
--- /dev/null
+++ b/src/main/java/com/chrisrm/idea/tabs/MTEditorUpperTabs.java
@@ -0,0 +1,45 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2017 Chris Magnussen and Elior Boukhobza
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ *
+ */
+
+package com.chrisrm.idea.tabs;
+
+import com.chrisrm.idea.MTConfig;
+import com.intellij.openapi.fileEditor.impl.EditorTabTitleProvider;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.psi.codeStyle.NameUtil;
+import org.jetbrains.annotations.Nullable;
+
+public final class MTEditorUpperTabs implements EditorTabTitleProvider {
+ @Nullable
+ @Override
+ public String getEditorTabTitle(final Project project, final VirtualFile file) {
+ if (MTConfig.getInstance().isUpperCaseTabs()) {
+ return NameUtil.splitWords(file.getPresentableName(), ' ', String::toUpperCase);
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/chrisrm/idea/tabs/MTTabsEditorAdapter.java b/src/main/java/com/chrisrm/idea/tabs/MTTabsEditorAdapter.java
index dc91a38d2..54b73c7d1 100644
--- a/src/main/java/com/chrisrm/idea/tabs/MTTabsEditorAdapter.java
+++ b/src/main/java/com/chrisrm/idea/tabs/MTTabsEditorAdapter.java
@@ -67,6 +67,13 @@ public void selectionChanged(@NotNull final FileEditorManagerEvent event) {
}
}
+ /**
+ * Execute actions on the active tab
+ *
+ * @param fileStatusManager the project's file status manager
+ * @param file the current edited file
+ * @param editorWindow the current window
+ */
private void processActiveTab(@NotNull final FileStatusManager fileStatusManager,
@NotNull final VirtualFile file,
@NotNull final EditorWindow editorWindow) {
@@ -85,6 +92,13 @@ private void processActiveTab(@NotNull final FileStatusManager fileStatusManager
}
}
+ /**
+ * Set tab font bold
+ * Does not work on edited files because Jetbrains remove the BOLD attributes
+ *
+ * @param file the edited file
+ * @param editorWindow the current window
+ */
private void setBoldTabs(@NotNull final VirtualFile file,
@NotNull final EditorWindow editorWindow) {
final EditorWithProviderComposite fileComposite = editorWindow.findFileComposite(file);
@@ -98,28 +112,45 @@ private void setBoldTabs(@NotNull final VirtualFile file,
if (tabbedPane != null) {
try {
tabbedPane.getTabs()
- .getTabAt(editorIndex)
- .setDefaultStyle(isBoldTabs ? SimpleTextAttributes.STYLE_BOLD : SimpleTextAttributes.STYLE_PLAIN);
- }
- catch (IndexOutOfBoundsException ignored) {
+ .getTabAt(editorIndex)
+ .setDefaultStyle(isBoldTabs ? SimpleTextAttributes.STYLE_BOLD : SimpleTextAttributes.STYLE_PLAIN);
+ } catch (final IndexOutOfBoundsException ignored) {
}
}
}
}
+ /**
+ * Process unselected tab
+ *
+ * @param fileStatusManager the file status manager
+ * @param fileColorManager the file color manager
+ * @param file the current file
+ * @param editorWindow the editor window
+ */
private void processOldTab(@NotNull final FileStatusManager fileStatusManager,
@NotNull final FileColorManager fileColorManager,
@NotNull final VirtualFile file,
@NotNull final EditorWindow editorWindow) {
- FileStatus status = fileStatusManager.getStatus(file);
+ final FileStatus status = fileStatusManager.getStatus(file);
setTabColor(fileColorManager.getFileColor(file), file, editorWindow, status);
}
- private void setTabColor(final Color fileColor,
+ /**
+ * Set current tab's background and foreground color
+ *
+ * TODO file status color
+ *
+ * @param bgColor the background color
+ * @param file the file
+ * @param editorWindow the editor window
+ * @param status the file status
+ */
+ private void setTabColor(final Color bgColor,
@NotNull final VirtualFile file,
@NotNull final EditorWindow editorWindow,
- FileStatus status) {
+ final FileStatus status) {
final EditorWithProviderComposite fileComposite = editorWindow.findFileComposite(file);
// Find the tab of the selected file
@@ -130,8 +161,8 @@ private void setTabColor(final Color fileColor,
if (tabbedPane != null) {
tabbedPane.getTabs()
- .getPresentation()
- .setActiveTabFillIn(fileColor);
+ .getPresentation()
+ .setActiveTabFillIn(bgColor);
// try {
// if (statusColor != null) {
@@ -147,6 +178,13 @@ private void setTabColor(final Color fileColor,
}
}
+ /**
+ * Get index of given fileComposite
+ *
+ * @param editorWindow the editor window
+ * @param fileComposite the edited file
+ * @return
+ */
private int getEditorIndex(@NotNull final EditorWindow editorWindow, final EditorWithProviderComposite fileComposite) {
int index = 0;
for (final EditorWithProviderComposite editorWithProviderComposite : editorWindow.getEditors()) {
diff --git a/src/main/java/com/chrisrm/idea/tabs/MTTabsPainterPatcherComponent.java b/src/main/java/com/chrisrm/idea/tabs/MTTabsPainterPatcherComponent.java
index dc7a91586..c699585c0 100644
--- a/src/main/java/com/chrisrm/idea/tabs/MTTabsPainterPatcherComponent.java
+++ b/src/main/java/com/chrisrm/idea/tabs/MTTabsPainterPatcherComponent.java
@@ -28,8 +28,8 @@
import com.chrisrm.idea.MTConfig;
import com.chrisrm.idea.MTTheme;
+import com.chrisrm.idea.MTThemeManager;
import com.chrisrm.idea.config.ConfigNotifier;
-import com.chrisrm.idea.themes.MTThemeManager;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.openapi.application.ex.ApplicationManagerEx;
import com.intellij.openapi.components.ApplicationComponent;
@@ -55,6 +55,8 @@
import net.sf.cglib.proxy.MethodInterceptor;
import org.jetbrains.annotations.NotNull;
+import javax.swing.border.*;
+import javax.swing.plaf.*;
import java.awt.*;
import java.lang.reflect.Field;
@@ -66,6 +68,8 @@
public final class MTTabsPainterPatcherComponent implements ApplicationComponent {
public static final String TABS_HEIGHT = "MTTabsHeight";
+ public static final String BOLD_TABS = "MTBoldTabs";
+
private final MTTheme theme;
private final MTConfig config;
@@ -74,6 +78,8 @@ public MTTabsPainterPatcherComponent() {
theme = config.getSelectedTheme();
PropertiesComponent.getInstance().setValue(TABS_HEIGHT, 25, 24);
+ PropertiesComponent.getInstance().setValue(BOLD_TABS, false, false);
+
}
/**
@@ -94,6 +100,29 @@ public void edit(final MethodCall m) throws CannotCompileException {
}
});
ctClass.toClass();
+
+ final CtClass ctClass1 = cp.get("com.intellij.ui.tabs.impl.JBEditorTabs");
+ final CtMethod useBoldLabels = ctClass1.getDeclaredMethod("useBoldLabels");
+ useBoldLabels.instrument(new ExprEditor() {
+ @Override
+ public void edit(final FieldAccess f) throws CannotCompileException {
+ if (f.getFieldName().equals("isMac")) {
+ f.replace("{ $_ = true; }");
+ }
+ }
+
+ @Override
+ public void edit(final MethodCall m) throws CannotCompileException {
+ if (m.getMethodName().equals("is")) {
+ final String code = String.format("com.intellij.ide.util.PropertiesComponent.getInstance().getBoolean(\"%s\", false)",
+ BOLD_TABS);
+ m.replace("{ $_ = " + code + "; }");
+ }
+ }
+ });
+
+ ctClass1.toClass();
+
} catch (final Exception e) {
e.printStackTrace();
}
@@ -115,7 +144,8 @@ private void hackTabsGetHeight() throws
public void edit(final MethodCall m) throws CannotCompileException {
if (m.getClassName().equals("com.intellij.ui.tabs.TabsUtil") && m.getMethodName().equals("getTabsHeight")) {
final String code = String.format("com.intellij.ide.util.PropertiesComponent.getInstance().getInt(\"%s\", 25)", TABS_HEIGHT);
- m.replace("{ $_ = com.intellij.util.ui.JBUI.scale(myCentered ? " + code + " : 25); }");
+ final String isDebugTab = "myInfo.getTabActionPlace() != null ? myInfo.getTabActionPlace().contains(\"debugger\") : true";
+ m.replace(String.format("{ $_ = com.intellij.util.ui.JBUI.scale(%s); }", code));
}
}
});
diff --git a/src/main/java/com/chrisrm/idea/themes/LafTheme.java b/src/main/java/com/chrisrm/idea/themes/LafTheme.java
new file mode 100644
index 000000000..a73e2284e
--- /dev/null
+++ b/src/main/java/com/chrisrm/idea/themes/LafTheme.java
@@ -0,0 +1,5 @@
+package com.chrisrm.idea.themes;
+
+public interface LafTheme {
+ String getDisabled();
+}
diff --git a/src/main/java/com/chrisrm/idea/actions/MTDarkerTheme.java b/src/main/java/com/chrisrm/idea/themes/MTDarkerTheme.java
similarity index 81%
rename from src/main/java/com/chrisrm/idea/actions/MTDarkerTheme.java
rename to src/main/java/com/chrisrm/idea/themes/MTDarkerTheme.java
index c0770873d..68a97268e 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTDarkerTheme.java
+++ b/src/main/java/com/chrisrm/idea/themes/MTDarkerTheme.java
@@ -24,14 +24,9 @@
*
*/
-package com.chrisrm.idea.actions;
+package com.chrisrm.idea.themes;
-import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.MTTheme;
-import com.chrisrm.idea.themes.MTThemeManager;
-import com.intellij.openapi.actionSystem.AnActionEvent;
-
-public final class MTDarkerTheme extends MTAbstractTheme {
+public final class MTDarkerTheme implements LafTheme {
public static final String BACKGROUND = "212121"; // 33, 33, 33
public static final String FOREGROUND = "B0BEC5"; // 176, 190, 197
public static final String CARET = "FFCC00"; // 255, 204, 0
@@ -54,12 +49,7 @@ public final class MTDarkerTheme extends MTAbstractTheme {
public static final String ACCENT_COLOR = "80CBC4"; // 128, 203, 196
@Override
- public boolean isSelected(final AnActionEvent e) {
- return MTConfig.getInstance().getSelectedTheme() == MTTheme.DARKER;
- }
-
- @Override
- public void setSelected(final AnActionEvent e, final boolean state) {
- MTThemeManager.getInstance().activate(MTTheme.DARKER);
+ public String getDisabled() {
+ return DISABLED;
}
}
diff --git a/src/main/java/com/chrisrm/idea/actions/MTDefaultTheme.java b/src/main/java/com/chrisrm/idea/themes/MTDefaultTheme.java
similarity index 81%
rename from src/main/java/com/chrisrm/idea/actions/MTDefaultTheme.java
rename to src/main/java/com/chrisrm/idea/themes/MTDefaultTheme.java
index eb3f0e8d3..4cd7a6dbe 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTDefaultTheme.java
+++ b/src/main/java/com/chrisrm/idea/themes/MTDefaultTheme.java
@@ -24,14 +24,9 @@
*
*/
-package com.chrisrm.idea.actions;
+package com.chrisrm.idea.themes;
-import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.MTTheme;
-import com.chrisrm.idea.themes.MTThemeManager;
-import com.intellij.openapi.actionSystem.AnActionEvent;
-
-public final class MTDefaultTheme extends MTAbstractTheme {
+public final class MTDefaultTheme implements LafTheme {
public static final String BACKGROUND = "263238"; // 38, 50, 56
public static final String FOREGROUND = "B0BEC5"; // 176, 190, 197
public static final String CARET = "FFCC00"; // 255, 204, 0
@@ -51,12 +46,7 @@ public final class MTDefaultTheme extends MTAbstractTheme {
public static final String ACCENT_COLOR = "80CBC4"; // 128, 203, 196
@Override
- public boolean isSelected(final AnActionEvent e) {
- return MTConfig.getInstance().getSelectedTheme() == MTTheme.DEFAULT;
- }
-
- @Override
- public void setSelected(final AnActionEvent e, final boolean state) {
- MTThemeManager.getInstance().activate(MTTheme.DEFAULT);
+ public String getDisabled() {
+ return DISABLED;
}
}
diff --git a/src/main/java/com/chrisrm/idea/actions/MTLighterTheme.java b/src/main/java/com/chrisrm/idea/themes/MTLighterTheme.java
similarity index 81%
rename from src/main/java/com/chrisrm/idea/actions/MTLighterTheme.java
rename to src/main/java/com/chrisrm/idea/themes/MTLighterTheme.java
index d2dd35210..06b747d26 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTLighterTheme.java
+++ b/src/main/java/com/chrisrm/idea/themes/MTLighterTheme.java
@@ -24,14 +24,9 @@
*
*/
-package com.chrisrm.idea.actions;
+package com.chrisrm.idea.themes;
-import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.MTTheme;
-import com.chrisrm.idea.themes.MTThemeManager;
-import com.intellij.openapi.actionSystem.AnActionEvent;
-
-public final class MTLighterTheme extends MTAbstractTheme {
+public final class MTLighterTheme implements LafTheme {
public static final String BACKGROUND = "FAFAFA"; // 250, 250, 250
public static final String FOREGROUND = "A7ADB0"; // 167, 173, 176
public static final String CARET = "FFCC00"; // 255, 204, 0
@@ -54,12 +49,7 @@ public final class MTLighterTheme extends MTAbstractTheme {
public static final String ACCENT_COLOR = "80CBC4"; // 128, 203, 196
@Override
- public boolean isSelected(final AnActionEvent e) {
- return MTConfig.getInstance().getSelectedTheme() == MTTheme.LIGHTER;
- }
-
- @Override
- public void setSelected(final AnActionEvent e, final boolean state) {
- MTThemeManager.getInstance().activate(MTTheme.LIGHTER);
+ public String getDisabled() {
+ return DISABLED;
}
}
diff --git a/src/main/java/com/chrisrm/idea/actions/MTPalenightTheme.java b/src/main/java/com/chrisrm/idea/themes/MTPalenightTheme.java
similarity index 81%
rename from src/main/java/com/chrisrm/idea/actions/MTPalenightTheme.java
rename to src/main/java/com/chrisrm/idea/themes/MTPalenightTheme.java
index bb46a63e6..4a8c057e9 100644
--- a/src/main/java/com/chrisrm/idea/actions/MTPalenightTheme.java
+++ b/src/main/java/com/chrisrm/idea/themes/MTPalenightTheme.java
@@ -24,14 +24,9 @@
*
*/
-package com.chrisrm.idea.actions;
+package com.chrisrm.idea.themes;
-import com.chrisrm.idea.MTConfig;
-import com.chrisrm.idea.MTTheme;
-import com.chrisrm.idea.themes.MTThemeManager;
-import com.intellij.openapi.actionSystem.AnActionEvent;
-
-public final class MTPalenightTheme extends MTAbstractTheme {
+public final class MTPalenightTheme implements LafTheme {
public static final String BACKGROUND = "292D3E"; // 41, 45, 62
public static final String FOREGROUND = "B0BEC5"; // 176, 190, 197
public static final String CARET = "FFCC00"; // 255, 204, 0
@@ -54,12 +49,7 @@ public final class MTPalenightTheme extends MTAbstractTheme {
public static final String ACCENT_COLOR = "80CBC4"; // 128, 203, 196
@Override
- public boolean isSelected(final AnActionEvent e) {
- return MTConfig.getInstance().getSelectedTheme() == MTTheme.PALENIGHT;
- }
-
- @Override
- public void setSelected(final AnActionEvent e, final boolean state) {
- MTThemeManager.getInstance().activate(MTTheme.PALENIGHT);
+ public String getDisabled() {
+ return DISABLED;
}
}
diff --git a/src/main/java/com/chrisrm/idea/tree/MTProjectViewNodeDecorator.java b/src/main/java/com/chrisrm/idea/tree/MTProjectViewNodeDecorator.java
index 961ef9e05..7ef777e7f 100644
--- a/src/main/java/com/chrisrm/idea/tree/MTProjectViewNodeDecorator.java
+++ b/src/main/java/com/chrisrm/idea/tree/MTProjectViewNodeDecorator.java
@@ -64,16 +64,18 @@ public void decorate(final PackageDependenciesNode node, final ColoredTreeCellRe
@Override
public void decorate(final ProjectViewNode node, final PresentationData data) {
final VirtualFile file = node.getVirtualFile();
- if (file == null) {
- return;
- }
final Project project = node.getProject();
// Color file status
- colorFileStatus(data, file, project);
+ if (file != null) {
+ colorFileStatus(data, file, project);
- if (MTConfig.getInstance().isUseProjectViewDecorators()) {
- setOpenOrClosedIcon(data, file, project);
+ if (MTConfig.getInstance().isUseProjectViewDecorators()) {
+ setOpenOrClosedIcon(data, file, project);
+ }
+ }
+ else {
+ colorFileStatus(data, node, project);
}
}
@@ -130,6 +132,14 @@ private void colorFileStatus(final PresentationData data, final VirtualFile file
}
}
+ private void colorFileStatus(final PresentationData data, final ProjectViewNode file, final Project project) {
+ final FileStatus status = file.getFileStatus();
+ final Color colorFromStatus = getColorFromStatus(status);
+ if (colorFromStatus != null) {
+ data.setForcedTextForeground(colorFromStatus);
+ }
+ }
+
private Color getColorFromStatus(final FileStatus status) {
return MTFileColors.get(status);
}
diff --git a/src/main/java/com/chrisrm/idea/ui/MTButtonUI.java b/src/main/java/com/chrisrm/idea/ui/MTButtonUI.java
index aae2239a3..091967dfc 100644
--- a/src/main/java/com/chrisrm/idea/ui/MTButtonUI.java
+++ b/src/main/java/com/chrisrm/idea/ui/MTButtonUI.java
@@ -27,6 +27,7 @@
package com.chrisrm.idea.ui;
import com.chrisrm.idea.utils.ColorCycle;
+import com.chrisrm.idea.utils.MTUiUtils;
import com.intellij.icons.AllIcons;
import com.intellij.ide.ui.laf.darcula.DarculaLaf;
import com.intellij.ide.ui.laf.darcula.ui.DarculaButtonUI;
@@ -36,17 +37,15 @@
import com.intellij.util.ui.GraphicsUtil;
import com.intellij.util.ui.JBUI;
import com.intellij.util.ui.UIUtil;
+import org.jetbrains.annotations.NotNull;
import sun.swing.SwingUtilities2;
import javax.swing.*;
-import javax.swing.border.Border;
-import javax.swing.plaf.ColorUIResource;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.UIResource;
-import javax.swing.plaf.basic.BasicArrowButton;
-import javax.swing.plaf.basic.BasicButtonListener;
+import javax.swing.border.*;
+import javax.swing.plaf.*;
+import javax.swing.plaf.basic.*;
import java.awt.*;
-import java.awt.event.MouseEvent;
+import java.awt.event.*;
public class MTButtonUI extends DarculaButtonUI {
@SuppressWarnings("MethodOverridesStaticMethodOfSuperclass")
@@ -73,7 +72,7 @@ public final void update(final Graphics g, final JComponent c) {
@Override
protected void installDefaults(final AbstractButton b) {
super.installDefaults(b);
- final Color background = ObjectUtils.notNull(UIManager.getColor("Button.mt.background"), new ColorUIResource(0x3C3F41));
+ final Color background = buttonBackground();
b.setBackground(background);
b.setFont(b.getFont().deriveFont(Font.BOLD, JBUI.scale(13.0f)));
}
@@ -132,10 +131,10 @@ private void highlightButton(final MouseEvent e) {
final Component component = e.getComponent();
colorCycle.setC((JComponent) component);
- final Color hoverColor = ObjectUtils.notNull(UIManager.getColor("Button.mt.selection.color1"), new ColorUIResource(0x384f6b));
- final Color preHoverColor = ObjectUtils.notNull(UIManager.getColor("Button.mt.selection.color2"), new ColorUIResource(0x233143));
- final Color textColor = ObjectUtils.notNull(UIManager.getColor("Button.mt.selectedButtonForeground"),
- new ColorUIResource(0xbbbbbb));
+
+ final Color hoverColor = buttonSelectColor1();
+ final Color preHoverColor = buttonSelectColor2();
+ final Color textColor = buttonSelectFg();
component.setForeground(textColor);
colorCycle.start(preHoverColor, hoverColor);
@@ -146,9 +145,10 @@ private void removeHighlight(final MouseEvent e) {
final Component component = e.getComponent();
colorCycle.setC((JComponent) component);
- final Color notHoverColor = ObjectUtils.notNull(UIManager.getColor("Button.mt.color1"), new ColorUIResource(0x555a5c));
- final Color preNotHoverColor = ObjectUtils.notNull(UIManager.getColor("Button.mt.color2"), new ColorUIResource(0x414648));
- final Color textColor = ObjectUtils.notNull(UIManager.getColor("Button.mt.foreground"), new ColorUIResource(0xbbbbbb));
+
+ final Color notHoverColor = buttonColor1();
+ final Color preNotHoverColor = buttonColor2();
+ final Color textColor = buttonFg();
component.setForeground(textColor);
colorCycle.start(preNotHoverColor, notHoverColor);
@@ -156,6 +156,57 @@ private void removeHighlight(final MouseEvent e) {
};
}
+ @NotNull
+ private Color buttonBackground() {
+ return MTUiUtils.getColor(UIManager.getColor("Button.mt.background"),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.color1"), new ColorUIResource(0x555a5c)),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.color1"), new ColorUIResource(0xeeeeee)));
+ }
+
+ @NotNull
+ private Color buttonColor1() {
+ return MTUiUtils.getColor(UIManager.getColor("Button.mt.color1"),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.color1"), new ColorUIResource(0x555a5c)),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.color1"), new ColorUIResource(0xeeeeee)));
+ }
+
+ @NotNull
+ private Color buttonColor2() {
+ return MTUiUtils.getColor(UIManager.getColor("Button.mt.color2"),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.color2"), new ColorUIResource(0x414648)),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.color2"), new ColorUIResource(0xc0c0c0)));
+ }
+
+ @NotNull
+ private Color buttonFg() {
+ return MTUiUtils.getColor(UIManager.getColor("Button.mt.foreground"),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.foreground"), new ColorUIResource(0xbbbbbb)),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.foreground"), new ColorUIResource(0x000000)));
+ }
+
+ @NotNull
+ private Color buttonSelectFg() {
+ return MTUiUtils.getColor(UIManager.getColor("Button.mt.selectedForeground"),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.selectedButtonForeground"),
+ new ColorUIResource(0xbbbbbb)),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.selectedButtonForeground"),
+ new ColorUIResource(0xf0f0f0)));
+ }
+
+ @NotNull
+ private Color buttonSelectColor1() {
+ return MTUiUtils.getColor(UIManager.getColor("Button.mt.selection.color1"),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.selection.color1"), new ColorUIResource(0x384f6b)),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.selection.color1"), new ColorUIResource(0x4985e4)));
+ }
+
+ @NotNull
+ private Color buttonSelectColor2() {
+ return MTUiUtils.getColor(UIManager.getColor("Button.mt.selection.color2"),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.selection.color2"), new ColorUIResource(0x233143)),
+ ObjectUtils.notNull(UIManager.getColor("Button.darcula.selection.color2"), new ColorUIResource(0x4074c9)));
+ }
+
/**
* Paints additional buttons decorations
*
@@ -168,12 +219,11 @@ protected boolean paintDecorations(final Graphics2D g, final JComponent c) {
final int w = c.getWidth();
final int h = c.getHeight();
final Color background = c.getBackground();
- final Color buttonColor1 = ObjectUtils.notNull(UIManager.getColor("Button.darcula.color1"), new ColorUIResource(0x555a5c));
- final Color buttonColor2 = ObjectUtils.notNull(UIManager.getColor("Button.darcula.color2"), new ColorUIResource(0x414648));
- final Color primaryButtonColor = ObjectUtils.notNull(UIManager.getColor("Button.darcula.selection.color1"),
- new ColorUIResource(0x384f6b));
- final Color focusedButtonColor = ObjectUtils.notNull(UIManager.getColor("Button.darcula.selection.color2"),
- new ColorUIResource(0x233143));
+
+ final Color buttonColor1 = buttonColor1();
+ final Color buttonColor2 = buttonColor2();
+ final Color primaryButtonColor = buttonSelectColor1();
+ final Color focusedButtonColor = buttonSelectColor2();
if (isHelpButton(c)) {
g.setPaint(UIUtil.getGradientPaint(0, 0, buttonColor1, 0, h, buttonColor2));
diff --git a/src/main/java/com/chrisrm/idea/ui/MTCheckBoxUI.java b/src/main/java/com/chrisrm/idea/ui/MTCheckBoxUI.java
index 5879d650e..41731014a 100644
--- a/src/main/java/com/chrisrm/idea/ui/MTCheckBoxUI.java
+++ b/src/main/java/com/chrisrm/idea/ui/MTCheckBoxUI.java
@@ -35,9 +35,9 @@
import sun.swing.SwingUtilities2;
import javax.swing.*;
-import javax.swing.plaf.*;
-import javax.swing.plaf.basic.*;
-import javax.swing.text.*;
+import javax.swing.plaf.ComponentUI;
+import javax.swing.plaf.basic.BasicHTML;
+import javax.swing.text.View;
import java.awt.*;
/**
@@ -192,7 +192,7 @@ protected void drawText(final JComponent c,
protected void paintCheckSign(final Graphics2D g, final boolean enabled, final int w, final int h) {
g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
g.setStroke(new BasicStroke(1 * JBUI.scale(2.0f), BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
- g.setPaint(getShadowColor(enabled, true));
+ g.setPaint(getCheckSignColor(enabled, true));
final int x1 = JBUI.scale(3);
final int y1 = JBUI.scale(7);
final int x2 = JBUI.scale(7);
diff --git a/src/main/java/com/chrisrm/idea/ui/MTComboBoxUI.java b/src/main/java/com/chrisrm/idea/ui/MTComboBoxUI.java
index f0acac992..32c121846 100644
--- a/src/main/java/com/chrisrm/idea/ui/MTComboBoxUI.java
+++ b/src/main/java/com/chrisrm/idea/ui/MTComboBoxUI.java
@@ -25,8 +25,11 @@
*/
package com.chrisrm.idea.ui;
+import com.chrisrm.idea.MTConfig;
+import com.chrisrm.idea.utils.MTUiUtils;
import com.intellij.ide.ui.laf.darcula.ui.DarculaComboBoxUI;
import com.intellij.openapi.ui.GraphicsConfig;
+import com.intellij.ui.ColorUtil;
import com.intellij.ui.JBColor;
import com.intellij.util.ObjectUtils;
import com.intellij.util.ui.JBInsets;
@@ -35,14 +38,11 @@
import sun.swing.DefaultLookup;
import javax.swing.*;
-import javax.swing.border.Border;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.DimensionUIResource;
-import javax.swing.plaf.InsetsUIResource;
-import javax.swing.plaf.basic.BasicArrowButton;
+import javax.swing.border.*;
+import javax.swing.plaf.*;
+import javax.swing.plaf.basic.*;
import java.awt.*;
-import java.awt.geom.Path2D;
-import java.awt.geom.Rectangle2D;
+import java.awt.geom.*;
/**
* @author Konstantin Bulenkov
@@ -191,7 +191,8 @@ public void paintBorder(final Component c, final Graphics g2, final int x, final
}
private Color getSelectedBorderColor() {
- return UIManager.getColor("TextField.selectedSeparatorColor");
+ final Color defaultValue = ColorUtil.fromHex(MTConfig.getInstance().getAccentColor());
+ return ObjectUtils.notNull(UIManager.getColor("TextField.selectedSeparatorColor"), defaultValue);
}
@Override
@@ -271,7 +272,10 @@ protected Color getArrowButtonFillColor(final Color defaultColor) {
// : UIManager.getColor("ComboBox.darcula.arrowFillColor");
// return color == null ? defaultColor : comboBox != null && !comboBox.isEnabled() ? new JBColor(getBorderColor(), UIUtil
// .getControlColor()) : color;
- return ObjectUtils.notNull(UIManager.getColor("ComboBox.arrowFillColor"), UIManager.getColor("control"));
+ return MTUiUtils.getColor(
+ UIManager.getColor("ComboBox.arrowFillColor"),
+ ObjectUtils.notNull(UIManager.getColor("ComboBox.darcula.arrowFillColor"), new ColorUIResource(0x457dd7)),
+ ObjectUtils.notNull(UIManager.getColor("ComboBox.darcula.arrowFillColor"), new ColorUIResource(0x457dd7)));
}
@Override
@@ -340,9 +344,16 @@ protected Dimension getSizeForComponent(final Component comp) {
}
private Color getBorderColor() {
+ final Color defaultValue = MTUiUtils.getColor(UIManager.getColor("Separator.foreground"),
+ new ColorUIResource(0x515151),
+ new ColorUIResource(0xcdcdcd));
+ final Color defaultDisabled = MTUiUtils.getColor(UIManager.getColor("ComboBox.disabledBackground"),
+ new ColorUIResource(0x3c3f41),
+ new ColorUIResource(0xe8e8e8));
+
if (comboBox != null && myComboBox.isEnabled()) {
- return UIManager.getColor("TextField.separatorColor");
+ return ObjectUtils.notNull(UIManager.getColor("TextField.separatorColor"), defaultValue);
}
- return UIManager.getColor("TextField.separatorColorDisabled");
+ return ObjectUtils.notNull(UIManager.getColor("TextField.separatorColorDisabled"), defaultDisabled);
}
}
diff --git a/src/main/java/com/chrisrm/idea/utils/MTUiUtils.java b/src/main/java/com/chrisrm/idea/utils/MTUiUtils.java
index 1836e2024..4c0b6b6da 100644
--- a/src/main/java/com/chrisrm/idea/utils/MTUiUtils.java
+++ b/src/main/java/com/chrisrm/idea/utils/MTUiUtils.java
@@ -26,10 +26,15 @@
package com.chrisrm.idea.utils;
+import com.chrisrm.idea.MTConfig;
+import com.intellij.ide.ui.LafManager;
import com.intellij.openapi.application.Application;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.impl.ApplicationImpl;
+import com.intellij.util.ObjectUtils;
import com.intellij.util.ui.JBUI;
+import com.intellij.util.ui.UIUtil;
+import org.jetbrains.annotations.NotNull;
import java.awt.*;
import java.awt.font.*;
@@ -49,15 +54,15 @@ private MTUiUtils() {
static {
MTUiUtils.setHints(new RenderingHints(RenderingHints.KEY_ALPHA_INTERPOLATION,
- RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED));
+ RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED));
MTUiUtils.getHints().put(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
+ RenderingHints.VALUE_ANTIALIAS_ON);
MTUiUtils.getHints().put(RenderingHints.KEY_RENDERING,
- RenderingHints.VALUE_RENDER_SPEED);
+ RenderingHints.VALUE_RENDER_SPEED);
MTUiUtils.getHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
- RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+ RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
MTUiUtils.getHints().put(RenderingHints.KEY_FRACTIONALMETRICS,
- RenderingHints.VALUE_FRACTIONALMETRICS_ON);
+ RenderingHints.VALUE_FRACTIONALMETRICS_ON);
}
public static Font findFont(final String name) {
@@ -69,6 +74,17 @@ public static Font findFont(final String name) {
return null;
}
+ public static Color getColor(final Color mtColor, @NotNull final Color darculaColor, @NotNull final Color intellijColor) {
+ Color defaultColor = UIUtil.isUnderDarcula() ? darculaColor : intellijColor;
+ if (MTConfig.getInstance().isMaterialTheme()) {
+ return ObjectUtils.notNull(mtColor, defaultColor);
+ }
+ return defaultColor;
+ }
+
+ public static boolean isDarcula() {
+ return LafManager.getInstance().getCurrentLookAndFeel().equals("Darcula");
+ }
public static Font getWidgetFont() {
final GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
@@ -82,7 +98,6 @@ public static Font getWidgetFont() {
attributes.put(TextAttribute.SIZE, JBUI.scale(11));
return f.deriveFont(attributes);
-
}
}
return JBUI.Fonts.label(12);
diff --git a/src/main/java/com/chrisrm/idea/utils/UIReplacer.java b/src/main/java/com/chrisrm/idea/utils/UIReplacer.java
index 0bc4bfbeb..f15607483 100644
--- a/src/main/java/com/chrisrm/idea/utils/UIReplacer.java
+++ b/src/main/java/com/chrisrm/idea/utils/UIReplacer.java
@@ -31,6 +31,7 @@
import com.intellij.codeInsight.hint.ParameterInfoComponent;
import com.intellij.codeInsight.lookup.impl.LookupCellRenderer;
import com.intellij.icons.AllIcons;
+import com.intellij.ide.ui.laf.darcula.DarculaUIUtil;
import com.intellij.lang.parameterInfo.ParameterInfoUIContextEx;
import com.intellij.notification.impl.NotificationsManagerImpl;
import com.intellij.openapi.options.newEditor.SettingsTreeView;
@@ -46,7 +47,7 @@
import com.intellij.vcs.log.ui.highlighters.MergeCommitsHighlighter;
import javax.swing.*;
-import javax.swing.plaf.*;
+import javax.swing.plaf.ColorUIResource;
import java.awt.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
@@ -77,58 +78,74 @@ public static void patchUI() {
static final class Patcher {
static void patchTables() throws Exception {
- StaticPatcher.setFinalStatic(UIUtil.class, "DECORATED_ROW_BG_COLOR", UIManager.get("Table.stripedBackground"));
+ if (MTConfig.getInstance().isMaterialTheme()) {
+ StaticPatcher.setFinalStatic(UIUtil.class, "DECORATED_ROW_BG_COLOR", UIManager.get("Table.stripedBackground"));
+ }
}
static void patchStatusBar() throws Exception {
- // Replace Gray with a clear and transparent color
- final Gray gray = Gray._85;
- final Color alphaGray = gray.withAlpha(1);
- StaticPatcher.setFinalStatic(Gray.class, "_85", alphaGray);
- StaticPatcher.setFinalStatic(Gray.class, "_40", alphaGray);
- StaticPatcher.setFinalStatic(Gray.class, "_145", alphaGray);
- StaticPatcher.setFinalStatic(Gray.class, "_255", alphaGray);
- StaticPatcher.setFinalStatic(Gray.class, "_201", alphaGray);
-
- // Quick info border
- StaticPatcher.setFinalStatic(Gray.class, "_90", gray.withAlpha(25));
-
- // tool window color
- final boolean dark = MTConfig.getInstance().getSelectedTheme().isDark();
- StaticPatcher.setFinalStatic(Gray.class, "_15", dark ? Gray._15.withAlpha(255) : Gray._200.withAlpha(15));
- // This thing doesnt work on compiled jars...
- final Class> clazz = Class.forName("com.intellij.openapi.wm.impl.status.StatusBarUI$BackgroundPainter");
-
- StaticPatcher.setFinalStatic(clazz, "BORDER_TOP_COLOR", UIManager.getColor("StatusBar.topColor").brighter().brighter());
- StaticPatcher.setFinalStatic(clazz, "BORDER2_TOP_COLOR", UIManager.getColor("StatusBar.topColor2"));
- StaticPatcher.setFinalStatic(clazz, "BORDER_BOTTOM_COLOR", UIManager.getColor("StatusBar.bottomColor"));
- StaticPatcher.setFinalStatic(SettingsTreeView.class, "FOREGROUND", UIManager.getColor("Tree.foreground"));
-
+ if (MTConfig.getInstance().isMaterialTheme()) {
+ // Replace Gray with a clear and transparent color
+ final Gray gray = Gray._85;
+ final Color alphaGray = gray.withAlpha(1);
+ StaticPatcher.setFinalStatic(Gray.class, "_85", alphaGray);
+ StaticPatcher.setFinalStatic(Gray.class, "_40", alphaGray);
+ StaticPatcher.setFinalStatic(Gray.class, "_145", alphaGray);
+ StaticPatcher.setFinalStatic(Gray.class, "_255", alphaGray);
+ StaticPatcher.setFinalStatic(Gray.class, "_201", alphaGray);
+
+ // Quick info border
+ StaticPatcher.setFinalStatic(Gray.class, "_90", gray.withAlpha(25));
+
+ // tool window color
+ final boolean dark = MTConfig.getInstance().getSelectedTheme().isDark();
+ StaticPatcher.setFinalStatic(Gray.class, "_15", dark ? Gray._15.withAlpha(255) : Gray._200.withAlpha(15));
+ // This thing doesnt work on compiled jars...
+ final Class> clazz = Class.forName("com.intellij.openapi.wm.impl.status.StatusBarUI$BackgroundPainter");
+
+ StaticPatcher.setFinalStatic(clazz, "BORDER_TOP_COLOR", UIManager.getColor("StatusBar.topColor").brighter().brighter());
+ StaticPatcher.setFinalStatic(clazz, "BORDER2_TOP_COLOR", UIManager.getColor("StatusBar.topColor2"));
+ StaticPatcher.setFinalStatic(clazz, "BORDER_BOTTOM_COLOR", UIManager.getColor("StatusBar.bottomColor"));
+ StaticPatcher.setFinalStatic(SettingsTreeView.class, "FOREGROUND", UIManager.getColor("Tree.foreground"));
+ }
}
static void patchPanels() throws Exception {
- final Object color = UIManager.getColor("Panel.background");
- StaticPatcher.setFinalStatic(UIUtil.class, "CONTRAST_BORDER_COLOR", color);
- StaticPatcher.setFinalStatic(UIUtil.class, "BORDER_COLOR", color);
- StaticPatcher.setFinalStatic(UIUtil.class, "AQUA_SEPARATOR_FOREGROUND_COLOR", color);
- }
-
- static void patchMemoryIndicator() throws Exception {
- final Object usedColor = UIManager.getColor("MemoryIndicator.usedColor");
- final Object unusedColor = UIManager.getColor("MemoryIndicator.unusedColor");
- if (usedColor == null || unusedColor == null) {
- return;
+ if (MTConfig.getInstance().isMaterialTheme()) {
+ final Color color = UIManager.getColor("Panel.background");
+ StaticPatcher.setFinalStatic(UIUtil.class, "CONTRAST_BORDER_COLOR", ColorUtil.withAlpha(color, .05));
+ StaticPatcher.setFinalStatic(UIUtil.class, "BORDER_COLOR", color);
+ StaticPatcher.setFinalStatic(UIUtil.class, "AQUA_SEPARATOR_FOREGROUND_COLOR", color);
}
- StaticPatcher.setFinalStatic(MemoryUsagePanel.class, "USED_COLOR", usedColor);
- StaticPatcher.setFinalStatic(MemoryUsagePanel.class, "UNUSED_COLOR", unusedColor);
-
- final Field[] fields = MemoryUsagePanel.class.getDeclaredFields();
+ final Field[] fields = DarculaUIUtil.class.getDeclaredFields();
final Object[] objects = Arrays.stream(fields)
- .filter(f -> f.getType().equals(Color.class))
+ .filter(f -> f.getType().equals(JBColor.class))
.toArray();
- StaticPatcher.setFinalStatic((Field) objects[0], usedColor);
- StaticPatcher.setFinalStatic((Field) objects[1], unusedColor);
+ final Color accentColor = ColorUtil.fromHex(MTConfig.getInstance().getAccentColor());
+ final JBColor accentJBColor = new JBColor(accentColor, accentColor);
+ StaticPatcher.setFinalStatic((Field) objects[0], accentJBColor);
+ StaticPatcher.setFinalStatic((Field) objects[1], accentJBColor);
+ }
+
+ static void patchMemoryIndicator() throws Exception {
+ if (MTConfig.getInstance().isMaterialTheme()) {
+ final Object usedColor = UIManager.getColor("MemoryIndicator.usedColor");
+ final Object unusedColor = UIManager.getColor("MemoryIndicator.unusedColor");
+ if (usedColor == null || unusedColor == null) {
+ return;
+ }
+
+ StaticPatcher.setFinalStatic(MemoryUsagePanel.class, "USED_COLOR", usedColor);
+ StaticPatcher.setFinalStatic(MemoryUsagePanel.class, "UNUSED_COLOR", unusedColor);
+
+ final Field[] fields = MemoryUsagePanel.class.getDeclaredFields();
+ final Object[] objects = Arrays.stream(fields)
+ .filter(f -> f.getType().equals(Color.class))
+ .toArray();
+ StaticPatcher.setFinalStatic((Field) objects[0], usedColor);
+ StaticPatcher.setFinalStatic((Field) objects[1], unusedColor);
+ }
}
static void patchQuickInfo() throws Exception {
@@ -149,7 +166,8 @@ static void patchAutocomplete() throws Exception {
final String accentColor = MTConfig.getInstance().getAccentColor();
final JBColor jbAccentColor = new JBColor(ColorUtil.fromHex(accentColor), ColorUtil.fromHex(accentColor));
- final Color backgroundSelectedColor = UIManager.getColor("Autocomplete.selectionbackground");
+ final Color defaultValue = UIUtil.getListSelectionBackground();
+ final Color backgroundSelectedColor = ObjectUtils.notNull(UIManager.getColor("Autocomplete.selectionbackground"), defaultValue);
final Field[] fields = LookupCellRenderer.class.getDeclaredFields();
final Object[] objects = Arrays.stream(fields)
@@ -169,6 +187,10 @@ static void patchAutocomplete() throws Exception {
}
static void patchNotifications() throws Exception {
+ if (!MTConfig.getInstance().isMaterialTheme()) {
+ return;
+ }
+
final Color notifBg = UIManager.getColor("Notifications.background");
final Color notifBorder = UIManager.getColor("Notifications.borderColor");
if (notifBg == null || notifBorder == null) {
@@ -185,6 +207,10 @@ static void patchNotifications() throws Exception {
}
private static void replaceToolBalloons() throws Exception {
+ if (!MTConfig.getInstance().isMaterialTheme()) {
+ return;
+ }
+
final Constructor declaredConstructor = MessageType.class.getDeclaredConstructor(Icon.class, Color.class, Color.class);
declaredConstructor.setAccessible(true);
final Color errorBackground = UIManager.getColor("Notifications.errorBackground");
@@ -213,6 +239,10 @@ private static void replaceToolBalloons() throws Exception {
}
private static void patchDialogs() throws Exception {
+ if (!MTConfig.getInstance().isMaterialTheme()) {
+ return;
+ }
+
Color color = UIManager.getColor("Dialog.titleColor");
if (color == null) {
color = Gray._55;
@@ -242,15 +272,17 @@ static void patchScrollbars() throws Exception {
}
public static void patchVCS() throws Exception {
- final Color color = ObjectUtils.notNull(UIManager.getColor("material.mergeCommits"), new ColorUIResource(0x00000000));
- final Color commitsColor = new JBColor(color, color);
+ if (MTConfig.getInstance().isMaterialTheme()) {
+ final Color color = ObjectUtils.notNull(UIManager.getColor("material.mergeCommits"), new ColorUIResource(0x00000000));
+ final Color commitsColor = new JBColor(color, color);
- final Field[] fields = CurrentBranchHighlighter.class.getDeclaredFields();
- final Object[] objects = Arrays.stream(fields)
- .filter(f -> f.getType().equals(JBColor.class))
- .toArray();
+ final Field[] fields = CurrentBranchHighlighter.class.getDeclaredFields();
+ final Object[] objects = Arrays.stream(fields)
+ .filter(f -> f.getType().equals(JBColor.class))
+ .toArray();
- StaticPatcher.setFinalStatic((Field) objects[0], commitsColor);
+ StaticPatcher.setFinalStatic((Field) objects[0], commitsColor);
+ }
final Field[] fields2 = MergeCommitsHighlighter.class.getDeclaredFields();
final Object[] objects2 = Arrays.stream(fields2)
diff --git a/src/main/java/com/chrisrm/idea/themes/MTWallpaperComponent.java b/src/main/java/com/chrisrm/idea/wallpaper/MTWallpaperComponent.java
similarity index 99%
rename from src/main/java/com/chrisrm/idea/themes/MTWallpaperComponent.java
rename to src/main/java/com/chrisrm/idea/wallpaper/MTWallpaperComponent.java
index e9c3b677c..687d37f42 100644
--- a/src/main/java/com/chrisrm/idea/themes/MTWallpaperComponent.java
+++ b/src/main/java/com/chrisrm/idea/wallpaper/MTWallpaperComponent.java
@@ -24,7 +24,7 @@
*
*/
-package com.chrisrm.idea.themes;
+package com.chrisrm.idea.wallpaper;
import com.chrisrm.idea.MTConfig;
import com.chrisrm.idea.config.ConfigNotifier;
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index d243e3a62..bd5e84f58 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -27,7 +27,7 @@
com.chrisrm.idea.MaterialThemeUI
Material Theme UI
- 0.8.2
+ 0.9.4
Hirvi AS
@@ -53,7 +53,7 @@
-
+
+
@@ -80,7 +81,7 @@
- com.chrisrm.idea.themes.MTLafComponent
+ com.chrisrm.idea.MTLafComponent
com.chrisrm.idea.schemes.MTThemesComponent
@@ -95,7 +96,7 @@
com.chrisrm.idea.icons.MTIconReplacerComponent
- com.chrisrm.idea.themes.MTWallpaperComponent
+ com.chrisrm.idea.wallpaper.MTWallpaperComponent
@@ -116,19 +117,19 @@
icon="/icons/actions/material-theme.png">
-
-
-
-
@@ -153,6 +154,9 @@
text="Toggle Compact Status Bar" description="Toggle Compact Status Bar"
icon="/icons/actions/compactStatusBar.png">
+
+0.9.4
+
+- Improvements of Lighter Theme. Now Lighter Theme extends IntelliJ Look And Feel instead of Darcula.
+- Fix issues with No Material Theme that triggered some NPEs
+- Changed Tree foreground color for Lighter Theme
+- Added more UI Icons
+
+ 0.9.3
+
+ - Fix Project Open bug
+ - Fix import icon size
+ - Hopefully fix issue with 100% CPU
+ - Change deprecated color
+ - Improvements of disabled material theme
+
+ 0.9.2
+
+ - Fix issue with File colors for PSI icons
+ - Fix issue with breakpoint icon size
+ - Fix issue with CPU taking 100%
+ - Another set of UI Icons
+
+
+ 0.9.1
+
+ - Set Uppercase bold tabs to Spaced Case Bold Tabs
+ - Unset Uppercase Bold Tabs to be as default
+ - Fix issue with IDE Tabs not working
+ - Fix issue with changing custom accent resetting settings to defaults
+ - Revert back xdebug listening icon to be like the default one
+
+ 0.9.0
+
+- Add custom accent color configuration
+- Add Uppercase bold tabs to look more like MDTabs
+- Add Compact Sidebar height configuration
+- Reduce minimal length of tabs to 18
+- Add a border to the editor when tabs placement is left or right
+
+
+
+ 0.8.1
+
+ - Set accent color to non-customizable search boxes
+ - Fix issues with Elements not being themed
+ - Fix action buttons not working
+ - Add background color to search result
+
+
0.8.0
- Allow customization of file status colors
diff --git a/src/main/resources/colors/Material Theme - Darker.xml b/src/main/resources/colors/Material Theme - Darker.xml
index 07828e393..18bcca70f 100644
--- a/src/main/resources/colors/Material Theme - Darker.xml
+++ b/src/main/resources/colors/Material Theme - Darker.xml
@@ -2805,7 +2805,7 @@
diff --git a/src/main/resources/colors/Material Theme - Default.xml b/src/main/resources/colors/Material Theme - Default.xml
index f6146fa96..17bd5427b 100644
--- a/src/main/resources/colors/Material Theme - Default.xml
+++ b/src/main/resources/colors/Material Theme - Default.xml
@@ -2938,7 +2938,7 @@
-
+
diff --git a/src/main/resources/colors/Material Theme - Lighter.xml b/src/main/resources/colors/Material Theme - Lighter.xml
index 7a19fc434..f2e8b0fca 100644
--- a/src/main/resources/colors/Material Theme - Lighter.xml
+++ b/src/main/resources/colors/Material Theme - Lighter.xml
@@ -2713,7 +2713,7 @@
-
+
diff --git a/src/main/resources/colors/Material Theme - Palenight.xml b/src/main/resources/colors/Material Theme - Palenight.xml
index 84ea5089d..47631a326 100644
--- a/src/main/resources/colors/Material Theme - Palenight.xml
+++ b/src/main/resources/colors/Material Theme - Palenight.xml
@@ -2717,7 +2717,7 @@
-
+
diff --git a/src/main/resources/com/chrisrm/idea/mt.default.properties b/src/main/resources/com/chrisrm/idea/mt.default.properties
index 78664e2ff..b1130523a 100644
--- a/src/main/resources/com/chrisrm/idea/mt.default.properties
+++ b/src/main/resources/com/chrisrm/idea/mt.default.properties
@@ -50,19 +50,9 @@ infoText=B0BEC5
# Controls (buttons, combobox...) default colors
control=263238
controlText=B0BEC5
-# Need to try this on windows and linux...
-#controlHighlight=ffffff
-#controlLtHighlight=ffff00
-#controlShadow=00ff00
-#controlDkShadow=00ffff
# Link color
link.foreground=80CBC4
# ----------- Alerts ----------------
-# Replace alert pane icons with something more material like...
-#OptionPane.errorIcon=/icons/option_error.png
-#OptionPane.informationIcon=/icons/option_info.png
-#OptionPane.warningIcon=/icons/option_warn.png
-#OptionPane.questionIcon=/icons/option_help.png
OptionPane.messageForeground=B0BEC5
# --------- Menus --------------
Menu.maxGutterIconWidth=18
@@ -253,7 +243,6 @@ SidePanel.background=263238
# ----------------------- Lists ---------------------------
List.background=32424A
-#List.selectionBackground=263238
# ---------------- Trees -------------------------------
TreeUI=com.intellij.ide.ui.laf.darcula.ui.DarculaTreeUI
Tree.collapsedIcon=AllIcons.Mac.Tree_white_right_arrow
@@ -284,4 +273,4 @@ material.tab.borderColor=80CBC4
material.tab.borderThickness=2
material.contrast=1E272C
material.disabled=2E3C43
-material.mergeCommits=2E3C43
\ No newline at end of file
+material.mergeCommits=2E3C43
diff --git a/src/main/resources/com/chrisrm/idea/mt.lighter.properties b/src/main/resources/com/chrisrm/idea/mt.lighter.properties
index 0a348b77f..b0b32a761 100644
--- a/src/main/resources/com/chrisrm/idea/mt.lighter.properties
+++ b/src/main/resources/com/chrisrm/idea/mt.lighter.properties
@@ -251,7 +251,7 @@ Tree.collapsedIcon=AllIcons.Mac.Tree_white_right_arrow
Tree.expandedIcon=AllIcons.Mac.Tree_white_down_arrow
Tree.rightChildIndent=6
Tree.selectionBackground=546E7A50
-Tree.foreground=B0BEC5
+Tree.foreground=546E7A
FileView.fileIcon=AllIcons.FileTypes.Unknown
# ------------- Internal dividers -----------------------
DialogWrapper.southPanelDivider=FAFAFA
diff --git a/src/main/resources/icon_associations.xml b/src/main/resources/icon_associations.xml
index 7330cfe3c..fc75e38c3 100644
--- a/src/main/resources/icon_associations.xml
+++ b/src/main/resources/icon_associations.xml
@@ -217,6 +217,7 @@
+
diff --git a/src/main/resources/icons/actions/accents/customAccent.png b/src/main/resources/icons/actions/accents/customAccent.png
new file mode 100644
index 000000000..292b467ff
Binary files /dev/null and b/src/main/resources/icons/actions/accents/customAccent.png differ
diff --git a/src/main/resources/icons/actions/accents/customAccent@2x.png b/src/main/resources/icons/actions/accents/customAccent@2x.png
new file mode 100644
index 000000000..a8d9c2606
Binary files /dev/null and b/src/main/resources/icons/actions/accents/customAccent@2x.png differ
diff --git a/src/main/resources/icons/actions/uppercaseTabs.png b/src/main/resources/icons/actions/uppercaseTabs.png
new file mode 100644
index 000000000..e1021c10a
Binary files /dev/null and b/src/main/resources/icons/actions/uppercaseTabs.png differ
diff --git a/src/main/resources/icons/actions/uppercaseTabs@2x.png b/src/main/resources/icons/actions/uppercaseTabs@2x.png
new file mode 100644
index 000000000..f8158d506
Binary files /dev/null and b/src/main/resources/icons/actions/uppercaseTabs@2x.png differ
diff --git a/src/main/resources/icons/debugger/db_set_breakpoint.png b/src/main/resources/icons/debugger/db_set_breakpoint.png
index ea2a5b92b..a2874c6cf 100644
Binary files a/src/main/resources/icons/debugger/db_set_breakpoint.png and b/src/main/resources/icons/debugger/db_set_breakpoint.png differ
diff --git a/src/main/resources/icons/debugger/db_set_breakpoint@2x.png b/src/main/resources/icons/debugger/db_set_breakpoint@2x.png
index 10bdef979..3566d853d 100644
Binary files a/src/main/resources/icons/debugger/db_set_breakpoint@2x.png and b/src/main/resources/icons/debugger/db_set_breakpoint@2x.png differ
diff --git a/src/main/resources/icons/fileTypes/testjava.png b/src/main/resources/icons/fileTypes/testjava.png
new file mode 100644
index 000000000..dcbab1b6d
Binary files /dev/null and b/src/main/resources/icons/fileTypes/testjava.png differ
diff --git a/src/main/resources/icons/fileTypes/testjava@2x.png b/src/main/resources/icons/fileTypes/testjava@2x.png
new file mode 100644
index 000000000..81c9a3275
Binary files /dev/null and b/src/main/resources/icons/fileTypes/testjava@2x.png differ
diff --git a/src/main/resources/icons/general/autohideOff.png b/src/main/resources/icons/general/autohideOff.png
new file mode 100644
index 000000000..d108c5543
Binary files /dev/null and b/src/main/resources/icons/general/autohideOff.png differ
diff --git a/src/main/resources/icons/general/autohideOff@2x.png b/src/main/resources/icons/general/autohideOff@2x.png
new file mode 100644
index 000000000..c3dfa02d0
Binary files /dev/null and b/src/main/resources/icons/general/autohideOff@2x.png differ
diff --git a/src/main/resources/icons/general/autohideOffInactive.png b/src/main/resources/icons/general/autohideOffInactive.png
new file mode 100644
index 000000000..a4826e28c
Binary files /dev/null and b/src/main/resources/icons/general/autohideOffInactive.png differ
diff --git a/src/main/resources/icons/general/autohideOffInactive@2x.png b/src/main/resources/icons/general/autohideOffInactive@2x.png
new file mode 100644
index 000000000..0e31dd023
Binary files /dev/null and b/src/main/resources/icons/general/autohideOffInactive@2x.png differ
diff --git a/src/main/resources/icons/general/autohideOffPressed.png b/src/main/resources/icons/general/autohideOffPressed.png
new file mode 100644
index 000000000..3e4082dbc
Binary files /dev/null and b/src/main/resources/icons/general/autohideOffPressed.png differ
diff --git a/src/main/resources/icons/general/autohideOffPressed@2x.png b/src/main/resources/icons/general/autohideOffPressed@2x.png
new file mode 100644
index 000000000..bbb9c5b80
Binary files /dev/null and b/src/main/resources/icons/general/autohideOffPressed@2x.png differ
diff --git a/src/main/resources/icons/general/collapseAll_dark@2x.png b/src/main/resources/icons/general/collapseAll@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/collapseAll_dark@2x.png
rename to src/main/resources/icons/general/collapseAll@2x_dark.png
diff --git a/src/main/resources/icons/general/expandAll_dark@2x.png b/src/main/resources/icons/general/expandAll@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/expandAll_dark@2x.png
rename to src/main/resources/icons/general/expandAll@2x_dark.png
diff --git a/src/main/resources/icons/general/gear_dark@2x.png b/src/main/resources/icons/general/gear@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/gear_dark@2x.png
rename to src/main/resources/icons/general/gear@2x_dark.png
diff --git a/src/main/resources/icons/general/gearPlain_dark@2x.png b/src/main/resources/icons/general/gearPlain@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/gearPlain_dark@2x.png
rename to src/main/resources/icons/general/gearPlain@2x_dark.png
diff --git a/src/main/resources/icons/general/hideDown_dark@2x.png b/src/main/resources/icons/general/hideDown@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/hideDown_dark@2x.png
rename to src/main/resources/icons/general/hideDown@2x_dark.png
diff --git a/src/main/resources/icons/general/hideDownPart_dark@2x.png b/src/main/resources/icons/general/hideDownPart@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/hideDownPart_dark@2x.png
rename to src/main/resources/icons/general/hideDownPart@2x_dark.png
diff --git a/src/main/resources/icons/general/hideLeftPart_dark@2x.png b/src/main/resources/icons/general/hideLeft@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/hideLeftPart_dark@2x.png
rename to src/main/resources/icons/general/hideLeft@2x_dark.png
diff --git a/src/main/resources/icons/general/hideLeft_dark@2x.png b/src/main/resources/icons/general/hideLeft_dark@2x.png
deleted file mode 100644
index b82337e0b..000000000
Binary files a/src/main/resources/icons/general/hideLeft_dark@2x.png and /dev/null differ
diff --git a/src/main/resources/icons/general/hideRight_dark@2x.png b/src/main/resources/icons/general/hideRight@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/hideRight_dark@2x.png
rename to src/main/resources/icons/general/hideRight@2x_dark.png
diff --git a/src/main/resources/icons/general/hideRightPart_dark@2x.png b/src/main/resources/icons/general/hideRightPart@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/hideRightPart_dark@2x.png
rename to src/main/resources/icons/general/hideRightPart@2x_dark.png
diff --git a/src/main/resources/icons/general/hideToolWindowInactive_dark@2x.png b/src/main/resources/icons/general/hideToolWindow@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/hideToolWindowInactive_dark@2x.png
rename to src/main/resources/icons/general/hideToolWindow@2x_dark.png
diff --git a/src/main/resources/icons/general/hideToolWindow_dark@2x.png b/src/main/resources/icons/general/hideToolWindowInactive@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/hideToolWindow_dark@2x.png
rename to src/main/resources/icons/general/hideToolWindowInactive@2x_dark.png
diff --git a/src/main/resources/icons/general/hideWarnings.png b/src/main/resources/icons/general/hideWarnings.png
new file mode 100644
index 000000000..8831a7dd9
Binary files /dev/null and b/src/main/resources/icons/general/hideWarnings.png differ
diff --git a/src/main/resources/icons/general/hideWarnings@2x.png b/src/main/resources/icons/general/hideWarnings@2x.png
new file mode 100644
index 000000000..ab0ca8272
Binary files /dev/null and b/src/main/resources/icons/general/hideWarnings@2x.png differ
diff --git a/src/main/resources/icons/general/inspectionsError.png b/src/main/resources/icons/general/inspectionsError.png
new file mode 100644
index 000000000..e1f0451e1
Binary files /dev/null and b/src/main/resources/icons/general/inspectionsError.png differ
diff --git a/src/main/resources/icons/general/inspectionsError@2x.png b/src/main/resources/icons/general/inspectionsError@2x.png
new file mode 100644
index 000000000..c2045f199
Binary files /dev/null and b/src/main/resources/icons/general/inspectionsError@2x.png differ
diff --git a/src/main/resources/icons/general/inspectionsEye.png b/src/main/resources/icons/general/inspectionsEye.png
new file mode 100644
index 000000000..852014423
Binary files /dev/null and b/src/main/resources/icons/general/inspectionsEye.png differ
diff --git a/src/main/resources/icons/general/inspectionsEye@2x.png b/src/main/resources/icons/general/inspectionsEye@2x.png
new file mode 100644
index 000000000..14db73be9
Binary files /dev/null and b/src/main/resources/icons/general/inspectionsEye@2x.png differ
diff --git a/src/main/resources/icons/general/jdk.png b/src/main/resources/icons/general/jdk.png
new file mode 100755
index 000000000..c2c813272
Binary files /dev/null and b/src/main/resources/icons/general/jdk.png differ
diff --git a/src/main/resources/icons/general/jdk@2x.png b/src/main/resources/icons/general/jdk@2x.png
new file mode 100755
index 000000000..4757c6f17
Binary files /dev/null and b/src/main/resources/icons/general/jdk@2x.png differ
diff --git a/src/main/resources/icons/general/keyboardShortcut.png b/src/main/resources/icons/general/keyboardShortcut.png
new file mode 100644
index 000000000..71a9c5499
Binary files /dev/null and b/src/main/resources/icons/general/keyboardShortcut.png differ
diff --git a/src/main/resources/icons/general/keyboardShortcut@2x.png b/src/main/resources/icons/general/keyboardShortcut@2x.png
new file mode 100644
index 000000000..e06f32449
Binary files /dev/null and b/src/main/resources/icons/general/keyboardShortcut@2x.png differ
diff --git a/src/main/resources/icons/general/locate_dark@2x.png b/src/main/resources/icons/general/locate@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/locate_dark@2x.png
rename to src/main/resources/icons/general/locate@2x_dark.png
diff --git a/src/main/resources/icons/general/pathVariables.png b/src/main/resources/icons/general/pathVariables.png
new file mode 100644
index 000000000..f8b1576a0
Binary files /dev/null and b/src/main/resources/icons/general/pathVariables.png differ
diff --git a/src/main/resources/icons/general/pathVariables@2x.png b/src/main/resources/icons/general/pathVariables@2x.png
new file mode 100644
index 000000000..59bd47549
Binary files /dev/null and b/src/main/resources/icons/general/pathVariables@2x.png differ
diff --git a/src/main/resources/icons/general/readHelp.png b/src/main/resources/icons/general/readHelp.png
new file mode 100644
index 000000000..be53db376
Binary files /dev/null and b/src/main/resources/icons/general/readHelp.png differ
diff --git a/src/main/resources/icons/general/readHelp@2x.png b/src/main/resources/icons/general/readHelp@2x.png
new file mode 100644
index 000000000..1df35626b
Binary files /dev/null and b/src/main/resources/icons/general/readHelp@2x.png differ
diff --git a/src/main/resources/icons/general/splitCenterH.png b/src/main/resources/icons/general/splitCenterH.png
new file mode 100644
index 000000000..16c1da3a9
Binary files /dev/null and b/src/main/resources/icons/general/splitCenterH.png differ
diff --git a/src/main/resources/icons/general/splitCenterH@2x.png b/src/main/resources/icons/general/splitCenterH@2x.png
new file mode 100644
index 000000000..059712cd9
Binary files /dev/null and b/src/main/resources/icons/general/splitCenterH@2x.png differ
diff --git a/src/main/resources/icons/general/splitCenterV.png b/src/main/resources/icons/general/splitCenterV.png
new file mode 100644
index 000000000..8976cdc78
Binary files /dev/null and b/src/main/resources/icons/general/splitCenterV.png differ
diff --git a/src/main/resources/icons/general/splitCenterV@2x.png b/src/main/resources/icons/general/splitCenterV@2x.png
new file mode 100644
index 000000000..12a3a775d
Binary files /dev/null and b/src/main/resources/icons/general/splitCenterV@2x.png differ
diff --git a/src/main/resources/icons/general/splitDown.png b/src/main/resources/icons/general/splitDown.png
new file mode 100644
index 000000000..d7463433a
Binary files /dev/null and b/src/main/resources/icons/general/splitDown.png differ
diff --git a/src/main/resources/icons/general/splitDown@2x.png b/src/main/resources/icons/general/splitDown@2x.png
new file mode 100644
index 000000000..aefe021c8
Binary files /dev/null and b/src/main/resources/icons/general/splitDown@2x.png differ
diff --git a/src/main/resources/icons/general/splitLeft.png b/src/main/resources/icons/general/splitLeft.png
new file mode 100644
index 000000000..08152ad2f
Binary files /dev/null and b/src/main/resources/icons/general/splitLeft.png differ
diff --git a/src/main/resources/icons/general/splitLeft@2x.png b/src/main/resources/icons/general/splitLeft@2x.png
new file mode 100644
index 000000000..12a5f6beb
Binary files /dev/null and b/src/main/resources/icons/general/splitLeft@2x.png differ
diff --git a/src/main/resources/icons/general/splitRight.png b/src/main/resources/icons/general/splitRight.png
new file mode 100644
index 000000000..0098250eb
Binary files /dev/null and b/src/main/resources/icons/general/splitRight.png differ
diff --git a/src/main/resources/icons/general/splitRight@2x.png b/src/main/resources/icons/general/splitRight@2x.png
new file mode 100644
index 000000000..aab8c069a
Binary files /dev/null and b/src/main/resources/icons/general/splitRight@2x.png differ
diff --git a/src/main/resources/icons/general/splitUp.png b/src/main/resources/icons/general/splitUp.png
new file mode 100644
index 000000000..79fa04cd1
Binary files /dev/null and b/src/main/resources/icons/general/splitUp.png differ
diff --git a/src/main/resources/icons/general/splitUp@2x.png b/src/main/resources/icons/general/splitUp@2x.png
new file mode 100644
index 000000000..9a00da6d4
Binary files /dev/null and b/src/main/resources/icons/general/splitUp@2x.png differ
diff --git a/src/main/resources/icons/general/tbHidden_dark@2x.png b/src/main/resources/icons/general/tbHidden@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/tbHidden_dark@2x.png
rename to src/main/resources/icons/general/tbHidden@2x_dark.png
diff --git a/src/main/resources/icons/general/tbShown_dark@2x.png b/src/main/resources/icons/general/tbShown@2x_dark.png
similarity index 100%
rename from src/main/resources/icons/general/tbShown_dark@2x.png
rename to src/main/resources/icons/general/tbShown@2x_dark.png
diff --git a/src/main/resources/icons/general/unmarkWebroot.png b/src/main/resources/icons/general/unmarkWebroot.png
new file mode 100644
index 000000000..942202d3f
Binary files /dev/null and b/src/main/resources/icons/general/unmarkWebroot.png differ
diff --git a/src/main/resources/icons/general/unmarkWebroot@2x.png b/src/main/resources/icons/general/unmarkWebroot@2x.png
new file mode 100644
index 000000000..598cbb521
Binary files /dev/null and b/src/main/resources/icons/general/unmarkWebroot@2x.png differ
diff --git a/src/main/resources/icons/general/webRoot.png b/src/main/resources/icons/general/webRoot.png
new file mode 100644
index 000000000..bef69dcf7
Binary files /dev/null and b/src/main/resources/icons/general/webRoot.png differ
diff --git a/src/main/resources/icons/general/webRoot@2x.png b/src/main/resources/icons/general/webRoot@2x.png
new file mode 100644
index 000000000..f7ec64072
Binary files /dev/null and b/src/main/resources/icons/general/webRoot@2x.png differ
diff --git a/src/main/resources/icons/graph/actualZoom.png b/src/main/resources/icons/graph/actualZoom.png
new file mode 100644
index 000000000..757158e7b
Binary files /dev/null and b/src/main/resources/icons/graph/actualZoom.png differ
diff --git a/src/main/resources/icons/graph/actualZoom@2x.png b/src/main/resources/icons/graph/actualZoom@2x.png
new file mode 100644
index 000000000..680d18d14
Binary files /dev/null and b/src/main/resources/icons/graph/actualZoom@2x.png differ
diff --git a/src/main/resources/icons/graph/fitContent.png b/src/main/resources/icons/graph/fitContent.png
new file mode 100644
index 000000000..9a29aeae2
Binary files /dev/null and b/src/main/resources/icons/graph/fitContent.png differ
diff --git a/src/main/resources/icons/graph/fitContent@2x.png b/src/main/resources/icons/graph/fitContent@2x.png
new file mode 100644
index 000000000..b3733da02
Binary files /dev/null and b/src/main/resources/icons/graph/fitContent@2x.png differ
diff --git a/src/main/resources/icons/graph/grid.png b/src/main/resources/icons/graph/grid.png
new file mode 100644
index 000000000..15176bfd8
Binary files /dev/null and b/src/main/resources/icons/graph/grid.png differ
diff --git a/src/main/resources/icons/graph/grid@2x.png b/src/main/resources/icons/graph/grid@2x.png
new file mode 100644
index 000000000..29e34a37a
Binary files /dev/null and b/src/main/resources/icons/graph/grid@2x.png differ
diff --git a/src/main/resources/icons/graph/layout.png b/src/main/resources/icons/graph/layout.png
new file mode 100644
index 000000000..6e4871fe6
Binary files /dev/null and b/src/main/resources/icons/graph/layout.png differ
diff --git a/src/main/resources/icons/graph/layout@2x.png b/src/main/resources/icons/graph/layout@2x.png
new file mode 100644
index 000000000..465371d56
Binary files /dev/null and b/src/main/resources/icons/graph/layout@2x.png differ
diff --git a/src/main/resources/icons/graph/nodeSelectionMode.png b/src/main/resources/icons/graph/nodeSelectionMode.png
new file mode 100644
index 000000000..e8c7d0d29
Binary files /dev/null and b/src/main/resources/icons/graph/nodeSelectionMode.png differ
diff --git a/src/main/resources/icons/graph/nodeSelectionMode@2x.png b/src/main/resources/icons/graph/nodeSelectionMode@2x.png
new file mode 100644
index 000000000..fb5864e6e
Binary files /dev/null and b/src/main/resources/icons/graph/nodeSelectionMode@2x.png differ
diff --git a/src/main/resources/icons/graph/zoomIn.png b/src/main/resources/icons/graph/zoomIn.png
new file mode 100644
index 000000000..dd3ad4b0e
Binary files /dev/null and b/src/main/resources/icons/graph/zoomIn.png differ
diff --git a/src/main/resources/icons/graph/zoomIn@2x.png b/src/main/resources/icons/graph/zoomIn@2x.png
new file mode 100644
index 000000000..5f0e48a9f
Binary files /dev/null and b/src/main/resources/icons/graph/zoomIn@2x.png differ
diff --git a/src/main/resources/icons/graph/zoomOut.png b/src/main/resources/icons/graph/zoomOut.png
new file mode 100644
index 000000000..e69f3c220
Binary files /dev/null and b/src/main/resources/icons/graph/zoomOut.png differ
diff --git a/src/main/resources/icons/graph/zoomOut@2x.png b/src/main/resources/icons/graph/zoomOut@2x.png
new file mode 100644
index 000000000..eaeb5275c
Binary files /dev/null and b/src/main/resources/icons/graph/zoomOut@2x.png differ
diff --git a/src/main/resources/icons/hierarchy/base.png b/src/main/resources/icons/hierarchy/base.png
new file mode 100644
index 000000000..154cd20bf
Binary files /dev/null and b/src/main/resources/icons/hierarchy/base.png differ
diff --git a/src/main/resources/icons/hierarchy/base@2x.png b/src/main/resources/icons/hierarchy/base@2x.png
new file mode 100644
index 000000000..7c4f77afd
Binary files /dev/null and b/src/main/resources/icons/hierarchy/base@2x.png differ
diff --git a/src/main/resources/icons/hierarchy/methodDefined.png b/src/main/resources/icons/hierarchy/methodDefined.png
new file mode 100644
index 000000000..771ce66e2
Binary files /dev/null and b/src/main/resources/icons/hierarchy/methodDefined.png differ
diff --git a/src/main/resources/icons/hierarchy/methodDefined@2x.png b/src/main/resources/icons/hierarchy/methodDefined@2x.png
new file mode 100644
index 000000000..34edf866e
Binary files /dev/null and b/src/main/resources/icons/hierarchy/methodDefined@2x.png differ
diff --git a/src/main/resources/icons/hierarchy/methodNotDefined.png b/src/main/resources/icons/hierarchy/methodNotDefined.png
new file mode 100644
index 000000000..88c1ffe5b
Binary files /dev/null and b/src/main/resources/icons/hierarchy/methodNotDefined.png differ
diff --git a/src/main/resources/icons/hierarchy/methodNotDefined@2x.png b/src/main/resources/icons/hierarchy/methodNotDefined@2x.png
new file mode 100644
index 000000000..c1fc86a4c
Binary files /dev/null and b/src/main/resources/icons/hierarchy/methodNotDefined@2x.png differ
diff --git a/src/main/resources/icons/hierarchy/shouldDefineMethod.png b/src/main/resources/icons/hierarchy/shouldDefineMethod.png
new file mode 100644
index 000000000..cab714693
Binary files /dev/null and b/src/main/resources/icons/hierarchy/shouldDefineMethod.png differ
diff --git a/src/main/resources/icons/hierarchy/shouldDefineMethod@2x.png b/src/main/resources/icons/hierarchy/shouldDefineMethod@2x.png
new file mode 100644
index 000000000..2b11ccc58
Binary files /dev/null and b/src/main/resources/icons/hierarchy/shouldDefineMethod@2x.png differ
diff --git a/src/main/resources/icons/ide/readonly.png b/src/main/resources/icons/ide/readonly.png
deleted file mode 100644
index 681d7951b..000000000
Binary files a/src/main/resources/icons/ide/readonly.png and /dev/null differ
diff --git a/src/main/resources/icons/ide/readonly@2x.png b/src/main/resources/icons/ide/readonly@2x.png
deleted file mode 100644
index 165ab161d..000000000
Binary files a/src/main/resources/icons/ide/readonly@2x.png and /dev/null differ
diff --git a/src/main/resources/icons/ide/readonly_dark.png b/src/main/resources/icons/ide/readonly_dark.png
deleted file mode 100644
index 55abfd85f..000000000
Binary files a/src/main/resources/icons/ide/readonly_dark.png and /dev/null differ
diff --git a/src/main/resources/icons/ide/readonly_dark@2x.png b/src/main/resources/icons/ide/readonly_dark@2x.png
deleted file mode 100644
index b7a1a529d..000000000
Binary files a/src/main/resources/icons/ide/readonly_dark@2x.png and /dev/null differ
diff --git a/src/main/resources/icons/modules/addContentEntry.png b/src/main/resources/icons/modules/addContentEntry.png
new file mode 100644
index 000000000..771ce66e2
Binary files /dev/null and b/src/main/resources/icons/modules/addContentEntry.png differ
diff --git a/src/main/resources/icons/modules/addContentEntry@2x.png b/src/main/resources/icons/modules/addContentEntry@2x.png
new file mode 100644
index 000000000..34edf866e
Binary files /dev/null and b/src/main/resources/icons/modules/addContentEntry@2x.png differ
diff --git a/src/main/resources/icons/modules/annotation.png b/src/main/resources/icons/modules/annotation.png
new file mode 100644
index 000000000..2a7877f19
Binary files /dev/null and b/src/main/resources/icons/modules/annotation.png differ
diff --git a/src/main/resources/icons/modules/annotation@2x.png b/src/main/resources/icons/modules/annotation@2x.png
new file mode 100644
index 000000000..df3c5f492
Binary files /dev/null and b/src/main/resources/icons/modules/annotation@2x.png differ
diff --git a/src/main/resources/icons/modules/edit.png b/src/main/resources/icons/modules/edit.png
new file mode 100644
index 000000000..77fb68a58
Binary files /dev/null and b/src/main/resources/icons/modules/edit.png differ
diff --git a/src/main/resources/icons/modules/edit@2x.png b/src/main/resources/icons/modules/edit@2x.png
new file mode 100644
index 000000000..22b9c8f05
Binary files /dev/null and b/src/main/resources/icons/modules/edit@2x.png differ
diff --git a/src/main/resources/icons/modules/library.png b/src/main/resources/icons/modules/library.png
new file mode 100644
index 000000000..e813f4661
Binary files /dev/null and b/src/main/resources/icons/modules/library.png differ
diff --git a/src/main/resources/icons/modules/library@2x.png b/src/main/resources/icons/modules/library@2x.png
new file mode 100644
index 000000000..d0482b12c
Binary files /dev/null and b/src/main/resources/icons/modules/library@2x.png differ
diff --git a/src/main/resources/icons/modules/modulesNode.png b/src/main/resources/icons/modules/modulesNode.png
new file mode 100644
index 000000000..8c330a06f
Binary files /dev/null and b/src/main/resources/icons/modules/modulesNode.png differ
diff --git a/src/main/resources/icons/modules/modulesNode@2x.png b/src/main/resources/icons/modules/modulesNode@2x.png
new file mode 100644
index 000000000..e432d2d19
Binary files /dev/null and b/src/main/resources/icons/modules/modulesNode@2x.png differ
diff --git a/src/main/resources/icons/modules/output.png b/src/main/resources/icons/modules/output.png
new file mode 100644
index 000000000..18d9be933
Binary files /dev/null and b/src/main/resources/icons/modules/output.png differ
diff --git a/src/main/resources/icons/modules/output@2x.png b/src/main/resources/icons/modules/output@2x.png
new file mode 100644
index 000000000..c46b3c703
Binary files /dev/null and b/src/main/resources/icons/modules/output@2x.png differ
diff --git a/src/main/resources/icons/modules/testResourcesRoot.png b/src/main/resources/icons/modules/testResourcesRoot.png
new file mode 100644
index 000000000..0e7a8042a
Binary files /dev/null and b/src/main/resources/icons/modules/testResourcesRoot.png differ
diff --git a/src/main/resources/icons/modules/testResourcesRoot@2x.png b/src/main/resources/icons/modules/testResourcesRoot@2x.png
new file mode 100644
index 000000000..c84f66e76
Binary files /dev/null and b/src/main/resources/icons/modules/testResourcesRoot@2x.png differ
diff --git a/src/main/resources/icons/modules/unloadedModule.png b/src/main/resources/icons/modules/unloadedModule.png
new file mode 100644
index 000000000..48b41dfa1
Binary files /dev/null and b/src/main/resources/icons/modules/unloadedModule.png differ
diff --git a/src/main/resources/icons/modules/unloadedModule@2x.png b/src/main/resources/icons/modules/unloadedModule@2x.png
new file mode 100644
index 000000000..ff3dc6bb2
Binary files /dev/null and b/src/main/resources/icons/modules/unloadedModule@2x.png differ
diff --git a/src/main/resources/icons/modules/unmarkWebroot.png b/src/main/resources/icons/modules/unmarkWebroot.png
new file mode 100644
index 000000000..264e29c51
Binary files /dev/null and b/src/main/resources/icons/modules/unmarkWebroot.png differ
diff --git a/src/main/resources/icons/modules/unmarkWebroot@2x.png b/src/main/resources/icons/modules/unmarkWebroot@2x.png
new file mode 100644
index 000000000..05835f304
Binary files /dev/null and b/src/main/resources/icons/modules/unmarkWebroot@2x.png differ
diff --git a/src/main/resources/icons/modules/webRoot.png b/src/main/resources/icons/modules/webRoot.png
new file mode 100644
index 000000000..3152bf979
Binary files /dev/null and b/src/main/resources/icons/modules/webRoot.png differ
diff --git a/src/main/resources/icons/modules/webRoot@2x.png b/src/main/resources/icons/modules/webRoot@2x.png
new file mode 100644
index 000000000..49c5b87a4
Binary files /dev/null and b/src/main/resources/icons/modules/webRoot@2x.png differ
diff --git a/src/main/resources/icons/nodes/ideaProject.png b/src/main/resources/icons/nodes/ideaProject.png
new file mode 100644
index 000000000..92ead3458
Binary files /dev/null and b/src/main/resources/icons/nodes/ideaProject.png differ
diff --git a/src/main/resources/icons/nodes/ideaProject@2x.png b/src/main/resources/icons/nodes/ideaProject@2x.png
new file mode 100644
index 000000000..6cce51e72
Binary files /dev/null and b/src/main/resources/icons/nodes/ideaProject@2x.png differ
diff --git a/src/main/resources/icons/nodes/inspectionResults.png b/src/main/resources/icons/nodes/inspectionResults.png
new file mode 100644
index 000000000..e5ab35a3b
Binary files /dev/null and b/src/main/resources/icons/nodes/inspectionResults.png differ
diff --git a/src/main/resources/icons/nodes/inspectionResults@2x.png b/src/main/resources/icons/nodes/inspectionResults@2x.png
new file mode 100644
index 000000000..88ccda2ed
Binary files /dev/null and b/src/main/resources/icons/nodes/inspectionResults@2x.png differ
diff --git a/src/main/resources/icons/nodes/javaModuleRoot.png b/src/main/resources/icons/nodes/javaModuleRoot.png
new file mode 100644
index 000000000..8c330a06f
Binary files /dev/null and b/src/main/resources/icons/nodes/javaModuleRoot.png differ
diff --git a/src/main/resources/icons/nodes/javaModuleRoot@2x.png b/src/main/resources/icons/nodes/javaModuleRoot@2x.png
new file mode 100644
index 000000000..e432d2d19
Binary files /dev/null and b/src/main/resources/icons/nodes/javaModuleRoot@2x.png differ
diff --git a/src/main/resources/icons/nodes/moduleGroup.png b/src/main/resources/icons/nodes/moduleGroup.png
new file mode 100644
index 000000000..8c330a06f
Binary files /dev/null and b/src/main/resources/icons/nodes/moduleGroup.png differ
diff --git a/src/main/resources/icons/nodes/moduleGroup@2x.png b/src/main/resources/icons/nodes/moduleGroup@2x.png
new file mode 100644
index 000000000..e432d2d19
Binary files /dev/null and b/src/main/resources/icons/nodes/moduleGroup@2x.png differ
diff --git a/src/main/resources/icons/nodes/nativeLibrariesFolder.png b/src/main/resources/icons/nodes/nativeLibrariesFolder.png
new file mode 100644
index 000000000..e813f4661
Binary files /dev/null and b/src/main/resources/icons/nodes/nativeLibrariesFolder.png differ
diff --git a/src/main/resources/icons/nodes/nativeLibrariesFolder@2x.png b/src/main/resources/icons/nodes/nativeLibrariesFolder@2x.png
new file mode 100644
index 000000000..d0482b12c
Binary files /dev/null and b/src/main/resources/icons/nodes/nativeLibrariesFolder@2x.png differ
diff --git a/src/main/resources/icons/nodes/plugin@2x_dark.png b/src/main/resources/icons/nodes/plugin@2x_dark.png
deleted file mode 100644
index 6bd6dc46a..000000000
Binary files a/src/main/resources/icons/nodes/plugin@2x_dark.png and /dev/null differ
diff --git a/src/main/resources/icons/nodes/plugin_dark.png b/src/main/resources/icons/nodes/plugin_dark.png
deleted file mode 100644
index b13a65a20..000000000
Binary files a/src/main/resources/icons/nodes/plugin_dark.png and /dev/null differ
diff --git a/src/main/resources/icons/nodes/ppFile.png b/src/main/resources/icons/nodes/ppFile.png
new file mode 100644
index 000000000..765866d5a
Binary files /dev/null and b/src/main/resources/icons/nodes/ppFile.png differ
diff --git a/src/main/resources/icons/nodes/ppFile@2x.png b/src/main/resources/icons/nodes/ppFile@2x.png
new file mode 100644
index 000000000..333018ed2
Binary files /dev/null and b/src/main/resources/icons/nodes/ppFile@2x.png differ
diff --git a/src/main/resources/icons/nodes/ppJdk.png b/src/main/resources/icons/nodes/ppJdk.png
new file mode 100755
index 000000000..c2c813272
Binary files /dev/null and b/src/main/resources/icons/nodes/ppJdk.png differ
diff --git a/src/main/resources/icons/nodes/ppJdk@2x.png b/src/main/resources/icons/nodes/ppJdk@2x.png
new file mode 100755
index 000000000..4757c6f17
Binary files /dev/null and b/src/main/resources/icons/nodes/ppJdk@2x.png differ
diff --git a/src/main/resources/icons/nodes/ppLibFolder.png b/src/main/resources/icons/nodes/ppLibFolder.png
new file mode 100644
index 000000000..5faaef552
Binary files /dev/null and b/src/main/resources/icons/nodes/ppLibFolder.png differ
diff --git a/src/main/resources/icons/nodes/ppLibFolder@2x.png b/src/main/resources/icons/nodes/ppLibFolder@2x.png
new file mode 100644
index 000000000..52b2529c1
Binary files /dev/null and b/src/main/resources/icons/nodes/ppLibFolder@2x.png differ
diff --git a/src/main/resources/icons/nodes/resourceBundle.png b/src/main/resources/icons/nodes/resourceBundle.png
new file mode 100644
index 000000000..a3e64671c
Binary files /dev/null and b/src/main/resources/icons/nodes/resourceBundle.png differ
diff --git a/src/main/resources/icons/nodes/resourceBundle@2x.png b/src/main/resources/icons/nodes/resourceBundle@2x.png
new file mode 100644
index 000000000..529abf703
Binary files /dev/null and b/src/main/resources/icons/nodes/resourceBundle@2x.png differ
diff --git a/src/main/resources/icons/nodes/servlet.png b/src/main/resources/icons/nodes/servlet.png
new file mode 100644
index 000000000..d96da67cd
Binary files /dev/null and b/src/main/resources/icons/nodes/servlet.png differ
diff --git a/src/main/resources/icons/nodes/servlet@2x.png b/src/main/resources/icons/nodes/servlet@2x.png
new file mode 100644
index 000000000..4c83416c0
Binary files /dev/null and b/src/main/resources/icons/nodes/servlet@2x.png differ
diff --git a/src/main/resources/icons/nodes/sourceFolder.png b/src/main/resources/icons/nodes/sourceFolder.png
new file mode 100644
index 000000000..46639355b
Binary files /dev/null and b/src/main/resources/icons/nodes/sourceFolder.png differ
diff --git a/src/main/resources/icons/nodes/sourceFolder@2x.png b/src/main/resources/icons/nodes/sourceFolder@2x.png
new file mode 100644
index 000000000..01c158366
Binary files /dev/null and b/src/main/resources/icons/nodes/sourceFolder@2x.png differ
diff --git a/src/main/resources/icons/nodes/tabPin.png b/src/main/resources/icons/nodes/tabPin.png
new file mode 100644
index 000000000..cf2f3023a
Binary files /dev/null and b/src/main/resources/icons/nodes/tabPin.png differ
diff --git a/src/main/resources/icons/nodes/tabPin@2x.png b/src/main/resources/icons/nodes/tabPin@2x.png
new file mode 100644
index 000000000..8075db621
Binary files /dev/null and b/src/main/resources/icons/nodes/tabPin@2x.png differ
diff --git a/src/main/resources/icons/nodes/tag.png b/src/main/resources/icons/nodes/tag.png
new file mode 100644
index 000000000..a8fd794a6
Binary files /dev/null and b/src/main/resources/icons/nodes/tag.png differ
diff --git a/src/main/resources/icons/nodes/tag@2x.png b/src/main/resources/icons/nodes/tag@2x.png
new file mode 100644
index 000000000..0019bd7af
Binary files /dev/null and b/src/main/resources/icons/nodes/tag@2x.png differ
diff --git a/src/main/resources/icons/nodes/testSourceFolder.png b/src/main/resources/icons/nodes/testSourceFolder.png
new file mode 100644
index 000000000..0e7a8042a
Binary files /dev/null and b/src/main/resources/icons/nodes/testSourceFolder.png differ
diff --git a/src/main/resources/icons/nodes/testSourceFolder@2x.png b/src/main/resources/icons/nodes/testSourceFolder@2x.png
new file mode 100644
index 000000000..c84f66e76
Binary files /dev/null and b/src/main/resources/icons/nodes/testSourceFolder@2x.png differ
diff --git a/src/main/resources/icons/nodes/unknownJdk.png b/src/main/resources/icons/nodes/unknownJdk.png
new file mode 100644
index 000000000..6ccd561e8
Binary files /dev/null and b/src/main/resources/icons/nodes/unknownJdk.png differ
diff --git a/src/main/resources/icons/nodes/unknownJdk@2x.png b/src/main/resources/icons/nodes/unknownJdk@2x.png
new file mode 100644
index 000000000..0f4809d1a
Binary files /dev/null and b/src/main/resources/icons/nodes/unknownJdk@2x.png differ
diff --git a/src/main/resources/icons/nodes/unmarkWebroot.png b/src/main/resources/icons/nodes/unmarkWebroot.png
new file mode 100644
index 000000000..264e29c51
Binary files /dev/null and b/src/main/resources/icons/nodes/unmarkWebroot.png differ
diff --git a/src/main/resources/icons/nodes/unmarkWebroot@2x.png b/src/main/resources/icons/nodes/unmarkWebroot@2x.png
new file mode 100644
index 000000000..05835f304
Binary files /dev/null and b/src/main/resources/icons/nodes/unmarkWebroot@2x.png differ
diff --git a/src/main/resources/icons/nodes/upFolder.png b/src/main/resources/icons/nodes/upFolder.png
new file mode 100644
index 000000000..0548e9271
Binary files /dev/null and b/src/main/resources/icons/nodes/upFolder.png differ
diff --git a/src/main/resources/icons/nodes/upFolder@2x.png b/src/main/resources/icons/nodes/upFolder@2x.png
new file mode 100644
index 000000000..fd0c900df
Binary files /dev/null and b/src/main/resources/icons/nodes/upFolder@2x.png differ
diff --git a/src/main/resources/icons/nodes/webFolder.png b/src/main/resources/icons/nodes/webFolder.png
new file mode 100644
index 000000000..3152bf979
Binary files /dev/null and b/src/main/resources/icons/nodes/webFolder.png differ
diff --git a/src/main/resources/icons/nodes/webFolder@2x.png b/src/main/resources/icons/nodes/webFolder@2x.png
new file mode 100644
index 000000000..49c5b87a4
Binary files /dev/null and b/src/main/resources/icons/nodes/webFolder@2x.png differ
diff --git a/src/main/resources/icons/plugins/php/debug_listen_off.png b/src/main/resources/icons/plugins/php/debug_listen_off.png
index b4e7381e0..0ccfbd627 100644
Binary files a/src/main/resources/icons/plugins/php/debug_listen_off.png and b/src/main/resources/icons/plugins/php/debug_listen_off.png differ
diff --git a/src/main/resources/icons/plugins/php/debug_listen_off@2x.png b/src/main/resources/icons/plugins/php/debug_listen_off@2x.png
index 97f163a9b..1be57976e 100644
Binary files a/src/main/resources/icons/plugins/php/debug_listen_off@2x.png and b/src/main/resources/icons/plugins/php/debug_listen_off@2x.png differ
diff --git a/src/main/resources/icons/plugins/php/debug_listen_on.png b/src/main/resources/icons/plugins/php/debug_listen_on.png
index 0ccfbd627..b4e7381e0 100644
Binary files a/src/main/resources/icons/plugins/php/debug_listen_on.png and b/src/main/resources/icons/plugins/php/debug_listen_on.png differ
diff --git a/src/main/resources/icons/plugins/php/debug_listen_on@2x.png b/src/main/resources/icons/plugins/php/debug_listen_on@2x.png
index 1be57976e..97f163a9b 100644
Binary files a/src/main/resources/icons/plugins/php/debug_listen_on@2x.png and b/src/main/resources/icons/plugins/php/debug_listen_on@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/applet.png b/src/main/resources/icons/runConfigurations/applet.png
new file mode 100644
index 000000000..1371d6784
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/applet.png differ
diff --git a/src/main/resources/icons/runConfigurations/applet@2x.png b/src/main/resources/icons/runConfigurations/applet@2x.png
new file mode 100644
index 000000000..9e21d2915
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/applet@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/application.png b/src/main/resources/icons/runConfigurations/application.png
new file mode 100644
index 000000000..834a899de
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/application.png differ
diff --git a/src/main/resources/icons/runConfigurations/application@2x.png b/src/main/resources/icons/runConfigurations/application@2x.png
new file mode 100644
index 000000000..265275d51
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/application@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/configurationWarning.png b/src/main/resources/icons/runConfigurations/configurationWarning.png
new file mode 100644
index 000000000..8eafd2915
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/configurationWarning.png differ
diff --git a/src/main/resources/icons/runConfigurations/configurationWarning@2x.png b/src/main/resources/icons/runConfigurations/configurationWarning@2x.png
new file mode 100644
index 000000000..0c025e8ad
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/configurationWarning@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/hideIgnored.png b/src/main/resources/icons/runConfigurations/hideIgnored.png
new file mode 100644
index 000000000..632fc1088
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/hideIgnored.png differ
diff --git a/src/main/resources/icons/runConfigurations/hideIgnored@2x.png b/src/main/resources/icons/runConfigurations/hideIgnored@2x.png
new file mode 100644
index 000000000..20ff77680
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/hideIgnored@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/hidePassed.png b/src/main/resources/icons/runConfigurations/hidePassed.png
new file mode 100644
index 000000000..73d4a9c1a
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/hidePassed.png differ
diff --git a/src/main/resources/icons/runConfigurations/hidePassed@2x.png b/src/main/resources/icons/runConfigurations/hidePassed@2x.png
new file mode 100644
index 000000000..48a00b88b
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/hidePassed@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/includeNonStartedTests_Rerun.png b/src/main/resources/icons/runConfigurations/includeNonStartedTests_Rerun.png
new file mode 100644
index 000000000..66ca3a79e
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/includeNonStartedTests_Rerun.png differ
diff --git a/src/main/resources/icons/runConfigurations/includeNonStartedTests_Rerun@2x.png b/src/main/resources/icons/runConfigurations/includeNonStartedTests_Rerun@2x.png
new file mode 100644
index 000000000..da1891621
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/includeNonStartedTests_Rerun@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/loadingTree.png b/src/main/resources/icons/runConfigurations/loadingTree.png
new file mode 100644
index 000000000..b1db786f4
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/loadingTree.png differ
diff --git a/src/main/resources/icons/runConfigurations/loadingTree@2x.png b/src/main/resources/icons/runConfigurations/loadingTree@2x.png
new file mode 100644
index 000000000..653e90768
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/loadingTree@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/remote.png b/src/main/resources/icons/runConfigurations/remote.png
new file mode 100644
index 000000000..eb5d658fc
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/remote.png differ
diff --git a/src/main/resources/icons/runConfigurations/remote@2x.png b/src/main/resources/icons/runConfigurations/remote@2x.png
new file mode 100644
index 000000000..ce958300e
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/remote@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/rerunFailedTests.png b/src/main/resources/icons/runConfigurations/rerunFailedTests.png
new file mode 100644
index 000000000..4ddcc6892
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/rerunFailedTests.png differ
diff --git a/src/main/resources/icons/runConfigurations/rerunFailedTests@2x.png b/src/main/resources/icons/runConfigurations/rerunFailedTests@2x.png
new file mode 100644
index 000000000..560f4052a
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/rerunFailedTests@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/saveTempConfig.png b/src/main/resources/icons/runConfigurations/saveTempConfig.png
new file mode 100644
index 000000000..b1d3c26d4
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/saveTempConfig.png differ
diff --git a/src/main/resources/icons/runConfigurations/saveTempConfig@2x.png b/src/main/resources/icons/runConfigurations/saveTempConfig@2x.png
new file mode 100644
index 000000000..3f51672b0
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/saveTempConfig@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/scroll_down.png b/src/main/resources/icons/runConfigurations/scroll_down.png
new file mode 100644
index 000000000..ba76a4a9e
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/scroll_down.png differ
diff --git a/src/main/resources/icons/runConfigurations/scroll_down@2x.png b/src/main/resources/icons/runConfigurations/scroll_down@2x.png
new file mode 100644
index 000000000..4aecae245
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/scroll_down@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/selectFirstDefect.png b/src/main/resources/icons/runConfigurations/selectFirstDefect.png
new file mode 100644
index 000000000..3ec80862a
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/selectFirstDefect.png differ
diff --git a/src/main/resources/icons/runConfigurations/selectFirstDefect@2x.png b/src/main/resources/icons/runConfigurations/selectFirstDefect@2x.png
new file mode 100644
index 000000000..01528df0b
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/selectFirstDefect@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/sortbyDuration.png b/src/main/resources/icons/runConfigurations/sortbyDuration.png
new file mode 100644
index 000000000..694a20f5e
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/sortbyDuration.png differ
diff --git a/src/main/resources/icons/runConfigurations/sortbyDuration@2x.png b/src/main/resources/icons/runConfigurations/sortbyDuration@2x.png
new file mode 100644
index 000000000..947fc2e43
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/sortbyDuration@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/sourceAtException.png b/src/main/resources/icons/runConfigurations/sourceAtException.png
new file mode 100644
index 000000000..df15bc307
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/sourceAtException.png differ
diff --git a/src/main/resources/icons/runConfigurations/sourceAtException@2x.png b/src/main/resources/icons/runConfigurations/sourceAtException@2x.png
new file mode 100644
index 000000000..532fb8c92
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/sourceAtException@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/testError.png b/src/main/resources/icons/runConfigurations/testError.png
new file mode 100644
index 000000000..02add1375
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testError.png differ
diff --git a/src/main/resources/icons/runConfigurations/testError@2x.png b/src/main/resources/icons/runConfigurations/testError@2x.png
new file mode 100644
index 000000000..7a3dbb9ed
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testError@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/testFailed.png b/src/main/resources/icons/runConfigurations/testFailed.png
new file mode 100644
index 000000000..dedcfa678
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testFailed.png differ
diff --git a/src/main/resources/icons/runConfigurations/testFailed@2x.png b/src/main/resources/icons/runConfigurations/testFailed@2x.png
new file mode 100644
index 000000000..ed2a9ae6a
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testFailed@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/testIgnored.png b/src/main/resources/icons/runConfigurations/testIgnored.png
new file mode 100644
index 000000000..bf1daafe1
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testIgnored.png differ
diff --git a/src/main/resources/icons/runConfigurations/testIgnored@2x.png b/src/main/resources/icons/runConfigurations/testIgnored@2x.png
new file mode 100644
index 000000000..c8c079636
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testIgnored@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/testNotRan.png b/src/main/resources/icons/runConfigurations/testNotRan.png
new file mode 100644
index 000000000..75543cd92
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testNotRan.png differ
diff --git a/src/main/resources/icons/runConfigurations/testNotRan@2x.png b/src/main/resources/icons/runConfigurations/testNotRan@2x.png
new file mode 100644
index 000000000..ca913afdc
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testNotRan@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/testPassed.png b/src/main/resources/icons/runConfigurations/testPassed.png
new file mode 100644
index 000000000..5c4eb6caf
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testPassed.png differ
diff --git a/src/main/resources/icons/runConfigurations/testPassed@2x.png b/src/main/resources/icons/runConfigurations/testPassed@2x.png
new file mode 100644
index 000000000..ed31fd45d
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testPassed@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/testPaused.png b/src/main/resources/icons/runConfigurations/testPaused.png
new file mode 100644
index 000000000..5b3042f5e
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testPaused.png differ
diff --git a/src/main/resources/icons/runConfigurations/testPaused@2x.png b/src/main/resources/icons/runConfigurations/testPaused@2x.png
new file mode 100644
index 000000000..ab4adfe8b
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testPaused@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/testSkipped.png b/src/main/resources/icons/runConfigurations/testSkipped.png
new file mode 100644
index 000000000..582d12842
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testSkipped.png differ
diff --git a/src/main/resources/icons/runConfigurations/testSkipped@2x.png b/src/main/resources/icons/runConfigurations/testSkipped@2x.png
new file mode 100644
index 000000000..c8c263228
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testSkipped@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/testTerminated.png b/src/main/resources/icons/runConfigurations/testTerminated.png
new file mode 100644
index 000000000..d73d2bbcc
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testTerminated.png differ
diff --git a/src/main/resources/icons/runConfigurations/testTerminated@2x.png b/src/main/resources/icons/runConfigurations/testTerminated@2x.png
new file mode 100644
index 000000000..444cb8281
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testTerminated@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/testUnknown.png b/src/main/resources/icons/runConfigurations/testUnknown.png
new file mode 100644
index 000000000..c39c608ed
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testUnknown.png differ
diff --git a/src/main/resources/icons/runConfigurations/testUnknown@2x.png b/src/main/resources/icons/runConfigurations/testUnknown@2x.png
new file mode 100644
index 000000000..fd409de34
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/testUnknown@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/trackCoverage.png b/src/main/resources/icons/runConfigurations/trackCoverage.png
new file mode 100644
index 000000000..5f4f22eb6
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/trackCoverage.png differ
diff --git a/src/main/resources/icons/runConfigurations/trackCoverage@2x.png b/src/main/resources/icons/runConfigurations/trackCoverage@2x.png
new file mode 100644
index 000000000..427671386
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/trackCoverage@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/trackTests.png b/src/main/resources/icons/runConfigurations/trackTests.png
new file mode 100644
index 000000000..a76eff43a
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/trackTests.png differ
diff --git a/src/main/resources/icons/runConfigurations/trackTests@2x.png b/src/main/resources/icons/runConfigurations/trackTests@2x.png
new file mode 100644
index 000000000..f6b1ad4f8
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/trackTests@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/unknown.png b/src/main/resources/icons/runConfigurations/unknown.png
new file mode 100644
index 000000000..b344ffd51
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/unknown.png differ
diff --git a/src/main/resources/icons/runConfigurations/unknown@2x.png b/src/main/resources/icons/runConfigurations/unknown@2x.png
new file mode 100644
index 000000000..0bf9617d5
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/unknown@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/variables.png b/src/main/resources/icons/runConfigurations/variables.png
new file mode 100644
index 000000000..54c4e96c4
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/variables.png differ
diff --git a/src/main/resources/icons/runConfigurations/variables@2x.png b/src/main/resources/icons/runConfigurations/variables@2x.png
new file mode 100644
index 000000000..c010beb31
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/variables@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/web_app.png b/src/main/resources/icons/runConfigurations/web_app.png
new file mode 100644
index 000000000..d4491f143
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/web_app.png differ
diff --git a/src/main/resources/icons/runConfigurations/web_app@2x.png b/src/main/resources/icons/runConfigurations/web_app@2x.png
new file mode 100644
index 000000000..2f195933a
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/web_app@2x.png differ
diff --git a/src/main/resources/icons/runConfigurations/withCoverageLayer.png b/src/main/resources/icons/runConfigurations/withCoverageLayer.png
new file mode 100644
index 000000000..211496c42
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/withCoverageLayer.png differ
diff --git a/src/main/resources/icons/runConfigurations/withCoverageLayer@2x.png b/src/main/resources/icons/runConfigurations/withCoverageLayer@2x.png
new file mode 100644
index 000000000..1b65736ff
Binary files /dev/null and b/src/main/resources/icons/runConfigurations/withCoverageLayer@2x.png differ
diff --git a/src/main/resources/icons/toolbar/filterdups.png b/src/main/resources/icons/toolbar/filterdups.png
new file mode 100644
index 000000000..25d8214d0
Binary files /dev/null and b/src/main/resources/icons/toolbar/filterdups.png differ
diff --git a/src/main/resources/icons/toolbar/filterdups@2x.png b/src/main/resources/icons/toolbar/filterdups@2x.png
new file mode 100644
index 000000000..4368986b8
Binary files /dev/null and b/src/main/resources/icons/toolbar/filterdups@2x.png differ
diff --git a/src/main/resources/icons/toolbar/folders.png b/src/main/resources/icons/toolbar/folders.png
new file mode 100644
index 000000000..a81650967
Binary files /dev/null and b/src/main/resources/icons/toolbar/folders.png differ
diff --git a/src/main/resources/icons/toolbar/folders@2x.png b/src/main/resources/icons/toolbar/folders@2x.png
new file mode 100644
index 000000000..314568111
Binary files /dev/null and b/src/main/resources/icons/toolbar/folders@2x.png differ
diff --git a/src/main/resources/icons/toolbar/unknown.png b/src/main/resources/icons/toolbar/unknown.png
new file mode 100644
index 000000000..d3eee93f6
Binary files /dev/null and b/src/main/resources/icons/toolbar/unknown.png differ
diff --git a/src/main/resources/icons/toolbar/unknown@2x.png b/src/main/resources/icons/toolbar/unknown@2x.png
new file mode 100644
index 000000000..64854e70f
Binary files /dev/null and b/src/main/resources/icons/toolbar/unknown@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/add.png b/src/main/resources/icons/toolbarDecorator/add.png
new file mode 100644
index 000000000..771ce66e2
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/add.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/add@2x.png b/src/main/resources/icons/toolbarDecorator/add@2x.png
new file mode 100644
index 000000000..34edf866e
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/add@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/edit.png b/src/main/resources/icons/toolbarDecorator/edit.png
new file mode 100644
index 000000000..77fb68a58
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/edit.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/edit@2x.png b/src/main/resources/icons/toolbarDecorator/edit@2x.png
new file mode 100644
index 000000000..22b9c8f05
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/edit@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/export.png b/src/main/resources/icons/toolbarDecorator/export.png
new file mode 100644
index 000000000..fd1e4d46c
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/export.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/export@2x.png b/src/main/resources/icons/toolbarDecorator/export@2x.png
new file mode 100644
index 000000000..bb215a1ce
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/export@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/import.png b/src/main/resources/icons/toolbarDecorator/import.png
new file mode 100644
index 000000000..31afdab11
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/import.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/import@2x.png b/src/main/resources/icons/toolbarDecorator/import@2x.png
new file mode 100644
index 000000000..ae5bb3f40
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/import@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/add.png b/src/main/resources/icons/toolbarDecorator/mac/add.png
new file mode 100644
index 000000000..771ce66e2
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/add.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/add@2x.png b/src/main/resources/icons/toolbarDecorator/mac/add@2x.png
new file mode 100644
index 000000000..34edf866e
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/add@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/edit.png b/src/main/resources/icons/toolbarDecorator/mac/edit.png
new file mode 100644
index 000000000..77fb68a58
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/edit.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/edit@2x.png b/src/main/resources/icons/toolbarDecorator/mac/edit@2x.png
new file mode 100644
index 000000000..22b9c8f05
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/edit@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/export.png b/src/main/resources/icons/toolbarDecorator/mac/export.png
new file mode 100644
index 000000000..fd1e4d46c
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/export.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/export@2x.png b/src/main/resources/icons/toolbarDecorator/mac/export@2x.png
new file mode 100644
index 000000000..bb215a1ce
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/export@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/import.png b/src/main/resources/icons/toolbarDecorator/mac/import.png
new file mode 100644
index 000000000..f38a3aa43
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/import.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/import@2x.png b/src/main/resources/icons/toolbarDecorator/mac/import@2x.png
new file mode 100644
index 000000000..eb39a3251
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/import@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/moveDown.png b/src/main/resources/icons/toolbarDecorator/mac/moveDown.png
new file mode 100644
index 000000000..0cbc9be13
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/moveDown.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/moveDown@2x.png b/src/main/resources/icons/toolbarDecorator/mac/moveDown@2x.png
new file mode 100644
index 000000000..48eff5188
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/moveDown@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/moveUp.png b/src/main/resources/icons/toolbarDecorator/mac/moveUp.png
new file mode 100644
index 000000000..d112c5419
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/moveUp.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/moveUp@2x.png b/src/main/resources/icons/toolbarDecorator/mac/moveUp@2x.png
new file mode 100644
index 000000000..7ac48b3c5
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/moveUp@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/remove.png b/src/main/resources/icons/toolbarDecorator/mac/remove.png
new file mode 100644
index 000000000..88c1ffe5b
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/remove.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/mac/remove@2x.png b/src/main/resources/icons/toolbarDecorator/mac/remove@2x.png
new file mode 100644
index 000000000..c1fc86a4c
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/mac/remove@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/moveDown.png b/src/main/resources/icons/toolbarDecorator/moveDown.png
new file mode 100644
index 000000000..0cbc9be13
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/moveDown.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/moveDown@2x.png b/src/main/resources/icons/toolbarDecorator/moveDown@2x.png
new file mode 100644
index 000000000..48eff5188
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/moveDown@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/moveUp.png b/src/main/resources/icons/toolbarDecorator/moveUp.png
new file mode 100644
index 000000000..d112c5419
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/moveUp.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/moveUp@2x.png b/src/main/resources/icons/toolbarDecorator/moveUp@2x.png
new file mode 100644
index 000000000..7ac48b3c5
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/moveUp@2x.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/remove.png b/src/main/resources/icons/toolbarDecorator/remove.png
new file mode 100644
index 000000000..88c1ffe5b
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/remove.png differ
diff --git a/src/main/resources/icons/toolbarDecorator/remove@2x.png b/src/main/resources/icons/toolbarDecorator/remove@2x.png
new file mode 100644
index 000000000..c1fc86a4c
Binary files /dev/null and b/src/main/resources/icons/toolbarDecorator/remove@2x.png differ
diff --git a/src/main/resources/icons/toolwindows/documentation.png b/src/main/resources/icons/toolwindows/documentation.png
new file mode 100644
index 000000000..11ba472a9
Binary files /dev/null and b/src/main/resources/icons/toolwindows/documentation.png differ
diff --git a/src/main/resources/icons/toolwindows/documentation@2x.png b/src/main/resources/icons/toolwindows/documentation@2x.png
new file mode 100644
index 000000000..64506491e
Binary files /dev/null and b/src/main/resources/icons/toolwindows/documentation@2x.png differ
diff --git a/src/main/resources/icons/toolwindows/problems.png b/src/main/resources/icons/toolwindows/problems.png
new file mode 100644
index 000000000..52e389d83
Binary files /dev/null and b/src/main/resources/icons/toolwindows/problems.png differ
diff --git a/src/main/resources/icons/toolwindows/problems@2x.png b/src/main/resources/icons/toolwindows/problems@2x.png
new file mode 100644
index 000000000..18072f3b8
Binary files /dev/null and b/src/main/resources/icons/toolwindows/problems@2x.png differ
diff --git a/src/main/resources/icons/toolwindows/toolWindowCoverage.png b/src/main/resources/icons/toolwindows/toolWindowCoverage.png
new file mode 100644
index 000000000..7428cbe13
Binary files /dev/null and b/src/main/resources/icons/toolwindows/toolWindowCoverage.png differ
diff --git a/src/main/resources/icons/toolwindows/toolWindowCoverage@2x.png b/src/main/resources/icons/toolwindows/toolWindowCoverage@2x.png
new file mode 100644
index 000000000..7ff13da38
Binary files /dev/null and b/src/main/resources/icons/toolwindows/toolWindowCoverage@2x.png differ
diff --git a/src/main/resources/icons/toolwindows/toolWindowCvs.png b/src/main/resources/icons/toolwindows/toolWindowCvs.png
new file mode 100644
index 000000000..1a3fe59ca
Binary files /dev/null and b/src/main/resources/icons/toolwindows/toolWindowCvs.png differ
diff --git a/src/main/resources/icons/toolwindows/toolWindowCvs@2x.png b/src/main/resources/icons/toolwindows/toolWindowCvs@2x.png
new file mode 100644
index 000000000..c913759a6
Binary files /dev/null and b/src/main/resources/icons/toolwindows/toolWindowCvs@2x.png differ
diff --git a/src/main/resources/icons/toolwindows/toolWindowMessages.png b/src/main/resources/icons/toolwindows/toolWindowMessages.png
new file mode 100644
index 000000000..509bbc487
Binary files /dev/null and b/src/main/resources/icons/toolwindows/toolWindowMessages.png differ
diff --git a/src/main/resources/icons/toolwindows/toolWindowMessages@2x.png b/src/main/resources/icons/toolwindows/toolWindowMessages@2x.png
new file mode 100644
index 000000000..5da261e80
Binary files /dev/null and b/src/main/resources/icons/toolwindows/toolWindowMessages@2x.png differ
diff --git a/src/main/resources/icons/toolwindows/toolWindowModuleDependencies.png b/src/main/resources/icons/toolwindows/toolWindowModuleDependencies.png
new file mode 100644
index 000000000..68dce6331
Binary files /dev/null and b/src/main/resources/icons/toolwindows/toolWindowModuleDependencies.png differ
diff --git a/src/main/resources/icons/toolwindows/toolWindowModuleDependencies@2x.png b/src/main/resources/icons/toolwindows/toolWindowModuleDependencies@2x.png
new file mode 100644
index 000000000..369f5c868
Binary files /dev/null and b/src/main/resources/icons/toolwindows/toolWindowModuleDependencies@2x.png differ
diff --git a/src/main/resources/icons/toolwindows/toolWindowPreview.png b/src/main/resources/icons/toolwindows/toolWindowPreview.png
new file mode 100644
index 000000000..d505a80a8
Binary files /dev/null and b/src/main/resources/icons/toolwindows/toolWindowPreview.png differ
diff --git a/src/main/resources/icons/toolwindows/toolWindowPreview@2x.png b/src/main/resources/icons/toolwindows/toolWindowPreview@2x.png
new file mode 100644
index 000000000..897c4d7ad
Binary files /dev/null and b/src/main/resources/icons/toolwindows/toolWindowPreview@2x.png differ
diff --git a/src/main/resources/icons/toolwindows/vcsSmallTab.png b/src/main/resources/icons/toolwindows/vcsSmallTab.png
new file mode 100644
index 000000000..428105ddc
Binary files /dev/null and b/src/main/resources/icons/toolwindows/vcsSmallTab.png differ
diff --git a/src/main/resources/icons/toolwindows/vcsSmallTab@2x.png b/src/main/resources/icons/toolwindows/vcsSmallTab@2x.png
new file mode 100644
index 000000000..62133a8f0
Binary files /dev/null and b/src/main/resources/icons/toolwindows/vcsSmallTab@2x.png differ
diff --git a/src/main/resources/icons/toolwindows/webToolWindow.png b/src/main/resources/icons/toolwindows/webToolWindow.png
new file mode 100644
index 000000000..3ba84cbdb
Binary files /dev/null and b/src/main/resources/icons/toolwindows/webToolWindow.png differ
diff --git a/src/main/resources/icons/toolwindows/webToolWindow@2x.png b/src/main/resources/icons/toolwindows/webToolWindow@2x.png
new file mode 100644
index 000000000..1741bf6fa
Binary files /dev/null and b/src/main/resources/icons/toolwindows/webToolWindow@2x.png differ
diff --git a/src/main/resources/icons/vcs/ShowUnversionedFiles.png b/src/main/resources/icons/vcs/ShowUnversionedFiles.png
new file mode 100644
index 000000000..d3af89196
Binary files /dev/null and b/src/main/resources/icons/vcs/ShowUnversionedFiles.png differ
diff --git a/src/main/resources/icons/vcs/ShowUnversionedFiles@2x.png b/src/main/resources/icons/vcs/ShowUnversionedFiles@2x.png
new file mode 100644
index 000000000..c7aeaddb6
Binary files /dev/null and b/src/main/resources/icons/vcs/ShowUnversionedFiles@2x.png differ
diff --git a/src/main/resources/icons/vcs/history.png b/src/main/resources/icons/vcs/history.png
index ae9eb8bbd..9d309dcac 100644
Binary files a/src/main/resources/icons/vcs/history.png and b/src/main/resources/icons/vcs/history.png differ
diff --git a/src/main/resources/icons/vcs/history@2x.png b/src/main/resources/icons/vcs/history@2x.png
index 08dc6523f..b6dce8243 100644
Binary files a/src/main/resources/icons/vcs/history@2x.png and b/src/main/resources/icons/vcs/history@2x.png differ
diff --git a/src/main/resources/icons/vcs/history_dark.png b/src/main/resources/icons/vcs/history_dark.png
new file mode 100644
index 000000000..ae9eb8bbd
Binary files /dev/null and b/src/main/resources/icons/vcs/history_dark.png differ
diff --git a/src/main/resources/icons/vcs/history_dark@2x.png b/src/main/resources/icons/vcs/history_dark@2x.png
new file mode 100644
index 000000000..08dc6523f
Binary files /dev/null and b/src/main/resources/icons/vcs/history_dark@2x.png differ
diff --git a/src/main/resources/icons/vcs/push.png b/src/main/resources/icons/vcs/push.png
new file mode 100644
index 000000000..df9afe078
Binary files /dev/null and b/src/main/resources/icons/vcs/push.png differ
diff --git a/src/main/resources/icons/vcs/push@2x.png b/src/main/resources/icons/vcs/push@2x.png
new file mode 100644
index 000000000..e99fd1b60
Binary files /dev/null and b/src/main/resources/icons/vcs/push@2x.png differ
diff --git a/src/main/resources/icons/vcs/resetStrip.png b/src/main/resources/icons/vcs/resetStrip.png
new file mode 100644
index 000000000..47615bd4a
Binary files /dev/null and b/src/main/resources/icons/vcs/resetStrip.png differ
diff --git a/src/main/resources/icons/vcs/resetStrip@2x.png b/src/main/resources/icons/vcs/resetStrip@2x.png
new file mode 100644
index 000000000..2310d7efd
Binary files /dev/null and b/src/main/resources/icons/vcs/resetStrip@2x.png differ
diff --git a/src/main/resources/icons/vcs/restoreDefaultSize.png b/src/main/resources/icons/vcs/restoreDefaultSize.png
new file mode 100644
index 000000000..699d60603
Binary files /dev/null and b/src/main/resources/icons/vcs/restoreDefaultSize.png differ
diff --git a/src/main/resources/icons/vcs/restoreDefaultSize@2x.png b/src/main/resources/icons/vcs/restoreDefaultSize@2x.png
new file mode 100644
index 000000000..9102dec38
Binary files /dev/null and b/src/main/resources/icons/vcs/restoreDefaultSize@2x.png differ
diff --git a/src/main/resources/icons/vcs/stripDown.png b/src/main/resources/icons/vcs/stripDown.png
new file mode 100644
index 000000000..0f4133672
Binary files /dev/null and b/src/main/resources/icons/vcs/stripDown.png differ
diff --git a/src/main/resources/icons/vcs/stripDown@2x.png b/src/main/resources/icons/vcs/stripDown@2x.png
new file mode 100644
index 000000000..340aa6653
Binary files /dev/null and b/src/main/resources/icons/vcs/stripDown@2x.png differ
diff --git a/src/main/resources/icons/vcs/stripNull.png b/src/main/resources/icons/vcs/stripNull.png
new file mode 100644
index 000000000..0528011b6
Binary files /dev/null and b/src/main/resources/icons/vcs/stripNull.png differ
diff --git a/src/main/resources/icons/vcs/stripNull@2x.png b/src/main/resources/icons/vcs/stripNull@2x.png
new file mode 100644
index 000000000..c2144e504
Binary files /dev/null and b/src/main/resources/icons/vcs/stripNull@2x.png differ
diff --git a/src/main/resources/icons/vcs/stripUp.png b/src/main/resources/icons/vcs/stripUp.png
new file mode 100644
index 000000000..33d1e84c4
Binary files /dev/null and b/src/main/resources/icons/vcs/stripUp.png differ
diff --git a/src/main/resources/icons/vcs/stripUp@2x.png b/src/main/resources/icons/vcs/stripUp@2x.png
new file mode 100644
index 000000000..540ec502d
Binary files /dev/null and b/src/main/resources/icons/vcs/stripUp@2x.png differ
diff --git a/src/main/resources/icons/webreferences/server.png b/src/main/resources/icons/webreferences/server.png
new file mode 100644
index 000000000..54ff14b5d
Binary files /dev/null and b/src/main/resources/icons/webreferences/server.png differ
diff --git a/src/main/resources/icons/webreferences/server@2x.png b/src/main/resources/icons/webreferences/server@2x.png
new file mode 100644
index 000000000..09cacf181
Binary files /dev/null and b/src/main/resources/icons/webreferences/server@2x.png differ
diff --git a/src/main/resources/icons/welcome/CreateNewProjectfromExistingFiles.png b/src/main/resources/icons/welcome/CreateNewProjectfromExistingFiles.png
new file mode 100644
index 000000000..31ab88def
Binary files /dev/null and b/src/main/resources/icons/welcome/CreateNewProjectfromExistingFiles.png differ
diff --git a/src/main/resources/icons/welcome/CreateNewProjectfromExistingFiles@2x.png b/src/main/resources/icons/welcome/CreateNewProjectfromExistingFiles@2x.png
new file mode 100644
index 000000000..d0f245160
Binary files /dev/null and b/src/main/resources/icons/welcome/CreateNewProjectfromExistingFiles@2x.png differ
diff --git a/src/main/resources/icons/welcome/createDesktopEntry.png b/src/main/resources/icons/welcome/createDesktopEntry.png
new file mode 100644
index 000000000..9ad775a5c
Binary files /dev/null and b/src/main/resources/icons/welcome/createDesktopEntry.png differ
diff --git a/src/main/resources/icons/welcome/createDesktopEntry@2x.png b/src/main/resources/icons/welcome/createDesktopEntry@2x.png
new file mode 100644
index 000000000..eed42ed06
Binary files /dev/null and b/src/main/resources/icons/welcome/createDesktopEntry@2x.png differ
diff --git a/src/main/resources/icons/welcome/fromVCS.png b/src/main/resources/icons/welcome/fromVCS.png
new file mode 100644
index 000000000..ef8c03403
Binary files /dev/null and b/src/main/resources/icons/welcome/fromVCS.png differ
diff --git a/src/main/resources/icons/welcome/fromVCS@2x.png b/src/main/resources/icons/welcome/fromVCS@2x.png
new file mode 100644
index 000000000..48add6f2f
Binary files /dev/null and b/src/main/resources/icons/welcome/fromVCS@2x.png differ
diff --git a/src/main/resources/icons/welcome/register.png b/src/main/resources/icons/welcome/register.png
new file mode 100644
index 000000000..5c1dbd09c
Binary files /dev/null and b/src/main/resources/icons/welcome/register.png differ
diff --git a/src/main/resources/icons/welcome/register@2x.png b/src/main/resources/icons/welcome/register@2x.png
new file mode 100644
index 000000000..ccb93540d
Binary files /dev/null and b/src/main/resources/icons/welcome/register@2x.png differ
diff --git a/src/main/resources/messages/MaterialThemeBundle.properties b/src/main/resources/messages/MaterialThemeBundle.properties
index 06223e571..1ec2bb906 100644
--- a/src/main/resources/messages/MaterialThemeBundle.properties
+++ b/src/main/resources/messages/MaterialThemeBundle.properties
@@ -41,9 +41,12 @@ mt.iswallpaperset=Custom Wallpaper
MTForm.activeTabHighlightCheckbox.text=Active Tab Highlight Color
MTForm.isCompactStatusBar.tooltip=Set the regular compact statusbar
MTForm.isCompactStatusbarCheckbox.text=Compact Statusbar
+MTForm.customAccentColorLabel.text=Custom Accent Color
+MTForm.customAccentColorLabel.toolTipText=Set a custom color for "Custom Accent" accent
MTForm.customTreeIndentCheckbox.text=Custom Tree Indent
MTForm.customTreeIndentCheckbox.toolTipText=Set a custom tree indent
MTForm.customIndentSpinner.toolTipText=Set Custom Tree Indent
+MTForm.customSidebarSpinner.toolTipText=Set Custom Tree Indent
MTForm.themedScrollbarsCheckbox.text=Themed Scrollbars
MTForm.themedScrollbarsCheckbox.toolTipText=Theme the scrollbars
MTForm.customBg.label=Set a custom wallpaper for the "no files opened" screen.
@@ -53,10 +56,12 @@ MTForm.customBg.restoreBtn=Restore
MTForm.customBg.restoreBtn.tooltip=Restore default background
MTForm.hideFileIcons=Hide File Icons
MTForm.hideFileIcons.tooltip=Check this option to hide file icons
-MTForm.isCompactSidebarCheckbox.text=Compact Sidebar
+MTForm.isCompactSidebarCheckbox.text=Custom Sidebar Height
MTForm.isCompactSidebarCheckbox.toolTipText=Reduce line height between Project View Items
MTForm.materialThemeCheckbox.text=Material Theme
MTForm.materialThemeCheckbox.toolTipText=Enable/Disable Material Theme
+MTForm.isUpperCaseTabsCheckbox.text=Uppercase Bold Tabs
+MTForm.isUpperCaseTabsCheckbox.toolTipText=Set tabs in Uppercase Bold
MTForm.isWallpaperSetCheckbox.label=Contrast Mode
MTForm.isWallpaperSetCheckbox.text=Set Custom Wallpaper
MTForm.isMaterialDesignCheckbox.label=Material Design Components