- deleted test plugin
- added FML Library
This commit is contained in:
		
							
								
								
									
										262
									
								
								application/FML/Controls/Control.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										262
									
								
								application/FML/Controls/Control.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,262 @@ | ||||
| <?php | ||||
|  | ||||
| namespace FML\Controls; | ||||
|  | ||||
| use FML\Types\Renderable; | ||||
|  | ||||
| /** | ||||
|  * Class representing CMlControl | ||||
|  * | ||||
|  * @author steeffeen | ||||
|  */ | ||||
| abstract class Control implements Renderable { | ||||
| 	/** | ||||
| 	 * Constants | ||||
| 	 */ | ||||
| 	const CENTER = 'center'; | ||||
| 	const CENTER2 = 'center2'; | ||||
| 	const TOP = 'top'; | ||||
| 	const RIGHT = 'right'; | ||||
| 	const BOTTOM = 'bottom'; | ||||
| 	const LEFT = 'left'; | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Protected properties | ||||
| 	 */ | ||||
| 	protected $tagName = 'control'; | ||||
| 	protected $id = ''; | ||||
| 	protected $x = 0.; | ||||
| 	protected $y = 0.; | ||||
| 	protected $z = 0.; | ||||
| 	protected $width = -1.; | ||||
| 	protected $height = -1.; | ||||
| 	protected $hAlign = self::CENTER; | ||||
| 	protected $vAlign = self::CENTER2; | ||||
| 	protected $scale = 1.; | ||||
| 	protected $hidden = 0; | ||||
| 	protected $classes = array(); | ||||
|  | ||||
| 	/** | ||||
| 	 * Construct a new control | ||||
| 	 * | ||||
| 	 * @param string $id        	 | ||||
| 	 */ | ||||
| 	public function __construct($id = null) { | ||||
| 		if ($id !== null) { | ||||
| 			$this->setId($id); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Get control id | ||||
| 	 * | ||||
| 	 * @return string | ||||
| 	 */ | ||||
| 	public function getId() { | ||||
| 		return $this->id; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set control id | ||||
| 	 * | ||||
| 	 * @param string $id        	 | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function setId($id) { | ||||
| 		$this->id = $id; | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Assign an unique id if necessary | ||||
| 	 * | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function assignId() { | ||||
| 		if ($this->getId()) { | ||||
| 			return $this; | ||||
| 		} | ||||
| 		$this->setId(uniqid()); | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set x position | ||||
| 	 * | ||||
| 	 * @param real $x        	 | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function setX($x) { | ||||
| 		$this->x = $x; | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set y position | ||||
| 	 * | ||||
| 	 * @param real $y        	 | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function setY($y) { | ||||
| 		$this->y = $y; | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set z position | ||||
| 	 * | ||||
| 	 * @param real $z        	 | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function setZ($z) { | ||||
| 		$this->z = $z; | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set position | ||||
| 	 * | ||||
| 	 * @param real $x        	 | ||||
| 	 * @param real $y        	 | ||||
| 	 * @param real $z        	 | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function setPosition($x = null, $y = null, $z = null) { | ||||
| 		if ($x !== null) { | ||||
| 			$this->setX($x); | ||||
| 		} | ||||
| 		if ($y !== null) { | ||||
| 			$this->setY($y); | ||||
| 		} | ||||
| 		if ($z !== null) { | ||||
| 			$this->setZ($z); | ||||
| 		} | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set size | ||||
| 	 * | ||||
| 	 * @param real $width        	 | ||||
| 	 * @param real $height        	 | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function setSize($width = null, $height = null) { | ||||
| 		if ($width !== null) { | ||||
| 			$this->width = $width; | ||||
| 		} | ||||
| 		if ($height !== null) { | ||||
| 			$this->height = $height; | ||||
| 		} | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set horizontal alignment | ||||
| 	 * | ||||
| 	 * @param string $hAlign        	 | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function setHAlign($hAlign) { | ||||
| 		$this->hAlign = $hAlign; | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set vertical alignment | ||||
| 	 * | ||||
| 	 * @param string $vAlign        	 | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function setVAlign($vAlign) { | ||||
| 		$this->vAlign = $vAlign; | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set horizontal and vertical alignment | ||||
| 	 * | ||||
| 	 * @param string $halign        	 | ||||
| 	 * @param string $vAlign        	 | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function setAlign($halign, $vAlign) { | ||||
| 		$this->setHAlign($hAlign); | ||||
| 		$this->setVAlign($vAlign); | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set scale | ||||
| 	 * | ||||
| 	 * @param real $scale        	 | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function setScale($scale) { | ||||
| 		$this->scale = $scale; | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set visible | ||||
| 	 * | ||||
| 	 * @param bool $visible        	 | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function setVisible($visible) { | ||||
| 		$this->hidden = ($visible ? 0 : 1); | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Add class name | ||||
| 	 * | ||||
| 	 * @param string $class        	 | ||||
| 	 * @return \FML\Controls\Control | ||||
| 	 */ | ||||
| 	public function addClass($class) { | ||||
| 		array_push($this->classes, $class); | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * | ||||
| 	 * @see \FML\Types\Renderable::render() | ||||
| 	 */ | ||||
| 	public function render(\DOMDocument $domDocument) { | ||||
| 		$xml = $domDocument->createElement($this->tagName); | ||||
| 		if ($this->id) { | ||||
| 			$xml->setAttribute('id', $this->id); | ||||
| 		} | ||||
| 		if ($this->x !== 0. || $this->y !== 0. || $this->z !== 0.) { | ||||
| 			$xml->setAttribute('posn', "{$this->x} {$this->y} {$this->z}"); | ||||
| 		} | ||||
| 		if ($this->width >= 0. || $this->height >= 0.) { | ||||
| 			$xml->setAttribute('sizen', "{$this->width} {$this->height}"); | ||||
| 		} | ||||
| 		if (get_class($this) !== Frame::getClass()) { | ||||
| 			if ($this->hAlign) { | ||||
| 				$xml->setAttribute('halign', $this->hAlign); | ||||
| 			} | ||||
| 			if ($this->vAlign) { | ||||
| 				$xml->setAttribute('valign', $this->vAlign); | ||||
| 			} | ||||
| 		} | ||||
| 		if ($this->scale !== 1.) { | ||||
| 			$xml->setAttribute('scale', $this->scale); | ||||
| 		} | ||||
| 		if ($this->hidden) { | ||||
| 			$xml->setAttribute('hidden', $this->hidden); | ||||
| 		} | ||||
| 		$classes = ''; | ||||
| 		foreach ($this->classes as $class) { | ||||
| 			$classes .= $class . ' '; | ||||
| 		} | ||||
| 		if ($classes) { | ||||
| 			$xml->setAttribute('class', $classes); | ||||
| 		} | ||||
| 		return $xml; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| ?> | ||||
		Reference in New Issue
	
	Block a user