blob: e21985e020eeb8075fdf00bed8cc40ef54eda513 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2018 Willink Transformations and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* E.D.Willink - Initial API and implementation
*******************************************************************************/
package org.eclipse.ocl.ui.internal.preferences;
import java.util.List;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.ocl.common.preferences.PreferenceableOption;
import org.eclipse.ocl.common.ui.internal.preferences.AbstractProjectPreferencePage;
import org.eclipse.ocl.lpg.ProblemHandler;
import org.eclipse.ocl.options.EvaluationOptions;
import org.eclipse.ocl.options.ParsingOptions;
import org.eclipse.ocl.options.ProblemOption;
import org.eclipse.ocl.ui.internal.messages.EcoreAndUMLUIMessages;
import org.eclipse.ocl.util.OCLUtil;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
/**
* The Project/Property preference page for the Ecore and UML Bindings.
*/
public class EcoreAndUmlProjectPreferencePage extends AbstractProjectPreferencePage
{
protected static final String[][] LOOKUP_STRATEGIES = new String[][] {
{ EcoreAndUMLUIMessages.Preference_Severity_ByName, ParsingOptions.PACKAGE_LOOKUP_STRATEGIES.LOOKUP_PACKAGE_BY_NAME.toString() },
{ EcoreAndUMLUIMessages.Preference_Severity_ByAlias, ParsingOptions.PACKAGE_LOOKUP_STRATEGIES.LOOKUP_PACKAGE_BY_ALIAS.toString() },
{ EcoreAndUMLUIMessages.Preference_Severity_ByAliasThenName, ParsingOptions.PACKAGE_LOOKUP_STRATEGIES.LOOKUP_PACKAGE_BY_ALIAS_THEN_NAME.toString() }
};
protected static final String[][] SEVERITY_NAMES_AND_IDS = new String[][] {
{ EcoreAndUMLUIMessages.Preference_Severity_Ok, ProblemHandler.Severity.OK.name() },
{ EcoreAndUMLUIMessages.Preference_Severity_Info, ProblemHandler.Severity.INFO.name() },
{ EcoreAndUMLUIMessages.Preference_Severity_Warning, ProblemHandler.Severity.WARNING.name() },
{ EcoreAndUMLUIMessages.Preference_Severity_Error, ProblemHandler.Severity.ERROR.name() }
};
public EcoreAndUmlProjectPreferencePage() {
super(OCLUtil.PLUGIN_ID, EcoreAndUMLUIMessages.PageTitle);
}
@Override
protected AbstractProjectPreferencePage createClonePage() {
return new EcoreAndUmlProjectPreferencePage();
}
/**
* 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
protected void createFieldEditors(Composite fieldEditorParent, List<IFieldEditor> fields) {
Label horizontalLine= new Label(fieldEditorParent, SWT.SEPARATOR | SWT.HORIZONTAL);
horizontalLine.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false, 2, 1));
horizontalLine.setFont(fieldEditorParent.getFont());
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) ParsingOptions.DEFINITION_CONSTRAINS_FEATURE,
EcoreAndUMLUIMessages.LPG_DefinitionConstrainsFeature, BOOLEANS, fieldEditorParent));
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) ParsingOptions.USE_COMPARE_TO_OPERATION,
EcoreAndUMLUIMessages.LPG_UseCompareToOperation, BOOLEANS, fieldEditorParent));
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) ParsingOptions.USE_LONG_INTEGERS,
EcoreAndUMLUIMessages.LPG_UseLongIntegers, BOOLEANS, fieldEditorParent));
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) ParsingOptions.WARN_OF_XOR_OR_AND_PRECEDENCE_CHANGE,
EcoreAndUMLUIMessages.LPG_WarnOfXorOrAndPrecedenceChange, BOOLEANS, fieldEditorParent));
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) ParsingOptions.PACKAGE_LOOKUP_STRATEGY,
EcoreAndUMLUIMessages.LPG_PackageLookupStrategy, LOOKUP_STRATEGIES, fieldEditorParent));
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) ParsingOptions.USE_BACKSLASH_ESCAPE_PROCESSING,
EcoreAndUMLUIMessages.LPG_UseBackslashEscapeProcessing, BOOLEANS, fieldEditorParent));
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) ParsingOptions.SUPPORT_STATIC_FEATURES,
EcoreAndUMLUIMessages.LPG_SupportStaticFeatures, BOOLEANS, fieldEditorParent));
// TypeCaches have significant consequences. Only allow enabling programmatically.
// fields.add(new MyComboFieldEditor((PreferenceableOption<?>) ParsingOptions.USE_TYPE_CACHES,
// EcoreAndUMLUIMessages.LPG_UseTypeCaches, BOOLEANS, fieldEditorParent));
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) ParsingOptions.OVERLOAD_AMBIGUITY_IS_INVALID,
EcoreAndUMLUIMessages.LPG_OverloadAmbiguityIsInvalid, BOOLEANS, fieldEditorParent));
horizontalLine = new Label(fieldEditorParent, SWT.SEPARATOR | SWT.HORIZONTAL);
horizontalLine.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false, 2, 1));
horizontalLine.setFont(fieldEditorParent.getFont());
fields.add(new MyComboFieldEditor(ProblemOption.CLOSURE_ITERATOR,
EcoreAndUMLUIMessages.LPG_ClosureIterator, SEVERITY_NAMES_AND_IDS, fieldEditorParent));
fields.add(new MyComboFieldEditor(ProblemOption.STRING_CASE_CONVERSION,
EcoreAndUMLUIMessages.LPG_StringCaseConversion, SEVERITY_NAMES_AND_IDS, fieldEditorParent));
fields.add(new MyComboFieldEditor(ProblemOption.STRING_SINGLE_QUOTE_ESCAPE,
EcoreAndUMLUIMessages.LPG_StringSingleQuoteEscape, SEVERITY_NAMES_AND_IDS, fieldEditorParent));
fields.add(new MyComboFieldEditor(ProblemOption.ELEMENT_NAME_QUOTE_ESCAPE,
EcoreAndUMLUIMessages.LPG_ElementNameQuoteEscape, SEVERITY_NAMES_AND_IDS, fieldEditorParent));
fields.add(new MyComboFieldEditor(ProblemOption.AMBIGUOUS_ASSOCIATION_ENDS,
EcoreAndUMLUIMessages.LPG_AmbiguousAssociationEnds, SEVERITY_NAMES_AND_IDS, fieldEditorParent));
fields.add(new MyComboFieldEditor(ProblemOption.INHERITED_FEATURE_CONTEXT,
EcoreAndUMLUIMessages.LPG_InheritedFeatureContext, SEVERITY_NAMES_AND_IDS, fieldEditorParent));
fields.add(new MyComboFieldEditor(ProblemOption.CONCEPTUAL_OPERATION_NAME,
EcoreAndUMLUIMessages.LPG_ConceptualOperationName, SEVERITY_NAMES_AND_IDS, fieldEditorParent));
horizontalLine = new Label(fieldEditorParent, SWT.SEPARATOR | SWT.HORIZONTAL);
horizontalLine.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false, 2, 1));
horizontalLine.setFont(fieldEditorParent.getFont());
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) EvaluationOptions.ANY_LESS_IS_INVALID,
EcoreAndUMLUIMessages.LPG_AnyLessIteratorReturnsInvalid, ANY_LESS_VALUES, fieldEditorParent));
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) EvaluationOptions.CLOSURE_INCLUDES_SOURCES,
EcoreAndUMLUIMessages.LPG_ClosureIncludesSources, BOOLEANS, fieldEditorParent));
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) EvaluationOptions.LAX_NULL_HANDLING,
EcoreAndUMLUIMessages.LPG_LaxNullHandling, BOOLEANS, fieldEditorParent));
String[][] Objects = new String[][] {
{ "null", null }, //$NON-NLS-1$
{ "EObject", EcorePackage.Literals.class.getName() + ".EOBJECT" } //$NON-NLS-1$ //$NON-NLS-2$
};
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) EvaluationOptions.DYNAMIC_DISPATCH,
EcoreAndUMLUIMessages.LPG_DynamicDispatch, BOOLEANS, fieldEditorParent));
fields.add(new MyComboFieldEditor((PreferenceableOption<?>) ParsingOptions.IMPLICIT_ROOT_CLASS,
EcoreAndUMLUIMessages.LPG_ImplicitRootClass, Objects, fieldEditorParent));
}
}