| | package hayashi.yuu.gpx.gui; |
---|
| | import java.awt.BorderLayout; |
---|
| | import java.awt.FlowLayout; |
---|
| | import java.awt.Font; |
---|
| | import java.awt.Rectangle; |
---|
| | import java.awt.Toolkit; |
---|
| | import java.awt.event.WindowEvent; |
---|
| | import java.awt.event.WindowListener; |
---|
| | import java.io.BufferedReader; |
---|
| | import java.io.IOException; |
---|
| | import java.io.InputStream; |
---|
| | import java.io.InputStreamReader; |
---|
| | import java.net.URL; |
---|
| | |
---|
| | import javax.swing.JButton; |
---|
| | import javax.swing.JDialog; |
---|
| | import javax.swing.JFrame; |
---|
| | import javax.swing.JLabel; |
---|
| | import javax.swing.JPanel; |
---|
| | import javax.swing.JScrollPane; |
---|
| | import javax.swing.JTextArea; |
---|
| | |
---|
| | import osm.jp.gpx.ImportPicture; |
---|
| | |
---|
| | @SuppressWarnings("serial") |
---|
| | public class AboutDialog extends JDialog implements WindowListener |
---|
| | { |
---|
| | static final String TITLE = PictureMapper.PROGRAM_NAME; |
---|
| | static final String COPY_RIGHT = "Copyright (c) 2014 Yuu Hayashi. This software is released under the MIT License."; |
---|
| | |
---|
| | JLabel label1; |
---|
| | JButton okButton; |
---|
| | JLabel label2; |
---|
| | JTextArea textArea; |
---|
| | JFrame parent; |
---|
| | |
---|
| | public AboutDialog(JFrame parent, boolean modal) { |
---|
| | super(parent, modal); |
---|
| | addWindowListener(this); |
---|
| | setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); |
---|
| | |
---|
| | this.parent = parent; |
---|
| | setTitle("About..."); |
---|
| | getContentPane().setLayout(new BorderLayout()); |
---|
| | setSize(512,320); |
---|
| | |
---|
| | //-------------------------------------------------------- |
---|
| | // 上部パネル |
---|
| | //----------------------------------------------- |
---|
| | label1 = new JLabel(TITLE, JLabel.CENTER); |
---|
| | add(BorderLayout.NORTH, label1); |
---|
| | |
---|
| | //-------------------------------------------------------- |
---|
| | // 中央パネル |
---|
| | //----------------------------------------------- |
---|
| | |
---|
| | /* |
---|
| | * [README.txt]ファイルの内容を表示するTEXTAREA |
---|
| | */ |
---|
| | textArea = new JTextArea(7, 60); |
---|
| | textArea.setEditable(false); |
---|
| | textArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12)); |
---|
| | JScrollPane scrollPane = new JScrollPane(textArea); |
---|
| | scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); |
---|
| | add(BorderLayout.CENTER, scrollPane); |
---|
| | |
---|
| | URL url = getClass().getResource("/README.txt"); |
---|
| | InputStream is; |
---|
| | try { |
---|
| | is = url.openStream(); |
---|
| | BufferedReader br = new BufferedReader(new InputStreamReader(is)); |
---|
| | while (br.ready()) { |
---|
| | textArea.append(br.readLine() + "\n"); |
---|
| | } |
---|
| | textArea.setCaretPosition(0); |
---|
| | br.close(); |
---|
| | is.close(); |
---|
| | } catch (IOException e) { |
---|
| | e.printStackTrace(); |
---|
| | } |
---|
| | |
---|
| | //-------------------------------------------------------- |
---|
| | // 下部パネル |
---|
| | //----------------------------------------------- |
---|
| | JPanel bottonPanel = new JPanel(); |
---|
| | bottonPanel.setLayout(new BorderLayout()); |
---|
| | add(BorderLayout.SOUTH, bottonPanel); |
---|
| | |
---|
| | /* |
---|
| | * [OK]ボタン : このダイアログウインドウを閉じる |
---|
| | */ |
---|
| | okButton = new JButton("OK"); |
---|
| | okButton.setBounds(145,65,66,27); |
---|
| | okButton.addActionListener(new java.awt.event.ActionListener() { |
---|
| | public void actionPerformed(java.awt.event.ActionEvent evt) { |
---|
| | Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new WindowEvent(AboutDialog.this, WindowEvent.WINDOW_CLOSING)); |
---|
| | setVisible(false); |
---|
| | } |
---|
| | }); |
---|
| | JPanel okPanel = new JPanel(new FlowLayout()); |
---|
| | try { |
---|
| | okPanel.add(okButton); |
---|
| | } |
---|
| | catch(Exception e) { |
---|
| | e.printStackTrace(); |
---|
| | ImportPicture.logger.warning(e.toString()); |
---|
| | } |
---|
| | bottonPanel.add(BorderLayout.CENTER, okPanel); |
---|
| | |
---|
| | /* |
---|
| | * コピーライト表示 |
---|
| | */ |
---|
| | label2 = new JLabel(COPY_RIGHT, JLabel.CENTER); |
---|
| | label2.setBounds(10,40,340,20); |
---|
| | bottonPanel.add(BorderLayout.SOUTH, label2); |
---|
| | |
---|
| | setVisible(true); |
---|
| | } |
---|
| | |
---|
| | /** |
---|
| | * Shows or hides the component depending on the boolean flag b. |
---|
| | * @param b if true, show the component; otherwise, hide the component. |
---|
| | * @see java.awt.Component#isVisible |
---|
| | */ |
---|
| | public void setVisible(boolean b) { |
---|
| | if (b) { |
---|
| | Rectangle bounds = getParent().getBounds(); |
---|
| | Rectangle abounds = getBounds(); |
---|
| | setLocation(bounds.x + (bounds.width - abounds.width)/ 2, |
---|
| | bounds.y + (bounds.height - abounds.height)/2); |
---|
| | } |
---|
| | super.setVisible(b); |
---|
| | } |
---|
| | |
---|
| | public void windowClosed(WindowEvent e) { |
---|
| | setVisible(false); |
---|
| | } |
---|
| | |
---|
| | public void windowActivated(WindowEvent arg0) { |
---|
| | } |
---|
| | |
---|
| | public void windowClosing(WindowEvent arg0) { |
---|
| | setVisible(false); |
---|
| | } |
---|
| | |
---|
| | public void windowDeactivated(WindowEvent arg0) { |
---|
| | } |
---|
| | |
---|
| | public void windowDeiconified(WindowEvent arg0) { |
---|
| | } |
---|
| | |
---|
| | public void windowIconified(WindowEvent arg0) { |
---|
| | } |
---|
| | |
---|
| | public void windowOpened(WindowEvent arg0) { |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | |