/* * Copyright 2017 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.ide.eclipse.main.plugin.preferences; import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Link; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.ui.dialogs.PreferencesUtil; import org.eclipse.ui.preferences.ScopedPreferenceStore; import org.robotframework.ide.eclipse.main.plugin.RedPlugin; import org.robotframework.ide.eclipse.main.plugin.RedPreferences; public class LaunchingPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { public LaunchingPreferencePage() { super(FieldEditorPreferencePage.GRID); setPreferenceStore(new ScopedPreferenceStore(InstanceScope.INSTANCE, RedPlugin.PLUGIN_ID)); } @Override public void init(final IWorkbench workbench) { // nothing to do } @Override protected void createFieldEditors() { final Composite parent = getFieldEditorParent(); createLink(parent); createGeneralLaunchingPreferences(parent); createExecutableFileLaunchingPreferences(parent); } private void createGeneralLaunchingPreferences(final Composite parent) { final Group generalGroup = new Group(parent, SWT.NONE); generalGroup.setText("General"); GridDataFactory.fillDefaults().indent(0, 15).grab(true, false).span(2, 1).applyTo(generalGroup); GridLayoutFactory.fillDefaults().applyTo(generalGroup); final BooleanFieldEditor editor = new BooleanFieldEditor(RedPreferences.LAUNCH_USE_ARGUMENT_FILE, "Pass Robot arguments using arguments file", generalGroup); final Button button = (Button) editor.getDescriptionControl(generalGroup); GridDataFactory.fillDefaults().indent(5, 10).applyTo(button); addField(editor); } private void createExecutableFileLaunchingPreferences(final Composite parent) { final Group executableGroup = new Group(parent, SWT.NONE); executableGroup.setText("Executor"); GridDataFactory.fillDefaults().indent(0, 15).grab(true, false).span(2, 1).applyTo(executableGroup); GridLayoutFactory.fillDefaults().applyTo(executableGroup); final BooleanFieldEditor editor = new BooleanFieldEditor( RedPreferences.LAUNCH_USE_SINGLE_COMMAND_LINE_ARGUMENT, "Use single argument to pass robot execution command line", executableGroup); final Button button = (Button) editor.getDescriptionControl(executableGroup); GridDataFactory.fillDefaults().indent(5, 10).applyTo(button); addField(editor); } private void createLink(final Composite parent) { final Link link = new Link(parent, SWT.NONE); GridDataFactory.fillDefaults() .align(SWT.FILL, SWT.BEGINNING) .hint(150, SWT.DEFAULT) .span(2, 1) .grab(true, false) .applyTo(link); final String launchingPageId = "org.eclipse.debug.ui.LaunchingPreferencePage"; final String runDebugPageId = "org.eclipse.debug.ui.DebugPreferencePage"; final String text = "Robot tests launching preferences. See <a href=\"" + launchingPageId + "\">'Launching'</a> for general launching preferences " + "or <a href=\"" + runDebugPageId + "\">'Run/Debug'</a> for other related preferences."; link.setText(text); link.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent e) { if (launchingPageId.equals(e.text)) { PreferencesUtil.createPreferenceDialogOn(parent.getShell(), e.text, null, null); } else if (runDebugPageId.equals(e.text)) { PreferencesUtil.createPreferenceDialogOn(parent.getShell(), e.text, null, "selectFont:org.robotframework.ide.textfont"); } } }); } }