diff --git a/src/main/java/osm/jp/gpx/matchtime/gui/AdjustTerra.java b/src/main/java/osm/jp/gpx/matchtime/gui/AdjustTerra.java index c9bde23..d7f45df 100644 --- a/src/main/java/osm/jp/gpx/matchtime/gui/AdjustTerra.java +++ b/src/main/java/osm/jp/gpx/matchtime/gui/AdjustTerra.java @@ -1,14 +1,11 @@ package osm.jp.gpx.matchtime.gui; import java.awt.*; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ResourceBundle; import java.util.TimeZone; import javax.swing.*; -import javax.swing.event.DocumentEvent; import osm.jp.gpx.*; /** @@ -78,27 +75,6 @@ } } - class SimpleCardListener implements PropertyChangeListener { - int cardNo; - ParameterPanel param; - - SimpleCardListener(int cardNo, ParameterPanel param) { - this.cardNo = cardNo; - this.param = param; - } - - @Override - public void propertyChange(PropertyChangeEvent evt) { - String propertyName = evt.getPropertyName(); - if (propertyName.equals(AppParameters.IMG_SOURCE_FOLDER)) { - toEnable(cardNo, param.isEnable()); - } - else { - toEnable(cardNo, param.isEnable()); - } - } - } - /** * データベース内のテーブルを一覧で表示するFrame * @throws IOException @@ -149,7 +125,7 @@ i18n.getString("label.110") +": ", params.getProperty(AppParameters.IMG_SOURCE_FOLDER) ); - arg1_srcFolder.addPropertyChangeListener(new SimpleCardListener(0, arg1_srcFolder)); + arg1_srcFolder.addPropertyChangeListener(new SimpleCardListener(cards, cardPanel, 0, arg1_srcFolder)); Card card = new CardSourceFolder(cardPanel, arg1_srcFolder); cardPanel.addTab(card.getTitle(), card); @@ -178,7 +154,7 @@ null, arg2_baseTimeImg ); - arg2_basetime.addPropertyChangeListener(new SimpleCardListener(1, arg2_basetime)); + arg2_basetime.addPropertyChangeListener(new SimpleCardListener(cards, cardPanel, 1, arg2_basetime)); // EXIFの日時を基準にする arg2_basetime.addExifBase(i18n.getString("label.220"), params); @@ -204,14 +180,9 @@ i18n.getString("label.410") + ": ", params.getProperty(AppParameters.GPX_SOURCE_FOLDER) ); - arg3_gpxFile.argField.getDocument().addDocumentListener( - new SimpleDocumentListener() { - @Override - public void update(DocumentEvent e) { - toEnable(2, arg3_gpxFile.isEnable()); - } - } - ); + arg3_gpxFile.addPropertyChangeListener( + new SimpleCardListener(cards, cardPanel, 2, arg3_gpxFile) + ); // "セグメント'trkseg'の最初の1ノードは無視する。" arg3_gpxFile.addNoFirstNode(i18n.getString("label.420"), params); @@ -236,14 +207,9 @@ 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()); - } - } - ); + arg4_output.addPropertyChangeListener( + new SimpleCardListener(cards, cardPanel, 3, arg4_output) + ); // "IMGの変換をする" arg4_output.addCheckChangeImage(i18n.getString("label.510"), params); @@ -371,20 +337,6 @@ (new QuitDialog(this, true)).setVisible(true); } - void toEnable(final int cardNo, final boolean enable) { - if ((cardNo >= 0) && (cardNo < cards.length)) { - cardPanel.setEnabledAt(cardNo, enable); - if ((cardNo -1) >= 0) { - cards[cardNo -1].nextButton.setEnabled(enable); - } - if ((cardNo +1) < cards.length) { - cardPanel.setEnabledAt(cardNo+1, enable); - cards[cardNo +1].backButton.setEnabled(enable); - cards[cardNo].nextButton.setEnabled(enable); - } - } - } - //ImageIcon refImage; /** Returns an ImageIcon, or null if the path was invalid. diff --git a/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanel.java b/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanel.java index 9f28907..13ed4fe 100644 --- a/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanel.java +++ b/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanel.java @@ -2,24 +2,28 @@ import java.awt.Dimension; import java.awt.event.ActionListener; +import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; import java.util.ResourceBundle; import javax.swing.BoxLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; +import javax.swing.event.DocumentEvent; /** * パラメータを設定する為のパネル。 * この1インスタンスで、1パラメータをあらわす。 */ -public abstract class ParameterPanel extends JPanel implements ParamAction { +public abstract class ParameterPanel extends JPanel implements PropertyChangeListener { private static final long serialVersionUID = 4629824800747170556L; public String propertyName; public JTextField argField; public JLabel argLabel; public ResourceBundle i18n = ResourceBundle.getBundle("i18n"); + private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); public ParameterPanel(String name, String label, String text) { this(); @@ -38,6 +42,16 @@ this.setMaximumSize(new Dimension(1920, 40)); this.add(argLabel); this.add(argField); + + // 'argField' ’が変更されたら、「update イベントを発火させる + this.argField.getDocument().addDocumentListener( + new SimpleDocumentListener() { + @Override + public void update(DocumentEvent e) { + pcs.firePropertyChange(getName(), "", argField.getText()); + } + } + ); } public ParameterPanel setLabel(String label) { @@ -49,9 +63,17 @@ this.argField.addActionListener(l); } - public abstract void addPropertyChangeListener(PropertyChangeListener listener); + @Override + public void addPropertyChangeListener(PropertyChangeListener listener) { + this.pcs.addPropertyChangeListener(listener); + } - public abstract void removePropertyChangeListener(PropertyChangeListener listener); + @Override + public void removePropertyChangeListener(PropertyChangeListener listener) { + this.pcs.removePropertyChangeListener(listener); + } + + public abstract boolean isEnable(); @Override public void setName(String name) { @@ -63,13 +85,17 @@ return this.propertyName; } - @Override public void setText(String text) { this.argField.setText(text); } - @Override public String getText() { return this.argField.getText(); } + + @Override + public void propertyChange(PropertyChangeEvent evt) { + // TODO Auto-generated method stub + + } } diff --git a/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelFolder.java b/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelFolder.java index 182cf83..52721dd 100644 --- a/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelFolder.java +++ b/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelFolder.java @@ -2,13 +2,11 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; +import java.beans.PropertyChangeEvent; import java.io.File; import java.io.FileNotFoundException; import javax.swing.JButton; import javax.swing.JFileChooser; -import javax.swing.event.DocumentEvent; @SuppressWarnings("serial") public abstract class ParameterPanelFolder extends ParameterPanel implements ActionListener @@ -16,7 +14,6 @@ JFileChooser fc; JButton selectButton; int chooser; - private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); /** * コンストラクタ @@ -41,16 +38,6 @@ ); selectButton.addActionListener(this); this.add(selectButton); - - // 'argField' ’が変更されたら、「update イベントを発火させる - this.argField.getDocument().addDocumentListener( - new SimpleDocumentListener() { - @Override - public void update(DocumentEvent e) { - pcs.firePropertyChange(getName(), "", argField.getText()); - } - } - ); } public void setEnable(boolean f) { @@ -73,7 +60,33 @@ return sdir; } + /** + * 有効な値が設定されているかどうか + * + * @return [folder.text=有効なディレクトリを示している] + */ @Override + public boolean isEnable() { + String text = this.argField.getText(); + if (text == null) { + return false; + } + try { + getDirectory(); + return true; + } + catch (Exception e) { + return false; + } + } + + @Override + public void propertyChange(PropertyChangeEvent evt) { + // TODO Auto-generated method stub + + } + + @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == selectButton){ File sdir; @@ -100,37 +113,4 @@ } } } - - /** - * 有効な値が設定されているかどうか - * @return - */ - @Override - public boolean isEnable() { - String text = this.argField.getText(); - if (text == null) { - return false; - } - try { - File dir = new File(text); - return (dir.exists() && dir.isDirectory()); - } - catch (Exception e) { - return false; - } - } - - @Override - public void addPropertyChangeListener(PropertyChangeListener listener) { - this.pcs.addPropertyChangeListener(listener); - } - - @Override - public void removePropertyChangeListener(PropertyChangeListener listener) { - this.pcs.removePropertyChangeListener(listener); - } - - void firePropertyChange(String text) { - this.pcs.firePropertyChange(getName(), "", text); - } } \ No newline at end of file diff --git a/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelGpx.java b/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelGpx.java index 9ca322c..f51b730 100644 --- a/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelGpx.java +++ b/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelGpx.java @@ -2,7 +2,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeEvent; import java.io.File; import javax.swing.JButton; @@ -84,6 +84,9 @@ /** * このフィールドに有効な値が設定されているかどうか + * [ + * () + * ] * @return */ @Override @@ -107,13 +110,7 @@ } @Override - public void addPropertyChangeListener(PropertyChangeListener listener) { - // TODO Auto-generated method stub - - } - - @Override - public void removePropertyChangeListener(PropertyChangeListener listener) { + public void propertyChange(PropertyChangeEvent evt) { // TODO Auto-generated method stub } diff --git a/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelImageFile.java b/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelImageFile.java index 1b6373c..a8d0847 100644 --- a/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelImageFile.java +++ b/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelImageFile.java @@ -3,7 +3,6 @@ import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; import java.io.File; import java.io.FileNotFoundException; import java.util.Arrays; @@ -11,15 +10,12 @@ import javax.swing.JButton; import javax.swing.JFileChooser; -import javax.swing.JTextField; -import javax.swing.event.DocumentEvent; @SuppressWarnings("serial") -public class ParameterPanelImageFile extends ParameterPanel implements PropertyChangeListener { +public class ParameterPanelImageFile extends ParameterPanel { JFileChooser fc; public JButton openButton; public ParameterPanelSourceFolder paramDir; - private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); public ParameterPanelImageFile( String name, String label, String text, @@ -36,16 +32,6 @@ //Create a file chooser this.paramDir = paramDir; this.paramDir.addPropertyChangeListener(new SourceFolderChangeListener()); - - // 'argField' ’が変更されたら、「update イベントを発火させる - this.argField.getDocument().addDocumentListener( - new SimpleDocumentListener() { - @Override - public void update(DocumentEvent e) { - pcs.firePropertyChange(getName(), "", argField.getText()); - } - } - ); } /** @@ -150,29 +136,4 @@ } return false; } - - @Override - public void addPropertyChangeListener(PropertyChangeListener listener) { - this.pcs.addPropertyChangeListener(listener); - } - - @Override - public void removePropertyChangeListener(PropertyChangeListener listener) { - this.pcs.removePropertyChangeListener(listener); - } - - @Override - public void propertyChange(PropertyChangeEvent evt) { - - // TODO Nothing to do. - - Object eventTriggerObject = evt.getSource(); - String propertyName = evt.getPropertyName(); - if (JTextField.class.isInstance(eventTriggerObject)) { - if (propertyName.equals(getName())) { - String newValue = (String) evt.getNewValue(); - System.out.println("["+ propertyName +"] propertyChanged() newValue:" + newValue); - } - } - } } \ No newline at end of file diff --git a/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelSourceFolder.java b/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelSourceFolder.java index be1998f..0f5cbfa 100644 --- a/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelSourceFolder.java +++ b/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelSourceFolder.java @@ -18,14 +18,13 @@ /** * 有効な値が設定されているかどうか + * [argField.getText() = 有効なディレクトリを示している] + * AND [folder is not empty.] + * AND [Image file exist in the folder.] * @return */ @Override public boolean isEnable() { - String text = this.argField.getText(); - if (text == null) { - return false; - } try { File dir = super.getDirectory(); File[] files = dir.listFiles(new ImageFileFilter()); diff --git a/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelTime.java b/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelTime.java index d9c2987..b77d3cf 100644 --- a/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelTime.java +++ b/src/main/java/osm/jp/gpx/matchtime/gui/ParameterPanelTime.java @@ -2,9 +2,9 @@ import java.awt.Window; import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; import java.io.File; import java.io.IOException; import java.text.DateFormat; @@ -14,7 +14,6 @@ import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JRadioButton; -import javax.swing.event.DocumentEvent; import org.apache.commons.imaging.ImageReadException; import org.apache.commons.imaging.Imaging; @@ -30,9 +29,8 @@ * パラメータを設定する為のパネル。 * この1インスタンスで、1パラメータをあらわす。 */ -public class ParameterPanelTime extends ParameterPanel { +public class ParameterPanelTime extends ParameterPanel implements ActionListener { private static final long serialVersionUID = 1683226418990348336L; - private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); SimpleDateFormat sdf = (SimpleDateFormat)DateFormat.getDateTimeInstance(); ParameterPanelImageFile imageFile; // 基準時刻画像 @@ -68,16 +66,6 @@ resetButton.addActionListener(resetAction); resetButton.setVisible(false); this.add(resetButton); - - // 'argField' ’が変更されたら、「update イベントを発火させる - this.argField.getDocument().addDocumentListener( - new SimpleDocumentListener() { - @Override - public void update(DocumentEvent e) { - pcs.firePropertyChange(getName(), "", argField.getText()); - } - } - ); } public ParameterPanelTime setOwner(Window owner) { @@ -235,12 +223,14 @@ } @Override - public void addPropertyChangeListener(PropertyChangeListener listener) { - this.pcs.addPropertyChangeListener(listener); + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + } @Override - public void removePropertyChangeListener(PropertyChangeListener listener) { - this.pcs.removePropertyChangeListener(listener); + public void propertyChange(PropertyChangeEvent evt) { + // TODO Auto-generated method stub + } } diff --git a/src/main/java/osm/jp/gpx/matchtime/gui/SimpleCardListener.java b/src/main/java/osm/jp/gpx/matchtime/gui/SimpleCardListener.java new file mode 100644 index 0000000..f04db02 --- /dev/null +++ b/src/main/java/osm/jp/gpx/matchtime/gui/SimpleCardListener.java @@ -0,0 +1,48 @@ +package osm.jp.gpx.matchtime.gui; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +import javax.swing.JTabbedPane; + +import osm.jp.gpx.AppParameters; + +public class SimpleCardListener implements PropertyChangeListener { + int cardNo; + ParameterPanel param; + JTabbedPane cardPanel; // ウィザード形式パネル(タブ型) + Card[] cards; + + SimpleCardListener(Card[] cards, JTabbedPane cardPanel, int cardNo, ParameterPanel param) { + this.cards = cards; + this.cardPanel = cardPanel; + this.cardNo = cardNo; + this.param = param; + } + + @Override + public void propertyChange(PropertyChangeEvent evt) { + String propertyName = evt.getPropertyName(); + if (propertyName.equals(AppParameters.IMG_SOURCE_FOLDER)) { + toEnable(cardNo, param.isEnable()); + } + else { + toEnable(cardNo, param.isEnable()); + } + } + + void toEnable(final int cardNo, final boolean enable) { + if ((cardNo >= 0) && (cardNo < cards.length)) { + cardPanel.setEnabledAt(cardNo, enable); + if ((cardNo -1) >= 0) { + cards[cardNo -1].nextButton.setEnabled(enable); + } + if ((cardNo +1) < cards.length) { + cardPanel.setEnabledAt(cardNo+1, enable); + cards[cardNo +1].backButton.setEnabled(enable); + cards[cardNo].nextButton.setEnabled(enable); + } + } + } +} + diff --git a/src/main/java/osm/jp/gpx/matchtime/gui/parameters/package-info.java b/src/main/java/osm/jp/gpx/matchtime/gui/parameters/package-info.java new file mode 100644 index 0000000..4048a5e --- /dev/null +++ b/src/main/java/osm/jp/gpx/matchtime/gui/parameters/package-info.java @@ -0,0 +1 @@ +package osm.jp.gpx.matchtime.gui.parameters; \ No newline at end of file