--- /dev/null
+<HTML>
+<HEAD>
+<META name="description"
+ content="Violet UML Editor cross format document" />
+<META name="keywords" content="Violet, UML" />
+<META charset="UTF-8" />
+<SCRIPT type="text/javascript">
+ function switchVisibility() {
+ var obj = document.getElementById("content");
+ obj.style.display = (obj.style.display == "block") ? "none" : "block";
+ }
+</SCRIPT>
+</HEAD>
+<BODY>
+ This file was generated with Violet UML Editor 2.1.0.
+ ( <A href=# onclick="switchVisibility()">View Source</A> / <A href="http://sourceforge.net/projects/violet/files/violetumleditor/" target="_blank">Download Violet</A> )
+ <BR />
+ <BR />
+ <SCRIPT id="content" type="text/xml"><![CDATA[<ClassDiagramGraph id="1">
+ <nodes id="2">
+ <ClassNode id="3">
+ <children id="4"/>
+ <location class="Point2D.Double" id="5" x="190.0" y="180.0"/>
+ <id id="6" value="2f119784-772d-4d25-bdd3-2d3cdcb8eadb"/>
+ <revision>1</revision>
+ <backgroundColor id="7">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ <alpha>255</alpha>
+ </backgroundColor>
+ <borderColor id="8">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ <alpha>255</alpha>
+ </borderColor>
+ <textColor reference="8"/>
+ <name id="9" justification="1" size="3" underlined="false">
+ <text>AdjustTime</text>
+ </name>
+ <attributes id="10" justification="0" size="4" underlined="false">
+ <text></text>
+ </attributes>
+ <methods id="11" justification="0" size="4" underlined="false">
+ <text></text>
+ </methods>
+ </ClassNode>
+ <ClassNode id="12">
+ <children id="13"/>
+ <location class="Point2D.Double" id="14" x="170.0" y="60.0"/>
+ <id id="15" value="2ad80769-6a8e-4658-b791-cfa751be254b"/>
+ <revision>1</revision>
+ <backgroundColor reference="7"/>
+ <borderColor reference="8"/>
+ <textColor reference="8"/>
+ <name id="16" justification="1" size="3" underlined="false">
+ <text>javax.swing.JFrame</text>
+ </name>
+ <attributes id="17" justification="0" size="4" underlined="false">
+ <text></text>
+ </attributes>
+ <methods id="18" justification="0" size="4" underlined="false">
+ <text></text>
+ </methods>
+ </ClassNode>
+ <ClassNode id="19">
+ <children id="20"/>
+ <location class="Point2D.Double" id="21" x="520.0" y="140.0"/>
+ <id id="22" value="43bab953-fffe-458f-aea0-ba38d7f4f847"/>
+ <revision>1</revision>
+ <backgroundColor reference="7"/>
+ <borderColor reference="8"/>
+ <textColor reference="8"/>
+ <name id="23" justification="1" size="3" underlined="false">
+ <text>ParameterPanel</text>
+ </name>
+ <attributes id="24" justification="0" size="4" underlined="false">
+ <text>+ argField: JTextFiel
++ argLabel: JLabel</text>
+ </attributes>
+ <methods id="25" justification="0" size="4" underlined="false">
+ <text>+ ParameterPanel(label: String, text: String)
++ getText() : String</text>
+ </methods>
+ </ClassNode>
+ <ClassNode id="26">
+ <children id="27"/>
+ <location class="Point2D.Double" id="28" x="570.0" y="40.0"/>
+ <id id="29" value="fb33d358-7b44-4579-a9cf-6730e59cc9db"/>
+ <revision>1</revision>
+ <backgroundColor reference="7"/>
+ <borderColor reference="8"/>
+ <textColor reference="8"/>
+ <name id="30" justification="1" size="3" underlined="false">
+ <text>javax.swing.JPanel</text>
+ </name>
+ <attributes id="31" justification="0" size="4" underlined="false">
+ <text></text>
+ </attributes>
+ <methods id="32" justification="0" size="4" underlined="false">
+ <text></text>
+ </methods>
+ </ClassNode>
+ </nodes>
+ <edges id="33">
+ <CompositionEdge id="34">
+ <start class="ClassNode" reference="19"/>
+ <end class="ClassNode" reference="3"/>
+ <startLocation class="Point2D.Double" id="35" x="60.0" y="80.0"/>
+ <endLocation class="Point2D.Double" id="36" x="120.0" y="70.0"/>
+ <transitionPoints id="37"/>
+ <id id="38" value="94ce5693-f615-430b-98b8-fe1c58a08603"/>
+ <revision>1</revision>
+ <bentStyle name="AUTO"/>
+ <startLabel>1</startLabel>
+ <middleLabel>arg3_basetime</middleLabel>
+ <endLabel>1</endLabel>
+ </CompositionEdge>
+ <InheritanceEdge id="39">
+ <start class="ClassNode" reference="3"/>
+ <end class="ClassNode" reference="12"/>
+ <startLocation class="Point2D.Double" id="40" x="50.0" y="20.0"/>
+ <endLocation class="Point2D.Double" id="41" x="80.0" y="50.0"/>
+ <transitionPoints id="42"/>
+ <id id="43" value="e0fb3af8-8ec8-4785-9504-01a6609cc612"/>
+ <revision>1</revision>
+ <bentStyle name="AUTO"/>
+ <startLabel></startLabel>
+ <middleLabel></middleLabel>
+ <endLabel></endLabel>
+ </InheritanceEdge>
+ <InheritanceEdge id="44">
+ <start class="ClassNode" reference="19"/>
+ <end class="ClassNode" reference="26"/>
+ <startLocation class="Point2D.Double" id="45" x="140.0" y="20.0"/>
+ <endLocation class="Point2D.Double" id="46" x="60.0" y="30.0"/>
+ <transitionPoints id="47"/>
+ <id id="48" value="03e9533f-a942-422a-820e-503bb1788c35"/>
+ <revision>1</revision>
+ <bentStyle name="AUTO"/>
+ <startLabel></startLabel>
+ <middleLabel></middleLabel>
+ <endLabel></endLabel>
+ </InheritanceEdge>
+ </edges>
+</ClassDiagramGraph>]]></SCRIPT>
+ <BR />
+ <BR />
+ <IMG alt="embedded diagram image" src="data:image/png;base64,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" />
+</BODY>
+</HTML>
\ No newline at end of file
import java.awt.*;
import java.awt.event.ActionEvent;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.TimeZone;
import javax.swing.*;
public class AdjustTime extends JFrame
{
public static final String PROGRAM_NAME = "AdjustTime for JOSM";
- public static final String PROGRAM_VARSION = "3.1";
- public static final String PROGRAM_UPDATE = "2017/05/15";
+ public static final String PROGRAM_VARSION = "3.2";
+ public static final String PROGRAM_UPDATE = "2017/06/28";
// Used for addNotify check.
boolean fComponentsAdjusted = false;
//ImagePreview imagePane; // 基準時刻画像表示
ParameterPanelFolder arg1_srcFolder;
ParameterPanelImageFile arg2_baseTimeImg;
- ParameterPanel arg3_basetiome;
+ ParameterPanel arg3_basetime; // 基準時刻:
JCheckBox outputIMG; // IMGの変換 する/しない
JCheckBox outputIMG_all; // 'out of GPX time'でもIMGの変換をする {ON | OFF}
JCheckBox exifON; // EXIF 書き出しモード / !(EXIFの書き換えはしない)
}
AppParameters params;
+ SimpleDateFormat dfjp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* データベース内のテーブルを一覧で表示するFrame
*/
public AdjustTime() throws IOException
{
+ dfjp.setTimeZone(TimeZone.getTimeZone("JST"));
+
// INIT_CONTROLS
Container container = getContentPane();
container.setLayout(new BorderLayout());
JLabel label3 = new JLabel();
label3.setText("<html><p>3. 正確な撮影時刻を入力してください。</p><ul><li>カメラの時計が正確ならば、設定を変更する必要はありません。</li></ul>");
argsPanel.add(label3);
- arg3_basetiome = new ParameterPanel(" 基準時刻: ", ImportPicture.TIME_FORMAT_STRING);
- argsPanel.add(arg3_basetiome);
+ arg3_basetime = new ParameterPanel(" 基準時刻: ", ImportPicture.TIME_FORMAT_STRING);
+ argsPanel.add(arg3_basetime);
cards[cardNo].add(argsPanel, BorderLayout.NORTH);
// 参考画像
if (exif != null) {
String dateTimeOriginal = exif.getFieldValue(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL)[0];
long lastModifyTime = (new SimpleDateFormat("yyyy:MM:dd HH:mm:ss")).parse(dateTimeOriginal).getTime();
- arg3_basetiome.argField.setText(ImportPicture.dfjp.format(new Date(lastModifyTime)));
+ arg3_basetime.argField.setText(dfjp.format(new Date(lastModifyTime)));
}
else {
- arg3_basetiome.argField.setText("exif == null");
+ arg3_basetime.argField.setText("exif == null");
}
}
}
}
else {
long lastModifyTime = timeFile.lastModified();
- arg3_basetiome.argField.setText(ImportPicture.dfjp.format(new Date(lastModifyTime)));
+ arg3_basetime.argField.setText(dfjp.format(new Date(lastModifyTime)));
}
int size_x = imageSPane.getWidth() - 8;
/**
* [実行]ボタンをクリックしたときの動作
* @param event
- * @throws IOException
- * @throws FileNotFoundException
*/
void doButton_Action(java.awt.event.ActionEvent event) {
doButton.setEnabled(false);
else {
this.params.setProperty(AppParameters.GPX_BASETIME, "FILE_UPDATE");
}
- 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, arg3_basetiome.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()));
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.dfuk.format(dfjp.parse(arg3_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) {}
+ catch(Exception e) {
+ e.printStackTrace();
+ }
(new DoDialog(this, argv)).setVisible(true);