package org.asciidoc.intellij.settings; import com.intellij.util.xmlb.annotations.Attribute; import com.intellij.util.xmlb.annotations.Property; import com.intellij.util.xmlb.annotations.Tag; import org.asciidoc.intellij.editor.AsciiDocHtmlPanel; import org.asciidoc.intellij.editor.AsciiDocHtmlPanelProvider; import org.asciidoc.intellij.editor.jeditor.JeditorHtmlPanelProvider; import org.asciidoc.intellij.ui.SplitFileEditor; import org.jetbrains.annotations.NotNull; public final class AsciiDocPreviewSettings { public static final AsciiDocPreviewSettings DEFAULT = new AsciiDocPreviewSettings(); @Attribute("DefaultSplitLayout") @NotNull private SplitFileEditor.SplitEditorLayout mySplitEditorLayout = SplitFileEditor.SplitEditorLayout.SPLIT; @Tag("HtmlPanelProviderInfo") @Property(surroundWithTag = false) @NotNull private AsciiDocHtmlPanelProvider.ProviderInfo myHtmlPanelProviderInfo = JeditorHtmlPanelProvider.INFO; @Attribute("PreviewTheme") @NotNull private AsciiDocHtmlPanel.PreviewTheme myPreviewTheme = AsciiDocHtmlPanel.PreviewTheme.INTELLIJ; public AsciiDocPreviewSettings() { } public AsciiDocPreviewSettings(@NotNull SplitFileEditor.SplitEditorLayout splitEditorLayout, @NotNull AsciiDocHtmlPanelProvider.ProviderInfo htmlPanelProviderInfo, @NotNull AsciiDocHtmlPanel.PreviewTheme previewTheme) { mySplitEditorLayout = splitEditorLayout; myHtmlPanelProviderInfo = htmlPanelProviderInfo; myPreviewTheme = previewTheme; } @NotNull public SplitFileEditor.SplitEditorLayout getSplitEditorLayout() { if (mySplitEditorLayout == null) { return SplitFileEditor.SplitEditorLayout.SPLIT; } return mySplitEditorLayout; } @NotNull public AsciiDocHtmlPanel.PreviewTheme getPreviewTheme() { if (myPreviewTheme == null) { return AsciiDocHtmlPanel.PreviewTheme.INTELLIJ; } return myPreviewTheme; } @NotNull public AsciiDocHtmlPanelProvider.ProviderInfo getHtmlPanelProviderInfo() { return myHtmlPanelProviderInfo; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; AsciiDocPreviewSettings settings = (AsciiDocPreviewSettings)o; if (mySplitEditorLayout != settings.mySplitEditorLayout) return false; if (myPreviewTheme != settings.myPreviewTheme) 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 + myPreviewTheme.hashCode(); return result; } public interface Holder { void setAsciiDocPreviewSettings(@NotNull AsciiDocPreviewSettings settings); @NotNull AsciiDocPreviewSettings getAsciiDocPreviewSettings(); } }