/******************************************************************************* * Copyright (c) 2000, 2015 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ui.views.properties; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.swt.widgets.Composite; /** * A descriptor for a property to be presented by a standard property sheet page * (<code>PropertySheetPage</code>). These descriptors originate with property * sources (<code>IPropertySource</code>). * <p> * A property descriptor carries the following information: * <ul> * <li>property id (required)</li> * <li>display name (required)</li> * <li>brief description of the property (optional)</li> * <li>category for grouping related properties (optional)</li> * <li>label provider used to display the property value (optional)</li> * <li>cell editor for changing the property value (optional)</li> * <li>help context id (optional)</li> * </ul> * </p> * <p> * Clients may implement this interface to provide specialized property * descriptors; however, there are standard implementations declared in * this package that take care of the most common cases: * <ul> * <li><code>PropertyDescriptor - read-only property</li> * <li><code>TextPropertyDescriptor</code> - edits with a * <code>TextCellEditor</code></li> * <li><code>CheckboxPropertyDescriptor - edits with a * <code>CheckboxCellEditor</code></code></li> * <li><code>ComboBoxPropertyDescriptor - edits with a * <code>ComboBoxCellEditor</code></code></li> * <li><code>ColorPropertyDescriptor - edits with a * <code>ColorCellEditor</code></code></li> * </ul> * </p> * * @see IPropertySource#getPropertyDescriptors */ public interface IPropertyDescriptor { /** * Creates and returns a new cell editor for editing this property. Returns * <code>null</code> if the property is not editable. * * @param parent the parent widget for the cell editor * @return the cell editor for this property, or <code>null</code> if this * property cannot be edited */ public CellEditor createPropertyEditor(Composite parent); /** * Returns the name of the category to which this property belongs. Properties * belonging to the same category are grouped together visually. This localized * string is shown to the user * * @return the category name, or <code>null</code> if the default category is to * be used */ public String getCategory(); /** * Returns a brief description of this property. This localized string is shown * to the user when this property is selected. * * @return a brief description, or <code>null</code> if none */ public String getDescription(); /** * Returns the display name for this property. This localized string is shown to * the user as the name of this property. * * @return a displayable name */ public String getDisplayName(); /** * Returns a list of filter types to which this property belongs. * The user is able to toggle the filters to show/hide properties belonging to * a filter type. * <p> * Valid values for these flags are declared as constants on * <code>IPropertySheetEntry</code> * </p> * @return a list of filter types to which this property belongs, or * <code>null</code> if none */ public String[] getFilterFlags(); /** * Returns the help context id for this property or * <code>null</code> if this property has no help context id. * <p> * NOTE: Help support system API's changed since 2.0 and arrays * of contexts are no longer supported. * </p> * <p> * Thus the only valid non-<code>null</code> return type for this method * is a <code>String</code> representing a context id. The previously * valid return types are deprecated. The plural name for this method * is unfortunate. * </p> * * @return the help context id for this entry */ public Object getHelpContextIds(); /** * Returns the id for this property. This object is * used internally to distinguish one property descriptor * from another. * * @return the property id */ public Object getId(); /** * Returns the label provider for this property. The label provider is used * to obtain the text (and possible image) for displaying the <it>value</it> * of this property. * * @return the label provider used to display this property */ public ILabelProvider getLabelProvider(); /** * Returns whether this property descriptor and the given one are compatible. * <p> * The property sheet uses this method during multiple selection to determine * whether two property descriptors with the same id are in fact the same * property and can be displayed as a single entry in the property sheet. * </p> * * @param anotherProperty the other property descriptor * @return <code>true</code> if the property descriptors are compatible, and * <code>false</code> otherwise */ public boolean isCompatibleWith(IPropertyDescriptor anotherProperty); }