blob: f6c153dd488b7a566bb6a70959f4aac07cb51dfc [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008-2011 Chair for Applied Software Engineering,
* Technische Universitaet Muenchen.
* 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:
******************************************************************************/
package org.eclipse.emf.ecp.editor.mecontrols;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecp.common.model.ECPModelelementContext;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.forms.widgets.FormToolkit;
/**
* Abstract class for the ME controls.
*
* @author helming
*/
public abstract class AbstractMEControl {
/**
* The default constant in case the widgets decides it shouldn't render the attribute.
*/
public static final int DO_NOT_RENDER = -1;
/**
* gui toolkit used for rendering.
*/
private FormToolkit toolkit;
/**
* the modelElement.
*/
private EObject modelElement;
/**
* the editingDomain.
*/
private EditingDomain editingDomain;
private boolean showLabel;
private IItemPropertyDescriptor itemPropertyDescriptor;
private ECPModelelementContext context;
/**
* @return the toolkit
*/
public FormToolkit getToolkit() {
return toolkit;
}
/**
* If a control can render a feature of a modelelement.
*
* @param itemPropertyDescriptor the {@link IItemPropertyDescriptor}
* @param modelElement the modelelement
* @return the priority
*/
public abstract int canRender(IItemPropertyDescriptor itemPropertyDescriptor, EObject modelElement);
/**
* @param toolkit the toolkit to set
*/
public void setToolkit(FormToolkit toolkit) {
this.toolkit = toolkit;
}
/**
* @return the modelElement
*/
public EObject getModelElement() {
return modelElement;
}
/**
* @param modelElement the modelElement to set
*/
public void setModelElement(EObject modelElement) {
this.modelElement = modelElement;
}
/**
* @return the editingDomain
*/
public EditingDomain getEditingDomain() {
return editingDomain;
}
/**
* @param editingDomain the editingDomain to set
*/
public void setEditingDomain(EditingDomain editingDomain) {
this.editingDomain = editingDomain;
}
/**
* Default constructor.
*/
public AbstractMEControl() {
super();
}
/**
* {@inheritDoc}
*/
public void dispose() {
}
/**
* Method for applying a custom layout data to widgets, as for {@link MERichTextControl}.
*/
public void applyCustomLayoutData() {
// by default none. must me implemented by the subclass.
}
/**
* Creates the widget for this control.
*
* @param parent the parent composite
* @param itemPropertyDescriptor the {@link IItemPropertyDescriptor}
* @param modelElement the model element
* @param context the context of the model element
* @param toolkit the {@link FormToolkit}
* @param style the style
* @return the widget
*/
public Control createControl(Composite parent, int style, IItemPropertyDescriptor itemPropertyDescriptor,
EObject modelElement, ECPModelelementContext context, FormToolkit toolkit) {
this.setContext(context);
this.editingDomain = context.getEditingDomain();
this.modelElement = modelElement;
this.toolkit = toolkit;
this.setItemPropertyDescriptor(itemPropertyDescriptor);
return createControl(parent, style);
}
/**
* Shall be overriden to create the control.
*
* @param parent the paren composite
* @param style the SWT style
* @return the create Control
*/
protected abstract Control createControl(Composite parent, int style);
/**
* @return if the label for this control should be shown.
*/
public boolean getShowLabel() {
return this.showLabel;
}
/**
* Sets if the label should be shown.
*
* @param show if the Label should be shown
*/
public void setShowLabel(boolean show) {
this.showLabel = show;
}
/**
* Setter for the {@link IItemPropertyDescriptor}.
*
* @param itemPropertyDescriptor the {@link IItemPropertyDescriptor}
*/
public void setItemPropertyDescriptor(IItemPropertyDescriptor itemPropertyDescriptor) {
this.itemPropertyDescriptor = itemPropertyDescriptor;
}
/**
* Getter for the {@link IItemPropertyDescriptor}.
*
* @return the {@link IItemPropertyDescriptor}
*/
public IItemPropertyDescriptor getItemPropertyDescriptor() {
return itemPropertyDescriptor;
}
/**
* Setter for the {@link ECPModelelementContext}.
*
* @param context the {@link ECPModelelementContext}
*/
public void setContext(ECPModelelementContext context) {
this.context = context;
}
/**
* Getter for the {@link ECPModelelementContext}.
*
* @return the {@link ECPModelelementContext}
*/
public ECPModelelementContext getContext() {
return context;
}
}