1 32 33 package it.businesslogic.ireport.gui.subdataset; 34 35 import javax.swing.table.*; 36 import javax.swing.*; 37 import javax.swing.event.*; 38 import it.businesslogic.ireport.*; 39 import it.businesslogic.ireport.util.*; 40 41 import java.util.*; 42 43 47 public class GroupsDialog extends javax.swing.JDialog { 48 49 50 private SubDataset subDataset=null; 51 52 private javax.swing.JButton jButtonDeleteGroup; 54 private javax.swing.JButton jButtonModifyGroup; 55 private javax.swing.JButton jButtonMoveDownGroup; 56 private javax.swing.JButton jButtonMoveUpGroup; 57 private javax.swing.JButton jButtonNewGroup; 58 private javax.swing.JPanel jPanelButtons; 59 private javax.swing.JPanel jPanelFields; 60 private javax.swing.JScrollPane jScrollPane3; 61 private javax.swing.JTable jTableGroups; 62 64 67 public GroupsDialog(java.awt.Dialog parent, boolean modal) { 68 super(parent, modal); 69 initComponents(); 70 applyI18n(); 71 this.setSize(420, 250); 72 Misc.centerFrame(this); 73 74 DefaultListSelectionModel dlsm = (DefaultListSelectionModel)this.jTableGroups.getSelectionModel(); 75 dlsm.addListSelectionListener(new javax.swing.event.ListSelectionListener () { 76 public void valueChanged(ListSelectionEvent e) { 77 jTableGroupsListSelectionValueChanged(e); 78 } 79 }); 80 81 javax.swing.KeyStroke escape = javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0, false); 82 javax.swing.Action escapeAction = new javax.swing.AbstractAction () { 83 public void actionPerformed(java.awt.event.ActionEvent e) { 84 setVisible(false); 85 } 86 }; 87 88 getRootPane().getInputMap(javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "ESCAPE"); 89 getRootPane().getActionMap().put("ESCAPE", escapeAction); 90 91 } 92 93 public void jTableGroupsListSelectionValueChanged(javax.swing.event.ListSelectionEvent e) { 94 95 96 if (this.jTableGroups.getSelectedRowCount() == 1 && this.jTableGroups.getRowCount() > 1) { 97 int row= jTableGroups.getSelectedRows()[0]; 98 this.jButtonMoveDownGroup.setEnabled( row != this.jTableGroups.getRowCount()-1); 99 this.jButtonMoveUpGroup.setEnabled( row != 0); 100 } else { 101 this.jButtonMoveDownGroup.setEnabled(false); 103 this.jButtonMoveUpGroup.setEnabled(false); 104 } 105 106 107 if (this.jTableGroups.getSelectedRowCount() > 0) { 108 this.jButtonModifyGroup.setEnabled(true); 109 this.jButtonDeleteGroup.setEnabled(true); 110 } 111 else { 112 this.jButtonModifyGroup.setEnabled(false); 113 this.jButtonDeleteGroup.setEnabled(false); 114 } 115 } 116 117 public void updateGroups() { 118 119 if (getSubDataset() == null) { 120 return; 121 } 122 123 int[] selectedRows = jTableGroups.getSelectedRows(); 124 List selectedObjects = new ArrayList(); 125 for (int i=0; i<selectedRows.length; ++i) 126 { 127 selectedObjects.add( jTableGroups.getValueAt(selectedRows[i],0) ); 128 } 129 130 DefaultTableModel dtm = (DefaultTableModel)jTableGroups.getModel(); 131 dtm.setRowCount(0); 132 133 int k=0; 134 for (Iterator i = getSubDataset().getGroups().iterator(); i.hasNext(); ) { 135 it.businesslogic.ireport.Group group = (it.businesslogic.ireport.Group) i.next(); 136 Vector row = new Vector(); 137 row.addElement( group ); 138 139 dtm.addRow(row); 140 if (selectedObjects.contains(group)) 141 { 142 jTableGroups.getSelectionModel().addSelectionInterval(k,k); 143 } 144 k++; 145 } 146 } 147 148 153 private void initComponents() { 155 java.awt.GridBagConstraints gridBagConstraints; 156 157 jPanelFields = new javax.swing.JPanel (); 158 jScrollPane3 = new javax.swing.JScrollPane (); 159 jTableGroups = new javax.swing.JTable (); 160 jPanelButtons = new javax.swing.JPanel (); 161 jButtonNewGroup = new javax.swing.JButton (); 162 jButtonModifyGroup = new javax.swing.JButton (); 163 jButtonMoveUpGroup = new javax.swing.JButton (); 164 jButtonMoveDownGroup = new javax.swing.JButton (); 165 jButtonDeleteGroup = new javax.swing.JButton (); 166 167 addWindowListener(new java.awt.event.WindowAdapter () { 168 public void windowClosing(java.awt.event.WindowEvent evt) { 169 closeDialog(evt); 170 } 171 }); 172 173 jPanelFields.setLayout(new java.awt.BorderLayout ()); 174 175 jScrollPane3.setBackground(new java.awt.Color (255, 255, 255)); 176 jTableGroups.setModel(new javax.swing.table.DefaultTableModel ( 177 new Object [][] { 178 179 }, 180 new String [] { 181 "Group name" 182 } 183 ) { 184 boolean[] canEdit = new boolean [] { 185 false 186 }; 187 188 public boolean isCellEditable(int rowIndex, int columnIndex) { 189 return canEdit [columnIndex]; 190 } 191 }); 192 jTableGroups.addMouseListener(new java.awt.event.MouseAdapter () { 193 public void mouseClicked(java.awt.event.MouseEvent evt) { 194 jTableGroupsMouseClicked(evt); 195 } 196 }); 197 198 jScrollPane3.setViewportView(jTableGroups); 199 200 jPanelFields.add(jScrollPane3, java.awt.BorderLayout.CENTER); 201 202 jPanelButtons.setLayout(new java.awt.GridBagLayout ()); 203 204 jPanelButtons.setPreferredSize(new java.awt.Dimension (100, 10)); 205 jPanelButtons.setMinimumSize(new java.awt.Dimension (100, 10)); 206 jButtonNewGroup.setText("New"); 207 jButtonNewGroup.addActionListener(new java.awt.event.ActionListener () { 208 public void actionPerformed(java.awt.event.ActionEvent evt) { 209 jButtonNewGroupActionPerformed(evt); 210 } 211 }); 212 213 gridBagConstraints = new java.awt.GridBagConstraints (); 214 gridBagConstraints.gridx = 0; 215 gridBagConstraints.gridy = 0; 216 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 217 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 218 gridBagConstraints.insets = new java.awt.Insets (3, 3, 5, 3); 219 jPanelButtons.add(jButtonNewGroup, gridBagConstraints); 220 221 jButtonModifyGroup.setText("Modify"); 222 jButtonModifyGroup.setEnabled(false); 223 jButtonModifyGroup.addActionListener(new java.awt.event.ActionListener () { 224 public void actionPerformed(java.awt.event.ActionEvent evt) { 225 jButtonModifyGroupActionPerformed(evt); 226 } 227 }); 228 229 gridBagConstraints = new java.awt.GridBagConstraints (); 230 gridBagConstraints.gridx = 0; 231 gridBagConstraints.gridy = 1; 232 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 233 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 234 gridBagConstraints.insets = new java.awt.Insets (0, 3, 5, 3); 235 jPanelButtons.add(jButtonModifyGroup, gridBagConstraints); 236 237 jButtonMoveUpGroup.setText("Move Up"); 238 jButtonMoveUpGroup.setEnabled(false); 239 jButtonMoveUpGroup.addActionListener(new java.awt.event.ActionListener () { 240 public void actionPerformed(java.awt.event.ActionEvent evt) { 241 jButtonMoveUpGroupActionPerformed(evt); 242 } 243 }); 244 245 gridBagConstraints = new java.awt.GridBagConstraints (); 246 gridBagConstraints.gridx = 0; 247 gridBagConstraints.gridy = 2; 248 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 249 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 250 gridBagConstraints.insets = new java.awt.Insets (0, 3, 5, 3); 251 jPanelButtons.add(jButtonMoveUpGroup, gridBagConstraints); 252 253 jButtonMoveDownGroup.setText("Move Down"); 254 jButtonMoveDownGroup.setEnabled(false); 255 jButtonMoveDownGroup.addActionListener(new java.awt.event.ActionListener () { 256 public void actionPerformed(java.awt.event.ActionEvent evt) { 257 jButtonMoveDownGroupActionPerformed(evt); 258 } 259 }); 260 261 gridBagConstraints = new java.awt.GridBagConstraints (); 262 gridBagConstraints.gridx = 0; 263 gridBagConstraints.gridy = 3; 264 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 265 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 266 gridBagConstraints.insets = new java.awt.Insets (0, 3, 5, 3); 267 jPanelButtons.add(jButtonMoveDownGroup, gridBagConstraints); 268 269 jButtonDeleteGroup.setText("Delete"); 270 jButtonDeleteGroup.setEnabled(false); 271 jButtonDeleteGroup.addActionListener(new java.awt.event.ActionListener () { 272 public void actionPerformed(java.awt.event.ActionEvent evt) { 273 jButtonDeleteGroupActionPerformed(evt); 274 } 275 }); 276 277 gridBagConstraints = new java.awt.GridBagConstraints (); 278 gridBagConstraints.gridx = 0; 279 gridBagConstraints.gridy = 4; 280 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 281 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 282 gridBagConstraints.weightx = 1.0; 283 gridBagConstraints.weighty = 1.0; 284 gridBagConstraints.insets = new java.awt.Insets (0, 3, 5, 3); 285 jPanelButtons.add(jButtonDeleteGroup, gridBagConstraints); 286 287 jPanelFields.add(jPanelButtons, java.awt.BorderLayout.EAST); 288 289 getContentPane().add(jPanelFields, java.awt.BorderLayout.CENTER); 290 291 pack(); 292 } 294 private void jTableGroupsMouseClicked(java.awt.event.MouseEvent evt) { 296 if (evt.getClickCount() == 2 && evt.getButton() == evt.BUTTON1) 297 { 298 jButtonModifyGroupActionPerformed(null); 299 } 300 301 } 303 private void jButtonMoveDownGroupActionPerformed(java.awt.event.ActionEvent evt) { if ( jTableGroups.getSelectedRows().length == 1 ) { 305 int[] rows= jTableGroups.getSelectedRows(); 306 Group grp = (Group) jTableGroups.getValueAt( rows[0], 0) ; 307 308 int groupPos = getSubDataset().getGroups().indexOf( grp ); 310 if (groupPos < getSubDataset().getGroups().size()-1) 312 { 313 getSubDataset().getGroups().remove(groupPos); 314 getSubDataset().getGroups().insertElementAt( grp, groupPos + 1); 315 updateGroups(); 316 jTableGroupsListSelectionValueChanged(null); 317 } 318 319 } 321 } 323 private void jButtonMoveUpGroupActionPerformed(java.awt.event.ActionEvent evt) { 325 if ( jTableGroups.getSelectedRows().length == 1 ) { 326 int[] rows= jTableGroups.getSelectedRows(); 327 Group grp = (Group) jTableGroups.getValueAt( rows[0], 0) ; 328 int groupPos = getSubDataset().getGroups().indexOf( grp ); 330 if (groupPos > 0) 332 { 333 getSubDataset().getGroups().remove(groupPos); 334 getSubDataset().getGroups().insertElementAt( grp, groupPos - 1); 335 updateGroups(); 336 jTableGroupsListSelectionValueChanged(null); 337 } 338 339 } 341 342 } 344 private void jButtonDeleteGroupActionPerformed(java.awt.event.ActionEvent evt) { 347 int[] rows= jTableGroups.getSelectedRows(); 348 for (int i=rows.length-1; i>=0; --i) { 349 350 getSubDataset().getGroups().remove( jTableGroups.getValueAt( rows[i], 0)); 351 } 352 updateGroups(); 353 } 356 private void jButtonModifyGroupActionPerformed(java.awt.event.ActionEvent evt) { it.businesslogic.ireport.Group group = (it.businesslogic.ireport.Group)jTableGroups.getValueAt( jTableGroups.getSelectedRow(), 0); 358 359 GroupDialog jrpd = new GroupDialog(this, true); 360 jrpd.setGroup( group ); 361 jrpd.setSubDataset( getSubDataset()); 362 jrpd.setVisible(true); 363 364 if (jrpd.getDialogResult() == javax.swing.JOptionPane.OK_OPTION) { 365 366 String oldName = group.getName(); 367 368 group.setName( jrpd.getGroupName() ); 369 group.setGroupExpression( jrpd.getExpression()); 370 376 381 for (int k=getSubDataset().getVariables().size()-1; k>=0; --k) 382 { 383 JRVariable var = (JRVariable)getSubDataset().getVariables().elementAt(k); 384 if (var.isBuiltin() && var.getName().equalsIgnoreCase(oldName+"_COUNT")) 385 { 386 getSubDataset().removeVariable(var); 387 break; 388 } 389 } 390 getSubDataset().addVariable(new it.businesslogic.ireport.JRVariable(group.getName()+"_COUNT","java.lang.Integer", true)); 391 392 393 Enumeration e = getSubDataset().getVariables().elements(); 395 while (e.hasMoreElements()) { 396 JRVariable var = (JRVariable)e.nextElement(); 397 if (var.getResetGroup() != null && 398 var.getResetGroup().equals(oldName)) { 399 var.setResetGroup( group.getName() ); 400 } 401 } 402 403 jTableGroups.setValueAt( group, jTableGroups.getSelectedRow(), 0); 404 } 407 408 } 410 private void jButtonNewGroupActionPerformed(java.awt.event.ActionEvent evt) { GroupDialog jrpd = new GroupDialog(this, true); 412 jrpd.setSubDataset( getSubDataset()); 413 jrpd.setVisible(true); 414 415 if (jrpd.getDialogResult() == javax.swing.JOptionPane.OK_OPTION) { 416 Group g = new it.businesslogic.ireport.Group(getSubDataset(), jrpd.getGroupName()); 417 g.setGroupExpression( jrpd.getExpression()); 418 424 427 getSubDataset().getGroups().add(g); 428 this.updateGroups(); 429 430 } 433 } 435 436 private void closeDialog(java.awt.event.WindowEvent evt) { setVisible(false); 438 dispose(); 439 } 441 445 public void setSubDataset(it.businesslogic.ireport.SubDataset subDataset) { 446 this.subDataset = subDataset; 447 if (subDataset == null) return; 448 this.setTitle(subDataset.getName()+" groups..."); 449 updateGroups(); 450 } 451 452 public SubDataset getSubDataset() { 453 return subDataset; 454 } 455 456 public void applyI18n(){ 457 jButtonDeleteGroup.setText(I18n.getString("groupsDialog.buttonDeleteGroup","Delete")); 459 jButtonModifyGroup.setText(I18n.getString("groupsDialog.buttonModifyGroup","Modify")); 460 jButtonMoveDownGroup.setText(I18n.getString("groupsDialog.buttonMoveDownGroup","Move Down")); 461 jButtonMoveUpGroup.setText(I18n.getString("groupsDialog.buttonMoveUpGroup","Move Up")); 462 jButtonNewGroup.setText(I18n.getString("groupsDialog.buttonNewGroup","New")); 463 jTableGroups.getColumnModel().getColumn(0).setHeaderValue( I18n.getString("groupsDialog.tablecolumn.groupName","Group name") ); 465 466 } 467 } 468 | Popular Tags |