OSDN Git Service

fixed: GUIを一新した
authorhaya4 <hayashi.yuu@gmail.com>
Tue, 22 Oct 2019 02:28:02 +0000 (11:28 +0900)
committerhaya4 <hayashi.yuu@gmail.com>
Tue, 22 Oct 2019 02:28:02 +0000 (11:28 +0900)
src/osm/jp/gpx/matchtime/gui/AdjustTime.java
src/osm/jp/gpx/matchtime/gui/CardExifPerform.java [new file with mode: 0644]
src/osm/jp/gpx/matchtime/gui/CardGpxFile.java [moved from src/osm/jp/gpx/matchtime/gui/restamp/CardGpxFile.java with 75% similarity]
src/osm/jp/gpx/matchtime/gui/ParameterPanelFolder.java
src/osm/jp/gpx/matchtime/gui/ParameterPanelGpx.java
src/osm/jp/gpx/matchtime/gui/ParameterPanelOutput.java [new file with mode: 0644]
test/AdjustTime.ini

index 926e28e..a317344 100644 (file)
@@ -2,7 +2,6 @@ package osm.jp.gpx.matchtime.gui;
 
 import osm.jp.gpx.matchtime.gui.restamp.RestampDialog;
 import java.awt.*;
-import java.awt.event.ActionEvent;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.ResourceBundle;
@@ -12,7 +11,6 @@ import java.util.logging.Logger;
 import javax.swing.*;
 import javax.swing.event.DocumentEvent;
 import osm.jp.gpx.*;
-import osm.jp.gpx.matchtime.gui.restamp.CardGpxFile;
 import osm.jp.gpx.matchtime.gui.restamp.CardImageFile;
 import osm.jp.gpx.matchtime.gui.restamp.CardSourceFolder;
 
@@ -23,8 +21,8 @@ import osm.jp.gpx.matchtime.gui.restamp.CardSourceFolder;
 public class AdjustTime extends JFrame
 {
     public static final String PROGRAM_NAME = "AdjustTime for JOSM";
-    public static final String PROGRAM_VARSION = "5.01";
-    public static final String PROGRAM_UPDATE = "2019/09/11";
+    public static final String PROGRAM_VARSION = "5.02";
+    public static final String PROGRAM_UPDATE = "2019/10/22";
 
     AppParameters params;
     public static SimpleDateFormat dfjp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
@@ -36,26 +34,6 @@ public class AdjustTime extends JFrame
     //{{DECLARE_CONTROLS
     JTabbedPane cardPanel;       // ウィザード形式パネル(タブ型)
     Card[] cards;
-    int cardPanelNo = 0;
-    JPanel argsPanel;          // パラメータ設定パネル       (上部)
-    JScrollPane imageSPane;    // スクロールパネル
-    JLabel imageLabel;         // 基準時刻画像表示
-    //JCheckBox noFirstNode;   // GPX: <trkseg>セグメントの最初の1ノードは無視する。 {ON | OFF}
-    //JCheckBox gpxReuse;      // 生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も対象にする。 {ON | OFF}
-    JTextArea textArea;                // 実行結果表示領域
-
-    //ParameterPanel arg3_basetime;    // 基準時刻:
-    JCheckBox outputIMG;       // IMGの変換 する/しない
-    JCheckBox outputIMG_all;   // 'out of GPX time'でもIMGの変換をする {ON | OFF}
-    JCheckBox exifON;          // EXIF 書き出しモード / !(EXIFの書き換えはしない)
-    JCheckBox gpxOutputWpt;    // GPXに<WPT>を書き出す
-    JCheckBox gpxOverwriteMagvar;      // ソースGPXの<MAGVAR>を無視する
-    JCheckBox gpxOutputSpeed;  // GPXに<SPEED>を書き出す
-    ParameterPanelFolder arg5_outputFolder;       // EXIF 書き出しフォルダ
-    
-    JPanel buttonPanel;                // ボタンパネル   (下部)
-    
-    JButton doButton;       // [処理実行]ボタン
     //}}
 
     //---入力フィールド----------------------------------------------------
@@ -63,6 +41,7 @@ public class AdjustTime extends JFrame
     ParameterPanelImageFile arg2_baseTimeImg;   // 開始画像ファイルパス
     ParameterPanelTime arg2_basetime;       // 開始画像の基準時刻:
     ParameterPanelGpx arg3_gpxFile;         // GPX file or Folder
+    ParameterPanelOutput arg4_output;       // EXIF & 書き出しフォルダ
 
     //{{DECLARE_MENUS
     java.awt.MenuBar mainMenuBar;
@@ -108,12 +87,6 @@ public class AdjustTime extends JFrame
             else if (object == miExit) {
                 miExit_Action(event);
             }
-            else if (object == outputIMG) {
-               outputIMG_Action(event);
-            }
-            else if (object == doButton) {
-               doButton_Action(event);
-            }
         }
     }
     
@@ -251,7 +224,7 @@ public class AdjustTime extends JFrame
             
             // 3. GPXファイルを選択
             CardGpxFile card = new CardGpxFile(
-                    cardPanel, arg3_gpxFile, (Window)this,
+                    cardPanel, arg3_gpxFile,
                      AdjustTime.i18n.getString("tab.400"), 1, 3);
             cardPanel.addTab(card.getTitle(), card);
             cardPanel.setEnabledAt(cardNo, false);
@@ -260,90 +233,51 @@ public class AdjustTime extends JFrame
         }
         
         //---------------------------------------------------------------------
-        // 4.EXIF更新設定画面
+        // 4.EXIF更新設定画面 & 実行画面
         {
-            Card card = new Card(cardPanel, i18n.getString("tab.500"), 3, -1);
-            cardPanel.addTab(card.getTitle(), card);
-            cards[cardNo] = card;
-            
-            // 5. EXIF変換を行うかどうかを選択してください。
-            //    - EXIF変換を行う場合には、変換ファイルを出力するフォルダも指定する必要があります。
-            //    - 出力フォルダには、書き込み権限と、十分な空き容量が必要です。
-            JLabel label5 = new JLabel();
-            label5.setText(
-                String.format(
-                    "<html><p>5. %s</p><ul><li>%s</li><li>%s</li></ul>",
-                    i18n.getString("label.500"),
-                    i18n.getString("label.501"),
-                    i18n.getString("label.502")
-                )
+            // 4. ファイル変換・実行パラメータ
+            // "出力フォルダ: "
+            arg4_output = new ParameterPanelOutput(
+                i18n.getString("label.530") + ": ", 
+                params.getProperty(AppParameters.IMG_OUTPUT_FOLDER)
+            );
+            arg4_output.argField.getDocument().addDocumentListener(
+                new SimpleDocumentListener() {
+                    @Override
+                    public void update(DocumentEvent e) {
+                        toEnable(3, arg4_output.isEnable());
+                    }
+                }
             );
-            card.mainPanel.add(label5, BorderLayout.NORTH);
-
-            JPanel tmpPanel5 = new JPanel();
-            tmpPanel5.setLayout(new BoxLayout(tmpPanel5, BoxLayout.Y_AXIS));
 
             // "IMGの変換をする"
-            outputIMG = new JCheckBox(
-                i18n.getString("label.510"), 
-                Boolean.parseBoolean(params.getProperty(AppParameters.IMG_OUTPUT))
-            );
-            tmpPanel5.add(outputIMG);
+            arg4_output.addCheckChangeImage(i18n.getString("label.510"), params);
 
             // "GPXファイル時間外のファイルもコピーする"
-            outputIMG_all = new JCheckBox(
-                i18n.getString("label.520"),
-                Boolean.parseBoolean(params.getProperty(AppParameters.IMG_OUTPUT_ALL))
-            );
-            tmpPanel5.add(outputIMG_all);
-
-            // "出力フォルダ: "
-            arg5_outputFolder = new ParameterPanelFolder(
-                i18n.getString("label.530") + ": ",
-                params.getProperty(AppParameters.IMG_OUTPUT_FOLDER)
-            );
-            tmpPanel5.add(arg5_outputFolder);
+            arg4_output.addCheckOutofGpxTime(i18n.getString("label.520"), params);
 
             // "EXIFの変換をする"
-            exifON = new JCheckBox(
-                i18n.getString("label.540"),
-                Boolean.parseBoolean(params.getProperty(AppParameters.IMG_OUTPUT_EXIF))
-            );
-            tmpPanel5.add(exifON);
+            arg4_output.addCheckOutputExif(i18n.getString("label.540"), params);
 
             // "ポイントマーカー<WPT>をGPXファイルに出力する"
-            gpxOutputWpt = new JCheckBox(
-                i18n.getString("label.550"),
-                Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OUTPUT_WPT))
-            );
-            gpxOutputWpt.setEnabled(true);
-            tmpPanel5.add(gpxOutputWpt);
+            arg4_output.addCheckOutputWpt(i18n.getString("label.550"), params);
 
             // "ソースGPXの<MAGVAR>を無視する"
-            gpxOverwriteMagvar = new JCheckBox(
-                i18n.getString("label.560"),
-                Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OVERWRITE_MAGVAR))
-            );
-            gpxOverwriteMagvar.setEnabled(true);
-            tmpPanel5.add(gpxOverwriteMagvar);
+            arg4_output.addCheckIgnoreMagvar(i18n.getString("label.560"), params);
 
-            // "出力GPXに<SPEED>を上書きする"
-            gpxOutputSpeed = new JCheckBox(
-                i18n.getString("label.570"),
-                Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OUTPUT_SPEED))
-            );
-            gpxOutputSpeed.setEnabled(true);
-            tmpPanel5.add(gpxOutputSpeed);
-
-            card.mainPanel.add(tmpPanel5, BorderLayout.CENTER);
+            // "出力GPXに[SPEED]を上書きする"
+            arg4_output.addCheckOutputSpeed(i18n.getString("label.570"), params);
 
-            // "処理実行"
-            doButton = new JButton(
-                i18n.getString("button.execute"),
-                AdjustTime.createImageIcon("images/media_playback_start.png")
+            // パネル表示
+            CardExifPerform card = new CardExifPerform(
+                cardPanel, 
+                arg2_basetime, arg3_gpxFile, arg4_output,
+                AdjustTime.i18n.getString("tab.500"),
+                2, -1
             );
-            card.mainPanel.add(doButton, BorderLayout.SOUTH);
-            cardNo++;
+            cardPanel.addTab(card.getTitle(), card);
+            cardPanel.setEnabledAt(cardNo, false);
+            cards[cardNo] = card;
         }
 
         //---------------------------------------------------------------------
@@ -382,10 +316,6 @@ public class AdjustTime extends JFrame
         miRestamp.addActionListener(lSymAction);
         miExit.addActionListener(lSymAction);
         arg2_baseTimeImg.openButton.addActionListener(lSymAction);
-        doButton.addActionListener(lSymAction);
-        outputIMG_all.addActionListener(lSymAction);
-        exifON.addActionListener(lSymAction);
-        gpxOutputSpeed.addActionListener(lSymAction);
         //}}
     }
     
@@ -477,15 +407,7 @@ public class AdjustTime extends JFrame
         }
     }
 
-    ImageIcon refImage;
-    
-    /**
-     * ソースディレクトリが選択された時のアクション
-     * → AdjustTime.ini に書き込む
-     * @param ev
-     */
-    public void selectSource_Action(ActionEvent ev) {
-    }
+    //ImageIcon refImage;
     
     /** Returns an ImageIcon, or null if the path was invalid.
      * @param path
@@ -499,54 +421,4 @@ public class AdjustTime extends JFrame
             return null;
         }
     }
-    
-    /**
-     * checkbox[IMG変換]を変更した場合のアクション
-     *         ON ー> IMG出力フォルダのフィールドを有効にする
-     *  OFF -> IMG出力フォルダのフィールドを無効にする
-     * @param event
-     */
-    void outputIMG_Action (ActionEvent event) {
-        arg5_outputFolder.setEnabled(outputIMG.isEnabled());
-    }
-
-    /**
-     * [実行]ボタンをクリックしたときの動作
-     * @param event
-     */
-    @SuppressWarnings("UseSpecificCatch")
-    void doButton_Action(java.awt.event.ActionEvent event) {
-       doButton.setEnabled(false);
-
-       String[] argv = new String[0];
-        this.params.setProperty(AppParameters.GPX_NO_FIRST_NODE, String.valueOf(arg3_gpxFile.isNoFirstNodeSelected()));
-        this.params.setProperty(AppParameters.GPX_REUSE, String.valueOf(arg3_gpxFile.isGpxReuseSelected()));
-        this.params.setProperty(AppParameters.GPX_SOURCE_FOLDER, arg3_gpxFile.getText());
-        if ((arg2_basetime.exifBase != null) && arg2_basetime.exifBase.isSelected()) {
-            this.params.setProperty(AppParameters.GPX_BASETIME, "EXIF_TIME");
-        }
-        else {
-            this.params.setProperty(AppParameters.GPX_BASETIME, "FILE_UPDATE");
-        }
-        try {
-            this.params.setProperty(AppParameters.IMG_SOURCE_FOLDER, arg1_srcFolder.getText());
-            this.params.setProperty(AppParameters.IMG_BASE_FILE, arg2_baseTimeImg.getText());
-            this.params.setProperty(AppParameters.IMG_TIME, ImportPicture.toUTCString(dfjp.parse(arg2_basetime.getText())));
-            this.params.setProperty(AppParameters.IMG_OUTPUT, String.valueOf(outputIMG.isSelected()));
-            this.params.setProperty(AppParameters.IMG_OUTPUT_FOLDER, arg5_outputFolder.getText());
-            this.params.setProperty(AppParameters.IMG_OUTPUT_ALL, String.valueOf(outputIMG_all.isSelected()));
-            this.params.setProperty(AppParameters.IMG_OUTPUT_EXIF, String.valueOf(exifON.isSelected()));
-            this.params.setProperty(AppParameters.GPX_OVERWRITE_MAGVAR, String.valueOf(gpxOverwriteMagvar.isSelected()));
-            this.params.setProperty(AppParameters.GPX_OUTPUT_SPEED, String.valueOf(gpxOutputSpeed.isSelected()));
-            this.params.setProperty(AppParameters.GPX_OUTPUT_WPT, String.valueOf(gpxOutputWpt.isSelected()));
-            this.params.store();
-        }
-        catch(Exception e) {
-            e.printStackTrace();
-        }
-
-        (new DoDialog(argv)).setVisible(true);
-               
-       doButton.setEnabled(true);
-    }
 }
diff --git a/src/osm/jp/gpx/matchtime/gui/CardExifPerform.java b/src/osm/jp/gpx/matchtime/gui/CardExifPerform.java
new file mode 100644 (file)
index 0000000..e6f11cf
--- /dev/null
@@ -0,0 +1,191 @@
+package osm.jp.gpx.matchtime.gui;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
+import osm.jp.gpx.AppParameters;
+import osm.jp.gpx.ImportPicture;
+import static osm.jp.gpx.matchtime.gui.AdjustTime.dfjp;
+import static osm.jp.gpx.matchtime.gui.AdjustTime.i18n;
+
+/**
+ * 実行パネル
+ * @author yuu
+ */
+public class CardExifPerform extends Card  implements PanelAction {
+    ParameterPanelTime arg_basetime;        // 画像の基準時刻:
+    ParameterPanelGpx arg_gpxFile;          // GPX file or Folder
+    ParameterPanelOutput arg_output;        // EXIF & 書き出しフォルダ
+    JButton doButton;       // [処理実行]ボタン
+    
+    /**
+     * コンストラクタ
+     * @param tabbe parent panel
+     * @param arg_basetime             // 開始画像の基準時刻:
+     * @param arg_gpxFile              // GPX file or Folder:
+     * @param arg_output                // EXIF & 書き出しフォルダ
+     * @param text
+     * @param pre
+     * @param next
+     */
+    public CardExifPerform(
+            JTabbedPane tabbe,
+            ParameterPanelTime arg_basetime, ParameterPanelGpx arg_gpxFile, ParameterPanelOutput arg_output,
+            String text,
+            int pre, int next
+    ) {
+        super(tabbe, text, pre, next);
+        this.arg_basetime = arg_basetime;
+        this.arg_gpxFile = arg_gpxFile;
+        this.arg_output = arg_output;
+        
+        SymAction lSymAction = new SymAction();
+        JPanel argsPanel = new JPanel();
+        argsPanel.setLayout(new BoxLayout(argsPanel, BoxLayout.PAGE_AXIS));
+        
+        // 5. EXIF変換を行うかどうかを選択してください。
+        //    - EXIF変換を行う場合には、変換ファイルを出力するフォルダも指定する必要があります。
+        //    - 出力フォルダには、書き込み権限と、十分な空き容量が必要です。
+        JLabel label5 = new JLabel();
+        label5.setText(
+            String.format(
+                "<html><p>5. %s</p><ul><li>%s</li><li>%s</li></ul>",
+                i18n.getString("label.500"),
+                i18n.getString("label.501"),
+                i18n.getString("label.502")
+            )
+        );
+        argsPanel.add(packLine(label5, new JPanel()));
+        
+        // チェックボックス "IMGの変換をする"
+        if (arg_output.outputIMG != null) {
+            arg_output.outputIMG.addActionListener(lSymAction);
+            argsPanel.add(arg_output.outputIMG);
+        }
+
+        // チェックボックス "IMGの変換をする"
+        if (arg_output.outputIMG_all != null) {
+            argsPanel.add(arg_output.outputIMG_all);
+        }
+
+        // チェックボックス "EXIFの変換をする"
+        if (arg_output.exifON != null) {
+            argsPanel.add(arg_output.exifON);
+        }
+
+        // チェックボックス "ポイントマーカー<WPT>をGPXファイルに出力する"
+        if (arg_output.gpxOutputWpt != null) {
+            argsPanel.add(arg_output.gpxOutputWpt);
+        }
+        
+        // チェックボックス "ソースGPXの<MAGVAR>を無視する"
+        if (arg_output.gpxOverwriteMagvar != null) {
+            argsPanel.add(arg_output.gpxOverwriteMagvar);
+        }
+
+        // チェックボックス "出力GPXに[SPEED]を上書きする"
+        if (arg_output.gpxOutputSpeed != null) {
+            argsPanel.add(arg_output.gpxOutputSpeed);
+        }
+
+        // [処理実行]ボタン
+        doButton = new JButton(
+            i18n.getString("button.execute"),
+            AdjustTime.createImageIcon("images/media_playback_start.png")
+        );
+        argsPanel.add(doButton);
+                
+        this.mainPanel.add(argsPanel, BorderLayout.CENTER);
+
+        //{{REGISTER_LISTENERS
+        doButton.addActionListener(lSymAction);
+        //}}
+    }
+    
+    class SymAction implements java.awt.event.ActionListener {
+        @Override
+        public void actionPerformed(java.awt.event.ActionEvent event) {
+            Object object = event.getSource();
+            if (object == doButton) {
+               doButton_Action(event);
+            }
+            else if (object == arg_output.outputIMG) {
+                outputIMG_Action(event);
+            }
+        }
+    }
+    
+    /**
+     * checkbox[IMG変換]を変更した場合のアクション
+     *         ON ー> IMG出力フォルダのフィールドを有効にする
+     *  OFF -> IMG出力フォルダのフィールドを無効にする
+     * @param event
+     */
+    void outputIMG_Action (ActionEvent event) {
+        setEnabled(isEnabled());
+    }
+    
+    /**
+     * [実行]ボタンをクリックしたときの動作
+     * @param event
+     */
+    @SuppressWarnings("UseSpecificCatch")
+    void doButton_Action(java.awt.event.ActionEvent event) {
+       doButton.setEnabled(false);
+        
+        ParameterPanelImageFile arg_baseTimeImg = arg_basetime.imageFile;  // 基準時刻画像
+        ParameterPanelFolder arg_srcFolder = arg_baseTimeImg.paramDir;
+        
+        try {
+            AppParameters params = new AppParameters();
+
+            String[] argv = new String[0];
+            params.setProperty(AppParameters.GPX_NO_FIRST_NODE, String.valueOf(arg_gpxFile.isNoFirstNodeSelected()));
+            params.setProperty(AppParameters.GPX_REUSE, String.valueOf(arg_gpxFile.isGpxReuseSelected()));
+            params.setProperty(AppParameters.GPX_SOURCE_FOLDER, arg_gpxFile.getText());
+            if ((arg_basetime.exifBase != null) && arg_basetime.exifBase.isSelected()) {
+                params.setProperty(AppParameters.GPX_BASETIME, "EXIF_TIME");
+            }
+            else {
+                params.setProperty(AppParameters.GPX_BASETIME, "FILE_UPDATE");
+            }
+            params.setProperty(AppParameters.IMG_SOURCE_FOLDER, arg_srcFolder.getText());
+            params.setProperty(AppParameters.IMG_BASE_FILE, arg_baseTimeImg.getText());
+            params.setProperty(AppParameters.IMG_TIME, ImportPicture.toUTCString(dfjp.parse(arg_basetime.getText())));
+            params.setProperty(AppParameters.IMG_OUTPUT, String.valueOf(arg_output.outputIMG.isSelected()));
+            params.setProperty(AppParameters.IMG_OUTPUT_ALL, String.valueOf(arg_output.outputIMG_all.isSelected()));
+            params.setProperty(AppParameters.IMG_OUTPUT_FOLDER, arg_output.getText());
+            params.setProperty(AppParameters.IMG_OUTPUT_EXIF, String.valueOf(arg_output.exifON.isSelected()));
+            params.setProperty(AppParameters.GPX_OVERWRITE_MAGVAR, String.valueOf(arg_output.gpxOverwriteMagvar.isSelected()));
+            params.setProperty(AppParameters.GPX_OUTPUT_SPEED, String.valueOf(arg_output.gpxOutputSpeed.isSelected()));
+            params.setProperty(AppParameters.GPX_OUTPUT_WPT, String.valueOf(arg_output.gpxOutputWpt.isSelected()));
+            params.store();
+        }
+        catch(Exception e) {
+            e.printStackTrace();
+        }
+
+        (new DoDialog(new String[0])).setVisible(true);
+               
+       doButton.setEnabled(true);
+    }
+
+    /**
+     *  入力条件が満たされているかどうか
+     * @return
+     */
+    @Override
+    public boolean isEnable() {
+       return (arg_basetime.isEnable() && arg_gpxFile.isEnable());
+    }
+    
+    @Override
+    @SuppressWarnings("empty-statement")
+    public void openAction() {
+       ; // 何もしない
+    }
+}
@@ -1,33 +1,24 @@
-package osm.jp.gpx.matchtime.gui.restamp;
+package osm.jp.gpx.matchtime.gui;
 
 import java.awt.BorderLayout;
 import java.awt.Dimension;
