KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > jasperreports > view > JRViewer


1 /*
2  * ============================================================================
3  * GNU Lesser General Public License
4  * ============================================================================
5  *
6  * JasperReports - Free Java report-generating library.
7  * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public
11  * License as published by the Free Software Foundation; either
12  * version 2.1 of the License, or (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
22  *
23  * JasperSoft Corporation
24  * 303 Second Street, Suite 450 North
25  * San Francisco, CA 94107
26  * http://www.jaspersoft.com
27  */

28
29 /*
30  * Contributors:
31  * Ryan Johnson - delscovich@users.sourceforge.net
32  * Carlton Moore - cmoore79@users.sourceforge.net
33  * Petr Michalek - pmichalek@users.sourceforge.net
34  */

35 package net.sf.jasperreports.view;
36
37 import java.awt.Component JavaDoc;
38 import java.awt.Container JavaDoc;
39 import java.awt.Cursor JavaDoc;
40 import java.awt.Dimension JavaDoc;
41 import java.awt.Graphics JavaDoc;
42 import java.awt.Graphics2D JavaDoc;
43 import java.awt.Image JavaDoc;
44 import java.awt.Point JavaDoc;
45 import java.awt.Rectangle JavaDoc;
46 import java.awt.Toolkit JavaDoc;
47 import java.awt.event.MouseEvent JavaDoc;
48 import java.awt.event.MouseListener JavaDoc;
49 import java.awt.event.MouseMotionListener JavaDoc;
50 import java.io.File JavaDoc;
51 import java.io.InputStream JavaDoc;
52 import java.lang.reflect.Method JavaDoc;
53 import java.text.DecimalFormat JavaDoc;
54 import java.text.MessageFormat JavaDoc;
55 import java.text.ParseException JavaDoc;
56 import java.util.ArrayList JavaDoc;
57 import java.util.Arrays JavaDoc;
58 import java.util.Collection JavaDoc;
59 import java.util.HashMap JavaDoc;
60 import java.util.Iterator JavaDoc;
61 import java.util.List JavaDoc;
62 import java.util.Locale JavaDoc;
63 import java.util.Map JavaDoc;
64 import java.util.ResourceBundle JavaDoc;
65
66 import javax.swing.DefaultComboBoxModel JavaDoc;
67 import javax.swing.ImageIcon JavaDoc;
68 import javax.swing.JFileChooser JavaDoc;
69 import javax.swing.JLabel JavaDoc;
70 import javax.swing.JOptionPane JavaDoc;
71 import javax.swing.JPanel JavaDoc;
72 import javax.swing.JViewport JavaDoc;
73 import javax.swing.filechooser.FileFilter JavaDoc;
74
75 import net.sf.jasperreports.engine.JRException;
76 import net.sf.jasperreports.engine.JRExporterParameter;
77 import net.sf.jasperreports.engine.JRHyperlink;
78 import net.sf.jasperreports.engine.JRImageMapRenderer;
79 import net.sf.jasperreports.engine.JRPrintAnchorIndex;
80 import net.sf.jasperreports.engine.JRPrintElement;
81 import net.sf.jasperreports.engine.JRPrintHyperlink;
82 import net.sf.jasperreports.engine.JRPrintImage;
83 import net.sf.jasperreports.engine.JRPrintImageAreaHyperlink;
84 import net.sf.jasperreports.engine.JRPrintPage;
85 import net.sf.jasperreports.engine.JRRenderable;
86 import net.sf.jasperreports.engine.JRRuntimeException;
87 import net.sf.jasperreports.engine.JasperPrint;
88 import net.sf.jasperreports.engine.JasperPrintManager;
89 import net.sf.jasperreports.engine.export.JRGraphics2DExporter;
90 import net.sf.jasperreports.engine.export.JRGraphics2DExporterParameter;
91 import net.sf.jasperreports.engine.print.JRPrinterAWT;
92 import net.sf.jasperreports.engine.util.JRClassLoader;
93 import net.sf.jasperreports.engine.util.JRLoader;
94 import net.sf.jasperreports.engine.util.JRProperties;
95 import net.sf.jasperreports.engine.xml.JRPrintXmlLoader;
96 import net.sf.jasperreports.view.save.JRPrintSaveContributor;
97
98
99 /**
100  * @author Teodor Danciu (teodord@users.sourceforge.net)
101  * @version $Id: JRViewer.java 1459 2006-11-06 13:54:34 +0200 (Mon, 06 Nov 2006) shertage $
102  */

