name = $name; $this->title = $name; } /** * Returns the name of this pane * * @return string */ public function getName() { return $this->name; } /** * Returns the title of this pane * * @return string */ public function getTitle() { return $this->title; } /** * Overwrite the title of this pane * * @param string $title The new title to use for this pane * * @return self */ public function setTitle($title) { $this->title = $title; return $this; } /** * Return true if a component with the given title exists in this pane * * @param string $title The title of the component to check for existence * * @return bool */ public function hasComponent($title) { return array_key_exists($title, $this->components); } /** * Return a component with the given name if existing * * @param string $title The title of the component to return * * @return Component The component with the given title * @throws ProgrammingError If the component doesn't exist */ public function getComponent($title) { if ($this->hasComponent($title)) { return $this->components[$title]; } throw new ProgrammingError(sprintf('Trying to access invalid component: %s', $title)); } /** * Removes the component with the given title if it exists in this pane * * @param string $title The pane * @return Pane $this */ public function removeComponent($title) { if ($this->hasComponent($title)) { unset($this->components[$title]); } return $this; } /** * Return all components added at this pane * * @return array */ public function getComponents() { return $this->components; } /** * @see Widget::render */ public function render() { return implode("\n", $this->components) . "\n"; } /** * Add a component to this pane, optionally creating it if $component is a string * * @param string|Component $component The component object or title * (if a new component will be created) * @param string|null $url An Url to be used when component is a string * * @return self * @throws \Icinga\Exception\ConfigurationError */ public function addComponent($component, $url = null) { if ($component instanceof Component) { $this->components[$component->getTitle()] = $component; } elseif (is_string($component) && $url !== null) { $this->components[$component] = new Component($component, $url, $this); } else { throw new ConfigurationError('Invalid component added: ' . $component); } return $this; } /** * Return the this pane's structure as array * * @return array */ public function toArray() { $array = array($this->getName() => array('title' => $this->getTitle())); foreach ($this->components as $title => $component) { $array[$this->getName() . ".$title"] = $component->toArray(); } return $array; } /** * Create a new pane with the title $title from the given configuration * * @param $title The title for this pane * @param Zend_Config $config The configuration to use for setup * * @return Pane */ public static function fromIni($title, Zend_Config $config) { $pane = new Pane($title); if ($config->get('title', false)) { $pane->setTitle($config->get('title')); } return $pane; } }