1 32 33 package it.businesslogic.ireport.gui; 34 35 import javax.swing.table.*; 36 import javax.swing.*; 37 import javax.swing.event.*; 38 import it.businesslogic.ireport.*; 39 40 import java.util.*; 41 42 import org.apache.xerces.parsers.DOMParser; 43 import org.w3c.dom.*; 44 import org.xml.sax.SAXException ; 45 import it.businesslogic.ireport.util.I18n; 46 47 51 public class FontsDialog extends javax.swing.JDialog 52 { 53 54 55 public FontsDialog(java.awt.Frame parent, boolean modal) 56 { 57 super(parent, modal); 58 initComponents(); 59 applyI18n(); 60 this.setSize(490, 250); 61 62 DefaultListSelectionModel dlsm = (DefaultListSelectionModel)this.jTableParameters.getSelectionModel(); 63 dlsm.addListSelectionListener(new javax.swing.event.ListSelectionListener () 64 { 65 public void valueChanged(ListSelectionEvent e) 66 { 67 jTableParametersListSelectionValueChanged(e); 68 } 69 }); 70 71 72 javax.swing.KeyStroke escape = javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0, false); 73 javax.swing.Action escapeAction = new javax.swing.AbstractAction () { 74 public void actionPerformed(java.awt.event.ActionEvent e) { 75 setVisible(false); 76 } 77 }; 78 79 getRootPane().getInputMap(javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "ESCAPE"); 80 getRootPane().getActionMap().put("ESCAPE", escapeAction); 81 82 83 it.businesslogic.ireport.util.Misc.centerFrame(this); 85 } 86 87 88 public void jTableParametersListSelectionValueChanged(javax.swing.event.ListSelectionEvent e) 89 { 90 if (this.jTableParameters.getSelectedRowCount() > 0) 91 { 92 this.jButtonModifyParameter.setEnabled(true); 93 this.jButtonDeleteParameter.setEnabled(true); 94 } 95 else 96 { 97 this.jButtonModifyParameter.setEnabled(false); 98 this.jButtonDeleteParameter.setEnabled(false); 99 } 100 } 101 102 103 108 private void initComponents() { 110 java.awt.GridBagConstraints gridBagConstraints; 111 112 jPanelParameters = new javax.swing.JPanel (); 113 jScrollPane1 = new javax.swing.JScrollPane (); 114 jTableParameters = new javax.swing.JTable (); 115 jPanelButtons = new javax.swing.JPanel (); 116 jButtonNewParameter = new javax.swing.JButton (); 117 jButtonModifyParameter = new javax.swing.JButton (); 118 jButtonDeleteParameter = new javax.swing.JButton (); 119 120 setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 121 setTitle("Report fonts"); 122 addWindowListener(new java.awt.event.WindowAdapter () { 123 public void windowClosing(java.awt.event.WindowEvent evt) { 124 closeDialog(evt); 125 } 126 }); 127 128 jPanelParameters.setLayout(new java.awt.BorderLayout (2, 2)); 129 130 jScrollPane1.setBackground(new java.awt.Color (255, 255, 255)); 131 jTableParameters.setModel(new javax.swing.table.DefaultTableModel ( 132 new Object [][] { 133 134 }, 135 new String [] { 136 "Report font name", "Font", "Default" 137 } 138 ) { 139 boolean[] canEdit = new boolean [] { 140 false, false, false 141 }; 142 143 public boolean isCellEditable(int rowIndex, int columnIndex) { 144 return canEdit [columnIndex]; 145 } 146 }); 147 jScrollPane1.setViewportView(jTableParameters); 148 149 jPanelParameters.add(jScrollPane1, java.awt.BorderLayout.CENTER); 150 151 jPanelButtons.setLayout(new java.awt.GridBagLayout ()); 152 153 jPanelButtons.setPreferredSize(new java.awt.Dimension (100, 10)); 154 jPanelButtons.setMinimumSize(new java.awt.Dimension (100, 10)); 155 jButtonNewParameter.setText("New"); 156 jButtonNewParameter.addActionListener(new java.awt.event.ActionListener () { 157 public void actionPerformed(java.awt.event.ActionEvent evt) { 158 jButtonNewParameterActionPerformed(evt); 159 } 160 }); 161 162 gridBagConstraints = new java.awt.GridBagConstraints (); 163 gridBagConstraints.gridx = 0; 164 gridBagConstraints.gridy = 0; 165 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 166 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 167 gridBagConstraints.insets = new java.awt.Insets (3, 3, 5, 3); 168 jPanelButtons.add(jButtonNewParameter, gridBagConstraints); 169 170 jButtonModifyParameter.setText("Modify"); 171 jButtonModifyParameter.setEnabled(false); 172 jButtonModifyParameter.addActionListener(new java.awt.event.ActionListener () { 173 public void actionPerformed(java.awt.event.ActionEvent evt) { 174 jButtonModifyParameterActionPerformed(evt); 175 } 176 }); 177 178 gridBagConstraints = new java.awt.GridBagConstraints (); 179 gridBagConstraints.gridx = 0; 180 gridBagConstraints.gridy = 1; 181 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 182 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 183 gridBagConstraints.insets = new java.awt.Insets (0, 3, 5, 3); 184 jPanelButtons.add(jButtonModifyParameter, gridBagConstraints); 185 186 jButtonDeleteParameter.setText("Delete"); 187 jButtonDeleteParameter.setEnabled(false); 188 jButtonDeleteParameter.addActionListener(new java.awt.event.ActionListener () { 189 public void actionPerformed(java.awt.event.ActionEvent evt) { 190 jButtonDeleteParameterActionPerformed(evt); 191 } 192 }); 193 194 gridBagConstraints = new java.awt.GridBagConstraints (); 195 gridBagConstraints.gridx = 0; 196 gridBagConstraints.gridy = 2; 197 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 198 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 199 gridBagConstraints.weightx = 1.0; 200 gridBagConstraints.weighty = 1.0; 201 gridBagConstraints.insets = new java.awt.Insets (0, 3, 5, 3); 202 jPanelButtons.add(jButtonDeleteParameter, gridBagConstraints); 203 204 jPanelParameters.add(jPanelButtons, java.awt.BorderLayout.EAST); 205 206 getContentPane().add(jPanelParameters, java.awt.BorderLayout.CENTER); 207 208 pack(); 209 } 211 private void jButtonDeleteParameterActionPerformed(java.awt.event.ActionEvent evt) { 213 jTableParameters.getSelectedRows(); 214 215 while (this.jTableParameters.getSelectedRow() >= 0) 216 { 217 int row = this.jTableParameters.getSelectedRow(); 218 IReportFont font = (IReportFont)jTableParameters.getValueAt(row, 0); 219 Enumeration e = this.getJReportFrame().getReport().getElements().elements(); 221 while (e.hasMoreElements()) 222 { 223 ReportElement re = (ReportElement)e.nextElement(); 224 if (re instanceof TextReportElement && 225 ((TextReportElement)re).getReportFont().equals(font.getReportFont()) ) 226 ((TextReportElement)re).setReportFont(""); 227 } 228 this.getJReportFrame().getReport().getFonts().remove( font ); 229 this.jTableParameters.removeRowSelectionInterval(row, row); 230 } 231 updateReportFonts(); 232 ((MainFrame)this.getParent()).getElementPropertiesDialog().updateReportFonts(); 233 ((MainFrame)this.getParent()).getElementPropertiesDialog().updateSelection(); 234 } 236 private void jButtonModifyParameterActionPerformed(java.awt.event.ActionEvent evt) { 238 JRFontDialog fd = new JRFontDialog(null, true); 239 fd.updateFonts( this.getJReportFrame().getMainFrame().getTtfFonts()); 240 DefaultTableModel dtm = (DefaultTableModel)jTableParameters.getModel(); 241 IReportFont font = (IReportFont)dtm.getValueAt(jTableParameters.getSelectedRow(), 0); 242 243 fd.setIReportFont(font ); 244 fd.setVisible(true); 245 246 if (fd.getDialogResult() == JOptionPane.OK_OPTION) 247 { 248 IReportFont new_font = fd.getIReportFont(); 249 String oldName = font.getReportFont(); 251 font.setReportFont( new_font.getReportFont() ); 252 if ( !it.businesslogic.ireport.util.Misc.nvl(oldName,"").equals( it.businesslogic.ireport.util.Misc.nvl(new_font.getReportFont(),"") ) && new_font.getReportFont() != null ) 253 { 254 Enumeration e = this.getJReportFrame().getReport().getElements().elements(); 256 while (e.hasMoreElements()) 257 { 258 ReportElement re = (ReportElement)e.nextElement(); 259 if (re instanceof TextReportElement && 260 ((TextReportElement)re).getReportFont().equals(oldName)) 261 ((TextReportElement)re).setReportFont( new_font.getReportFont() ); 262 } 263 } 264 font.setFontName( new_font.getFontName()); 265 font.setFontSize( new_font.getFontSize()); 266 font.setBold( new_font.isBold()); 267 font.setItalic(new_font.isItalic()); 268 font.setPDFFontName( new_font.getPDFFontName()); 269 font.setPdfEmbedded( new_font.isPdfEmbedded()); 270 font.setPdfEncoding( new_font.getPdfEncoding() ); 271 font.setStrikeTrought( new_font.isStrikeTrought() ); 272 font.setUnderline( new_font.isUnderline() ); 273 font.setDefaultFont( new_font.isDefaultFont() ); 274 276 278 jTableParameters.setValueAt( font, jTableParameters.getSelectedRow(), 0); 279 jTableParameters.setValueAt( font.getDescription(), jTableParameters.getSelectedRow(), 1); 280 jTableParameters.setValueAt( font.isDefaultFont()+"", jTableParameters.getSelectedRow(), 2); 281 282 jTableParameters.updateUI(); 283 ((MainFrame)this.getParent()).getElementPropertiesDialog().updateReportFonts(); 284 ((MainFrame)this.getParent()).getElementPropertiesDialog().updateSelection(); 285 this.getJReportFrame().setIsDocDirty(true); 286 this.getJReportFrame().repaint(); 287 } 288 } 290 private void jButtonNewParameterActionPerformed(java.awt.event.ActionEvent evt) { JRFontDialog fd = new JRFontDialog(null, true); 292 fd.updateFonts( this.getJReportFrame().getMainFrame().getTtfFonts()); 293 fd.setVisible(true); 294 295 if (fd.getDialogResult() == JOptionPane.OK_OPTION) 296 { 297 IReportFont font = fd.getIReportFont(); 298 DefaultTableModel dtm = (DefaultTableModel)jTableParameters.getModel(); 299 revertDefaultFontProperties(); 300 dtm.addRow( new Object [] 301 {font, font.getDescription(),font.isDefaultFont()+"" }); 302 this.getJReportFrame().getReport().getFonts().addElement(font); 304 307 308 this.getJReportFrame().getMainFrame().getElementPropertiesDialog().updateReportFonts(); 309 } 310 } 312 313 private void revertDefaultFontProperties(){ 314 DefaultTableModel dtm = (DefaultTableModel)jTableParameters.getModel(); 315 for(int i=0;i<dtm.getRowCount();i++){ 316 IReportFont font = (IReportFont)dtm.getValueAt(i, 0); 317 font.setDefaultFont(false); 318 jTableParameters.setValueAt( font.isDefaultFont()+"", i, 2); 319 } 320 jTableParameters.updateUI(); 321 ((MainFrame)this.getParent()).getElementPropertiesDialog().updateReportFonts(); 322 ((MainFrame)this.getParent()).getElementPropertiesDialog().updateSelection(); 323 } 324 325 326 private void closeDialog(java.awt.event.WindowEvent evt) { setVisible(false); 328 } 330 333 public static void main(String args[]) 334 { 335 new ValuesDialog(new javax.swing.JFrame (), true).setVisible(true); 336 } 337 338 339 340 341 private javax.swing.JButton jButtonDeleteParameter; 343 private javax.swing.JButton jButtonModifyParameter; 344 private javax.swing.JButton jButtonNewParameter; 345 private javax.swing.JPanel jPanelButtons; 346 private javax.swing.JPanel jPanelParameters; 347 private javax.swing.JScrollPane jScrollPane1; 348 private javax.swing.JTable jTableParameters; 349 351 private JReportFrame jReportFrame; 352 353 357 public it.businesslogic.ireport.gui.JReportFrame getJReportFrame() 358 { 359 return jReportFrame; 360 } 361 362 366 public void setJReportFrame(it.businesslogic.ireport.gui.JReportFrame jReportFrame) 367 { 368 this.jReportFrame = jReportFrame; 369 370 371 372 if (jReportFrame == null) 373 { 374 setVisible(false); 375 return; 376 } 377 this.setTitle(jReportFrame.getReport().getName()+" fonts..."); 378 if (isVisible()) 379 { 380 updateReportFonts(); 381 } 382 } 383 384 public void updateReportFonts() 385 { 386 DefaultTableModel dtm = (DefaultTableModel)jTableParameters.getModel(); 387 dtm.setRowCount(0); 388 389 if (jReportFrame != null) 390 { 391 Enumeration e =jReportFrame.getReport().getFonts().elements(); 392 while (e.hasMoreElements()) 393 { 394 IReportFont font = (IReportFont)e.nextElement(); 395 dtm.addRow( new Object [] 396 {font, font.getDescription(), font.isDefaultFont()+"" }); 397 } 398 } 399 } 400 401 public void setVisible(boolean visible) 402 { 403 if (visible == isVisible()) return; 404 super.setVisible(visible); 405 if (visible == true) 406 { 407 this.setJReportFrame(jReportFrame); 408 } 409 } 410 public void applyI18n(){ 411 jButtonDeleteParameter.setText(I18n.getString("fontsDialog.buttonDeleteParameter","Delete")); 413 jButtonModifyParameter.setText(I18n.getString("fontsDialog.buttonModifyParameter","Modify")); 414 jButtonNewParameter.setText(I18n.getString("fontsDialog.buttonNewParameter","New")); 415 417 jTableParameters.getColumnModel().getColumn(0).setHeaderValue( I18n.getString("fontsDialog.tablecolumn.reportFontName","Report font name") ); 418 jTableParameters.getColumnModel().getColumn(1).setHeaderValue( I18n.getString("fontsDialog.tablecolumn.font","Font") ); 419 jTableParameters.getColumnModel().getColumn(2).setHeaderValue( I18n.getString("fontsDialog.tablecolumn.default","Default") ); 420 421 } 422 } 423 | Popular Tags |