| /******************************************************************************* |
| * 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) { |
| } |
| } |