package org.angularjs; import com.intellij.openapi.components.*; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.util.xmlb.XmlSerializerUtil; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.*; /** * Created by johnlindquist on 7/11/13. * * This class is a temporary fix until Kotlin supports nested annotations */ @State( name="AngularJS", storages= { @Storage( file = StoragePathMacros.APP_CONFIG + "/angularjs.xml" )} ) public class AngularJSConfigTemp extends AngularJSConfig implements Configurable, PersistentStateComponent<AngularJSConfig>, ApplicationComponent { @Override public void initComponent() { } @Override public void disposeComponent() { } @Nls @Override public String getDisplayName() { return "AngularJS"; } @Nullable @Override public String getHelpTopic() { return "settings.angularjs"; } @NotNull @Override public String getComponentName() { return AngularJSConfig.object$.getComponentName(); } @Nullable @Override public AngularJSConfig getState() { return this; } @Override public void loadState(AngularJSConfig state) { XmlSerializerUtil.copyBean(state, this); } @Nullable @Override public JComponent createComponent() { return null; } @Override public boolean isModified() { return false; } @Override public void apply() throws ConfigurationException { } @Override public void reset() { } @Override public void disposeUIResources() { } public static class UIImpl extends JPanel implements Configurable { private final JCheckBox addWhitespaceBetweenBraces; public UIImpl() { setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); addWhitespaceBetweenBraces = new JCheckBox("Add Whitespace Between Braces"); addWhitespaceBetweenBraces.setMnemonic('A'); addWhitespaceBetweenBraces.setSelected(AngularJSConfig.object$.getWhiteSpace()); add(addWhitespaceBetweenBraces); final JPanel jPanel = new JPanel(new BorderLayout()); jPanel.add(Box.createVerticalGlue(), BorderLayout.CENTER); final JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER)); jPanel.add(panel, BorderLayout.SOUTH); jPanel.setAlignmentX(0); add(jPanel); } @Nls public String getDisplayName() { return "AngularJS"; } @Nullable @NonNls public String getHelpTopic() { return "settings.angularjs"; } public void disposeUIResources() { } public JComponent createComponent() { return this; } public boolean isModified() { return AngularJSConfig.object$.getWhiteSpace() != addWhitespaceBetweenBraces.isSelected(); } public void apply() { boolean oldValue = AngularJSConfig.object$.getWhiteSpace(); AngularJSConfig.object$.setWhiteSpace(addWhitespaceBetweenBraces.isSelected()); // TODO: make this a ConfigListener if (oldValue != AngularJSConfig.object$.getWhiteSpace()) { } } public void reset() { } @NotNull public String getId() { return getHelpTopic(); } public Runnable enableSearch(String option) { return null; } } }