/**
 * Copyright (c) 2011 committers of YAKINDU 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:
 * 	committers of YAKINDU - initial API and implementation
 * 
 */
package org.yakindu.sct.ui.editor.editor.figures;

import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.GridData;
import org.eclipse.draw2d.GridLayout;
import org.eclipse.draw2d.RectangleFigure;
import org.eclipse.draw2d.StackLayout;
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;
import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode;
import org.yakindu.base.xtext.utils.gmf.figures.HighlightingWrappingLabel;
import org.yakindu.sct.ui.editor.editor.figures.utils.GridDataFactory;

/**
 * Figure for text compartment statechart declarations
 * 
 * @author muelder
 * 
 */
public class StatechartTextFigure extends RectangleFigure {

	/**
	 * The Name of the statechart
	 */
	private WrappingLabel name;
	/**
	 * The text compartment for statechart expressions
	 */
	private Figure compartment;

	public StatechartTextFigure(IMapMode mapMode) {
		GridLayout layout = new GridLayout(1, false);
		layout.verticalSpacing = 2;
		this.setLayoutManager(layout);
		this.setOutline(true);
		createContents();
	}

	private void createContents() {
		name = new HighlightingWrappingLabel();
		name.setLayoutManager(new StackLayout());
		GridData data = GridDataFactory.fillDefaults()
				.align(GridData.CENTER, GridData.CENTER).grab(true, false)
				.getData();
		this.add(name, data);
		// Text compartment
		compartment = new Figure();
		this.add(compartment, GridDataFactory.fillDefaults().grab(true, true)
				.getData());
	}

	public Figure getCompartment() {
		return compartment;
	}

	public WrappingLabel getName() {
		return name;
	}

}
