1 6 7 package com.jaspersoft.jasperserver.irplugin.gui.jrxmlvalidator; 8 9 import com.jaspersoft.jasperserver.irplugin.JServer; 10 import com.jaspersoft.jasperserver.irplugin.RepositoryReportUnit; 11 import it.businesslogic.ireport.JRProperty; 12 import it.businesslogic.ireport.Report; 13 import it.businesslogic.ireport.gui.MainFrame; 14 import it.businesslogic.ireport.util.Misc; 15 import java.awt.Component ; 16 import java.text.NumberFormat ; 17 import java.text.DecimalFormat ; 18 import java.util.List ; 19 import java.util.ArrayList ; 20 import javax.swing.JLabel ; 21 import javax.swing.JOptionPane ; 22 import javax.swing.JTable ; 23 import javax.swing.event.TableModelEvent ; 24 import javax.swing.event.TableModelListener ; 25 import javax.swing.table.DefaultTableModel ; 26 import javax.swing.table.TableCellRenderer ; 27 import javax.swing.table.TableColumn ; 28 29 33 public class JrxmlValidationDialog extends javax.swing.JDialog { 34 35 private JServer server = null; 36 private RepositoryReportUnit reportUnit = null; 37 private java.util.List imageElementVelidationItems = null; 38 private Report report = null; 39 40 private int dialogResult = JOptionPane.CANCEL_OPTION; 41 42 43 public JrxmlValidationDialog(java.awt.Frame parent, boolean modal) { 44 super(parent, modal); 45 initComponents(); 46 47 TableColumn dtcm = jTable1.getColumnModel().getColumn(0); 49 dtcm.setMinWidth(22); 50 dtcm.setMaxWidth(22); 51 dtcm.setPreferredWidth(20); 52 dtcm.setResizable(false); 53 jTable1.getModel().addTableModelListener(new TableModelListener () { 54 public void tableChanged(TableModelEvent e) { 55 updateContinue(); 56 } 57 } ); 58 59 dtcm = jTable1.getColumnModel().getColumn(1); 60 dtcm.setMinWidth(100); 61 dtcm.setPreferredWidth(100); 62 dtcm.setCellRenderer(new AlignedTableCellRenderer(JLabel.LEFT, new javax.swing.ImageIcon (this.getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/picture.png")) )); 63 64 dtcm = jTable1.getColumnModel().getColumn(2); 65 dtcm.setMinWidth(100); 66 dtcm.setPreferredWidth(300); 67 68 dtcm = jTable1.getColumnModel().getColumn(3); 69 dtcm.setMinWidth(100); 70 dtcm.setPreferredWidth(300); 71 72 73 dtcm = jTable1.getColumnModel().getColumn(4); 74 dtcm.setMinWidth(50); 75 dtcm.setMaxWidth(100); 76 dtcm.setPreferredWidth(80); 77 dtcm.setCellRenderer(new AlignedTableCellRenderer(JLabel.RIGHT)); 78 79 80 this.pack(); 81 Misc.centerFrame(this); 82 } 83 84 public void updateContinue() 85 { 86 DefaultTableModel dtm = (DefaultTableModel )jTable1.getModel(); 87 for (int i=0; i< dtm.getRowCount(); ++i) 88 { 89 if ( ((Boolean )jTable1.getValueAt(i,0)).booleanValue()) 90 { 91 jButtonOk.setEnabled(true); 92 return; 93 } 94 } 95 jButtonOk.setEnabled(false); 96 } 97 98 public void setImageElementVelidationItems(java.util.List items) 99 { 100 DefaultTableModel dtm = (DefaultTableModel )jTable1.getModel(); 101 dtm.setRowCount(0); 102 103 NumberFormat formatter = new DecimalFormat ("#,##0"); 104 for (int i=0; i<items.size(); ++i) 105 { 106 ImageElementValidationItem iev = (ImageElementValidationItem)items.get(i); 107 String filesize = ""; 108 if (iev.getOriginalFileName().length() < 1024) 109 { 110 filesize = formatter.format(iev.getOriginalFileName().length())+" bytes"; 111 } 112 else 113 { 114 filesize = formatter.format(iev.getOriginalFileName().length() / 1024)+" KB"; 115 } 116 117 dtm.addRow(new Object []{ Boolean.TRUE, iev, iev.getOriginalFileName()+"", iev.getProposedExpression(), filesize}); 118 } 119 this.imageElementVelidationItems = items; 120 } 121 122 public java.util.List getImageElementVelidationItems() { 123 return imageElementVelidationItems; 124 } 125 126 127 132 private void initComponents() { 134 java.awt.GridBagConstraints gridBagConstraints; 135 136 jScrollPane1 = new javax.swing.JScrollPane (); 137 jTextPane1 = new javax.swing.JTextPane (); 138 jScrollPane2 = new javax.swing.JScrollPane (); 139 jTable1 = new javax.swing.JTable (); 140 jPanel1 = new javax.swing.JPanel (); 141 jButtonSelectAll = new javax.swing.JButton (); 142 jButtonDeselectAll = new javax.swing.JButton (); 143 jSeparator1 = new javax.swing.JSeparator (); 144 jPanel2 = new javax.swing.JPanel (); 145 jCheckBoxDoNotShowAgain = new javax.swing.JCheckBox (); 146 jButtonOk = new javax.swing.JButton (); 147 jButtonSkip = new javax.swing.JButton (); 148 jButtonCancel = new javax.swing.JButton (); 149 150 getContentPane().setLayout(new java.awt.GridBagLayout ()); 151 152 setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 153 setTitle("JRXML validation"); 154 setModal(true); 155 jScrollPane1.setBorder(null); 156 jScrollPane1.setMinimumSize(new java.awt.Dimension (500, 78)); 157 jScrollPane1.setPreferredSize(new java.awt.Dimension (500, 90)); 158 jTextPane1.setEditable(false); 159 jTextPane1.setText("JasperServer Plugin has detected some locally referenced images in your report.\nYou can choose to attach these images to the Report Unit importing them into the repository and replace the relative image expressions with an url like \"repo:myImage.jpg\"\n\nPlease check the images you want attach to this Report Unit."); 160 jTextPane1.setOpaque(false); 161 jScrollPane1.setViewportView(jTextPane1); 162 163 gridBagConstraints = new java.awt.GridBagConstraints (); 164 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 165 gridBagConstraints.weightx = 1.0; 166 gridBagConstraints.insets = new java.awt.Insets (4, 4, 0, 4); 167 getContentPane().add(jScrollPane1, gridBagConstraints); 168 169 jScrollPane2.setPreferredSize(new java.awt.Dimension (452, 200)); 170 jTable1.setModel(new javax.swing.table.DefaultTableModel ( 171 new Object [][] { 172 173 }, 174 new String [] { 175 " ", "Image", "Local file", "Proposed exp", "File size" 176 } 177 ) { 178 Class [] types = new Class [] { 179 java.lang.Boolean .class, java.lang.String .class, java.lang.String .class, java.lang.String .class, java.lang.String .class 180 }; 181 boolean[] canEdit = new boolean [] { 182 true, false, false, false, false 183 }; 184 185 public Class getColumnClass(int columnIndex) { 186 return types [columnIndex]; 187 } 188 189 public boolean isCellEditable(int rowIndex, int columnIndex) { 190 return canEdit [columnIndex]; 191 } 192 }); 193 jScrollPane2.setViewportView(jTable1); 194 195 gridBagConstraints = new java.awt.GridBagConstraints (); 196 gridBagConstraints.gridx = 0; 197 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 198 gridBagConstraints.weightx = 1.0; 199 gridBagConstraints.weighty = 1.0; 200 gridBagConstraints.insets = new java.awt.Insets (0, 4, 4, 4); 201 getContentPane().add(jScrollPane2, gridBagConstraints); 202 203 jPanel1.setLayout(new java.awt.GridBagLayout ()); 204 205 jButtonSelectAll.setMnemonic('a'); 206 jButtonSelectAll.setText("Select all"); 207 jButtonSelectAll.addActionListener(new java.awt.event.ActionListener () { 208 public void actionPerformed(java.awt.event.ActionEvent evt) { 209 jButtonSelectAllActionPerformed(evt); 210 } 211 }); 212 213 jPanel1.add(jButtonSelectAll, new java.awt.GridBagConstraints ()); 214 215 jButtonDeselectAll.setMnemonic('d'); 216 jButtonDeselectAll.setText("Deselect all"); 217 jButtonDeselectAll.addActionListener(new java.awt.event.ActionListener () { 218 public void actionPerformed(java.awt.event.ActionEvent evt) { 219 jButtonDeselectAllActionPerformed(evt); 220 } 221 }); 222 223 jPanel1.add(jButtonDeselectAll, new java.awt.GridBagConstraints ()); 224 225 gridBagConstraints = new java.awt.GridBagConstraints (); 226 gridBagConstraints.gridx = 0; 227 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 228 gridBagConstraints.insets = new java.awt.Insets (0, 4, 4, 4); 229 getContentPane().add(jPanel1, gridBagConstraints); 230 231 jSeparator1.setPreferredSize(new java.awt.Dimension (2, 2)); 232 gridBagConstraints = new java.awt.GridBagConstraints (); 233 gridBagConstraints.gridx = 0; 234 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 235 gridBagConstraints.insets = new java.awt.Insets (4, 0, 4, 0); 236 getContentPane().add(jSeparator1, gridBagConstraints); 237 238 jPanel2.setLayout(new java.awt.GridBagLayout ()); 239 240 jCheckBoxDoNotShowAgain.setMnemonic('n'); 241 jCheckBoxDoNotShowAgain.setText("Do not show this window again for this report"); 242 jCheckBoxDoNotShowAgain.setActionCommand("Do not show this window again"); 243 jCheckBoxDoNotShowAgain.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); 244 jCheckBoxDoNotShowAgain.setMargin(new java.awt.Insets (0, 0, 0, 0)); 245 jCheckBoxDoNotShowAgain.addActionListener(new java.awt.event.ActionListener () { 246 public void actionPerformed(java.awt.event.ActionEvent evt) { 247 jCheckBoxDoNotShowAgainActionPerformed(evt); 248 } 249 }); 250 251 gridBagConstraints = new java.awt.GridBagConstraints (); 252 gridBagConstraints.gridx = 0; 253 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 254 gridBagConstraints.weightx = 1.0; 255 gridBagConstraints.insets = new java.awt.Insets (0, 4, 4, 4); 256 jPanel2.add(jCheckBoxDoNotShowAgain, gridBagConstraints); 257 258 jButtonOk.setMnemonic('O'); 259 jButtonOk.setText("Continue"); 260 jButtonOk.setEnabled(false); 261 jButtonOk.addActionListener(new java.awt.event.ActionListener () { 262 public void actionPerformed(java.awt.event.ActionEvent evt) { 263 jButtonOkActionPerformed(evt); 264 } 265 }); 266 267 gridBagConstraints = new java.awt.GridBagConstraints (); 268 gridBagConstraints.insets = new java.awt.Insets (0, 0, 4, 4); 269 jPanel2.add(jButtonOk, gridBagConstraints); 270 271 jButtonSkip.setMnemonic('O'); 272 jButtonSkip.setText("Skip this step"); 273 jButtonSkip.addActionListener(new java.awt.event.ActionListener () { 274 public void actionPerformed(java.awt.event.ActionEvent evt) { 275 jButtonOkActionPerformed1(evt); 276 } 277 }); 278 279 gridBagConstraints = new java.awt.GridBagConstraints (); 280 gridBagConstraints.insets = new java.awt.Insets (0, 0, 4, 4); 281 jPanel2.add(jButtonSkip, gridBagConstraints); 282 283 jButtonCancel.setMnemonic('C'); 284 jButtonCancel.setText("Cancel"); 285 jButtonCancel.addActionListener(new java.awt.event.ActionListener () { 286 public void actionPerformed(java.awt.event.ActionEvent evt) { 287 jButtonCancelActionPerformed(evt); 288 } 289 }); 290 291 gridBagConstraints = new java.awt.GridBagConstraints (); 292 gridBagConstraints.insets = new java.awt.Insets (0, 0, 4, 4); 293 jPanel2.add(jButtonCancel, gridBagConstraints); 294 295 gridBagConstraints = new java.awt.GridBagConstraints (); 296 gridBagConstraints.gridx = 0; 297 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 298 gridBagConstraints.weightx = 1.0; 299 getContentPane().add(jPanel2, gridBagConstraints); 300 301 pack(); 302 } 304 private void jButtonOkActionPerformed1(java.awt.event.ActionEvent evt) { 306 this.setDialogResult( JOptionPane.OK_OPTION ); 307 this.setVisible(false); 308 this.dispose(); 309 310 } 312 private void jButtonCancelActionPerformed(java.awt.event.ActionEvent evt) { 314 this.setDialogResult( JOptionPane.CANCEL_OPTION ); 315 this.setVisible(false); 316 this.dispose(); 317 318 } 320 private void jButtonOkActionPerformed(java.awt.event.ActionEvent evt) { 322 DefaultTableModel dtm = (DefaultTableModel )jTable1.getModel(); 323 324 List selectedItems = new ArrayList (); 325 for (int i=0; i< dtm.getRowCount(); ++i) 326 { 327 if ( ((Boolean )jTable1.getValueAt(i,0)).booleanValue()) 328 { 329 selectedItems.add(jTable1.getValueAt(i,1)); 330 } 331 } 332 333 if (selectedItems.size() > 0) 334 { 335 336 UploadResourcesDialog urd = new UploadResourcesDialog(MainFrame.getMainInstance(), true); 337 urd.setResourceItems( selectedItems ); 338 urd.setValidationDialog( this ); 339 urd.setVisible(true); 340 341 return; 342 } 343 344 elaborationFinished(true); 345 346 347 348 } 350 351 public void elaborationFinished(boolean result) 352 { 353 this.dialogResult = (result) ? JOptionPane.OK_OPTION : JOptionPane.CANCEL_OPTION; 354 this.setVisible(false); 355 this.dispose(); 356 } 357 358 359 private void jCheckBoxDoNotShowAgainActionPerformed(java.awt.event.ActionEvent evt) { 361 if (getReport() != null) 362 { 363 boolean found = false; 364 for (int i=0; i< getReport().getJRproperties().size(); ++i) 365 { 366 JRProperty prop = (JRProperty)getReport().getJRproperties().get(i); 367 if (prop.getName() != null && prop.getName().equals("com.jaspersoft.irplugin.validation")) 368 { 369 prop.setValue("0"); 370 found = true; 371 } 372 } 373 374 if (!found) 375 { 376 JRProperty prop = new JRProperty(); 377 prop.setName("com.jaspersoft.irplugin.validation"); 378 prop.setValue("0"); 379 getReport().getJRproperties().add(prop); 380 } 381 382 getReport().saveXMLFile(); 383 } 384 } 386 private void jButtonDeselectAllActionPerformed(java.awt.event.ActionEvent evt) { 388 DefaultTableModel dtm = (DefaultTableModel )jTable1.getModel(); 389 for (int i=0; i< dtm.getRowCount(); ++i) 390 { 391 jTable1.setValueAt(Boolean.FALSE,i,0); 392 } 393 394 jTable1.updateUI(); 395 396 } 398 private void jButtonSelectAllActionPerformed(java.awt.event.ActionEvent evt) { 400 DefaultTableModel dtm = (DefaultTableModel )jTable1.getModel(); 401 for (int i=0; i< dtm.getRowCount(); ++i) 402 { 403 jTable1.setValueAt(Boolean.TRUE,i,0); 404 } 405 406 jTable1.updateUI(); 407 408 } 410 413 public static void main(String args[]) { 414 java.awt.EventQueue.invokeLater(new Runnable () { 415 public void run() { 416 new JrxmlValidationDialog(new javax.swing.JFrame (), true).setVisible(true); 417 } 418 }); 419 } 420 421 public JServer getServer() { 422 return server; 423 } 424 425 public void setServer(JServer server) { 426 this.server = server; 427 } 428 429 public RepositoryReportUnit getReportUnit() { 430 return reportUnit; 431 } 432 433 public void setReportUnit(RepositoryReportUnit reportUnit) { 434 this.reportUnit = reportUnit; 435 } 436 437 public Report getReport() { 438 return report; 439 } 440 441 public void setReport(Report report) { 442 this.report = report; 443 } 444 445 public int getDialogResult() { 446 return dialogResult; 447 } 448 449 public void setDialogResult(int dialogResult) { 450 this.dialogResult = dialogResult; 451 } 452 453 private javax.swing.JButton jButtonCancel; 455 private javax.swing.JButton jButtonDeselectAll; 456 private javax.swing.JButton jButtonOk; 457 private javax.swing.JButton jButtonSelectAll; 458 private javax.swing.JButton jButtonSkip; 459 private javax.swing.JCheckBox jCheckBoxDoNotShowAgain; 460 private javax.swing.JPanel jPanel1; 461 private javax.swing.JPanel jPanel2; 462 private javax.swing.JScrollPane jScrollPane1; 463 private javax.swing.JScrollPane jScrollPane2; 464 private javax.swing.JSeparator jSeparator1; 465 private javax.swing.JTable jTable1; 466 private javax.swing.JTextPane jTextPane1; 467 469 } 470 | Popular Tags |