diff options
Diffstat (limited to 'org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/IProblemPreferenceDescriptor.java')
-rw-r--r-- | org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/IProblemPreferenceDescriptor.java | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/IProblemPreferenceDescriptor.java b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/IProblemPreferenceDescriptor.java new file mode 100644 index 0000000..f6f97e0 --- /dev/null +++ b/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/IProblemPreferenceDescriptor.java @@ -0,0 +1,171 @@ +/******************************************************************************* + * Copyright (c) 2009, 2010 Alena Laskavaia + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Alena Laskavaia - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.codan.core.param; + +import java.io.File; +import java.util.List; +import java.util.Map; + +/** + * Problem parameter usually key=value settings that allows to alter checker + * behaviour for given problem. For example if checker finds violation of naming + * conventions for function, parameter would be the pattern of allowed names. + * + * IProblemPreferenceDescriptor represent preference's meta-info for the ui. If + * more than one parameter is required it can be map or list of sub-preferences. + * This is only needed for auto-generated ui for parameter + * editing. For more complex cases custom ui control should be used. Extend + * {@link AbstractProblemPreference} class + * to implement this interface. + * + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. + */ +public interface IProblemPreferenceDescriptor extends Cloneable { + /** + * Type of the user preference + */ + public enum PreferenceType { + /** + * String type, represented by string input field by default + */ + TYPE_STRING("string"), //$NON-NLS-1$ + /** + * Integer type, represented by integer input field by default + */ + TYPE_INTEGER("integer"), //$NON-NLS-1$ + /** + * Boolean type, represented by checkbox (boolean input field) + */ + TYPE_BOOLEAN("boolean"), //$NON-NLS-1$ + /** + * File type, represented by file picker input field + */ + TYPE_FILE("file"), //$NON-NLS-1$ + /** + * List type, represented by list (table) control + */ + TYPE_LIST("list"), //$NON-NLS-1$ + /** + * Map type, represented by composite of children fields + */ + TYPE_MAP("map"), //$NON-NLS-1$ + /** + * Custom type, represented by string input field by default + */ + TYPE_CUSTOM("custom"); //$NON-NLS-1$ + private String literal; + + private PreferenceType(String literal) { + this.literal = literal; + } + + /** + * @param name - name of the type literal (i.e. comes from name() or + * toString()) + * @return type represented by this name + */ + public static PreferenceType valueOfLiteral(String name) { + PreferenceType[] values = values(); + for (int i = 0; i < values.length; i++) { + PreferenceType e = values[i]; + if (e.literal.equals(name)) + return e; + } + return null; + } + + @Override + public String toString() { + return literal; + } + + /** + * @param value + * @return parameter type corresponding to the value java type + */ + public static PreferenceType typeOf(Object value) { + if (value instanceof Boolean) + return TYPE_BOOLEAN; + if (value instanceof String) + return TYPE_STRING; + if (value instanceof Integer) + return TYPE_INTEGER; + if (value instanceof File) + return TYPE_FILE; + if (value instanceof List) + return TYPE_LIST; + if (value instanceof Map) + return TYPE_MAP; + return TYPE_CUSTOM; + } + } + + /** + * Key of the preference. Key must be java-like identified or number. Cannot + * contain dots. Cannot be null. + * + * @return key + */ + String getKey(); + + /** + * type of the parameter, supports boolean, integer, string, file, list and + * map. For list type child preference can be + * accessed by number (index), if map is the type child preference can be + * accessed by a key (string) + * + * @return type of the preference + */ + PreferenceType getType(); + + /** + * Additional info on how it is represented in the ui, for example boolean + * can be represented as checkbox, drop-down and so on, Values TBD. + * Not supported at the moment. + * + * @return ui info or null if not set + */ + String getUiInfo(); + + /** + * User visible label for the parameter control in UI + * + * @return the label + */ + String getLabel(); + + /** + * Detailed explanation of parameter. Not supported at the moment. + * + * @return the toolTip text + */ + String getToolTip(); + + /** + * default clone implementation + * + * @return clone of the object + */ + Object clone(); + + /** + * @return parent preference + */ + IProblemPreference getParent(); + + /** + * Combined key of values from parents plus itself separated by dot + * + * @return qualified key + */ + String getQualifiedKey(); +} |