package net.studyinghttp; import javax.swing.*; import java.awt.Color; import java.awt.*; import java.awt.event.*; import java.util.HashMap; public class HttpStatusCodeFindlet extends JApplet { private static final long serialVersionUID = 1L; // 名前 private String mMyName = "HttpStatusCodeFindlet"; // バージョン番号 private String mVersion = Double.toString(0.2); // タイトル private JLabel mTitle = new JLabel(); // コンボボックス private JLabel mLbl4Cmb = new JLabel(); private JComboBox mCmbCode = new JComboBox(); // 説明句 private JLabel mLbl4Pha = new JLabel(); private JLabel mPhrase = new JLabel(); // ステータスコードの解説 private JTextArea mExplanation = new JTextArea(); // ステータスコード用ハッシュ private HashMap mStatusHash = new HashMap(); // アプレット初期化時に呼ばれるメソッド public void init () { // GUIの初期化 guiInit(); // ステータスコードハッシュを作る makeStatusHash(); // コンボボックスを作る makeCmb(); } // GUIの初期化 private void guiInit () { // パネルのレイアウト setSize(300, 120); //setBackground( Color.PINK ); setLayout(new GridBagLayout()); // タイトル mTitle.setMinimumSize(new Dimension(280, 25)); mTitle.setPreferredSize(new Dimension(280, 25)); mTitle.setText(mMyName + " " + mVersion); add(mTitle, new GridBagConstraints(0, 0, 2, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(10, 10, 10, 10), 0, 0)); // コンボボックス mLbl4Cmb.setText("Status Code"); add(mLbl4Cmb, new GridBagConstraints(0, 1, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 10, 10, 10), 0, 0)); mCmbCode.addActionListener(new mCmbCode_actionAdapter(this)); add(mCmbCode, new GridBagConstraints(0, 2, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 10, 10, 10), 0, 0)); // 説明句 mLbl4Pha.setText("Reason-Phrase"); add(mLbl4Pha, new GridBagConstraints(1, 1, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 10, 10, 10), 0, 0)); add(mPhrase, new GridBagConstraints(1, 2, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 10, 10, 10), 0, 0)); // 説明用フィールド //add(mExplanation, // new GridBagConstraints(0, 3, 2, 1, 0, 0, // GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, // new Insets(0, 10, 10, 10), 0, 0)); } // ステータスコードのハッシュマップを作る private void makeStatusHash() { mStatusHash.put("---", ""); mStatusHash.put("100", "Continue"); mStatusHash.put("101", "Switching Protocols"); mStatusHash.put("102", "Processing"); mStatusHash.put("200", "OK"); mStatusHash.put("201", "Created"); mStatusHash.put("202", "Accepted"); mStatusHash.put("203", "Non-Authoritative Information"); mStatusHash.put("204", "No Content"); mStatusHash.put("205", "Reset Content"); mStatusHash.put("206", "Partial Content"); mStatusHash.put("207", "Multi-Status"); mStatusHash.put("226", "IM Used"); mStatusHash.put("300", "Multiple Choices"); mStatusHash.put("301", "Moved Permanently"); mStatusHash.put("302", "Found"); mStatusHash.put("303", "See Other"); mStatusHash.put("304", "Not Modified"); mStatusHash.put("305", "Use Proxy"); mStatusHash.put("306", "Reserved"); mStatusHash.put("307", "Temporary Redirect"); mStatusHash.put("400", "Bad Request"); mStatusHash.put("401", "Unauthorized"); mStatusHash.put("402", "Payment Required"); mStatusHash.put("403", "Forbidden"); mStatusHash.put("404", "Not Found"); mStatusHash.put("405", "Method Not Allowed"); mStatusHash.put("406", "Not Acceptable"); mStatusHash.put("407", "Proxy Authentication Required"); mStatusHash.put("408", "Request Timeout"); mStatusHash.put("409", "Conflict"); mStatusHash.put("410", "Gone"); mStatusHash.put("411", "Length Required"); mStatusHash.put("412", "Precondition Failed"); mStatusHash.put("413", "Request Entity Too Large"); mStatusHash.put("414", "Request-URI Too Long"); mStatusHash.put("415", "Unsupported Media Type"); mStatusHash.put("416", "Requested Range Not Satisfiable"); mStatusHash.put("417", "Expectation Failed"); mStatusHash.put("422", "Unprocessable Entity"); mStatusHash.put("423", "Locked"); mStatusHash.put("424", "Failed Dependency"); mStatusHash.put("426", "Upgrade Required"); mStatusHash.put("500", "Internal Server Error"); mStatusHash.put("501", "Not Implemented"); mStatusHash.put("502", "Bad Gateway"); mStatusHash.put("503", "Service Unavailable"); mStatusHash.put("504", "Gateway Timeout"); mStatusHash.put("505", "HTTP Version Not Supported"); mStatusHash.put("506", "Variant Also Negotiates"); mStatusHash.put("507", "Insufficient Storage"); mStatusHash.put("510", "Not Extended"); } // コンボボックスを作る private void makeCmb() { mCmbCode.addItem("---"); // 先頭 for (int i=100; i<=599; i++) { if (mStatusHash.containsKey(new Integer(i).toString())) { mCmbCode.addItem( new Integer(i).toString() ); } } } // コンボボックスを選択した時のイベントハンドラ public void mCmbCode_actionPerformed(ActionEvent e) { mPhrase.setText( mStatusHash.get( mCmbCode.getSelectedItem() ).toString() ); } } class mCmbCode_actionAdapter implements ActionListener { HttpStatusCodeFindlet adaptee; mCmbCode_actionAdapter(HttpStatusCodeFindlet adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.mCmbCode_actionPerformed(e); } }