1 32 33 package it.businesslogic.ireport.chart.gui; 34 import it.businesslogic.ireport.gui.*; 35 import it.businesslogic.ireport.*; 36 import javax.swing.tree.*; 37 import javax.swing.table.*; 38 import javax.swing.*; 39 import it.businesslogic.ireport.chart.*; 40 import java.util.*; 41 import it.businesslogic.ireport.gui.sheet.*; 42 import it.businesslogic.ireport.gui.listview.*; 43 import it.businesslogic.ireport.util.I18n; 44 48 public class IReportChartDialog extends javax.swing.JDialog { 49 50 private java.util.Properties properties = null; 51 private int dialogResult = javax.swing.JOptionPane.OK_OPTION; 52 private JReportFrame jReportFrame = null; 53 private it.businesslogic.ireport.gui.sheet.SheetPanel sheetPanel = null; 54 private it.businesslogic.ireport.gui.listview.JListView jListView = null; 55 private JList jList1 = null; 56 57 58 public IReportChartDialog(java.awt.Dialog parent, boolean modal) { 59 super(parent, modal); 60 initAll(); 61 62 } 63 64 public IReportChartDialog(java.awt.Frame parent, boolean modal) { 65 super(parent, modal); 66 initAll(); 67 68 } 69 70 71 public void initAll() 72 { 73 initComponents(); 74 75 this.setDialogResult( javax.swing.JOptionPane.CANCEL_OPTION); 76 jListView = new JListView(); 77 jList1 = (JList)jListView.getList(); 78 79 80 jPanelChartType.add(jListView, java.awt.BorderLayout.CENTER); 81 82 javax.swing.DefaultListModel dlm = new javax.swing.DefaultListModel () ; 83 jList1.setModel(dlm ); 84 jList1.setCellRenderer(new ChartCellRenderer()); 85 86 87 88 89 sheetPanel = new it.businesslogic.ireport.gui.sheet.SheetPanel(); 90 105 java.util.Vector charts = AvailableCharts.getAvailableCharts(); 106 107 for (int i=0; i<charts.size(); ++i) 108 { 109 dlm.addElement(charts.elementAt(i)); 110 } 111 jList1.updateUI(); 112 113 String [] values = new String []{}; 114 115 TableColumn col = jTable1.getColumnModel().getColumn(1); 116 col.setCellEditor(new ComboCellEditor(values)); 117 col.setCellRenderer(new ComboBoxRenderer(values)); 118 119 jTabbedPane1.updateUI(); 120 121 this.jTable1.setRowHeight(24); 122 123 java.awt.GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints (); 124 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 125 gridBagConstraints.weightx = 1.0; 126 gridBagConstraints.weighty = 1.0; 127 gridBagConstraints.insets = new java.awt.Insets (4, 4, 4, 4); 128 jPanelDetails.add(sheetPanel, gridBagConstraints); 129 130 jList1.setLayoutOrientation( JList.HORIZONTAL_WRAP); 131 this.setSize(400,400); 132 it.businesslogic.ireport.util.Misc.centerFrame(this); 133 134 jList1.setSelectionMode( DefaultListSelectionModel.SINGLE_SELECTION ); 135 jList1.addListSelectionListener( new javax.swing.event.ListSelectionListener () { 136 public void valueChanged(javax.swing.event.ListSelectionEvent e) 137 { 138 selectedChart(); 139 } 140 141 }); 142 143 javax.swing.KeyStroke escape = javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0, false); 144 javax.swing.Action escapeAction = new javax.swing.AbstractAction () { 145 public void actionPerformed(java.awt.event.ActionEvent e) { 146 jButton7ActionPerformed(e); 147 } 148 }; 149 150 getRootPane().getInputMap(javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "ESCAPE"); 151 getRootPane().getActionMap().put("ESCAPE", escapeAction); 152 153 154 applyI18n(); 155 156 this.getRootPane().setDefaultButton(this.jButton6); 158 } 159 160 public void updateSeriesComboBoxes() 161 { 162 163 Vector values = new Vector(); 164 if (getJReportFrame() == null) return; 165 166 values.add( "" ); 167 169 Enumeration var_enum = getJReportFrame().getReport().getVariables().elements(); 170 while (var_enum.hasMoreElements()) 171 { 172 JRVariable var = (JRVariable)var_enum.nextElement(); 173 if (var.getName().startsWith("SERIE_")) 174 { 175 values.add( var.getName() ); 176 } 177 } 178 179 TableColumn col = jTable1.getColumnModel().getColumn(1); 180 col.setCellEditor(new ComboCellEditor(values)); 181 col.setCellRenderer(new ComboBoxRenderer(values)); 182 183 jTabbedPane1.updateUI(); 184 } 185 186 public JReportFrame getJReportFrame() { 187 188 return jReportFrame; 189 } 190 191 public void setJReportFrame(JReportFrame jReportFrame) { 192 193 this.jReportFrame = jReportFrame; 194 updateSeriesComboBoxes(); 195 } 196 197 public void setProperties(java.util.Properties props) 198 { 199 this.properties = props; 200 String chartName = props.getProperty("chartName","pie"); 202 DefaultListModel dlm = (DefaultListModel)jList1.getModel(); 203 boolean found = false; 204 for (int i=0; i<dlm.getSize(); i++ ) 205 { 206 ChartDefinition cd = (ChartDefinition)dlm.getElementAt(i); 207 if (cd.getChartName().equals( chartName )) 208 { 209 jList1.setSelectedIndex(i); 210 found = true; 211 break; 212 } 213 } 214 215 216 if (!found) jList1.setSelectedIndex(0);; 217 218 for (int i=0; ; i++) 219 { 220 if ( props.getProperty("serie"+i) != null) 221 { 222 String var = props.getProperty("serie"+i); 223 224 if (jTable1.getRowCount() < i) 225 { 226 ((DefaultTableModel)jTable1.getModel()).addRow(new Object []{"Serie", var}); 227 } 228 else 229 { 230 DefaultTableModel dtm = (DefaultTableModel)jTable1.getModel(); 231 try { 232 dtm.setValueAt(var,i,1); 233 } catch (Exception ex){ 234 props.remove("serie"+i); 235 } 236 } 237 } 238 else 239 { 240 break; 241 } 242 } 243 244 245 246 247 } 248 249 public int getDialogResult() { 250 return dialogResult; 251 } 252 253 public void setDialogResult(int dialogResult) { 254 this.dialogResult = dialogResult; 255 } 256 257 public java.util.Properties getProperties() { 258 return properties; 259 } 260 261 262 267 private void initComponents() { 269 java.awt.GridBagConstraints gridBagConstraints; 270 271 jTabbedPane1 = new javax.swing.JTabbedPane (); 272 jPanelChartType = new javax.swing.JPanel (); 273 jPanel5 = new javax.swing.JPanel (); 274 jLabelChartName = new javax.swing.JLabel (); 275 jLabelChartNameVal = new javax.swing.JLabel (); 276 jLabelSeries = new javax.swing.JLabel (); 277 jLabelSeriesVal = new javax.swing.JLabel (); 278 jLabelFactory = new javax.swing.JLabel (); 279 jLabelFactoryVal = new javax.swing.JLabel (); 280 jPanel6 = new javax.swing.JPanel (); 281 jPanelData = new javax.swing.JPanel (); 282 jScrollPane3 = new javax.swing.JScrollPane (); 283 jTable1 = new javax.swing.JTable (); 284 jPanel2 = new javax.swing.JPanel (); 285 jButton1 = new javax.swing.JButton (); 286 jButtonAddDataSerie = new javax.swing.JButton (); 287 jPanel3 = new javax.swing.JPanel (); 288 jPanelDetails = new javax.swing.JPanel (); 289 jPanel1 = new javax.swing.JPanel (); 290 jPanel4 = new javax.swing.JPanel (); 291 jButton6 = new javax.swing.JButton (); 292 jButton7 = new javax.swing.JButton (); 293 294 setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 295 setTitle("Chart properties"); 296 jPanelChartType.setLayout(new java.awt.BorderLayout ()); 297 298 jPanel5.setLayout(new java.awt.GridBagLayout ()); 299 300 jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Chart info")); 301 jPanel5.setMinimumSize(new java.awt.Dimension (10, 100)); 302 jPanel5.setPreferredSize(new java.awt.Dimension (10, 100)); 303 jLabelChartName.setText("Chart type"); 304 gridBagConstraints = new java.awt.GridBagConstraints (); 305 gridBagConstraints.gridx = 0; 306 gridBagConstraints.gridy = 0; 307 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 308 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 309 gridBagConstraints.insets = new java.awt.Insets (0, 0, 0, 4); 310 jPanel5.add(jLabelChartName, gridBagConstraints); 311 312 gridBagConstraints = new java.awt.GridBagConstraints (); 313 gridBagConstraints.gridx = 1; 314 gridBagConstraints.gridy = 0; 315 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 316 gridBagConstraints.ipadx = 1; 317 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 318 gridBagConstraints.weightx = 1.0; 319 gridBagConstraints.insets = new java.awt.Insets (0, 0, 0, 4); 320 jPanel5.add(jLabelChartNameVal, gridBagConstraints); 321 322 jLabelSeries.setText("Series"); 323 gridBagConstraints = new java.awt.GridBagConstraints (); 324 gridBagConstraints.gridx = 0; 325 gridBagConstraints.gridy = 1; 326 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 327 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 328 gridBagConstraints.insets = new java.awt.Insets (0, 0, 0, 4); 329 jPanel5.add(jLabelSeries, gridBagConstraints); 330 331 gridBagConstraints = new java.awt.GridBagConstraints (); 332 gridBagConstraints.gridx = 1; 333 gridBagConstraints.gridy = 1; 334 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 335 gridBagConstraints.ipadx = 1; 336 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 337 gridBagConstraints.weightx = 1.0; 338 gridBagConstraints.insets = new java.awt.Insets (0, 0, 0, 4); 339 jPanel5.add(jLabelSeriesVal, gridBagConstraints); 340 341 jLabelFactory.setText("Factory"); 342 gridBagConstraints = new java.awt.GridBagConstraints (); 343 gridBagConstraints.gridx = 0; 344 gridBagConstraints.gridy = 2; 345 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 346 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 347 gridBagConstraints.insets = new java.awt.Insets (0, 0, 0, 4); 348 jPanel5.add(jLabelFactory, gridBagConstraints); 349 350 gridBagConstraints = new java.awt.GridBagConstraints (); 351 gridBagConstraints.gridx = 1; 352 gridBagConstraints.gridy = 2; 353 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 354 gridBagConstraints.ipadx = 1; 355 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 356 gridBagConstraints.weightx = 1.0; 357 gridBagConstraints.insets = new java.awt.Insets (0, 0, 0, 4); 358 jPanel5.add(jLabelFactoryVal, gridBagConstraints); 359 360 gridBagConstraints = new java.awt.GridBagConstraints (); 361 gridBagConstraints.gridx = 0; 362 gridBagConstraints.weighty = 1.0; 363 jPanel5.add(jPanel6, gridBagConstraints); 364 365 jPanelChartType.add(jPanel5, java.awt.BorderLayout.SOUTH); 366 367 jTabbedPane1.addTab("Chart type", jPanelChartType); 368 369 jPanelData.setLayout(new java.awt.GridBagLayout ()); 370 371 jTable1.setModel(new javax.swing.table.DefaultTableModel ( 372 new Object [][] { 373 374 }, 375 new String [] { 376 "Serie name", "Variable" 377 } 378 ) { 379 boolean[] canEdit = new boolean [] { 380 false, true 381 }; 382 383 public boolean isCellEditable(int rowIndex, int columnIndex) { 384 return canEdit [columnIndex]; 385 } 386 }); 387 jScrollPane3.setViewportView(jTable1); 388 389 gridBagConstraints = new java.awt.GridBagConstraints (); 390 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 391 gridBagConstraints.weightx = 1.0; 392 gridBagConstraints.weighty = 1.0; 393 gridBagConstraints.insets = new java.awt.Insets (4, 4, 4, 4); 394 jPanelData.add(jScrollPane3, gridBagConstraints); 395 396 jPanel2.setLayout(new java.awt.GridBagLayout ()); 397 398 jPanel2.setMinimumSize(new java.awt.Dimension (100, 151)); 399 jPanel2.setPreferredSize(new java.awt.Dimension (140, 100)); 400 jButton1.setText("Report series"); 401 jButton1.addActionListener(new java.awt.event.ActionListener () { 402 public void actionPerformed(java.awt.event.ActionEvent evt) { 403 jButton1ActionPerformed(evt); 404 } 405 }); 406 407 gridBagConstraints = new java.awt.GridBagConstraints (); 408 gridBagConstraints.gridx = 0; 409 gridBagConstraints.gridy = 1; 410 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 411 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 412 gridBagConstraints.weightx = 1.0; 413 gridBagConstraints.insets = new java.awt.Insets (4, 0, 0, 0); 414 jPanel2.add(jButton1, gridBagConstraints); 415 416 jButtonAddDataSerie.setText("Add serie"); 417 jButtonAddDataSerie.setEnabled(false); 418 gridBagConstraints = new java.awt.GridBagConstraints (); 419 gridBagConstraints.gridx = 0; 420 gridBagConstraints.gridy = 2; 421 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 422 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 423 gridBagConstraints.weightx = 1.0; 424 gridBagConstraints.insets = new java.awt.Insets (4, 0, 0, 0); 425 jPanel2.add(jButtonAddDataSerie, gridBagConstraints); 426 427 gridBagConstraints = new java.awt.GridBagConstraints (); 428 gridBagConstraints.gridx = 0; 429 gridBagConstraints.gridy = 10; 430 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 431 gridBagConstraints.weightx = 1.0; 432 gridBagConstraints.weighty = 1.0; 433 jPanel2.add(jPanel3, gridBagConstraints); 434 435 gridBagConstraints = new java.awt.GridBagConstraints (); 436 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 437 gridBagConstraints.insets = new java.awt.Insets (4, 0, 4, 4); 438 jPanelData.add(jPanel2, gridBagConstraints); 439 440 jTabbedPane1.addTab("Data", jPanelData); 441 442 jPanelDetails.setLayout(new java.awt.GridBagLayout ()); 443 444 jTabbedPane1.addTab("Chart details", jPanelDetails); 445 446 getContentPane().add(jTabbedPane1, java.awt.BorderLayout.CENTER); 447 448 jPanel1.setLayout(new java.awt.GridBagLayout ()); 449 450 jPanel1.setMinimumSize(new java.awt.Dimension (10, 34)); 451 jPanel1.setPreferredSize(new java.awt.Dimension (10, 34)); 452 gridBagConstraints = new java.awt.GridBagConstraints (); 453 gridBagConstraints.gridx = 0; 454 gridBagConstraints.gridy = 0; 455 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 456 gridBagConstraints.weightx = 1.0; 457 jPanel1.add(jPanel4, gridBagConstraints); 458 459 jButton6.setText("OK"); 460 jButton6.addActionListener(new java.awt.event.ActionListener () { 461 public void actionPerformed(java.awt.event.ActionEvent evt) { 462 jButton6ActionPerformed(evt); 463 } 464 }); 465 466 gridBagConstraints = new java.awt.GridBagConstraints (); 467 gridBagConstraints.gridx = 1; 468 gridBagConstraints.gridy = 0; 469 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 470 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 471 gridBagConstraints.insets = new java.awt.Insets (4, 4, 4, 4); 472 jPanel1.add(jButton6, gridBagConstraints); 473 474 jButton7.setText("Cancel"); 475 jButton7.addActionListener(new java.awt.event.ActionListener () { 476 public void actionPerformed(java.awt.event.ActionEvent evt) { 477 jButton7ActionPerformed(evt); 478 } 479 }); 480 481 gridBagConstraints = new java.awt.GridBagConstraints (); 482 gridBagConstraints.gridx = 2; 483 gridBagConstraints.gridy = 0; 484 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 485 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 486 gridBagConstraints.insets = new java.awt.Insets (4, 4, 4, 4); 487 jPanel1.add(jButton7, gridBagConstraints); 488 489 getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH); 490 491 pack(); 492 } 494 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { ReportSeriesDialog rsd = new ReportSeriesDialog(this, true); 496 rsd.setJReportFrame( this.getJReportFrame() ); 497 rsd.setVisible(true); 498 499 this.updateSeriesComboBoxes(); 500 } 502 private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) { this.setDialogResult( javax.swing.JOptionPane.CANCEL_OPTION); 504 this.setVisible(false); 505 } 507 private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) { 509 if (jList1.getSelectedIndex() < 0) 510 { 511 javax.swing.JOptionPane.showMessageDialog(this, 512 I18n.getString("messages.selectChartFirst","Please select a chart type first!") 513 ); 514 return; 515 } 516 517 this.properties = sheetPanel.getPropertiesValues(); 518 519 ChartDefinition cd = (ChartDefinition)jList1.getSelectedValue(); 520 for (int i=0; i< jTable1.getRowCount(); ++i) 521 { 522 String s = ""+jTable1.getValueAt(i,1); 523 524 if (s == null || s.equals("null") || s.length() == 0) 525 { 526 s = "X"+i; 529 } 530 properties.setProperty("serie" + i, ""+jTable1.getValueAt(i,1) ); 531 } 532 533 getProperties().setProperty("chartName", cd.getChartName() ); 534 535 this.setDialogResult( javax.swing.JOptionPane.OK_OPTION); 536 this.setVisible(false); 537 } 539 540 void selectedChart() 541 { 542 if (jList1.getSelectedIndex() >= 0) 543 { 544 ChartDefinition cd = (ChartDefinition)jList1.getSelectedValue(); 545 this.jLabelChartNameVal.setText(cd.getChartName()); 546 String series = ""; 547 548 DefaultTableModel dtm = (javax.swing.table.DefaultTableModel )this.jTable1.getModel(); 549 dtm.setRowCount(0); 550 551 String [] series_a = cd.getNeededSeries(); 552 for (int i=0; i<series_a.length; ++i) 553 { 554 if (i>0) series += ", "; 555 series += series_a[i]; 556 557 dtm.addRow(new Object []{ series_a[i],"" }); 558 } 559 560 this.jLabelSeriesVal.setText(series); 561 this.jLabelFactoryVal.setText( cd.getFactory()); 562 563 this.sheetPanel.removeAllProperties(); 564 for (int i=0; i< cd.getSheetProperties().size(); ++i) 565 { 566 SheetProperty sp = (SheetProperty)cd.getSheetProperties().elementAt(i); 567 sheetPanel.addSheetProperty(sp); 568 if (sp.getDefaultValue() != null && this.getProperties().getProperty(sp.getKeyName())== null ) 569 { 570 this.getProperties().setProperty(sp.getKeyName(), ""+sp.getDefaultValue()); 571 } 572 } 573 574 sheetPanel.setPropertiesValues( this.getProperties() ); 575 } 576 577 } 578 579 private javax.swing.JButton jButton1; 581 private javax.swing.JButton jButton6; 582 private javax.swing.JButton jButton7; 583 private javax.swing.JButton jButtonAddDataSerie; 584 private javax.swing.JLabel jLabelChartName; 585 private javax.swing.JLabel jLabelChartNameVal; 586 private javax.swing.JLabel jLabelFactory; 587 private javax.swing.JLabel jLabelFactoryVal; 588 private javax.swing.JLabel jLabelSeries; 589 private javax.swing.JLabel jLabelSeriesVal; 590 private javax.swing.JPanel jPanel1; 591 private javax.swing.JPanel jPanel2; 592 private javax.swing.JPanel jPanel3; 593 private javax.swing.JPanel jPanel4; 594 private javax.swing.JPanel jPanel5; 595 private javax.swing.JPanel jPanel6; 596 private javax.swing.JPanel jPanelChartType; 597 private javax.swing.JPanel jPanelData; 598 private javax.swing.JPanel jPanelDetails; 599 private javax.swing.JScrollPane jScrollPane3; 600 private javax.swing.JTabbedPane jTabbedPane1; 601 private javax.swing.JTable jTable1; 602 604 605 public void applyI18n(){ 606 jButton1.setText(I18n.getString("iReportChartDialog.button1","Report series")); 608 jButton6.setText(I18n.getString("iReportChartDialog.button6","OK")); 609 jButton7.setText(I18n.getString("iReportChartDialog.button7","Cancel")); 610 jButtonAddDataSerie.setText(I18n.getString("iReportChartDialog.buttonAddDataSerie","Add serie")); 611 jLabelChartName.setText(I18n.getString("iReportChartDialog.labelChartName","Chart type")); 612 jLabelFactory.setText(I18n.getString("iReportChartDialog.labelFactory","Factory")); 613 jLabelSeries.setText(I18n.getString("iReportChartDialog.labelSeries","Series")); 614 616 jTable1.getColumnModel().getColumn(0).setHeaderValue( I18n.getString("iReportChartDialog.tablecolumn.serieName","Serie name") ); 617 jTable1.getColumnModel().getColumn(1).setHeaderValue( I18n.getString("iReportChartDialog.tablecolumn.variable","Variable") ); 618 ((javax.swing.border.TitledBorder )jPanel5.getBorder()).setTitle( I18n.getString("iReportChartDialog.panelBorder.ChartInfo","Chart info") ); 619 } 620 } 621 | Popular Tags |