package connector; import java.applet.Applet; import java.applet.AppletContext; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; import java.util.StringTokenizer; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import language.HtmlTokenizer; import org.apache.commons.httpclient.Credentials; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.UsernamePasswordCredentials; import org.apache.commons.httpclient.auth.AuthScope; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; /** * This code was edited or generated using CloudGarden's Jigloo * SWT/Swing GUI Builder, which is free for non-commercial * use. If Jigloo is being used commercially (ie, by a corporation, * company or business for any purpose whatever) then you * should purchase a license for each developer using Jigloo. * Please visit www.cloudgarden.com for details. * Use of Jigloo implies acceptance of these licensing terms. * A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR * THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED * LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE. */ public class SaveButtonDebugFrame extends JFrame implements AuthDialogListener { private JButton saveButton; private String baseUrl; private String pageName; private String plugInName; private String pageCharSet; private String charset; private static final int AUTH_MODE_PREEMPTIVE = 0; private static final int AUTH_MODE_NOT_PREEMPTIVE = 1; private static final int AUTH_MODE_CONSOLE = 2; private void initGUI() { try { { getContentPane().setLayout(null); } { saveButton = new JButton(); getContentPane().add(saveButton); saveButton.setText("save"); saveButton.setBounds(5, 0, 75, 31); saveButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { saveButtonActionPerformed(evt); } }); } { clearButton = new JButton(); getContentPane().add(clearButton); clearButton.setText("clear message"); clearButton.setBounds(4, 34, 132, 31); clearButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { clearButtonActionPerformed(evt); } }); } { messagePane = new JScrollPane(); getContentPane().add(messagePane); messagePane.setBounds(5, 140, 527, 469); { messageTextArea = new JTextArea(); messagePane.setViewportView(messageTextArea); // messageTextArea.setBounds(236, 172, 61, 12); // messageTextArea.setPreferredSize(new java.awt.Dimension(521, 501)); messagePane.setAutoscrolls(true); } } { inputField = new JTextField(); getContentPane().add(inputField); inputField.setBounds(5, 101, 455, 39); } { sendButton = new JButton(); getContentPane().add(sendButton); sendButton.setText("send"); sendButton.setBounds(459, 101, 73, 38); sendButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { sendButtonActionPerformed(evt); } }); } { urlField = new JTextField(); getContentPane().add(urlField); urlField.setBounds(5, 65, 454, 34); } { connectButton = new JButton(); getContentPane().add(connectButton); connectButton.setText("con"); connectButton.setBounds(459, 65, 74, 36); connectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { connectButtonActionPerformed(evt); } }); } { editPageButton = new JButton(); getContentPane().add(editPageButton); editPageButton.setText("edit"); editPageButton.setBounds(158, 0, 75, 31); editPageButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { editPageButtonActionPerformed(evt); } }); } { updateButton = new JButton(); getContentPane().add(updateButton); updateButton.setText("update"); updateButton.setBounds(233, 0, 84, 31); updateButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { updateButtonActionPerformed(evt); } }); } { paramButton = new JButton(); getContentPane().add(paramButton); paramButton.setText("params"); paramButton.setBounds(317, 0, 91, 31); paramButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { paramButtonActionPerformed(evt); } }); } { readFromPukiWikiButton = new JButton(); getContentPane().add(readFromPukiWikiButton); readFromPukiWikiButton.setText("read"); readFromPukiWikiButton.setBounds(80, 1, 78, 30); readFromPukiWikiButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { readFromPukiwikiButtonActionPerformed(evt); } }); } { showMessagesCheckBox = new JCheckBox(); getContentPane().add(showMessagesCheckBox); showMessagesCheckBox.setText("Show messages"); showMessagesCheckBox.setBounds(147, 38, 154, 23); showMessagesCheckBox.setSelected(true); } { this.setSize(551, 650); } } catch(Exception e) { e.printStackTrace(); } } public void saveButtonActionPerformed(ActionEvent evt) { // System.out.println("saveButton.actionPerformed, event="+evt); //TODO add your code for saveButton.actionPerformed this.editPageButtonActionPerformed(null); this.updateButtonActionPerformed(null); } PukiwikiApplet applet; private JButton clearButton; private JTextArea messageTextArea; private JCheckBox showMessagesCheckBox; private JButton readFromPukiWikiButton; private JButton paramButton; private JButton updateButton; private JScrollPane messagePane; private JButton editPageButton; private JButton connectButton; private JTextField urlField; private JButton sendButton; private JTextField inputField; private boolean authInputFlag; private boolean loginButtonPressed; public SaveButtonDebugFrame(PukiwikiApplet a){ this.println("saveButtonDebugFrame"); this.applet=a; // this.messageTextArea.append("documentBase="+this.applet.getDocumentBase().toString()+"\n"); this.println("y2"); this.initGUI(); this.setName("saveButtonFrame"); try{ StringTokenizer st=new StringTokenizer(applet.param1,"="); String dmy=st.nextToken(); this.plugInName=st.nextToken(); this.messageTextArea.append("plugInName="+plugInName+"\n"); } catch(Exception e){ this.plugInName=""; } /* HttpClient client=new HttpClient(); PostMethod post=new PostMethod(applet.returnUrl); */ this.println("y3"); String dbase=this.applet.getDocumentBase().toString(); try{ StringTokenizer st=new StringTokenizer(dbase,"?"); baseUrl=st.nextToken(); pageName=st.nextToken(); this.println("pageName="+pageName); } catch(Exception e){ } this.println("y4"); if(baseUrl==null){ baseUrl=dbase; } if(pageName==null){ pageName="FrontPage"; } if(pageName.equals("null")){ pageName="FrontPage"; } this.println("pageName="+pageName); this.charset=applet.getCharSet(); if(this.charset==null){ this.charset="UTF-8"; } if(this.charset.equals("")){ this.charset="UTF-8"; } } private void clearButtonActionPerformed(ActionEvent evt) { this.println("clearButton.actionPerformed, event="+evt); //TODO add your code for clearButton.actionPerformed this.messageTextArea.setText(""); } private String getUrlWithoutParameters(String url){ int i=url.indexOf("?"); if(i<0) return url; String rtn=url.substring(0,i); return rtn; } HttpClient client=null; AuthDialog authDialog=null; private void connectButtonActionPerformed(ActionEvent evt) { this.println("connectButton.actionPerformed, event="+evt); //TODO add your code for connectButton.actionPerformed client=new HttpClient(); String url=this.urlField.getText(); this.println("url="+url); // this.messageTextArea.append(url+"\n"); String urlWithoutParameters=""; if(authDialog!=null){ this.println("authDialog is not null"); urlWithoutParameters=getUrlWithoutParameters(url); String registeredUrl=authDialog.getProperty("auth-url"); this.println("urlWithoutParamaters="+urlWithoutParameters); this.println("registeredUrl="+registeredUrl); if(registeredUrl==null){ this.authDialog=null; this.connectButtonActionPerformed(null); return; } if(registeredUrl.equals(urlWithoutParameters)){ this.println("registeredUrl == urlWithoutParameters"); client.getParams().setAuthenticationPreemptive(true); // 認証情報(ユーザ名とパスワード)の作成. String uname=authDialog.getID(); char[] pwd=authDialog.getPassword(); String pwdx=new String(pwd); Credentials defaultcreds1 = new UsernamePasswordCredentials(uname, pwdx); // 認証のスコープ. AuthScope scope1 = new AuthScope(null, -1, null); // スコープと認証情報の組合せをセット. client.getState().setCredentials(scope1, defaultcreds1); } else{ this.authDialog=null; this.connectButtonActionPerformed(null); return; } } try{ this.println("new getMethiod("+url+")"); HttpMethod method = new GetMethod(url); // method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, // new DefaultHttpMethodRetryHandler(3, false)); if(this.authDialog!=null){ method.setDoAuthentication(true); } // method.getParams().setContentCharset("UTF-8"); int status=client.executeMethod(method); if (status != HttpStatus.SC_OK) { this.println("Method failed: " + method.getStatusLine()); if((method.getStatusLine()).toString().indexOf("401")>=0){ this.authDialog=new AuthDialog(this); this.authDialog.setVisible(true); this.authInputFlag=false; urlWithoutParameters=getUrlWithoutParameters(url); this.authDialog.setProperty("auth-url", urlWithoutParameters); this.println("before waitUntilMessageIsReturned"); this.waitUntilMessageIsReturned(); this.println("after waitUntilMessageIsReturned"); if(this.loginButtonPressed){ this.println("loginButtonPressed"); this.connectButtonActionPerformed(null); } return; } } else{ // String txt=method.getResponseBodyAsString(); InputStream is=method.getResponseBodyAsStream(); InputStreamReader isr=new InputStreamReader(is,this.charset); // InputStreamReader isr=new InputStreamReader(is,"UTF-8"); // InputStreamReader isr=new InputStreamReader(is); BufferedReader br=new BufferedReader(isr); String line=""; while(true){ line=br.readLine(); if(line==null) break; this.messageTextArea.append(line+"\n"); // System.out.println(line); } } } catch(Exception e){ this.println(e.toString()+"\n"); e.printStackTrace(); } } private void waitUntilMessageIsReturned(){ while(!this.authInputFlag){ try{ Thread.sleep(100); } catch(InterruptedException e){ } } } private void sendButtonActionPerformed(ActionEvent evt) { this.println("sendButton.actionPerformed, event="+evt); //TODO add your code for sendButton.actionPerformed } String updateText; String actionUrl; String editCmd; String editPage; String editDigest; String editWriteValue; String editEncodeHint; private void editPageButtonActionPerformed(ActionEvent evt) { this.println("editPageButton.actionPerformed, event="+evt); //TODO add your code for editPageButton.actionPerformed String editUrl=baseUrl+"?cmd=edit&page="+pageName; this.println("editUrl="+editUrl); // this.messageTextArea.append(baseUrl+"\n"); this.println(baseUrl+"\n"); // this.messageTextArea.append(editUrl+"\n"); this.println(editUrl+"\n"); this.urlField.setText(editUrl); this.messageTextArea.setText(""); this.connectButtonActionPerformed(null); String x=this.messageTextArea.getText(); /* get the first form from the url*/ String form=this.getBetween(x,""); if(form==null) return; this.println("form="+form); /* get the head part in the text area from the form*/ int i=form.indexOf("