KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > it > businesslogic > ireport > gui > FontsDialog


1 /*
2  * Copyright (C) 2005 - 2006 JasperSoft Corporation. All rights reserved.
3  * http://www.jaspersoft.com.
4  *
5  * Unless you have purchased a commercial license agreement from JasperSoft,
6  * the following license terms apply:
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as published by
10  * the Free Software Foundation.
11  *
12  * This program is distributed WITHOUT ANY WARRANTY; and without the
13  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14  * See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
18  * or write to:
19  *
20  * Free Software Foundation, Inc.,
21  * 59 Temple Place - Suite 330,
22  * Boston, MA USA 02111-1307
23  *
24  *
25  *
26  *
27  * FontsDialog.java
28  *
29  * Created on 7 maggio 2003, 23.43
30  *
31  */

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 JavaDoc;
45 import it.businesslogic.ireport.util.I18n;
46
47 /**
48  *
49  * @author Administrator
50  */

51 public class FontsDialog extends javax.swing.JDialog JavaDoc
52 {
53    
54    /** Creates new form ValuesDialog */
55    public FontsDialog(java.awt.Frame JavaDoc 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 JavaDoc()
64       {
65          public void valueChanged(ListSelectionEvent e)
66          {
67             jTableParametersListSelectionValueChanged(e);
68          }
69       });
70       
71       
72         javax.swing.KeyStroke JavaDoc escape = javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0, false);
73         javax.swing.Action JavaDoc escapeAction = new javax.swing.AbstractAction JavaDoc() {
74             public void actionPerformed(java.awt.event.ActionEvent JavaDoc 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       // Open in center...
84
it.businesslogic.ireport.util.Misc.centerFrame(this);
85    }
86    
87    
88    public void jTableParametersListSelectionValueChanged(javax.swing.event.ListSelectionEvent JavaDoc 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    /** This method is called from within the constructor to
104     * initialize the form.
105     * WARNING: Do NOT modify this code. The content of this method is
106     * always regenerated by the Form Editor.
107     */

108     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
109
private void initComponents() {
110         java.awt.GridBagConstraints JavaDoc gridBagConstraints;
111
112         jPanelParameters = new javax.swing.JPanel JavaDoc();
113         jScrollPane1 = new javax.swing.JScrollPane JavaDoc();
114         jTableParameters = new javax.swing.JTable JavaDoc();
115         jPanelButtons = new javax.swing.JPanel JavaDoc();
116         jButtonNewParameter = new javax.swing.JButton JavaDoc();
117         jButtonModifyParameter = new javax.swing.JButton JavaDoc();
118         jButtonDeleteParameter = new javax.swing.JButton JavaDoc();
119
120         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
121         setTitle("Report fonts");
122         addWindowListener(new java.awt.event.WindowAdapter JavaDoc() {
123             public void windowClosing(java.awt.event.WindowEvent JavaDoc evt) {
124                 closeDialog(evt);
125             }
126         });
127
128         jPanelParameters.setLayout(new java.awt.BorderLayout JavaDoc(2, 2));
129
130         jScrollPane1.setBackground(new java.awt.Color JavaDoc(255, 255, 255));
131         jTableParameters.setModel(new javax.swing.table.DefaultTableModel JavaDoc(
132             new Object JavaDoc [][] {
133
134             },
135             new String JavaDoc [] {
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 JavaDoc());
152
153         jPanelButtons.setPreferredSize(new java.awt.Dimension JavaDoc(100, 10));
154         jPanelButtons.setMinimumSize(new java.awt.Dimension JavaDoc(100, 10));
155         jButtonNewParameter.setText("New");
156         jButtonNewParameter.addActionListener(new java.awt.event.ActionListener JavaDoc() {
157             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
158                 jButtonNewParameterActionPerformed(evt);
159             }
160         });
161
162         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
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 JavaDoc(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 JavaDoc() {
173             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
174                 jButtonModifyParameterActionPerformed(evt);
175             }
176         });
177
178         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
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 JavaDoc(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 JavaDoc() {
189             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
190                 jButtonDeleteParameterActionPerformed(evt);
191             }
192         });
193
194         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
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 JavaDoc(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     }// </editor-fold>//GEN-END:initComponents
210

211     private void jButtonDeleteParameterActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonDeleteParameterActionPerformed
212

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           // Adjust all elements that refer to this font...
220
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     }//GEN-LAST:event_jButtonDeleteParameterActionPerformed
235

236     private void jButtonModifyParameterActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonModifyParameterActionPerformed
237

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           // If change the report font name, we must change all references...
250
String JavaDoc 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              // This modification can occur only in textElements....
255
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           //font.setTTFFont( new_font.getTTFFont() );
275

276           // Update the table row....
277

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     }//GEN-LAST:event_jButtonModifyParameterActionPerformed
289

290     private void jButtonNewParameterActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonNewParameterActionPerformed
291
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 JavaDoc[]
301           {font, font.getDescription(),font.isDefaultFont()+"" });
302           //
303
this.getJReportFrame().getReport().getFonts().addElement(font);
304           /**
305            * update text elements and properties frame....
306            */

307           
308           this.getJReportFrame().getMainFrame().getElementPropertiesDialog().updateReportFonts();
309        }
310     }//GEN-LAST:event_jButtonNewParameterActionPerformed
311

312     /** Set defaultFont Property to false for all defined fonts in Report */
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     /** Closes the dialog */
326     private void closeDialog(java.awt.event.WindowEvent JavaDoc evt) {//GEN-FIRST:event_closeDialog
327
setVisible(false);
328     }//GEN-LAST:event_closeDialog
329

330     /**
331      * @param args the command line arguments
332      */

333     public static void main(String JavaDoc args[])
334     {
335        new ValuesDialog(new javax.swing.JFrame JavaDoc(), true).setVisible(true);
336     }
337     
338     
339     
340     
341     // Variables declaration - do not modify//GEN-BEGIN:variables
342
private javax.swing.JButton JavaDoc jButtonDeleteParameter;
343     private javax.swing.JButton JavaDoc jButtonModifyParameter;
344     private javax.swing.JButton JavaDoc jButtonNewParameter;
345     private javax.swing.JPanel JavaDoc jPanelButtons;
346     private javax.swing.JPanel JavaDoc jPanelParameters;
347     private javax.swing.JScrollPane JavaDoc jScrollPane1;
348     private javax.swing.JTable JavaDoc jTableParameters;
349     // End of variables declaration//GEN-END:variables
350

351     private JReportFrame jReportFrame;
352     
353     /** Getter for property jReportFrame.
354      * @return Value of property jReportFrame.
355      *
356      */

357     public it.businesslogic.ireport.gui.JReportFrame getJReportFrame()
358     {
359        return jReportFrame;
360     }
361     
362     /** Setter for property jReportFrame.
363      * @param jReportFrame New value of property jReportFrame.
364      *
365      */

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 JavaDoc[]
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         // Start autogenerated code ----------------------
412
jButtonDeleteParameter.setText(I18n.getString("fontsDialog.buttonDeleteParameter","Delete"));
413         jButtonModifyParameter.setText(I18n.getString("fontsDialog.buttonModifyParameter","Modify"));
414         jButtonNewParameter.setText(I18n.getString("fontsDialog.buttonNewParameter","New"));
415         // End autogenerated code ----------------------
416

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