1 32 33 package it.businesslogic.ireport.gui.style; 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.gui.MainFrame; 40 import it.businesslogic.ireport.gui.event.StyleChangedEvent; 41 import it.businesslogic.ireport.util.Misc; 42 43 import java.util.*; 44 import it.businesslogic.ireport.util.I18n; 45 49 public class StylesDialog extends javax.swing.JDialog implements it.businesslogic.ireport.gui.event.StyleChangedListener 50 { 51 52 53 public StylesDialog(java.awt.Frame parent, boolean modal) { 54 super(parent, modal); 55 initComponents(); 56 applyI18n(); 57 this.setSize(490, 250); 58 61 67 DefaultListSelectionModel dlsm = (DefaultListSelectionModel)this.jTableParameters.getSelectionModel(); 68 dlsm.addListSelectionListener(new javax.swing.event.ListSelectionListener () { 69 public void valueChanged(ListSelectionEvent e) { 70 jTableParametersListSelectionValueChanged(e); 71 } 72 }); 73 74 it.businesslogic.ireport.util.Misc.centerFrame(this); 76 77 DefaultTableModel dtm = (DefaultTableModel)jTableParameters.getModel(); 78 79 80 it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().getReport().addStyleChangedListener(this); 81 Enumeration e = it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().getReport().getStyles().elements(); 82 while (e.hasMoreElements()) 83 { 84 Style style = (Style)e.nextElement(); 85 addStyle(style ); 86 } 87 88 DefaultTableColumnModel dtcm = (DefaultTableColumnModel)jTableParameters.getColumnModel(); 89 dtcm.getColumn(0).setPreferredWidth(350); 90 dtcm.getColumn(1).setPreferredWidth(100); 91 92 javax.swing.KeyStroke escape = javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0, false); 93 javax.swing.Action escapeAction = new javax.swing.AbstractAction () { 94 public void actionPerformed(java.awt.event.ActionEvent e) { 95 setVisible(false); 96 } 97 }; 98 99 getRootPane().getInputMap(javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "ESCAPE"); 100 getRootPane().getActionMap().put("ESCAPE", escapeAction); 101 102 } 103 104 105 public void jTableParametersListSelectionValueChanged(javax.swing.event.ListSelectionEvent e) 106 { 107 if (this.jTableParameters.getSelectedRowCount() > 0) { 108 this.jButtonModify.setEnabled(true); 109 this.jButtonDelete.setEnabled(true); 110 this.jButtonDefault.setEnabled(true); 111 } 112 else { 113 this.jButtonModify.setEnabled(false); 114 this.jButtonDelete.setEnabled(false); 115 this.jButtonDefault.setEnabled(false); 116 } 117 } 118 119 120 125 private void initComponents() { 127 java.awt.GridBagConstraints gridBagConstraints; 128 129 jPanelParameters = new javax.swing.JPanel (); 130 jScrollPane1 = new javax.swing.JScrollPane (); 131 jTableParameters = new javax.swing.JTable (); 132 jPanelButtons = new javax.swing.JPanel (); 133 jButtonNew = new javax.swing.JButton (); 134 jButtonModify = new javax.swing.JButton (); 135 jButtonDefault = new javax.swing.JButton (); 136 jButtonDelete = new javax.swing.JButton (); 137 138 setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 139 setTitle("Styles"); 140 addWindowListener(new java.awt.event.WindowAdapter () { 141 public void windowClosing(java.awt.event.WindowEvent evt) { 142 closeDialog(evt); 143 } 144 }); 145 146 jPanelParameters.setLayout(new java.awt.BorderLayout (2, 2)); 147 148 jScrollPane1.setBackground(new java.awt.Color (255, 255, 255)); 149 jTableParameters.setModel(new javax.swing.table.DefaultTableModel ( 150 new Object [][] { 151 152 }, 153 new String [] { 154 "Style name", "Default" 155 } 156 ) { 157 boolean[] canEdit = new boolean [] { 158 false, false 159 }; 160 161 public boolean isCellEditable(int rowIndex, int columnIndex) { 162 return canEdit [columnIndex]; 163 } 164 }); 165 jTableParameters.addMouseListener(new java.awt.event.MouseAdapter () { 166 public void mouseClicked(java.awt.event.MouseEvent evt) { 167 jTableParametersMouseClicked(evt); 168 } 169 }); 170 171 jScrollPane1.setViewportView(jTableParameters); 172 173 jPanelParameters.add(jScrollPane1, java.awt.BorderLayout.CENTER); 174 175 jPanelButtons.setLayout(new java.awt.GridBagLayout ()); 176 177 jPanelButtons.setMinimumSize(new java.awt.Dimension (100, 10)); 178 jPanelButtons.setPreferredSize(new java.awt.Dimension (100, 10)); 179 jButtonNew.setText("New"); 180 jButtonNew.setMargin(new java.awt.Insets (2, 4, 2, 4)); 181 jButtonNew.addActionListener(new java.awt.event.ActionListener () { 182 public void actionPerformed(java.awt.event.ActionEvent evt) { 183 jButtonNewActionPerformed(evt); 184 } 185 }); 186 187 gridBagConstraints = new java.awt.GridBagConstraints (); 188 gridBagConstraints.gridx = 0; 189 gridBagConstraints.gridy = 0; 190 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 191 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 192 gridBagConstraints.insets = new java.awt.Insets (3, 3, 3, 3); 193 jPanelButtons.add(jButtonNew, gridBagConstraints); 194 195 jButtonModify.setText("Modify"); 196 jButtonModify.setEnabled(false); 197 jButtonModify.setMargin(new java.awt.Insets (2, 4, 2, 4)); 198 jButtonModify.addActionListener(new java.awt.event.ActionListener () { 199 public void actionPerformed(java.awt.event.ActionEvent evt) { 200 jButtonModifyActionPerformed(evt); 201 } 202 }); 203 204 gridBagConstraints = new java.awt.GridBagConstraints (); 205 gridBagConstraints.gridx = 0; 206 gridBagConstraints.gridy = 1; 207 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 208 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 209 gridBagConstraints.insets = new java.awt.Insets (0, 3, 5, 3); 210 jPanelButtons.add(jButtonModify, gridBagConstraints); 211 212 jButtonDefault.setText("Set as default"); 213 jButtonDefault.setEnabled(false); 214 jButtonDefault.setMargin(new java.awt.Insets (2, 4, 2, 4)); 215 jButtonDefault.addActionListener(new java.awt.event.ActionListener () { 216 public void actionPerformed(java.awt.event.ActionEvent evt) { 217 jButtonDefaultActionPerformed(evt); 218 } 219 }); 220 221 gridBagConstraints = new java.awt.GridBagConstraints (); 222 gridBagConstraints.gridx = 0; 223 gridBagConstraints.gridy = 2; 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 (0, 3, 5, 3); 228 jPanelButtons.add(jButtonDefault, gridBagConstraints); 229 230 jButtonDelete.setText("Delete"); 231 jButtonDelete.setEnabled(false); 232 jButtonDelete.setMargin(new java.awt.Insets (2, 4, 2, 4)); 233 jButtonDelete.addActionListener(new java.awt.event.ActionListener () { 234 public void actionPerformed(java.awt.event.ActionEvent evt) { 235 jButtonDeleteActionPerformed(evt); 236 } 237 }); 238 239 gridBagConstraints = new java.awt.GridBagConstraints (); 240 gridBagConstraints.gridx = 0; 241 gridBagConstraints.gridy = 3; 242 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 243 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 244 gridBagConstraints.weightx = 1.0; 245 gridBagConstraints.weighty = 1.0; 246 gridBagConstraints.insets = new java.awt.Insets (0, 3, 5, 3); 247 jPanelButtons.add(jButtonDelete, gridBagConstraints); 248 249 jPanelParameters.add(jPanelButtons, java.awt.BorderLayout.EAST); 250 251 getContentPane().add(jPanelParameters, java.awt.BorderLayout.CENTER); 252 253 pack(); 254 } 256 private void jButtonDefaultActionPerformed(java.awt.event.ActionEvent evt) { 258 if (jTableParameters.getSelectedRow() < 0) return; 259 Style irc = null; 260 try { 261 irc = (Style)jTableParameters.getModel().getValueAt(jTableParameters.getSelectedRow(), 0); 262 } catch (Exception ex) { return; } 263 264 if (irc == null) return; 265 266 irc.getAttributes().put(irc.ATTRIBUTE_isDefault, "true"); 267 jTableParameters.setValueAt("Yes",jTableParameters.getSelectedRow(),1); 268 269 for (int i=0; i<jTableParameters.getRowCount(); ++i) 270 { 271 if (i != jTableParameters.getSelectedRow()) 272 { 273 Style s = (Style)jTableParameters.getModel().getValueAt(i, 0); 274 if (s != null) s.getAttributes().remove(s.ATTRIBUTE_isDefault); 275 jTableParameters.setValueAt("",i,1); 276 } 277 } 278 279 MainFrame.getMainInstance().getActiveReportFrame().getReport().fireStyleChangedListenerStyleChanged( 280 new StyleChangedEvent( 281 MainFrame.getMainInstance().getActiveReportFrame().getReport(), 282 StyleChangedEvent.CHANGED, 283 irc, 284 irc)); 285 } 287 private void jTableParametersMouseClicked(java.awt.event.MouseEvent evt) { if (evt.getClickCount() == 2 && evt.getButton() == evt.BUTTON1) 289 { 290 jButtonModifyActionPerformed(null); 291 } 292 } 294 private void jButtonDeleteActionPerformed(java.awt.event.ActionEvent evt) { if (jTableParameters.getSelectedRowCount() > 0) 297 { 298 Style irc = null; 299 try { 300 irc = (Style)jTableParameters.getModel().getValueAt(jTableParameters.getSelectedRow(), 0); 301 } catch (Exception ex) { return; } 302 303 304 if (javax.swing.JOptionPane.showConfirmDialog(this, 305 I18n.getString("messages.stylesDialog.removingStyle","Do you want really remove this style?"), 306 "", 307 javax.swing.JOptionPane.YES_NO_CANCEL_OPTION, 308 javax.swing.JOptionPane.QUESTION_MESSAGE) == javax.swing.JOptionPane.YES_OPTION) 309 { 310 MainFrame.getMainInstance().getActiveReportFrame().getReport().removeStyle( irc ); 311 312 ((DefaultTableModel)jTableParameters.getModel()).removeRow(jTableParameters.getSelectedRow()); 313 jTableParameters.updateUI(); 314 } 315 } 316 317 } 319 private void jButtonModifyActionPerformed(java.awt.event.ActionEvent evt) { java.awt.Frame parent = Misc.frameFromComponent(this); 321 StyleDialog cd = new StyleDialog(this,true); 322 323 if (jTableParameters.getSelectedRow() < 0) return; 325 Style irc = null; 326 try { 327 irc = (Style)jTableParameters.getModel().getValueAt(jTableParameters.getSelectedRow(), 0); 328 } catch (Exception ex) { return; } 329 330 if (irc == null) return; 331 332 cd.setStyle( irc ); 333 cd.setVisible(true); 334 335 if (cd.getDialogResult() == JOptionPane.OK_OPTION) 336 { 337 Style sub = cd.getStyle(); 338 try { 341 jTableParameters.getModel().setValueAt(sub ,jTableParameters.getSelectedRow(), 0); 342 } catch (Exception ex) { return; } 343 } 344 } 346 private void jButtonNewActionPerformed(java.awt.event.ActionEvent evt) { java.awt.Frame parent = Misc.frameFromComponent(this); 348 StyleDialog cd = new StyleDialog(this,true); 349 cd.setVisible(true); 350 } 352 353 public void addStyle(Style s) 354 { 355 DefaultTableModel dtm = (DefaultTableModel)jTableParameters.getModel(); 356 dtm.addRow( new Object []{s, (s.getAttributeBoolean(Style.ATTRIBUTE_isDefault, false) ? "Yes" : "")}); 357 } 358 359 public void styleChanged(it.businesslogic.ireport.gui.event.StyleChangedEvent evt) { 360 361 if (evt.getAction() == evt.ADDED) 362 { 363 this.addStyle( evt.getNewValue() ); 364 } 365 else 366 { 367 for (int i = 0; i<jTableParameters.getRowCount(); ++i) 368 { 369 if (jTableParameters.getModel().getValueAt(i,0) == evt.getOldValue()) 370 { 371 if (evt.getAction() == evt.CHANGED) 372 { 373 jTableParameters.getModel().setValueAt(evt.getNewValue(),i,0); 374 jTableParameters.getModel().setValueAt((evt.getNewValue().getAttributeBoolean(Style.ATTRIBUTE_isDefault, false) ? "Yes" : "") ,i,1); 375 } 376 else 377 { 378 ((javax.swing.table.DefaultTableModel )jTableParameters.getModel()).removeRow(i); 379 } 380 jTableParameters.updateUI(); 381 break; 382 } 383 } 384 } 385 386 for (int i=0; i<jTableParameters.getRowCount(); ++i) 387 { 388 Style s = (Style)jTableParameters.getModel().getValueAt(i, 0); 389 jTableParameters.setValueAt( (s.getAttributeBoolean(Style.ATTRIBUTE_isDefault, false) ? "Yes" : ""),i,1); 390 } 391 392 } 393 394 395 private void closeDialog(java.awt.event.WindowEvent evt) { it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().getReport().removeStyleChangedListener(this); 397 setVisible(false); 398 } 400 private javax.swing.JButton jButtonDefault; 402 private javax.swing.JButton jButtonDelete; 403 private javax.swing.JButton jButtonModify; 404 private javax.swing.JButton jButtonNew; 405 private javax.swing.JPanel jPanelButtons; 406 private javax.swing.JPanel jPanelParameters; 407 private javax.swing.JScrollPane jScrollPane1; 408 private javax.swing.JTable jTableParameters; 409 411 public void applyI18n(){ 412 jButtonDefault.setText(I18n.getString("stylesDialog.buttonDefault","Set as default")); 414 jButtonDelete.setText(I18n.getString("stylesDialog.buttonDelete","Delete")); 415 jButtonModify.setText(I18n.getString("stylesDialog.buttonModify","Modify")); 416 jButtonNew.setText(I18n.getString("stylesDialog.buttonNew","New")); 417 419 jTableParameters.getColumnModel().getColumn(0).setHeaderValue( I18n.getString("stylesDialog.tablecolumn.styleName","Style name") ); 420 jTableParameters.getColumnModel().getColumn(1).setHeaderValue( I18n.getString("stylesDialog.tablecolumn.default","Default") ); 421 422 } 423 } 424 | Popular Tags |