1 package osm.jp.gpx.matchtime.gui.restamp;
3 import java.io.IOException;
4 import java.util.Observable;
5 import java.util.Observer;
7 import javax.swing.event.DocumentEvent;
8 import osm.jp.gpx.AppParameters;
9 import osm.jp.gpx.matchtime.gui.AdjustTime;
10 import osm.jp.gpx.matchtime.gui.Card;
11 import osm.jp.gpx.matchtime.gui.ParameterPanelFolder;
12 import osm.jp.gpx.matchtime.gui.ParameterPanelImageFile;
13 import static osm.jp.gpx.matchtime.gui.AdjustTime.i18n;
14 import osm.jp.gpx.matchtime.gui.ParameterPanelTime;
15 import osm.jp.gpx.matchtime.gui.SimpleDocumentListener;
17 @SuppressWarnings("serial")
18 public class RestampDialog extends JDialog implements Observer
21 java.awt.Button closeButton;
22 JTabbedPane cardPanel; // ウィザード形式パネル(タブ型)
24 ParameterPanelFolder arg1_srcFolder; // 対象フォルダ
25 ParameterPanelImageFile arg2_baseTimeImg; // 開始画像ファイルパス
26 ParameterPanelTime arg2_basetime; // 開始画像の基準時刻:
27 ParameterPanelImageFile arg3_baseTimeImg; // 終了画像ファイルパス
28 ParameterPanelTime arg3_basetime; // 終了画像の基準時刻:
38 public void update(Observable arg0, Object arg1) {
39 String str = (String) arg1;
40 System.out.println("私はAです。観察対象の通知を検知したよ。" + str);
43 class SymWindow extends java.awt.event.WindowAdapter
46 public void windowClosing(java.awt.event.WindowEvent event) {
47 Object object = event.getSource();
48 if (object == RestampDialog.this) {
54 class SymAction implements java.awt.event.ActionListener
57 public void actionPerformed(java.awt.event.ActionEvent event) {
58 Object object = event.getSource();
59 if (object == closeButton) {
65 @SuppressWarnings("OverridableMethodCallInConstructor")
66 public RestampDialog(Frame parent, boolean modal) throws IOException {
70 setLayout(new BorderLayout());
72 getInsets().left + getInsets().right + 720,
73 getInsets().top + getInsets().bottom + 480
75 setTitle(i18n.getString("menu.restamp") + "... ");
78 JPanel mainPanel = new JPanel();
79 mainPanel.setLayout(new BorderLayout());
80 add(mainPanel, BorderLayout.CENTER);
83 JPanel southPanel = new JPanel(new BorderLayout());
84 southPanel.add(Box.createVerticalStrut(10), BorderLayout.SOUTH);
85 southPanel.add(Box.createVerticalStrut(10), BorderLayout.NORTH);
86 add(southPanel, BorderLayout.SOUTH);
89 add(Box.createVerticalStrut(30), BorderLayout.NORTH);
90 add(Box.createHorizontalStrut(10), BorderLayout.WEST);
91 add(Box.createHorizontalStrut(10), BorderLayout.EAST);
93 closeButton = new java.awt.Button();
94 closeButton.setLabel(i18n.getString("button.close") );
95 closeButton.setBounds(145,65,66,27);
96 southPanel.add(closeButton);
99 //---------------------------------------------------------------------
100 params = new AppParameters();
102 cardPanel = new JTabbedPane(JTabbedPane.LEFT);
103 mainPanel.add(cardPanel, BorderLayout.CENTER);
106 //---------------------------------------------------------------------
109 arg1_srcFolder = new ParameterPanelFolder(
110 i18n.getString("label.110") +": ",
111 params.getProperty(AppParameters.IMG_SOURCE_FOLDER)
113 arg1_srcFolder.argField
115 .addDocumentListener(
116 new SimpleDocumentListener() {
118 public void update(DocumentEvent e) {
119 toEnable(0, arg1_srcFolder.isEnable());
124 Card card = new CardSourceFolder(cardPanel, arg1_srcFolder);
125 cardPanel.addTab(card.getTitle(), card);
126 cardPanel.setEnabledAt(cardNo, true);
127 cards[cardNo] = card;
131 //---------------------------------------------------------------------
132 // 2. [基準画像(開始)]選択パネル
135 arg2_baseTimeImg = new ParameterPanelImageFile(
136 i18n.getString("label.210") +": ",
142 arg2_basetime = new ParameterPanelTime(
143 i18n.getString("label.310"),
147 arg2_basetime.argField.getDocument().addDocumentListener(
148 new SimpleDocumentListener() {
150 public void update(DocumentEvent e) {
151 toEnable(1, arg2_basetime.isEnable());
156 CardImageFile card = new CardImageFile(
157 cardPanel, arg2_basetime, (Window)this,
158 AdjustTime.i18n.getString("tab.restamp.200"), 0, 2);
159 cardPanel.addTab(card.getTitle(), card);
160 cardPanel.setEnabledAt(cardNo, false);
161 cards[cardNo] = card;
165 //---------------------------------------------------------------------
166 // 3. 最終画像の本当の時刻を設定の入力画面
169 arg3_baseTimeImg = new ParameterPanelImageFile(
170 i18n.getString("label.210") +": ",
176 arg3_basetime = new ParameterPanelTime(
177 i18n.getString("label.310"),
181 arg3_basetime.argField.getDocument().addDocumentListener(
182 new SimpleDocumentListener() {
184 public void update(DocumentEvent e) {
185 toEnable(2, arg3_basetime.isEnable());
190 CardImageFile card = new CardImageFile(
191 cardPanel, arg3_basetime, (Window)this,
192 AdjustTime.i18n.getString("tab.restamp.250"), 1, 3
194 cardPanel.addTab(card.getTitle(), card);
195 cardPanel.setEnabledAt(cardNo, false);
196 cards[cardNo] = card;
200 //---------------------------------------------------------------------
203 CardPerformFile card = new CardPerformFile(
208 cardPanel.addTab(card.getTitle(), card);
209 cardPanel.setEnabledAt(cardNo, false);
210 cards[cardNo] = card;
214 //{{REGISTER_LISTENERS
215 SymWindow aSymWindow = new SymWindow();
216 this.addWindowListener(aSymWindow);
217 SymAction lSymAction = new SymAction();
218 closeButton.addActionListener(lSymAction);
223 void toEnable(final int cardNo, final boolean enable) {
224 if ((cardNo >= 0) && (cardNo < cards.length)) {
225 cardPanel.setEnabledAt(cardNo, enable);
226 if ((cardNo -1) >= 0) {
227 cards[cardNo -1].nextButton.setEnabled(enable);
229 if ((cardNo +1) < cards.length) {
230 cardPanel.setEnabledAt(cardNo+1, enable);
231 cards[cardNo +1].backButton.setEnabled(enable);
232 cards[cardNo].nextButton.setEnabled(enable);
237 @SuppressWarnings("OverridableMethodCallInConstructor")
238 public RestampDialog(Frame parent, String title, boolean modal) throws IOException {
243 // Used for addNotify redundency check.
244 boolean fComponentsAdjusted = false;
247 public void addNotify() {
248 // Record the size of the window prior to calling parents addNotify.
251 // Only do this once.
252 if (fComponentsAdjusted) {
256 // Adjust components according to the insets
257 setSize(getInsets().left + getInsets().right + getSize().width, getInsets().top + getInsets().bottom + getSize().height);
258 Component components[] = getComponents();
259 for (Component component : components) {
260 Point p = component.getLocation();
261 p.translate(getInsets().left, getInsets().top);
262 component.setLocation(p);
265 // Used for addNotify check.
266 fComponentsAdjusted = true;
270 * Shows or hides the component depending on the boolean flag b.
271 * @param b if true, show the component; otherwise, hide the component.
272 * @see java.awt.Component#isVisible
275 public void setVisible(boolean b) {
277 Rectangle bounds = getParent().getBounds();
278 Rectangle abounds = getBounds();
279 setLocation(bounds.x + (bounds.width - abounds.width)/ 2,
280 bounds.y + (bounds.height - abounds.height)/2);