--- /dev/null
+package jp.co.areaweb.tools.gui;\r
+import java.awt.*;\r
+import java.io.*;\r
+import javax.swing.*;\r
+\r
+/**\r
+ * 「ReadXML」処理 \r
+ */\r
+@SuppressWarnings("serial")\r
+public class ReadXMLDialog extends JDialog {\r
+ public static final String TITLE = "ReadXML";\r
+ \r
+ // Used for addNotify check.\r
+ boolean fComponentsAdjusted = false;\r
+ \r
+ //{{DECLARE_CONTROLS\r
+ JFrame parentFrame; // Manager.class\r
+ JPanel argsPanel; // パラメータ設定パネル (上部)\r
+ ParameterPanel arg1Panel; // parameter 1\r
+ \r
+ JPanel buttonPanel; // ボタン配置パネル (下部)\r
+ JButton closeButton; // [クローズ]ボタン\r
+ JButton doButton; // [実行]ボタン\r
+ TextArea textArea; // 実行結果を表示するJTextArea (中央)\r
+ //}}\r
+\r
+ class SymAction implements java.awt.event.ActionListener {\r
+ public void actionPerformed(java.awt.event.ActionEvent event) {\r
+ Object object = event.getSource();\r
+ if (object == closeButton) {\r
+ closeButton_Action(event);\r
+ }\r
+ else if (object == doButton) {\r
+ doButton_Action(event);\r
+ }\r
+ }\r
+ }\r
+\r
+ public ReadXMLDialog(JFrame parentFrame) {\r
+ super(parentFrame, true); // モーダルダイアログを基盤にする\r
+ this.parentFrame = parentFrame;\r
+ \r
+ // INIT_CONTROLS\r
+ Container container = getContentPane();\r
+ container.setLayout(new BorderLayout());\r
+ setVisible(false);\r
+ setSize(getInsets().left + getInsets().right + 500,getInsets().top + getInsets().bottom + 480);\r
+ setTitle(ReadXMLDialog.TITLE);\r
+ setSize(500,480);\r
+ \r
+ // パラメータ設定パネル\r
+ argsPanel = new JPanel();\r
+ argsPanel.setLayout(new BoxLayout(argsPanel, BoxLayout.Y_AXIS));\r
+ \r
+ arg1Panel = new ParameterPanel("ファイル: ", "build.xml");\r
+ argsPanel.add(arg1Panel);\r
+ \r
+ this.getContentPane().add("North", argsPanel);\r
+ \r
+ // コントロールパネル\r
+ buttonPanel = new JPanel();\r
+\r
+ doButton = new JButton("実行");\r
+ doButton.setToolTipText("処理を実行します.");\r
+ doButton.setEnabled(true);\r
+ buttonPanel.add(doButton);\r
+\r
+ closeButton = new JButton("閉じる");\r
+ closeButton.setToolTipText("処理を終了します.");\r
+ buttonPanel.add(closeButton);\r
+ \r
+ this.getContentPane().add("South", buttonPanel);\r
+ \r
+ // 説明文\r
+ textArea = new TextArea();\r
+ try {\r
+ textArea.append("/**\n");\r
+ textArea.append(" * "+ TITLE +"\n");\r
+ textArea.append(" * 指定したファイルが整形式XML文書であるかどうかを調べる。\n");\r
+ textArea.append(" * exp) java -cp hayashi.jar;xerces.jar jp.co.areaweb.tools.command.ReadXML build.xml\n");\r
+ textArea.append(" */\n\n");\r
+ }\r
+ catch (Exception e) {\r
+ System.out.println(e.toString());\r
+ }\r
+ this.getContentPane().add("Center", textArea);\r
+\r
+ //{{REGISTER_LISTENERS\r
+ SymAction lSymAction = new SymAction();\r
+ closeButton.addActionListener(lSymAction);\r
+ doButton.addActionListener(lSymAction);\r
+ //}}\r
+ }\r
+\r
+ /**\r
+ * Shows or hides the component depending on the boolean flag b.\r
+ * @param b trueのときコンポーネントを表示; その他のとき, componentを隠す.\r
+ * @see java.awt.Component#isVisible\r
+ */\r
+ public void setVisible(boolean b) {\r
+ if(b) {\r
+ setLocation(80, 80);\r
+ }\r
+ super.setVisible(b);\r
+ }\r
+\r
+ public void addNotify() {\r
+ // Record the size of the window prior to calling parents addNotify.\r
+ Dimension d = getSize();\r
+\r
+ super.addNotify();\r
+\r
+ if (fComponentsAdjusted)\r
+ return;\r
+\r
+ // Adjust components according to the insets\r
+ setSize(getInsets().left + getInsets().right + d.width, getInsets().top + getInsets().bottom + d.height);\r
+ Component components[] = getComponents();\r
+ for (int i = 0; i < components.length; i++) {\r
+ Point p = components[i].getLocation();\r
+ p.translate(getInsets().left, getInsets().top);\r
+ components[i].setLocation(p);\r
+ }\r
+ fComponentsAdjusted = true;\r
+ }\r
+\r
+ /**\r
+ * [実行]ボタンをクリックしたときの動作\r
+ * @param event\r
+ */\r
+ void doButton_Action(java.awt.event.ActionEvent event) {\r
+ doButton.setEnabled(false);\r
+ \r
+ PrintStream defOut = System.out;\r
+ PrintStream defErr = System.err;\r
+\r
+ ByteArrayOutputStream stdout = new ByteArrayOutputStream();\r
+ try {\r
+ System.setOut(new PrintStream(stdout));\r
+ System.setErr(new PrintStream(stdout));\r
+\r
+ Command command = new Command(jp.co.areaweb.tools.command.ReadXML.class);\r
+ String[] args = new String[1];\r
+ args[0] = arg1Panel.getText();\r
+ command.setArgs(args);\r
+ command.start(); // コマンドを実行\r
+ while (command.isAlive()) {\r
+ Thread.sleep(1000);\r
+ textArea.append(stdout.toString());\r
+ stdout.reset();\r
+ }\r
+ textArea.append(stdout.toString());\r
+ JOptionPane.showMessageDialog(this, "'"+ TITLE +"'処理を完了しました。", "処理完了", JOptionPane.INFORMATION_MESSAGE);\r
+ }\r
+ catch(Exception e) {\r
+ e.printStackTrace();\r
+ JOptionPane.showMessageDialog(this, e.toString(), "Exception", JOptionPane.ERROR_MESSAGE);\r
+ }\r
+ finally {\r
+ System.setOut(defOut);\r
+ System.setErr(defErr);\r
+ doButton.setEnabled(true);\r
+ }\r
+ }\r
+\r
+ void closeButton_Action(java.awt.event.ActionEvent event) {\r
+ dispose();\r
+ }\r
+ \r
+ void changeSQL_Action(java.awt.event.ActionEvent event) {\r
+ textArea.setText("");\r
+ }\r
+}\r