View Javadoc

1   package es.inteco.eni.swing;
2   
3   import java.awt.event.MouseEvent;
4   import java.awt.event.MouseListener;
5   
6   import javax.swing.JTextArea;
7   
8   import es.inteco.eni.commons.EniConstants;
9   import es.inteco.eni.xml.XmlNode;
10  
11  /**
12   * Clase que controla los eventos de ratón sobre la vista transformada del XML
13   * 
14   *  
15   * 
16   *
17   */
18  public class TransformedViewMouseListener implements MouseListener{
19  
20  	/**
21  	 * Panel de la vista transformada
22  	 */
23  	private TransformedViewPane transformedViewPane;
24  	/**
25  	 * Ventana del validador
26  	 */
27  	private ENIValidator eniValidator;
28  
29  	/**
30  	 * Constructor
31  	 * @param eniValidator Ventana del validador
32  	 * @param transformedViewPane Panel de la vista transformada
33  	 */
34  	public TransformedViewMouseListener(ENIValidator eniValidator, TransformedViewPane transformedViewPane){
35  		this.eniValidator = eniValidator;
36  		this.transformedViewPane = transformedViewPane;
37  	}
38  
39  	/**
40  	 * 
41  	 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
42  	 */
43  	@Override
44  	public void mouseClicked(MouseEvent e) {
45  		XmlNode xmlNode = searchXmlNode(e.getX(), e.getY());
46  
47  		//Pinta los datos del xml en la consola
48  		if(xmlNode!=null){
49  			showXmlInfo(xmlNode, transformedViewPane.getEniValidator().getConsoleTextarea());
50  		}
51  	}
52  
53  	/**
54  	 * Muestra la info el nodo xml
55  	 * @param xmlNode Nodo xml
56  	 * @param textArea Text area
57  	 */
58  	public static void showXmlInfo(XmlNode xmlNode, JTextArea textArea){
59  		String xmlNodeInfo = getXmlInfo(xmlNode);
60  		textArea.setText(xmlNodeInfo);
61  		textArea.setCaretPosition(0);
62  	}
63  	
64  	private static String getXmlInfo(XmlNode xmlNode) {
65  		StringBuffer strB = new StringBuffer();
66  		strB.append("QName:"+getText(xmlNode.getqName())+"\n");
67  		strB.append("LName:"+getText(xmlNode.getlName())+"\n");
68  		strB.append("Value:"+getText(xmlNode.getValue())+"\n");
69  		strB.append("Uri:"+getText(xmlNode.getUri())+"\n");
70  		strB.append("Atributos:"+"\n");
71  		for (int i=0; xmlNode.getAttributes()!=null && i<xmlNode.getAttributes().getLength(); i++){
72  			strB.append("\t Type:" +  getText(xmlNode.getAttributes().getType(i))+"\n");
73  			strB.append("\t QName:" +  getText(xmlNode.getAttributes().getQName(i))+"\n");
74  			strB.append("\t URI:" +  getText(xmlNode.getAttributes().getURI(i))+"\n");
75  			strB.append("\t Value:" +  getText(xmlNode.getAttributes().getValue(i))+"\n");
76  			strB.append("\t LocalNAme:" +  getText(xmlNode.getAttributes().getLocalName(i))+"\n");
77  		}
78  		return strB.toString();
79  	}
80  
81  	private static String getText(String text){
82  		return text!=null ? text : "";
83  	}
84  
85  	/**
86  	 * Busca el nodo XML por las coordenadas
87  	 * @param x Posicion horizontal
88  	 * @param y Posicion vertical
89  	 * @return Nodo XML por las coordenadas
90  	 */
91  	private XmlNode searchXmlNode(int x, int y) {
92  		XmlNode result = null;
93  		if(getTransformedViewPane().getXmlNodePositions()!=null){
94  			for (XmlNodePosition xmlNodePosition : getTransformedViewPane().getXmlNodePositions()){
95  				if (x>xmlNodePosition.getX() && x<xmlNodePosition.getX()+xmlNodePosition.getW() &&
96  						y>xmlNodePosition.getY() && y<xmlNodePosition.getY()+xmlNodePosition.getH()){
97  					result = xmlNodePosition.getXmlNode();
98  					break;
99  				}
100 			}
101 		}
102 		return result;
103 	}
104 
105 
106 
107 	/**
108 	 * @return Devuelve el valor del campo transformedViewPane
109 	 */
110 	public TransformedViewPane getTransformedViewPane() {
111 		return transformedViewPane;
112 	}
113 
114 	/**
115 	 * @param Asigna al campo transformedViewPane el valor del parámetro transformedViewPane
116 	 */
117 	public void setTransformedViewPane(TransformedViewPane transformedViewPane) {
118 		this.transformedViewPane = transformedViewPane;
119 	}
120 
121 	
122 	/**
123 	 * @return Devuelve el valor del campo eniValidator
124 	 */
125 	public ENIValidator getEniValidator() {
126 		return eniValidator;
127 	}
128 
129 	/**
130 	 * @param Asigna al campo eniValidator el valor del parámetro eniValidator
131 	 */
132 	public void setEniValidator(ENIValidator eniValidator) {
133 		this.eniValidator = eniValidator;
134 	}
135 
136 	/**
137 	 * 
138 	 * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
139 	 */
140 	@Override
141 	public void mouseEntered(MouseEvent e) {
142 
143 	}
144 
145 	/**
146 	 * 
147 	 * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
148 	 */
149 	@Override
150 	public void mouseExited(MouseEvent e) {
151 	}
152 
153 	/**
154 	 * 
155 	 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
156 	 */
157 	@Override
158 	public void mousePressed(MouseEvent e) {
159 		//Si se hace doble click
160 		if(e.getClickCount()==2){
161 			XmlNode xmlNode = searchXmlNode(e.getX(), e.getY());
162 			
163 			//Si es un fichero
164 			if(FileOpener.isFile(xmlNode)){
165 				XmlNode parentFileNode = searchXmlNode(e.getX()- TransformedViewPane.LEAF_NODE_WIDTH, e.getY());
166 				FileOpener fileOpener = new FileOpener();
167 				fileOpener.openFile(getEniValidator(), xmlNode, parentFileNode);
168 			}
169 		}
170 	}
171 
172 	
173 
174 	/**
175 	 * 
176 	 * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
177 	 */
178 	@Override
179 	public void mouseReleased(MouseEvent e) {
180 	}
181 
182 }