package bndtools.preferences.ui; import org.eclipse.jface.fieldassist.ControlDecoration; import org.eclipse.jface.fieldassist.FieldDecorationRegistry; 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.BndPreferences; public class BndPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { public BndPreferencePage() {} public static final String PAGE_ID = "bndtools.prefPages.basic"; private boolean noCheckCnf = false; private boolean warnExistingLaunch = true; private boolean buildBeforeLaunch = true; private boolean editorOpenSourceTab = false; private boolean workspaceIsOffline = false; @Override protected Control createContents(Composite parent) { // Layout GridLayout layout; GridData gd; Composite composite = new Composite(parent, SWT.NONE); final Button btnOfflineWorkspace = new Button(composite, SWT.CHECK); btnOfflineWorkspace.setText(Messages.BndPreferencePage_btnOfflineWorkspace); ControlDecoration decoration = new ControlDecoration(btnOfflineWorkspace, SWT.RIGHT | SWT.TOP, composite); decoration.setImage(FieldDecorationRegistry.getDefault().getFieldDecoration(FieldDecorationRegistry.DEC_INFORMATION).getImage()); decoration.setDescriptionText(Messages.BndPreferencePage_decorOfflineWorkspace); // Create controls Group grpLaunching = new Group(composite, SWT.NONE); grpLaunching.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1)); grpLaunching.setText(Messages.BndPreferencePage_grpLaunching_text); grpLaunching.setLayout(new GridLayout(1, false)); final Button btnWarnExistingLaunch = new Button(grpLaunching, SWT.CHECK); btnWarnExistingLaunch.setText(Messages.BndPreferencePage_btnWarnExistingLaunch); final Button btnBuildBeforeLaunch = new Button(grpLaunching, SWT.CHECK); btnBuildBeforeLaunch.setText(Messages.BndPreferencePage_btnBuildBeforeLaunch); Group editorGroup = new Group(composite, SWT.NONE); editorGroup.setText(Messages.BndPreferencePage_editorGroup); final Button btnEditorOpenSourceTab = new Button(editorGroup, SWT.CHECK); btnEditorOpenSourceTab.setText(Messages.BndPreferencePage_btnEditorOpenSourceTab); // Load Data btnWarnExistingLaunch.setSelection(warnExistingLaunch); btnBuildBeforeLaunch.setSelection(buildBeforeLaunch); btnEditorOpenSourceTab.setSelection(editorOpenSourceTab); btnOfflineWorkspace.setSelection(workspaceIsOffline); // headless already done // versionControlIgnores already done // Listeners btnOfflineWorkspace.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { workspaceIsOffline = btnOfflineWorkspace.getSelection(); } }); btnBuildBeforeLaunch.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { buildBeforeLaunch = btnBuildBeforeLaunch.getSelection(); } }); btnWarnExistingLaunch.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { warnExistingLaunch = btnWarnExistingLaunch.getSelection(); } }); btnEditorOpenSourceTab.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { editorOpenSourceTab = btnEditorOpenSourceTab.getSelection(); } }); // headless already done // versionControlIgnores already done layout = new GridLayout(1, false); composite.setLayout(layout); gd = new GridData(SWT.FILL, SWT.FILL, true, false); editorGroup.setLayoutData(gd); layout = new GridLayout(1, false); layout.verticalSpacing = 10; editorGroup.setLayout(layout); return composite; } @Override public boolean performOk() { BndPreferences prefs = new BndPreferences(); prefs.setHideInitCnfWizard(noCheckCnf); prefs.setWarnExistingLaunch(warnExistingLaunch); prefs.setBuildBeforeLaunch(buildBeforeLaunch); prefs.setEditorOpenSourceTab(editorOpenSourceTab); prefs.setWorkspaceOffline(workspaceIsOffline); return true; } @Override public void init(IWorkbench workbench) { BndPreferences prefs = new BndPreferences(); noCheckCnf = prefs.getHideInitCnfWizard(); warnExistingLaunch = prefs.getWarnExistingLaunches(); buildBeforeLaunch = prefs.getBuildBeforeLaunch(); editorOpenSourceTab = prefs.getEditorOpenSourceTab(); workspaceIsOffline = prefs.isWorkspaceOffline(); } }