blob: 5727a66df0de36d7a7464c883157380446f7112e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2019 CEA LIST
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Ansgar Radermacher - Initial API and implementation
*******************************************************************************/
package org.eclipse.papyrus.robotics.transformation.ros2.library.preferences;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.source.SourceViewer;
import org.eclipse.papyrus.robotics.transformation.ros2.library.Activator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Group;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
/**
* This class represents a preference page that is contributed to the
* Preferences dialog. By subclassing <samp>FieldEditorPreferencePage /samp>,
* we can use the field support built into JFace that allows us to create a page
* that is small and knows how to save, restore and apply itself.
* <p>
* This page is used to modify preferences only. They are stored in the preference store that belongs to the main plug-in class. That way, preferences can be accessed directly via the preference store.
*/
public class Ros2CodeGenPreferencePage extends FieldEditorPreferencePage implements
IWorkbenchPreferencePage {
public Ros2CodeGenPreferencePage() {
super(GRID);
setPreferenceStore(Activator.getDefault().getPreferenceStore());
setDescription("This preferences page allows to customize ROS2 C++ code generation/reverse"); //$NON-NLS-1$
}
public void addTextField(String name, String label, Document currentDoc) {
// ///////////////////////////////////////////////////////////////////////
// Create a Group for the text
// ///////////////////////////////////////////////////////////////////////
Group txtGroup = new Group(getFieldEditorParent(), SWT.RESIZE);
txtGroup.setLayout(new FillLayout());
txtGroup.setText(label);
GridData gd = new GridData(GridData.FILL_BOTH /* FILL_HORIZONTAL */);
// gd.heightHint = 250;
gd.horizontalSpan = 2;
txtGroup.setLayoutData(gd);
// Text area
SourceViewer txtViewer = new SourceViewer(txtGroup, null, SWT.MULTI
| SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
txtViewer.setDocument(currentDoc);
// Retrieving existing preference
String content = getPreferenceStore().getString(name);
// Loading preference in txt zone
currentDoc.set(content);
}
/**
* Creates the field editors. Field editors are abstractions of the common
* GUI blocks needed to manipulate various types of preferences. Each field
* editor knows how to save and restore itself.
*/
@Override
public void createFieldEditors() {
addField(new StringFieldEditor(Ros2PreferenceConstants.P_STANDARD_MSGS_PATH,
"PATH to \"standard\" ROS2 message and service definitions", getFieldEditorParent())); //$NON-NLS-1$
addField(new StringFieldEditor(Ros2PreferenceConstants.P_COLCON_OPTIONS,
"colcon build options", getFieldEditorParent())); //$NON-NLS-1$
addField(new StringFieldEditor(Ros2PreferenceConstants.P_COLCON_PACKAGES,
"colcon switch to select a certain package (or set thereof)", getFieldEditorParent())); //$NON-NLS-1$
addField(new StringFieldEditor(Ros2PreferenceConstants.P_AUTHOR_NAME,
"author name, if no information in model", getFieldEditorParent())); //$NON-NLS-1$
addField(new StringFieldEditor(Ros2PreferenceConstants.P_AUTHOR_MAIL,
"author mail, if no information in model", getFieldEditorParent())); //$NON-NLS-1$
addField(new StringFieldEditor(Ros2PreferenceConstants.P_MAINTAINER_NAME,
"maintainer name, if no information in model", getFieldEditorParent())); //$NON-NLS-1$
addField(new StringFieldEditor(Ros2PreferenceConstants.P_MAINTAINER_MAIL,
"maintainer mail, if no information in model", getFieldEditorParent())); //$NON-NLS-1$
}
@Override
public void init(IWorkbench workbench) {
}
}