OSDN Git Service

MAVEN構成
[importpicture/importpicture.git] / src / main / java / osm / jp / gpx / matchtime / gui / CardExifPerform.java
1 package osm.jp.gpx.matchtime.gui;
2
3 import java.awt.BorderLayout;
4 import java.awt.event.ActionEvent;
5 import javax.swing.BoxLayout;
6 import javax.swing.JButton;
7 import javax.swing.JLabel;
8 import javax.swing.JPanel;
9 import javax.swing.JTabbedPane;
10 import osm.jp.gpx.AppParameters;
11 import osm.jp.gpx.ImportPicture;
12 import static osm.jp.gpx.matchtime.gui.AdjustTime.dfjp;
13 import static osm.jp.gpx.matchtime.gui.AdjustTime.i18n;
14
15 /**
16  * 実行パネル
17  * @author yuu
18  */
19 public class CardExifPerform extends Card  implements PanelAction {
20     ParameterPanelTime arg_basetime;        // 画像の基準時刻:
21     ParameterPanelGpx arg_gpxFile;          // GPX file or Folder
22     ParameterPanelOutput arg_output;        // EXIF & 書き出しフォルダ
23     JButton doButton;       // [処理実行]ボタン
24     
25     /**
26      * コンストラクタ
27      * @param tabbe parent panel
28      * @param arg_basetime              // 開始画像の基準時刻:
29      * @param arg_gpxFile               // GPX file or Folder:
30      * @param arg_output                // EXIF & 書き出しフォルダ
31      * @param text
32      * @param pre
33      * @param next
34      */
35     public CardExifPerform(
36             JTabbedPane tabbe,
37             ParameterPanelTime arg_basetime, ParameterPanelGpx arg_gpxFile, ParameterPanelOutput arg_output,
38             String text,
39             int pre, int next
40     ) {
41         super(tabbe, text, pre, next);
42         this.arg_basetime = arg_basetime;
43         this.arg_gpxFile = arg_gpxFile;
44         this.arg_output = arg_output;
45         
46         SymAction lSymAction = new SymAction();
47         JPanel argsPanel = new JPanel();
48         argsPanel.setLayout(new BoxLayout(argsPanel, BoxLayout.PAGE_AXIS));
49         
50         // 5. EXIF変換を行うかどうかを選択してください。
51         //    - EXIF変換を行う場合には、変換ファイルを出力するフォルダも指定する必要があります。
52         //    - 出力フォルダには、書き込み権限と、十分な空き容量が必要です。
53         JLabel label5 = new JLabel();
54         label5.setText(
55             String.format(
56                 "<html><p>5. %s</p><ul><li>%s</li><li>%s</li></ul>",
57                 i18n.getString("label.500"),
58                 i18n.getString("label.501"),
59                 i18n.getString("label.502")
60             )
61         );
62         argsPanel.add(packLine(label5, new JPanel()));
63         
64         // チェックボックス "IMGの変換をする"
65         if (arg_output.outputIMG != null) {
66             arg_output.outputIMG.addActionListener(lSymAction);
67             argsPanel.add(arg_output.outputIMG);
68         }
69
70         // チェックボックス "IMGの変換をする"
71         if (arg_output.outputIMG_all != null) {
72             argsPanel.add(arg_output.outputIMG_all);
73         }
74
75         // チェックボックス "EXIFの変換をする"
76         if (arg_output.exifON != null) {
77             argsPanel.add(arg_output.exifON);
78         }
79
80         // チェックボックス "ポイントマーカー<WPT>をGPXファイルに出力する"
81         if (arg_output.gpxOutputWpt != null) {
82             argsPanel.add(arg_output.gpxOutputWpt);
83         }
84         
85         // チェックボックス "ソースGPXの<MAGVAR>を無視する"
86         if (arg_output.gpxOverwriteMagvar != null) {
87             argsPanel.add(arg_output.gpxOverwriteMagvar);
88         }
89
90         // チェックボックス "出力GPXに[SPEED]を上書きする"
91         if (arg_output.gpxOutputSpeed != null) {
92             argsPanel.add(arg_output.gpxOutputSpeed);
93         }
94
95         // [処理実行]ボタン
96         doButton = new JButton(
97             i18n.getString("button.execute"),
98             AdjustTime.createImageIcon("images/media_playback_start.png")
99         );
100         argsPanel.add(doButton);
101                 
102         this.mainPanel.add(argsPanel, BorderLayout.CENTER);
103
104         //{{REGISTER_LISTENERS
105         doButton.addActionListener(lSymAction);
106         //}}
107     }
108     
109     class SymAction implements java.awt.event.ActionListener {
110         @Override
111         public void actionPerformed(java.awt.event.ActionEvent event) {
112             Object object = event.getSource();
113             if (object == doButton) {
114                 doButton_Action(event);
115             }
116             else if (object == arg_output.outputIMG) {
117                 outputIMG_Action(event);
118             }
119         }
120     }
121     
122     /**
123      * checkbox[IMG変換]を変更した場合のアクション
124      *  ON ー> IMG出力フォルダのフィールドを有効にする
125      *  OFF -> IMG出力フォルダのフィールドを無効にする
126      * @param event
127      */
128     void outputIMG_Action (ActionEvent event) {
129         setEnabled(isEnabled());
130     }
131     
132     /**
133      * [実行]ボタンをクリックしたときの動作
134      * @param event
135      */
136     @SuppressWarnings("UseSpecificCatch")
137     void doButton_Action(java.awt.event.ActionEvent event) {
138         doButton.setEnabled(false);
139         
140         ParameterPanelImageFile arg_baseTimeImg = arg_basetime.imageFile;  // 基準時刻画像
141         ParameterPanelFolder arg_srcFolder = arg_baseTimeImg.paramDir;
142         
143         try {
144             AppParameters params = new AppParameters();
145
146             String[] argv = new String[0];
147             params.setProperty(AppParameters.GPX_NO_FIRST_NODE, String.valueOf(arg_gpxFile.isNoFirstNodeSelected()));
148             params.setProperty(AppParameters.GPX_REUSE, String.valueOf(arg_gpxFile.isGpxReuseSelected()));
149             params.setProperty(AppParameters.GPX_SOURCE_FOLDER, arg_gpxFile.getText());
150             if ((arg_basetime.exifBase != null) && arg_basetime.exifBase.isSelected()) {
151                 params.setProperty(AppParameters.GPX_BASETIME, "EXIF_TIME");
152             }
153             else {
154                 params.setProperty(AppParameters.GPX_BASETIME, "FILE_UPDATE");
155             }
156             params.setProperty(AppParameters.IMG_SOURCE_FOLDER, arg_srcFolder.getText());
157             params.setProperty(AppParameters.IMG_BASE_FILE, arg_baseTimeImg.getText());
158             params.setProperty(AppParameters.IMG_TIME, ImportPicture.toUTCString(dfjp.parse(arg_basetime.getText())));
159             params.setProperty(AppParameters.IMG_OUTPUT, String.valueOf(arg_output.outputIMG.isSelected()));
160             params.setProperty(AppParameters.IMG_OUTPUT_ALL, String.valueOf(arg_output.outputIMG_all.isSelected()));
161             params.setProperty(AppParameters.IMG_OUTPUT_FOLDER, arg_output.getText());
162             params.setProperty(AppParameters.IMG_OUTPUT_EXIF, String.valueOf(arg_output.exifON.isSelected()));
163             params.setProperty(AppParameters.GPX_OVERWRITE_MAGVAR, String.valueOf(arg_output.gpxOverwriteMagvar.isSelected()));
164             params.setProperty(AppParameters.GPX_OUTPUT_SPEED, String.valueOf(arg_output.gpxOutputSpeed.isSelected()));
165             params.setProperty(AppParameters.GPX_OUTPUT_WPT, String.valueOf(arg_output.gpxOutputWpt.isSelected()));
166             params.store();
167         }
168         catch(Exception e) {
169             e.printStackTrace();
170         }
171
172         (new DoDialog(new String[0])).setVisible(true);
173                 
174         doButton.setEnabled(true);
175     }
176
177     /**
178      *  入力条件が満たされているかどうか
179      * @return
180      */
181     @Override
182     public boolean isEnable() {
183        return (arg_basetime.isEnable() && arg_gpxFile.isEnable());
184     }
185     
186     @Override
187     @SuppressWarnings("empty-statement")
188     public void openAction() {
189        ; // 何もしない
190     }
191 }