package org.intellij.plugins.markdown.settings;
import com.intellij.ide.ui.LafManager;
import com.intellij.ide.ui.LafManagerListener;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
class MarkdownLAFListener implements LafManagerListener {
private boolean isLastLAFWasDarcula = isDarcula();
@Override
public void lookAndFeelChanged(LafManager source) {
final UIManager.LookAndFeelInfo newLookAndFeel = source.getCurrentLookAndFeel();
final boolean isNewLookAndFeelDarcula = isDarcula(newLookAndFeel);
if (isNewLookAndFeelDarcula == isLastLAFWasDarcula) {
return;
}
updateCssSettingsForced(isNewLookAndFeelDarcula);
}
public void updateCssSettingsForced(boolean isDarcula) {
final MarkdownCssSettings currentCssSettings = MarkdownApplicationSettings.getInstance().getMarkdownCssSettings();
MarkdownApplicationSettings.getInstance().setMarkdownCssSettings(new MarkdownCssSettings(
currentCssSettings.isUriEnabled(),
MarkdownCssSettings.getDefaultCssSettings(isDarcula).getStylesheetUri(),
currentCssSettings.isTextEnabled(),
currentCssSettings.getStylesheetText()
));
isLastLAFWasDarcula = isDarcula;
}
public static boolean isDarcula(@Nullable UIManager.LookAndFeelInfo laf) {
if (laf == null) {
return false;
}
return laf.getName().contains("Darcula");
}
public static boolean isDarcula() {
final LafManager lafManager = LafManager.getInstance();
if (lafManager == null) {
return false;
}
return isDarcula(lafManager.getCurrentLookAndFeel());
}
}