View Javadoc

1   package es.inteco.eni.swing;
2   
3   import java.awt.BorderLayout;
4   import java.awt.Color;
5   import java.awt.Container;
6   import java.awt.Dimension;
7   import java.awt.Image;
8   import java.awt.event.ActionEvent;
9   import java.awt.event.KeyEvent;
10  import java.io.File;
11  import java.text.SimpleDateFormat;
12  import java.util.ArrayList;
13  import java.util.Date;
14  
15  import javax.swing.AbstractButton;
16  import javax.swing.BorderFactory;
17  import javax.swing.ButtonGroup;
18  import javax.swing.Icon;
19  import javax.swing.ImageIcon;
20  import javax.swing.JButton;
21  import javax.swing.JFrame;
22  import javax.swing.JLabel;
23  import javax.swing.JMenu;
24  import javax.swing.JMenuBar;
25  import javax.swing.JMenuItem;
26  import javax.swing.JPanel;
27  import javax.swing.JRadioButton;
28  import javax.swing.JScrollPane;
29  import javax.swing.JSplitPane;
30  import javax.swing.JTabbedPane;
31  import javax.swing.JTextArea;
32  import javax.swing.KeyStroke;
33  import javax.swing.UIManager;
34  import javax.swing.UnsupportedLookAndFeelException;
35  import javax.swing.border.TitledBorder;
36  
37  import org.apache.log4j.Logger;
38  
39  import es.inteco.eni.commons.ApplicationPropertiesManager;
40  import es.inteco.eni.commons.MessagesHelper;
41  import es.inteco.eni.utils.ExceptionUtils;
42  
43  /**
44   * Ventana principal
45   * 
46   * 
47   *
48   */
49  public class ENIValidator extends JFrame {
50  	/**
51  	 * Log
52  	 */
53  	private static Logger log = Logger.getLogger(ENIValidator.class);
54  	/**
55  	 * Version
56  	 */
57  	private static final long serialVersionUID = 1L;
58  
59  	/**
60  	 * Indice de la pestaña de la vista XML
61  	 */
62  	public static final int XML_VIEW_TAB_INDEX = 0;
63  	/**
64  	 * Inddice de la pestana de la vista transformada
65  	 */
66  	public static final int TRANSFORMED_VIEW_TAB_INDEX = 1;
67  
68  	/**
69  	 * Fichero
70  	 */
71  	private File file;
72  	/**
73  	 * Ruta del fichero
74  	 */
75  	private File parentFile = new File (".");
76  	
77  	/**
78  	 * Ruta de los ficheros abiertos
79  	 */
80  	private File openedFilesFolder = new File (".");
81  
82  	/**
83  	 * Paneles superior
84  	 */
85  	private JPanel topPanel;
86  	/**
87  	 * Panel central
88  	 */
89  	private JPanel centerPanel;
90  	/**
91  	 * Panel inferior
92  	 */
93  	private JPanel bottomPanel;
94  	
95  
96  	/**
97  	 * Consola
98  	 */
99  	private JTextArea consoleTextarea;
100 	/**
101 	 * ScrollPane para la consola
102 	 */
103 	private JScrollPane consoleScrollTextarea;
104 
105 	/**
106 	 * Panel para introducir el textarea del xml
107 	 */
108 	private JPanel xmlPanel;
109 	/**
110 	 * Texarea para el XML
111 	 */
112 	private JTextArea xmlContentTextarea;
113 	/**
114 	 * ScrollPanel para el textarea del XML
115 	 */
116 	private JScrollPane xmlContentScrollTextarea;
117 	/**
118 	 * Panel para la vista transformada
119 	 */
120 	private JPanel viewPanel;
121 	/**
122 	 * Vista transformada del XML en forma de esquema
123 	 */
124 	private TransformedViewPane transformedViewPane;
125 	/**
126 	 * Vista en árbol
127 	 */
128 	private TreeViewPane treeViewPane;
129 
130 	/**
131 	 * Botón nuevo
132 	 */
133 	private JButton newButton;
134 	/**
135 	 * Boton para cargar xml
136 	 */
137 	private JButton loadXmlButton;
138 	/**
139 	 * Boton para guardar xml
140 	 */
141 	private JButton saveXmlButton;
142 	/**
143 	 * Boton para validar
144 	 */
145 	private JButton validateButton;
146 	/**
147 	 * Pestañas
148 	 */
149 	private JTabbedPane tabbedPane;
150 
151 	/**
152 	 * RadioButton para la vista en arbol
153 	 */
154 	private JRadioButton treeViewRadioButton;
155 	/**
156 	 * RadioButton para la vista en forma de esquema
157 	 */
158 	private JRadioButton transformedViewRadioButton;
159 
160 	/**
161 	 * Panel para la representacion gráfica del xml
162 	 */
163 	private JPanel graphicViewPanel;
164 	/**
165 	 * Scrollpane para la vista en esquema
166 	 */
167 	private JScrollPane transformedViewScroll;
168 	/**
169 	 * ScrollPane para la vista en árbol
170 	 */
171 	private JScrollPane treeViewPaneScroll;
172 
173 	/**
174 	 * Icono de la aplicacion
175 	 */
176 	public static Image eniIco = new ImageIcon(ENIValidator.class.getResource("/images/iconEni.jpg")).getImage();
177 
178 	/**
179 	 * Constructor
180 	 * @param title Título de la ventana
181 	 */
182 	public ENIValidator(String title){
183 		super(title);
184 	}
185 
186 
187 	private void addComponentsToPane(Container contentPane) {
188 		//Container de la ventana para establecer los margenes
189 		JPanel container = new JPanel();
190 		container.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
191 		container.setLayout(new BorderLayout(0,0));
192 		contentPane.add(container);
193 
194 		//Panel superior de la ventana
195 		topPanel = new JPanel();
196 		topPanel.setPreferredSize(new Dimension(400,80));
197 		topPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
198 		topPanel.setLayout(new BorderLayout());
199 		container.add(topPanel, BorderLayout.NORTH);
200 		addComponentsToTopPane();
201 		JPanel bottomAndCenterPanel = new JPanel();
202 		bottomAndCenterPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
203 		bottomAndCenterPanel.setLayout(new BorderLayout());
204 		container.add(bottomAndCenterPanel, BorderLayout.CENTER);
205 
206 		
207 		
208 		//Panel central de la ventana
209 		centerPanel = new JPanel();
210 		centerPanel.setLayout(new BorderLayout());
211 		centerPanel.setPreferredSize(new Dimension(400,500));
212 		addComponentsToCenterPane();
213 
214 		//Panel inferior de la ventana
215 		bottomPanel = new JPanel();
216 		bottomPanel.setBorder(getTitlePaneBorder(MessagesHelper.getText("eni.windows.console.pane.title")));
217 		bottomPanel.setLayout(new BorderLayout());
218 		addComponentsToBottomPane();
219 		
220 		JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
221 				centerPanel,
222 				bottomPanel);
223 		splitPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
224 		bottomAndCenterPanel.add(splitPane);
225 
226 	}
227 
228 	/**
229 	 * Devuelve el borde con título de los panels de la ventna
230 	 * @param title Titulo
231 	 */
232 	private TitledBorder getTitlePaneBorder(String title){
233 		return BorderFactory.createTitledBorder(null, title, TitledBorder.LEADING, 
234 				TitledBorder.DEFAULT_POSITION, null, Color.blue);    
235 	}
236 
237 	/**
238 	 * Añade componentes a la parte superior de la ventana
239 	 */
240 	private void addComponentsToTopPane() {
241 		//Panel para los botones
242 		JPanel menuAndIconPanel = new JPanel();
243 		menuAndIconPanel.setLayout(new BorderLayout());
244 		topPanel.add(menuAndIconPanel,BorderLayout.NORTH);
245 
246 		//Panel para el menu
247 		JPanel menuPanel = new JPanel();
248 		menuPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
249 		menuPanel.setLayout(new BorderLayout(0,0));
250 		menuPanel.setPreferredSize(new Dimension(360, 20));
251 		menuAndIconPanel.add(menuPanel,BorderLayout.LINE_START);
252 
253 		
254 		//Icono de inteco
255 		JPanel iconPanel = new JPanel();
256 		iconPanel.setLayout(new BorderLayout());
257 		iconPanel.setBorder(BorderFactory.createEmptyBorder(5,5, 5, 5));
258 		menuAndIconPanel.add(iconPanel,BorderLayout.LINE_END);
259 		Icon intecoIcon = new ImageIcon(ENIValidator.class.getResource("/images/logoEni.png"));
260 		iconPanel.add(new JLabel(intecoIcon),BorderLayout.CENTER);
261 		
262 		
263         //Create the menu bar.
264         JMenuBar menuBar = new JMenuBar();
265 
266         //Menu de archivo
267         JMenu fileMenu = new JMenu(MessagesHelper.getText("eni.windows.menu.file.label"));
268         menuBar.add(fileMenu);
269         
270         //Dentro del menu archivo se añade
271         //Nuevo
272         Icon newXmlButtonIcon = new ImageIcon(ENIValidator.class.getResource("/images/new.png"));
273         JMenuItem newFileMenuItem = new JMenuItem(MessagesHelper.getText("eni.windows.new.button.label"), newXmlButtonIcon);
274         newFileMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
275         newFileMenuItem.setPreferredSize(new Dimension(150, 25));
276         newFileMenuItem.addActionListener(new NewButtonActionListener(this));
277         fileMenu.add(newFileMenuItem);
278         
279         //Cargar XML
280         Icon loadXmlButtonIcon = new ImageIcon(ENIValidator.class.getResource("/images/open.png"));
281         JMenuItem loadXmlMenuItem = new JMenuItem(MessagesHelper.getText("eni.windows.loadxml.button.label"), loadXmlButtonIcon);
282         loadXmlMenuItem.setPreferredSize(new Dimension(150, 25));
283         loadXmlMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.ALT_MASK));
284         loadXmlMenuItem.addActionListener(new LoadXmlButtonActionListener(this));
285         fileMenu.add(loadXmlMenuItem);
286 		
287         //Guardar XML
288         Icon saveXmlButtonIcon = new ImageIcon(ENIValidator.class.getResource("/images/save.png"));
289         JMenuItem saveXmlMenuItem = new JMenuItem(MessagesHelper.getText("eni.windows.savexml.button.label"), saveXmlButtonIcon);
290         saveXmlMenuItem.setPreferredSize(new Dimension(150, 25));
291         saveXmlMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, ActionEvent.ALT_MASK));
292         saveXmlMenuItem.addActionListener(new SaveXmlButtonActionListener(this));
293         fileMenu.add(saveXmlMenuItem);
294 
295         //Guardar XML como...
296         Icon saveAsXmlButtonIcon = new ImageIcon(ENIValidator.class.getResource("/images/saveas.png"));
297         JMenuItem saveAsXmlMenuItem = new JMenuItem(MessagesHelper.getText("eni.windows.saveasxml.button.label"), saveAsXmlButtonIcon);
298         saveAsXmlMenuItem.setPreferredSize(new Dimension(150, 25));
299         saveAsXmlMenuItem.addActionListener(new SaveAsXmlButtonActionListener(this));
300         fileMenu.add(saveAsXmlMenuItem);
301         
302         //Menu de validacion
303         JMenu validationMenu = new JMenu(MessagesHelper.getText("eni.windows.menu.validation.label"));
304         menuBar.add(validationMenu);
305         
306         Icon validateXmlButtonIcon = new ImageIcon(ENIValidator.class.getResource("/images/validate.png"));
307         JMenuItem validateXmlMenuItem = new JMenuItem(MessagesHelper.getText("eni.windows.validate.button.label"), validateXmlButtonIcon);
308         validateXmlMenuItem.setPreferredSize(new Dimension(150, 25));
309         validateXmlMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.ALT_MASK));
310         validateXmlMenuItem.addActionListener(new ValidateButtonActionListener(this));
311         validationMenu.add(validateXmlMenuItem);
312         
313      
314         //Menu de acerca de
315         JMenu aboutAsMenu = new JMenu(MessagesHelper.getText("eni.windows.menu.about.label"));
316         menuBar.add(aboutAsMenu);
317         Icon aboutAsButtonIcon = new ImageIcon(ENIValidator.class.getResource("/images/aboutas.png"));
318         JMenuItem aboutAsMenuItem = new JMenuItem(MessagesHelper.getText("eni.windows.menu.about.label"), aboutAsButtonIcon);
319         aboutAsMenuItem.setPreferredSize(new Dimension(150, 25));
320         aboutAsMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.ALT_MASK));
321         aboutAsMenuItem.addActionListener(new AboutActionListener(this));
322         aboutAsMenu.add(aboutAsMenuItem);
323         menuPanel.add(menuBar,BorderLayout.NORTH);
324         
325         
326         //Panel para los botones
327 		JPanel buttonsPanel = new JPanel();
328 		buttonsPanel.setLayout(null);
329 		menuPanel.add(buttonsPanel,BorderLayout.CENTER);
330 
331 		//Boton de cargar
332 		loadXmlButton = new JButton(MessagesHelper.getText("eni.windows.loadxml.button.label"),loadXmlButtonIcon);
333 		loadXmlButton.setToolTipText(MessagesHelper.getText("eni.windows.loadxml.button.label"));
334 		 loadXmlButton.setBounds(0,0,120,40);
335 		loadXmlButton.addActionListener(new LoadXmlButtonActionListener(this));
336 		loadXmlButton.setVerticalTextPosition(AbstractButton.CENTER);
337 		loadXmlButton.setHorizontalTextPosition(AbstractButton.RIGHT);
338 		buttonsPanel.add(loadXmlButton);
339 
340 		//Boton de guardar
341 		saveXmlButton = new JButton(MessagesHelper.getText("eni.windows.savexml.button.label"), saveXmlButtonIcon);
342 		saveXmlButton.setBounds(120,0,120,40);
343 		saveXmlButton.setToolTipText(MessagesHelper.getText("eni.windows.savexml.button.label"));
344 		saveXmlButton.setVerticalTextPosition(AbstractButton.CENTER);
345 		saveXmlButton.setHorizontalTextPosition(AbstractButton.RIGHT);
346 		saveXmlButton.addActionListener(new SaveXmlButtonActionListener(this));
347 		buttonsPanel.add(saveXmlButton);
348 
349 		//Boton de validar
350 		validateButton = new JButton(MessagesHelper.getText("eni.windows.validate.button.label"), validateXmlButtonIcon);
351 		validateButton.setToolTipText(MessagesHelper.getText("eni.windows.validate.button.label"));
352 		validateButton.setBounds(240,0,120,40);
353 		validateButton.addActionListener(new ValidateButtonActionListener(this));
354 		validateButton.setVerticalTextPosition(AbstractButton.CENTER);
355 		validateButton.setHorizontalTextPosition(AbstractButton.RIGHT);
356 		buttonsPanel.add(validateButton);
357 	}
358 
359 	/**
360 	 * Añade los componentes a la parte central de la ventana
361 	 */
362 	private void addComponentsToCenterPane() {
363 		//Panel para la vista transformada
364 		viewPanel = new JPanel();
365 		viewPanel.setLayout(new BorderLayout());
366 		viewPanel.setBorder(getTitlePaneBorder(MessagesHelper.getText("eni.windows.view.pane.title")));
367 
368 		//Panel para poner los radio buttons en la parte superior
369 		JPanel viewRadiosPanelNorth = new JPanel();
370 		viewRadiosPanelNorth.setLayout(new BorderLayout(10,10));
371 		viewPanel.add(viewRadiosPanelNorth,BorderLayout.NORTH);
372 
373 		//Panel para poner los botones a al izquierda
374 		JPanel viewRadiosPanelLeft = new JPanel();
375 		viewRadiosPanelLeft.setLayout(new BorderLayout(10,10));
376 		viewRadiosPanelNorth.add(viewRadiosPanelLeft,BorderLayout.LINE_START);
377 
378 		//Radio buton para la vista trasnformada en forma de esquema
379 		transformedViewRadioButton = new JRadioButton(MessagesHelper.getText("eni.windows.schema.view.label"));
380 		transformedViewRadioButton.setMnemonic(KeyEvent.VK_T);
381 		transformedViewRadioButton.setPreferredSize(new Dimension(170,20));
382 		transformedViewRadioButton.setSelected(true);
383 		transformedViewRadioButton.addItemListener(new TransformedViewRButtonItemListener(this));
384 		viewRadiosPanelLeft.add(transformedViewRadioButton, BorderLayout.LINE_START);
385 
386 		//Radio button para la vista XML en forma de árbol
387 		treeViewRadioButton = new JRadioButton(MessagesHelper.getText("eni.windows.tree.view.label"));
388 		treeViewRadioButton.setSelected(false);
389 		treeViewRadioButton.setMnemonic(KeyEvent.VK_X);
390 		treeViewRadioButton.setPreferredSize(new Dimension(170,20));
391 		treeViewRadioButton.addItemListener(new TreeViewRButtonItemListener(this));
392 		viewRadiosPanelLeft.add(treeViewRadioButton, BorderLayout.LINE_END);
393 		viewRadiosPanelLeft.setPreferredSize(new Dimension(400, 50));
394 
395 
396 		//Grupo de radio buttons.
397 		ButtonGroup viewsGroup = new ButtonGroup();
398 		viewsGroup.add(treeViewRadioButton);
399 		viewsGroup.add(transformedViewRadioButton);
400 
401 
402 		//Panel para poner la representacion grafica
403 		graphicViewPanel = new JPanel();
404 		graphicViewPanel.setLayout(new BorderLayout(10,10));
405 		viewPanel.add(graphicViewPanel,BorderLayout.CENTER);
406 
407 		//Vista transformada
408 		transformedViewPane = new TransformedViewPane(this);
409 		transformedViewPane.setBackground(Color.white);
410 		transformedViewScroll = new JScrollPane(transformedViewPane);
411 		graphicViewPanel.add(transformedViewScroll, BorderLayout.CENTER);
412 
413 		//Vista en arbol
414 		treeViewPane = new TreeViewPane(this);
415 		treeViewPane.setBackground(Color.white);
416 		treeViewPaneScroll = new JScrollPane(treeViewPane);
417 
418 		//Panel para el texto del XML
419 		xmlPanel = new JPanel();
420 		xmlPanel.setLayout(new BorderLayout());
421 		xmlPanel.setBorder(getTitlePaneBorder(MessagesHelper.getText("eni.windows.xml.pane.title")));
422 
423 
424 		//Textarea para el texto del XML
425 		xmlContentTextarea = new JTextArea();
426 		xmlContentScrollTextarea = new JScrollPane(xmlContentTextarea);
427 		xmlPanel.add(xmlContentScrollTextarea, BorderLayout.CENTER);
428 
429 		tabbedPane = new JTabbedPane();
430 		tabbedPane.addTab(MessagesHelper.getText("eni.windows.xml.view.tabpane.label"), xmlPanel);
431 		tabbedPane.setMnemonicAt(XML_VIEW_TAB_INDEX, KeyEvent.VK_X);
432 		tabbedPane.addTab(MessagesHelper.getText("eni.windows.transformed.view.tabpane.label"), viewPanel);
433 		tabbedPane.setMnemonicAt(TRANSFORMED_VIEW_TAB_INDEX, KeyEvent.VK_T);
434 		tabbedPane.addChangeListener(new ChangeTabListener(this));
435 
436 		centerPanel.add(tabbedPane, BorderLayout.CENTER);
437 	}
438 
439 
440 
441 	/**
442 	 * Añade los componentes 	de la parte inferior de la ventan
443 	 */
444 	private void addComponentsToBottomPane() {
445 		//Textara para la consola
446 		consoleTextarea = new JTextArea();
447 		consoleTextarea.setEditable(false);
448 		consoleTextarea.setLineWrap(true);
449 		consoleTextarea.setBackground(centerPanel.getBackground());
450 		consoleScrollTextarea = new JScrollPane(consoleTextarea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
451 		consoleScrollTextarea.setBorder(null);
452 		bottomPanel.add(consoleScrollTextarea);
453 		bottomPanel.add(consoleScrollTextarea, BorderLayout.CENTER);
454 	}
455 
456 	/**
457 	 * Crea los componentes de la ventana y los muestra
458 	 */
459 	private static void createAndShowGUI() {
460 		//Crea la ventana
461 		ENIValidator eniValidator = new ENIValidator(MessagesHelper.getText("eni.windows.title"));
462 		eniValidator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
463 		Dimension minimumWindowSize= new Dimension(700,700);
464 		eniValidator.setMinimumSize(minimumWindowSize);
465 		eniValidator.setIconImage(eniIco);
466 		
467 		//Crea el contenido de la ventana.
468 		eniValidator.addComponentsToPane(eniValidator.getContentPane());
469 
470 		//Muestra la ventana.
471 		eniValidator.pack();
472 		eniValidator.setExtendedState(MAXIMIZED_BOTH);
473 		eniValidator.setVisible(true);
474 		
475 
476 	}
477 
478 	/**
479 	 * Punto de entrada
480 	 * @param args Argumentos
481 	 */
482 	public static void main(String[] args){
483 		//Aspecto visual
484 		try{
485 			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
486 		} catch (UnsupportedLookAndFeelException ex) {
487 			log.error(ExceptionUtils.stackTraceToString(ex));
488 		} catch (IllegalAccessException ex) {
489 			log.error(ExceptionUtils.stackTraceToString(ex));
490 		} catch (InstantiationException ex) {
491 			log.error(ExceptionUtils.stackTraceToString(ex));
492 		} catch (ClassNotFoundException ex) {
493 			log.error(ExceptionUtils.stackTraceToString(ex));
494 		}
495 
496 		//Crea y muestra la aplicación 
497 		javax.swing.SwingUtilities.invokeLater(new Runnable() {
498 			/**
499 			 * Ejecucion del hilo
500 			 */
501 			public void run() {
502 				createAndShowGUI();
503 			}
504 		});
505 	}
506 
507 
508 	/**
509 	 * @return Devuelve el valor del campo topPanel
510 	 */
511 	public JPanel getTopPanel() {
512 		return topPanel;
513 	}
514 
515 	/**
516 	 * @param Asigna al campo topPanel el valor del parámetro topPanel
517 	 */
518 	public void setTopPanel(JPanel topPanel) {
519 		this.topPanel = topPanel;
520 	}
521 
522 	/**
523 	 * @return Devuelve el valor del campo centerPanel
524 	 */
525 	public JPanel getCenterPanel() {
526 		return centerPanel;
527 	}
528 
529 	/**
530 	 * @param Asigna al campo centerPanel el valor del parámetro centerPanel
531 	 */
532 	public void setCenterPanel(JPanel centerPanel) {
533 		this.centerPanel = centerPanel;
534 	}
535 
536 	/**
537 	 * @return Devuelve el valor del campo bottomPanel
538 	 */
539 	public JPanel getBottomPanel() {
540 		return bottomPanel;
541 	}
542 
543 	/**
544 	 * @param Asigna al campo bottomPanel el valor del parámetro bottomPanel
545 	 */
546 	public void setBottomPanel(JPanel bottomPanel) {
547 		this.bottomPanel = bottomPanel;
548 	}
549 
550 	/**
551 	 * @return Devuelve el valor del campo consoleTextarea
552 	 */
553 	public JTextArea getConsoleTextarea() {
554 		return consoleTextarea;
555 	}
556 
557 	/**
558 	 * @param Asigna al campo consoleTextarea el valor del parámetro consoleTextarea
559 	 */
560 	public void setConsoleTextarea(JTextArea consoleTextarea) {
561 		this.consoleTextarea = consoleTextarea;
562 	}
563 
564 	/**
565 	 * @return Devuelve el valor del campo consoleScrollTextarea
566 	 */
567 	public JScrollPane getConsoleScrollTextarea() {
568 		return consoleScrollTextarea;
569 	}
570 
571 	/**
572 	 * @param Asigna al campo consoleScrollTextarea el valor del parámetro consoleScrollTextarea
573 	 */
574 	public void setConsoleScrollTextarea(JScrollPane consoleScrollTextarea) {
575 		this.consoleScrollTextarea = consoleScrollTextarea;
576 	}
577 
578 	/**
579 	 * @return Devuelve el valor del campo xmlContentTextarea
580 	 */
581 	public JTextArea getXmlContentTextarea() {
582 		return xmlContentTextarea;
583 	}
584 
585 	/**
586 	 * @param Asigna al campo xmlContentTextarea el valor del parámetro xmlContentTextarea
587 	 */
588 	public void setXmlContentTextarea(JTextArea xmlContentTextarea) {
589 		this.xmlContentTextarea = xmlContentTextarea;
590 	}
591 
592 	/**
593 	 * @return Devuelve el valor del campo xmlContentScrollTextarea
594 	 */
595 	public JScrollPane getXmlContentScrollTextarea() {
596 		return xmlContentScrollTextarea;
597 	}
598 
599 	/**
600 	 * @param Asigna al campo xmlContentScrollTextarea el valor del parámetro xmlContentScrollTextarea
601 	 */
602 	public void setXmlContentScrollTextarea(JScrollPane xmlContentScrollTextarea) {
603 		this.xmlContentScrollTextarea = xmlContentScrollTextarea;
604 	}
605 
606 	/**
607 	 * @return Devuelve el valor del campo loadXmlButton
608 	 */
609 	public JButton getLoadXmlButton() {
610 		return loadXmlButton;
611 	}
612 
613 	/**
614 	 * @param Asigna al campo loadXmlButton el valor del parámetro loadXmlButton
615 	 */
616 	public void setLoadXmlButton(JButton loadXmlButton) {
617 		this.loadXmlButton = loadXmlButton;
618 	}
619 
620 	/**
621 	 * @return Devuelve el valor del campo saveXmlButton
622 	 */
623 	public JButton getSaveXmlButton() {
624 		return saveXmlButton;
625 	}
626 
627 	/**
628 	 * @param Asigna al campo saveXmlButton el valor del parámetro saveXmlButton
629 	 */
630 	public void setSaveXmlButton(JButton saveXmlButton) {
631 		this.saveXmlButton = saveXmlButton;
632 	}
633 
634 	/**
635 	 * @return Devuelve el valor del campo validateButton
636 	 */
637 	public JButton getValidateButton() {
638 		return validateButton;
639 	}
640 
641 	/**
642 	 * @param Asigna al campo validateButton el valor del parámetro validateButton
643 	 */
644 	public void setValidateButton(JButton validateButton) {
645 		this.validateButton = validateButton;
646 	}
647 
648 
649 	/**
650 	 * @return Devuelve el valor del campo xmlPanel
651 	 */
652 	public JPanel getXmlPanel() {
653 		return xmlPanel;
654 	}
655 
656 	/**
657 	 * @param Asigna al campo xmlPanel el valor del parámetro xmlPanel
658 	 */
659 	public void setXmlPanel(JPanel xmlPanel) {
660 		this.xmlPanel = xmlPanel;
661 	}
662 
663 	/**
664 	 * @return Devuelve el valor del campo viewPanel
665 	 */
666 	public JPanel getViewPanel() {
667 		return viewPanel;
668 	}
669 
670 	/**
671 	 * @param Asigna al campo viewPanel el valor del parámetro viewPanel
672 	 */
673 	public void setViewPanel(JPanel viewPanel) {
674 		this.viewPanel = viewPanel;
675 	}
676 
677 
678 	/**
679 	 * @return Devuelve el valor del campo file
680 	 */
681 	public File getFile() {
682 		return file;
683 	}
684 
685 	/**
686 	 * @param Asigna al campo file el valor del parámetro file
687 	 */
688 	public void setFile(File file) {
689 		this.file = file;
690 	}
691 
692 	
693 
694 	/**
695 	 * @return Devuelve el valor del campo parentFile
696 	 */
697 	public File getParentFile() {
698 		return parentFile;
699 	}
700 
701 
702 	/**
703 	 * @param Asigna al campo parentFile el valor del parámetro parentFile
704 	 */
705 	public void setParentFile(File parentFile) {
706 		this.parentFile = parentFile;
707 	}
708 
709 	
710 
711 	/**
712 	 * @return Devuelve el valor del campo openedFilesFolder
713 	 */
714 	public File getOpenedFilesFolder() {
715 		return openedFilesFolder;
716 	}
717 
718 
719 	/**
720 	 * @param Asigna al campo openedFilesFolder el valor del parámetro openedFilesFolder
721 	 */
722 	public void setOpenedFilesFolder(File openedFilesFolder) {
723 		this.openedFilesFolder = openedFilesFolder;
724 	}
725 
726 
727 	/**
728 	 * @return Devuelve el valor del campo transformedViewPane
729 	 */
730 	public TransformedViewPane getTransformedViewPane() {
731 		return transformedViewPane;
732 	}
733 
734 
735 	/**
736 	 * @param Asigna al campo transformedViewPane el valor del parámetro transformedViewPane
737 	 */
738 	public void setTransformedViewPane(TransformedViewPane transformedViewPane) {
739 		this.transformedViewPane = transformedViewPane;
740 	}
741 
742 	/**
743 	 * @return Devuelve el valor del campo newButton
744 	 */
745 	public JButton getNewButton() {
746 		return newButton;
747 	}
748 
749 
750 	/**
751 	 * @param Asigna al campo newButton el valor del parámetro newButton
752 	 */
753 	public void setNewButton(JButton newButton) {
754 		this.newButton = newButton;
755 	}
756 
757 
758 	/**
759 	 * @return Devuelve el valor del campo tabbedPane
760 	 */
761 	public JTabbedPane getTabbedPane() {
762 		return tabbedPane;
763 	}
764 
765 
766 	/**
767 	 * @param Asigna al campo tabbedPane el valor del parámetro tabbedPane
768 	 */
769 	public void setTabbedPane(JTabbedPane tabbedPane) {
770 		this.tabbedPane = tabbedPane;
771 	}
772 
773 	/**
774 	 * @return Devuelve el valor del campo treeViewRadioButton
775 	 */
776 	public JRadioButton getTreeViewRadioButton() {
777 		return treeViewRadioButton;
778 	}
779 
780 	/**
781 	 * @param Asigna al campo treeViewRadioButton el valor del parámetro treeViewRadioButton
782 	 */
783 	public void setTreeViewRadioButton(JRadioButton treeViewRadioButton) {
784 		this.treeViewRadioButton = treeViewRadioButton;
785 	}
786 
787 	/**
788 	 * @return Devuelve el valor del campo transformedViewRadioButton
789 	 */
790 	public JRadioButton getTransformedViewRadioButton() {
791 		return transformedViewRadioButton;
792 	}
793 
794 	/**
795 	 * @param Asigna al campo transformedViewRadioButton el valor del parámetro transformedViewRadioButton
796 	 */
797 	public void setTransformedViewRadioButton(
798 			JRadioButton transformedViewRadioButton) {
799 		this.transformedViewRadioButton = transformedViewRadioButton;
800 	}
801 
802 	/**
803 	 * @return Devuelve el valor del campo graphicViewPanel
804 	 */
805 	public JPanel getGraphicViewPanel() {
806 		return graphicViewPanel;
807 	}
808 
809 	/**
810 	 * @param Asigna al campo graphicViewPanel el valor del parámetro graphicViewPanel
811 	 */
812 	public void setGraphicViewPanel(JPanel graphicViewPanel) {
813 		this.graphicViewPanel = graphicViewPanel;
814 	}
815 	
816 	/**
817 	 * @return Devuelve el valor del campo treeViewPane
818 	 */
819 	public TreeViewPane getTreeViewPane() {
820 		return treeViewPane;
821 	}
822 
823 
824 	/**
825 	 * @param Asigna al campo treeViewPane el valor del parámetro treeViewPane
826 	 */
827 	public void setTreeViewPane(TreeViewPane treeViewPane) {
828 		this.treeViewPane = treeViewPane;
829 	}
830 
831 	/**
832 	 * @return Devuelve el valor del campo transformedViewScroll
833 	 */
834 	public JScrollPane getTransformedViewScroll() {
835 		return transformedViewScroll;
836 	}
837 
838 	/**
839 	 * @param Asigna al campo transformedViewScroll el valor del parámetro transformedViewScroll
840 	 */
841 	public void setTransformedViewScroll(JScrollPane transformedViewScroll) {
842 		this.transformedViewScroll = transformedViewScroll;
843 	}
844 
845 
846 	/**
847 	 * @return Devuelve el valor del campo treeViewPaneScroll
848 	 */
849 	public JScrollPane getTreeViewPaneScroll() {
850 		return treeViewPaneScroll;
851 	}
852 
853 
854 	/**
855 	 * @param Asigna al campo treeViewPaneScroll el valor del parámetro treeViewPaneScroll
856 	 */
857 	public void setTreeViewPaneScroll(JScrollPane treeViewPaneScroll) {
858 		this.treeViewPaneScroll = treeViewPaneScroll;
859 	}
860 
861 	/**
862 	 * Limpia la consola
863 	 */
864 	public void cleanConsole(){
865 		getConsoleTextarea().setText("");
866 	}
867 
868 	/**
869 	 * Limpia el fichero
870 	 */
871 	public void cleanFile(){
872 		setFile(null);
873 	}
874 
875 	/**
876 	 * Limpia el contenido XML
877 	 */
878 	public void cleanXmlContent(){
879 		getXmlContentTextarea().setText("");
880 	}
881 
882 	/**
883 	 * Limpia la vista transformada
884 	 */
885 	public void cleanTransformedView(){
886 		getTransformedViewPane().setXmlNodePositions(new ArrayList<XmlNodePosition>());
887 		getTransformedViewPane().setXmlTree(null);
888 	}
889 	
890 	/**
891 	 * Limpia la vista transformada
892 	 */
893 	public void cleanTreeView(){
894 		getTreeViewPane().setXmlTree(null);
895 	}
896 	/**
897 	 * Limpia todo
898 	 */
899 	public void cleanAll(){
900 		cleanFile();
901 		cleanConsole();
902 		cleanXmlContent();
903 		cleanTransformedView();
904 		cleanTreeView();
905 		setTitle(MessagesHelper.getText("eni.windows.title"));
906 	}
907 
908 	/**
909 	 * Añade un mensaje a la consola
910 	 * @param message
911 	 */
912 	public  void appendConsoleMessage(String message){
913 		String text = getConsoleTextarea().getText();
914 		if(text!=null && !"".equals(text)){
915 			getConsoleTextarea().append(System.getProperty("line.separator"));
916 		}
917 		getConsoleTextarea().append(getConsoleMessage(message));
918 		getConsoleTextarea().setCaretPosition(getConsoleTextarea().getDocument().getLength());
919 	}
920 	
921 	/**
922 	 * Construye el mensaje para la consola
923 	 * @param message Mensaje
924 	 * @return Mensaje para la consola
925 	 */
926 	private String getConsoleMessage(String message){
927 		SimpleDateFormat sdf = new SimpleDateFormat(ApplicationPropertiesManager.getProperty("eni.console.date.format"));
928 		String dateStr = sdf.format(new Date());
929 		return dateStr + ": " + message;
930 
931 	}
932 	
933 }