diff --git a/src/osm/jp/gpx/matchtime/gui/AdjustTime.java b/src/osm/jp/gpx/matchtime/gui/AdjustTime.java index 926e28e..a317344 100644 --- a/src/osm/jp/gpx/matchtime/gui/AdjustTime.java +++ b/src/osm/jp/gpx/matchtime/gui/AdjustTime.java @@ -2,7 +2,6 @@ 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 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 @@ 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 @@ //{{DECLARE_CONTROLS JTabbedPane cardPanel; // ウィザード形式パネル(タブ型) Card[] cards; - int cardPanelNo = 0; - JPanel argsPanel; // パラメータ設定パネル (上部) - JScrollPane imageSPane; // スクロールパネル - JLabel imageLabel; // 基準時刻画像表示 - //JCheckBox noFirstNode; // GPX: セグメントの最初の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にを書き出す - JCheckBox gpxOverwriteMagvar; // ソースGPXのを無視する - JCheckBox gpxOutputSpeed; // GPXにを書き出す - ParameterPanelFolder arg5_outputFolder; // EXIF 書き出しフォルダ - - JPanel buttonPanel; // ボタンパネル (下部) - - JButton doButton; // [処理実行]ボタン //}} //---入力フィールド---------------------------------------------------- @@ -63,6 +41,7 @@ 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 @@ 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 @@ // 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 @@ } //--------------------------------------------------------------------- - // 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( - "

5. %s

  • %s
  • %s
", - i18n.getString("label.500"), - i18n.getString("label.501"), - i18n.getString("label.502") - ) - ); - 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); - - // "GPXファイル時間外のファイルもコピーする" - outputIMG_all = new JCheckBox( - i18n.getString("label.520"), - Boolean.parseBoolean(params.getProperty(AppParameters.IMG_OUTPUT_ALL)) - ); - tmpPanel5.add(outputIMG_all); - + // 4. ファイル変換・実行パラメータ // "出力フォルダ: " - arg5_outputFolder = new ParameterPanelFolder( - i18n.getString("label.530") + ": ", + arg4_output = new ParameterPanelOutput( + i18n.getString("label.530") + ": ", params.getProperty(AppParameters.IMG_OUTPUT_FOLDER) ); - tmpPanel5.add(arg5_outputFolder); + arg4_output.argField.getDocument().addDocumentListener( + new SimpleDocumentListener() { + @Override + public void update(DocumentEvent e) { + toEnable(3, arg4_output.isEnable()); + } + } + ); + + // "IMGの変換をする" + arg4_output.addCheckChangeImage(i18n.getString("label.510"), params); + + // "GPXファイル時間外のファイルもコピーする" + 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); // "ポイントマーカーを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のを無視する" - 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にを上書きする" - gpxOutputSpeed = new JCheckBox( - i18n.getString("label.570"), - Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OUTPUT_SPEED)) - ); - gpxOutputSpeed.setEnabled(true); - tmpPanel5.add(gpxOutputSpeed); + // "出力GPXに[SPEED]を上書きする" + arg4_output.addCheckOutputSpeed(i18n.getString("label.570"), params); - card.mainPanel.add(tmpPanel5, BorderLayout.CENTER); - - // "処理実行" - 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 @@ 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 @@ } } - 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 @@ 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 index 0000000..e6f11cf --- /dev/null +++ b/src/osm/jp/gpx/matchtime/gui/CardExifPerform.java @@ -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( + "

5. %s

  • %s
  • %s
