OSDN Git Service

Java11 - AdjustTime2
[importpicture/importpicture.git] / importPicture / src / osm / jp / gpx / matchtime / gui / AdjustTime.java
diff --git a/importPicture/src/osm/jp/gpx/matchtime/gui/AdjustTime.java b/importPicture/src/osm/jp/gpx/matchtime/gui/AdjustTime.java
deleted file mode 100644 (file)
index 5ab17fd..0000000
+++ /dev/null
@@ -1,756 +0,0 @@
-package osm.jp.gpx.matchtime.gui;
-
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.io.File;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.ResourceBundle;
-import java.util.TimeZone;
-import javax.swing.*;
-import osm.jp.gpx.*;
-import org.apache.commons.imaging.Imaging;
-import org.apache.commons.imaging.common.ImageMetadata;
-import org.apache.commons.imaging.formats.jpeg.JpegImageMetadata;
-import org.apache.commons.imaging.formats.tiff.TiffImageMetadata;
-import org.apache.commons.imaging.formats.tiff.constants.ExifTagConstants;
-
-/**
- * 本プログラムのメインクラス
- */
-@SuppressWarnings("serial")
-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";
-
-    AppParameters params;
-    SimpleDateFormat dfjp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
-
-    // Used for addNotify check.
-    boolean fComponentsAdjusted = false;
-    public ResourceBundle i18n = ResourceBundle.getBundle("i18n");
-    
-    //{{DECLARE_CONTROLS
-    JPanel cardPanel;       // ウィザード形式パネル(カード型)
-    JPanel[] cards;
-    int cardPanelNo = 0;
-    JPanel argsPanel;          // パラメータ設定パネル       (上部)
-    JScrollPane imageSPane;    // スクロールパネル
-    JLabel imageLabel;         // 基準時刻画像表示
-    ButtonGroup baseTimeGroup; // 基準時刻の指定グループ
-    JRadioButton exifBase;             // EXIF日時を基準にする/ !(ファイル更新日時を基準にする)
-    JRadioButton fupdateBase;  // File更新日時を基準にする/ !(EXIF日時を基準にする)
-    JCheckBox noFirstNode;     // GPX: <trkseg>セグメントの最初の1ノードは無視する。 {ON | OFF}
-    JCheckBox gpxReuse;                // 生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も対象にする。 {ON | OFF}
-    JTextArea textArea;                // 実行結果表示領域
-    //ImagePreview imagePane;  // 基準時刻画像表示
-    ParameterPanelFolder arg1_srcFolder;
-    ParameterPanelImageFile arg2_baseTimeImg;
-    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 書き出しフォルダ
-    ParameterPanelGpx arg4_gpxFolder;          // GPXファイル・フォルダ
-    
-    JPanel buttonPanel;                // ボタンパネル   (下部)
-    JButton openButton;                // [Fit]ボタン
-    JButton zoomInButton;      // [Zoom in]ボタン
-    JButton zoomOutButton;     // [Zoom out]ボタン
-    
-    JButton nextButton;     // [次へ]ボタン
-    JButton backButton;     // [戻る]ボタン
-    JButton doButton;       // [処理実行]ボタン
-    //}}
-
-    //{{DECLARE_MENUS
-    java.awt.MenuBar mainMenuBar;
-    java.awt.Menu menu1;
-    java.awt.MenuItem miDoNewFileList;
-    java.awt.MenuItem miDoDirSize;
-    java.awt.MenuItem miDoReadXML;
-    java.awt.MenuItem miExit;
-    java.awt.Menu menu3;
-    java.awt.MenuItem miAbout;
-    //}}
-
-    class SymWindow extends java.awt.event.WindowAdapter {
-        /**
-         * このFrameが閉じられるときの動作。
-         * このパネルが閉じられたら、このアプリケーションも終了させる。
-         */
-        @Override
-        public void windowClosing(java.awt.event.WindowEvent event) {
-            Object object = event.getSource();
-            if (object == AdjustTime.this) {
-                DbMang_WindowClosing(event);
-            }
-        }
-    }
-
-    class SymAction implements java.awt.event.ActionListener {
-        @Override
-        public void actionPerformed(java.awt.event.ActionEvent event) {
-            Object object = event.getSource();
-            if (object == miAbout) {
-                miAbout_Action(event);
-            }
-            else if (object == miExit) {
-                miExit_Action(event);
-            }
-            else if (object == openButton) {
-               imageView_Action(event);
-            }
-            else if (object == zoomInButton) {
-               zoomin_Action(event);
-            }
-            else if (object == zoomOutButton) {
-               zoomout_Action(event);
-            }
-            else if (object == arg2_baseTimeImg.argField) {
-               imageView_Action(event);
-            }
-            else if (object == arg2_baseTimeImg.openButton) {
-               selectImage_Action(event);
-               imageView_Action(event);
-            }
-            else if (object == outputIMG) {
-               outputIMG_Action(event);
-            }
-            else if (object == outputIMG_all) {
-               outputIMGall_Action(event);
-            }
-            else if (object == exifON) {
-               exifON_Action(event);
-            }
-            else if (object == gpxOutputWpt) {
-               gpxOutputWpt_Action(event);
-            }
-            else if (object == gpxOutputSpeed) {
-               gpxOutputSpeed_Action(event);
-            }
-            else if (object == doButton) {
-               doButton_Action(event);
-            }
-            else if (object == nextButton) {
-               nextButton_Action(event);
-            }
-            else if (object == backButton) {
-               backButton_Action(event);
-            }
-        }
-    }
-    
-    /**
-     * データベース内のテーブルを一覧で表示するFrame
-     * @throws IOException 
-     */
-    @SuppressWarnings("OverridableMethodCallInConstructor")
-    public AdjustTime() throws IOException
-    {
-        dfjp.setTimeZone(TimeZone.getTimeZone("JST"));
-
-        // INIT_CONTROLS
-        Container container = getContentPane();
-        container.setLayout(new BorderLayout());
-        setSize(
-            getInsets().left + getInsets().right + 720,
-            getInsets().top + getInsets().bottom + 480
-        );
-        setTitle(AdjustTime.PROGRAM_NAME +" v"+ AdjustTime.PROGRAM_VARSION);
-        
-        //---- CENTER -----
-        JPanel mainPanel = new JPanel();
-        mainPanel.setLayout(new BorderLayout());
-        container.add(mainPanel, BorderLayout.CENTER);
-        
-        //---- SOUTH -----
-        JPanel southPanel = new JPanel(new BorderLayout());
-        southPanel.add(Box.createVerticalStrut(10), BorderLayout.SOUTH);
-        southPanel.add(Box.createVerticalStrut(10), BorderLayout.NORTH);
-        container.add(southPanel, BorderLayout.SOUTH);
-        
-        //---- SPACE -----
-        container.add(Box.createVerticalStrut(30), BorderLayout.NORTH);
-        container.add(Box.createHorizontalStrut(10), BorderLayout.WEST);
-        container.add(Box.createHorizontalStrut(10), BorderLayout.EAST);
-        
-        params = new AppParameters();
-        
-        //---------------------------------------------------------------------
-        cardPanel = new JPanel();
-        cardPanel.setLayout(new CardLayout());
-        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);
-        
-        //---------------------------------------------------------------------
-        // 2.[基準時刻画像]設定パネル
-        cardNo++;
-        cards[cardNo].setLayout(new BorderLayout());
-        JLabel label2 = new JLabel();
-        label2.setText(i18n.getString("label.200"));
-        cards[cardNo].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);
-        }
-        cards[cardNo].add(argsPanel, BorderLayout.CENTER);
-        
-        //---------------------------------------------------------------------
-        // 3.基準時刻の入力画面
-        cardNo++;
-        cards[cardNo].setLayout(new BorderLayout());
-        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);
-        cards[cardNo].add(argsPanel, 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);
-        
-        //---------------------------------------------------------------------
-        // 4.GPXファイル設定画面
-        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());
-
-        // 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")
-            )
-        );
-        cards[cardNo].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);
-
-        // "出力フォルダ: "
-        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);
-        
-        // "ポイントマーカー<WPT>をGPXファイルに出力する"
-        gpxOutputWpt = new JCheckBox(
-            i18n.getString("label.550"),
-            Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OUTPUT_WPT))
-        );
-        gpxOutputWpt.setEnabled(true);
-        tmpPanel5.add(gpxOutputWpt);
-        
-        // "ソースGPXの<MAGVAR>を無視する"
-        gpxOverwriteMagvar = new JCheckBox(
-            i18n.getString("label.560"),
-            Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OVERWRITE_MAGVAR))
-        );
-        gpxOverwriteMagvar.setEnabled(true);
-        tmpPanel5.add(gpxOverwriteMagvar);
-        
-        // "出力GPXに<SPEED>を上書きする"
-        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);
-
-
-        //---------------------------------------------------------------------
-        // INIT_MENUS
-        menu1 = new java.awt.Menu("File");
-        miExit = new java.awt.MenuItem(i18n.getString("menu.quit"));
-        miExit.setFont(new Font("Dialog", Font.PLAIN, 12));
-        menu1.add(miExit);
-
-        miAbout = new java.awt.MenuItem("About...");
-        miAbout.setFont(new Font("Dialog", Font.PLAIN, 12));
-
-        menu3 = new java.awt.Menu("Help");
-        menu3.setFont(new Font("Dialog", Font.PLAIN, 12));
-        menu3.add(miAbout);
-
-        mainMenuBar = new java.awt.MenuBar();
-        mainMenuBar.setHelpMenu(menu3);
-        mainMenuBar.add(menu1);
-        mainMenuBar.add(menu3);
-        setMenuBar(mainMenuBar);
-
-        //{{REGISTER_LISTENERS
-        SymWindow aSymWindow = new SymWindow();
-        this.addWindowListener(aSymWindow);
-        SymAction lSymAction = new SymAction();
-        miAbout.addActionListener(lSymAction);
-        miExit.addActionListener(lSymAction);
-        openButton.addActionListener(lSymAction);
-        zoomOutButton.addActionListener(lSymAction);
-        zoomInButton.addActionListener(lSymAction);
-        arg2_baseTimeImg.argField.addActionListener(lSymAction);
-        arg2_baseTimeImg.openButton.addActionListener(lSymAction);
-        doButton.addActionListener(lSymAction);
-        outputIMG_all.addActionListener(lSymAction);
-        exifON.addActionListener(lSymAction);
-        gpxOutputSpeed.addActionListener(lSymAction);
-        noFirstNode.addActionListener(lSymAction);
-        gpxReuse.addActionListener(lSymAction);
-        //arg1Panel_4.field.addActionListener(lSymAction);
-        nextButton.addActionListener(lSymAction);
-        backButton.addActionListener(lSymAction);
-        //}}
-    }
-    
-    /**
-     * Shows or hides the component depending on the boolean flag b.
-     * @param b        trueのときコンポーネントを表示; その他のとき, componentを隠す.
-     * @see java.awt.Component#isVisible
-     */
-    @Override
-    public void setVisible(boolean b) {
-        if(b) {
-            setLocation(50, 50);
-        }
-        super.setVisible(b);
-    }
-    
-    /**
-     * このクラスをインスタンスを生成して表示する。
-     * コマンドラインの引数はありません。
-     * @param args
-     */    
-    @SuppressWarnings("UseSpecificCatch")
-    static public void main(String args[]) {
-       SwingUtilities.invokeLater(() -> {
-            try {
-                createAndShowGUI();
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        });
-    }
-    private static void createAndShowGUI() throws IOException {
-       (new AdjustTime()).setVisible(true);
-    }
-
-    @Override
-    public void addNotify()    {
-        // Record the size of the window prior to calling parents addNotify.
-        Dimension d = getSize();
-
-        super.addNotify();
-
-        if (fComponentsAdjusted)
-            return;
-
-        // Adjust components according to the insets
-        setSize(getInsets().left + getInsets().right + d.width, getInsets().top + getInsets().bottom + d.height);
-        Component components[] = getComponents();
-        for (Component component : components) {
-            Point p = component.getLocation();
-            p.translate(getInsets().left, getInsets().top);
-            component.setLocation(p);
-        }
-        fComponentsAdjusted = true;
-    }
-
-    void DbMang_WindowClosing(java.awt.event.WindowEvent event)        {
-        setVisible(false);  // hide the Manager
-        dispose();                     // free the system resources
-        System.exit(0);                // close the application
-    }
-
-    void miAbout_Action(java.awt.event.ActionEvent event) {
-        // Action from About Create and show as modal
-        (new AboutDialog(this, true)).setVisible(true);
-    }
-    
-    void miExit_Action(java.awt.event.ActionEvent event) {
-        // Action from Exit Create and show as modal
-        //(new hayashi.yuu.tools.gui.QuitDialog(this, true)).setVisible(true);
-        (new QuitDialog(this, true)).setVisible(true);
-    }
-
-    ImageIcon refImage;
-    
-    /**
-     * 選択された画像ファイルを表示する
-     * 基準画像ボタンがクリックされた時に、基準時刻フィールドに基準画像の作成日時を設定する。
-     * @param ev 
-     */
-    @SuppressWarnings("UseSpecificCatch")
-    public void imageView_Action(ActionEvent ev) {
-       String path = (new File(arg1_srcFolder.getText(), arg2_baseTimeImg.getText())).getPath();
-       
-       File timeFile = new File(path);
-       if (exifBase.isSelected()) {
-            try {
-               ImageMetadata meta = Imaging.getMetadata(timeFile);
-                JpegImageMetadata jpegMetadata = (JpegImageMetadata)meta;
-                if (jpegMetadata != null) {
-                    TiffImageMetadata exif = jpegMetadata.getExif();
-                    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_basetime.argField.setText(dfjp.format(new Date(lastModifyTime)));
-                    }
-                    else {
-                       arg3_basetime.argField.setText("exif == null");
-                    }
-                }
-            }
-            catch (Exception e) {}
-       }
-       else {
-            long lastModifyTime = timeFile.lastModified();
-            arg3_basetime.argField.setText(dfjp.format(new Date(lastModifyTime)));
-       }
-       
-       int size_x = imageSPane.getWidth() - 8;
-       ImageIcon tmpIcon = new ImageIcon(path);
-       refImage = tmpIcon;
-        if (tmpIcon.getIconWidth() > size_x) {
-            refImage = new ImageIcon(tmpIcon.getImage().getScaledInstance(size_x, -1, Image.SCALE_DEFAULT));
-        }
-       imageLabel.setIcon(refImage);
-        repaint();
-    }
-
-    public void zoomin_Action(ActionEvent ev) {
-       if (refImage != null) {
-            int size_x = imageLabel.getWidth();
-            String path = (new File(arg1_srcFolder.getText(), arg2_baseTimeImg.getText())).getPath();
-            ImageIcon tmpIcon = new ImageIcon(path);
-            refImage = new ImageIcon(tmpIcon.getImage().getScaledInstance(size_x * 2, -1, Image.SCALE_DEFAULT));
-            imageLabel.setIcon(refImage);
-            repaint();
-       }
-    }
-
-    public void zoomout_Action(ActionEvent ev) {
-       if (refImage != null) {
-            int size_x = imageLabel.getWidth();
-            ImageIcon tmpIcon = refImage;
-            refImage = new ImageIcon(tmpIcon.getImage().getScaledInstance(size_x / 2, -1, Image.SCALE_DEFAULT));
-            imageLabel.setIcon(refImage);
-            repaint();
-       }
-    }
-    
-    /**
-     * ソースディレクトリが選択された時のアクション
-     * → AdjustTime.ini に書き込む
-     * @param ev
-     */
-    public void selectSource_Action(ActionEvent ev) {
-    }
-    
-    public void selectImage_Action(ActionEvent ev) {
-       JFileChooser fc;
-
-        //Set up the file chooser.
-        File sdir = new File(arg1_srcFolder.getText());
-        System.out.println(sdir.getPath());
-        if (sdir.isDirectory()) {
-            fc = new JFileChooser(sdir);
-        }
-        else {
-            fc = new JFileChooser();
-        }
-
-        //Add a custom file filter and disable the default
-        //(Accept All) file filter.
-        fc.addChoosableFileFilter(new ImageFilter());
-        fc.setAcceptAllFileFilterUsed(false);
-
-        //Add custom icons for file types.
-        fc.setFileView(new ImageFileView());
-
-        //Add the preview pane.
-        fc.setAccessory(new ImagePreview(fc));
-
-        //Show it. "選択"
-        int returnVal = fc.showDialog(this, i18n.getString("dialog.select"));
-
-        //Process the results.
-        if (returnVal == JFileChooser.APPROVE_OPTION) {
-            File file = fc.getSelectedFile();
-            arg2_baseTimeImg.argField.setText(file.getName());
-        }
-
-        //Reset the file chooser for the next time it's shown.
-        fc.setSelectedFile(null);
-    }
-    
-    /** Returns an ImageIcon, or null if the path was invalid.
-     * @param path
-     * @return  */
-    public static ImageIcon createImageIcon(String path) {
-        java.net.URL imgURL = AdjustTime.class.getResource(path);
-        if (imgURL != null) {
-            return new ImageIcon(imgURL);
-        } else {
-            System.err.println("Couldn't find file: " + path);
-            return null;
-        }
-    }
-    
-    /**
-     * checkbox[IMG変換]を変更した場合のアクション
-     *         ON ー> IMG出力フォルダのフィールドを有効にする
-     *  OFF -> IMG出力フォルダのフィールドを無効にする
-     * @param event
-     */
-    void outputIMG_Action (ActionEvent event) {
-        arg5_outputFolder.setEnabled(outputIMG.isEnabled());
-    }
-
-    /**
-     * checkbox[GPXファイル時間外のファイルもコピーする]を変更した場合のアクション
-     * @param event
-     */
-    void outputIMGall_Action (ActionEvent event) {
-    }
-
-    /**
-     * checkbox[EXIF書き出し]を変更した場合のアクション
-     * @param event
-     */
-    void exifON_Action (ActionEvent event) {
-    }
-
-    /**
-     * checkbox[GPXの<WPT>を出力する]を変更した場合のアクション
-     * @param event
-     */
-    void gpxOutputWpt_Action (ActionEvent event) {
-    }
-
-    /**
-     * checkbox[GPXの<SPPED>を書き換える]を変更した場合のアクション
-     * @param event
-     */
-    void gpxOutputSpeed_Action (ActionEvent event) {
-    }
-
-    /**
-     * [実行]ボタンをクリックしたときの動作
-     * @param event
-     */
-    @SuppressWarnings("UseSpecificCatch")
-    void doButton_Action(java.awt.event.ActionEvent event) {
-       doButton.setEnabled(false);
-
-       String[] argv = new String[0];
-       /*
-        argv[0] = arg1_srcFolder.getText();
-        argv[1] = arg2_baseTimeImg.getText();
-        argv[2] = arg3_basetiome.getText();
-        argv[3] = arg5_outputFolder.getText();
-        argv[4] = arg4_gpxFolder.getText();
-        */
-        this.params.setProperty(AppParameters.GPX_NO_FIRST_NODE, String.valueOf(noFirstNode.isSelected()));
-        this.params.setProperty(AppParameters.GPX_REUSE, String.valueOf(gpxReuse.isSelected()));
-        this.params.setProperty(AppParameters.GPX_SOURCE_FOLDER, arg4_gpxFolder.getText());
-        
-        if (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(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) {
-            e.printStackTrace();
-        }
-
-        (new DoDialog(this, argv)).setVisible(true);
-               
-       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));
-        }
-    }
-}