/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 * 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:
 *         Florian Pirchner - Initial implementation
 */
package org.eclipse.osbp.runtime.designer.api;

import org.eclipse.emf.ecore.EObject;


// TODO: Auto-generated Javadoc
/**
 * The Interface IWidgetDesignConfigurator.
 */
public interface IWidgetDesignConfigurator {

	/**
	 * Is called to configure the given widget for designmode. Or to deconfig if
	 * designmode is off.
	 *
	 * @param widget
	 *            the widget
	 * @param element
	 *            the element
	 * @param designMode
	 *            the design mode
	 */
	void configure(Object widget, EObject element, boolean designMode);

	/**
	 * Opens the edit dialog.
	 * @param widget
	 * @param model
	 */
	void openEditDialog(Object widget, EObject model);

}
