Commit Diff


commit - af98a8852c0bc4055c18bafeeb2e2436d28baa5e
commit + b52f8f4f1c3d2afe83f4f84b56763bf6709810a5
blob - b4316a8cdb0514c5dd8361222d3c313e8d479a55
blob + 4594dadc317e6f0f4cbe4ffd8e4039fca9d2fc33
--- de/mud/jta/plugin/Capture.java
+++ de/mud/jta/plugin/Capture.java
@@ -31,8 +31,8 @@ import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
-import java.io.DataOutputStream;
 import java.io.DataInputStream;
+import java.io.DataOutputStream;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -60,7 +60,7 @@ import java.util.Hashtable;
  * @author Matthias L. Jugel, Marcus Meißner
  */
 public class Capture extends Plugin
-        implements FilterPlugin, VisualPlugin,ActionListener {
+        implements FilterPlugin, VisualPlugin, ActionListener {
 
   // this enables or disables the compilation of menu entries
   private final static boolean personalJava = false;
@@ -73,7 +73,8 @@ public class Capture extends Plugin
 
   /** The plugin menu */
   protected Menu menu;
-  protected Dialog dialog;
+  protected Dialog errorDialog;
+  protected Dialog fileDialog;
 
   /** Whether the capture is currently enabled or not */
   protected boolean captureEnabled = false;
@@ -82,6 +83,7 @@ public class Capture extends Plugin
   private MenuItem start, stop, clear, save;
   private Frame frame;
   private TextArea textArea;
+  private TextField fileName;
 
   /**
    * Initialize the Capture plugin. This sets up the menu entries
@@ -105,17 +107,48 @@ public class Capture extends Plugin
       frame.pack();
 
       // an error dialogue, in case the upload fails
-      dialog = new Dialog(frame);
-      dialog.setLayout(new BorderLayout());
-      dialog.add(new Label("Cannot store data on remote server!"));
-      Button close = new Button("Close Dialog");
-      dialog.add(close);
-      close.addActionListener(new ActionListener() {
+      errorDialog = new Dialog(frame, "Error", true);
+      errorDialog.setLayout(new BorderLayout());
+      errorDialog.add(new Label("Cannot store data on remote server!"), BorderLayout.NORTH);
+      Panel panel = new Panel();
+      Button button = new Button("Close Dialog");
+      panel.add(button);
+      errorDialog.add(panel, BorderLayout.SOUTH);
+      button.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
-          dialog.setVisible(false);
+          errorDialog.setVisible(false);
         }
       });
 
+
+      fileDialog = new Dialog(frame, "Enter File Name", true);
+      fileDialog.setLayout(new BorderLayout());
+      ActionListener saveFileListener = new ActionListener() {
+        public void actionPerformed(ActionEvent e) {
+          String params = (String) remoteUrlList.get("URL.file.params");
+          params = params == null ? "" : params + "&";
+          remoteUrlList.put("URL.file.params", params + "file="+URLEncoder.encode(fileName.getText()));
+          saveFile("URL.file");
+          fileDialog.setVisible(false);
+        }
+      };
+      panel = new Panel();
+      panel.add(new Label("File Name: "));
+      panel.add(fileName = new TextField(30));
+      fileName.addActionListener(saveFileListener);
+      fileDialog.add(panel, BorderLayout.CENTER);
+      panel = new Panel();
+      panel.add(button = new Button("Cancel"));
+      button.addActionListener(new ActionListener() {
+        public void actionPerformed(ActionEvent e) {
+          fileDialog.setVisible(false);
+        }
+      });
+      panel.add(button = new Button("Save File"));
+      button.addActionListener(saveFileListener);
+      fileDialog.add(panel, BorderLayout.SOUTH);
+      fileDialog.pack();
+
       // set up menu entries
       menu = new Menu("Capture");
       start = new MenuItem("Start");
@@ -167,6 +200,7 @@ public class Capture extends Plugin
       });
       menu.add(view);
 
+
     } // !personalJava
 
 
@@ -174,20 +208,46 @@ public class Capture extends Plugin
     bus.registerPluginListener(new ConfigurationListener() {
       public void setConfiguration(PluginConfig config) {
         String tmp;
+
+        MenuItem save = new MenuItem("Save As File");
+        menu.add(save);
+
+        if ((tmp = config.getProperty("Capture", id, "file.url")) != null) {
+          try {
+            remoteUrlList.put("URL.file", new URL(tmp));
+            if ((tmp = config.getProperty("Capture", id, "file.params")) != null) {
+              remoteUrlList.put("URL.file.params", tmp);
+            }
+
+            save.addActionListener(new ActionListener() {
+              public void actionPerformed(ActionEvent e) {
+                fileDialog.setVisible(true);
+              }
+            });
+            save.addActionListener(Capture.this);
+            save.setActionCommand("URL.file");
+          } catch (MalformedURLException e) {
+            System.err.println("capture url invalid: " + e);
+          }
+
+        } else {
+          save.setEnabled(false);
+        }
+
         int i = 1;
-        while ((tmp = config.getProperty("Capture", id, i+".url")) != null) {
+        while ((tmp = config.getProperty("Capture", id, i + ".url")) != null) {
           try {
-            String urlID = "URL."+i;
+            String urlID = "URL." + i;
             URL remoteURL = new URL(tmp);
             remoteUrlList.put(urlID, remoteURL);
-            if((tmp = config.getProperty("Capture", id, i+".params")) != null) {
-              remoteUrlList.put(urlID+".params", tmp);
+            if ((tmp = config.getProperty("Capture", id, i + ".params")) != null) {
+              remoteUrlList.put(urlID + ".params", tmp);
             }
             // use name if applicable or URL
-            if((tmp = config.getProperty("Capture", id, i+".name")) != null) {
-              save = new MenuItem("Save As "+tmp);
+            if ((tmp = config.getProperty("Capture", id, i + ".name")) != null) {
+              save = new MenuItem("Save As " + tmp);
             } else {
-              save = new MenuItem("Save As "+remoteURL.toString());
+              save = new MenuItem("Save As " + remoteURL.toString());
             }
             // enable menu entry
             save.setEnabled(true);
@@ -202,15 +262,22 @@ public class Capture extends Plugin
         }
       }
     });
+
+    if (!personalJava) {
+    }
   }
 
   public void actionPerformed(ActionEvent e) {
     String urlID = e.getActionCommand();
-    URL url = (URL)remoteUrlList.get(urlID);
+    if (debug > 0)
+      System.err.println("Capture: storing text: "
+                         + urlID + ": "
+                         + remoteUrlList.get(urlID));
+    saveFile(urlID);
+  }
 
-    if (debug > 0) System.err.println("Capture: storing text: "
-                                      + urlID+": "
-                                      + remoteUrlList.get(urlID));
+  private void saveFile(String urlID) {
+    URL url = (URL) remoteUrlList.get(urlID);
     try {
       URLConnection urlConnection = url.openConnection();
       DataOutputStream out;
@@ -229,26 +296,30 @@ public class Capture extends Plugin
       // Send POST output.
       // send the data to the url receiver ...
       out = new DataOutputStream(urlConnection.getOutputStream());
-      String content = (String)remoteUrlList.get(urlID+".param");
-      content =  (content == null ? "" : content + "&") + "content=" + URLEncoder.encode(textArea.getText());
-      if(debug > 0) System.err.println("Capture: " + content);
+      String content = (String) remoteUrlList.get(urlID + ".params");
+      content = (content == null ? "" : content + "&") + "content=" + URLEncoder.encode(textArea.getText());
+      if (debug > 0) System.err.println("Capture: " + content);
       out.writeBytes(content);
       out.flush();
       out.close();
 
       // retrieve response from the remote host and display it.
-      if(debug > 0) System.err.println("Capture: reading response");
+      if (debug > 0) System.err.println("Capture: reading response");
       in = new DataInputStream(urlConnection.getInputStream());
       String str;
       while (null != ((str = in.readLine()))) {
-        System.out.println("Capture: "+str);
+        System.out.println("Capture: " + str);
       }
       in.close();
 
     } catch (IOException ioe) {
-      dialog.setVisible(true);
-      System.err.println("Capture: cannot store text on remote server: " + url );
+      System.err.println("Capture: cannot store text on remote server: " + url);
       ioe.printStackTrace();
+      TextArea errorMsg = new TextArea(ioe.toString(), 5, 30);
+      errorMsg.setEditable(false);
+      errorDialog.add(errorMsg, BorderLayout.CENTER);
+      errorDialog.pack();
+      errorDialog.setVisible(true);
     }
     if (debug > 0) System.err.println("Capture: storage complete: " + url);
   }