package com.github.masahirosuzuka.PhoneGapIntelliJPlugin.ui; import com.github.masahirosuzuka.PhoneGapIntelliJPlugin.util.PhoneGapSettings; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; /** * PhoneGapSettingDialog.java * <p/> * Created by Masahiro Suzuka on 2014/05/05. */ @SuppressWarnings("UnusedDeclaration") public class PhoneGapConfigurable implements Configurable { private JTextField myPhoneGapExecutablePathField; private JTextField myNodeJSInstallDirField; private JTextField myAndroidDirField; private JTextField myIosDirField; private JPanel myComponents; private JTextField myCordovaExecutablePathField; private final PhoneGapSettings mySettings = PhoneGapSettings.getInstance(); private UIController myUIController; private class UIController { public void reset(PhoneGapSettings.State state) { myPhoneGapExecutablePathField.setText(state.phoneGapExecutablePath); myCordovaExecutablePathField.setText(state.cordovaExecutablePath); } public boolean isModified() { return !getState().equals(mySettings.getState()); } private PhoneGapSettings.State getState() { PhoneGapSettings.State state = new PhoneGapSettings.State(); state.cordovaExecutablePath = myCordovaExecutablePathField.getText(); state.phoneGapExecutablePath = myPhoneGapExecutablePathField.getText(); return state; } } @Nls @Override public String getDisplayName() { return "PhoneGap/Cordova"; } @Nullable @Override public String getHelpTopic() { return "phoneGap/cordova"; } @Nullable @Override public JComponent createComponent() { if (myUIController == null) { myUIController = new UIController(); myUIController.reset(mySettings.getState()); } return myComponents; } @Override public boolean isModified() { return myUIController.isModified(); } @Override public void apply() throws ConfigurationException { mySettings.loadState(myUIController.getState()); } @Override public void reset() { myUIController.reset(mySettings.getState()); } @Override public void disposeUIResources() { } }