103 public class JRViewer extends javax.swing.JPanel JavaDoc implements JRHyperlinkListener
104 {
105
106     /**
107      * Maximum size (in pixels) of a buffered image that would be used by {@link JRViewer JRViewer} to render a report page.
108      * <p>
109      * If rendering a report page would require an image larger than this threshold
110      * (i.e. image width x image height > maximum size), the report page will be rendered directly on the viewer component.
111      * </p>
112      * <p>
113      * If this property is zero or negative, buffered images will never be user to render a report page.
114      * By default, this property is set to 0.
115      * </p>
116      */

117     public static final String JavaDoc VIEWER_RENDER_BUFFER_MAX_SIZE = JRProperties.PROPERTY_PREFIX + "viewer.render.buffer.max.size";
118     
119     /**
120      *
121      */

122     private static final int TYPE_FILE_NAME = 1;
123     private static final int TYPE_INPUT_STREAM = 2;
124     private static final int TYPE_JASPER_PRINT = 3;
125     
126     /**
127      * The DPI of the generated report.
128      */

129     public static final int REPORT_RESOLUTION = 72;
130
131     protected float MIN_ZOOM = 0.5f;
132     protected float MAX_ZOOM = 10f;
133     protected int zooms[] = {50, 75, 100, 125, 150, 175, 200, 250, 400, 800};
134     protected int defaultZoomIndex = 2;
135
136     private int type = TYPE_FILE_NAME;
137     private boolean isXML = false;
138     private String JavaDoc reportFileName = null;
139     JasperPrint jasperPrint = null;
140     private int pageIndex = 0;
141     private float zoom = 0f;
142
143     private JRGraphics2DExporter exporter = null;
144
145     /**
146      * the screen resolution.
147      */

148     private int screenResolution = REPORT_RESOLUTION;
149
150     /**
151      * the zoom ration adjusted to the screen resolution.
152      */

153     protected float realZoom = 0f;
154
155     private DecimalFormat JavaDoc zoomDecimalFormat = new DecimalFormat JavaDoc("#.##");
156     private ResourceBundle JavaDoc resourceBundle = null;
157
158     private int downX = 0;
159     private int downY = 0;
160
161     private java.util.List JavaDoc hyperlinkListeners = new ArrayList JavaDoc();
162     private Map JavaDoc linksMap = new HashMap JavaDoc();
163     private MouseListener JavaDoc mouseListener =
164         new java.awt.event.MouseAdapter JavaDoc()
165         {
166             public void mouseClicked(java.awt.event.MouseEvent JavaDoc evt)
167             {
168                 hyperlinkClicked(evt);
169             }
170         };
171
172     private java.util.List JavaDoc saveContributors = new ArrayList JavaDoc();
173     
174
175     /** Creates new form JRViewer */
176     public JRViewer(String JavaDoc fileName, boolean isXML) throws JRException
177     {
178         this(fileName, isXML, null);
179     }
180
181
182     /** Creates new form JRViewer */
183     public JRViewer(InputStream JavaDoc is, boolean isXML) throws JRException
184     {
185         this(is, isXML, null);
186     }
187
188
189     /** Creates new form JRViewer */
190     public JRViewer(JasperPrint jrPrint)
191     {
192         this(jrPrint, null);
193     }
194
195     
196     /** Creates new form JRViewer */
197     public JRViewer(String JavaDoc fileName, boolean isXML, Locale JavaDoc locale) throws JRException
198     {
199         this(fileName, isXML, locale, null);
200     }
201
202
203     /** Creates new form JRViewer */
204     public JRViewer(InputStream JavaDoc is, boolean isXML, Locale JavaDoc locale) throws JRException
205     {
206         this(is, isXML, locale, null);
207     }
208
209
210     /** Creates new form JRViewer */
211     public JRViewer(JasperPrint jrPrint, Locale JavaDoc locale)
212     {
213         this(jrPrint, locale, null);
214     }
215
216     
217     /** Creates new form JRViewer */
218     public JRViewer(String JavaDoc fileName, boolean isXML, Locale JavaDoc locale, ResourceBundle JavaDoc resBundle) throws JRException
219     {
220         initResources(locale, resBundle);
221
222         setScreenDetails();
223
224         setZooms();
225
226         initComponents();
227
228         loadReport(fileName, isXML);
229
230         cmbZoom.setSelectedIndex(defaultZoomIndex);
231
232         initSaveContributors();
233
234         addHyperlinkListener(this);
235     }
236
237
238     /** Creates new form JRViewer */
239     public JRViewer(InputStream JavaDoc is, boolean isXML, Locale JavaDoc locale, ResourceBundle JavaDoc resBundle) throws JRException
240     {
241         initResources(locale, resBundle);
242
243         setScreenDetails();
244
245         setZooms();
246
247         initComponents();
248
249         loadReport(is, isXML);
250
251         cmbZoom.setSelectedIndex(defaultZoomIndex);
252
253         initSaveContributors();
254
255         addHyperlinkListener(this);
256     }
257
258
259     /** Creates new form JRViewer */
260     public JRViewer(JasperPrint jrPrint, Locale JavaDoc locale, ResourceBundle JavaDoc resBundle)
261     {
262         initResources(locale, resBundle);
263
264         setScreenDetails();
265
266         setZooms();
267
268         initComponents();
269
270         loadReport(jrPrint);
271
272         cmbZoom.setSelectedIndex(defaultZoomIndex);
273
274         initSaveContributors();
275
276         addHyperlinkListener(this);
277     }
278
279     
280     private void setScreenDetails()
281     {
282         screenResolution = Toolkit.getDefaultToolkit().getScreenResolution();
283     }
284
285     
286     /**
287      *
288      */

289     public void clear()
290     {
291         emptyContainer(this);
292         jasperPrint = null;
293     }
294
295
296     /**
297      *
298      */

299     protected void setZooms()
300     {
301     }
302
303
304     /**
305      *
306      */

307     public void addSaveContributor(JRSaveContributor contributor)
308     {
309         saveContributors.add(contributor);
310     }
311
312
313     /**
314      *
315      */

316     public void removeSaveContributor(JRSaveContributor contributor)
317     {
318         saveContributors.remove(contributor);
319     }
320
321
322     /**
323      *
324      */

325     public JRSaveContributor[] getSaveContributors()
326     {
327         return (JRSaveContributor[])saveContributors.toArray(new JRSaveContributor[saveContributors.size()]);
328     }
329
330
331     /**
332      *
333      */

334     public void addHyperlinkListener(JRHyperlinkListener listener)
335     {
336         hyperlinkListeners.add(listener);
337     }
338
339
340     /**
341      *
342      */

343     public void removeHyperlinkListener(JRHyperlinkListener listener)
344     {
345         hyperlinkListeners.remove(listener);
346     }
347
348
349     /**
350      *
351      */

352     public JRHyperlinkListener[] getHyperlinkListeners()
353     {
354         return (JRHyperlinkListener[])hyperlinkListeners.toArray(new JRHyperlinkListener[hyperlinkListeners.size()]);
355     }
356
357
358     /**
359      *
360      */

361     protected void initResources(Locale JavaDoc locale, ResourceBundle JavaDoc resBundle)
362     {
363         if (locale != null)
364             setLocale(locale);
365         else
366             setLocale(Locale.getDefault());
367         
368         if (resBundle == null)
369         {
370             this.resourceBundle = ResourceBundle.getBundle("net/sf/jasperreports/view/viewer", getLocale());
371         }
372         else
373         {
374             this.resourceBundle = resBundle;
375         }
376     }
377
378
379     /**
380      *
381      */

382     protected String JavaDoc getBundleString(String JavaDoc key)
383     {
384         return resourceBundle.getString(key);
385     }
386
387     
388     /**
389      *
390      */

391     protected void initSaveContributors()
392     {
393         final String JavaDoc[] DEFAULT_CONTRIBUTORS =
394             {
395                 "net.sf.jasperreports.view.save.JRPrintSaveContributor",
396                 "net.sf.jasperreports.view.save.JRPdfSaveContributor",
397                 "net.sf.jasperreports.view.save.JRRtfSaveContributor",
398                 "net.sf.jasperreports.view.save.JRHtmlSaveContributor",
399                 "net.sf.jasperreports.view.save.JRSingleSheetXlsSaveContributor",
400                 "net.sf.jasperreports.view.save.JRMultipleSheetsXlsSaveContributor",
401                 "net.sf.jasperreports.view.save.JRCsvSaveContributor",
402                 "net.sf.jasperreports.view.save.JRXmlSaveContributor",
403                 "net.sf.jasperreports.view.save.JREmbeddedImagesXmlSaveContributor"
404             };
405         
406         for(int i = 0; i < DEFAULT_CONTRIBUTORS.length; i++)
407         {
408             try
409             {
410                 Class JavaDoc saveContribClass = JRClassLoader.loadClassForName(DEFAULT_CONTRIBUTORS[i]);
411                 Method JavaDoc method = saveContribClass.getMethod("getInstance", (Class JavaDoc[])null);
412                 JRSaveContributor saveContrib = (JRSaveContributor)method.invoke(null, (Object JavaDoc[])null);
413                 saveContributors.add(saveContrib);
414             }
415             catch (Exception JavaDoc e)
416             {
417             }
418         }
419     }
420
421     
422     /**
423      *
424      */

425     public void gotoHyperlink(JRPrintHyperlink hyperlink)
426     {
427         switch(hyperlink.getHyperlinkType())
428         {
429             case JRHyperlink.HYPERLINK_TYPE_REFERENCE :
430             {
431                 if (isOnlyHyperlinkListener())
432                 {
433                     System.out.println("Hyperlink reference : " + hyperlink.getHyperlinkReference());
434                     System.out.println("Implement your own JRHyperlinkListener to manage this type of event.");
435                 }
436                 break;
437             }
438             case JRHyperlink.HYPERLINK_TYPE_LOCAL_ANCHOR :
439             {
440                 if (hyperlink.getHyperlinkAnchor() != null)
441                 {
442                     Map JavaDoc anchorIndexes = jasperPrint.getAnchorIndexes();
443                     JRPrintAnchorIndex anchorIndex = (JRPrintAnchorIndex)anchorIndexes.get(hyperlink.getHyperlinkAnchor());
444                     if (anchorIndex.getPageIndex() != pageIndex)
445                     {
446                         setPageIndex(anchorIndex.getPageIndex());
447                         refreshPage();
448                     }
449                     Container JavaDoc container = pnlInScroll.getParent();
450                     if (container instanceof JViewport JavaDoc)
451                     {
452                         JViewport JavaDoc viewport = (JViewport JavaDoc) container;
453
454                         int newX = (int)(anchorIndex.getElementAbsoluteX() * realZoom);
455                         int newY = (int)(anchorIndex.getElementAbsoluteY() * realZoom);
456
457                         int maxX = pnlInScroll.getWidth() - viewport.getWidth();
458                         int maxY = pnlInScroll.getHeight() - viewport.getHeight();
459
460                         if (newX < 0)
461                         {
462                             newX = 0;
463                         }
464                         if (newX > maxX)
465                         {
466                             newX = maxX;
467                         }
468                         if (newY < 0)
469                         {
470                             newY = 0;
471                         }
472                         if (newY > maxY)
473                         {
474                             newY = maxY;
475                         }
476             
477                         viewport.setViewPosition(new Point JavaDoc(newX, newY));
478                     }
479                 }
480                 
481                 break;
482             }
483             case JRHyperlink.HYPERLINK_TYPE_LOCAL_PAGE :
484             {
485                 int page = pageIndex + 1;
486                 if (hyperlink.getHyperlinkPage() != null)
487                 {
488                     page = hyperlink.getHyperlinkPage().intValue();
489                 }
490                 
491                 if (page >= 1 && page <= jasperPrint.getPages().size() && page != pageIndex + 1)
492                 {
493                     setPageIndex(page - 1);
494                     refreshPage();
495                     Container JavaDoc container = pnlInScroll.getParent();
496                     if (container instanceof JViewport JavaDoc)
497                     {
498                         JViewport JavaDoc viewport = (JViewport JavaDoc) container;
499                         viewport.setViewPosition(new Point JavaDoc(0, 0));
500                     }
501                 }
502                 
503                 break;
504             }
505             case JRHyperlink.HYPERLINK_TYPE_REMOTE_ANCHOR :
506             {
507                 if (isOnlyHyperlinkListener())
508                 {
509                     System.out.println("Hyperlink reference : " + hyperlink.getHyperlinkReference());
510                     System.out.println("Hyperlink anchor : " + hyperlink.getHyperlinkAnchor());
511                     System.out.println("Implement your own JRHyperlinkListener to manage this type of event.");
512                 }
513                 break;
514             }
515             case JRHyperlink.HYPERLINK_TYPE_REMOTE_PAGE :
516             {
517                 if (isOnlyHyperlinkListener())
518                 {
519                     System.out.println("Hyperlink reference : " + hyperlink.getHyperlinkReference());
520                     System.out.println("Hyperlink page : " + hyperlink.getHyperlinkPage());
521                     System.out.println("Implement your own JRHyperlinkListener to manage this type of event.");
522                 }
523                 break;
524             }
525             case JRHyperlink.HYPERLINK_TYPE_CUSTOM:
526             {
527                 if (isOnlyHyperlinkListener())
528                 {
529                     System.out.println("Hyperlink of type " + hyperlink.getLinkType());
530                     System.out.println("Implement your own JRHyperlinkListener to manage this type of event.");
531                 }
532                 break;
533             }
534             case JRHyperlink.HYPERLINK_TYPE_NONE :
535             default :
536             {
537                 break;
538             }
539         }
540     }
541
542
543     protected boolean isOnlyHyperlinkListener()
544     {
545         int listenerCount;
546         if (hyperlinkListeners == null)
547         {
548             listenerCount = 0;
549         }
550         else
551         {
552             listenerCount = hyperlinkListeners.size();
553             if (hyperlinkListeners.contains(this))
554             {
555                 --listenerCount;
556             }
557         }
558         return listenerCount == 0;
559     }
560
561     
562     /** This method is called from within the constructor to
563      * initialize the form.
564      * WARNING: Do NOT modify this code. The content of this method is
565      * always regenerated by the Form Editor.
566      */

567     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
568
private void initComponents() {
569         java.awt.GridBagConstraints JavaDoc gridBagConstraints;
570
571         tlbToolBar = new javax.swing.JPanel JavaDoc();
572         btnSave = new javax.swing.JButton JavaDoc();
573         btnPrint = new javax.swing.JButton JavaDoc();
574         btnReload = new javax.swing.JButton JavaDoc();
575         pnlSep01 = new javax.swing.JPanel JavaDoc();
576         btnFirst = new javax.swing.JButton JavaDoc();
577         btnPrevious = new javax.swing.JButton JavaDoc();
578         btnNext = new javax.swing.JButton JavaDoc();
579         btnLast = new javax.swing.JButton JavaDoc();
580         txtGoTo = new javax.swing.JTextField JavaDoc();
581         pnlSep02 = new javax.swing.JPanel JavaDoc();
582         btnActualSize = new javax.swing.JToggleButton JavaDoc();
583         btnFitPage = new javax.swing.JToggleButton JavaDoc();
584         btnFitWidth = new javax.swing.JToggleButton JavaDoc();
585         pnlSep03 = new javax.swing.JPanel JavaDoc();
586         btnZoomIn = new javax.swing.JButton JavaDoc();
587         btnZoomOut = new javax.swing.JButton JavaDoc();
588         cmbZoom = new javax.swing.JComboBox JavaDoc();
589         DefaultComboBoxModel JavaDoc model = new DefaultComboBoxModel JavaDoc();
590         for(int i = 0; i < zooms.length; i++)
591         {
592             model.addElement("" + zooms[i] + "%");
593         }
594         cmbZoom.setModel(model);
595
596         pnlMain = new javax.swing.JPanel JavaDoc();
597         scrollPane = new javax.swing.JScrollPane JavaDoc();
598         scrollPane.getHorizontalScrollBar().setUnitIncrement(5);
599         scrollPane.getVerticalScrollBar().setUnitIncrement(5);
600
601         pnlInScroll = new javax.swing.JPanel JavaDoc();
602         pnlPage = new javax.swing.JPanel JavaDoc();
603         jPanel4 = new javax.swing.JPanel JavaDoc();
604         pnlLinks = new javax.swing.JPanel JavaDoc();
605         jPanel5 = new javax.swing.JPanel JavaDoc();
606         jPanel6 = new javax.swing.JPanel JavaDoc();
607         jPanel7 = new javax.swing.JPanel JavaDoc();
608         jPanel8 = new javax.swing.JPanel JavaDoc();
609         jLabel1 = new javax.swing.JLabel JavaDoc();
610         jPanel9 = new javax.swing.JPanel JavaDoc();
611         lblPage = new PageRenderer(this);
612         pnlStatus = new javax.swing.JPanel JavaDoc();
613         lblStatus = new javax.swing.JLabel JavaDoc();
614
615         setLayout(new java.awt.BorderLayout JavaDoc());
616
617         setMinimumSize(new java.awt.Dimension JavaDoc(450, 150));
618         setPreferredSize(new java.awt.Dimension JavaDoc(450, 150));
619         tlbToolBar.setLayout(new java.awt.FlowLayout JavaDoc(java.awt.FlowLayout.LEFT, 0, 2));
620
621         btnSave.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/net/sf/jasperreports/view/images/save.GIF")));
622         btnSave.setToolTipText(getBundleString("save"));
623         btnSave.setMargin(new java.awt.Insets JavaDoc(2, 2, 2, 2));
624         btnSave.setMaximumSize(new java.awt.Dimension JavaDoc(23, 23));
625         btnSave.setMinimumSize(new java.awt.Dimension JavaDoc(23, 23));
626         btnSave.setPreferredSize(new java.awt.Dimension JavaDoc(23, 23));
627         btnSave.addActionListener(new java.awt.event.ActionListener JavaDoc() {
628             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
629                 btnSaveActionPerformed(evt);
630             }
631         });
632
633         tlbToolBar.add(btnSave);
634
635         btnPrint.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/net/sf/jasperreports/view/images/print.GIF")));
636         btnPrint.setToolTipText(getBundleString("print"));
637         btnPrint.setMargin(new java.awt.Insets JavaDoc(2, 2, 2, 2));
638         btnPrint.setMaximumSize(new java.awt.Dimension JavaDoc(23, 23));
639         btnPrint.setMinimumSize(new java.awt.Dimension JavaDoc(23, 23));
640         btnPrint.setPreferredSize(new java.awt.Dimension JavaDoc(23, 23));
641         btnPrint.addActionListener(new java.awt.event.ActionListener JavaDoc() {
642             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
643                 btnPrintActionPerformed(evt);
644             }
645         });
646
647         tlbToolBar.add(btnPrint);
648
649         btnReload.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/net/sf/jasperreports/view/images/reload.GIF")));
650         btnReload.setToolTipText(getBundleString("reload"));
651         btnReload.setMargin(new java.awt.Insets JavaDoc(2, 2, 2, 2));
652         btnReload.setMaximumSize(new java.awt.Dimension JavaDoc(23, 23));
653         btnReload.setMinimumSize(new java.awt.Dimension JavaDoc(23, 23));
654         btnReload.setPreferredSize(new java.awt.Dimension JavaDoc(23, 23));
655         btnReload.addActionListener(new java.awt.event.ActionListener JavaDoc() {
656             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
657                 btnReloadActionPerformed(evt);
658             }
659         });
660
661         tlbToolBar.add(btnReload);
662
663         pnlSep01.setMaximumSize(new java.awt.Dimension JavaDoc(10, 10));
664         tlbToolBar.add(pnlSep01);
665
666         btnFirst.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/net/sf/jasperreports/view/images/first.GIF")));
667         btnFirst.setToolTipText(getBundleString("first.page"));
668         btnFirst.setMargin(new java.awt.Insets JavaDoc(2, 2, 2, 2));
669         btnFirst.setMaximumSize(new java.awt.Dimension JavaDoc(23, 23));
670         btnFirst.setMinimumSize(new java.awt.Dimension JavaDoc(23, 23));
671         btnFirst.setPreferredSize(new java.awt.Dimension JavaDoc(23, 23));
672         btnFirst.addActionListener(new java.awt.event.ActionListener JavaDoc() {
673             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
674                 btnFirstActionPerformed(evt);
675             }
676         });
677
678         tlbToolBar.add(btnFirst);
679
680         btnPrevious.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/net/sf/jasperreports/view/images/previous.GIF")));
681         btnPrevious.setToolTipText(getBundleString("previous.page"));
682         btnPrevious.setMargin(new java.awt.Insets JavaDoc(2, 2, 2, 2));
683         btnPrevious.setMaximumSize(new java.awt.Dimension JavaDoc(23, 23));
684         btnPrevious.setMinimumSize(new java.awt.Dimension JavaDoc(23, 23));
685         btnPrevious.setPreferredSize(new java.awt.Dimension JavaDoc(23, 23));
686         btnPrevious.addActionListener(new java.awt.event.ActionListener JavaDoc() {
687             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
688                 btnPreviousActionPerformed(evt);
689             }
690         });
691
692         tlbToolBar.add(btnPrevious);
693
694         btnNext.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/net/sf/jasperreports/view/images/next.GIF")));
695         btnNext.setToolTipText(getBundleString("next.page"));
696         btnNext.setMargin(new java.awt.Insets JavaDoc(2, 2, 2, 2));
697         btnNext.setMaximumSize(new java.awt.Dimension JavaDoc(23, 23));
698         btnNext.setMinimumSize(new java.awt.Dimension JavaDoc(23, 23));
699         btnNext.setPreferredSize(new java.awt.Dimension JavaDoc(23, 23));
700         btnNext.addActionListener(new java.awt.event.ActionListener JavaDoc() {
701             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
702                 btnNextActionPerformed(evt);
703             }
704         });
705
706         tlbToolBar.add(btnNext);
707
708         btnLast.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/net/sf/jasperreports/view/images/last.GIF")));
709         btnLast.setToolTipText(getBundleString("last.page"));
710         btnLast.setMargin(new java.awt.Insets JavaDoc(2, 2, 2, 2));
711         btnLast.setMaximumSize(new java.awt.Dimension JavaDoc(23, 23));
712         btnLast.setMinimumSize(new java.awt.Dimension JavaDoc(23, 23));
713         btnLast.setPreferredSize(new java.awt.Dimension JavaDoc(23, 23));
714         btnLast.addActionListener(new java.awt.event.ActionListener JavaDoc() {
715             public void actionPerformed(java.awt.event.ActionEvent