1 package osm.jp.gpx.matchtime.gui;
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;
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; // [処理実行]ボタン
27 * @param tabbe parent panel
28 * @param arg_basetime // 開始画像の基準時刻:
29 * @param arg_gpxFile // GPX file or Folder:
30 * @param arg_output // EXIF & 書き出しフォルダ
35 public CardExifPerform(
37 ParameterPanelTime arg_basetime, ParameterPanelGpx arg_gpxFile, ParameterPanelOutput arg_output,
41 super(tabbe, text, pre, next);
42 this.arg_basetime = arg_basetime;
43 this.arg_gpxFile = arg_gpxFile;
44 this.arg_output = arg_output;
46 SymAction lSymAction = new SymAction();
47 JPanel argsPanel = new JPanel();
48 argsPanel.setLayout(new BoxLayout(argsPanel, BoxLayout.PAGE_AXIS));
50 // 5. EXIF変換を行うかどうかを選択してください。
51 // - EXIF変換を行う場合には、変換ファイルを出力するフォルダも指定する必要があります。
52 // - 出力フォルダには、書き込み権限と、十分な空き容量が必要です。
53 JLabel label5 = new JLabel();
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")
62 argsPanel.add(packLine(label5, new JPanel()));
64 // チェックボックス "IMGの変換をする"
65 if (arg_output.outputIMG != null) {
66 arg_output.outputIMG.addActionListener(lSymAction);
67 argsPanel.add(arg_output.outputIMG);
70 // チェックボックス "IMGの変換をする"
71 if (arg_output.outputIMG_all != null) {
72 argsPanel.add(arg_output.outputIMG_all);
75 // チェックボックス "EXIFの変換をする"
76 if (arg_output.exifON != null) {
77 argsPanel.add(arg_output.exifON);
80 // チェックボックス "ポイントマーカー<WPT>をGPXファイルに出力する"
81 if (arg_output.gpxOutputWpt != null) {
82 argsPanel.add(arg_output.gpxOutputWpt);
85 // チェックボックス "ソースGPXの<MAGVAR>を無視する"
86 if (arg_output.gpxOverwriteMagvar != null) {
87 argsPanel.add(arg_output.gpxOverwriteMagvar);
90 // チェックボックス "出力GPXに[SPEED]を上書きする"
91 if (arg_output.gpxOutputSpeed != null) {
92 argsPanel.add(arg_output.gpxOutputSpeed);
96 doButton = new JButton(
97 i18n.getString("button.execute"),
98 AdjustTime.createImageIcon("images/media_playback_start.png")
100 argsPanel.add(doButton);
102 this.mainPanel.add(argsPanel, BorderLayout.CENTER);
104 //{{REGISTER_LISTENERS
105 doButton.addActionListener(lSymAction);
109 class SymAction implements java.awt.event.ActionListener {
111 public void actionPerformed(java.awt.event.ActionEvent event) {
112 Object object = event.getSource();
113 if (object == doButton) {
114 doButton_Action(event);
116 else if (object == arg_output.outputIMG) {
117 outputIMG_Action(event);
123 * checkbox[IMG変換]を変更した場合のアクション
124 * ON ー> IMG出力フォルダのフィールドを有効にする
125 * OFF -> IMG出力フォルダのフィールドを無効にする
128 void outputIMG_Action (ActionEvent event) {
129 setEnabled(isEnabled());
133 * [実行]ボタンをクリックしたときの動作
136 @SuppressWarnings("UseSpecificCatch")
137 void doButton_Action(java.awt.event.ActionEvent event) {
138 doButton.setEnabled(false);
140 ParameterPanelImageFile arg_baseTimeImg = arg_basetime.imageFile; // 基準時刻画像
141 ParameterPanelFolder arg_srcFolder = arg_baseTimeImg.paramDir;
144 AppParameters params = new AppParameters();
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");
154 params.setProperty(AppParameters.GPX_BASETIME, "FILE_UPDATE");
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()));
172 (new DoDialog(new String[0])).setVisible(true);
174 doButton.setEnabled(true);
182 public boolean isEnable() {
183 return (arg_basetime.isEnable() && arg_gpxFile.isEnable());
187 @SuppressWarnings("empty-statement")
188 public void openAction() {