", + 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); + } + + // チェックボックス "ポイントマーカーをGPXファイルに出力する" + if (arg_output.gpxOutputWpt != null) { + argsPanel.add(arg_output.gpxOutputWpt); + } + + // チェックボックス "ソースGPXのを無視する" + 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() { + ; // 何もしない + } +} diff --git a/src/osm/jp/gpx/matchtime/gui/CardGpxFile.java b/src/osm/jp/gpx/matchtime/gui/CardGpxFile.java new file mode 100644 index 0000000..bd9f49f --- /dev/null +++ b/src/osm/jp/gpx/matchtime/gui/CardGpxFile.java @@ -0,0 +1,74 @@ +package osm.jp.gpx.matchtime.gui; + +import java.awt.BorderLayout; +import java.awt.Dimension; +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; + +/** + * [GPXファイル]選択パネル + * @author yuu + */ +public class CardGpxFile extends Card implements PanelAction { + ParameterPanelGpx arg_gpxFile; + + /** + * コンストラクタ + * @param tabbe parent panel + * @param arg_gpxFile // 開始画像の基準時刻: + * @param text + * @param pre + * @param next + */ + public CardGpxFile( + JTabbedPane tabbe, + ParameterPanelGpx arg_gpxFile, + String text, + int pre, int next + ) { + super(tabbe, text, pre, next); + this.arg_gpxFile = arg_gpxFile; + + // 4. ヒモ付を行うGPXファイルを選択してください。 + // - フォルダを指定すると、フォルダ内のすべてのGPXファイルを対象とします。 + JPanel argsPanel = new JPanel(); + argsPanel.setLayout(new BoxLayout(argsPanel, BoxLayout.PAGE_AXIS)); + argsPanel.add(packLine(new JLabel(i18n.getString("label.400")), new JPanel())); + argsPanel.add(arg_gpxFile); + + // "セグメント'trkseg'の最初の1ノードは無視する。" + if (arg_gpxFile.noFirstNode != null) { + argsPanel.add(arg_gpxFile.noFirstNode); + } + + // "生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も変換の対象にする" + if (arg_gpxFile.gpxReuse != null) { + argsPanel.add(arg_gpxFile.gpxReuse); + } + + JPanel space = new JPanel(); + space.setMinimumSize(new Dimension(40, 20)); + space.setMaximumSize(new Dimension(40, Short.MAX_VALUE)); + argsPanel.add(space); + + this.mainPanel.add(argsPanel, BorderLayout.CENTER); + } + + /** + * 入力条件が満たされているかどうか + * @return + */ + @Override + public boolean isEnable() { + return (arg_gpxFile.isEnable()); + } + + @Override + @SuppressWarnings("empty-statement") + public void openAction() { + ; // 何もしない + } +} diff --git a/src/osm/jp/gpx/matchtime/gui/ParameterPanelFolder.java b/src/osm/jp/gpx/matchtime/gui/ParameterPanelFolder.java index 894e81e..a27a330 100644 --- a/src/osm/jp/gpx/matchtime/gui/ParameterPanelFolder.java +++ b/src/osm/jp/gpx/matchtime/gui/ParameterPanelFolder.java @@ -48,14 +48,14 @@ 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 @@ @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == selectButton){ - System.out.println("ParameterPanelFolder.actionPerformed(openButton)"); File sdir; try { sdir = getDirectory(); diff --git a/src/osm/jp/gpx/matchtime/gui/ParameterPanelGpx.java b/src/osm/jp/gpx/matchtime/gui/ParameterPanelGpx.java index 5f382e3..586f795 100644 --- a/src/osm/jp/gpx/matchtime/gui/ParameterPanelGpx.java +++ b/src/osm/jp/gpx/matchtime/gui/ParameterPanelGpx.java @@ -99,7 +99,7 @@ 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 index 0000000..ce4b1ea --- /dev/null +++ b/src/osm/jp/gpx/matchtime/gui/ParameterPanelOutput.java @@ -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にを書き出す + JCheckBox gpxOverwriteMagvar; // ソースGPXのを無視する + JCheckBox gpxOutputSpeed; // GPXにを書き出す + + /** + * コンストラクタ + * ディレクトリのみ選択可能なダイアログ + * @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 diff --git a/src/osm/jp/gpx/matchtime/gui/restamp/CardGpxFile.java b/src/osm/jp/gpx/matchtime/gui/restamp/CardGpxFile.java deleted file mode 100644 index 4610ee8..0000000 --- a/src/osm/jp/gpx/matchtime/gui/restamp/CardGpxFile.java +++ /dev/null @@ -1,86 +0,0 @@ -package osm.jp.gpx.matchtime.gui.restamp; - -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: セグメントの最初の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 - */ - public CardGpxFile( - JTabbedPane tabbe, - ParameterPanelGpx arg_gpxFile, - Window owner, - String text, - int pre, int next - //boolean noFirstNodeV, - //boolean gpxReuseV - ) { - super(tabbe, text, 2, 4); - this.arg_gpxFile = arg_gpxFile; - - // 4. ヒモ付を行うGPXファイルを選択してください。 - // - フォルダを指定すると、フォルダ内のすべてのGPXファイルを対象とします。 - JPanel argsPanel = new JPanel(); - argsPanel.setLayout(new BoxLayout(argsPanel, BoxLayout.PAGE_AXIS)); - argsPanel.add(packLine(new JLabel(i18n.getString("label.400")), new JPanel())); - argsPanel.add(arg_gpxFile); - - // "セグメント'trkseg'の最初の1ノードは無視する。" - if (arg_gpxFile.noFirstNode != null) { - argsPanel.add(arg_gpxFile.noFirstNode); - } - - // "生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も変換の対象にする" - if (arg_gpxFile.gpxReuse != null) { - argsPanel.add(arg_gpxFile.gpxReuse); - } - - JPanel space = new JPanel(); - space.setMinimumSize(new Dimension(40, 20)); - space.setMaximumSize(new Dimension(40, Short.MAX_VALUE)); - argsPanel.add(space); - - this.mainPanel.add(argsPanel, BorderLayout.CENTER); - } - - /** - * 入力条件が満たされているかどうか - * @return - */ - @Override - public boolean isEnable() { - return (arg_gpxFile.isEnable()); - } - - @Override - @SuppressWarnings("empty-statement") - public void openAction() { - ; // 何もしない - } -} diff --git a/test/AdjustTime.ini b/test/AdjustTime.ini index 5323854..83fb9a9 100644 --- a/test/AdjustTime.ini +++ b/test/AdjustTime.ini @@ -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