package bndtools.preferences.ui; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; 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 bndtools.preferences.JpmPreferences; public class JpmPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { private JpmPreferences prefs; private int browserSelection; @Override public void init(IWorkbench workbench) { prefs = new JpmPreferences(); browserSelection = prefs.getBrowserSelection(); } @Override public boolean performOk() { prefs.setBrowserSelection(browserSelection); return true; } @Override protected Control createContents(Composite parent) { // Create controls Composite composite = new Composite(parent, SWT.NONE); Group grpBrowser = new Group(composite, SWT.NONE); grpBrowser.setText("Browser Selection"); final Button[] btnsBrowser = new Button[JpmPreferences.PREF_BROWSER_SELECTION_CHOICES.length]; for (int i = 0; i < btnsBrowser.length; i++) { btnsBrowser[i] = new Button(grpBrowser, SWT.RADIO); btnsBrowser[i].setText(JpmPreferences.PREF_BROWSER_SELECTION_CHOICES[i]); btnsBrowser[i].setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); } // Layout composite.setLayout(new GridLayout(1, false)); grpBrowser.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); grpBrowser.setLayout(new GridLayout(1, false)); // Load data for (int i = 0; i < btnsBrowser.length; i++) { btnsBrowser[i].setSelection(i == browserSelection); } // Listeners SelectionAdapter adapter = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { int selected = 0; for (int i = 0; i < btnsBrowser.length; i++) { if (btnsBrowser[i].getSelection()) { selected = i; break; } } browserSelection = selected; updateMessages(); } }; for (int i = 0; i < btnsBrowser.length; i++) { btnsBrowser[i].addSelectionListener(adapter); } return composite; } private void updateMessages() { String warning = null; if (browserSelection != prefs.getBrowserSelection()) warning = "JPM view must be closed and reopened"; setMessage(warning, IMessageProvider.WARNING); } }