/**
 *                                                                            
 * Copyright (c) 2011, 2016 - 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 <florian.pirchner@gmail.com> - Initial implementation
 */
package org.eclipse.osbp.vaadin.addons.designer.overlay.client;

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

	/** The Constant EVENT_TYPE__REMOVE_CHILD. */
	// layout child properties
	public static final String EVENT_TYPE__REMOVE_CHILD = "removeChild";
	
	/** The Constant EVENT_TYPE__ADD_CHILD. */
	public static final String EVENT_TYPE__ADD_CHILD = "addChild";
	
	/** The Constant EVENT_TYPE__SWITCH_EDITABLE. */
	public static final String EVENT_TYPE__SWITCH_EDITABLE = "switchEditable";
	
	/** The Constant EVENT_TYPE__OPEN_PROPERTIES. */
	public static final String EVENT_TYPE__OPEN_PROPERTIES = "openProperties";

	/** The Constant EVENT_TYPE__SWITCH_MARGIN. */
	// layout properties
	public static final String EVENT_TYPE__SWITCH_MARGIN = "switchMargin";
	
	/** The Constant EVENT_TYPE__SWITCH_SPACING. */
	public static final String EVENT_TYPE__SWITCH_SPACING = "switchSpacing";

}
