⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 capture.java

📁 The Javatm Telnet Application/Applet 很好用的
💻 JAVA
字号:
/* * This file is part of "The Java Telnet Application". * * (c) Matthias L. Jugel, Marcus Mei遪er 1996-2002. All Rights Reserved. * * Please visit http://javatelnet.org/ for updates and contact. * * --LICENSE NOTICE-- * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * --LICENSE NOTICE-- * */package de.mud.jta.plugin;import de.mud.jta.FilterPlugin;import de.mud.jta.Plugin;import de.mud.jta.PluginBus;import de.mud.jta.PluginConfig;import de.mud.jta.VisualPlugin;import de.mud.jta.event.ConfigurationListener;import javax.swing.JButton;import javax.swing.JComponent;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;import java.awt.BorderLayout;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.net.URLEncoder;import java.util.Hashtable;/** * A capture plugin that captures data and stores it in a * defined location. The location is specified as a plugin * configuration option Capture.url and can be used in * conjunction with the UploadServlet from the tools directory. * <P> * Parametrize the plugin carefully:<br> * <b>Capture.url</b> should contain a unique URL can may have * parameters for identifying the upload.<br> * <i>Example:</i> http://mg.mud.de/servlet/UpladServlet?id=12345 * <p> * The actually captured data will be appended as the parameter * <b>content</b>. * <P> * <B>Maintainer:</B> Matthias L. Jugel * * @version $Id: Capture.java,v 1.8 2002/05/06 07:24:20 leo Exp $ * @author Matthias L. Jugel, Marcus Mei遪er */public class Capture extends Plugin        implements FilterPlugin, VisualPlugin, ActionListener {  // this enables or disables the compilation of menu entries  private final static boolean personalJava = false;  // for debugging output  private final static int debug = 0;  /** The remote storage URL */  protected Hashtable remoteUrlList = new Hashtable();  /** The plugin menu */  protected JMenu menu;  protected JDialog errorDialog;  protected JDialog fileDialog;  protected JDialog doneDialog;  /** Whether the capture is currently enabled or not */  protected boolean captureEnabled = false;  // menu entries and the viewing frame/textarea  private JMenuItem start, stop, clear;  private JFrame frame;  private JTextArea textArea;  private JTextField fileName;  /**   * Initialize the Capture plugin. This sets up the menu entries   * and registers the plugin on the bus.   */  public Capture(final PluginBus bus, final String id) {    super(bus, id);    if (!personalJava) {      // set up viewing frame      frame = new JFrame("Java Telnet Applet: Captured Text");      frame.getContentPane().setLayout(new BorderLayout());      frame.getContentPane().add(textArea = new JTextArea(24, 80), BorderLayout.CENTER);      textArea.setFont(new Font("Monospaced", Font.PLAIN, 12));      frame.addWindowListener(new WindowAdapter() {        public void windowClosing(WindowEvent e) {          frame.setVisible(false);        }      });      frame.pack();      // an error dialogue, in case the upload fails      errorDialog = new JDialog(frame, "Error", true);      errorDialog.getContentPane().setLayout(new BorderLayout());      errorDialog.getContentPane().add(new JLabel("Cannot store data on remote server!"), BorderLayout.NORTH);      JPanel panel = new JPanel();      JButton button = new JButton("Close Dialog");      panel.add(button);      errorDialog.getContentPane().add(panel, BorderLayout.SOUTH);      button.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          errorDialog.setVisible(false);        }      });      // an error dialogue, in case the upload fails      doneDialog = new JDialog(frame, "Success", true);      doneDialog.getContentPane().setLayout(new BorderLayout());      doneDialog.getContentPane().add(new JLabel("Successfully saved data!"), BorderLayout.NORTH);      panel = new JPanel();      button = new JButton("Close Dialog");      panel.add(button);      doneDialog.getContentPane().add(panel, BorderLayout.SOUTH);      button.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          errorDialog.setVisible(false);        }      });      fileDialog = new JDialog(frame, "Enter File Name", true);      fileDialog.getContentPane().setLayout(new BorderLayout());      ActionListener saveFileListener = new ActionListener() {        public void actionPerformed(ActionEvent e) {          String params = (String) remoteUrlList.get("URL.file.params.orig");          params = params == null ? "" : params + "&";          remoteUrlList.put("URL.file.params", params + "file=" + URLEncoder.encode(fileName.getText()));          saveFile("URL.file");          fileDialog.setVisible(false);        }      };      panel = new JPanel();      panel.add(new JLabel("File Name: "));      panel.add(fileName = new JTextField(30));      fileName.addActionListener(saveFileListener);      fileDialog.getContentPane().add(panel, BorderLayout.CENTER);      panel = new JPanel();      panel.add(button = new JButton("Cancel"));      button.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          fileDialog.setVisible(false);        }      });      panel.add(button = new JButton("Save File"));      button.addActionListener(saveFileListener);      fileDialog.getContentPane().add(panel, BorderLayout.SOUTH);      fileDialog.pack();      // set up menu entries      menu = new JMenu("Capture");      start = new JMenuItem("Start");      start.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          if (debug > 0) System.out.println("Capture: start capturing");          captureEnabled = true;          start.setEnabled(false);          stop.setEnabled(true);        }      });      menu.add(start);      stop = new JMenuItem("Stop");      stop.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          if (debug > 0) System.out.println("Capture: stop capturing");          captureEnabled = false;          start.setEnabled(true);          stop.setEnabled(false);        }      });      stop.setEnabled(false);      menu.add(stop);      clear = new JMenuItem("Clear");      clear.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          if (debug > 0) System.out.println("Capture: cleared captured text");          textArea.setText("");        }      });      menu.add(clear);      menu.addSeparator();      JMenuItem view = new JMenuItem("View/Hide Text");      view.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          if (debug > 0) System.out.println("view/hide text: " + frame.isVisible());          if (frame.isVisible()) {            frame.setVisible(false);            frame.hide();          } else {            frame.setVisible(true);            frame.show();          }        }      });      menu.add(view);    } // !personalJava    // configure the remote URL    bus.registerPluginListener(new ConfigurationListener() {      public void setConfiguration(PluginConfig config) {        String tmp;        JMenuItem save = new JMenuItem("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.orig", tmp);            }            save.addActionListener(new ActionListener() {              public void actionPerformed(ActionEvent e) {                fileDialog.setVisible(true);              }            });            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) {          try {            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);            }            // use name if applicable or URL            if ((tmp = config.getProperty("Capture", id, i + ".name")) != null) {              save = new JMenuItem("Save As " + tmp);            } else {              save = new JMenuItem("Save As " + remoteURL.toString());            }            // enable menu entry            save.setEnabled(true);            save.addActionListener(Capture.this);            save.setActionCommand(urlID);            menu.add(save);            // count up            i++;          } catch (MalformedURLException e) {            System.err.println("capture url invalid: " + e);          }        }      }    });    if (!personalJava) {    }  }  public void actionPerformed(ActionEvent e) {    String urlID = e.getActionCommand();    if (debug > 0)      System.err.println("Capture: storing text: "                         + urlID + ": "                         + remoteUrlList.get(urlID));    saveFile(urlID);  }  private void saveFile(String urlID) {    URL url = (URL) remoteUrlList.get(urlID);    try {      URLConnection urlConnection = url.openConnection();      DataOutputStream out;      BufferedReader in;      // Let the RTS know that we want to do output.      urlConnection.setDoInput(true);      // Let the RTS know that we want to do output.      urlConnection.setDoOutput(true);      // No caching, we want the real thing.      urlConnection.setUseCaches(false);      // Specify the content type.      urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");      // retrieve extra arguments      // Send POST output.      // send the data to the url receiver ...      out = new DataOutputStream(urlConnection.getOutputStream());      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");      in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));      String str;      while (null != ((str = in.readLine()))) {        System.out.println("Capture: " + str);      }      in.close();      doneDialog.pack();      doneDialog.setVisible(true);    } catch (IOException ioe) {      System.err.println("Capture: cannot store text on remote server: " + url);      ioe.printStackTrace();      JTextArea errorMsg = new JTextArea(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);  }  // this is where we get the data from (left side in plugins list)  protected FilterPlugin source;  /**   * The filter source is the plugin where Capture is connected to.   * In the list of plugins this is the one to the left.   * @param source the next plugin   */  public void setFilterSource(FilterPlugin source) {    if (debug > 0) System.err.println("Capture: connected to: " + source);    this.source = source;  }  public FilterPlugin getFilterSource() {    return source;  }  /**   * Read data from the left side plugin, capture the content and   * pass it on to the next plugin which called this method.   * @param b the buffer to store data into   */  public int read(byte[] b) throws IOException {    int size = source.read(b);    if (captureEnabled && size > 0) {      String tmp = new String(b, 0, size);      textArea.append(tmp);    }    return size;  }  /**   * Write data to the backend but also append it to the capture buffer.   * @param b the buffer with data to write   */  public void write(byte[] b) throws IOException {    if (captureEnabled) {      textArea.append(new String(b));    }    source.write(b);  }  /**   * The Capture plugin has no visual component that is embedded in   * the JTA main frame, so this returns null.   * @return always null   */  public JComponent getPluginVisual() {    return null;  }  /**   * The Capture menu for the menu bar as configured in the constructor.   * @return the drop down menu   */  public JMenu getPluginMenu() {    return menu;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -