OSDN Git Service

f79f33f1701b9b5b4a912f525bffa8fb48f27c8f
[posterdivider/PosterDivider.git] / src / jp / sourceforge / posterdivider / MainFrame.java
1 //
2 // MainFrame.java
3 // This file is part of PosterDivider.
4 //
5 package jp.sourceforge.posterdivider;
6
7 import java.awt.Button;
8 import java.awt.Checkbox;
9 import java.awt.Choice;
10 import java.awt.Dimension;
11 import java.awt.FileDialog;
12 import java.awt.FlowLayout;
13 import java.awt.Frame;
14 import java.awt.Label;
15 import java.awt.Menu;
16 import java.awt.MenuBar;
17 import java.awt.MenuItem;
18 import java.awt.MenuShortcut;
19 import java.awt.Panel;
20 import java.awt.TextField;
21 import java.awt.event.ActionEvent;
22 import java.awt.event.ActionListener;
23 import java.awt.event.ItemEvent;
24 import java.awt.event.ItemListener;
25 import java.awt.event.KeyEvent;
26 import java.awt.event.WindowEvent;
27 import java.awt.event.WindowListener;
28 import java.io.ByteArrayOutputStream;
29 import java.io.File;
30 import java.io.FileOutputStream;
31 import java.io.IOException;
32 import java.text.SimpleDateFormat;
33 import java.util.ArrayList;
34 import java.util.Date;
35
36 import javax.swing.BoxLayout;
37
38 public class MainFrame extends Frame {
39         private static final long serialVersionUID = 1L;
40
41         // Components
42         private Label labelSrcFile;
43         private TextField textFieldSrcFileName;
44         private Label labelSrcFileType;
45         private Button buttonSrcFileChange;
46         private Label labelSrcPageNum;
47         private Choice choiceSrcPageNum;
48         private Label labelSrcImageSize;
49         private NumberField numberFieldSrcImageWidth;
50         private NumberField numberFieldSrcImageHeight;
51         private Choice choiceSrcImageSizeUnit;
52         private Label labelSrcRect;
53         private Checkbox checkboxSrcRectWholeOfPage;
54         private NumberField numberFieldSrcLeft;
55         private NumberField numberFieldSrcBottom;
56         private NumberField numberFieldSrcRight;
57         private NumberField numberFieldSrcTop;
58         private Choice choiceSrcRectUnit;
59         private Label labelPosterSize;
60         private Choice choicePosterSize;
61         private NumberField numberFieldPosterWidth;
62         private NumberField numberFieldPosterHeight;
63         private Choice choicePosterSizeUnit;
64         private Checkbox checkboxPosterSizeKeepAspectRatio;
65         private Label labelPaperSize;
66         private Choice choicePaperSize;
67         private NumberField numberFieldPaperWidth;
68         private NumberField numberFieldPaperHeight;
69         private Choice choicePaperSizeUnit;
70         private Label labelPaperMargin;
71         private NumberField numberFieldPaperMargin;
72         private Choice choicePaperMarginUnit;
73         private Checkbox checkboxPaperRotate;
74         private Button buttonPaperOptimize;
75         private Label labelPreview;
76         private Label labelOutputPaperCount;
77         private NumberField numberFieldOutputPaperCount;
78         private CanvasPreview canvasPreview;
79         private Label labelOutputFileName;
80         private TextField textFieldOutputFileName;
81         private Label labelMessage;
82         private Button buttonOutput;
83
84         // Variables
85         private File srcFile;
86         private FileContainer fc;
87         private ImageContainer ic;
88         private float srcImageWidth;
89         private float srcImageHeight;
90         private ArrayList<Double> listSrcImageSizeUnit = new ArrayList<Double>();
91         private float srcLeft;
92         private float srcBottom;
93         private float srcRight;
94         private float srcTop;
95         private ArrayList<Double> listSrcRectUnit = new ArrayList<Double>();
96         private ArrayList<PaperSize> listPosterSize = new ArrayList<PaperSize>();
97         // preferredPosterSize と keepAspectRatio から posterSize が決まる
98         private float preferredPosterWidth;
99         private float preferredPosterHeight;
100         private float posterWidth;
101         private float posterHeight;
102         private ArrayList<Double> listPosterSizeUnit = new ArrayList<Double>();
103         private ArrayList<PaperSize> listPaperSize = new ArrayList<PaperSize>();
104         private float paperWidth;
105         private float paperHeight;
106         private boolean paperRotated;
107         private ArrayList<Double> listPaperSizeUnit = new ArrayList<Double>();
108         private float paperMargin;
109         private ArrayList<Double> listPaperMarginUnit = new ArrayList<Double>();
110
111         private String generateFileName(String str) {
112                 str = str.replace("{pwd}", System.getProperty("user.dir"));
113                 if (this.srcFile != null) {
114                         str = str.replace("{input}", this.srcFile.getName());
115                 }
116                 str = str.replace("{date}", new SimpleDateFormat("yyyyMMddHHmmss")
117                                 .format(new Date()));
118                 return str;
119         }
120
121         private boolean checkFileLoaded() {
122                 return this.ic != null;
123         }
124
125         private void simulateOutput() {
126                 // 設定値が変更されたときに canvasPreview 等を更新する
127
128                 labelMessage.setText("");
129
130                 PdfGenerator.CreatePosterArgs args = new PdfGenerator.CreatePosterArgs();
131                 args.setSrcRect(srcLeft, srcBottom, srcRight, srcTop);
132                 args.setPosterSize(posterWidth, posterHeight);
133                 args.setPaperSize(paperWidth, paperHeight);
134                 args.setMargin(paperMargin, paperMargin, paperMargin, paperMargin);
135
136                 int outputPaperCount = PdfGenerator.simulateOutputPaperCount(args);
137                 numberFieldOutputPaperCount.setValue(outputPaperCount);
138
139                 canvasPreview.setArgs(args);
140                 canvasPreview.repaint();
141         }
142
143         private void optimizePaperRotated() {
144                 // 出力枚数が少なくなるように印刷用紙の向きを更新する
145
146                 PdfGenerator.CreatePosterArgs args1 = new PdfGenerator.CreatePosterArgs();
147                 args1.setSrcRect(srcLeft, srcBottom, srcRight, srcTop);
148                 args1.setPosterSize(posterWidth, posterHeight);
149                 args1.setPaperSize(paperWidth, paperHeight);
150                 args1.setMargin(paperMargin, paperMargin, paperMargin, paperMargin);
151                 int outputPaperCount1 = PdfGenerator.simulateOutputPaperCount(args1);
152                 if (outputPaperCount1 < 0) {
153                         // 不正なとき
154                         outputPaperCount1 = Integer.MAX_VALUE;
155                 }
156
157                 PdfGenerator.CreatePosterArgs args2 = new PdfGenerator.CreatePosterArgs();
158                 args2.setSrcRect(srcLeft, srcBottom, srcRight, srcTop);
159                 args2.setPosterSize(posterWidth, posterHeight);
160                 args2.setPaperSize(paperHeight, paperWidth); // 印刷用紙を回転する
161                 args2.setMargin(paperMargin, paperMargin, paperMargin, paperMargin);
162                 int outputPaperCount2 = PdfGenerator.simulateOutputPaperCount(args2);
163                 if (outputPaperCount2 < 0) {
164                         outputPaperCount2 = Integer.MAX_VALUE;
165                 }
166
167                 if (outputPaperCount1 > outputPaperCount2
168                                 || (outputPaperCount1 == outputPaperCount2 && paperRotated)) {
169                         // 最適化
170                         checkboxPaperRotate.setState(!paperRotated);
171                         checkboxPaperRotate_itemStateChanged();
172                 }
173         }
174
175         public void outputPdf() {
176                 if (!checkFileLoaded()) {
177                         labelMessage.setText(Lib.getMessage("No Input Files"));
178                         this.validateTree();
179                         return;
180                 }
181
182                 PdfGenerator.CreatePosterArgs args = new PdfGenerator.CreatePosterArgs();
183                 args.setSrcRect(srcLeft, srcBottom, srcRight, srcTop);
184                 args.setPosterSize(posterWidth, posterHeight);
185                 args.setPaperSize(paperWidth, paperHeight);
186                 args.setMargin(paperMargin, paperMargin, paperMargin, paperMargin);
187                 String outputFileName = generateFileName(textFieldOutputFileName
188                                 .getText());
189                 try {
190                         ByteArrayOutputStream baos = new ByteArrayOutputStream();
191                         PdfGenerator.createPoster(ic, args, baos);
192                         try {
193                                 FileOutputStream fos = new FileOutputStream(outputFileName);
194                                 baos.writeTo(fos);
195                                 fos.close();
196
197                                 labelMessage.setText(String.format(
198                                                 Lib.getMessage("Saved '%s'"), outputFileName));
199                         } catch (IOException ex) {
200                                 labelMessage.setText(String.format(Lib
201                                                 .getMessage("Failed Write '%s'"), outputFileName));
202                         }
203                 } catch (Exception ex) {
204                         labelMessage.setText(Lib.getMessage("Failed Generate"));
205                 }
206                 this.validateTree();
207         }
208
209         private void changePageSuccess(ImageContainer ic) {
210                 this.ic = ic;
211
212                 choiceSrcPageNum.select(ic.getPageNum() - 1);
213
214                 srcImageWidth = ic.getImageWidth();
215                 srcImageHeight = ic.getImageHeight();
216                 numberFieldSrcImageSize_setValue();
217
218                 choiceSrcImageSizeUnit.setEnabled(true);
219                 checkboxSrcRectWholeOfPage.setEnabled(true);
220                 choiceSrcRectUnit.setEnabled(true);
221                 buttonPaperOptimize.setEnabled(true);
222
223                 canvasPreview.setImageContainer(ic);
224                 simulateOutput();
225         }
226
227         public void changePage(int pageNum) {
228                 if (fc == null) {
229                         return;
230                 }
231                 try {
232                         ImageContainer ic = new ImageContainer(fc, pageNum);
233                         changePageSuccess(ic);
234                 } catch (Exception ex) {
235
236                 }
237                 this.validateTree();
238         }
239
240         private void changeFileSuccess(File file, FileContainer fc) {
241                 this.srcFile = file;
242                 this.fc = fc;
243
244                 textFieldSrcFileName.setText(file.getAbsolutePath());
245
246                 labelSrcFileType.setText(Lib.getFileTypeName(fc.getFileType()));
247
248                 choiceSrcPageNum.removeAll();
249                 for (int i = 1; i <= fc.getPageCount(); i++) {
250                         choiceSrcPageNum.add(Integer.toString(i));
251                 }
252                 choiceSrcPageNum.select(0);
253                 choiceSrcPageNum.setEnabled(fc.getFileType() == Lib.FT_PDF);
254
255                 choiceSrcImageSizeUnit_initialize(fc.getFileType());
256                 choiceSrcImageSizeUnit.select(0);
257
258                 choiceSrcRectUnit_initialize(fc.getFileType());
259                 choiceSrcRectUnit.select(0);
260
261                 changePage(choiceSrcPageNum.getSelectedIndex() + 1);
262
263                 checkboxSrcRectWholeOfPage.setState(true);
264                 checkboxSrcRectWholeOfPage_itemStateChanged();
265         }
266
267         public void changeFile(String fileName) {
268                 File file = new File(fileName);
269                 try {
270                         FileContainer fc = new FileContainer(file);
271                         changeFileSuccess(file, fc);
272                 } catch (Exception ex) {
273                         labelMessage.setText(String.format(Lib
274                                         .getMessage("Failed Open '%s'"), file.getAbsolutePath()));
275                 }
276                 this.validateTree();
277         }
278
279         private void updatePosterSize() {
280                 // preferredPosterSize から posterSize を更新する
281                 // KeepAspectRatio なら srcRect を拡大して preferredPosterSize に入る最大の Size を
282                 // posterSize とする
283                 posterWidth = preferredPosterWidth;
284                 posterHeight = preferredPosterHeight;
285                 if (checkboxPosterSizeKeepAspectRatio.getState()) {
286                         if ((srcRight - srcLeft) * preferredPosterHeight > (srcTop - srcBottom)
287                                         * preferredPosterWidth) {
288                                 // Src が横長
289                                 if (srcRight != srcLeft) {
290                                         posterHeight = posterWidth * (srcTop - srcBottom)
291                                                         / (srcRight - srcLeft);
292                                 }
293                         } else {
294                                 if (srcTop != srcBottom) {
295                                         posterWidth = posterHeight * (srcRight - srcLeft)
296                                                         / (srcTop - srcBottom);
297                                 }
298                         }
299                 }
300         }
301
302         /*
303          * private void revisePosterSize(int direction) { // direction は固定する方向
304          * 0->Width, 1->Height boolean changed = false; if
305          * (checkboxPosterSizeKeepAspectRatio.getState()) { switch (direction) {
306          * case 0: if (srcRight != srcLeft) { posterHeight = posterWidth * (srcTop -
307          * srcBottom) / (srcRight - srcLeft); changed = true; } break; case 1: if
308          * (srcTop != srcBottom) { posterWidth = posterHeight * (srcRight - srcLeft) /
309          * (srcTop - srcBottom); changed = true; } break; default: break; } } if
310          * (changed) { numberFieldPosterSize_setValue(); simulateOutput(); } }
311          */
312
313         private void menuItemNewWindow_actionPerformed() {
314                 MainFrame frame = new MainFrame();
315                 frame.setVisible(true);
316         }
317
318         private void menuItemOpenFile_actionPerformed() {
319                 FileDialog fd = new FileDialog(this, null, FileDialog.LOAD);
320                 fd.setVisible(true);
321
322                 if (fd.getFile() != null) {
323                         String fileName = fd.getDirectory() + fd.getFile();
324                         if (checkFileLoaded()) {
325                                 MainFrame frame = new MainFrame();
326                                 frame.changeFile(fileName);
327                                 frame.setVisible(true);
328                         }
329                         else {
330                                 changeFile(fileName);
331                         }
332                 }
333         }
334
335         private void menuItemCloseWindow_actionPerformed() {
336                 this.dispose();
337         }
338
339         private void menuItemOutput_actionPerformed() {
340                 outputPdf();
341         }
342
343         private void buttonSrcFileChange_actionPerformed() {
344                 FileDialog fd = new FileDialog(this, null, FileDialog.LOAD);
345                 fd.setVisible(true);
346
347                 if (fd.getFile() != null) {
348                         changeFile(fd.getDirectory() + fd.getFile());
349                 }
350         }
351
352         private void choiceSrcPageNum_itemStateChanged() {
353                 int pageNum = choiceSrcPageNum.getSelectedIndex() + 1;
354                 if (this.ic.getPageNum() != pageNum) {
355                         changePage(pageNum);
356                 }
357         }
358
359         private void numberFieldSrcImageSize_setValue() {
360                 double rate = listSrcImageSizeUnit.get(choiceSrcImageSizeUnit
361                                 .getSelectedIndex());
362                 numberFieldSrcImageWidth.setValue(srcImageWidth * rate);
363                 numberFieldSrcImageHeight.setValue(srcImageHeight * rate);
364         }
365
366         private void choiceSrcImageSizeUnit_add(String key, double value) {
367                 choiceSrcImageSizeUnit.add(key);
368                 listSrcImageSizeUnit.add(value);
369         }
370
371         private void choiceSrcImageSizeUnit_initialize(int fileType) {
372                 choiceSrcImageSizeUnit.removeAll();
373                 listSrcImageSizeUnit.clear();
374                 switch (fileType) {
375                 case Lib.FT_PDF:
376                         choiceSrcImageSizeUnit_add(Lib.getMessage("mm"), Lib.UNIT_POINT_MM);
377                         choiceSrcImageSizeUnit_add(Lib.getMessage("cm"), Lib.UNIT_POINT_CM);
378                         choiceSrcImageSizeUnit_add(Lib.getMessage("m"), Lib.UNIT_POINT_M);
379                         choiceSrcImageSizeUnit_add(Lib.getMessage("in"),
380                                         Lib.UNIT_POINT_INCH);
381                         choiceSrcImageSizeUnit_add(Lib.getMessage("pt"),
382                                         Lib.UNIT_POINT_POINT);
383                         break;
384                 case Lib.FT_BMP:
385                 case Lib.FT_GIF:
386                 case Lib.FT_JBIG2:
387                 case Lib.FT_JPEG:
388                 case Lib.FT_JPEG2000:
389                 case Lib.FT_PNG:
390                 case Lib.FT_TIFF:
391                 case Lib.FT_WMF:
392                 case Lib.FT_OTHERIMAGE:
393                         choiceSrcImageSizeUnit_add(Lib.getMessage("px"),
394                                         Lib.UNIT_PIXEL_PIXEL);
395                         break;
396                 default:
397                         break;
398                 }
399         }
400
401         private void choiceSrcImageSizeUnit_itemStateChanged() {
402                 numberFieldSrcImageSize_setValue();
403         }
404
405         private void checkboxSrcRectWholeOfPage_itemStateChanged() {
406                 boolean b = checkboxSrcRectWholeOfPage.getState();
407                 numberFieldSrcLeft.setEnabled(!b);
408                 numberFieldSrcTop.setEnabled(!b);
409                 numberFieldSrcRight.setEnabled(!b);
410                 numberFieldSrcBottom.setEnabled(!b);
411                 if (b) {
412                         srcLeft = 0;
413                         srcBottom = 0;
414                         srcRight = srcImageWidth;
415                         srcTop = srcImageHeight;
416                         numberFieldSrcRect_setValue();
417                         updatePosterSize();
418                         numberFieldPosterSize_setValue();
419                         // revisePosterSize(0);
420                         simulateOutput();
421                 }
422         }
423
424         private void numberFieldSrcRect_actionPerformed(Object obj) {
425                 double rate = listSrcRectUnit.get(choiceSrcRectUnit.getSelectedIndex());
426                 srcLeft = (float) (numberFieldSrcLeft.getValue() / rate);
427                 srcTop = (float) (numberFieldSrcTop.getValue() / rate);
428                 srcRight = (float) (numberFieldSrcRight.getValue() / rate);
429                 srcBottom = (float) (numberFieldSrcBottom.getValue() / rate);
430                 numberFieldSrcRect_setValue();
431                 updatePosterSize();
432                 numberFieldPosterSize_setValue();
433                 // revisePosterSize(0);
434                 simulateOutput();
435         }
436
437         private void numberFieldSrcRect_setValue() {
438                 if (listSrcRectUnit.isEmpty()) {
439                         return;
440                 }
441                 double rate = listSrcRectUnit.get(choiceSrcRectUnit.getSelectedIndex());
442                 numberFieldSrcLeft.setValue(srcLeft * rate);
443                 numberFieldSrcTop.setValue(srcTop * rate);
444                 numberFieldSrcRight.setValue(srcRight * rate);
445                 numberFieldSrcBottom.setValue(srcBottom * rate);
446         }
447
448         private void choiceSrcRectUnit_add(String key, double value) {
449                 choiceSrcRectUnit.add(key);
450                 listSrcRectUnit.add(value);
451         }
452
453         private void choiceSrcRectUnit_initialize(int fileType) {
454                 choiceSrcRectUnit.removeAll();
455                 listSrcRectUnit.clear();
456                 switch (fileType) {
457                 case Lib.FT_PDF:
458                         choiceSrcRectUnit_add(Lib.getMessage("mm"), Lib.UNIT_POINT_MM);
459                         choiceSrcRectUnit_add(Lib.getMessage("cm"), Lib.UNIT_POINT_CM);
460                         choiceSrcRectUnit_add(Lib.getMessage("m"), Lib.UNIT_POINT_M);
461                         choiceSrcRectUnit_add(Lib.getMessage("in"), Lib.UNIT_POINT_INCH);
462                         choiceSrcRectUnit_add(Lib.getMessage("pt"), Lib.UNIT_POINT_POINT);
463                         break;
464                 case Lib.FT_BMP:
465                 case Lib.FT_GIF:
466                 case Lib.FT_JBIG2:
467                 case Lib.FT_JPEG:
468                 case Lib.FT_JPEG2000:
469                 case Lib.FT_PNG:
470                 case Lib.FT_TIFF:
471                 case Lib.FT_WMF:
472                 case Lib.FT_OTHERIMAGE:
473                         choiceSrcRectUnit_add(Lib.getMessage("px"), Lib.UNIT_PIXEL_PIXEL);
474                         break;
475                 default:
476                         break;
477                 }
478         }
479
480         private void choiceSrcRectUnit_itemStateChanged() {
481                 numberFieldSrcRect_setValue();
482         }
483
484         private void choicePosterSize_add(String key, PaperSize value) {
485                 choicePosterSize.add(key);
486                 listPosterSize.add(value);
487         }
488
489         private void choicePosterSize_initialize() {
490                 choicePosterSize.removeAll();
491                 listPosterSize.clear();
492                 // TODO:後で減らす
493                 choicePosterSize_add(Lib.getMessage("A0"), PaperSize.A0);
494                 choicePosterSize_add(Lib.getMessage("A1"), PaperSize.A1);
495                 choicePosterSize_add(Lib.getMessage("A2"), PaperSize.A2);
496                 choicePosterSize_add(Lib.getMessage("A3"), PaperSize.A3);
497                 choicePosterSize_add(Lib.getMessage("A4"), PaperSize.A4);
498                 choicePosterSize_add(Lib.getMessage("A5"), PaperSize.A5);
499                 choicePosterSize_add(Lib.getMessage("A6"), PaperSize.A6);
500                 choicePosterSize_add(Lib.getMessage("B0"), PaperSize.B0);
501                 choicePosterSize_add(Lib.getMessage("B1"), PaperSize.B1);
502                 choicePosterSize_add(Lib.getMessage("B2"), PaperSize.B2);
503                 choicePosterSize_add(Lib.getMessage("B3"), PaperSize.B3);
504                 choicePosterSize_add(Lib.getMessage("B4"), PaperSize.B4);
505                 choicePosterSize_add(Lib.getMessage("B5"), PaperSize.B5);
506                 choicePosterSize_add(Lib.getMessage("B6"), PaperSize.B6);
507                 choicePosterSize_add(Lib.getMessage("Custom"), PaperSize.CUSTOM);
508         }
509
510         private void choicePosterSize_itemStateChanged() {
511                 PaperSize size = listPosterSize
512                                 .get(choicePosterSize.getSelectedIndex());
513                 boolean custom = size.isCustom();
514                 numberFieldPosterWidth.setEnabled(custom);
515                 numberFieldPosterHeight.setEnabled(custom);
516                 // checkboxPosterSizeKeepAspectRatio.setEnabled(custom);
517                 // if (!custom) {
518                 // checkboxPosterSizeKeepAspectRatio.setState(false);
519                 // posterWidth = size.getWidth();
520                 // posterHeight = size.getHeight();
521                 // numberFieldPosterSize_setValue();
522                 // simulateOutput();
523                 // }
524                 if (!custom) {
525                         preferredPosterWidth = size.getWidth();
526                         preferredPosterHeight = size.getHeight();
527                         updatePosterSize();
528                         numberFieldPosterSize_setValue();
529                         simulateOutput();
530                 }
531         }
532
533         private void numberFieldPosterSize_actionPerformed(Object obj) {
534                 double rate = listPosterSizeUnit.get(choicePosterSizeUnit
535                                 .getSelectedIndex());
536                 // posterWidth = (float) (numberFieldPosterWidth.getValue() / rate);
537                 // posterHeight = (float) (numberFieldPosterHeight.getValue() / rate);
538                 // if (obj == numberFieldPosterWidth) {
539                 // revisePosterSize(0);
540                 // }
541                 // if (obj == numberFieldPosterHeight) {
542                 // revisePosterSize(1);
543                 // }
544                 preferredPosterWidth = (float) (numberFieldPosterWidth.getValue() / rate);
545                 preferredPosterHeight = (float) (numberFieldPosterHeight.getValue() / rate);
546                 if (checkboxPosterSizeKeepAspectRatio.getState()) {
547                         if (obj == numberFieldPosterWidth) {
548                                 if (srcRight != srcLeft) {
549                                         preferredPosterHeight = preferredPosterWidth
550                                                         * (srcTop - srcBottom) / (srcRight - srcLeft);
551                                 }
552                         }
553                         if (obj == numberFieldPosterHeight) {
554                                 if (srcTop != srcBottom) {
555                                         preferredPosterWidth = preferredPosterHeight
556                                                         * (srcRight - srcLeft) / (srcTop - srcBottom);
557                                 }
558                         }
559                 }
560                 updatePosterSize();
561                 numberFieldPosterSize_setValue();
562                 simulateOutput();
563         }
564
565         private void numberFieldPosterSize_setValue() {
566                 double rate = listPosterSizeUnit.get(choicePosterSizeUnit
567                                 .getSelectedIndex());
568                 numberFieldPosterWidth.setValue(posterWidth * rate);
569                 numberFieldPosterHeight.setValue(posterHeight * rate);
570         }
571
572         private void choicePosterSizeUnit_add(String key, double value) {
573                 choicePosterSizeUnit.add(key);
574                 listPosterSizeUnit.add(value);
575         }
576
577         private void choicePosterSizeUnit_initialize() {
578                 choicePosterSizeUnit.removeAll();
579                 listPosterSizeUnit.clear();
580                 choicePosterSizeUnit_add(Lib.getMessage("mm"), Lib.UNIT_POINT_MM);
581                 choicePosterSizeUnit_add(Lib.getMessage("cm"), Lib.UNIT_POINT_CM);
582                 choicePosterSizeUnit_add(Lib.getMessage("m"), Lib.UNIT_POINT_M);
583                 choicePosterSizeUnit_add(Lib.getMessage("in"), Lib.UNIT_POINT_INCH);
584                 choicePosterSizeUnit_add(Lib.getMessage("pt"), Lib.UNIT_POINT_POINT);
585         }
586
587         private void choicePosterSizeUnit_itemStateChanged() {
588                 numberFieldPosterSize_setValue();
589         }
590
591         private void checkboxPosterSizeKeepAspectRatio_itemStateChanged() {
592                 // revisePosterSize(0);
593                 updatePosterSize();
594                 numberFieldPosterSize_setValue();
595                 simulateOutput();
596         }
597
598         private void choicePaperSize_add(String key, PaperSize value) {
599                 choicePaperSize.add(key);
600                 listPaperSize.add(value);
601         }
602
603         private void choicePaperSize_initialize() {
604                 choicePaperSize.removeAll();
605                 listPaperSize.clear();
606                 choicePaperSize_add(Lib.getMessage("A4"), PaperSize.A4);
607                 choicePaperSize_add(Lib.getMessage("A3"), PaperSize.A3);
608                 choicePaperSize_add(Lib.getMessage("B5"), PaperSize.B5);
609                 choicePaperSize_add(Lib.getMessage("B4"), PaperSize.B4);
610                 choicePaperSize_add(Lib.getMessage("Custom"), PaperSize.CUSTOM);
611         }
612
613         private void choicePaperSize_itemStateChanged() {
614                 PaperSize size = listPaperSize.get(choicePaperSize.getSelectedIndex());
615                 boolean custom = size.isCustom();
616                 numberFieldPaperWidth.setEnabled(custom);
617                 numberFieldPaperHeight.setEnabled(custom);
618                 if (!custom) {
619                         if (paperRotated) {
620                                 paperWidth = size.getHeight();
621                                 paperHeight = size.getWidth();
622                         } else {
623                                 paperWidth = size.getWidth();
624                                 paperHeight = size.getHeight();
625                         }
626                         numberFieldPaperSize_setValue();
627                         simulateOutput();
628                 }
629         }
630
631         private void numberFieldPaperSize_actionPerformed(Object obj) {
632                 double rate = listPaperSizeUnit.get(choicePaperSizeUnit
633                                 .getSelectedIndex());
634                 paperWidth = (float) (numberFieldPaperWidth.getValue() / rate);
635                 paperHeight = (float) (numberFieldPaperHeight.getValue() / rate);
636                 numberFieldPaperSize_setValue();
637                 simulateOutput();
638         }
639
640         private void numberFieldPaperSize_setValue() {
641                 double rate = listPaperSizeUnit.get(choicePaperSizeUnit
642                                 .getSelectedIndex());
643                 numberFieldPaperWidth.setValue(paperWidth * rate);
644                 numberFieldPaperHeight.setValue(paperHeight * rate);
645         }
646
647         private void choicePaperSizeUnit_add(String key, double value) {
648                 choicePaperSizeUnit.add(key);
649                 listPaperSizeUnit.add(value);
650         }
651
652         private void choicePaperSizeUnit_initialize() {
653                 choicePaperSizeUnit.removeAll();
654                 listPaperSizeUnit.clear();
655                 choicePaperSizeUnit_add(Lib.getMessage("mm"), Lib.UNIT_POINT_MM);
656                 choicePaperSizeUnit_add(Lib.getMessage("cm"), Lib.UNIT_POINT_CM);
657                 choicePaperSizeUnit_add(Lib.getMessage("m"), Lib.UNIT_POINT_M);
658                 choicePaperSizeUnit_add(Lib.getMessage("in"), Lib.UNIT_POINT_INCH);
659                 choicePaperSizeUnit_add(Lib.getMessage("pt"), Lib.UNIT_POINT_POINT);
660         }
661
662         private void choicePaperSizeUnit_itemStateChanged() {
663                 numberFieldPaperSize_setValue();
664         }
665
666         private void numberFieldPaperMargin_actionPerformed(Object obj) {
667                 double rate = listPaperMarginUnit.get(choicePaperMarginUnit
668                                 .getSelectedIndex());
669                 paperMargin = (float) (numberFieldPaperMargin.getValue() / rate);
670                 numberFieldPaperMargin_setValue();
671                 simulateOutput();
672         }
673
674         private void numberFieldPaperMargin_setValue() {
675                 double rate = listPaperMarginUnit.get(choicePaperMarginUnit
676                                 .getSelectedIndex());
677                 numberFieldPaperMargin.setValue(paperMargin * rate);
678         }
679
680         private void choicePaperMarginUnit_add(String key, double value) {
681                 choicePaperMarginUnit.add(key);
682                 listPaperMarginUnit.add(value);
683         }
684
685         private void choicePaperMarginUnit_initialize() {
686                 choicePaperMarginUnit.removeAll();
687                 listPaperMarginUnit.clear();
688                 choicePaperMarginUnit_add(Lib.getMessage("mm"), Lib.UNIT_POINT_MM);
689                 choicePaperMarginUnit_add(Lib.getMessage("cm"), Lib.UNIT_POINT_CM);
690                 choicePaperMarginUnit_add(Lib.getMessage("m"), Lib.UNIT_POINT_M);
691                 choicePaperMarginUnit_add(Lib.getMessage("in"), Lib.UNIT_POINT_INCH);
692                 choicePaperMarginUnit_add(Lib.getMessage("pt"), Lib.UNIT_POINT_POINT);
693         }
694
695         private void choicePaperMarginUnit_itemStateChanged() {
696                 numberFieldPaperMargin_setValue();
697         }
698
699         private void checkboxPaperRotate_itemStateChanged() {
700                 boolean paperRotated = checkboxPaperRotate.getState();
701                 if (this.paperRotated != paperRotated) {
702                         float a = this.paperWidth;
703                         this.paperWidth = this.paperHeight;
704                         this.paperHeight = a;
705                         this.paperRotated = paperRotated;
706                         numberFieldPaperSize_setValue();
707                         simulateOutput();
708                 }
709         }
710
711         private void buttonPaperOptimize_actionPerformed() {
712                 optimizePaperRotated();
713         }
714
715         private void buttonOutput_actionPerformed() {
716                 outputPdf();
717         }
718
719         private void numberField_initialize(NumberField numberField) {
720                 numberField.setColumns(7);
721                 numberField.setDisplayDigit(2);
722                 numberField.setUnitIncrement(0.1);
723         }
724
725         private void mainFrame_initializeComponents() {
726                 this.setTitle(Lib.APP_LOWERTITLE);
727                 this.setSize(800, 600);
728                 this.setLocationRelativeTo(null);
729                 this.addWindowListener(new WindowListener() {
730                         public void windowActivated(WindowEvent e) {
731                         }
732
733                         public void windowClosed(WindowEvent e) {
734                         }
735
736                         public void windowClosing(WindowEvent e) {
737                                 dispose();
738                         }
739
740                         public void windowDeactivated(WindowEvent e) {
741                         }
742
743                         public void windowDeiconified(WindowEvent e) {
744                         }
745
746                         public void windowIconified(WindowEvent e) {
747                         }
748
749                         public void windowOpened(WindowEvent e) {
750                                 buttonOutput.requestFocus();
751                         }
752                 });
753
754                 MenuBar menuBar = new MenuBar();
755                 Menu menuFile = new Menu(Lib.getMessage("File"));
756                 MenuItem menuItemNewWindow = new MenuItem(Lib.getMessage("New"));
757                 menuItemNewWindow.setShortcut(new MenuShortcut(KeyEvent.VK_N, false));
758                 menuItemNewWindow.addActionListener(new ActionListener() {
759                         public void actionPerformed(ActionEvent e) {
760                                 menuItemNewWindow_actionPerformed();
761                         }
762                 });
763                 MenuItem menuItemOpenFile = new MenuItem(Lib.getMessage("Open") + "...");
764                 menuItemOpenFile.setShortcut(new MenuShortcut(KeyEvent.VK_O, false));
765                 menuItemOpenFile.addActionListener(new ActionListener() {
766                         public void actionPerformed(ActionEvent e) {
767                                 menuItemOpenFile_actionPerformed();
768                         }
769                 });
770                 MenuItem menuItemCloseWindow = new MenuItem(Lib.getMessage("Close"));
771                 menuItemCloseWindow.setShortcut(new MenuShortcut(KeyEvent.VK_W, false));
772                 menuItemCloseWindow.addActionListener(new ActionListener() {
773                         public void actionPerformed(ActionEvent e) {
774                                 menuItemCloseWindow_actionPerformed();
775                         }
776                 });
777                 MenuItem menuItemOutput = new MenuItem(Lib.getMessage("Output"));
778                 menuItemOutput.addActionListener(new ActionListener() {
779                         public void actionPerformed(ActionEvent e) {
780                                 menuItemOutput_actionPerformed();
781                         }
782                 });
783
784                 labelSrcFile = new Label();
785                 labelSrcFile.setText(Lib.getMessage("FileName"));
786
787                 textFieldSrcFileName = new TextField();
788                 textFieldSrcFileName.setEditable(false);
789                 textFieldSrcFileName.setColumns(50);
790
791                 labelSrcFileType = new Label();
792
793                 buttonSrcFileChange = new Button();
794                 buttonSrcFileChange.setLabel(Lib.getMessage("Change") + "...");
795                 buttonSrcFileChange.addActionListener(new ActionListener() {
796                         public void actionPerformed(ActionEvent e) {
797                                 buttonSrcFileChange_actionPerformed();
798                         }
799                 });
800
801                 labelSrcPageNum = new Label();
802                 labelSrcPageNum.setText(Lib.getMessage("PageNum"));
803
804                 choiceSrcPageNum = new Choice();
805                 choiceSrcPageNum.setEnabled(false);
806                 choiceSrcPageNum.addItemListener(new ItemListener() {
807                         public void itemStateChanged(ItemEvent e) {
808                                 choiceSrcPageNum_itemStateChanged();
809                         }
810                 });
811
812                 labelSrcImageSize = new Label();
813                 labelSrcImageSize.setText(Lib.getMessage("ImageSize"));
814
815                 numberFieldSrcImageWidth = new NumberField();
816                 numberField_initialize(numberFieldSrcImageWidth);
817                 numberFieldSrcImageWidth.setEnabled(false);
818
819                 numberFieldSrcImageHeight = new NumberField();
820                 numberField_initialize(numberFieldSrcImageHeight);
821                 numberFieldSrcImageHeight.setEnabled(false);
822
823                 choiceSrcImageSizeUnit = new Choice();
824                 choiceSrcImageSizeUnit.setEnabled(false);
825                 choiceSrcImageSizeUnit.addItemListener(new ItemListener() {
826                         public void itemStateChanged(ItemEvent e) {
827                                 choiceSrcImageSizeUnit_itemStateChanged();
828                         }
829                 });
830
831                 labelSrcRect = new Label();
832                 labelSrcRect.setText(Lib.getMessage("SrcRect"));
833
834                 checkboxSrcRectWholeOfPage = new Checkbox();
835                 checkboxSrcRectWholeOfPage.setLabel(Lib.getMessage("WholeOfPage"));
836                 checkboxSrcRectWholeOfPage.setEnabled(false);
837                 checkboxSrcRectWholeOfPage.addItemListener(new ItemListener() {
838                         public void itemStateChanged(ItemEvent e) {
839                                 checkboxSrcRectWholeOfPage_itemStateChanged();
840                         }
841                 });
842
843                 numberFieldSrcLeft = new NumberField();
844                 numberField_initialize(numberFieldSrcLeft);
845                 numberFieldSrcLeft.setEnabled(false);
846                 numberFieldSrcLeft.addActionListener(new ActionListener() {
847                         public void actionPerformed(ActionEvent e) {
848                                 numberFieldSrcRect_actionPerformed(e.getSource());
849                         }
850                 });
851
852                 numberFieldSrcBottom = new NumberField();
853                 numberField_initialize(numberFieldSrcBottom);
854                 numberFieldSrcBottom.setEnabled(false);
855                 numberFieldSrcBottom.addActionListener(new ActionListener() {
856                         public void actionPerformed(ActionEvent e) {
857                                 numberFieldSrcRect_actionPerformed(e.getSource());
858                         }
859                 });
860
861                 numberFieldSrcRight = new NumberField();
862                 numberField_initialize(numberFieldSrcRight);
863                 numberFieldSrcRight.setEnabled(false);
864                 numberFieldSrcRight.addActionListener(new ActionListener() {
865                         public void actionPerformed(ActionEvent e) {
866                                 numberFieldSrcRect_actionPerformed(e.getSource());
867                         }
868                 });
869
870                 numberFieldSrcTop = new NumberField();
871                 numberField_initialize(numberFieldSrcTop);
872                 numberFieldSrcTop.setEnabled(false);
873                 numberFieldSrcTop.addActionListener(new ActionListener() {
874                         public void actionPerformed(ActionEvent e) {
875                                 numberFieldSrcRect_actionPerformed(e.getSource());
876                         }
877                 });
878
879                 choiceSrcRectUnit = new Choice();
880                 choiceSrcRectUnit.setEnabled(false);
881                 choiceSrcRectUnit.addItemListener(new ItemListener() {
882                         public void itemStateChanged(ItemEvent e) {
883                                 choiceSrcRectUnit_itemStateChanged();
884                         }
885                 });
886
887                 labelPosterSize = new Label();
888                 labelPosterSize.setText(Lib.getMessage("PosterSize"));
889
890                 choicePosterSize = new Choice();
891                 choicePosterSize_initialize();
892                 choicePosterSize.addItemListener(new ItemListener() {
893                         public void itemStateChanged(ItemEvent e) {
894                                 choicePosterSize_itemStateChanged();
895                         }
896                 });
897
898                 numberFieldPosterWidth = new NumberField();
899                 numberField_initialize(numberFieldPosterWidth);
900                 numberFieldPosterWidth.addActionListener(new ActionListener() {
901                         public void actionPerformed(ActionEvent e) {
902                                 numberFieldPosterSize_actionPerformed(e.getSource());
903                         }
904                 });
905
906                 numberFieldPosterHeight = new NumberField();
907                 numberField_initialize(numberFieldPosterHeight);
908                 numberFieldPosterHeight.addActionListener(new ActionListener() {
909                         public void actionPerformed(ActionEvent e) {
910                                 numberFieldPosterSize_actionPerformed(e.getSource());
911                         }
912                 });
913
914                 choicePosterSizeUnit = new Choice();
915                 choicePosterSizeUnit_initialize();
916                 choicePosterSizeUnit.addItemListener(new ItemListener() {
917                         public void itemStateChanged(ItemEvent e) {
918                                 choicePosterSizeUnit_itemStateChanged();
919                         }
920                 });
921
922                 checkboxPosterSizeKeepAspectRatio = new Checkbox();
923                 checkboxPosterSizeKeepAspectRatio.setLabel(Lib
924                                 .getMessage("KeepAspectRatio"));
925                 checkboxPosterSizeKeepAspectRatio.addItemListener(new ItemListener() {
926                         public void itemStateChanged(ItemEvent e) {
927                                 checkboxPosterSizeKeepAspectRatio_itemStateChanged();
928                         }
929                 });
930
931                 labelPaperSize = new Label();
932                 labelPaperSize.setText(Lib.getMessage("PaperSize"));
933
934                 choicePaperSize = new Choice();
935                 choicePaperSize_initialize();
936                 choicePaperSize.addItemListener(new ItemListener() {
937                         public void itemStateChanged(ItemEvent e) {
938                                 choicePaperSize_itemStateChanged();
939                         }
940                 });
941
942                 numberFieldPaperWidth = new NumberField();
943                 numberField_initialize(numberFieldPaperWidth);
944                 numberFieldPaperWidth.addActionListener(new ActionListener() {
945                         public void actionPerformed(ActionEvent e) {
946                                 numberFieldPaperSize_actionPerformed(e.getSource());
947                         }
948                 });
949
950                 numberFieldPaperHeight = new NumberField();
951                 numberField_initialize(numberFieldPaperHeight);
952                 numberFieldPaperHeight.addActionListener(new ActionListener() {
953                         public void actionPerformed(ActionEvent e) {
954                                 numberFieldPaperSize_actionPerformed(e.getSource());
955                         }
956                 });
957
958                 choicePaperSizeUnit = new Choice();
959                 choicePaperSizeUnit_initialize();
960                 choicePaperSizeUnit.addItemListener(new ItemListener() {
961                         public void itemStateChanged(ItemEvent e) {
962                                 choicePaperSizeUnit_itemStateChanged();
963                         }
964                 });
965
966                 labelPaperMargin = new Label();
967                 labelPaperMargin.setText(Lib.getMessage("Margin"));
968
969                 numberFieldPaperMargin = new NumberField();
970                 numberField_initialize(numberFieldPaperMargin);
971                 numberFieldPaperMargin.addActionListener(new ActionListener() {
972                         public void actionPerformed(ActionEvent e) {
973                                 numberFieldPaperMargin_actionPerformed(e.getSource());
974                         }
975                 });
976
977                 choicePaperMarginUnit = new Choice();
978                 choicePaperMarginUnit_initialize();
979                 choicePaperMarginUnit.addItemListener(new ItemListener() {
980                         public void itemStateChanged(ItemEvent e) {
981                                 choicePaperMarginUnit_itemStateChanged();
982                         }
983                 });
984
985                 checkboxPaperRotate = new Checkbox();
986                 checkboxPaperRotate.setLabel(Lib.getMessage("RotatePaper"));
987                 checkboxPaperRotate.addItemListener(new ItemListener() {
988                         public void itemStateChanged(ItemEvent e) {
989                                 checkboxPaperRotate_itemStateChanged();
990                         }
991                 });
992
993                 buttonPaperOptimize = new Button();
994                 buttonPaperOptimize.setLabel(Lib.getMessage("Optimize"));
995                 buttonPaperOptimize.setEnabled(false);
996                 buttonPaperOptimize.addActionListener(new ActionListener() {
997                         public void actionPerformed(ActionEvent e) {
998                                 buttonPaperOptimize_actionPerformed();
999                         }
1000                 });
1001
1002                 labelPreview = new Label();
1003                 labelPreview.setText(Lib.getMessage("Preview"));
1004
1005                 labelOutputPaperCount = new Label();
1006                 labelOutputPaperCount.setText(Lib.getMessage("OutputPaperCount"));
1007
1008                 numberFieldOutputPaperCount = new NumberField();
1009                 numberFieldOutputPaperCount.setColumns(7);
1010                 numberFieldOutputPaperCount.setDisplayDigit(0);
1011                 numberFieldOutputPaperCount.setEditable(false);
1012
1013                 canvasPreview = new CanvasPreview();
1014                 canvasPreview.setMaximumSize(new Dimension(500, 400));
1015                 canvasPreview.setMinimumSize(new Dimension(0, 0));
1016                 canvasPreview.setPreferredSize(new Dimension(500, 200));
1017
1018                 labelOutputFileName = new Label();
1019                 labelOutputFileName.setText(Lib.getMessage("OutputFileName"));
1020
1021                 textFieldOutputFileName = new TextField();
1022                 textFieldOutputFileName.setColumns(40);
1023
1024                 labelMessage = new Label();
1025
1026                 buttonOutput = new Button();
1027                 buttonOutput.setLabel(Lib.getMessage("Output"));
1028                 buttonOutput.addActionListener(new ActionListener() {
1029                         public void actionPerformed(ActionEvent e) {
1030                                 buttonOutput_actionPerformed();
1031                         }
1032                 });
1033
1034                 menuFile.add(menuItemNewWindow);
1035                 menuFile.add(menuItemOpenFile);
1036                 menuFile.addSeparator();
1037                 menuFile.add(menuItemCloseWindow);
1038                 menuFile.add(menuItemOutput);
1039
1040                 menuBar.add(menuFile);
1041
1042                 Panel panelSrcFile = new Panel();
1043                 panelSrcFile.setLayout(new FlowLayout(FlowLayout.LEFT));
1044                 panelSrcFile.add(labelSrcFile);
1045                 panelSrcFile.add(textFieldSrcFileName);
1046                 panelSrcFile.add(labelSrcFileType);
1047                 panelSrcFile.add(buttonSrcFileChange);
1048
1049                 Panel panelSrc = new Panel();
1050                 panelSrc.setLayout(new FlowLayout(FlowLayout.LEFT));
1051                 panelSrc.add(labelSrcPageNum);
1052                 panelSrc.add(choiceSrcPageNum);
1053                 panelSrc.add(labelSrcImageSize);
1054                 panelSrc.add(numberFieldSrcImageWidth);
1055                 panelSrc.add(numberFieldSrcImageHeight);
1056                 panelSrc.add(choiceSrcImageSizeUnit);
1057
1058                 Panel panelSrcRect = new Panel();
1059                 panelSrcRect.setLayout(new FlowLayout(FlowLayout.LEFT));
1060                 panelSrcRect.add(labelSrcRect);
1061                 panelSrcRect.add(checkboxSrcRectWholeOfPage);
1062                 panelSrcRect.add(numberFieldSrcLeft);
1063                 panelSrcRect.add(numberFieldSrcBottom);
1064                 panelSrcRect.add(numberFieldSrcRight);
1065                 panelSrcRect.add(numberFieldSrcTop);
1066                 panelSrcRect.add(choiceSrcRectUnit);
1067
1068                 Panel panelPosterSize = new Panel();
1069                 panelPosterSize.setLayout(new FlowLayout(FlowLayout.LEFT));
1070                 panelPosterSize.add(labelPosterSize);
1071                 panelPosterSize.add(choicePosterSize);
1072                 panelPosterSize.add(numberFieldPosterWidth);
1073                 panelPosterSize.add(numberFieldPosterHeight);
1074                 panelPosterSize.add(choicePosterSizeUnit);
1075                 panelPosterSize.add(checkboxPosterSizeKeepAspectRatio);
1076
1077                 Panel panelPaperSize = new Panel();
1078                 panelPaperSize.setLayout(new FlowLayout(FlowLayout.LEFT));
1079                 panelPaperSize.add(labelPaperSize);
1080                 panelPaperSize.add(choicePaperSize);
1081                 panelPaperSize.add(numberFieldPaperWidth);
1082                 panelPaperSize.add(numberFieldPaperHeight);
1083                 panelPaperSize.add(choicePaperSizeUnit);
1084                 panelPaperSize.add(labelPaperMargin);
1085                 panelPaperSize.add(numberFieldPaperMargin);
1086                 panelPaperSize.add(choicePaperMarginUnit);
1087                 panelPaperSize.add(checkboxPaperRotate);
1088                 panelPaperSize.add(buttonPaperOptimize);
1089
1090                 Panel panelPreviewText = new Panel();
1091                 panelPreviewText.setLayout(new FlowLayout(FlowLayout.LEFT));
1092                 panelPreviewText.add(labelPreview);
1093                 panelPreviewText.add(labelOutputPaperCount);
1094                 panelPreviewText.add(numberFieldOutputPaperCount);
1095
1096                 Panel panelOutputFileName = new Panel();
1097                 panelOutputFileName.setLayout(new FlowLayout(FlowLayout.LEFT));
1098                 panelOutputFileName.add(labelOutputFileName);
1099                 panelOutputFileName.add(textFieldOutputFileName);
1100
1101                 Panel panelOutput = new Panel();
1102                 panelOutput.setLayout(new FlowLayout(FlowLayout.RIGHT));
1103                 panelOutput.add(labelMessage);
1104                 panelOutput.add(buttonOutput);
1105
1106                 this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
1107                 this.setMenuBar(menuBar);
1108                 this.add(panelSrcFile);
1109                 this.add(panelSrc);
1110                 this.add(panelSrcRect);
1111                 this.add(panelPosterSize);
1112                 this.add(panelPaperSize);
1113                 this.add(panelPreviewText);
1114                 this.add(canvasPreview);
1115                 this.add(panelOutputFileName);
1116                 this.add(panelOutput);
1117         }
1118
1119         private void mainFrame_initialize() {
1120
1121                 this.preferredPosterWidth = PaperSize.A1.getWidth();
1122                 this.preferredPosterHeight = PaperSize.A1.getHeight();
1123                 updatePosterSize();
1124                 numberFieldPosterSize_setValue();
1125                 choicePosterSize.select(choicePosterSize.getItemCount() - 1);
1126                 choicePosterSize_itemStateChanged();
1127                 checkboxPosterSizeKeepAspectRatio.setState(true);
1128                 checkboxPosterSizeKeepAspectRatio_itemStateChanged();
1129
1130                 choicePaperSize.select(0);
1131                 choicePaperSize_itemStateChanged();
1132                 choicePaperSizeUnit.select(0);
1133                 choicePaperSizeUnit_itemStateChanged();
1134                 this.paperMargin = 72;
1135                 numberFieldPaperMargin_setValue();
1136                 choicePaperMarginUnit.select(0);
1137                 choicePaperMarginUnit_itemStateChanged();
1138
1139                 textFieldOutputFileName.setText(String.format("{pwd}%s%s_{input}_{date}.pdf", File.separator, Lib.APP_LOWERTITLE));
1140
1141                 simulateOutput();
1142         }
1143
1144         public MainFrame() {
1145                 super();
1146                 mainFrame_initializeComponents();
1147                 mainFrame_initialize();
1148         }
1149 }