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 ; 6 import javax.swing.tree.DefaultTreeModel ; 7 import javax.swing.*; 8 import javax.swing.event.TreeSelectionListener ; 9 import javax.swing.event.TreeSelectionEvent ; 10 import java.awt.*; 11 import java.awt.event.ActionListener ; 12 import java.awt.event.ActionEvent ; 13 import java.awt.event.WindowAdapter ; 14 import java.awt.event.WindowEvent ; 15 import java.util.Map ; 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 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 () { 70 public void windowClosing(WindowEvent 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 () { 157 public void actionPerformed(ActionEvent evt) { 158 closeBtnActionPerformed(); 159 } 160 }); 161 162 addBtn.addActionListener(new ActionListener () { 163 public void actionPerformed(ActionEvent e) { 164 try { 165 if (AcctionsValid()) {addView();} 166 } 167 catch (Exception ex) { 168 ShowExceptionMessageDialog.initExceptionDialogMessage(LanguageTraslator.traslate("215"),ex); 169 } 170 } 171 }); 172 173 treeViews.addTreeSelectionListener(new TreeSelectionListener () { 174 public void valueChanged(TreeSelectionEvent e) { 175 setCurrent(e); 176 } 177 }); 178 179 removeBtn.addActionListener(new ActionListener () { 180 public void actionPerformed(ActionEvent e) { 181 try{ 182 if (AcctionsValid()) {removeView();} 183 } 184 catch (Exception ex) { 185 ShowExceptionMessageDialog.initExceptionDialogMessage(LanguageTraslator.traslate("258"),ex); 186 } 187 188 } 189 }); 190 defaultBtn.addActionListener(new ActionListener () { 191 public void actionPerformed(ActionEvent e) { 192 try{ 193 if (AcctionsValid()) { defaultView();} 194 } 195 catch (Exception ex) { 196 ShowExceptionMessageDialog.initExceptionDialogMessage(LanguageTraslator.traslate("259"),ex); 197 } 198 199 } 200 }); 201 202 applyBtn.addActionListener(new ActionListener () { 203 public void actionPerformed(ActionEvent e) { 204 try { 205 applyView(); 206 } 207 catch (Exception ex) { 208 ShowExceptionMessageDialog.initExceptionDialogMessage(LanguageTraslator.traslate("216"),ex); 209 } 210 211 } 212 }); 213 214 export.addActionListener(new ActionListener () { 215 public void actionPerformed(ActionEvent e) { 216 exportXML(); 217 } 218 }); 219 220 importar.addActionListener(new ActionListener () { 221 public void actionPerformed(ActionEvent e) { 222 if (AcctionsValid()) {importXML();} 223 } 224 }); 225 pack(); 226 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 227 setSize(new java.awt.Dimension (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 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 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 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 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 nameView = viewTextFieldName.getText().trim(); 336 DefaultMutableTreeNode node = new DefaultMutableTreeNode (nameView); 337 createReportView(nameView); 338 root.add(node); 339 viewTextFieldName.setText(""); 340 treeModel.reload(); 341 } 342 } 343 344 private void createReportView(String 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 (LanguageTraslator.traslate("109")); 351 treeModel = new DefaultTreeModel (root); 352 Map map = getMapViews(); 353 for (int i = 0; i < map.size(); i++) { 354 DefaultMutableTreeNode node = new DefaultMutableTreeNode (map.values().toArray()[i]); 355 root.add(node); 356 } 357 treeViews = new JTree(treeModel); 358 return treeViews; 359 } 360 361 365 public Map 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 379 private void closeDialog() { 380 setVisible(false); 381 dispose(); 382 } 383 384 public void setCurrent(TreeSelectionEvent e) { 385 DefaultMutableTreeNode node = (DefaultMutableTreeNode ) (e.getPath().getLastPathComponent()); 386 this.current = node; 387 } 388 389 public DefaultMutableTreeNode 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 treeModel; 419 private DefaultMutableTreeNode root; 420 private DefaultMutableTreeNode current; 421 } 422 | Popular Tags |