Config editor through XML file
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / PHPEclipseBasePreferencePage.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPEclipseBasePreferencePage.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPEclipseBasePreferencePage.java
new file mode 100644 (file)
index 0000000..5b9af53
--- /dev/null
@@ -0,0 +1,208 @@
+package net.sourceforge.phpeclipse;
+
+import java.util.ArrayList;
+
+import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.jface.preference.DirectoryFieldEditor;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.preference.RadioGroupFieldEditor;
+import org.eclipse.jface.preference.StringFieldEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import net.sourceforge.phpeclipse.preferences.PHPPreferencesMessages;
+
+public class PHPEclipseBasePreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
+
+  private SelectionListener SelectionListener;
+  private ModifyListener ModifyListener;
+  private ModifyListener TextModifyListener;
+
+  private ArrayList CheckBoxes = new ArrayList();
+  private ArrayList ComboBoxes = new ArrayList();
+  private ArrayList TextBoxes = new ArrayList();
+  private ArrayList RadioButtons = new ArrayList();
+
+  StringFieldEditor localHostSFE;
+  DirectoryFieldEditor documentRootDFE;
+  BooleanFieldEditor externalBrowserBFE;
+  StringFieldEditor externalBrowserSFE;
+  StringFieldEditor apacheStartSFE;
+  StringFieldEditor apacheStopSFE;
+  StringFieldEditor apacheRestartSFE;
+  StringFieldEditor mySQLCommandSFE;
+  RadioGroupFieldEditor chooseParser;
+  BooleanFieldEditor parseOnSave;
+
+  public PHPEclipseBasePreferencePage() {
+    super();
+    setPreferenceStore(PHPeclipsePlugin.getDefault().getPreferenceStore());
+    setDescription(PHPPreferencesMessages.getString("PHPBasePreferencePage.description")); //$NON-NLS-1$
+  }
+  public void init(IWorkbench workbench) {
+  }
+  protected void performDefaults() {
+    localHostSFE.loadDefault();
+    documentRootDFE.loadDefault();
+    externalBrowserBFE.loadDefault();
+    externalBrowserSFE.loadDefault();
+    apacheStartSFE.loadDefault();
+    apacheStopSFE.loadDefault();
+    apacheRestartSFE.loadDefault();
+    mySQLCommandSFE.loadDefault();
+    chooseParser.loadDefault();
+    parseOnSave.loadDefault();
+    super.performDefaults();
+  }
+
+  public boolean performOk() {
+    localHostSFE.store();
+    documentRootDFE.store();
+    externalBrowserBFE.store();
+    externalBrowserSFE.store();
+    apacheStartSFE.store();
+    apacheStopSFE.store();
+    apacheRestartSFE.store();
+    mySQLCommandSFE.store();
+    chooseParser.store();
+    parseOnSave.store();
+    return super.performOk();
+  }
+
+  protected Control createContents(Composite parent) {
+    initializeDialogUnits(parent);
+    final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
+    Composite composite = new Composite(parent, SWT.LEFT);
+    composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+    composite.setLayout(new GridLayout());
+    //Create Websettings
+    Composite webSettingsComposite = new Composite(composite, SWT.NONE);
+    webSettingsComposite.setLayout(new GridLayout());
+    webSettingsComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+    Group webSettingsGroup = new Group(webSettingsComposite, SWT.NONE);
+    webSettingsGroup.setText(PHPPreferencesMessages.getString("PHPBasePreferencePage.websettingsGroup"));
+    webSettingsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+    webSettingsGroup.setLayout(new GridLayout());
+    localHostSFE =
+      new StringFieldEditor(
+        IPreferenceConstants.LOCALHOST_PREF,
+        PHPPreferencesMessages.getString("PHPBasePreferencePage.websettingsGroup.localhost"),
+        webSettingsGroup);
+    localHostSFE.setPreferencePage(this);
+    localHostSFE.setPreferenceStore(getPreferenceStore());
+    localHostSFE.load();
+    documentRootDFE =
+      new DirectoryFieldEditor(
+        IPreferenceConstants.DOCUMENTROOT_PREF,
+        PHPPreferencesMessages.getString("PHPBasePreferencePage.websettingsGroup.docroot"),
+        webSettingsGroup);
+    documentRootDFE.setPreferencePage(this);
+    documentRootDFE.setPreferenceStore(getPreferenceStore());
+    documentRootDFE.load();
+    externalBrowserBFE =
+      new BooleanFieldEditor(
+        IPreferenceConstants.USE_EXTERNAL_BROWSER_PREF,
+        PHPPreferencesMessages.getString("PHPBasePreferencePage.websettingsGroup.useexternal"),
+        webSettingsGroup);
+    externalBrowserBFE.setPreferencePage(this);
+    externalBrowserBFE.setPreferenceStore(getPreferenceStore());
+    externalBrowserBFE.load();
+    externalBrowserSFE =
+      new StringFieldEditor(
+        IPreferenceConstants.EXTERNAL_BROWSER_PREF,
+        PHPPreferencesMessages.getString("PHPBasePreferencePage.websettingsGroup.browser"),
+        webSettingsGroup);
+    externalBrowserSFE.setPreferencePage(this);
+    externalBrowserSFE.setPreferenceStore(getPreferenceStore());
+    externalBrowserSFE.load();
+
+    //Create apache
+    Composite apacheSettingsComposite = new Composite(composite, SWT.NULL);
+    apacheSettingsComposite.setLayout(new GridLayout());
+    apacheSettingsComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+    Group apacheSettingsGroup = new Group(apacheSettingsComposite, SWT.NONE);
+    apacheSettingsGroup.setText(PHPPreferencesMessages.getString("PHPBasePreferencePage.apacheGroup"));
+    apacheSettingsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+    apacheSettingsGroup.setLayout(new GridLayout());
+    apacheStartSFE =
+      new StringFieldEditor(
+        IPreferenceConstants.APACHE_START_PREF,
+        PHPPreferencesMessages.getString("PHPBasePreferencePage.apacheGroup.start"),
+        apacheSettingsGroup);
+    apacheStartSFE.setPreferencePage(this);
+    apacheStartSFE.setPreferenceStore(getPreferenceStore());
+    apacheStartSFE.load();
+    apacheStopSFE =
+      new StringFieldEditor(
+        IPreferenceConstants.APACHE_STOP_PREF,
+        PHPPreferencesMessages.getString("PHPBasePreferencePage.apacheGroup.stop"),
+        apacheSettingsGroup);
+    apacheStopSFE.setPreferencePage(this);
+    apacheStopSFE.setPreferenceStore(getPreferenceStore());
+    apacheStopSFE.load();
+    apacheRestartSFE =
+      new StringFieldEditor(
+        IPreferenceConstants.APACHE_RESTART_PREF,
+        PHPPreferencesMessages.getString("PHPBasePreferencePage.apacheGroup.restart"),
+        apacheSettingsGroup);
+    apacheRestartSFE.setPreferencePage(this);
+    apacheRestartSFE.setPreferenceStore(getPreferenceStore());
+    apacheRestartSFE.load();
+
+    //Create mySQL
+    Composite mySQLSettingsComposite = new Composite(composite, SWT.NULL);
+    mySQLSettingsComposite.setLayout(new GridLayout());
+    mySQLSettingsComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+    Group mySQLSettingsGroup = new Group(mySQLSettingsComposite, SWT.NONE);
+    mySQLSettingsGroup.setText(PHPPreferencesMessages.getString("PHPBasePreferencePage.mySQLGroup"));
+    mySQLSettingsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+    mySQLSettingsGroup.setLayout(new GridLayout());
+    mySQLCommandSFE =
+      new StringFieldEditor(
+        IPreferenceConstants.MYSQL_PREF,
+        PHPPreferencesMessages.getString("PHPBasePreferencePage.mySQLGroup.command"),
+        mySQLSettingsGroup);
+    mySQLCommandSFE.setPreferencePage(this);
+    mySQLCommandSFE.setPreferenceStore(getPreferenceStore());
+    mySQLCommandSFE.load();
+
+    //Create parser settings composite
+    Composite parserSettingsComposite = new Composite(composite, SWT.NONE);
+    parserSettingsComposite.setLayout(new GridLayout());
+    parserSettingsComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+    Group parserSettingsGroup = new Group(parserSettingsComposite, SWT.NONE);
+    parserSettingsGroup.setText(PHPPreferencesMessages.getString("PHPBasePreferencePage.parsers"));
+    parserSettingsGroup.setLayout(new GridLayout());
+    parserSettingsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+    chooseParser =
+      new RadioGroupFieldEditor(
+        IPreferenceConstants.PHP_PARSER_DEFAULT,
+        PHPPreferencesMessages.getString("PHPBasePreferencePage.parsers.choose"),
+        1,
+        new String[][] {
+          { PHPPreferencesMessages.getString("PHPBasePreferencePage.parsers.internal"), IPreferenceConstants.PHP_INTERNAL_PARSER },
+          {
+        PHPPreferencesMessages.getString("PHPBasePreferencePage.parsers.external"), IPreferenceConstants.PHP_EXTERNAL_PARSER }
+    }, parserSettingsGroup);
+    chooseParser.setPreferencePage(this);
+    chooseParser.setPreferenceStore(getPreferenceStore());
+    chooseParser.load();
+    parseOnSave = new BooleanFieldEditor(PHPeclipsePlugin.PHP_PARSE_ON_SAVE, "&Parse automatically on save", parserSettingsGroup);
+    parseOnSave.setPreferencePage(this);
+    parseOnSave.setPreferenceStore(getPreferenceStore());
+    parseOnSave.load();
+
+    return composite;
+  }
+}