skoa.helpers.Acciones.java Source code

Java tutorial

Introduction

Here is the source code for skoa.helpers.Acciones.java

Source

/**                   
 * 
 GNU GENERAL PUBLIC LICENSE
                   Version 3, 29 June 2007
    
 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
 */
package skoa.helpers;

import skoa.models.MiFormato;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import skoa.views.DispositivoEliminar;
import skoa.views.EstanciaEliminar;
import skoa.views.PlantaEliminar;
import skoa.views.Entrada;
import skoa.views.DispositivoNuevo;
import skoa.views.EstanciaGenerica;
import skoa.views.SkoaMain;
import skoa.views.ModificarPlano;
import skoa.views.NuevoProyecto;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
 * 
 * @author David Monn Chvez
 *
 */
public class Acciones {

    /**
     * Metodo que busca dentro del archivo xml la ruta de la imagne
     * 
     * @param planta
     * @param estancia
     * @return
     */
    public static String SeleccionarImagen(String planta, String estancia) {
        String dir_imagen = "";
        try {
            // crea una instancia de la clase File del archivo de configuracion
            // xml
            File aFile = new File(NuevoProyecto.archivo);

            // instancia de SAXReader para leer y recorrer el arbol del xml
            SAXReader xmlReader = new SAXReader();

            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            // Comenzamos a leer el aarbol
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2 = null;

            // recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                // si el nodo en el que estoy es "planta"
                if (node.getName().equals("planta") && node.valueOf("@alias").equals(planta)) {
                    node2 = node;
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        if (node2.getName().equals("estancia")) {
                            if (node2.valueOf("@nombre").equals(estancia)) {
                                // EstanciaCaracteristicas.dir_imagen =
                                // node2.valueOf( "@imagen" ) ;
                                dir_imagen = node2.valueOf("@imagen");
                                return dir_imagen;
                            }
                        }
                    }
                }
            }

        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return dir_imagen;
    }

    /**
     * Metodo principal
     */
    public static void main(int accion) {
        if (accion == 1) {
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    Entrada.main();
                }
            });
        }

    }

    /**
     * inserta iconos sobre el plano de una estancia, en el fichero xml, de 1 en 1
     * @param insertar
     * @param nombreIcono
     */
    public static void insertaIconos(JLabel insertar, String nombreIcono, String planta, String estancia) {
        String x = Integer.toString(insertar.getX());
        String y = Integer.toString(insertar.getY());
        String ancho = Integer.toString(insertar.getWidth());
        String largo = Integer.toString(insertar.getHeight());
        String inombre = "";
        String idirgrup = "";
        String itipo = "";
        String isubtipo = "";

        try {

            // instancia del la clase File para leer el archivo xml
            File aFile = new File(NuevoProyecto.archivo);

            // instancia del la clase xmlReader para recorer el arbol del xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            // leemos un obtenemos el nodo raiz
            Document doc = xmlReader.read(aFile);

            // obtenemos el node vivienda
            Element node = (Element) doc.selectSingleNode("//vivienda");

            Element node2 = null;// (Element) doc.selectSingleNode(//
            // "//vivienda/planta");;
            Element node3 = null;
            //String aux;
            //String auxi;
            org.dom4j.Element modificar;

            // leemos el contador de nodo
            String cont = node.valueOf("@contador");
            int contador = Integer.parseInt(cont);
            contador++;

            String nuevoContador = Integer.toString(contador);
            while (nuevoContador.length() != 6) {
                nuevoContador = "0" + nuevoContador;
            }

            Attribute atributoc = node.attribute("contador");
            atributoc.setText(Integer.toString(contador));

            // recoremos los hijos dle nodo vivienda
            if (nombreIcono != null) {
                for (Iterator i = node.elementIterator(); i.hasNext();) {
                    node = (Element) i.next();

                    // si es la planta buscada
                    if (node.getName().equals("planta") && node.valueOf("@alias").equals(planta)) {
                        node2 = node;
                        for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                            node2 = (Element) ia.next();

                            // estancia
                            if (node2.valueOf("@nombre").equals(estancia)) {
                                node3 = node2;

                                // recorremos el nodo para acceder a
                                // actuadores,sensores,iconos
                                for (Iterator ib = node3.elementIterator(); ib.hasNext();) {
                                    node3 = (Element) ib.next();

                                    if (node3.getName().equals("actuadores")) {

                                        String[] fieldsToInclude = { "regulacion", "conmutacion", "persianas",
                                                "electrovalvula" };

                                        for (String field : fieldsToInclude) {

                                            if (nombreIcono.equals(field)) {
                                                Attribute atributo = node3.attribute(field);
                                                atributo.setText("si");
                                            }
                                        }
                                    } // end if actuadores y sensores

                                    if (node3.getName().equals("iconos")) {
                                        String[] fieldsToInclude = { "regulacion", "conmutacion", "persianas",
                                                "electrovalvula", "puerta", "movimiento", "temperatura",
                                                "combinado", "inundacion", "contadores" };

                                        for (String field : fieldsToInclude) {
                                            if (nombreIcono.equals(field)) {
                                                for (MiFormato miFormato : DispositivoNuevo.parametros) {

                                                    if ((miFormato.x.equals(x)) && (miFormato.y.equals(y))) {
                                                        inombre = miFormato.nombre;
                                                        idirgrup = miFormato.direccionGrupo;
                                                        itipo = miFormato.tipoEstructura;
                                                        isubtipo = miFormato.subtipo;
                                                    }
                                                }

                                                org.dom4j.Element anadir = node3.addElement("label")
                                                        .addAttribute("tipo", field).addAttribute("x", x)
                                                        .addAttribute("y", y).addAttribute("ancho", ancho)
                                                        .addAttribute("largo", largo)
                                                        .addAttribute("id", nuevoContador) // Integer.toString(contador));
                                                        .addAttribute("direccionGrupo", idirgrup)
                                                        .addAttribute("tipoEstructura", itipo)
                                                        .addAttribute("subtipo", isubtipo);
                                                // anadir.addAttribute("nombred", inombre)

                                            }

                                        }
                                    }

                                    // iconos++++++++++++++++++++++++++++++++++++++++++++++++

                                    if (node3.getName().equals("cantidad")) {
                                        String[][] fieldsToInclude = {
                                                new String[] { "regulacion", "@lucreg", "lucreg" },
                                                new String[] { "conmutacion", "@bombs", "bombs" },
                                                new String[] { "persianas", "@blinds", "blinds" },
                                                new String[] { "electrovalvula", "@valves", "valves" },
                                                new String[] { "puerta", "@doors", "doors" },
                                                new String[] { "movimiento", "@presencia", "presencia" }, };

                                        for (String[] field : fieldsToInclude) {

                                            if (nombreIcono.equals(field[0])) {
                                                String valor = node3.valueOf(field[1]);
                                                int numero = Integer.parseInt(valor) + 1;

                                                Attribute atributo = node3.attribute(field[2]);
                                                atributo.setText(Integer.toString(numero));
                                            }
                                        }
                                    } // end if cantidad

                                } // end for node3
                            } // end if estancia==estancia seleccionada
                        } // end for node2
                    } // end consulta si es la planta que busco
                } // end for
            }

            //String auxiliar = doc.asXML();
            //FileWriter archivo;
            //archivo = new FileWriter(principal.archivo);

            OutputFormat format = OutputFormat.createPrettyPrint();
            // format.setEncoding("UTF-8");
            format.setEncoding("iso-8859-1");

            // XMLWriter writer = new XMLWriter(new FileWriter(
            // principal.archivo ) );

            XMLWriter writer = new XMLWriter(new FileWriter(NuevoProyecto.archivo), format);
            writer.write(doc);
            writer.close();

        } catch (IOException e) {
            e.printStackTrace();

        } catch (DocumentException e) {
            e.printStackTrace();
        }

    }// end insertaIconosf

    /**
     * Metodo que verifica si es una estancia unica
     * @param planta
     * @param estancia
     * @return
     */
    public static boolean estanciaUnica(String planta, String estancia) {
        try {

            //referencia al archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol del xml
            SAXReader xmlReader = new SAXReader();
            //xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos el nodo raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2 = null;

            //recorremos el nodo vivienda
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();
                //si encuentra una planta y es la planta que busco

                if (node.getName().equals("planta") && node.valueOf("@alias").equals(planta)) {
                    node2 = node;
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();
                        //dentro de plantas solo hay estancias, si es la que busco:
                        if (node2.valueOf("@nombre").equals(estancia)) {// estancia
                            return true;
                        }
                    } //end for
                }
            } //end for

        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return false;
    }

    /**
     * Metodo que verifica si es una plnata unica
     * @param planta
     * @return
     */
    public static boolean plantaUnica(String planta) {

        try {
            //referencia al archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol del xml
            SAXReader xmlReader = new SAXReader();
            //xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos el nodo raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2 = null;

            //recorremos el nodo vivienda
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();
                //si encuentra una planta y es la planta que busco
                if (node.getName().equals("planta") && node.valueOf("@alias").equals(planta)) {
                    return true;

                }
            } //end for

        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return false;
    }//end PlantaUnica

    /**
     * Metodo para inicializar a "no" los actuadores y sensores
     * @param nombrePlanta
     * @param nombreEstancia
     */
    public static void inicializarEstancia(String nombrePlanta, String nombreEstancia) {
        try {
            //referencia al archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol del xml
            SAXReader xmlReader = new SAXReader();
            xmlReader.setEncoding("UTF-8");

            //cargamos el nodo raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");

            Element node2 = null;
            Element node3 = null;
            String aux;
            String auxi;

            //recorremos el nodo vivienda
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();
                if (node.getName().equals("planta")) {
                    aux = node.valueOf("@alias");

                    if (aux.equals(nombrePlanta)) { // si es la planta que busco

                        node2 = node;

                        for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                            node2 = (Element) ia.next();
                            aux = node2.valueOf("@nombre");

                            // estancia_nueva.seleccionado;
                            auxi = nombreEstancia;

                            // si es la estancia que  busco
                            if (aux.equals(auxi)) {

                                org.dom4j.Element anadir2 = node2.addElement("actuadores")
                                        .addAttribute("regulacion", "no").addAttribute("conmutacion", "no")
                                        .addAttribute("persianas", "no").addAttribute("electrovalvula", "no");

                                org.dom4j.Element anadir3 = node2.addElement("sensores")
                                        .addAttribute("puerta", "no").addAttribute("movimiento", "no")
                                        .addAttribute("temperatura", "no").addAttribute("combinado", "no")
                                        .addAttribute("inundacion", "no").addAttribute("contadores", "no");

                                org.dom4j.Element anadir4 = node2.addElement("iconos");

                                org.dom4j.Element anadir5 = node2.addElement("cantidad").addAttribute("blinds", "0")
                                        .addAttribute("lucreg", "0").addAttribute("bombs", "0")
                                        .addAttribute("valves", "0").addAttribute("doors", "0")
                                        .addAttribute("presencia", "0");
                            } // end if si es la estancia que quiero
                        } // end for node2
                    } // end if es la planta que busco
                } // end if si es una planta
            } // end for

            //String auxiliar = doc.asXML();
            //FileWriter archivo;
            //archivo = new FileWriter(principal.archivo);

            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("UTF-8");

            //actualizamos el archivo
            XMLWriter writer = new XMLWriter(new FileWriter(NuevoProyecto.archivo), format);
            writer.write(doc);
            writer.close();

        } catch (IOException e) {
            e.printStackTrace();

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }// end inicializarEstancia

    /**
     * Metodo para eliminar una planta del xml
     * @param planta
     */
    public static void eliminarPlantaXML(String planta) {
        try {

            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            xmlReader.setEncoding("UTF-8");
            //xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                // si es la planta que busco
                System.out.println(node.valueOf("@alias") + " " + planta);
                if (node.getName().equals("planta") && node.valueOf("@alias").equals(planta)) {
                    node.getParent().remove(node);

                    // ++++++++++++++ MENSAJE ALERTA
                    String mostrar = "Planta Eliminada";

                    //muestro una ventana de notificacion
                    JOptionPane.showMessageDialog(null, mostrar, "Informacin", 1);

                } // end if
            } // end for

            //String auxiliar = doc.asXML();
            //FileWriter archivo;
            //archivo = new FileWriter(principal.archivo);

            OutputFormat format = OutputFormat.createPrettyPrint();
            // format.setEncoding("UTF-8");
            format.setEncoding("iso-8859-1");

            //actualziamos el archivo
            XMLWriter writer = new XMLWriter(new FileWriter(NuevoProyecto.archivo), format);
            writer.write(doc);
            writer.close();

        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }// end EliminarPlanta

    /**
     * Metodo que elimina una isntancia en el archvio xml
     * @param planta
     * @param estancia
     */
    public static void eliminarEstanciaXML(String planta, String estancia) {
        try {

            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            xmlReader.setEncoding("UTF-8");
            //xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2;

            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                // si es la planta que busco
                if (node.getName().equals("planta") && node.valueOf("@alias").equals(planta)) {
                    node2 = node;
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        // estoy en la estancia buscada
                        if (node2.getName().equals("estancia") && node2.valueOf("@nombre").equals(estancia)) {
                            node2.getParent().remove(node2);
                            // ++++++++++++++ MENSAJE ALERTA
                            String mostrar = "Estancia Eliminada";
                            JOptionPane.showMessageDialog(null, mostrar, "Informacin", 1);
                        }
                    } // end for2
                } // end if
            } // end for

            OutputFormat format = OutputFormat.createPrettyPrint();
            // format.setEncoding("UTF-8");
            format.setEncoding("iso-8859-1");

            //actualziamos el archivo
            XMLWriter writer = new XMLWriter(new FileWriter(NuevoProyecto.archivo), format);
            writer.write(doc);
            writer.close();

        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }// end EliminarEstancia

    /**
     * Metodo que carga desde el xml las estancias
     * para mostrarla en la vista ModificarPlano
     */
    public static void mostrarEstanciasVistaModificarPlano() {
        try {
            //remueve los items anteriores
            ModificarPlano.DESPLEGABLE_ESTANCIA.removeAllItems();
            ModificarPlano.DESPLEGABLE_ESTANCIA.addItem("--Estancias--");

            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2 = null;

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //si es la planta que estoy buscando
                if (node.getName().equals("planta")
                        && node.valueOf("@alias").equals(ModificarPlano.planta_seleccionada)) {
                    node2 = node;

                    //recorro sus nodos hijos
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        if (node2.getName().equals("estancia")) {
                            //lo agrego a la vista
                            ModificarPlano.DESPLEGABLE_ESTANCIA.addItem(node2.valueOf("@nombre"));
                        }
                    }

                } // end if
            } // end for

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }// end mostrarEstancias

    /**
     * Metodo que carga desde el xml las estancias
     * para mostrarla en la vista EstanciaCaracteristicas
     */
    public static void mostrarEstanciasVistaEstanciaCaracteristicas_NOT() {
        try {
            //remueve los items anteriores
            DispositivoNuevo.DESPLEGABLE_ESTANCIA.removeAllItems();
            DispositivoNuevo.DESPLEGABLE_ESTANCIA.addItem("--Estancias--");

            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2 = null;

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //si es la planta que estoy buscando
                if (node.getName().equals("planta")
                //&& node.valueOf("@alias").equals(DispositivoNuevo.planta_seleccionada)

                ) {
                    node2 = node;

                    //recorro sus nodos hijos
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        if (node2.getName().equals("estancia")) {
                            //lo agrego a la vista
                            DispositivoNuevo.DESPLEGABLE_ESTANCIA.addItem(node2.valueOf("@nombre"));
                        }
                    }

                } // end if
            } // end for

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }// end mostrarEstancias

    /**
     * Metodo que carga desde el xml las estancias
     * para mostrarla en la vista EliminarEstancia
     */
    public static void mostrarEstanciasVistaEliminarEstancia_NOT() {
        try {
            //remueve los items anteriores
            EstanciaEliminar.DESPLEGABLE_ESTANCIA.removeAllItems();
            EstanciaEliminar.DESPLEGABLE_ESTANCIA.addItem("--Estancias--");

            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2 = null;

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //si es la planta que estoy buscando
                if (node.getName().equals("planta")
                        && node.valueOf("@alias").equals(EstanciaEliminar.planta_seleccionada)) {
                    node2 = node;

                    //recorro sus nodos hijos
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        if (node2.getName().equals("estancia")) {
                            //lo agrego a la vista
                            EstanciaEliminar.DESPLEGABLE_ESTANCIA.addItem(node2.valueOf("@nombre"));
                        }
                    }

                } // end if
            } // end for

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }// end mostrarEstancias

    /**
     * Metodo que carga desde el xml las estancias
     * para mostrarla en la vista EliminarDispositivos
     */
    public static void mostrarEstanciasVistaEliminarDispositivos_NOT() {
        try {
            //remueve los items anteriores
            DispositivoEliminar.DESPLEGABLE_ESTANCIA.removeAllItems();
            DispositivoEliminar.DESPLEGABLE_ESTANCIA.addItem("--Estancias--");

            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2 = null;

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //si es la planta que estoy buscando
                if (node.getName().equals("planta")
                // && node.valueOf("@alias").equals(DispositivoEliminar.planta_seleccionada)
                ) {
                    node2 = node;

                    //recorro sus nodos hijos
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        if (node2.getName().equals("estancia")) {
                            //lo agrego a la vista
                            DispositivoEliminar.DESPLEGABLE_ESTANCIA.addItem(node2.valueOf("@nombre"));
                        }
                    }

                } // end if
            } // end for

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }// end mostrarEstancias

    /**
     * Metodo que modifica en el xml 
     * la instacia selecionada en la vista ModificarPlano.planta_seleccionada
     */
    public static void modificarPlanoXML() {
        try {
            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            //xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2 = null;

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();
                if (node.getName().equals("planta")
                        && node.valueOf("@alias").equals(ModificarPlano.planta_seleccionada)) {
                    node2 = node;
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        if (node2.getName().equals("estancia")
                                && node2.valueOf("@nombre").equals(ModificarPlano.estancia_seleccionada)) {

                            Attribute atributo1 = node2.attribute("imagen");
                            atributo1.setText(ModificarPlano.direcPlano);

                        } // end if estancia
                    } // end for node2
                } // end if planta
            } // end for node

            //volver a inicializar todas las cantidades a 0 y "no" en actuadores y sensores
            Acciones.inicializarEstancia(ModificarPlano.planta_seleccionada, ModificarPlano.estancia_seleccionada);

            ////String aux = doc.asXML();
            //FileWriter archivo;
            //archivo = new FileWriter(principal.archivo);

            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("iso-8859-1");
            //format.setEncoding("UTF-8");

            //actualziamos el archivo
            //XMLWriter writer = new XMLWriter(new FileWriter(principal.archivo));
            XMLWriter writer = new XMLWriter(new FileWriter(NuevoProyecto.archivo), format);
            writer.write(doc);
            writer.close();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }// end modificarPlano

    /**
     * Metodo que recorre el xml buscando la planta y la estancia para 
     * luego crear el correspondiente iconoy agregarlo en EliminarDispositivos.panel_plano
     * @param planta
     * @param estancia
     */
    public static void mostrarDispositivosVistaEliminarDispositivos_NOT(String planta, String estancia) {
        try {
            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2 = null;
            Element node3 = null;
            Element labels = null;
            ImageIcon iconito = null;

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //si es la planta que estoy buscando
                if (node.getName().equals("planta") && node.valueOf("@alias").equals(planta)) {
                    node2 = node;

                    //recorro los hijos de planta
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        //si es la estancia que estoy buscando
                        if (node2.getName().equals("estancia") && node2.valueOf("@nombre").equals(estancia)) {
                            node3 = node2;

                            // recorro los hijos de estancia
                            for (Iterator ii = node3.elementIterator(); ii.hasNext();) {
                                node3 = (Element) ii.next();

                                //si encuento el nodo iconos
                                if (node3.getName().equals("iconos")) {
                                    labels = node3;

                                    // recorro los hijos de iconos
                                    for (Iterator il = labels.elementIterator(); il.hasNext();) {
                                        labels = (Element) il.next();

                                        if (labels.getName().equals("label")) {
                                            String tipo = labels.valueOf("@tipo");
                                            String x = labels.valueOf("@x");
                                            String y = labels.valueOf("@y");
                                            String ancho = labels.valueOf("@ancho");
                                            String largo = labels.valueOf("@largo");
                                            String id = labels.valueOf("@id");

                                            //crea una amigen en memoria dependiendo del nodo
                                            String[][] tipoIcono = { new String[] { "puerta", "puc.png" },
                                                    new String[] { "movimiento", "prdetec.png" },
                                                    new String[] { "temperatura", "term.png" },
                                                    new String[] { "combinado", "comb.png" },
                                                    new String[] { "inundacion", "inund.png" },
                                                    new String[] { "contadores", "cont.png" },
                                                    new String[] { "regulacion", "luzreg.png" },
                                                    new String[] { "conmutacion", "bca.png" },
                                                    new String[] { "persianas", "pa.png" },
                                                    new String[] { "electrovalvula", "elv.png" }, };

                                            for (String[] icono : tipoIcono) {
                                                if (tipo.equals(icono[0])) {
                                                    String path = SkoaMain.ROOT_ICONS_PATH + icono[1];
                                                    iconito = new ImageIcon(
                                                            Acciones.class.getClass().getResource(path));
                                                    break;
                                                }
                                            }

                                            //crea una etiqeuta y le agrega el icono creado anteriormente
                                            JLabel insertar = new JLabel();
                                            insertar.setName(tipo);

                                            insertar.setIcon(iconito);
                                            insertar.setBounds(Integer.parseInt(x), Integer.parseInt(y), 30, 40);

                                            //lo inserta en la vista principal
                                            DispositivoEliminar.panel_plano.add(insertar,
                                                    javax.swing.JLayeredPane.DRAG_LAYER);

                                            final JButton boton1 = new JButton();

                                            String nombre = "boton+" + id;
                                            boton1.setName(nombre);

                                            Icon imagen = new ImageIcon(Acciones.class.getClass()
                                                    .getResource(SkoaMain.ROOT_ICONS_PATH + "eliminar.JPG"));

                                            boton1.setIcon(imagen);
                                            // boton1.setBounds(Integer.parseInt(x)+Integer.parseInt(ancho),
                                            // Integer.parseInt(y)+10,
                                            // 20, 20);
                                            // Puse + 30 pq antes el
                                            // ancho valia 30, ahora ya
                                            // no, por eso la sentencia
                                            // de arriba ya no vale
                                            boton1.setBounds(Integer.parseInt(x) + 30, Integer.parseInt(y) + 10, 20,
                                                    20);

                                            DispositivoEliminar.panel_plano.add(boton1,
                                                    javax.swing.JLayeredPane.DRAG_LAYER);
                                            boton1.addActionListener(new ActionListener() {
                                                // Accin asociada
                                                // cuando se pulsa en la
                                                // X roja para eliminar
                                                // un dispositivo

                                                @Override
                                                public void actionPerformed(ActionEvent evt) {
                                                    // Obtenemos el id.
                                                    // del act/sen que
                                                    // va a ser
                                                    // eliminado
                                                    String identif = boton1.getName().substring(6);
                                                    // Obtenemos su tipo
                                                    String tipo = buscaTipo(identif);
                                                    // Y el nmero de
                                                    // elemento dentro
                                                    // de la estancia
                                                    // (1,2,3,4,5)
                                                    /*int num = buscaNum(
                                                        identif,
                                                        tipo,
                                                        DispositivoEliminar.planta_seleccionada,
                                                        DispositivoEliminar.estancia_seleccionada
                                                        );*/

                                                    // Necesitamos
                                                    // actualizar los
                                                    // nombres de
                                                    // "tipo", ya que la
                                                    // sig. funcin
                                                    // requiere nombres
                                                    // distintos
                                                    if (tipo.indexOf("regulacion") != -1) {
                                                        tipo = "luz_reg";
                                                    }
                                                    if (tipo.indexOf("conmutacion") != -1) {
                                                        tipo = "luz_conm";
                                                    }
                                                    if (tipo.indexOf("persianas") != -1) {
                                                        tipo = "pers";
                                                    }
                                                    if (tipo.indexOf("electrovalvula") != -1) {
                                                        tipo = "electrov";
                                                    }
                                                    if (tipo.indexOf("movimiento") != -1) {
                                                        tipo = "mov";
                                                    }
                                                    if (tipo.indexOf("temperatura") != -1) {
                                                        tipo = "temp";
                                                    }
                                                    if (tipo.indexOf("combinado") != -1) {
                                                        tipo = "comb";
                                                    }
                                                    if (tipo.indexOf("inundacion") != -1) {
                                                        tipo = "inund";
                                                    }
                                                    if (tipo.indexOf("contadores") != -1) {
                                                        tipo = "cont";
                                                    }

                                                    // Actualizamos los
                                                    // vectores
                                                    // vecDispUsados y
                                                    // vecDispDomoticos
                                                    /* SkoaMain.dispositivo_eliminado(
                                                        DispositivoEliminar.planta_seleccionada,
                                                        DispositivoEliminar.estancia_seleccionada,
                                                        tipo,
                                                        String.valueOf(num));*/
                                                    // Por ltimo, se
                                                    // elimina el
                                                    // dispositivo
                                                    // adecuado en el
                                                    // fichero .xml
                                                    Acciones.eliminarDispositivoVistaEliminarDispositivos(identif);
                                                }
                                            });
                                        }

                                    }

                                }

                            }
                        }
                    }
                }

            }

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

    /**
     * Metodo que recorre el xml buscando la planta y la estancia para 
     * luego crear el correspondiente iconoy agregarlo en EstanciaCaracteristicas.panel_plano
     * @param planta
     * @param estancia
     */
    public static void mostrarDispositivosVistaEstanciaCaracteristicas_NOT(String planta, String estancia) {
        try {
            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2 = null;
            Element node3 = null;
            Element labels = null;
            ImageIcon iconito = null;

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //si es la planta que estoy buscando
                if (node.getName().equals("planta") && node.valueOf("@alias").equals(planta)) {
                    node2 = node;

                    //recorro los hijos de planta
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        //si es la estancia que estoy buscando
                        if (node2.getName().equals("estancia") && node2.valueOf("@nombre").equals(estancia)) {
                            node3 = node2;

                            // recorro los hijos de estancia
                            for (Iterator ii = node3.elementIterator(); ii.hasNext();) {
                                node3 = (Element) ii.next();

                                //si encuento el nodo iconos
                                if (node3.getName().equals("iconos")) {
                                    labels = node3;

                                    // recorro los hijos de iconos
                                    for (Iterator il = labels.elementIterator(); il.hasNext();) {
                                        labels = (Element) il.next();

                                        if (labels.getName().equals("label")) {
                                            String tipo = labels.valueOf("@tipo");
                                            String x = labels.valueOf("@x");
                                            String y = labels.valueOf("@y");
                                            String ancho = labels.valueOf("@ancho");
                                            String largo = labels.valueOf("@largo");
                                            String id = labels.valueOf("@id");

                                            //crea una amigen en memoria dependiendo del nodo
                                            String[][] tipoIcono = { new String[] { "puerta", "puc.png" },
                                                    new String[] { "movimiento", "prdetec.png" },
                                                    new String[] { "temperatura", "term.png" },
                                                    new String[] { "combinado", "comb.png" },
                                                    new String[] { "inundacion", "inund.png" },
                                                    new String[] { "contadores", "cont.png" },
                                                    new String[] { "regulacion", "luzreg.png" },
                                                    new String[] { "conmutacion", "bca.png" },
                                                    new String[] { "persianas", "pa.png" },
                                                    new String[] { "electrovalvula", "elv.png" }, };

                                            for (String[] icono : tipoIcono) {
                                                if (tipo.equals(icono[0])) {
                                                    String path = SkoaMain.ROOT_ICONS_PATH + icono[1];
                                                    iconito = new ImageIcon(
                                                            Acciones.class.getClass().getResource(path));
                                                    break;
                                                }
                                            }

                                            //crea una etiqeuta y le agrega el icono creado anteriormente
                                            JLabel insertar = new JLabel();
                                            insertar.setName(tipo);

                                            insertar.setIcon(iconito);
                                            insertar.setBounds(Integer.parseInt(x), Integer.parseInt(y), 30, 40);

                                            //lo inserta en la vista principal
                                            DispositivoNuevo.panel_plano.add(insertar,
                                                    javax.swing.JLayeredPane.DRAG_LAYER);

                                        }

                                    }

                                }

                            }
                        }
                    }
                }

            }

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

    /**
     * Meotod para eliminar un dispositivo en la vista
     * @param identificador
     */
    public static void eliminarDispositivoVistaEliminarDispositivos(String identificador) {
        try {
            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            //xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2, node3, node4 = null;
            String planta, estancia;

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //si es un nodo planta
                if (node.getName().equals("planta")) {
                    planta = node.valueOf("@alias");
                    node2 = node;

                    //recorremos los hijso de ese nodo planta
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {

                        node2 = (Element) ia.next();

                        //si es un nodo estancia
                        if (node2.getName().equals("estancia")) {
                            estancia = node2.valueOf("@nombre");
                            node3 = node2;
                            int eliminado = 0;
                            String tipo = "";

                            //recorremos los hijso de ese nodo estancia
                            for (Iterator ib = node3.elementIterator(); ib.hasNext();) {
                                node3 = (Element) ib.next();

                                if (node3.getName().equals("iconos")) {
                                    node4 = node3;

                                    for (Iterator ic = node4.elementIterator(); ic.hasNext();) {
                                        node4 = (Element) ic.next();

                                        if (node4.getName().equals("label")) {

                                            String ident = node4.valueOf("@id");
                                            if (ident.equals(identificador)) {
                                                //identificador localizado, se borra
                                                tipo = node4.valueOf("@tipo");
                                                //System.out.println("tipo:"+tipo);
                                                node4.getParent().remove(node4);
                                                //doc2= 
                                                inicializar(planta, estancia, tipo, doc);

                                                //eliminado=1;
                                                //break;
                                            }
                                        }
                                    } //end for

                                    if (eliminado == 1) {
                                        if (node3.getName().equals("cantidad")) {
                                            //System.out.println("tipo:"+tipo);
                                            String[][] fieldsToInclude = {
                                                    new String[] { "regulacion", "@lucreg", "lucreg" },
                                                    new String[] { "conmutacion", "@bombs", "bombs" },
                                                    new String[] { "persianas", "@blinds", "blinds" },
                                                    new String[] { "electrovalvula", "@valves", "valves" },
                                                    new String[] { "puerta", "@doors", "doors" },
                                                    new String[] { "movimiento", "@presencia", "presencia" }, };

                                            for (String[] field : fieldsToInclude) {
                                                if (tipo.equals(field[0])) {

                                                    //restar una
                                                    int cuantas = Integer.parseInt(node3.valueOf(field[1]));
                                                    cuantas = cuantas - 1;
                                                    //System.out.println("cuantas:"+cuantas);
                                                    Attribute atributo1 = node3.attribute(field[2]);
                                                    atributo1.setText(String.valueOf(cuantas));
                                                }
                                            }
                                        }
                                    }

                                }
                            } //end for                    
                        }
                    } //end for
                }
            } //end for

            //++++++++++++++       MENSAJE ALERTA 

            /*Component[] componentes = DispositivoEliminar.panel_plano.getComponents();
            for (int indice = 0; indice < componentes.length; indice++) {
            String name = componentes[indice].getName();
                
            if (name != null) {
                if (name.equals("regulacion")
                        || name.equals("conmutacion")
                        || name.equals("persianas")
                        || name.equals("electrovalvula")
                        || name.equals("puerta")
                        || name.equals("movimiento")
                        || name.equals("temperatura")
                        || name.equals("combinado")
                        || name.equals("inundacion")
                        || name.equals("contadores")
                        || name.substring(0, 5).equals("boton")) {
                    DispositivoEliminar.panel_plano.remove(componentes[indice]);
                    DispositivoEliminar.panel_plano.moveToBack(componentes[indice]);
                } //end if
            }
            }//end for*/
            //Acciones.mostrarDispositivosVistaEliminarDispositivos_NOT(DispositivoEliminar.planta_estancia, DispositivoEliminar.nombre_estancia);

        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } // fin del procedimiento Eliminar Dispositivo

    /**
     * Metodo para inicializar los nodos dentro del arbol del xml
     * @param planta
     * @param estancia
     * @param tipo
     * @param doc
     * @throws IOException
     */
    public static void inicializar(String planta, String estancia, String tipo, Document doc) throws IOException {
        try {

            //cargamos el nodo vivienda
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2, node3, node4 = null;

            int cero = 0;

            //recoremos sus hijos
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //si  es el nodo que estamos buscando
                if (node.getName().equals("planta") && node.valueOf("@alias").equals(planta)) {
                    node2 = node;
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        //si es la estancia que estamos buscando
                        if (node2.getName().equals("estancia") && node2.valueOf("@nombre").equals(estancia)) {
                            node3 = node2;

                            //recorremos sus hijos
                            for (Iterator ib = node3.elementIterator(); ib.hasNext();) {
                                node3 = (Element) ib.next();

                                if (node3.getName().equals("cantidad")) {
                                    String[][] fieldsToInclude = {
                                            new String[] { "regulacion", "@lucreg", "lucreg" },
                                            new String[] { "conmutacion", "@bombs", "bombs" },
                                            new String[] { "persianas", "@blinds", "blinds" },
                                            new String[] { "electrovalvula", "@valves", "valves" },
                                            new String[] { "puerta", "@doors", "doors" },
                                            new String[] { "movimiento", "@presencia", "presencia" }, };

                                    for (String[] field : fieldsToInclude) {
                                        if (tipo.equals(field[0])) {
                                            int cuantas = Integer.parseInt(node3.valueOf(field[1])) - 1;

                                            if (cuantas == 0) {
                                                cero = 1;
                                            }

                                            Attribute atributo1 = node3.attribute(field[2]);
                                            atributo1.setText(String.valueOf(cuantas));
                                        }
                                    }
                                } // end if Cantidad

                            } // end for dentro estancias

                        }
                    }
                }
            }

            OutputFormat format = OutputFormat.createPrettyPrint();
            // format.setEncoding("UTF-8");
            format.setEncoding("iso-8859-1");

            XMLWriter writer = new XMLWriter(new FileWriter(NuevoProyecto.archivo), format);
            writer.write(doc);
            writer.close();

            // si el contador llego a 0 hay que poner NO en actuadores/sensores
            if (cero == 1) {
                inicializar2(planta, estancia, tipo);

            }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }// end inicializar

    /**
     * Inicializa los componente dentro del xml en "no"
     * @param planta
     * @param estancia
     * @param tipo
     */
    public static void inicializar2(String planta, String estancia, String tipo) {

        try {
            //referencia al archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para lerr el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2, node3, node4 = null;

            String buscar = "";
            if (tipo.equals("regulacion") || tipo.equals("conmutacion") || tipo.equals("persianas")
                    || tipo.equals("electrovalvula")) {
                buscar = "actuadores";

            }

            if (tipo.equals("puerta") || tipo.equals("movimiento") || tipo.equals("temperatura")
                    || tipo.equals("combinado") || tipo.equals("inundacion") || tipo.equals("contadores")) {

                buscar = "sensores";

            }

            //recoremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                if (node.getName().equals("planta") && node.valueOf("@alias").equals(planta)) {
                    node2 = node;

                    //recorremos el nodo estancia planta
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        // dentro de la estancia que busco
                        if (node2.getName().equals("estancia") && node2.valueOf("@nombre").equals(estancia)) {
                            node3 = node2;

                            //recorremos el nodo estancia
                            for (Iterator ib = node3.elementIterator(); ib.hasNext();) {
                                node3 = (Element) ib.next();

                                // si es lo que estoy buscando (sensores/actuadores)
                                if (node3.getName().equals(buscar)) {
                                    String[] fieldsToInclude = { "regulacion", "conmutacion", "persianas",
                                            "electrovalvula", "puerta", "movimiento", "temperatura", "combinado",
                                            "inundacion", "contadores" };

                                    for (String field : fieldsToInclude) {

                                        if (tipo.equals("regulacion")) {
                                            Attribute atributo = node3.attribute(field);
                                            if (atributo != null)
                                                atributo.setText("no");
                                        }
                                    }

                                } // end for dentro estancias
                            }
                        }
                    }
                }
            } // end for

            OutputFormat format = OutputFormat.createPrettyPrint();
            // format.setEncoding("UTF-8");
            format.setEncoding("iso-8859-1");

            //actualizamos el xml
            XMLWriter writer = new XMLWriter(new FileWriter(NuevoProyecto.archivo), format);
            writer.write(doc);
            writer.close();

        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }

    }// end inicializar2

    /**
     * Emtodo que busca el tipo de act/sen gracias a su identificador
     * @param identificador El id. del act/sen del cual se quiere obtener su
     * @return el tipo del identificador
     */
    public static String buscaTipo(String identificador) {
        try {

            //referencia al archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para lerr el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2, node3, node4 = null;

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //si es un nodo planta
                if (node.getName().equals("planta")) {
                    node2 = node;

                    //recorremos el nodo planta
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        //si es un nodo estancia
                        if (node2.getName().equals("estancia")) {
                            node3 = node2;

                            //recorremos el nodo estancia
                            for (Iterator ib = node3.elementIterator(); ib.hasNext();) {
                                node3 = (Element) ib.next();

                                //si es un nodo iconos
                                if (node3.getName().equals("iconos")) {
                                    node4 = node3;

                                    //recorremo el nodo iconos
                                    for (Iterator ic = node4.elementIterator(); ic.hasNext();) {
                                        node4 = (Element) ic.next();

                                        //si es un nodo label
                                        if (node4.getName().equals("label")) {

                                            String ident = node4.valueOf("@id");
                                            if (ident.equals(identificador)) {
                                                // identificador localizado, se
                                                // devuelve su tipo
                                                return node4.valueOf("@tipo");
                                            }
                                        }
                                    } // end for
                                }
                            } // end for
                        }
                    } // end for
                }
            } // end for principal

        } catch (DocumentException e) {
            e.printStackTrace();
        }

        // Si llegado a este punto no ha encontrado el identificador (no
        // debera), se devuelve la ristra vaca ""
        return "";
    } // fin del procedimiento BuscaTipo

    /**
     * Procedimiento que devuelve el num. de dispositivo que va a ser eliminado
     * gracias a su identificador, su tipo, y la planta y estancia en la que se
     * encuentra Es decir, saber si se trata de la 3 luz, la 2, la 4, etc
     * (por ej)
     * @param identificador El id. del act/sen del cual se quiere saber el numero
     * @param tipo El tipo del act/sen del cual se quiere saber el numero
     * @param planta La planta en la que se encuentra el act/sen
     * @param estancia La estancia en la que se encuentra el act/sen
     */
    public static int buscaNum(String identificador, String tipo, String planta, String estancia) {
        // contador ser el valor devuelto por la funcin
        int contador = 0;
        try {
            //referencia al archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para lerr el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");
            Element node2, node3, node4 = null;

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                // si es la plnata buscada
                if (node.getName().equals("planta") && node.valueOf("@alias").equals(planta)) {
                    node2 = node;

                    //recorremos el nodo planta
                    for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                        node2 = (Element) ia.next();

                        //si es la estancia buscada estancia
                        if (node2.getName().equals("estancia") && node2.valueOf("@nombre").equals(estancia)) {
                            node3 = node2;

                            for (Iterator ib = node3.elementIterator(); ib.hasNext();) {
                                node3 = (Element) ib.next();

                                if (node3.getName().equals("iconos")) {
                                    node4 = node3;

                                    for (Iterator ic = node4.elementIterator(); ic.hasNext();) {
                                        node4 = (Element) ic.next();

                                        if (node4.getName().equals("label")) {
                                            String tipo_aux = node4.valueOf("@tipo");
                                            String ident = node4.valueOf("@id");

                                            // Una vez que estamos situados en la planta y
                                            // estancia correcta Si nos encontramos un
                                            // tipo como el que estamos buscando, incrementamos el contador
                                            if (tipo_aux.equals(tipo)) {
                                                contador++;
                                            }

                                            // Si hemos dado con el identificador, ya no
                                            // necesitamos contar ms
                                            if (ident.equals(identificador)) {
                                                // identificador localizado, se devuelve su tipo
                                                return contador;
                                            }
                                        }
                                    } // end for
                                }
                            } // end for
                        }
                    }
                } // end for
            }

        } catch (DocumentException e) {
            e.printStackTrace();
        }

        // Si llegados a este punto, no ha encontrado el identificador que
        // buscaba (no debera), devuelve 0
        return contador;
    } // fin del procedimiento BuscaTipo

    /**
     * 
     * @param vecEstancias
     * @param vectpPlantas
     * @param numPlantas
     */
    public static void rellenaVect(EstanciaGenerica[] vecEstancias, javax.swing.JTabbedPane[] vectpPlantas,
            int[] numPlantas) {

        try {

            for (int iii = 0; iii < SkoaMain.vecAliasPlantas.length; iii++) {

                //referencia al archivo
                File aFile = new File(NuevoProyecto.archivo);

                //referencia para lerr el arbol xml
                SAXReader xmlReader = new SAXReader();
                // xmlReader.setEncoding("UTF-8");
                xmlReader.setEncoding("iso-8859-1");

                //cargamos la raiz
                Document doc = xmlReader.read(aFile);
                Element node = (Element) doc.selectSingleNode("//vivienda");
                Element node2, node3, node4 = null;

                int est_tratadas = 0, plantas = 0;

                //recorremos el arbol
                for (Iterator i = node.elementIterator(); i.hasNext();) {
                    node = (Element) i.next();

                    //si es un nodo planta
                    if (node.getName().equals("planta")) {
                        numPlantas[0]++;
                        String nombre_planta = node.valueOf("@alias");

                        //System.out.println("nombre planta encontrado:"+ nombre_planta);

                        vectpPlantas[plantas].setName(nombre_planta);
                        plantas++;

                        node2 = node;
                        int estancias = 0;

                        // recorremos el nodo planta
                        for (Iterator ia = node2.elementIterator(); ia.hasNext();) {
                            node2 = (Element) ia.next();

                            //si es un nodo estancia
                            if (node2.getName().equals("estancia")) {
                                String nombre_estancia = node2.valueOf("@nombre");
                                vecEstancias[est_tratadas].setName(nombre_estancia);
                                est_tratadas++;
                                estancias++;
                            } // end if estancias
                        } // end for estancias

                        while (estancias < 25) {
                            vecEstancias[est_tratadas].setName("");

                            est_tratadas++;
                            estancias++;
                        }
                    } // end if planta
                } // end for plantas

            } // end for

        } // end try
        catch (DocumentException e) {
            e.printStackTrace();
        }

        //System.out.println("antes de salir num plantas=" + numPlantas[0]);
    } // end function

    /**
    * Funciones no utilizadas
    */
    public static void mostrarPlantasVistaModificarPlano_NOT() {
        try {
            //remueve los items anteriores
            ModificarPlano.DESPLEGABLE_PLANTA.removeAllItems();
            ModificarPlano.DESPLEGABLE_PLANTA.addItem("--Plantas--");

            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            xmlReader.setEncoding("UTF-8");
            // xmlReader.setEncoding("is-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //si encontramos la planta y su alias no esta vacia
                if (node.getName().equals("planta") && !node.valueOf("@alias").equals("")) {
                    // estancia_nueva.desplegable.addItem(aux);

                    //llamada a la vista apra msotrar la planta
                    ModificarPlano.DESPLEGABLE_PLANTA.addItem(node.valueOf("@alias"));
                }
            } // end for

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

    public static void mostrarPlantasVistaEstanciaCaracteristicas_NOT() {
        try {
            //remueve los items anteriores
            DispositivoNuevo.DESPLEGABLE_PLANTA.removeAllItems();
            DispositivoNuevo.DESPLEGABLE_PLANTA.addItem("--Plantas--");

            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            // //************************************
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //verificamos que sea la oanta y que su alias no este vacio
                if (node.getName().equals("planta") && !node.valueOf("@alias").equals("")) {

                    //llamamos la vista para mostralo
                    DispositivoNuevo.DESPLEGABLE_PLANTA.addItem(node.valueOf("@alias"));
                } // end if
            } // end for

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

    public static void mostrarPlantasVistaEliminarPlanta_NOT() {
        try {

            //remueve los items anteriores
            PlantaEliminar.DESPLEGABLE_PLANTA.removeAllItems();
            PlantaEliminar.DESPLEGABLE_PLANTA.addItem("--Plantas--");

            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //verificamos que sea la oanta y que su alias no este vacio
                if (node.getName().equals("planta") && !node.valueOf("@alias").equals("")) {

                    //llamamos la vista para mostralo
                    PlantaEliminar.DESPLEGABLE_PLANTA.addItem(node.valueOf("@alias"));

                } // end if
            } // end for

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

    public static void mostrarPlantasVistaEliminarEstancia_NOT() {
        try {

            //remueve los items anteriores
            //EliminarEstancia.DESPLEGABLE_PLANTA.removeAllItems();
            //EliminarEstancia.DESPLEGABLE_PLANTA.addItem("--Plantas--");

            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //verificamos que sea la oanta y que su alias no este vacio
                if (node.getName().equals("planta") && !node.valueOf("@alias").equals("")) {

                    //llamamos la vista para mostralo
                    // EliminarEstancia.DESPLEGABLE_PLANTA.addItem(node.valueOf("@alias"));

                } // end if
            } // end for

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

    public static void mostrarPlantasVistaEliminarDispositivos_NOT() {
        try {

            //remueve los items anteriores
            DispositivoEliminar.DESPLEGABLE_PLANTA.removeAllItems();
            DispositivoEliminar.DESPLEGABLE_PLANTA.addItem("--Plantas--");

            //referencia para leer el archivo
            File aFile = new File(NuevoProyecto.archivo);

            //referencia para leer el arbol xml
            SAXReader xmlReader = new SAXReader();
            // xmlReader.setEncoding("UTF-8");
            xmlReader.setEncoding("iso-8859-1");

            //cargamos la raiz
            Document doc = xmlReader.read(aFile);
            Element node = (Element) doc.selectSingleNode("//vivienda");

            //recorremos el arbol
            for (Iterator i = node.elementIterator(); i.hasNext();) {
                node = (Element) i.next();

                //verificamos que sea la oanta y que su alias no este vacio
                if (node.getName().equals("planta") && !node.valueOf("@alias").equals("")) {

                    //llamamos la vista para mostralo
                    DispositivoEliminar.DESPLEGABLE_PLANTA.addItem(node.valueOf("@alias"));

                } // end if
            } // end for

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

}