1 32 33 package it.businesslogic.ireport.gui.subdataset; 34 35 import it.businesslogic.ireport.SortField; 36 import it.businesslogic.ireport.SubDataset; 37 import it.businesslogic.ireport.gui.event.SubDatasetObjectChangedEvent; 38 import it.businesslogic.ireport.util.I18n; 39 import javax.swing.DefaultListModel ; 40 import java.util.*; 41 45 public class SortFieldsDialog extends javax.swing.JDialog { 46 47 private SubDataset subDataset; 48 49 52 public SortFieldsDialog(java.awt.Frame parent, boolean modal) { 53 super(parent, modal); 54 initAll(); 55 } 56 57 public SortFieldsDialog(java.awt.Dialog parent, boolean modal) { 58 super(parent, modal); 59 initAll(); 60 } 61 62 public void initAll() 63 { 64 initComponents(); 65 66 jList1.setModel(new DefaultListModel ()); 67 it.businesslogic.ireport.util.Misc.centerFrame( this ); 68 69 jList1.setCellRenderer(new SortFieldCellRenderer()); 70 71 javax.swing.KeyStroke escape = javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0, false); 72 javax.swing.Action escapeAction = new javax.swing.AbstractAction () { 73 public void actionPerformed(java.awt.event.ActionEvent e) { 74 jButtonCloseActionPerformed(e); 75 } 76 }; 77 78 getRootPane().getInputMap(javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "ESCAPE"); 79 getRootPane().getActionMap().put("ESCAPE", escapeAction); 80 81 applyI18n(); 82 this.getRootPane().setDefaultButton(this.jButtonClose); 84 } 85 86 public void applyI18n() 87 { 88 this.setTitle( I18n.getString("sortFieldsDialog.title","Sorting options") ); 91 jButtonClose.setText(I18n.getString("close","Close")); 92 93 jLabelSortBy.setText( I18n.getString("sortFieldsDialog.labelSortBy","Sort by...") ); 94 jButtonAdd.setText( I18n.getString("sortFieldsDialog.buttonAdd","Add field") ); 95 jButtonAscDesc.setText( I18n.getString("sortFieldsDialog.buttonAscDesc","Asc / Desc") ); 96 jButtonModify.setText( I18n.getString("sortFieldsDialog.buttonModify","Modify field") ); 97 jButtonMoveDown.setText( I18n.getString("sortFieldsDialog.buttonMoveDown","Move down") ); 98 jButtonMoveUp.setText( I18n.getString("sortFieldsDialog.buttonMoveUp","Move up") ); 99 jButtonRemove.setText( I18n.getString("sortFieldsDialog.buttonRemove","Remove field") ); 100 } 101 102 107 private void initComponents() { 109 java.awt.GridBagConstraints gridBagConstraints; 110 111 jLabelSortBy = new javax.swing.JLabel (); 112 jScrollPane1 = new javax.swing.JScrollPane (); 113 jList1 = new javax.swing.JList (); 114 jPanel1 = new javax.swing.JPanel (); 115 jButtonAdd = new javax.swing.JButton (); 116 jButtonModify = new javax.swing.JButton (); 117 jButtonRemove = new javax.swing.JButton (); 118 jButtonMoveUp = new javax.swing.JButton (); 119 jButtonMoveDown = new javax.swing.JButton (); 120 jButtonAscDesc = new javax.swing.JButton (); 121 jPanel2 = new javax.swing.JPanel (); 122 jButtonClose = new javax.swing.JButton (); 123 124 getContentPane().setLayout(new java.awt.GridBagLayout ()); 125 126 setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 127 setTitle("Sorting"); 128 jLabelSortBy.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); 129 jLabelSortBy.setText("Sort by..."); 130 gridBagConstraints = new java.awt.GridBagConstraints (); 131 gridBagConstraints.gridx = 0; 132 gridBagConstraints.gridy = 0; 133 gridBagConstraints.gridwidth = 2; 134 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 135 gridBagConstraints.ipadx = 1; 136 gridBagConstraints.insets = new java.awt.Insets (4, 4, 4, 4); 137 getContentPane().add(jLabelSortBy, gridBagConstraints); 138 139 jScrollPane1.setPreferredSize(new java.awt.Dimension (359, 260)); 140 jList1.addListSelectionListener(new javax.swing.event.ListSelectionListener () { 141 public void valueChanged(javax.swing.event.ListSelectionEvent evt) { 142 jList1ValueChanged(evt); 143 } 144 }); 145 jList1.addMouseListener(new java.awt.event.MouseAdapter () { 146 public void mouseClicked(java.awt.event.MouseEvent evt) { 147 jList1MouseClicked(evt); 148 } 149 }); 150 151 jScrollPane1.setViewportView(jList1); 152 153 gridBagConstraints = new java.awt.GridBagConstraints (); 154 gridBagConstraints.gridx = 0; 155 gridBagConstraints.gridy = 1; 156 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 157 gridBagConstraints.weightx = 1.0; 158 gridBagConstraints.weighty = 1.0; 159 gridBagConstraints.insets = new java.awt.Insets (0, 4, 4, 4); 160 getContentPane().add(jScrollPane1, gridBagConstraints); 161 162 jPanel1.setLayout(new java.awt.GridBagLayout ()); 163 164 jPanel1.setMinimumSize(new java.awt.Dimension (120, 10)); 165 jPanel1.setPreferredSize(new java.awt.Dimension (120, 10)); 166 jButtonAdd.setText("Add field"); 167 jButtonAdd.setMaximumSize(new java.awt.Dimension (200, 26)); 168 jButtonAdd.setMinimumSize(new java.awt.Dimension (90, 26)); 169 jButtonAdd.setPreferredSize(new java.awt.Dimension (120, 26)); 170 jButtonAdd.addActionListener(new java.awt.event.ActionListener () { 171 public void actionPerformed(java.awt.event.ActionEvent evt) { 172 jButtonAddActionPerformed(evt); 173 } 174 }); 175 176 gridBagConstraints = new java.awt.GridBagConstraints (); 177 gridBagConstraints.gridx = 0; 178 gridBagConstraints.gridy = 0; 179 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 180 gridBagConstraints.insets = new java.awt.Insets (0, 0, 4, 0); 181 jPanel1.add(jButtonAdd, gridBagConstraints); 182 183 jButtonModify.setText("Modify field"); 184 jButtonModify.setMaximumSize(new java.awt.Dimension (200, 26)); 185 jButtonModify.setMinimumSize(new java.awt.Dimension (90, 26)); 186 jButtonModify.setPreferredSize(new java.awt.Dimension (120, 26)); 187 jButtonModify.addActionListener(new java.awt.event.ActionListener () { 188 public void actionPerformed(java.awt.event.ActionEvent evt) { 189 jButtonModifyActionPerformed(evt); 190 } 191 }); 192 193 gridBagConstraints = new java.awt.GridBagConstraints (); 194 gridBagConstraints.gridx = 0; 195 gridBagConstraints.gridy = 1; 196 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 197 gridBagConstraints.insets = new java.awt.Insets (0, 0, 4, 0); 198 jPanel1.add(jButtonModify, gridBagConstraints); 199 200 jButtonRemove.setText("Remove field"); 201 jButtonRemove.setMaximumSize(new java.awt.Dimension (200, 26)); 202 jButtonRemove.setMinimumSize(new java.awt.Dimension (90, 26)); 203 jButtonRemove.setPreferredSize(new java.awt.Dimension (120, 26)); 204 jButtonRemove.addActionListener(new java.awt.event.ActionListener () { 205 public void actionPerformed(java.awt.event.ActionEvent evt) { 206 jButtonRemoveActionPerformed(evt); 207 } 208 }); 209 210 gridBagConstraints = new java.awt.GridBagConstraints (); 211 gridBagConstraints.gridx = 0; 212 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 213 gridBagConstraints.insets = new java.awt.Insets (0, 0, 4, 0); 214 jPanel1.add(jButtonRemove, gridBagConstraints); 215 216 jButtonMoveUp.setText("Move up"); 217 jButtonMoveUp.setMaximumSize(new java.awt.Dimension (200, 26)); 218 jButtonMoveUp.setMinimumSize(new java.awt.Dimension (90, 26)); 219 jButtonMoveUp.setPreferredSize(new java.awt.Dimension (120, 26)); 220 jButtonMoveUp.addActionListener(new java.awt.event.ActionListener () { 221 public void actionPerformed(java.awt.event.ActionEvent evt) { 222 jButtonMoveUpActionPerformed(evt); 223 } 224 }); 225 226 gridBagConstraints = new java.awt.GridBagConstraints (); 227 gridBagConstraints.gridx = 0; 228 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 229 gridBagConstraints.insets = new java.awt.Insets (0, 0, 4, 0); 230 jPanel1.add(jButtonMoveUp, gridBagConstraints); 231 232 jButtonMoveDown.setText("Move down"); 233 jButtonMoveDown.setMaximumSize(new java.awt.Dimension (200, 26)); 234 jButtonMoveDown.setMinimumSize(new java.awt.Dimension (90, 26)); 235 jButtonMoveDown.setPreferredSize(new java.awt.Dimension (120, 26)); 236 jButtonMoveDown.addActionListener(new java.awt.event.ActionListener () { 237 public void actionPerformed(java.awt.event.ActionEvent evt) { 238 jButtonMoveDownActionPerformed(evt); 239 } 240 }); 241 242 gridBagConstraints = new java.awt.GridBagConstraints (); 243 gridBagConstraints.gridx = 0; 244 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 245 gridBagConstraints.insets = new java.awt.Insets (0, 0, 4, 0); 246 jPanel1.add(jButtonMoveDown, gridBagConstraints); 247 248 jButtonAscDesc.setIcon(new javax.swing.ImageIcon (getClass().getResource("/it/businesslogic/ireport/icons/datasource/arrow_refresh.png"))); 249 jButtonAscDesc.setText("Asc / Desc"); 250 jButtonAscDesc.setMaximumSize(new java.awt.Dimension (200, 26)); 251 jButtonAscDesc.setMinimumSize(new java.awt.Dimension (90, 26)); 252 jButtonAscDesc.setPreferredSize(new java.awt.Dimension (120, 26)); 253 jButtonAscDesc.addActionListener(new java.awt.event.ActionListener () { 254 public void actionPerformed(java.awt.event.ActionEvent evt) { 255 jButtonAscDescActionPerformed(evt); 256 } 257 }); 258 259 gridBagConstraints = new java.awt.GridBagConstraints (); 260 gridBagConstraints.gridx = 0; 261 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 262 gridBagConstraints.insets = new java.awt.Insets (0, 0, 4, 0); 263 jPanel1.add(jButtonAscDesc, gridBagConstraints); 264 265 gridBagConstraints = new java.awt.GridBagConstraints (); 266 gridBagConstraints.gridx = 0; 267 gridBagConstraints.weighty = 1.0; 268 jPanel1.add(jPanel2, gridBagConstraints); 269 270 jButtonClose.setText("Close"); 271 jButtonClose.setMaximumSize(new java.awt.Dimension (200, 26)); 272 jButtonClose.setMinimumSize(new java.awt.Dimension (90, 26)); 273 jButtonClose.setPreferredSize(new java.awt.Dimension (120, 26)); 274 jButtonClose.addActionListener(new java.awt.event.ActionListener () { 275 public void actionPerformed(java.awt.event.ActionEvent evt) { 276 jButtonCloseActionPerformed(evt); 277 } 278 }); 279 280 gridBagConstraints = new java.awt.GridBagConstraints (); 281 gridBagConstraints.gridx = 0; 282 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 283 jPanel1.add(jButtonClose, gridBagConstraints); 284 285 gridBagConstraints = new java.awt.GridBagConstraints (); 286 gridBagConstraints.gridx = 1; 287 gridBagConstraints.gridy = 1; 288 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 289 gridBagConstraints.weighty = 1.0; 290 gridBagConstraints.insets = new java.awt.Insets (0, 0, 4, 4); 291 getContentPane().add(jPanel1, gridBagConstraints); 292 293 pack(); 294 } 296 private void jList1MouseClicked(java.awt.event.MouseEvent evt) { 298 if (evt.getClickCount() == 2 && 299 evt.getButton() == evt.BUTTON1) 300 { 301 jButtonModifyActionPerformed(null); 302 } 303 } 305 private void jButtonAscDescActionPerformed(java.awt.event.ActionEvent evt) { 307 int[] items = jList1.getSelectedIndices(); 309 for (int i=0; i<items.length; ++i) 310 { 311 SortField field = (SortField)jList1.getModel().getElementAt(items[i]); 312 field.setDesc( !field.isDesc()); 313 getSubDataset().fireSubDatasetObjectChangedListenerSubDatasetObjectChanged( new SubDatasetObjectChangedEvent( getSubDataset(),SubDatasetObjectChangedEvent.SORTFIELD, SubDatasetObjectChangedEvent.MODIFIED, field, field)); 314 } 315 316 jList1.updateUI(); 317 318 } 320 private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) { 322 if (jList1.getSelectedIndex() >= 0) 323 { 324 jButtonAscDesc.setEnabled(true); 325 jButtonModify.setEnabled(true); 326 jButtonRemove.setEnabled(true); 327 jButtonMoveUp.setEnabled(jList1.getSelectedIndex() > 0); 328 jButtonMoveDown.setEnabled(jList1.getSelectedIndex() < ((DefaultListModel )jList1.getModel()).size()-1); 329 } 330 else 331 { 332 jButtonAscDesc.setEnabled(false); 333 jButtonModify.setEnabled(false); 334 jButtonRemove.setEnabled(false); 335 jButtonMoveUp.setEnabled(false); 336 jButtonMoveDown.setEnabled(false); 337 } 338 } 340 private void jButtonModifyActionPerformed(java.awt.event.ActionEvent evt) { 342 if (jList1.getSelectedIndex() >= 0) 344 { 345 SortField field = (SortField)jList1.getSelectedValue(); 346 SortFieldDialog sfd = new SortFieldDialog(this, true); 347 sfd.setSubDataset( getSubDataset() ); 348 sfd.setSortField( field ); 349 350 sfd.setVisible(true); 351 352 if (sfd.getDialogResult() == javax.swing.JOptionPane.OK_OPTION) 353 { 354 field.setFieldName( sfd.getSortField().getFieldName() ); 355 field.setDesc( sfd.getSortField().isDesc() ); 356 357 getSubDataset().fireSubDatasetObjectChangedListenerSubDatasetObjectChanged( new SubDatasetObjectChangedEvent( getSubDataset(),SubDatasetObjectChangedEvent.SORTFIELD, SubDatasetObjectChangedEvent.MODIFIED, field, field)); 358 359 jList1.updateUI(); 360 } 361 } 362 363 364 } 366 private void jButtonCloseActionPerformed(java.awt.event.ActionEvent evt) { setVisible(false); 368 } 370 private void jButtonMoveUpActionPerformed(java.awt.event.ActionEvent evt) { 372 if (jList1.getSelectedValues() != null) 373 { 374 int[] indices = jList1.getSelectedIndices(); 375 for (int i=0; i<indices.length; ++i) 376 { 377 if (indices[i] == 0) continue; 378 Object val = ((DefaultListModel )jList1.getModel()).remove( indices[i] ); 379 ((DefaultListModel )jList1.getModel()).insertElementAt(val, indices[i]-1); 380 indices[i]--; 381 } 382 jList1.setSelectedIndices(indices); 383 getSubDataset().getSortFields().removeAllElements(); 385 DefaultListModel dlm = (DefaultListModel )jList1.getModel(); 386 for (int i=0; i<dlm.getSize(); ++i) 387 { 388 getSubDataset().getSortFields().add( dlm.get(i) ); 389 } 390 getSubDataset().fireSubDatasetObjectChangedListenerSubDatasetObjectChanged( new SubDatasetObjectChangedEvent( getSubDataset(),SubDatasetObjectChangedEvent.SORTFIELD, SubDatasetObjectChangedEvent.MODIFIED, null, null)); 391 } 392 393 } 395 private void jButtonMoveDownActionPerformed(java.awt.event.ActionEvent evt) { if (jList1.getSelectedValues() != null) 397 { 398 int[] indices = jList1.getSelectedIndices(); 399 for (int i=indices.length-1; i>=0; --i) 400 { 401 if (indices[i] >= ((DefaultListModel )jList1.getModel()).size() -1 ) continue; 402 403 Object val = ((DefaultListModel )jList1.getModel()).remove( indices[i] ); 404 ((DefaultListModel )jList1.getModel()).insertElementAt(val, indices[i]+1); 405 indices[i]++; 406 } 407 jList1.setSelectedIndices(indices); 408 409 getSubDataset().getSortFields().removeAllElements(); 410 DefaultListModel dlm = (DefaultListModel )jList1.getModel(); 411 for (int i=0; i<dlm.getSize(); ++i) 412 { 413 getSubDataset().getSortFields().add( dlm.get(i) ); 414 } 415 416 getSubDataset().fireSubDatasetObjectChangedListenerSubDatasetObjectChanged( new SubDatasetObjectChangedEvent( getSubDataset() ,SubDatasetObjectChangedEvent.SORTFIELD, SubDatasetObjectChangedEvent.MODIFIED, null, null)); 417 } 418 } 420 private void jButtonRemoveActionPerformed(java.awt.event.ActionEvent evt) { 422 if (jList1.getSelectedValues() != null) 423 { 424 Object [] values = jList1.getSelectedValues(); 425 for (int i=0; i<values.length; ++i) 426 { 427 SortField field = (SortField)values[i]; 428 ((DefaultListModel )jList1.getModel()).removeElement(field); 429 getSubDataset().removeSortField( field ); 430 } 431 } 432 433 434 } 436 private void jButtonAddActionPerformed(java.awt.event.ActionEvent evt) { 438 SortFieldDialog jrpd = new SortFieldDialog(this, true); 439 jrpd.setSubDataset( getSubDataset() ); 440 jrpd.setVisible(true); 441 442 if (jrpd.getDialogResult() == javax.swing.JOptionPane.OK_OPTION) 443 { 444 445 SortField field = jrpd.getSortField(); 446 ((DefaultListModel )jList1.getModel()).addElement(field); 447 getSubDataset().addSortField( field ); 448 } 449 450 451 } 453 454 456 public SubDataset getSubDataset() { 457 return subDataset; 458 } 459 460 public void setSubDataset(SubDataset subDataset) { 461 this.subDataset = subDataset; 462 Vector cp = subDataset.getSortFields(); 463 for (int i=0; i<cp.size(); ++i) { 464 ((DefaultListModel )jList1.getModel()).addElement( (SortField)cp.elementAt(i) ); 465 } 466 } 467 468 private javax.swing.JButton jButtonAdd; 470 private javax.swing.JButton jButtonAscDesc; 471 private javax.swing.JButton jButtonClose; 472 private javax.swing.JButton jButtonModify; 473 private javax.swing.JButton jButtonMoveDown; 474 private javax.swing.JButton jButtonMoveUp; 475 private javax.swing.JButton jButtonRemove; 476 private javax.swing.JLabel jLabelSortBy; 477 private javax.swing.JList jList1; 478 private javax.swing.JPanel jPanel1; 479 private javax.swing.JPanel jPanel2; 480 private javax.swing.JScrollPane jScrollPane1; 481 483 } 484 | Popular Tags |