1
14 package demo.view.advanced;
15
16 import demo.view.DemoBase;
17 import y.option.OptionHandler;
18 import y.view.Graph2DPrinter;
19 import y.view.PrintPreviewPanel;
20
21 import javax.swing.AbstractAction;
22 import javax.swing.Action;
23 import javax.swing.JButton;
24 import javax.swing.JDialog;
25 import javax.swing.JFrame;
26 import javax.swing.JToolBar;
27 import java.awt.Color;
28 import java.awt.Font;
29 import java.awt.event.ActionEvent;
30 import java.awt.print.PageFormat;
31 import java.awt.print.PrinterJob;
32
33
38 public class PrintPreviewDemo extends DemoBase
39 {
40
41 public PrintPreviewDemo()
42 {
43 }
44
45 protected JToolBar createToolBar()
46 {
47 JToolBar bar = super.createToolBar();
48 bar.add(new PrintPreviewAction());
49 return bar;
50 }
51
52
55 class PrintPreviewAction extends AbstractAction
56 {
57 Graph2DPrintPreviewPanel ppp;
58 PrintPreviewAction()
59 {
60 super("Print Preview");
61
62 PrinterJob printJob = PrinterJob.getPrinterJob();
63 ppp = new Graph2DPrintPreviewPanel(
64 printJob,
65 new Graph2DPrinter(view),
66 printJob.defaultPage());
67 }
68
69 public void actionPerformed(ActionEvent e)
70 {
71 final JDialog dialog = new JDialog((JFrame)view.getTopLevelAncestor(), contentPane.getName(), true);
72 dialog.setContentPane(ppp);
73 dialog.setResizable(true);
74 dialog.pack();
75 dialog.setVisible(true);
76 }
77
78 }
79
80
84 public class Graph2DPrintPreviewPanel extends PrintPreviewPanel {
85 OptionHandler printOptions;
86 Graph2DPrinter gp;
87
88
89 public Graph2DPrintPreviewPanel(
90 PrinterJob printJob,
91 final Graph2DPrinter gp,
92 PageFormat pf)
93 {
94 super(printJob,
95 gp,
96 gp.getPosterColumns(),
97 gp.getPosterColumns() * gp.getPosterRows(),
98 pf);
99 this.gp = gp;
100
101 printOptions = new OptionHandler("Print Options");
103 printOptions.useSection("General");
104
105 printOptions.addInt("Poster Rows",gp.getPosterRows());
106 printOptions.addInt("Poster Columns",gp.getPosterColumns());
107 printOptions.addBool("Add Poster Coords",gp.getPrintPosterCoords());
108 final String[] area = {"View","Graph"};
109 if(gp.getClipType() == Graph2DPrinter.CLIP_GRAPH)
110 printOptions.addEnum("Clip Area",area,1);
111 else
112 printOptions.addEnum("Clip Area",area,0);
113
114 Graph2DPrinter.DefaultTitleDrawable td = new Graph2DPrinter.DefaultTitleDrawable();
115 printOptions.useSection("Title");
116 printOptions.addString("Text", td.getText());
117 printOptions.addColor("Titlebar Color", td.getTitleBarColor(), true);
118 printOptions.addColor("Text Color", td.getTextColor(), true);
119 printOptions.addInt("Font Size", contentPane.getFont().getSize());
120
121 Graph2DPrinter.DefaultFooterDrawable fd = new Graph2DPrinter.DefaultFooterDrawable();
122 printOptions.useSection("Footer");
123 printOptions.addString("Text", fd.getText());
124 printOptions.addColor("Footer Color", fd.getFooterColor(), true);
125 printOptions.addColor("Text Color", fd.getTextColor(), true);
126 printOptions.addInt("Font Size", contentPane.getFont().getSize());
127
128 Action optionAction = new AbstractAction("Options...") {
130 public void actionPerformed(ActionEvent ev) {
131 if(!printOptions.showEditor()) return;
132 gp.setPosterRows(printOptions.getInt("Poster Rows"));
133 gp.setPosterColumns(printOptions.getInt("Poster Columns"));
134 gp.setPrintPosterCoords(
135 printOptions.getBool("Add Poster Coords"));
136 if(printOptions.get("Clip Area").equals("Graph"))
137 gp.setClipType(Graph2DPrinter.CLIP_GRAPH);
138 else
139 gp.setClipType(Graph2DPrinter.CLIP_VIEW);
140
141 Graph2DPrinter.DefaultTitleDrawable title =
142 new Graph2DPrinter.DefaultTitleDrawable();
143 title.setText(printOptions.getString("Title", "Text"));
144 title.setTitleBarColor((Color)printOptions.get("Title", "Titlebar Color"));
145 title.setTextColor((Color)printOptions.get("Title","Text Color"));
146 title.setFont(new Font("Dialog", Font.PLAIN, printOptions.getInt("Title","Font Size")));
147 gp.setTitleDrawable(title);
148
149 Graph2DPrinter.DefaultFooterDrawable footer =
150 new Graph2DPrinter.DefaultFooterDrawable();
151 footer.setText(printOptions.getString("Footer","Text"));
152 footer.setFooterColor((Color) printOptions.get("Footer","Footer Color"));
153 footer.setTextColor((Color) printOptions.get("Footer","Text Color"));
154 footer.setFont(new Font("Dialog", Font.PLAIN, printOptions.getInt("Footer","Font Size")));
155 gp.setFooterDrawable(footer);
156
157 setPages(0,
158 gp.getPosterColumns(),
159 gp.getPosterColumns()*gp.getPosterRows());
160
161 zoomToFit();
162 }
163 };
164 addControlComponent(new JButton(optionAction));
165
166 }
167
168 }
169
170 public static void main(String args[])
171 {
172 initLnF();
173 PrintPreviewDemo demo = new PrintPreviewDemo();
174 demo.start(demo.getClass().getName());
175 }
176
177 }
178
179
180
181
182