Added state reset
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / PHPLanguagePreferencePage.java
1 package net.sourceforge.phpeclipse;
2
3 import java.util.ArrayList;
4
5 import net.sourceforge.phpeclipse.preferences.PHPPreferencesMessages;
6
7 import org.eclipse.jface.preference.IPreferenceStore;
8 import org.eclipse.jface.preference.PreferencePage;
9 import org.eclipse.swt.SWT;
10 import org.eclipse.swt.layout.GridData;
11 import org.eclipse.swt.layout.GridLayout;
12 import org.eclipse.swt.widgets.Button;
13 import org.eclipse.swt.widgets.Composite;
14 import org.eclipse.swt.widgets.Control;
15 import org.eclipse.swt.widgets.Group;
16 import org.eclipse.swt.widgets.Label;
17 import org.eclipse.ui.IWorkbench;
18 import org.eclipse.ui.IWorkbenchPreferencePage;
19
20 public class PHPLanguagePreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
21   private ArrayList RadioButtons = new ArrayList();
22
23   protected Control createContents(Composite parent) {
24     Composite lingoComposite = new Composite(parent, SWT.NULL);
25     lingoComposite.setLayout(new GridLayout());
26     Group lingoGroup = new Group(lingoComposite, SWT.NONE);
27     lingoGroup.setText(PHPPreferencesMessages.getString("PHPLanguagePreferencePage.preflingo"));
28     lingoGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
29     lingoGroup.setLayout(new GridLayout());
30     Label lg = new Label(lingoGroup, SWT.WRAP);
31     lg.setText(PHPPreferencesMessages.getString("PHPLanguagePreferencePage.choose"));
32     addRadioButton(lingoGroup, PHPPreferencesMessages.getString("PHPLanguagePreferencePage.english"), IPreferenceConstants.RESOURCE_BUNDLE, IPreferenceConstants.RESOURCE_BUNDLE_EN_GB); //$NON-NLS-1$
33     addRadioButton(lingoGroup, PHPPreferencesMessages.getString("PHPLanguagePreferencePage.german"), IPreferenceConstants.RESOURCE_BUNDLE, IPreferenceConstants.RESOURCE_BUNDLE_DE); //$NON-NLS-1$
34     addRadioButton(lingoGroup, PHPPreferencesMessages.getString("PHPLanguagePreferencePage.french"), IPreferenceConstants.RESOURCE_BUNDLE, IPreferenceConstants.RESOURCE_BUNDLE_FR); //$NON-NLS-1$
35     addRadioButton(lingoGroup, PHPPreferencesMessages.getString("PHPLanguagePreferencePage.spanish"), IPreferenceConstants.RESOURCE_BUNDLE, IPreferenceConstants.RESOURCE_BUNDLE_ES); //$NON-NLS-1$
36     return lingoComposite;
37   }
38   public void init(IWorkbench arg0) {
39   }
40   private Button addRadioButton(Composite parent, String label, String key, String value) {
41     GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
42     Button button = new Button(parent, SWT.RADIO);
43     button.setText(label);
44     button.setData(new String[] { key, value });
45     button.setLayoutData(gd);
46     button.setSelection(value.equals(PHPeclipsePlugin.getDefault().getPreferenceStore().getString(key)));
47     RadioButtons.add(button);
48     return button;
49   }
50
51   protected void performDefaults() {
52     IPreferenceStore store = getPreferenceStore();
53     for (int i = 0; i < RadioButtons.size(); i++) {
54       Button button = (Button) RadioButtons.get(i);
55       String[] info = (String[]) button.getData();
56       button.setSelection(info[1].equals(store.getDefaultString(info[0])));
57     }
58     super.performDefaults();
59   }
60
61   public boolean performOk() {
62     IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
63     for (int i = 0; i < RadioButtons.size(); i++) {
64       Button button = (Button) RadioButtons.get(i);
65       if (button.getSelection()) {
66         String[] info = (String[]) button.getData();
67         store.setValue(info[0], info[1]);
68       }
69     }
70     PHPeclipsePlugin.getDefault().savePluginPreferences();
71     PHPPreferencesMessages.setResourceBundle(
72       PHPeclipsePlugin.getDefault().getPreferenceStore().getString(IPreferenceConstants.RESOURCE_BUNDLE));
73
74     return super.performOk();
75   }
76 }