diff --git a/src/i18n.properties b/src/i18n.properties
index 2962feb..af470a9 100644
--- a/src/i18n.properties
+++ b/src/i18n.properties
@@ -9,22 +9,26 @@
button.execute=Execute
button.select=Selection...
+tab.100=1. Source image Folder
label.100=
1. Select image source folder.
- If you perform a copy operation, the file update time may be rewritten to the time the copy was executed. It is recommended to directly specify the folder in the camera SD card.
label.110=Image Folder
+tab.200=2. Set correct shooting time
label.200=2. Choose an image whose exact shooting time can be known.
- If the camera's clock is accurate, you can choose any image.
label.210=Reference time image
label.220=Based on EXIF date and time
label.230=Based on FILE UPDATE time
-
+tab.300=2a. Set correct shooting time
label.300=3. enter the correct shooting time.
- If the camera clock is accurate, you do not need to change the setting.
label.310=Reference time
+tab.400=3. Select GPX files
label.400=4. Please select a GPX file to perform the matching.
- If you specify a folder, it will target all GPX files in the folder.
label.410=GPX folder
label.420=Ignore the first node of segment 'trkseg'
label.430=Also make the generated GPX file (the one whose filename ends with '_.gpx') as the target of conversion
+tab.500=4. perform EXIF conversion
label.500=Select whether to perform EXIF conversion
label.501=When performing EXIF conversion, you also need to specify the folder to output the converted file.
label.502=The output folder must have write permission and sufficient free space.
diff --git a/src/i18n_ja_JP.properties b/src/i18n_ja_JP.properties
index 6f75d3d..7504efd 100644
--- a/src/i18n_ja_JP.properties
+++ b/src/i18n_ja_JP.properties
@@ -9,22 +9,27 @@
button.execute=\u51e6\u7406\u5b9f\u884c
button.select=\u9078\u629e...
+tab.100=1. \u753b\u50cf\u5143\u306e\u30d5\u30a1\u30a4\u30eb\u30d5\u30a9\u30eb\u30c0
label.100=1. \u4f4d\u7f6e\u60c5\u5831\u3092\u4ed8\u52a0\u3057\u305f\u3044\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u304c\u683c\u7d0d\u3055\u308c\u3066\u3044\u308b\u30d5\u30a9\u30eb\u30c0\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u30b3\u30d4\u30fc\u52d5\u4f5c\u3092\u884c\u3046\u3068\u3001\u30d5\u30a1\u30a4\u30eb\u66f4\u65b0\u6642\u523b\u304c\u30b3\u30d4\u30fc\u3092\u5b9f\u884c\u3057\u305f\u6642\u523b\u306b\u66f8\u304d\u63db\u308f\u3063\u3066\u3057\u307e\u3046\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u30ab\u30e1\u30e9SD\u30ab\u30fc\u30c9\u5185\u306e\u30d5\u30a9\u30eb\u30c0\u3092\u76f4\u63a5\u6307\u5b9a\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002
label.110=\u5bfe\u8c61\u30d5\u30a9\u30eb\u30c0
+tab.200=2. \u57fa\u6e96\u3068\u3059\u308b\u753b\u50cf\u306e\u9078\u629e
label.200=2. \u6b63\u78ba\u306a\u64ae\u5f71\u6642\u523b\u304c\u5224\u660e\u3067\u304d\u308b\u753b\u50cf\u3092\u9078\u3093\u3067\u304f\u3060\u3055\u3044\u3002
- \u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u306e\u6642\u8a08\u753b\u9762\uff08\u79d2\u304c\u5224\u5225\u3067\u304d\u308b\u3053\u3068\uff09\u3092\u64ae\u5f71\u3057\u305f\u753b\u50cf
- \u30ab\u30e1\u30e9\u306e\u6642\u8a08\u304c\u6b63\u78ba\u306a\u3089\u3070\u3001\u3069\u306e\u753b\u50cf\u3092\u9078\u3093\u3067\u3082\u69cb\u3044\u307e\u305b\u3093\u3002
label.210=\u57fa\u6e96\u6642\u523b\u753b\u50cf
label.220=EXIF\u306e\u65e5\u6642\u3092\u57fa\u6e96\u306b\u3059\u308b
label.230=\u30d5\u30a1\u30a4\u30eb\u66f4\u65b0\u65e5\u6642\u3092\u57fa\u6e96\u306b\u3059\u308b
+tab.300=2a. \u672c\u5f53\u306e\u6642\u523b\u3092\u8a2d\u5b9a
label.300=3. \u6b63\u78ba\u306a\u64ae\u5f71\u6642\u523b\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u30ab\u30e1\u30e9\u306e\u6642\u8a08\u304c\u6b63\u78ba\u306a\u3089\u3070\u3001\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
label.310=\u57fa\u6e96\u6642\u523b
+tab.400=3. GPX\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e
label.400=4. \u30d2\u30e2\u4ed8\u3092\u884c\u3046GPX\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u30d5\u30a9\u30eb\u30c0\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001\u30d5\u30a9\u30eb\u30c0\u5185\u306b\u3042\u308b\u3059\u3079\u3066\u306eGPX\u30d5\u30a1\u30a4\u30eb\u3092\u5bfe\u8c61\u3068\u3057\u307e\u3059\u3002
label.410=GPX\u30d5\u30a9\u30eb\u30c0
label.420=\u30bb\u30b0\u30e1\u30f3\u30c8'trkseg'\u306e\u6700\u521d\u306e\uff11\u30ce\u30fc\u30c9\u306f\u7121\u8996\u3059\u308b
label.430=\u751f\u6210\u3055\u308c\u305fGPX\u30d5\u30a1\u30a4\u30eb\uff08\u30d5\u30a1\u30a4\u30eb\u540d\u304c'_.gpx'\u3067\u7d42\u308f\u308b\u3082\u306e\uff09\u3082\u5909\u63db\u306e\u5bfe\u8c61\u306b\u3059\u308b
+tab.500=4. EXIF\u5909\u63db\u306e\u5b9f\u884c
label.500=EXIF\u5909\u63db\u3092\u884c\u3046\u304b\u3069\u3046\u304b\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
label.501=EXIF\u5909\u63db\u3092\u884c\u3046\u5834\u5408\u306b\u306f\u3001\u5909\u63db\u30d5\u30a1\u30a4\u30eb\u3092\u51fa\u529b\u3059\u308b\u30d5\u30a9\u30eb\u30c0\u3082\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
label.502=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u306b\u306f\u3001\u66f8\u304d\u8fbc\u307f\u6a29\u9650\u3068\u3001\u5341\u5206\u306a\u7a7a\u304d\u5bb9\u91cf\u304c\u5fc5\u8981\u3067\u3059\u3002
diff --git a/src/osm/jp/gpx/matchtime/gui/AdjustTime.java b/src/osm/jp/gpx/matchtime/gui/AdjustTime.java
index 5ab17fd..999f895 100644
--- a/src/osm/jp/gpx/matchtime/gui/AdjustTime.java
+++ b/src/osm/jp/gpx/matchtime/gui/AdjustTime.java
@@ -23,8 +23,8 @@
public class AdjustTime extends JFrame
{
public static final String PROGRAM_NAME = "AdjustTime for JOSM";
- public static final String PROGRAM_VARSION = "4.01";
- public static final String PROGRAM_UPDATE = "2018/09/17";
+ public static final String PROGRAM_VARSION = "5.01";
+ public static final String PROGRAM_UPDATE = "2019/08/25";
AppParameters params;
SimpleDateFormat dfjp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
@@ -34,7 +34,7 @@
public ResourceBundle i18n = ResourceBundle.getBundle("i18n");
//{{DECLARE_CONTROLS
- JPanel cardPanel; // ウィザード形式パネル(カード型)
+ JTabbedPane cardPanel; // ウィザード形式パネル(タブ型)
JPanel[] cards;
int cardPanelNo = 0;
JPanel argsPanel; // パラメータ設定パネル (上部)
@@ -46,7 +46,6 @@
JCheckBox noFirstNode; // GPX: セグメントの最初の1ノードは無視する。 {ON | OFF}
JCheckBox gpxReuse; // 生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も対象にする。 {ON | OFF}
JTextArea textArea; // 実行結果表示領域
- //ImagePreview imagePane; // 基準時刻画像表示
ParameterPanelFolder arg1_srcFolder;
ParameterPanelImageFile arg2_baseTimeImg;
ParameterPanel arg3_basetime; // 基準時刻:
@@ -64,8 +63,6 @@
JButton zoomInButton; // [Zoom in]ボタン
JButton zoomOutButton; // [Zoom out]ボタン
- JButton nextButton; // [次へ]ボタン
- JButton backButton; // [戻る]ボタン
JButton doButton; // [処理実行]ボタン
//}}
@@ -138,12 +135,6 @@
else if (object == doButton) {
doButton_Action(event);
}
- else if (object == nextButton) {
- nextButton_Action(event);
- }
- else if (object == backButton) {
- backButton_Action(event);
- }
}
}
@@ -184,228 +175,239 @@
params = new AppParameters();
//---------------------------------------------------------------------
- cardPanel = new JPanel();
- cardPanel.setLayout(new CardLayout());
+ cardPanel = new JTabbedPane(JTabbedPane.LEFT);
mainPanel.add(cardPanel, BorderLayout.CENTER);
- nextButton = new JButton(i18n.getString("button.next"));
- southPanel.add(nextButton, BorderLayout.EAST);
-
- backButton = new JButton(i18n.getString("button.previous"));
- southPanel.add(backButton, BorderLayout.WEST);
-
cards = new JPanel[5];
- for (int i=0; i < 5; i++) {
- cards[i] = new JPanel();
- cardPanel.add(cards[i], String.valueOf(i));
- }
cardPanelNo = 0;
//---------------------------------------------------------------------
// 1.[対象フォルダ]設定パネル
int cardNo = 0;
- cards[cardNo].setLayout(new BorderLayout());
- JLabel label1 = new JLabel();
- label1.setText(i18n.getString("label.100"));
- cards[cardNo].add(label1, BorderLayout.NORTH);
-
- argsPanel = new JPanel();
- argsPanel.setLayout(new BoxLayout(argsPanel, BoxLayout.Y_AXIS));
- arg1_srcFolder = new ParameterPanelFolder(i18n.getString("label.110") +": ", params.getProperty(AppParameters.IMG_SOURCE_FOLDER));
- argsPanel.add(arg1_srcFolder);
- cards[cardNo].add(argsPanel, BorderLayout.CENTER);
+ {
+ Card card = new Card(cardPanel, i18n.getString("tab.100"), -1, 1);
+ cardPanel.addTab(card.getTitle(), card);
+ cards[cardNo] = card;
+
+ JLabel label1 = new JLabel();
+ label1.setText(i18n.getString("label.100"));
+ card.mainPanel.add(label1, BorderLayout.NORTH);
+
+ argsPanel = new JPanel();
+ argsPanel.setLayout(new BoxLayout(argsPanel, BoxLayout.Y_AXIS));
+ arg1_srcFolder = new ParameterPanelFolder(i18n.getString("label.110") +": ", params.getProperty(AppParameters.IMG_SOURCE_FOLDER));
+ argsPanel.add(arg1_srcFolder);
+ card.mainPanel.add(argsPanel, BorderLayout.CENTER);
+ }
//---------------------------------------------------------------------
// 2.[基準時刻画像]設定パネル
cardNo++;
- cards[cardNo].setLayout(new BorderLayout());
- JLabel label2 = new JLabel();
- label2.setText(i18n.getString("label.200"));
- cards[cardNo].add(label2, BorderLayout.NORTH);
+ {
+ Card card = new Card(cardPanel, i18n.getString("tab.200"), 0, 2);
+ cardPanel.addTab(card.getTitle(), card);
+ cards[cardNo] = card;
- argsPanel = new JPanel();
-
- // 基準時刻画像
- argsPanel.setLayout(new BoxLayout(argsPanel, BoxLayout.Y_AXIS));
- arg2_baseTimeImg = new ParameterPanelImageFile(i18n.getString("label.210") +": ", params.getProperty(AppParameters.IMG_BASE_FILE), arg1_srcFolder);
- argsPanel.add(arg2_baseTimeImg);
-
- baseTimeGroup = new ButtonGroup();
-
- // EXIFの日時を基準にする
- exifBase = new JRadioButton(i18n.getString("label.220"));
-
- // ファイル更新日時を基準にする
- fupdateBase = new JRadioButton(i18n.getString("label.230"));
- baseTimeGroup.add(exifBase);
- baseTimeGroup.add(fupdateBase);
- argsPanel.add(exifBase);
- argsPanel.add(fupdateBase);
- if (params.getProperty(AppParameters.GPX_BASETIME).equals("EXIF_TIME")) {
- fupdateBase.setSelected(false);
- exifBase.setSelected(true);
+ JLabel label2 = new JLabel();
+ label2.setText(i18n.getString("label.200"));
+ card.mainPanel.add(label2, BorderLayout.NORTH);
+
+ argsPanel = new JPanel();
+
+ // 基準時刻画像
+ argsPanel.setLayout(new BoxLayout(argsPanel, BoxLayout.Y_AXIS));
+ arg2_baseTimeImg = new ParameterPanelImageFile(i18n.getString("label.210") +": ", params.getProperty(AppParameters.IMG_BASE_FILE), arg1_srcFolder);
+ argsPanel.add(arg2_baseTimeImg);
+
+ baseTimeGroup = new ButtonGroup();
+
+ // EXIFの日時を基準にする
+ exifBase = new JRadioButton(i18n.getString("label.220"));
+
+ // ファイル更新日時を基準にする
+ fupdateBase = new JRadioButton(i18n.getString("label.230"));
+ baseTimeGroup.add(exifBase);
+ baseTimeGroup.add(fupdateBase);
+ argsPanel.add(exifBase);
+ argsPanel.add(fupdateBase);
+ if (params.getProperty(AppParameters.GPX_BASETIME).equals("EXIF_TIME")) {
+ fupdateBase.setSelected(false);
+ exifBase.setSelected(true);
+ }
+ else {
+ fupdateBase.setSelected(true);
+ exifBase.setSelected(false);
+ }
+ card.mainPanel.add(argsPanel, BorderLayout.CENTER);
}
- else {
- fupdateBase.setSelected(true);
- exifBase.setSelected(false);
+
+ //---------------------------------------------------------------------
+ // 2a.基準時刻の入力画面
+ cardNo++;
+ {
+ Card card = new Card(cardPanel, i18n.getString("tab.300"), 1, 3);
+ cardPanel.addTab(card.getTitle(), card);
+ cards[cardNo] = card;
+
+ argsPanel = new JPanel();
+ argsPanel.setLayout(new GridLayout(2, 1));
+
+ // 3. 正確な撮影時刻を入力してください。
+ // カメラの時計が正確ならば、設定を変更する必要はありません。
+ JLabel label3 = new JLabel();
+ label3.setText(i18n.getString("label.300"));
+ argsPanel.add(label3);
+
+ // 基準時刻:
+ String str310 = String.format(" %s: ", i18n.getString("label.310"));
+ arg3_basetime = new ParameterPanel(str310, ImportPicture.TIME_FORMAT_STRING);
+ argsPanel.add(arg3_basetime);
+ card.mainPanel.add(argsPanel, BorderLayout.NORTH);
+
+ // 参考画像
+ imageLabel = new JLabel();
+ imageSPane = new JScrollPane(imageLabel);
+ card.mainPanel.add(imageSPane, BorderLayout.CENTER);
+
+ // 画像ファイル選択ダイアログを起動するボタン
+ buttonPanel = new JPanel();
+ buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
+ openButton = new JButton(createImageIcon("images/Fit16.gif"));
+ buttonPanel.add(openButton);
+ zoomInButton = new JButton(createImageIcon("images/ZoomIn16.gif"));
+ buttonPanel.add(zoomInButton);
+ zoomOutButton = new JButton(createImageIcon("images/ZoomOut16.gif"));
+ buttonPanel.add(zoomOutButton);
+ card.mainPanel.add(buttonPanel, BorderLayout.SOUTH);
}
- cards[cardNo].add(argsPanel, BorderLayout.CENTER);
//---------------------------------------------------------------------
- // 3.基準時刻の入力画面
+ // 3.GPXファイル設定画面
cardNo++;
- cards[cardNo].setLayout(new BorderLayout());
- argsPanel = new JPanel();
- argsPanel.setLayout(new GridLayout(2, 1));
+ {
+ Card card = new Card(cardPanel, i18n.getString("tab.400"), 2, 4);
+ cardPanel.addTab(card.getTitle(), card);
+ cards[cardNo] = card;
- // 3. 正確な撮影時刻を入力してください。
- // カメラの時計が正確ならば、設定を変更する必要はありません。
- JLabel label3 = new JLabel();
- label3.setText(i18n.getString("label.300"));
- argsPanel.add(label3);
-
- // 基準時刻:
- String str310 = String.format(" %s: ", i18n.getString("label.310"));
- arg3_basetime = new ParameterPanel(str310, ImportPicture.TIME_FORMAT_STRING);
- argsPanel.add(arg3_basetime);
- cards[cardNo].add(argsPanel, BorderLayout.NORTH);
+ // 4. ヒモ付を行うGPXファイルを選択してください。
+ // - フォルダを指定すると、フォルダ内のすべてのGPXファイルを対象とします。
+ JLabel label4 = new JLabel();
+ label4.setText(i18n.getString("label.400"));
+ card.mainPanel.add(label4, BorderLayout.NORTH);
- // 参考画像
- imageLabel = new JLabel();
- imageSPane = new JScrollPane(imageLabel);
- cards[cardNo].add(imageSPane, BorderLayout.CENTER);
-
- // 画像ファイル選択ダイアログを起動するボタン
- buttonPanel = new JPanel();
- buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
- openButton = new JButton(createImageIcon("images/Fit16.gif"));
- buttonPanel.add(openButton);
- zoomInButton = new JButton(createImageIcon("images/ZoomIn16.gif"));
- buttonPanel.add(zoomInButton);
- zoomOutButton = new JButton(createImageIcon("images/ZoomOut16.gif"));
- buttonPanel.add(zoomOutButton);
- cards[cardNo].add(buttonPanel, BorderLayout.SOUTH);
+ JPanel tmpPanel4a = new JPanel();
+ tmpPanel4a.setLayout(new BoxLayout(tmpPanel4a, BoxLayout.Y_AXIS));
+
+ // "GPXフォルダ: "
+ arg4_gpxFolder = new ParameterPanelGpx(
+ i18n.getString("label.410") + ": ",
+ params.getProperty(AppParameters.GPX_SOURCE_FOLDER)
+ );
+ tmpPanel4a.add(arg4_gpxFolder);
+
+ // "セグメント'trkseg'の最初の1ノードは無視する。"
+ noFirstNode = new JCheckBox(
+ i18n.getString("label.420"),
+ params.getProperty(AppParameters.GPX_NO_FIRST_NODE).equals("ON")
+ );
+ tmpPanel4a.add(noFirstNode);
+
+ // "生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も変換の対象にする"
+ gpxReuse = new JCheckBox(
+ i18n.getString("label.430"),
+ params.getProperty(AppParameters.GPX_REUSE).equals("ON")
+ );
+ gpxReuse.setEnabled(true);
+ tmpPanel4a.add(gpxReuse);
+ card.mainPanel.add(tmpPanel4a, BorderLayout.CENTER);
+ }
//---------------------------------------------------------------------
- // 4.GPXファイル設定画面
+ // 4.EXIF更新設定画面
cardNo++;
- cards[cardNo].setLayout(new BorderLayout());
-
- // 4. ヒモ付を行うGPXファイルを選択してください。
- // - フォルダを指定すると、フォルダ内のすべてのGPXファイルを対象とします。
- JLabel label4 = new JLabel();
- label4.setText(i18n.getString("label.400"));
- cards[cardNo].add(label4, BorderLayout.NORTH);
-
- JPanel tmpPanel4a = new JPanel();
- tmpPanel4a.setLayout(new BoxLayout(tmpPanel4a, BoxLayout.Y_AXIS));
-
- // "GPXフォルダ: "
- arg4_gpxFolder = new ParameterPanelGpx(
- i18n.getString("label.410") + ": ",
- params.getProperty(AppParameters.GPX_SOURCE_FOLDER)
- );
- tmpPanel4a.add(arg4_gpxFolder);
-
- // "セグメント'trkseg'の最初の1ノードは無視する。"
- noFirstNode = new JCheckBox(
- i18n.getString("label.420"),
- params.getProperty(AppParameters.GPX_NO_FIRST_NODE).equals("ON")
- );
- tmpPanel4a.add(noFirstNode);
-
- // "生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も変換の対象にする"
- gpxReuse = new JCheckBox(
- i18n.getString("label.430"),
- params.getProperty(AppParameters.GPX_REUSE).equals("ON")
- );
- gpxReuse.setEnabled(true);
- tmpPanel4a.add(gpxReuse);
- cards[cardNo].add(tmpPanel4a, BorderLayout.CENTER);
-
- //---------------------------------------------------------------------
- // 5.EXIF更新設定画面
- cardNo++;
- cards[cardNo].setLayout(new BorderLayout());
+ {
+ 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
",
+ i18n.getString("label.500"),
+ i18n.getString("label.501"),
+ i18n.getString("label.502")
+ )
+ );
+ card.mainPanel.add(label5, BorderLayout.NORTH);
- // 5. EXIF変換を行うかどうかを選択してください。
- // - EXIF変換を行う場合には、変換ファイルを出力するフォルダも指定する必要があります。
- // - 出力フォルダには、書き込み権限と、十分な空き容量が必要です。
- JLabel label5 = new JLabel();
- label5.setText(
- String.format(
- "5. %s
",
- i18n.getString("label.500"),
- i18n.getString("label.501"),
- i18n.getString("label.502")
- )
- );
- cards[cardNo].add(label5, BorderLayout.NORTH);
-
- JPanel tmpPanel5 = new JPanel();
- tmpPanel5.setLayout(new BoxLayout(tmpPanel5, BoxLayout.Y_AXIS));
+ 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);
+ // "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);
+ // "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);
+ // "出力フォルダ: "
+ arg5_outputFolder = new ParameterPanelFolder(
+ i18n.getString("label.530") + ": ",
+ params.getProperty(AppParameters.IMG_OUTPUT_FOLDER)
+ );
+ tmpPanel5.add(arg5_outputFolder);
- // "EXIFの変換をする"
- exifON = new JCheckBox(
- i18n.getString("label.540"),
- Boolean.parseBoolean(params.getProperty(AppParameters.IMG_OUTPUT_EXIF))
- );
- tmpPanel5.add(exifON);
-
- // "ポイントマーカーをGPXファイルに出力する"
- gpxOutputWpt = new JCheckBox(
- i18n.getString("label.550"),
- Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OUTPUT_WPT))
- );
- gpxOutputWpt.setEnabled(true);
- tmpPanel5.add(gpxOutputWpt);
-
- // "ソースGPXのを無視する"
- gpxOverwriteMagvar = new JCheckBox(
- i18n.getString("label.560"),
- Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OVERWRITE_MAGVAR))
- );
- gpxOverwriteMagvar.setEnabled(true);
- tmpPanel5.add(gpxOverwriteMagvar);
-
- // "出力GPXにを上書きする"
- gpxOutputSpeed = new JCheckBox(
- i18n.getString("label.570"),
- Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OUTPUT_SPEED))
- );
- gpxOutputSpeed.setEnabled(true);
- tmpPanel5.add(gpxOutputSpeed);
-
- cards[cardNo].add(tmpPanel5, BorderLayout.CENTER);
-
- // "処理実行"
- doButton = new JButton(
- i18n.getString("button.execute"),
- AdjustTime.createImageIcon("images/media_playback_start.png")
- );
- cards[cardNo].add(doButton, BorderLayout.SOUTH);
+ // "EXIFの変換をする"
+ exifON = new JCheckBox(
+ i18n.getString("label.540"),
+ Boolean.parseBoolean(params.getProperty(AppParameters.IMG_OUTPUT_EXIF))
+ );
+ tmpPanel5.add(exifON);
+ // "ポイントマーカーをGPXファイルに出力する"
+ gpxOutputWpt = new JCheckBox(
+ i18n.getString("label.550"),
+ Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OUTPUT_WPT))
+ );
+ gpxOutputWpt.setEnabled(true);
+ tmpPanel5.add(gpxOutputWpt);
+
+ // "ソースGPXのを無視する"
+ gpxOverwriteMagvar = new JCheckBox(
+ i18n.getString("label.560"),
+ Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OVERWRITE_MAGVAR))
+ );
+ gpxOverwriteMagvar.setEnabled(true);
+ tmpPanel5.add(gpxOverwriteMagvar);
+
+ // "出力GPXにを上書きする"
+ 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);
+
+ // "処理実行"
+ doButton = new JButton(
+ i18n.getString("button.execute"),
+ AdjustTime.createImageIcon("images/media_playback_start.png")
+ );
+ card.mainPanel.add(doButton, BorderLayout.SOUTH);
+ }
//---------------------------------------------------------------------
// INIT_MENUS
@@ -444,9 +446,6 @@
gpxOutputSpeed.addActionListener(lSymAction);
noFirstNode.addActionListener(lSymAction);
gpxReuse.addActionListener(lSymAction);
- //arg1Panel_4.field.addActionListener(lSymAction);
- nextButton.addActionListener(lSymAction);
- backButton.addActionListener(lSymAction);
//}}
}
@@ -729,28 +728,4 @@
doButton.setEnabled(true);
}
-
- /**
- * [次へ]ボタンをクリックした時の動作
- * @param event
- */
- void nextButton_Action(ActionEvent event) {
- if ((cardPanelNo + 1) < cards.length) {
- cardPanelNo++;
- CardLayout cl = (CardLayout)(cardPanel.getLayout());
- cl.show(cardPanel, String.valueOf(cardPanelNo));
- }
- }
-
- /**
- * [戻る]ボタンをクリックした時の動作
- * @param event
- */
- void backButton_Action(ActionEvent event) {
- if ((cardPanelNo - 1) >= 0) {
- cardPanelNo--;
- CardLayout cl = (CardLayout)(cardPanel.getLayout());
- cl.show(cardPanel, String.valueOf(cardPanelNo));
- }
- }
}
diff --git a/src/osm/jp/gpx/matchtime/gui/Card.java b/src/osm/jp/gpx/matchtime/gui/Card.java
new file mode 100644
index 0000000..78617a5
--- /dev/null
+++ b/src/osm/jp/gpx/matchtime/gui/Card.java
@@ -0,0 +1,94 @@
+package osm.jp.gpx.matchtime.gui;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.util.ResourceBundle;
+import javax.swing.Box;
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
+
+/**
+ *
+ * @author yuu
+ */
+public class Card extends JPanel {
+ public ResourceBundle i18n = ResourceBundle.getBundle("i18n");
+ JTabbedPane tabbe;
+ public JPanel mainPanel;
+ String title;
+ int backNumber = -1;
+ int nextNumber = -1;
+ JButton nextButton; // [次へ]ボタン
+ JButton backButton; // [戻る]ボタン
+
+ public Card(JTabbedPane tabbe, String title, int backNumber, int nextNumber) {
+ super();
+ this.tabbe = tabbe;
+ this.title = title;
+ this.backNumber = backNumber;
+ this.nextNumber = nextNumber;
+
+ // INIT_CONTROLS
+ this.setLayout(new BorderLayout());
+
+ //---- CENTER -----
+ mainPanel = new JPanel();
+ mainPanel.setLayout(new BorderLayout());
+ this.add(mainPanel, BorderLayout.CENTER);
+
+ //---- SOUTH -----
+ JPanel buttonPanel = new JPanel(new BorderLayout());
+ buttonPanel.add(Box.createVerticalStrut(10), BorderLayout.SOUTH);
+ buttonPanel.add(Box.createVerticalStrut(10), BorderLayout.NORTH);
+ this.add(buttonPanel, BorderLayout.SOUTH);
+
+ //{{REGISTER_LISTENERS
+ SymAction lSymAction = new SymAction();
+ if (nextNumber >= 0) {
+ nextButton = new JButton(i18n.getString("button.next"));
+ buttonPanel.add(nextButton, BorderLayout.EAST);
+ nextButton.addActionListener(lSymAction);
+ }
+
+ if (backNumber >= 0) {
+ backButton = new JButton(i18n.getString("button.previous"));
+ buttonPanel.add(backButton, BorderLayout.WEST);
+ backButton.addActionListener(lSymAction);
+ }
+ //}}
+ }
+
+ public String getTitle() {
+ return this.title;
+ }
+
+ /**
+ * [次へ]ボタンをクリックした時の動作
+ * @param event
+ */
+ void nextButton_Action(ActionEvent event) {
+ this.tabbe.setSelectedIndex(this.nextNumber);
+ }
+
+ /**
+ * [戻る]ボタンをクリックした時の動作
+ * @param event
+ */
+ void backButton_Action(ActionEvent event) {
+ this.tabbe.setSelectedIndex(this.backNumber);
+ }
+
+ class SymAction implements java.awt.event.ActionListener {
+ @Override
+ public void actionPerformed(java.awt.event.ActionEvent event) {
+ Object object = event.getSource();
+ if (object == nextButton) {
+ nextButton_Action(event);
+ }
+ else if (object == backButton) {
+ backButton_Action(event);
+ }
+ }
+ }
+}