-import java.awt.Window;
 import javax.swing.BoxLayout;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JTabbedPane;
 import static osm.jp.gpx.matchtime.gui.AdjustTime.i18n;
-import osm.jp.gpx.matchtime.gui.Card;
-import osm.jp.gpx.matchtime.gui.PanelAction;
-import osm.jp.gpx.matchtime.gui.ParameterPanelGpx;
 
 /**
  * [GPXファイル]選択パネル
  * @author yuu
  */
 public class CardGpxFile extends Card  implements PanelAction {
-    //JPanel argsPanel;                // パラメータ設定パネル       (上部)
     ParameterPanelGpx arg_gpxFile;
-    //JCheckBox noFirstNode;   // GPX: <trkseg>セグメントの最初の1ノードは無視する。 {ON | OFF}
-    //JCheckBox gpxReuse;              // 生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も対象にする。 {ON | OFF}
-    //private final boolean gpxReuseV;
     
     /**
      * コンストラクタ
      * @param tabbe parent panel
      * @param arg_gpxFile              // 開始画像の基準時刻:
-     * @param owner
      * @param text
      * @param pre
      * @param next
@@ -35,13 +26,10 @@ public class CardGpxFile extends Card  implements PanelAction {
     public CardGpxFile(
             JTabbedPane tabbe, 
             ParameterPanelGpx arg_gpxFile,
-            Window owner,
             String text,
             int pre, int next
-            //boolean noFirstNodeV,
-            //boolean gpxReuseV
     ) {
-        super(tabbe, text, 2, 4);
+        super(tabbe, text, pre, next);
         this.arg_gpxFile = arg_gpxFile;
         
         // 4. ヒモ付を行うGPXファイルを選択してください。
index 894e81e..a27a330 100644 (file)
@@ -48,14 +48,14 @@ public class ParameterPanelFolder extends ParameterPanel implements ActionListen
     public File getDirectory() throws FileNotFoundException {
         String path = this.argField.getText();
         if (path == null) {
-            throw new FileNotFoundException("Image folder is Not specifiyed yet.");
+            throw new FileNotFoundException("Folder is Not specifiyed yet.");
         }
         File sdir = new File(path);
         if (!sdir.exists()) {
-            throw new FileNotFoundException(String.format("Image folder '%s' is Not exists.", path));
+            throw new FileNotFoundException(String.format("Folder '%s' is Not exists.", path));
         }
         if (!sdir.isDirectory()) {
-            throw new FileNotFoundException(String.format("Image folder '%s' is Not directory.", path));
+            throw new FileNotFoundException(String.format("Folder '%s' is Not directory.", path));
         }
         return sdir;
     }
@@ -63,7 +63,6 @@ public class ParameterPanelFolder extends ParameterPanel implements ActionListen
     @Override
     public void actionPerformed(ActionEvent e) {
         if (e.getSource() == selectButton){
-            System.out.println("ParameterPanelFolder.actionPerformed(openButton)");
             File sdir;
             try {
                 sdir = getDirectory();
index 5f382e3..586f795 100644 (file)
@@ -99,7 +99,7 @@ public class ParameterPanelGpx extends ParameterPanel implements ActionListener
     public boolean isGpxReuseSelected() {
         return (gpxReuse != null) && gpxReuse.isSelected();
     }
-    
+        
     /**
      * このフィールドに有効な値が設定されているかどうか
      * @return 
diff --git a/src/osm/jp/gpx/matchtime/gui/ParameterPanelOutput.java b/src/osm/jp/gpx/matchtime/gui/ParameterPanelOutput.java
new file mode 100644 (file)
index 0000000..ce4b1ea
--- /dev/null
@@ -0,0 +1,123 @@
+package osm.jp.gpx.matchtime.gui;
+
+import javax.swing.JCheckBox;
+import javax.swing.JFileChooser;
+import osm.jp.gpx.AppParameters;
+
+@SuppressWarnings("serial")
+public class ParameterPanelOutput extends ParameterPanelFolder
+{
+    JCheckBox outputIMG;       // IMGの変換 する/しない
+    JCheckBox outputIMG_all;   // 'out of GPX time'でもIMGの変換をする {ON | OFF}
+    JCheckBox exifON;          // EXIF 書き出しモード / !(EXIFの書き換えはしない)
+    JCheckBox gpxOutputWpt;    // GPXに<WPT>を書き出す
+    JCheckBox gpxOverwriteMagvar;      // ソースGPXの<MAGVAR>を無視する
+    JCheckBox gpxOutputSpeed;  // GPXに<SPEED>を書き出す
+    
+    /**
+     * コンストラクタ
+     * ディレクトリのみ選択可能なダイアログ
+     * @param label
+     * @param text 
+     */
+    public ParameterPanelOutput(String label, String text) {
+        super(label, text, JFileChooser.DIRECTORIES_ONLY);
+    }
+
+    /**
+     * チェックボックス "IMGの変換をする"
+     * @param label         テキスト
+     * @param params        プロパティ
+     */
+    public void addCheckChangeImage(String label, AppParameters params) {
+        boolean selected = false;
+        if (params.getProperty(AppParameters.IMG_OUTPUT).equals("true")) {
+            selected = true;
+        }
+        outputIMG = new JCheckBox(label, selected);
+    }
+    
+    /**
+     * チェックボックス "GPXファイル時間外のファイルもコピーする"
+     * @param label
+     * @param params 
+     */
+    public void addCheckOutofGpxTime(String label, AppParameters params) {
+        boolean selected = false;
+        if (params.getProperty(AppParameters.IMG_OUTPUT_ALL).equals("true")) {
+            selected = true;
+        }
+        outputIMG_all = new JCheckBox(label, selected);
+    }
+    
+    /**
+     * チェックボックス "EXIFの変換をする"
+     * @param label
+     * @param params 
+     */
+    public void addCheckOutputExif(String label, AppParameters params) {
+        boolean selected = false;
+        if (params.getProperty(AppParameters.IMG_OUTPUT_EXIF).equals("true")) {
+            selected = true;
+        }
+        exifON = new JCheckBox(label, selected);
+    }
+
+    /**
+     * チェックボックス "ポイントマーカー[WPT]をGPXファイルに出力する"
+     * @param label
+     * @param params 
+     */
+    public void addCheckOutputWpt(String label, AppParameters params) {
+        boolean selected = false;
+        if (params.getProperty(AppParameters.GPX_OUTPUT_WPT).equals("true")) {
+            selected = true;
+        }
+        gpxOutputWpt = new JCheckBox(label, selected);
+        gpxOutputWpt.setEnabled(true);
+    }
+
+    /**
+     * チェックボックス "ソースGPXの<MAGVAR>を無視する"
+     * @param label
+     * @param params 
+     */
+    public void addCheckIgnoreMagvar(String label, AppParameters params) {
+        boolean selected = false;
+        if (params.getProperty(AppParameters.GPX_OVERWRITE_MAGVAR).equals("true")) {
+            selected = true;
+        }
+        gpxOverwriteMagvar = new JCheckBox(label, selected);
+        gpxOverwriteMagvar.setEnabled(true);
+    }
+
+    /**
+     * チェックボックス "出力GPXに[SPEED]を上書きする"
+     * @param label
+     * @param params 
+     */
+    public void addCheckOutputSpeed(String label, AppParameters params) {
+        boolean selected = false;
+        if (params.getProperty(AppParameters.GPX_OUTPUT_SPEED).equals("true")) {
+            selected = true;
+        }
+        gpxOutputSpeed = new JCheckBox(label, selected);
+        gpxOutputSpeed.setEnabled(true);
+    }
+
+    /**
+     * checkbox[IMG変換]を変更した場合のアクション
+     *         ON ー> IMG出力フォルダのフィールドを有効にする
+     *  OFF -> IMG出力フォルダのフィールドを無効にする
+     * @param event
+     */
+    class ChangeImageAction implements java.awt.event.ActionListener {
+        @Override
+        public void actionPerformed(java.awt.event.ActionEvent event) {
+            Object object = event.getSource();
+            if (object == outputIMG) {
+                setEnabled(outputIMG.isEnabled());
+            }
+        }
+    }
+}
\ No newline at end of file
index 5323854..83fb9a9 100644 (file)
@@ -1,17 +1,17 @@
 #by AdjustTime
