1 package es.inteco.eni.swing;
2
3 import java.io.IOException;
4
5 import javax.swing.JOptionPane;
6 import javax.swing.JTabbedPane;
7 import javax.swing.event.ChangeEvent;
8 import javax.swing.event.ChangeListener;
9
10 import org.apache.log4j.Logger;
11
12 import es.inteco.eni.commons.MessagesHelper;
13 import es.inteco.eni.utils.ExceptionUtils;
14 import es.inteco.eni.xml.ENIXmlUtils;
15 import es.inteco.eni.xml.ValidationXmlResult;
16
17
18
19
20
21
22
23 public class ChangeTabListener implements ChangeListener{
24
25
26
27 private static Logger log = Logger.getLogger(ChangeTabListener.class);
28
29
30
31 private ENIValidator eniValidator;
32
33
34
35
36
37 public ChangeTabListener(ENIValidator eniValidator){
38 this.eniValidator = eniValidator;
39 }
40
41
42
43
44
45 @Override
46 public void stateChanged(ChangeEvent evt) {
47 JTabbedPane pane = (JTabbedPane)evt.getSource();
48
49 int selectedTab = pane.getSelectedIndex();
50 eniValidator.cleanConsole();
51 eniValidator.getTransformedViewPane().setXmlTree(null);
52 if(selectedTab == ENIValidator.TRANSFORMED_VIEW_TAB_INDEX){
53
54 eniValidator.appendConsoleMessage(MessagesHelper.getText("eni.view.build.message"));
55 eniValidator.getTransformedViewRadioButton().setSelected(true);
56
57 eniValidator.getGraphicViewPanel().removeAll();
58 eniValidator.getGraphicViewPanel().add(eniValidator.getTransformedViewScroll());
59 eniValidator.repaint();
60
61 new XMLTreeThread(eniValidator).start();
62 }
63
64 }
65
66
67
68
69
70
71 private static final class XMLTreeThread extends Thread {
72
73
74
75 private ENIValidator eniValidator;
76
77
78
79
80
81 private XMLTreeThread(ENIValidator eniValidator){
82 this.eniValidator = eniValidator;
83 }
84
85
86
87
88
89 @Override
90 public void run() {
91 try{
92
93 String xmlContent = eniValidator.getXmlContentTextarea().getText();
94
95 String filePath = eniValidator.getFile()!=null && eniValidator.getParentFile()!=null? eniValidator.getParentFile().getAbsolutePath() : "";
96 ValidationXmlResult validationXmlResult = ENIXmlUtils.validateWithExtXSD(xmlContent, filePath);
97
98 if(!validationXmlResult.isValidationError()){
99
100 eniValidator.getTransformedViewPane().setXmlTree(validationXmlResult.getXmlTree());
101 eniValidator.getTreeViewPane().setXmlTree(validationXmlResult.getXmlTree());
102 eniValidator.cleanConsole();
103 }else{
104
105 eniValidator.appendConsoleMessage(MessagesHelper.getText("eni.view.error.message"));
106 }
107 eniValidator.repaint();
108 }catch (IOException ioe) {
109 log.error(ExceptionUtils.stackTraceToString(ioe));
110 JOptionPane.showMessageDialog(eniValidator,
111 MessagesHelper.getText("eni.load.xml.error.message"),
112 MessagesHelper.getText("eni.load.xml.error.title"),
113 JOptionPane.ERROR_MESSAGE);
114 }
115 }
116 }
117 }