package de.lynorics.eclipse.jangaroo.ui.preferences; import org.eclipse.jface.preference.ComboFieldEditor; import org.eclipse.xtext.ui.editor.preferences.AbstractPreferencePage; import org.eclipse.xtext.ui.editor.preferences.fields.LabelFieldEditor; /** * @author Lynorics */ public class AS3ValidatorPreferencePage extends AbstractPreferencePage { private static final String CHECK_NO_STATEMENT_AFTER_RETURN = "checkNoStatementAfterReturn"; private static final String CHECK_NO_CYCLE_IN_CLASS_HIERARCHIE = "checkNoCycleInClassHierarchie"; private static final String CHECK_PUBLIC_API_VIOLATION = "checkPublicApiViolation"; private static final String CHECK_PACKAGE_STARTS_WITH_LOWERCASE = "checkPackageStartsWithLowercase"; private static final String CHECK_METHOD_STARTS_WITH_LOWERCASE = "checkMethodStartsWithLowercase"; private static final String CHECK_INTERFACE_STARTS_WITH_CAPITAL = "checkInterfaceStartsWithCapital"; private static final String CHECK_CLASS_STARTS_WITH_CAPITAL = "checkClassStartsWithCapital"; private static final String NAME_CLAS_VARIABLE_WITH_CLASS = "nameClashVariableWithClass"; private static final String LEVEL_ERROR = "Error"; private static final String LEVEL_WARNING = "Warning"; private static final String LEVEL_IGNORE = "Ignore"; private final static String[][] levels = new String[][] { {LEVEL_ERROR,LEVEL_ERROR}, {LEVEL_WARNING,LEVEL_WARNING}, {LEVEL_IGNORE,LEVEL_IGNORE} }; private void initDefaults() { getPreferenceStore().setDefault(CHECK_NO_STATEMENT_AFTER_RETURN, LEVEL_ERROR); getPreferenceStore().setDefault(CHECK_NO_CYCLE_IN_CLASS_HIERARCHIE, LEVEL_ERROR); getPreferenceStore().setDefault(CHECK_PUBLIC_API_VIOLATION, LEVEL_WARNING); getPreferenceStore().setDefault(CHECK_PACKAGE_STARTS_WITH_LOWERCASE, LEVEL_WARNING); getPreferenceStore().setDefault(CHECK_METHOD_STARTS_WITH_LOWERCASE, LEVEL_WARNING); getPreferenceStore().setDefault(CHECK_INTERFACE_STARTS_WITH_CAPITAL, LEVEL_WARNING); getPreferenceStore().setDefault(CHECK_CLASS_STARTS_WITH_CAPITAL, LEVEL_WARNING); getPreferenceStore().setDefault(NAME_CLAS_VARIABLE_WITH_CLASS, LEVEL_WARNING); } @Override protected void createFieldEditors() { initDefaults(); addHeader("Code style"); addValidation(CHECK_CLASS_STARTS_WITH_CAPITAL, "Class should start with capital letter"); addValidation(CHECK_INTERFACE_STARTS_WITH_CAPITAL, "Interface should start with capital letter"); addValidation(CHECK_METHOD_STARTS_WITH_LOWERCASE, "Method should start with lower case letter"); addValidation(CHECK_PACKAGE_STARTS_WITH_LOWERCASE, "Package should start with lower case letter"); addHeader("Correctness"); addValidation(CHECK_NO_CYCLE_IN_CLASS_HIERARCHIE, "Cycle in class hierarchie"); addValidation(CHECK_NO_STATEMENT_AFTER_RETURN, "Unreachable statement after return"); addValidation(CHECK_PUBLIC_API_VIOLATION, "Public API violation (experimental)"); addValidation(NAME_CLAS_VARIABLE_WITH_CLASS, "Variable hides class/interface with same name"); } private void addValidation(String propertyName, String label) { addField(new ComboFieldEditor(propertyName, label, levels, getFieldEditorParent())); } private void addHeader(String header) { addField(new LabelFieldEditor(header, getFieldEditorParent())); } }