1 32 33 package it.businesslogic.ireport.gui; 34 35 import javax.swing.event.ListSelectionEvent ; 36 import javax.swing.table.*; 37 import javax.swing.*; 38 import it.businesslogic.ireport.*; 39 import it.businesslogic.ireport.util.*; 40 import it.businesslogic.ireport.gui.event.*; 41 import java.awt.Point ; 42 43 import java.util.*; 44 48 public class GroupsDialog extends javax.swing.JDialog { 49 50 51 private JReportFrame jReportFrame=null; 52 53 private javax.swing.JButton jButtonDeleteGroup; 55 private javax.swing.JButton jButtonModifyGroup; 56 private javax.swing.JButton jButtonMoveDownGroup; 57 private javax.swing.JButton jButtonMoveUpGroup; 58 private javax.swing.JButton jButtonNewGroup; 59 private javax.swing.JPanel jPanelButtons; 60 private javax.swing.JPanel jPanelFields; 61 private javax.swing.JScrollPane jScrollPane3; 62 private javax.swing.JTable jTableGroups; 63 65 68 public GroupsDialog(java.awt.Frame parent, boolean modal) { 69 super(parent, modal); 70 initComponents(); 71 this.setSize(420, 250); 72 applyI18n(); 73 I18n.addOnLanguageChangedListener( new LanguageChangedListener() { 74 public void languageChanged(LanguageChangedEvent evt) { 75 applyI18n(); 76 } 77 } ); 78 Misc.centerFrame(this); 79 80 DefaultListSelectionModel dlsm = (DefaultListSelectionModel)this.jTableGroups.getSelectionModel(); 81 dlsm.addListSelectionListener(new javax.swing.event.ListSelectionListener () { 82 public void valueChanged(ListSelectionEvent e) { 83 jTableGroupsListSelectionValueChanged(e); 84 } 85 }); 86 87 88 javax.swing.KeyStroke escape = javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0, false); 89 javax.swing.Action escapeAction = new javax.swing.AbstractAction () { 90 public void actionPerformed(java.awt.event.ActionEvent e) { 91 setVisible(false); 92 } 93 }; 94 95 getRootPane().getInputMap(javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "ESCAPE"); 96 getRootPane().getActionMap().put("ESCAPE", escapeAction); 97 98 } 99 100 public void jTableGroupsListSelectionValueChanged(javax.swing.event.ListSelectionEvent e) { 101 102 103 if (this.jTableGroups.getSelectedRowCount() == 1 && this.jTableGroups.getRowCount() > 1) { 104 int row= jTableGroups.getSelectedRows()[0]; 105 this.jButtonMoveDownGroup.setEnabled( row != this.jTableGroups.getRowCount()-1); 106 this.jButtonMoveUpGroup.setEnabled( row != 0); 107 } else { 108 this.jButtonMoveDownGroup.setEnabled(false); 110 this.jButtonMoveUpGroup.setEnabled(false); 111 } 112 113 114 if (this.jTableGroups.getSelectedRowCount() > 0) { 115 this.jButtonModifyGroup.setEnabled(true); 116 this.jButtonDeleteGroup.setEnabled(true); 117 } 118 else { 119 this.jButtonModifyGroup.setEnabled(false); 120 this.jButtonDeleteGroup.setEnabled(false); 121 } 122 } 123 124 public void updateGroups() { 125 126 if (jReportFrame == null) { 127 return; 128 } 129 130 DefaultTableModel dtm = (DefaultTableModel)jTableGroups.getModel(); 131 dtm.setRowCount(0); 132 133 for (Iterator i = jReportFrame.getReport().getGroups().iterator(); i.hasNext(); ) { 134 it.businesslogic.ireport.Group group = (it.businesslogic.ireport.Group) i.next(); 135 Vector row = new Vector(); 136 row.addElement( group ); 137 138 dtm.addRow(row); 139 } 140 } 141 142 147 private void initComponents() { 149 java.awt.GridBagConstraints gridBagConstraints; 150 151 jPanelFields = new javax.swing.JPanel (); 152 jScrollPane3 = new javax.swing.JScrollPane (); 153 jTableGroups = new javax.swing.JTable (); 154 jPanelButtons = new javax.swing.JPanel (); 155 jButtonNewGroup = new javax.swing.JButton (); 156 jButtonModifyGroup = new javax.swing.JButton (); 157 jButtonMoveUpGroup = new javax.swing.JButton (); 158 jButtonMoveDownGroup = new javax.swing.JButton (); 159 jButtonDeleteGroup = new javax.swing.JButton (); 160 161 addWindowListener(new java.awt.event.WindowAdapter () { 162 public void windowClosing(java.awt.event.WindowEvent evt) { 163 closeDialog(evt); 164 } 165 }); 166 167 jPanelFields.setLayout(new java.awt.BorderLayout ()); 168 169 jScrollPane3.setBackground(new java.awt.Color (255, 255, 255)); 170 jTableGroups.setModel(new javax.swing.table.DefaultTableModel ( 171 new Object [][] { 172 173 }, 174 new String [] { 175 "Group name" 176 } 177 ) { 178 boolean[] canEdit = new boolean [] { 179 false 180 }; 181 182 public boolean isCellEditable(int rowIndex, int columnIndex) { 183 return canEdit [columnIndex]; 184 } 185 }); 186 jTableGroups.addMouseListener(new java.awt.event.MouseAdapter () { 187 public void mouseClicked(java.awt.event.MouseEvent evt) { 188 jTableGroupsMouseClicked(evt); 189 } 190 }); 191 192 jScrollPane3.setViewportView(jTableGroups); 193 194 jPanelFields.add(jScrollPane3, java.awt.BorderLayout.CENTER); 195 196 jPanelButtons.setLayout(new java.awt.GridBagLayout ()); 197 198 jPanelButtons.setPreferredSize(new java.awt.Dimension (100, 10)); 199 jPanelButtons.setMinimumSize(new java.awt.Dimension (100, 10)); 200 jButtonNewGroup.setText("New"); 201 jButtonNewGroup.addActionListener(new java.awt.event.ActionListener () { 202 public void actionPerformed(java.awt.event.ActionEvent evt) { 203 jButtonNewGroupActionPerformed(evt); 204 } 205 }); 206 207 gridBagConstraints = new java.awt.GridBagConstraints (); 208 gridBagConstraints.gridx = 0; 209 gridBagConstraints.gridy = 0; 210 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 211 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 212 gridBagConstraints.insets = new java.awt.Insets (3, 3, 5, 3); 213 jPanelButtons.add(jButtonNewGroup, gridBagConstraints); 214 215 jButtonModifyGroup.setText("Modify"); 216 jButtonModifyGroup.setEnabled(false); 217 jButtonModifyGroup.addActionListener(new java.awt.event.ActionListener () { 218 public void actionPerformed(java.awt.event.ActionEvent evt) { 219 jButtonModifyGroupActionPerformed(evt); 220 } 221 }); 222 223 gridBagConstraints = new java.awt.GridBagConstraints (); 224 gridBagConstraints.gridx = 0; 225 gridBagConstraints.gridy = 1; 226 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 227 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 228 gridBagConstraints.insets = new java.awt.Insets (0, 3, 5, 3); 229 jPanelButtons.add(jButtonModifyGroup, gridBagConstraints); 230 231 jButtonMoveUpGroup.setText("Move Up"); 232 jButtonMoveUpGroup.setEnabled(false); 233 jButtonMoveUpGroup.addActionListener(new java.awt.event.ActionListener () { 234 public void actionPerformed(java.awt.event.ActionEvent evt) { 235 jButtonMoveUpGroupActionPerformed(evt); 236 } 237 }); 238 239 gridBagConstraints = new java.awt.GridBagConstraints (); 240 gridBagConstraints.gridx = 0; 241 gridBagConstraints.gridy = 2; 242 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 243 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 244 gridBagConstraints.insets = new java.awt.Insets (0, 3, 5, 3); 245 jPanelButtons.add(jButtonMoveUpGroup, gridBagConstraints); 246 247 jButtonMoveDownGroup.setText("Move Down"); 248 jButtonMoveDownGroup.setEnabled(false); 249 jButtonMoveDownGroup.addActionListener(new java.awt.event.ActionListener () { 250 public void actionPerformed(java.awt.event.ActionEvent evt) { 251 jButtonMoveDownGroupActionPerformed(evt); 252 } 253 }); 254 255 gridBagConstraints = new java.awt.GridBagConstraints (); 256 gridBagConstraints.gridx = 0; 257 gridBagConstraints.gridy = 3; 258 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 259 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 260 gridBagConstraints.insets = new java.awt.Insets (0, 3, 5, 3); 261 jPanelButtons.add(jButtonMoveDownGroup, gridBagConstraints); 262 263 jButtonDeleteGroup.setText("Delete"); 264 jButtonDeleteGroup.setEnabled(false); 265 jButtonDeleteGroup.addActionListener(new java.awt.event.ActionListener () { 266 public void actionPerformed(java.awt.event.ActionEvent evt) { 267 jButtonDeleteGroupActionPerformed(evt); 268 } 269 }); 270 271 gridBagConstraints = new java.awt.GridBagConstraints (); 272 gridBagConstraints.gridx = 0; 273 gridBagConstraints.gridy = 4; 274 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 275 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 276 gridBagConstraints.weightx = 1.0; 277 gridBagConstraints.weighty = 1.0; 278 gridBagConstraints.insets = new java.awt.Insets (0, 3, 5, 3); 279 jPanelButtons.add(jButtonDeleteGroup, gridBagConstraints); 280 281 jPanelFields.add(jPanelButtons, java.awt.BorderLayout.EAST); 282 283 getContentPane().add(jPanelFields, java.awt.BorderLayout.CENTER); 284 285 pack(); 286 } 288 private void jTableGroupsMouseClicked(java.awt.event.MouseEvent evt) { 290 if (evt.getClickCount() == 2 && evt.getButton() == evt.BUTTON1 && 291 jTableGroups.getSelectedRow() >= 0) 292 { 293 jButtonModifyGroupActionPerformed(new java.awt.event.ActionEvent ( 294 jButtonModifyGroup, 0, 295 "")); 296 } 297 298 } 300 private void jButtonMoveDownGroupActionPerformed(java.awt.event.ActionEvent evt) { if ( jTableGroups.getSelectedRows().length == 1 ) { 302 int[] rows= jTableGroups.getSelectedRows(); 303 Group grp = (Group) jTableGroups.getValueAt( rows[0], 0) ; 304 this.getJReportFrame().getReport().moveGroup( grp , 1); 306 ((MainFrame)this.getParent()).getBandsDialog().updateBands(); 308 ((MainFrame)this.getParent()).getElementPropertiesDialog().updateSelection(); 309 this.getJReportFrame().setIsDocDirty(true); 310 this.getJReportFrame().repaint(); 311 updateGroups(); 312 313 for (int i=0; i <= jTableGroups.getRowCount()-1; i++ ) { 315 if ( grp == (Group) jTableGroups.getValueAt(i , 0) ) { 316 jTableGroups.changeSelection( i, 0, true, false ); 317 break; 318 } 319 } 320 321 ((MainFrame)this.getParent()).reportBandChanged( new ReportBandChangedEvent(this.getJReportFrame(), null, ReportBandChangedEvent.CHANGED )); 322 } 323 } 325 private void jButtonMoveUpGroupActionPerformed(java.awt.event.ActionEvent evt) { 327 if ( jTableGroups.getSelectedRows().length == 1 ) { 328 int[] rows= jTableGroups.getSelectedRows(); 329 Group grp = (Group) jTableGroups.getValueAt( rows[0], 0) ; 330 this.getJReportFrame().getReport().moveGroup( grp , -1); 332 ((MainFrame)this.getParent()).getBandsDialog().updateBands(); 334 ((MainFrame)this.getParent()).getElementPropertiesDialog().updateSelection(); 335 this.getJReportFrame().setIsDocDirty(true); 336 this.getJReportFrame().repaint(); 337 updateGroups(); 338 339 for (int i=0; i <= jTableGroups.getRowCount()-1; i++) { 341 if ( grp == (Group) jTableGroups.getValueAt(i , 0) ) { 342 jTableGroups.changeSelection( i, 0, true, false ); 343 break; 344 } 345 } 346 347 ((MainFrame)this.getParent()).reportBandChanged( new ReportBandChangedEvent(this.getJReportFrame(), null, ReportBandChangedEvent.CHANGED )); 348 } 349 350 } 352 private void jButtonDeleteGroupActionPerformed(java.awt.event.ActionEvent evt) { 355 int[] rows= jTableGroups.getSelectedRows(); 356 for (int i=rows.length-1; i>=0; --i) { 357 358 Enumeration e = this.getJReportFrame().getReport().getElements().elements(); 360 while (e.hasMoreElements()) { 361 ReportElement re = (ReportElement)e.nextElement(); 362 if (re.printWhenGroupChanges.equals(""+(it.businesslogic.ireport.Group)jTableGroups.getValueAt( rows[i], 0)) ){ 363 re.printWhenGroupChanges = ""; 364 } 365 } 366 367 e = this.getJReportFrame().getReport().getVariables().elements(); 369 while (e.hasMoreElements()) { 370 JRVariable var = (JRVariable)e.nextElement(); 371 if (var.getResetType().equals("Group") && var.getResetGroup().equals(""+(it.businesslogic.ireport.Group)jTableGroups.getValueAt( rows[i], 0)) ) { 372 var.setResetType("Report"); 373 var.setResetGroup(""); 374 } 375 } 376 377 this.getJReportFrame().getReport().delGroup((it.businesslogic.ireport.Group)jTableGroups.getValueAt( rows[i], 0)); 378 } 379 updateGroups(); 380 381 this.getJReportFrame().checkSelection(false); 382 ((MainFrame)this.getParent()).getBandsDialog().updateBands(); 383 ((MainFrame)this.getParent()).getElementPropertiesDialog().updateSelection(); 384 this.getJReportFrame().setIsDocDirty(true); 385 this.getJReportFrame().repaint(); 386 ((MainFrame)this.getParent()).reportBandChanged( new ReportBandChangedEvent(this.getJReportFrame(), null, ReportBandChangedEvent.REMOVED )); 387 } 389 private void jButtonModifyGroupActionPerformed(java.awt.event.ActionEvent evt) { it.businesslogic.ireport.Group group = (it.businesslogic.ireport.Group)jTableGroups.getValueAt( jTableGroups.getSelectedRow(), 0); 391 392 JRGroupDialog jrpd = new JRGroupDialog(getJReportFrame(), true); 393 jrpd.setGroup( group ); 394 jrpd.setVisible(true); 395 396 if (jrpd.getDialogResult() == javax.swing.JOptionPane.OK_OPTION) { 397 398 String oldName = group.getName(); 399 400 group.setName( jrpd.getGroupName() ); 401 group.setGroupExpression( jrpd.getExpression()); 402 group.setIsReprintHeaderOnEachPage(jrpd.isPrintHeaderEachPage() ); 403 group.setIsResetPageNumber( jrpd.isResetPageNumber() ); 404 group.setIsStartNewColumn( jrpd.isStartNewColumn()); 405 group.setIsStartNewPage( jrpd.isStartNewPage()); 406 group.setMinHeightToStartNewPage( jrpd.getMinHeightStartNewPage() ); 407 408 group.getGroupHeader().setName( group.getName()+"Header"); 409 group.getGroupFooter().setName( group.getName()+"Footer"); 410 411 int deltaHeader = jrpd.getHeaderBandHeight() - group.getGroupHeader().getHeight(); 412 int deltaFooter = jrpd.getFooterBandHeight() - group.getGroupFooter().getHeight(); 413 414 int positionFooterBottom = getJReportFrame().getReport().getBandYLocation( group.getGroupFooter() ) + group.getGroupFooter().getHeight(); 415 int positionHeaderBottom = getJReportFrame().getReport().getBandYLocation( group.getGroupHeader() ) + group.getGroupHeader().getHeight(); 416 417 Enumeration enumElements = getJReportFrame().getReport().getElements().elements(); 419 while (enumElements.hasMoreElements()) 420 { 421 ReportElement re = (ReportElement)enumElements.nextElement(); 422 423 if (re.getPosition().getY() >= positionFooterBottom) 424 { 425 re.trasform( new Point (0,deltaHeader+deltaFooter), TransformationType.TRANSFORMATION_MOVE); 426 } 427 else if (re.getPosition().getY() >= positionHeaderBottom) 428 { 429 re.trasform( new Point (0,deltaHeader), TransformationType.TRANSFORMATION_MOVE); 430 } 431 } 432 433 group.getGroupHeader().setHeight( jrpd.getHeaderBandHeight()); 434 group.getGroupFooter().setHeight( jrpd.getFooterBandHeight()); 435 436 for (int k=getJReportFrame().getReport().getVariables().size()-1; k>=0; --k) 437 { 438 JRVariable var = (JRVariable)getJReportFrame().getReport().getVariables().elementAt(k); 439 if (var.isBuiltin() && var.getName().equalsIgnoreCase(oldName+"_COUNT")) 440 { 441 getJReportFrame().getReport().removeVariable(var); 442 break; 443 } 444 } 445 getJReportFrame().getReport().addVariable(new it.businesslogic.ireport.JRVariable(group.getName()+"_COUNT","java.lang.Integer", true)); 446 447 448 Enumeration e = getJReportFrame().getReport().getVariables().elements(); 450 while (e.hasMoreElements()) { 451 JRVariable var = (JRVariable)e.nextElement(); 452 if (var.getResetGroup() != null && 453 var.getResetGroup().equals(oldName)) { 454 var.setResetGroup( group.getName() ); 455 } 456 } 457 458 e = this.getJReportFrame().getReport().getElements().elements(); 460 while (e.hasMoreElements()) { 461 ReportElement re = (ReportElement)e.nextElement(); 462 if (re.printWhenGroupChanges.equals(oldName) ) 463 re.printWhenGroupChanges = group.getName(); 464 465 if (re instanceof TextFieldReportElement && 466 ((TextFieldReportElement)re).getGroup().equals(oldName)) 467 ((TextFieldReportElement)re).setGroup(group.getName()); 468 } 469 470 471 472 ((MainFrame)this.getParent()).getBandsDialog().updateBands(); 474 ((MainFrame)this.getParent()).getElementPropertiesDialog().updateSelection(); 475 this.getJReportFrame().setIsDocDirty(true); 476 this.getJReportFrame().repaint(); 477 this.updateGroups(); 478 ((MainFrame)this.getParent()).reportBandChanged( new ReportBandChangedEvent(this.getJReportFrame(), null, ReportBandChangedEvent.CHANGED )); 479 } 480 481 } 483 private void jButtonNewGroupActionPerformed(java.awt.event.ActionEvent evt) { JRGroupDialog jrpd = new JRGroupDialog(this.getJReportFrame(), true); 485 jrpd.setVisible(true); 486 487 if (jrpd.getDialogResult() == javax.swing.JOptionPane.OK_OPTION) { 488 Group g = new it.businesslogic.ireport.Group(this.getJReportFrame().getReport(), jrpd.getGroupName()); 489 g.setGroupExpression( jrpd.getExpression()); 490 g.setIsReprintHeaderOnEachPage(jrpd.isPrintHeaderEachPage() ); 491 g.setIsResetPageNumber( jrpd.isResetPageNumber() ); 492 g.setIsStartNewColumn( jrpd.isStartNewColumn()); 493 g.setIsStartNewPage( jrpd.isStartNewPage()); 494 g.setMinHeightToStartNewPage( jrpd.getMinHeightStartNewPage() ); 495 496 g.getGroupHeader().setHeight( jrpd.getHeaderBandHeight()); 497 g.getGroupFooter().setHeight( jrpd.getFooterBandHeight()); 498 499 this.getJReportFrame().getReport().addGroup(g); 500 this.getJReportFrame().setIsDocDirty(true); 501 this.getJReportFrame().repaint(); 502 this.updateGroups(); 503 504 ((MainFrame)this.getParent()).getBandsDialog().updateBands(); 506 ((MainFrame)this.getParent()).getElementPropertiesDialog().updateBands(); 507 ((MainFrame)this.getParent()).getElementPropertiesDialog().updateGroups(); 508 ((MainFrame)this.getParent()).reportBandChanged( new ReportBandChangedEvent(this.getJReportFrame(), null, ReportBandChangedEvent.ADDED )); 509 } 510 } 512 513 private void closeDialog(java.awt.event.WindowEvent evt) { setVisible(false); 515 dispose(); 516 } 518 521 public static void main(String args[]) { 522 new GroupsDialog(new javax.swing.JFrame (), true).setVisible(true); 523 } 524 525 529 public it.businesslogic.ireport.gui.JReportFrame getJReportFrame() { 530 return jReportFrame; 531 } 532 533 537 public void setJReportFrame(it.businesslogic.ireport.gui.JReportFrame jReportFrame) { 538 this.jReportFrame = jReportFrame; 539 540 if (jReportFrame == null) { 542 setVisible(false); 543 return; 544 } 545 546 this.setTitle(jReportFrame.getReport().getName()+" groups..."); 547 if (isVisible()) { 548 updateGroups(); 549 } 550 } 551 552 553 public void setVisible(boolean visible) { 554 if (visible == isVisible()) return; 555 super.setVisible(visible); 556 if (visible == true) { 557 this.setJReportFrame(jReportFrame); 558 } 559 } 560 public void applyI18n(){ 561 jButtonDeleteGroup.setText(I18n.getString("groupsDialog.buttonDeleteGroup","Delete")); 563 jButtonModifyGroup.setText(I18n.getString("groupsDialog.buttonModifyGroup","Modify")); 564 jButtonMoveDownGroup.setText(I18n.getString("groupsDialog.buttonMoveDownGroup","Move Down")); 565 jButtonMoveUpGroup.setText(I18n.getString("groupsDialog.buttonMoveUpGroup","Move Up")); 566 jButtonNewGroup.setText(I18n.getString("groupsDialog.buttonNewGroup","New")); 567 569 jTableGroups.getColumnModel().getColumn(0).setHeaderValue( I18n.getString("groupsDialog.tablecolumn.groupName","Group name") ); 570 571 } 572 } 573 | Popular Tags |