+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
+-------------------------------------------------------------------------------
+ Ministerio de Economía
+ meconlib
+-------------------------------------------------------------------------------
+This file is part of meconlib.
+
+meconlib is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+meconlib is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA 02111-1307 USA
+-------------------------------------------------------------------------------
+Creado: mar mar 16 15:55:32 ART 2004
+Author: Leandro Lucarella <llucar@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-----------------------------------------------------------------------------*/
+
+require_once 'MECON/HTML/Link.php';
+require_once 'MECON/HTML/Image.php';
+
+/**
+ * Ícono.
+ *
+ * Básicamente es una imágen con un link.
+ * Ejemplo:
+ * @code
+ * require_once 'MECON/HTML/Icon.php';
+ * require_once 'MECON/HTML/Link.php';
+ * // Crea un ícono de IR sin link.
+ * $icono1 = new MECON_HTML_Icon('ir');
+ * // Crea un ícono de ELIMINAR que apunta a 'algun/lugar'.
+ * $icono2 = new MECON_HTML_Icon('eliminar', 'algun/lugar');
+ * // Crea un ícono de NUEVO que apunta a 'algun/lugar?id=3&cant=10', tiene el
+ * // texto alternativo '>>' y 1 píxel de borde.
+ * $icono3 = new MECON_HTML_Icon('nuevo',
+ * new MECON_HTML_Link('algun/lugar', '', array('id' => 3, $cant => 10)),
+ * '>>', array('border' => 1));
+ * // Muestra todos los íconos.
+ * $icon1->display();
+ * echo $icon2->toHtml();
+ * $icon3->display();
+ * @endcode
+ *
+ * @access public
+ */
+class MECON_HTML_Icon extends MECON_HTML_Image {
+
+ /**
+ * Link a donde apunta la imagen.
+ * @private
+ */
+ var $_link;
+
+ /**
+ * Constructor.
+ *
+ * @param $nombre Nombre de la imágen.
+ * @param $link Link a donde apunta. Si es null, no tiene un link.
+ Puede ser un link o un MECON_HTML_Link.
+ * @param $attrs Atributos de la imágen.
+ */
+ function MECON_HTML_Icon($nombre, $link = null, $alt = null, $attrs = array())
+ {
+ switch ($nombre) {
+ default:
+ $src = "/MECON/images/general_$nombre";
+ }
+ if (is_null($alt)) {
+ $alt = '(' . strtoupper($nombre{0}) . ')';
+ }
+ parent::MECON_HTML_Image($src, $alt, $attrs);
+ $this->setLink($link);
+ }
+
+ /**
+ * Converts to HTML output.
+ *
+ * @return string
+ */
+ function toHtml()
+ {
+ if (is_null($this->_link)) {
+ return parent::toHtml();
+ } else {
+ $link = $this->getLink();
+ return $link->toHtml();
+ }
+ }
+
+ /**
+ * Gets image location.
+ */
+ function getSrc()
+ {
+ return $this->getAttribute('src');
+ }
+
+ /**
+ * Sets image location.
+ *
+ * @param string $src Image location.
+ */
+ function setSrc($src)
+ {
+ $this->updateAttributes(array('src' => $src));
+ }
+
+ /**
+ * Gets image alternate text.
+ */
+ function getAlt()
+ {
+ return $this->getAttribute('alt');
+ }
+
+ /**
+ * Establece el link a donde apunta el ícono.
+ *
+ * @param $link Nuevo link.
+ */
+ function setLink($link)
+ {
+ if (!is_a($link, 'mecon_html_link') and !is_null($link)) {
+ $this->_link = new MECON_HTML_Link($link);
+ } else {
+ $this->_link = $link;
+ }
+ }
+
+ /**
+ * Obtiene el link a donde apunta el ícono.
+ * @param $full Si es true, devuelve el link con la imagen incluida, si
+ * es false devuelve solo el link.
+ */
+ function getLink($full = true)
+ {
+ $link = $this->_link;
+ if (!$full or is_null($link)) {
+ return $link;
+ }
+ $link->addContents(new MECON_HTML_Image($this->getSrc(),
+ $this->getAlt(), $this->getAttributes()));
+ return $link;
+ }
+
+}
+
+?>
\ No newline at end of file