KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > calipso > reportgenerator > userinterface > AplicationView


1 package com.calipso.reportgenerator.userinterface;
2
3 import com.calipso.reportgenerator.common.*;
4 import com.calipso.reportgenerator.reportdefinitions.ReportView;
5 import javax.swing.tree.DefaultMutableTreeNode JavaDoc;
6 import javax.swing.tree.DefaultTreeModel JavaDoc;
7 import javax.swing.*;
8 import javax.swing.event.TreeSelectionListener JavaDoc;
9 import javax.swing.event.TreeSelectionEvent JavaDoc;
10 import java.awt.*;
11 import java.awt.event.ActionListener JavaDoc;
12 import java.awt.event.ActionEvent JavaDoc;
13 import java.awt.event.WindowAdapter JavaDoc;
14 import java.awt.event.WindowEvent JavaDoc;
15 import java.util.Map JavaDoc;
16 import java.io.*;
17 import com.calipso.reportgenerator.common.InfoException;
18 import org.exolab.castor.xml.Unmarshaller;
19 import org.exolab.castor.xml.Marshaller;
20
21 public class AplicationView extends JDialog {
22   private PivotTable pivotTable;
23   private File file;
24   private JLabel usrLabel;
25   private MicroReport microReport;
26
27   public AplicationView(Frame parent, boolean modal,PivotTable pivotTable, MicroReport microReport) throws InfoException {
28     super(parent, modal);
29     Image icon = pivotTable.getPivotTableFrame().getReportGeneratorConfiguration().getImage("icon");
30     if(icon != null) {
31       parent.setIconImage(icon);
32     }
33     this.microReport = microReport;
34     this.pivotTable = pivotTable;
35     try {
36       initComponents();
37     }
38     catch (Exception JavaDoc e) {
39       ShowExceptionMessageDialog.initExceptionDialogMessage(LanguageTraslator.traslate("106"),e);
40     }
41
42   }
43
44   private boolean getIsReadOnly(){
45     return (microReport!=null);
46   }
47   private void initComponents() throws InfoException {
48     centerPanel = new JPanel();
49     centerScrollPanel = new JScrollPane();
50     northPanel = new JPanel();
51     southPanel = new JPanel();
52     closeConteinerBtnPanel = new JPanel();
53     closeBtn = new JButton();
54     conteinerSouthPanel = new JPanel();
55     viewTextFieldName = new JTextField();
56     northSeparatorPanel = new JPanel();
57     usrLabel = new JLabel();
58     boxBtnPanel = new JPanel();
59     addBtn = new JButton();
60     removeBtn = new JButton();
61     applyBtn = new JButton();
62     defaultBtn = new JButton();
63     export = new JButton();
64     importar = new JButton();
65     setTitle(LanguageTraslator.traslate("175"));
66     setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
67     setName("viewDaialog");
68     setResizable(false);
69     addWindowListener(new WindowAdapter JavaDoc() {
70       public void windowClosing(WindowEvent JavaDoc evt) {
71         closeDialog();
72       }
73     });
74
75     centerPanel.setLayout(new BorderLayout());
76
77     centerScrollPanel.setViewportView(createTreeView());
78
79     centerPanel.add(centerScrollPanel, BorderLayout.CENTER);
80
81     getContentPane().add(centerPanel, BorderLayout.CENTER);
82
83     getContentPane().add(northPanel, BorderLayout.NORTH);
84
85     southPanel.setLayout(new BorderLayout());
86
87     closeConteinerBtnPanel.setLayout(new BorderLayout());
88
89     usrLabel.setText(LanguageTraslator.traslate("232"));
90     usrLabel.setPreferredSize(new Dimension(50, 15));
91
92     closeBtn.setText(LanguageTraslator.traslate("132"));
93     closeBtn.setPreferredSize(new Dimension(85, 15));
94
95
96     closeConteinerBtnPanel.add(closeBtn, BorderLayout.CENTER);
97
98     southPanel.add(closeConteinerBtnPanel, BorderLayout.EAST);
99     southPanel.add(usrLabel, BorderLayout.WEST);
100
101     conteinerSouthPanel.setLayout(new BorderLayout());
102
103     conteinerSouthPanel.add(viewTextFieldName, BorderLayout.CENTER);
104
105     northSeparatorPanel.setPreferredSize(new Dimension(0, 1));
106     conteinerSouthPanel.add(northSeparatorPanel, BorderLayout.NORTH);
107
108     southPanel.add(conteinerSouthPanel, BorderLayout.CENTER);
109
110     getContentPane().add(southPanel, BorderLayout.SOUTH);
111
112     boxBtnPanel.setLayout(new BoxLayout(boxBtnPanel, BoxLayout.Y_AXIS));
113
114     addBtn.setText(LanguageTraslator.traslate("179"));
115     addBtn.setToolTipText(LanguageTraslator.traslate("179"));
116     addBtn.setMaximumSize(new Dimension(85, 26));
117     addBtn.setMinimumSize(new Dimension(85, 26));
118     addBtn.setPreferredSize(new Dimension(85, 26));
119     boxBtnPanel.add(addBtn);
120
121     applyBtn.setText(LanguageTraslator.traslate("181"));
122     applyBtn.setToolTipText(LanguageTraslator.traslate("181"));
123     applyBtn.setMaximumSize(new Dimension(85, 26));
124     applyBtn.setMinimumSize(new Dimension(85, 26));
125     applyBtn.setPreferredSize(new Dimension(85, 26));
126     boxBtnPanel.add(applyBtn);
127
128     defaultBtn.setText(LanguageTraslator.traslate("184"));
129     defaultBtn.setMaximumSize(new Dimension(85, 26));
130     defaultBtn.setMinimumSize(new Dimension(85, 26));
131     defaultBtn.setPreferredSize(new Dimension(85, 26));
132     boxBtnPanel.add(defaultBtn);
133
134     export.setText(LanguageTraslator.traslate("182"));
135     export.setMaximumSize(new Dimension(85, 26));
136     export.setMinimumSize(new Dimension(85, 26));
137     export.setPreferredSize(new Dimension(85, 26));
138     boxBtnPanel.add(export);
139
140     importar.setText(LanguageTraslator.traslate("183"));
141     importar.setMaximumSize(new Dimension(85, 26));
142     importar.setMinimumSize(new Dimension(85, 26));
143     importar.setPreferredSize(new Dimension(85, 26));
144     boxBtnPanel.add(importar);
145
146
147     removeBtn.setText(LanguageTraslator.traslate("180"));
148     removeBtn.setMaximumSize(new Dimension(85, 26));
149     removeBtn.setMinimumSize(new Dimension(85, 26));
150     removeBtn.setPreferredSize(new Dimension(85, 26));
151     boxBtnPanel.add(removeBtn);
152
153
154     getContentPane().add(boxBtnPanel, BorderLayout.EAST);
155
156     closeBtn.addActionListener(new ActionListener JavaDoc() {
157       public void actionPerformed(ActionEvent JavaDoc evt) {
158         closeBtnActionPerformed();
159       }
160     });
161
162     addBtn.addActionListener(new ActionListener JavaDoc() {
163       public void actionPerformed(ActionEvent JavaDoc e) {
164         try {
165           if (AcctionsValid()) {addView();}
166         }
167         catch (Exception JavaDoc ex) {
168           ShowExceptionMessageDialog.initExceptionDialogMessage(LanguageTraslator.traslate("215"),ex);
169         }
170       }
171     });
172
173     treeViews.addTreeSelectionListener(new TreeSelectionListener JavaDoc() {
174       public void valueChanged(TreeSelectionEvent JavaDoc e) {
175         setCurrent(e);
176       }
177     });
178
179     removeBtn.addActionListener(new ActionListener JavaDoc() {
180       public void actionPerformed(ActionEvent JavaDoc e) {
181         try{
182           if (AcctionsValid()) {removeView();}
183         }
184         catch (Exception JavaDoc ex) {
185           ShowExceptionMessageDialog.initExceptionDialogMessage(LanguageTraslator.traslate("258"),ex);
186         }
187
188       }
189     });
190     defaultBtn.addActionListener(new ActionListener JavaDoc() {
191       public void actionPerformed(ActionEvent JavaDoc e) {
192         try{
193           if (AcctionsValid()) { defaultView();}
194         }
195         catch (Exception JavaDoc ex) {
196           ShowExceptionMessageDialog.initExceptionDialogMessage(LanguageTraslator.traslate("259"),ex);
197         }
198
199       }
200     });
201
202     applyBtn.addActionListener(new ActionListener JavaDoc() {
203       public void actionPerformed(ActionEvent JavaDoc e) {
204         try {
205           applyView();
206         }
207         catch (Exception JavaDoc ex) {
208           ShowExceptionMessageDialog.initExceptionDialogMessage(LanguageTraslator.traslate("216"),ex);
209         }
210
211       }
212     });
213
214     export.addActionListener(new ActionListener JavaDoc() {
215       public void actionPerformed(ActionEvent JavaDoc e) {
216         exportXML();
217       }
218     });
219
220     importar.addActionListener(new ActionListener JavaDoc() {
221       public void actionPerformed(ActionEvent JavaDoc e) {
222         if (AcctionsValid()) {importXML();}
223       }
224     });
225     pack();
226     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
227     setSize(new java.awt.Dimension JavaDoc(398, 300));
228     setLocation((screenSize.width - 398) / 2, (screenSize.height - 300) / 2);
229   }
230
231   private boolean AcctionsValid() {
232     if (getIsReadOnly()){
233       ShowExceptionMessageDialog.initExceptionDialogMessage(LanguageTraslator.traslate("216"),new InfoException(LanguageTraslator.traslate("272")));
234       return false;
235     }
236     return true;
237   }
238
239   private void importXML() {
240     JFileChooser fileChooser = new JFileChooser();
241     fileChooser.setMultiSelectionEnabled(true);
242     ExtensionFilter filter = new ExtensionFilter(".xml", "*.xml");
243     fileChooser.addChoosableFileFilter(filter);
244     fileChooser.setFileFilter(filter);
245     int mode = fileChooser.showDialog(this, LanguageTraslator.traslate("185"));
246     if (mode == JFileChooser.APPROVE_OPTION) {
247       file = fileChooser.getSelectedFile();
248       try {
249         ReportView reportView = (ReportView) Unmarshaller.unmarshal(ReportView.class, new FileReader(file));
250         getReportManager().saveReportView(reportView);
251       }
252       catch(Exception JavaDoc e){
253         ShowExceptionMessageDialog.initExceptionDialogMessage(LanguageTraslator.traslate("218"),e);
254       }
255     }
256   }
257
258   private void exportXML() {
259     if(!treeViews.isSelectionEmpty() || current.getLevel() > 0) {
260       if (viewTextFieldName.getText().compareToIgnoreCase("") != 0) {
261         JFileChooser fileChooser = new JFileChooser();
262         fileChooser.setMultiSelectionEnabled(true);
263         ExtensionFilter filter = new ExtensionFilter(".xml", "*.xml");
264         fileChooser.addChoosableFileFilter(filter);
265         fileChooser.setFileFilter(filter);
266         int mode = fileChooser.showSaveDialog(this);
267         if (mode == JFileChooser.APPROVE_OPTION) {
268           file = fileChooser.getSelectedFile();
269           try {
270             FileWriter writer = new FileWriter(file);
271             ReportView reportView = pivotTable.getTableProperties().getReportView(file.getName(), pivotTable.getPivotTableFrame().getUserID(), viewTextFieldName.getText());
272             reportView.setDescription(viewTextFieldName.getText());
273             Marshaller.marshal(reportView, writer);
274             writer.flush();
275             writer.close();
276           }
277           catch (Exception JavaDoc e) {
278             ShowExceptionMessageDialog.initExceptionDialogMessage(LanguageTraslator.traslate("217"),e);
279           }
280         }
281       }
282     } else {
283       JOptionPane.showMessageDialog(this, LanguageTraslator.traslate("334"), LanguageTraslator.traslate("335"), JOptionPane.ERROR_MESSAGE);
284     }
285   }
286
287   private void applyView() throws InfoException {
288     if (current.getLevel() > 0) {
289       ReportView reportView=null;
290       PivotTableProperties pivoteTableProperties = pivotTable.getTableProperties();
291       pivoteTableProperties.setConditionManager(pivotTable.getColorConditionManager());
292       if (getIsReadOnly()){
293         reportView = (ReportView)microReport.getViews().get(((DefinitionInfo)current.getUserObject()).getId());
294       } else {
295         reportView = getReportManager().getReportViewFromID(((DefinitionInfo)current.getUserObject()).getId(),getReportResult().getReportSpec().getDefinitionId(),pivotTable.getPivotTableFrame().getUserID());
296       }
297       pivoteTableProperties.assignFromView(reportView);
298       pivotTable.getPivotTableFrame().buildNewQuery(pivoteTableProperties);
299     }
300   }
301
302   private void defaultView() throws InfoException {
303     if(current != null) {
304       if(current.getLevel() != 0) {
305         Map JavaDoc views = getReportManager().getReportViews(getReportResult().getReportSpec().getDefinitionId(), pivotTable.getPivotTableFrame().getUserID());
306         DefinitionInfo definitionInfo = (DefinitionInfo) views.get(current.getUserObject().toString().toUpperCase());
307         getReportManager().assingDefaultView(definitionInfo.getId(), getReportResult().getReportSpec().getDefinitionId(),pivotTable.getPivotTableFrame().getUserID());
308       } else {
309         JOptionPane.showMessageDialog(this, LanguageTraslator.traslate("334"), LanguageTraslator.traslate("335"), JOptionPane.ERROR_MESSAGE);
310       }
311     } else {
312       JOptionPane.showMessageDialog(this, LanguageTraslator.traslate("334"), LanguageTraslator.traslate("335"), JOptionPane.ERROR_MESSAGE);
313     }
314   }
315
316   private void removeView() throws InfoException {
317     if(current != null) {
318       if(current.getLevel() != 0) {
319         getReportManager().deleteReportView(((DefinitionInfo)(current.getUserObject())).getId(), getReportResult().getReportSpec().getDefinitionId(),pivotTable.getPivotTableFrame().getUserID());
320         DefaultMutableTreeNode JavaDoc node = getCurrent();
321         if (node != null && node.isLeaf() && !node.isRoot() && node.getLevel() > 0) {
322           treeModel.removeNodeFromParent(node);
323           treeModel.reload();
324         }
325       } else {
326         JOptionPane.showMessageDialog(this, LanguageTraslator.traslate("334"), LanguageTraslator.traslate("335"), JOptionPane.ERROR_MESSAGE);
327       }
328     } else {
329       JOptionPane.showMessageDialog(this, LanguageTraslator.traslate("334"), LanguageTraslator.traslate("335"), JOptionPane.ERROR_MESSAGE);
330     }
331   }
332
333   private void addView()throws InfoException {
334     if (viewTextFieldName.getText().compareToIgnoreCase("") != 0) {
335       String JavaDoc nameView = viewTextFieldName.getText().trim();
336       DefaultMutableTreeNode JavaDoc node = new DefaultMutableTreeNode JavaDoc(nameView);
337       createReportView(nameView);
338       root.add(node);
339       viewTextFieldName.setText("");
340       treeModel.reload();
341     }
342   }
343
344   private void createReportView(String JavaDoc nameView) throws InfoException {
345     getReportManager().saveReportView(pivotTable.getTableProperties().getReportView(nameView, pivotTable.getPivotTableFrame().getUserID(), nameView));
346   }
347
348
349   private Component createTreeView() throws InfoException {
350     root = new DefaultMutableTreeNode JavaDoc(LanguageTraslator.traslate("109"));
351     treeModel = new DefaultTreeModel JavaDoc(root);
352     Map JavaDoc map = getMapViews();
353     for (int i = 0; i < map.size(); i++) {
354       DefaultMutableTreeNode JavaDoc node = new DefaultMutableTreeNode JavaDoc(map.values().toArray()[i]);
355       root.add(node);
356     }
357     treeViews = new JTree(treeModel);
358     return treeViews;
359   }
360
361   /**Devuelve la lista de vistas para el reporte, si es un Micro report trae de la lista que viene en el Microreport
362    *
363    * @return
364    */

365   public Map JavaDoc getMapViews() throws InfoException {
366     if (getIsReadOnly()){
367       return microReport.getDefinitionsInfo();
368     } else {
369       return getReportManager().getReportViews(getReportResult().getReportSpec().getDefinitionId(),pivotTable.getPivotTableFrame().getUserID());
370     }
371   }
372
373   private void closeBtnActionPerformed() {
374     setVisible(false);
375     dispose();
376   }
377
378   /** Closes the dialog */
379   private void closeDialog() {
380     setVisible(false);
381     dispose();
382   }
383
384   public void setCurrent(TreeSelectionEvent JavaDoc e) {
385     DefaultMutableTreeNode JavaDoc node = (DefaultMutableTreeNode JavaDoc) (e.getPath().getLastPathComponent());
386     this.current = node;
387   }
388
389   public DefaultMutableTreeNode JavaDoc getCurrent() {
390     return current;
391   }
392
393   private IReportManager getReportManager() {
394     return pivotTable.getPivotTableFrame().getReportManager();
395   }
396
397   private ReportResult getReportResult() {
398     return pivotTable.getPivotTableFrame().getReportResult();
399   }
400
401   private JTextField viewTextFieldName;
402   private JPanel northSeparatorPanel;
403   private JButton defaultBtn;
404   private JPanel southPanel;
405   private JPanel centerPanel;
406   private JButton removeBtn;
407   private JButton applyBtn;
408   private JButton addBtn;
409   private JButton export;
410   private JButton importar;
411   private JButton closeBtn;
412   private JPanel closeConteinerBtnPanel;
413   private JPanel boxBtnPanel;
414   private JPanel conteinerSouthPanel;
415   private JScrollPane centerScrollPanel;
416   private JPanel northPanel;
417   private JTree treeViews;
418   private DefaultTreeModel JavaDoc treeModel;
419   private DefaultMutableTreeNode JavaDoc root;
420   private DefaultMutableTreeNode JavaDoc current;
421 }
422
Popular Tags