RequestOutputPlotPanelNodeClass.php 2.33 KB
<?php

require_once("RequestOutputPlotElementTimeNodeClass.php");
require_once("RequestOutputPlotElementXYNodeClass.php");
require_once("RequestOutputPlotElementStatusNodeClass.php");
require_once("RequestOutputPlotElementTickNodeClass.php");

define ("REQUESTOUTPUTPLOTPANEL_NAME", "panel");
define ("REQUESTOUTPUTPLOTPANEL_TITLE", "title");
define ("REQUESTOUTPUTPLOTPANEL_BACKGROUNDCOLOR", "backgroundColor");

abstract class RequestOutputPlotElementTypeEnum
{
	const TIMEPLOT = "TimePlot";
	const XYPLOT   = "XYPlot";
	const STATUSPLOT = "StatusPlot";
	const TICKPLOT = "TickPlot";
}

/**
 * @class RequestOutputPlotPanelNodeClass
 * @brief Definition of a panel for a plot request
 * @details
 */
class RequestOutputPlotPanelNodeClass extends NodeClass
{
	public function __construct()
	{
		parent::__construct(REQUESTOUTPUTPLOTPANEL_NAME);
	}

	public function setBackgroundColor($color)
	{
		$this->setAttribute(REQUESTOUTPUTPLOTPANEL_BACKGROUNDCOLOR, $color);
	}
	
	public function getBackgroundColor()
	{
		return $this->getAttribute(REQUESTOUTPUTPLOTPANEL_BACKGROUNDCOLOR);
	}
	
	/* ToDo bounds */

	public function getFont()
	{
		$node = $this->getFirstChildByName(REQUESTOUTPUTPLOTFONT_NODENAME);
	
		if (!isset($node))
		{
			$node = new RequestOutputPlotFontNodeClass();
			$this->addChild($node);
		}
	
		return $node;
	}

	public function getTitle()
	{
		$node = $this->getFirstChildByName(REQUESTOUTPUTPLOTPANEL_TITLE);
	
		if (!isset($node))
		{
			$node = new RequestOutputPlotTitleNodeClass();
			$this->addChild($node);
		}
	
		return $node;
	}

	public function addPlotElement($type,$noAxes = false)
	{
		switch ($type)
		{
			case RequestOutputPlotElementTypeEnum::TIMEPLOT :
				$node = new RequestOutputPlotElementTimeNodeClass();
				break;
			case RequestOutputPlotElementTypeEnum::XYPLOT :
				$node = new RequestOutputPlotElementXYNodeClass();
				break;
			case RequestOutputPlotElementTypeEnum::STATUSPLOT :
				$node = new RequestOutputPlotElementStatusNodeClass($noAxes);
				break;
			case RequestOutputPlotElementTypeEnum::TICKPLOT :
				$node = new RequestOutputPlotElementTickNodeClass($noAxes);
				break;
			default :
				return NULL;
		}
		$this->addChild($node);
		return $node;
	}



	/* ToDo prefered size */

	/* ToDo x y margins */
}

?>