package org.intellij.plugins.markdown.settings; import com.intellij.util.xmlb.annotations.Attribute; import com.intellij.util.xmlb.annotations.Property; import com.intellij.util.xmlb.annotations.Tag; import org.intellij.plugins.markdown.ui.preview.MarkdownHtmlPanelProvider; import org.intellij.plugins.markdown.ui.preview.lobo.LoboHtmlPanelProvider; import org.intellij.plugins.markdown.ui.split.SplitFileEditor; import org.jetbrains.annotations.NotNull; public final class MarkdownPreviewSettings { public static final MarkdownPreviewSettings DEFAULT = new MarkdownPreviewSettings(); @Attribute("DefaultSplitLayout") @NotNull private SplitFileEditor.SplitEditorLayout mySplitEditorLayout = SplitFileEditor.SplitEditorLayout.SPLIT; @Tag("HtmlPanelProviderInfo") @Property(surroundWithTag = false) @NotNull private MarkdownHtmlPanelProvider.ProviderInfo myHtmlPanelProviderInfo = LoboHtmlPanelProvider.INFO; @Attribute("UseGrayscaleRendering") private boolean myUseGrayscaleRendering = false; public MarkdownPreviewSettings() { } public MarkdownPreviewSettings(@NotNull SplitFileEditor.SplitEditorLayout splitEditorLayout, @NotNull MarkdownHtmlPanelProvider.ProviderInfo htmlPanelProviderInfo, boolean useGrayscaleRendering) { mySplitEditorLayout = splitEditorLayout; myHtmlPanelProviderInfo = htmlPanelProviderInfo; myUseGrayscaleRendering = useGrayscaleRendering; } @NotNull public SplitFileEditor.SplitEditorLayout getSplitEditorLayout() { return mySplitEditorLayout; } @NotNull public MarkdownHtmlPanelProvider.ProviderInfo getHtmlPanelProviderInfo() { return myHtmlPanelProviderInfo; } public boolean isUseGrayscaleRendering() { return myUseGrayscaleRendering; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; MarkdownPreviewSettings settings = (MarkdownPreviewSettings)o; if (myUseGrayscaleRendering != settings.myUseGrayscaleRendering) return false; if (mySplitEditorLayout != settings.mySplitEditorLayout) return false; if (!myHtmlPanelProviderInfo.equals(settings.myHtmlPanelProviderInfo)) return false; return true; } @Override public int hashCode() { int result = mySplitEditorLayout.hashCode(); result = 31 * result + myHtmlPanelProviderInfo.hashCode(); result = 31 * result + (myUseGrayscaleRendering ? 1 : 0); return result; } public interface Holder { void setMarkdownPreviewSettings(@NotNull MarkdownPreviewSettings settings); @NotNull MarkdownPreviewSettings getMarkdownPreviewSettings(); } }