-#Sun Aug 25 16:00:56 JST 2019
+#Tue Oct 22 11:27:01 JST 2019
 GPX.OVERWRITE_MAGVAR=false
 IMG.BASE_FILE=00009.jpg
-GPX.SOURCE_FOLDER=/home/yuu/work/mapping/Unmapped_2019-08-24_\u4E2D\u5C71\u9053_\u7B20\u53D6\u5CE0/GPX
+GPX.SOURCE_FOLDER=/home/yuu/work/mapping/Unmapped_2019-08-24_\u4E2D\u5C71\u9053_\u7B20\u53D6\u5CE0/GPX/2019-08-24 15.44.09 Day.gpx
 IMG.SOURCE_FOLDER=/home/yuu/work/mapping/Unmapped_2019-08-24_\u4E2D\u5C71\u9053_\u7B20\u53D6\u5CE0/img/20190824_132842A
 GPX.OUTPUT_SPEED=false
 IMG.OUTPUT_FOLDER=/home/yuu/work/mapping/Unmapped_2019-08-24_\u4E2D\u5C71\u9053_\u7B20\u53D6\u5CE0/Movie
-GPX.noFirstNode=false
+GPX.noFirstNode=true
 GPX.gpxSplit=true
 IMG.OUTPUT=true
 GPX.OUTPUT_WPT=false
 GPX.REUSE=false
-IMG.TIME=2019-08-24T04\:29\:23Z
+IMG.TIME=2019-08-24T04\:29\:17Z
 IMG.OUTPUT_EXIF=true
 IMG.OUTPUT_ALL=false
 GPX.BASETIME=FILE_UPDATE