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