1 32 33 package it.businesslogic.ireport.crosstab.gui; 34 35 import it.businesslogic.ireport.*; 36 import it.businesslogic.ireport.crosstab.Measure; 37 import it.businesslogic.ireport.gui.JRParameterDialog; 38 import it.businesslogic.ireport.gui.MainFrame; 39 import it.businesslogic.ireport.gui.sheet.Tag; 40 import it.businesslogic.ireport.util.Misc; 41 import it.businesslogic.ireport.util.I18n; 42 43 44 47 public class MeasureDialog 48 extends javax.swing.JDialog 49 { 50 51 52 Measure tmpVariable = null; 53 private SubDataset subDataset = null; 54 55 62 public MeasureDialog(SubDataset report, java.awt.Frame parent, 63 boolean modal) 64 { 65 super(parent, modal); 66 initAll(report); 67 } 68 69 public MeasureDialog(SubDataset report, java.awt.Dialog parent, 70 boolean modal) 71 { 72 super(parent, modal); 73 initAll(report); 74 } 75 76 public void initAll(SubDataset report) 77 { 78 initComponents(); 79 80 this.setSubDataset(report); 81 setTypes(); 82 this.jComboBoxClassType.setSelectedItem("java.lang.String"); 83 this.jComboBoxCalculationType.setSelectedItem("Nothing"); 84 this.jComboBoxPercentageOf.setSelectedIndex(0); pack(); 86 87 Misc.centerFrame(this); 88 89 javax.swing.KeyStroke escape = javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0, false); 90 javax.swing.Action escapeAction = new javax.swing.AbstractAction () { 91 public void actionPerformed(java.awt.event.ActionEvent e) { 92 jButtonCancelActionPerformed(e); 93 } 94 }; 95 96 getRootPane().getInputMap(javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "ESCAPE"); 97 getRootPane().getActionMap().put("ESCAPE", escapeAction); 98 99 applyI18n(); 100 this.getRootPane().setDefaultButton(this.jButtonOK); 102 } 103 106 public void setTypes() 107 { 108 this.jComboBoxClassType.addItem("java.lang.String"); 109 this.jComboBoxClassType.addItem("java.lang.Object"); 110 this.jComboBoxClassType.addItem("java.lang.Boolean"); 111 this.jComboBoxClassType.addItem("java.lang.Byte"); 112 this.jComboBoxClassType.addItem("java.util.Date"); 113 this.jComboBoxClassType.addItem("java.sql.Timestamp"); 114 this.jComboBoxClassType.addItem("java.sql.Time"); 115 this.jComboBoxClassType.addItem("java.lang.Double"); 116 this.jComboBoxClassType.addItem("java.lang.Float"); 117 this.jComboBoxClassType.addItem("java.lang.Integer"); 118 this.jComboBoxClassType.addItem("java.io.InputStream"); 119 this.jComboBoxClassType.addItem("java.lang.Long"); 120 this.jComboBoxClassType.addItem("java.lang.Short"); 121 this.jComboBoxClassType.addItem("java.math.BigDecimal"); 122 this.jComboBoxClassType.addItem( 123 "net.sf.jasperreports.engine.JREmptyDataSource"); 124 125 this.jComboBoxPercentageOf.addItem(new Tag("None", I18n.getString("measure.percentageOf.None", "None") )); 126 this.jComboBoxPercentageOf.addItem(new Tag("GrandTotal", I18n.getString("measure.percentageOf.GrandTotal", "Grand total"))); 127 128 this.jComboBoxCalculationType.addItem(new Tag("Nothing", I18n.getString("measure.calculationType.Nothing", "Nothing") )); 129 this.jComboBoxCalculationType.addItem(new Tag("Count", I18n.getString("measure.calculationType.Count", "Count"))); 130 this.jComboBoxCalculationType.addItem(new Tag("DistinctCount", I18n.getString("measure.calculationType.DistinctCount", "Distinct count"))); 131 this.jComboBoxCalculationType.addItem(new Tag("Sum", I18n.getString("measure.calculationType.Sum", "Sum"))); 132 this.jComboBoxCalculationType.addItem(new Tag("Average", I18n.getString("measure.calculationType.Average", "Average"))); 133 this.jComboBoxCalculationType.addItem(new Tag("Lowest", I18n.getString("measure.calculationType.Lowest", "Lowest"))); 134 this.jComboBoxCalculationType.addItem(new Tag("Highest", I18n.getString("measure.calculationType.Highest", "Highest"))); 135 this.jComboBoxCalculationType.addItem(new Tag("StandardDeviation", I18n.getString("measure.calculationType.StandardDeviation", "Standard deviation"))); 136 this.jComboBoxCalculationType.addItem(new Tag("Variance", I18n.getString("measure.calculationType.Variance", "Variance") )); 137 this.jComboBoxCalculationType.addItem(new Tag("First", I18n.getString("measure.calculationType.First", "First") )); 138 } 139 140 141 146 147 148 private void initComponents() { 150 java.awt.GridBagConstraints gridBagConstraints; 151 152 jLabel1 = new javax.swing.JLabel (); 153 jTextFieldName = new javax.swing.JTextField (); 154 jLabel2 = new javax.swing.JLabel (); 155 jLabel3 = new javax.swing.JLabel (); 156 jLabel5 = new javax.swing.JLabel (); 157 jComboBoxCalculationType = new javax.swing.JComboBox (); 158 jComboBoxClassType = new javax.swing.JComboBox (); 159 jRTextExpressionAreaExpression = new it.businesslogic.ireport.gui.JRTextExpressionArea(); 160 jLabel8 = new javax.swing.JLabel (); 161 jTextFieldNameIncrementerFactoryClass = new javax.swing.JTextField (); 162 jPanel1 = new javax.swing.JPanel (); 163 jButtonOK = new javax.swing.JButton (); 164 jButtonCancel = new javax.swing.JButton (); 165 jLabel9 = new javax.swing.JLabel (); 166 jComboBoxPercentageOf = new javax.swing.JComboBox (); 167 jLabel10 = new javax.swing.JLabel (); 168 jTextFieldNamePercentageCalculatorClass = new javax.swing.JTextField (); 169 170 getContentPane().setLayout(new java.awt.GridBagLayout ()); 171 172 setTitle("Add/modify measure"); 173 setModal(true); 174 addWindowListener(new java.awt.event.WindowAdapter () { 175 public void windowClosing(java.awt.event.WindowEvent evt) { 176 closeDialog(evt); 177 } 178 }); 179 180 jLabel1.setText("Measure name"); 181 gridBagConstraints = new java.awt.GridBagConstraints (); 182 gridBagConstraints.gridx = 0; 183 gridBagConstraints.gridy = 0; 184 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 185 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 186 getContentPane().add(jLabel1, gridBagConstraints); 187 188 gridBagConstraints = new java.awt.GridBagConstraints (); 189 gridBagConstraints.gridx = 0; 190 gridBagConstraints.gridy = 1; 191 gridBagConstraints.gridwidth = 3; 192 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 193 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 194 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 195 getContentPane().add(jTextFieldName, gridBagConstraints); 196 197 jLabel2.setText("Calculation type"); 198 gridBagConstraints = new java.awt.GridBagConstraints (); 199 gridBagConstraints.gridx = 1; 200 gridBagConstraints.gridy = 2; 201 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 202 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 203 getContentPane().add(jLabel2, gridBagConstraints); 204 205 jLabel3.setText("Measure expression"); 206 gridBagConstraints = new java.awt.GridBagConstraints (); 207 gridBagConstraints.gridx = 0; 208 gridBagConstraints.gridy = 14; 209 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 210 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 211 getContentPane().add(jLabel3, gridBagConstraints); 212 213 jLabel5.setText("Measure class type"); 214 gridBagConstraints = new java.awt.GridBagConstraints (); 215 gridBagConstraints.gridx = 0; 216 gridBagConstraints.gridy = 2; 217 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 218 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 219 getContentPane().add(jLabel5, gridBagConstraints); 220 221 gridBagConstraints = new java.awt.GridBagConstraints (); 222 gridBagConstraints.gridx = 1; 223 gridBagConstraints.gridy = 3; 224 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 225 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 226 gridBagConstraints.weightx = 1.0; 227 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 228 getContentPane().add(jComboBoxCalculationType, gridBagConstraints); 229 230 jComboBoxClassType.setEditable(true); 231 gridBagConstraints = new java.awt.GridBagConstraints (); 232 gridBagConstraints.gridx = 0; 233 gridBagConstraints.gridy = 3; 234 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 235 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 236 gridBagConstraints.weightx = 1.0; 237 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 238 getContentPane().add(jComboBoxClassType, gridBagConstraints); 239 240 jRTextExpressionAreaExpression.setBorder(javax.swing.BorderFactory.createEtchedBorder()); 241 jRTextExpressionAreaExpression.setCaretVisible(false); 242 jRTextExpressionAreaExpression.setElectricScroll(0); 243 jRTextExpressionAreaExpression.setMinimumSize(new java.awt.Dimension (657, 100)); 244 jRTextExpressionAreaExpression.setPreferredSize(new java.awt.Dimension (325, 70)); 245 gridBagConstraints = new java.awt.GridBagConstraints (); 246 gridBagConstraints.gridx = 0; 247 gridBagConstraints.gridy = 15; 248 gridBagConstraints.gridwidth = 2; 249 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 250 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 251 gridBagConstraints.weightx = 1.0; 252 gridBagConstraints.weighty = 1.0; 253 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 254 getContentPane().add(jRTextExpressionAreaExpression, gridBagConstraints); 255 256 jLabel8.setText("Custom Incrementer Factory Class"); 257 gridBagConstraints = new java.awt.GridBagConstraints (); 258 gridBagConstraints.gridx = 0; 259 gridBagConstraints.gridy = 5; 260 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 261 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 262 getContentPane().add(jLabel8, gridBagConstraints); 263 264 jTextFieldNameIncrementerFactoryClass.setNextFocusableComponent(jRTextExpressionAreaExpression); 265 gridBagConstraints = new java.awt.GridBagConstraints (); 266 gridBagConstraints.gridx = 0; 267 gridBagConstraints.gridy = 6; 268 gridBagConstraints.gridwidth = 2; 269 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 270 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 271 gridBagConstraints.weightx = 1.0; 272 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 273 getContentPane().add(jTextFieldNameIncrementerFactoryClass, gridBagConstraints); 274 275 jPanel1.setLayout(new java.awt.FlowLayout (java.awt.FlowLayout.RIGHT)); 276 277 jButtonOK.setMnemonic('o'); 278 jButtonOK.setText("OK"); 279 jButtonOK.addActionListener(new java.awt.event.ActionListener () { 280 public void actionPerformed(java.awt.event.ActionEvent evt) { 281 jButtonOKActionPerformed(evt); 282 } 283 }); 284 285 jPanel1.add(jButtonOK); 286 287 jButtonCancel.setText("Cancel"); 288 jButtonCancel.setMnemonic('c'); 289 jButtonCancel.addActionListener(new java.awt.event.ActionListener () { 290 public void actionPerformed(java.awt.event.ActionEvent evt) { 291 jButtonCancelActionPerformed(evt); 292 } 293 }); 294 295 jPanel1.add(jButtonCancel); 296 297 gridBagConstraints = new java.awt.GridBagConstraints (); 298 gridBagConstraints.gridx = 0; 299 gridBagConstraints.gridy = 99; 300 gridBagConstraints.gridwidth = 3; 301 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 302 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 303 gridBagConstraints.weightx = 1.0; 304 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 305 getContentPane().add(jPanel1, gridBagConstraints); 306 307 jLabel9.setText("Percentage of"); 308 gridBagConstraints = new java.awt.GridBagConstraints (); 309 gridBagConstraints.gridx = 0; 310 gridBagConstraints.gridy = 7; 311 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 312 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 313 getContentPane().add(jLabel9, gridBagConstraints); 314 315 gridBagConstraints = new java.awt.GridBagConstraints (); 316 gridBagConstraints.gridx = 0; 317 gridBagConstraints.gridy = 8; 318 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 319 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 320 gridBagConstraints.weightx = 1.0; 321 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 322 getContentPane().add(jComboBoxPercentageOf, gridBagConstraints); 323 324 jLabel10.setText("Custom Percentage Calculator Class"); 325 gridBagConstraints = new java.awt.GridBagConstraints (); 326 gridBagConstraints.gridx = 0; 327 gridBagConstraints.gridy = 10; 328 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 329 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 330 getContentPane().add(jLabel10, gridBagConstraints); 331 332 jTextFieldNamePercentageCalculatorClass.setNextFocusableComponent(jRTextExpressionAreaExpression); 333 gridBagConstraints = new java.awt.GridBagConstraints (); 334 gridBagConstraints.gridx = 0; 335 gridBagConstraints.gridy = 11; 336 gridBagConstraints.gridwidth = 2; 337 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 338 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 339 gridBagConstraints.weightx = 1.0; 340 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 341 getContentPane().add(jTextFieldNamePercentageCalculatorClass, gridBagConstraints); 342 343 pack(); 344 java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); 345 java.awt.Dimension dialogSize = getSize(); 346 setLocation((screenSize.width-dialogSize.width)/2,(screenSize.height-dialogSize.height)/2); 347 } private void jButtonCancelActionPerformed(java.awt.event.ActionEvent evt) { 350 setVisible(false); 351 this.setDialogResult(javax.swing.JOptionPane.CANCEL_OPTION); 352 dispose(); 353 } 355 private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) { 357 358 if (this.jTextFieldName.getText().trim().length() <= 0) 359 { 360 javax.swing.JOptionPane.showMessageDialog(this, 361 I18n.getString("messages.measureDialog.invalidMeasureName","Please insert a valid measure name!"), 362 I18n.getString("messages.measureDialog.invalidMeasureNameCaption","Invalid measure!"), 363 javax.swing.JOptionPane.WARNING_MESSAGE); 364 365 return; 366 } 367 368 if (this.jComboBoxClassType.getSelectedIndex() < 0 || 369 (""+this.jComboBoxClassType.getSelectedItem()).trim().length() <= 0) 370 { 371 javax.swing.JOptionPane.showMessageDialog(this, 372 I18n.getString("messages.measureDialog.invalidClassName","Please insert a valid class name!"), 373 I18n.getString("messages.measureDialog.invalidClassNameCaption","Invalid class!"), 374 javax.swing.JOptionPane.WARNING_MESSAGE); 375 376 return; 377 } 378 379 tmpVariable = new Measure(this.jTextFieldName.getText()); 380 381 tmpVariable.setClassType( 382 this.jComboBoxClassType.getSelectedItem() + ""); 383 384 tmpVariable.setCalculation(((Tag)this.jComboBoxCalculationType.getSelectedItem()).getValue()+""); 385 386 tmpVariable.setPercentageOf(((Tag)this.jComboBoxPercentageOf.getSelectedItem()).getValue()+"" ); 387 388 tmpVariable.setIncrementerFactoryClass(this.jTextFieldNameIncrementerFactoryClass.getText()); 390 tmpVariable.setPercentageCalculatorClass(this.jTextFieldNamePercentageCalculatorClass.getText()); 391 392 tmpVariable.setExpression(jRTextExpressionAreaExpression.getText()); 393 394 setVisible(false); 395 this.setDialogResult(javax.swing.JOptionPane.OK_OPTION); 396 dispose(); 397 } 399 403 private void closeDialog(java.awt.event.WindowEvent evt) { 405 setVisible(false); 406 this.setDialogResult(javax.swing.JOptionPane.CLOSED_OPTION); 407 dispose(); 408 } 410 413 public static void main(String [] args) 414 { 415 new JRParameterDialog(new javax.swing.JFrame (), true).setVisible(true); 416 } 417 418 423 public it.businesslogic.ireport.crosstab.Measure getMeasure() 424 { 425 426 return tmpVariable; 427 } 428 429 434 public void setMeasure(it.businesslogic.ireport.crosstab.Measure tmpVariable) 435 { 436 this.jTextFieldName.setText(new String (tmpVariable.getName())); 437 438 this.jComboBoxClassType.setSelectedItem(new String (tmpVariable.getClassType())); 439 440 this.jRTextExpressionAreaExpression.setText(new String (tmpVariable.getExpression())); 441 this.jTextFieldNameIncrementerFactoryClass.setText(new String (tmpVariable.getIncrementerFactoryClass())); 442 443 Misc.setComboboxSelectedTagValue(jComboBoxCalculationType, tmpVariable.getCalculation()); 444 Misc.setComboboxSelectedTagValue(jComboBoxPercentageOf, tmpVariable.getPercentageOf() ); 445 446 this.jTextFieldNamePercentageCalculatorClass.setText(new String (tmpVariable.getPercentageCalculatorClass())); 447 } 448 449 454 public int getDialogResult() 455 { 456 457 return dialogResult; 458 } 459 460 465 public void setDialogResult(int dialogResult) 466 { 467 this.dialogResult = dialogResult; 468 } 469 470 public void setExpressionContext(SubDataset sds) 471 { 472 if (sds == null) 473 { 474 sds = MainFrame.getMainInstance().getActiveReportFrame().getReport(); 475 } 476 477 this.jRTextExpressionAreaExpression.setSubDataset( sds); 478 this.jRTextExpressionAreaExpression.getCrosstabElements().removeAllElements(); 479 } 480 481 private javax.swing.JButton jButtonCancel; 483 private javax.swing.JButton jButtonOK; 484 private javax.swing.JComboBox jComboBoxCalculationType; 485 private javax.swing.JComboBox jComboBoxClassType; 486 private javax.swing.JComboBox jComboBoxPercentageOf; 487 private javax.swing.JLabel jLabel1; 488 private javax.swing.JLabel jLabel10; 489 private javax.swing.JLabel jLabel2; 490 private javax.swing.JLabel jLabel3; 491 private javax.swing.JLabel jLabel5; 492 private javax.swing.JLabel jLabel8; 493 private javax.swing.JLabel jLabel9; 494 private javax.swing.JPanel jPanel1; 495 private it.businesslogic.ireport.gui.JRTextExpressionArea jRTextExpressionAreaExpression; 496 private javax.swing.JTextField jTextFieldName; 497 private javax.swing.JTextField jTextFieldNameIncrementerFactoryClass; 498 private javax.swing.JTextField jTextFieldNamePercentageCalculatorClass; 499 private int dialogResult; 501 502 public SubDataset getSubDataset() { 503 return subDataset; 504 } 505 506 public void setSubDataset(SubDataset subDataset) { 507 this.subDataset = subDataset; 508 if (subDataset == null) return; 509 jRTextExpressionAreaExpression.setSubDataset( subDataset); 510 jRTextExpressionAreaExpression.getTokenMarker().setKeywordLookup(subDataset.getKeywordLookup()); 511 } 512 public void applyI18n(){ 513 jButtonCancel.setText(I18n.getString("measureDialog.buttonCancel","Cancel")); 515 jButtonOK.setText(I18n.getString("measureDialog.buttonOK","OK")); 516 jLabel1.setText(I18n.getString("measureDialog.label1","Measure name")); 517 jLabel10.setText(I18n.getString("measureDialog.label10","Custom Percentage Calculator Class")); 518 jLabel2.setText(I18n.getString("measureDialog.label2","Calculation type")); 519 jLabel3.setText(I18n.getString("measureDialog.label3","Measure expression")); 520 jLabel5.setText(I18n.getString("measureDialog.label5","Measure class type")); 521 jLabel8.setText(I18n.getString("measureDialog.label8","Custom Incrementer Factory Class")); 522 jLabel9.setText(I18n.getString("measureDialog.label9","Percentage of")); 523 } 525 } 526 | Popular Tags |