1
14
15 package demo.yext.export;
16
17
18 import y.option.ConstraintManager;
19 import y.option.OptionGroup;
20 import y.option.OptionHandler;
21 import y.view.Graph2D;
22 import y.view.Graph2DView;
23 import y.view.YRenderingHints;
24 import yext.export.io.EPSOutputHandler;
25
26 import java.awt.event.ActionEvent;
27 import javax.swing.JButton;
28 import javax.swing.JToolBar;
29
30
31
35 public class EPSExportDemo extends AbstractExportDemo
36 {
37 private static final String RENDER_TEXT_AS_SHAPES = "Render Text as Shapes";
38 private static final String EMBED_FONTS = "Embed Fonts";
39
40
41
44 protected JToolBar createToolBar() {
45 JToolBar jtb = super.createToolBar();
46 jtb.addSeparator();
47 EPSOutputHandler outputHandler = new EPSOutputHandler();
48 jtb.add(new JButton(new EPSExportAction("EPS Export", outputHandler)));
49 return jtb;
50 }
51
52
55 class EPSExportAction extends ExportAction
56 {
57 EPSExportAction( String name, EPSOutputHandler outputHandler ) {
58 super(name, outputHandler);
59
60 final String[] sizes = {
61 "Use Original Size", USE_CUSTOM_WIDTH, USE_CUSTOM_HEIGHT
62 };
63 final String[] clipRegions = {
64 GRAPH, VIEW
65 };
66
67 options = new OptionHandler(name);
69 final OptionGroup group = new OptionGroup();
70 group.setAttribute(OptionGroup.ATTRIBUTE_TITLE, name + " Options");
71 group.addItem(options.addEnum(SIZE, sizes, 0));
72 group.addItem(options.addInt(CUSTOM_WIDTH, 500));
73 group.addItem(options.addInt(CUSTOM_HEIGHT, 500));
74 group.addItem(options.addInt(EMPTY_BORDER_WIDTH, 10));
75 group.addItem(options.addEnum(CLIP_REGION, clipRegions, 0));
76 group.addItem(options.addBool(SELECTION_PAINTING, false));
77 group.addItem(options.addBool(RENDER_TEXT_AS_SHAPES, false));
78 group.addItem(options.addBool(EMBED_FONTS, false));
79
80 final ConstraintManager cm = new ConstraintManager(options);
81 cm.setEnabledOnValueEquals(SIZE, USE_CUSTOM_WIDTH, CUSTOM_WIDTH);
82 cm.setEnabledOnValueEquals(SIZE, USE_CUSTOM_HEIGHT, CUSTOM_HEIGHT);
83 cm.setEnabledOnValueEquals(CLIP_REGION, GRAPH, EMPTY_BORDER_WIDTH);
84 cm.setEnabledOnValueEquals(RENDER_TEXT_AS_SHAPES, Boolean.FALSE, EMBED_FONTS);
85 }
86
87 public void actionPerformed( final ActionEvent e ) {
88 if (!options.showEditor(view.getFrame())) {
91 return;
92 }
93
94 if (options.getBool(SELECTION_PAINTING)) {
95 outputHandler.removeRenderingHint(YRenderingHints.KEY_SELECTION_PAINTING);
96 } else {
97 outputHandler.addRenderingHint(
98 YRenderingHints.KEY_SELECTION_PAINTING,
99 YRenderingHints.VALUE_SELECTION_PAINTING_OFF);
100 }
101
102 final byte policy;
103 if (options.getBool(RENDER_TEXT_AS_SHAPES)) {
104 policy = EPSOutputHandler.VECTORIZED_TEXT;
105 } else if (options.getBool(EMBED_FONTS)) {
106 policy = EPSOutputHandler.PLAIN_TEXT_WITH_EMBEDDED_FONTS;
107 } else {
108 policy = EPSOutputHandler.PLAIN_TEXT;
109 }
110 ((EPSOutputHandler)outputHandler).setTextRenderingPolicy(policy);
111
112 Graph2D graph = view.getGraph2D();
113 Graph2DView viewPort = outputHandler.createDefaultGraph2DView(graph);
114
115 configureViewPort(viewPort);
118 graph.setCurrentView(viewPort);
119
120 export(outputHandler);
123
124 graph.removeView(viewPort);
125 }
126 }
127
128
129
132 public static void main(String[] args) {
133 initLnF();
134 (new EPSExportDemo()).start();
135 }
136 }