1:
31:
32: package ;
33:
34: import ;
35: import ;
36: import ;
37: import ;
38: import ;
39: import ;
40: import ;
41: import ;
42: import ;
43: import ;
44:
45: import ;
46: import ;
47: import ;
48: import ;
49:
50:
55: public class PreviewFrame extends JFrame
56: {
57: private class PreviewPanePropertyChangeHandler
58: implements PropertyChangeListener
59: {
60:
61: private PreviewPanePropertyChangeHandler()
62: {
63: }
64:
65:
71:
72: public void propertyChange(final PropertyChangeEvent evt)
73: {
74: final String propertyName = evt.getPropertyName();
75: if (PreviewPane.MENU_PROPERTY.equals(propertyName))
76: {
77:
78: final JMenu[] menus = previewPane.getMenu();
79: if (menus != null && menus.length > 0)
80: {
81: final JMenuBar menuBar = new JMenuBar();
82: for (int i = 0; i < menus.length; i++)
83: {
84: final JMenu menu = menus[i];
85: menuBar.add(menu);
86: }
87: setJMenuBar(menuBar);
88: }
89: else
90: {
91: setJMenuBar(null);
92: }
93: return;
94: }
95:
96: if (PreviewPane.TITLE_PROPERTY.equals(propertyName))
97: {
98: setTitle(previewPane.getTitle());
99: return;
100: }
101:
102: if (PreviewPane.STATUS_TEXT_PROPERTY.equals(propertyName) ||
103: PreviewPane.STATUS_TYPE_PROPERTY.equals(propertyName))
104: {
105: statusBar.setStatus(previewPane.getStatusType(),
106: previewPane.getStatusText());
107: return;
108: }
109:
110: if (PreviewPane.ICON_THEME_PROPERTY.equals(propertyName))
111: {
112: statusBar.setIconTheme(previewPane.getIconTheme());
113: return;
114: }
115:
116: if (PreviewPane.PAGINATING_PROPERTY.equals(propertyName))
117: {
118: if (Boolean.TRUE.equals(evt.getNewValue()))
119: {
120: progressBar.setVisible(true);
121: pageLabel.setVisible(false);
122: }
123: else
124: {
125: progressBar.setVisible(false);
126: pageLabel.setVisible(true);
127: }
128: progressBar.revalidate();
129: return;
130: }
131:
132:
133: if (PreviewPane.PAGE_NUMBER_PROPERTY.equals(propertyName) ||
134: PreviewPane.NUMBER_OF_PAGES_PROPERTY.equals(propertyName))
135: {
136: pageLabel.setText(previewPane.getPageNumber() + "/" + previewPane.getNumberOfPages());
137: return;
138: }
139:
140: if (PreviewPane.CLOSED_PROPERTY.equals(propertyName))
141: {
142: if (previewPane.isClosed())
143: {
144: setVisible(false);
145: dispose();
146: }
147: else
148: {
149: setVisible(true);
150: }
151: }
152: }
153: }
154:
155: private PreviewPane previewPane;
156: private JStatusBar statusBar;
157: private ReportProgressBar progressBar;
158: private JLabel pageLabel;
159:
160:
173: public PreviewFrame()
174: {
175: init();
176: }
177:
178: protected void init()
179: {
180: previewPane = new PreviewPane();
181: statusBar = new JStatusBar(previewPane.getIconTheme());
182:
183: progressBar = new ReportProgressBar();
184: progressBar.setVisible(false);
185:
186: pageLabel = new JLabel();
187: previewPane.addPropertyChangeListener(new PreviewPanePropertyChangeHandler());
188:
189: final JComponent extensionArea = statusBar.getExtensionArea();
190: extensionArea.setLayout(new BoxLayout(extensionArea, BoxLayout.X_AXIS));
191: extensionArea.add(progressBar);
192: extensionArea.add(pageLabel);
193:
194: final JComponent contentPane = new JPanel();
195: contentPane.setLayout(new BorderLayout());
196: contentPane.add(previewPane, BorderLayout.CENTER);
197: contentPane.add(statusBar, BorderLayout.SOUTH);
198: setContentPane(contentPane);
199: }
200:
201: public ReportController getReportController()
202: {
203: return previewPane.getReportController();
204: }
205:
206: public void setReportController(final ReportController reportController)
207: {
208: previewPane.setReportController(reportController);
209: }
210:
211: public IconTheme getIconTheme()
212: {
213: return previewPane.getIconTheme();
214: }
215:
216: public void setIconTheme(final IconTheme theme)
217: {
218: previewPane.setIconTheme(theme);
219: }
220:
221: public ReportJob getReportJob()
222: {
223: return previewPane.getReportJob();
224: }
225:
226: public void setReportJob(final ReportJob reportJob)
227: {
228: previewPane.setReportJob(reportJob);
229: }
230:
231: }