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.Card;
10 import osm.jp.gpx.matchtime.gui.ParameterPanelFolder;
11 import osm.jp.gpx.matchtime.gui.ParameterPanelImageFile;
12 import static osm.jp.gpx.matchtime.gui.AdjustTime.i18n;
13 import osm.jp.gpx.matchtime.gui.ParameterPanelTime;
14 import osm.jp.gpx.matchtime.gui.SimpleDocumentListener;
16 @SuppressWarnings("serial")
17 public class RestampDialog extends Dialog implements Observer
20 java.awt.Button closeButton;
21 JTabbedPane cardPanel; // ウィザード形式パネル(タブ型)
23 ParameterPanelFolder arg1_srcFolder; // 対象フォルダ
24 ParameterPanelImageFile arg2_baseTimeImg; // 開始画像ファイルパス
25 ParameterPanelTime arg2_basetime; // 開始画像の基準時刻:
26 ParameterPanelImageFile arg3_baseTimeImg; // 終了画像ファイルパス
27 ParameterPanelTime arg3_basetime; // 終了画像の基準時刻:
37 public void update(Observable arg0, Object arg1) {
38 String str = (String) arg1;
39 System.out.println("私はAです。観察対象の通知を検知したよ。" + str);
42 class SymWindow extends java.awt.event.WindowAdapter
45 public void windowClosing(java.awt.event.WindowEvent event) {
46 Object object = event.getSource();
47 if (object == RestampDialog.this) {
53 class SymAction implements java.awt.event.ActionListener
56 public void actionPerformed(java.awt.event.ActionEvent event) {
57 Object object = event.getSource();
58 if (object == closeButton) {
64 @SuppressWarnings("OverridableMethodCallInConstructor")
65 public RestampDialog(Frame parent, boolean modal) throws IOException {
69 setLayout(new BorderLayout());
71 getInsets().left + getInsets().right + 720,
72 getInsets().top + getInsets().bottom + 480
74 setTitle(i18n.getString("menu.restamp") + "... ");
77 JPanel mainPanel = new JPanel();
78 mainPanel.setLayout(new BorderLayout());
79 add(mainPanel, BorderLayout.CENTER);
82 JPanel southPanel = new JPanel(new BorderLayout());
83 southPanel.add(Box.createVerticalStrut(10), BorderLayout.SOUTH);
84 southPanel.add(Box.createVerticalStrut(10), BorderLayout.NORTH);
85 add(southPanel, BorderLayout.SOUTH);
88 add(Box.createVerticalStrut(30), BorderLayout.NORTH);
89 add(Box.createHorizontalStrut(10), BorderLayout.WEST);
90 add(Box.createHorizontalStrut(10), BorderLayout.EAST);
92 closeButton = new java.awt.Button();
93 closeButton.setLabel(i18n.getString("button.close") );
94 closeButton.setBounds(145,65,66,27);
95 southPanel.add(closeButton);
98 //---------------------------------------------------------------------
99 params = new AppParameters();
101 cardPanel = new JTabbedPane(JTabbedPane.LEFT);
102 mainPanel.add(cardPanel, BorderLayout.CENTER);
105 //---------------------------------------------------------------------
108 arg1_srcFolder = new ParameterPanelFolder(
109 i18n.getString("label.110") +": ",
110 params.getProperty(AppParameters.IMG_SOURCE_FOLDER)
112 arg1_srcFolder.argField
114 .addDocumentListener(
115 new SimpleDocumentListener() {
117 public void update(DocumentEvent e) {
118 toEnable(0, arg1_srcFolder.isEnable());
123 Card card = new CardSourceFolder(cardPanel, arg1_srcFolder);
124 cardPanel.addTab(card.getTitle(), card);
125 cardPanel.setEnabledAt(cardNo, true);
126 cards[cardNo] = card;
130 //---------------------------------------------------------------------
131 // 2. [基準画像(開始)]選択パネル
134 arg2_baseTimeImg = new ParameterPanelImageFile(
135 i18n.getString("label.210") +": ",
141 arg2_basetime = new ParameterPanelTime(
142 i18n.getString("label.310"),
146 arg2_basetime.argField.getDocument().addDocumentListener(
147 new SimpleDocumentListener() {
149 public void update(DocumentEvent e) {
150 toEnable(1, arg2_basetime.isEnable());
155 CardImageFile card = new CardImageFile(cardPanel, arg2_basetime, this, true);
156 cardPanel.addTab(card.getTitle(), card);
157 cardPanel.setEnabledAt(cardNo, false);
158 cards[cardNo] = card;
162 //---------------------------------------------------------------------
163 // 3. 最終画像の本当の時刻を設定の入力画面
166 arg3_baseTimeImg = new ParameterPanelImageFile(
167 i18n.getString("label.210") +": ",
173 arg3_basetime = new ParameterPanelTime(
174 i18n.getString("label.310"),
178 arg3_basetime.argField.getDocument().addDocumentListener(
179 new SimpleDocumentListener() {
181 public void update(DocumentEvent e) {
182 toEnable(2, arg3_basetime.isEnable());
187 CardImageFile card = new CardImageFile(cardPanel, arg3_basetime, this, false);
188 cardPanel.addTab(card.getTitle(), card);
189 cardPanel.setEnabledAt(cardNo, false);
190 cards[cardNo] = card;
194 //{{REGISTER_LISTENERS
195 SymWindow aSymWindow = new SymWindow();
196 this.addWindowListener(aSymWindow);
197 SymAction lSymAction = new SymAction();
198 closeButton.addActionListener(lSymAction);
203 void toEnable(final int cardNo, final boolean enable) {
204 if ((cardNo >= 0) && (cardNo < cards.length)) {
205 cardPanel.setEnabledAt(cardNo, enable);
206 if ((cardNo -1) >= 0) {
207 cards[cardNo -1].nextButton.setEnabled(enable);
209 if ((cardNo +1) < cards.length) {
210 cardPanel.setEnabledAt(cardNo+1, enable);
211 cards[cardNo +1].backButton.setEnabled(enable);
212 cards[cardNo].nextButton.setEnabled(enable);
217 @SuppressWarnings("OverridableMethodCallInConstructor")
218 public RestampDialog(Frame parent, String title, boolean modal) throws IOException {
223 // Used for addNotify redundency check.
224 boolean fComponentsAdjusted = false;
227 public void addNotify() {
228 // Record the size of the window prior to calling parents addNotify.
231 // Only do this once.
232 if (fComponentsAdjusted) {
236 // Adjust components according to the insets
237 setSize(getInsets().left + getInsets().right + getSize().width, getInsets().top + getInsets().bottom + getSize().height);
238 Component components[] = getComponents();
239 for (Component component : components) {
240 Point p = component.getLocation();
241 p.translate(getInsets().left, getInsets().top);
242 component.setLocation(p);
245 // Used for addNotify check.
246 fComponentsAdjusted = true;
250 * Shows or hides the component depending on the boolean flag b.
251 * @param b if true, show the component; otherwise, hide the component.
252 * @see java.awt.Component#isVisible
255 public void setVisible(boolean b) {
257 Rectangle bounds = getParent().getBounds();
258 Rectangle abounds = getBounds();
259 setLocation(bounds.x + (bounds.width - abounds.width)/ 2,
260 bounds.y + (bounds.height - abounds.height)/2);