/******************************************************************************* * Copyright (c) 2012 Pivotal Software, Inc. * 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: * Pivotal Software, Inc. - initial API and implementation *******************************************************************************/ package org.springsource.ide.eclipse.commons.frameworks.ui.internal.parameters.editors; import org.eclipse.swt.widgets.Composite; import org.springsource.ide.eclipse.commons.frameworks.core.internal.commands.ICommandParameter; import org.springsource.ide.eclipse.commons.frameworks.core.internal.commands.ICommandParameterDescriptor; /** * UI controls for a parameter instance, where parameter values can be displayed * and changed. * <p> * Implementors need NOT include a label control with the parameter name as part * of its UI controls. Instead, it should answer a call to whether the creator * of the editor should include the parameter name as a label or not. It is * expected that UI controls for the parameter be simple and be arranged in the * same row as the label of the parameter. * </p> * @author Nieraj Singh */ public interface IParameterEditor { /** * Returns the command parameter descriptor that describes the properties of * the parameter. Should not be null. * * @return non-null parameter descriptor. */ public ICommandParameterDescriptor getParameterDescriptor(); /** * Returns the command parameter instance used by the editor. This contains * the values set by the editor. * * @return command parameter instance used by the editor. Should not be * null. */ public ICommandParameter getParameter(); /** * Creates the editor controls, and returns the composite containing the * created editor controls, or null if nothing is created. * <p> * It is NOT necessary to include the parameter name as a label control, as * this is generated by the component that creates the editor. * </p> * * @param parent * for the editor controls * @return Composite containing editor controls, or null if nothing created */ public Composite createControls(Composite parent); /** * True if the parameter name should be included as a label control. NOTE * that implementors need not include the parameter name as a label. The * wizard or dialogue that creates the editors is responsible for creating * parameter name labels. * * @return true if the parameter name should be included as a label control. * False otherwise. */ public boolean requiresParameterNameLabel(); public IUIChangeListener addUIChangeListener(IUIChangeListener listener); public IUIChangeListener removeUIChangeListener(IUIChangeListener listener); }