Package placeholder.ui.panel

Source Code of placeholder.ui.panel.SimplePanel$TextAreaOutputStream

package placeholder.ui.panel;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;

import placeholder.Crawler;
import placeholder.website.queue.WebsiteQueue;
import placeholder.website.queue.WebsiteResultQueue;

/**
* @author Heiko Bornholdt
*/
public class SimplePanel extends JPanel {
  private static final long serialVersionUID = 1L;

  protected JTextArea textArea;
  protected JLabel websiteQueue;
  protected JLabel websiteResultQueue;

  public SimplePanel(final WebsiteQueue queue, final WebsiteResultQueue resultQueue) {
    this.setLayout(new BorderLayout());

    // create panels
    this.createLogPanel();
    this.createStatusPanel();
   
    // update status every second
    new Timer().schedule(new TimerTask() {
      public void run() {
        websiteQueue.setText(new Integer(queue.getSize()).toString());
        websiteResultQueue.setText(new Integer(resultQueue.getSize()).toString());
      }         
    }, 0, 100);
   
    // start crawler
    PrintStream out = new PrintStream(new TextAreaOutputStream(this.textArea));
    new Crawler(out, queue, resultQueue).start();
  }

  /**
   * Creates the log panel.
   */
  protected void createLogPanel() {
    // init panel
    JPanel panel = new JPanel();
    panel.setBorder(new EmptyBorder(3, 3, 3, 3));
    panel.setLayout(new BorderLayout());

    this.textArea = new JTextArea();
    JScrollPane scrollPane = new JScrollPane(this.textArea);
    panel.add(scrollPane);

    this.add(BorderLayout.CENTER, panel);
  }

  /**
   * Creates the status panel.
   */
  protected void createStatusPanel() {
    // init panel
    JPanel panel = new JPanel();
    panel.setBorder(new EmptyBorder(0, 3, 3, 3));
    panel.setLayout(new GridLayout(1, 4));

    // WebsiteQueue
    panel.add(new JLabel("WebsiteQueue"));
    this.websiteQueue = new JLabel("0");
    panel.add(this.websiteQueue);

    // WebsiteResultQueue
    panel.add(new JLabel("WebsiteResultQueue"));
    this.websiteResultQueue = new JLabel("0");
    panel.add(this.websiteResultQueue);
   
    this.add(BorderLayout.SOUTH, panel);
  }

  /**
   * Prints output to log textArea.
   */
  protected class TextAreaOutputStream extends OutputStream {
    protected final JTextArea textArea;

    public TextAreaOutputStream(JTextArea textArea) {
      this.textArea = textArea;
    }

    public void write(int b) throws IOException {
      this.textArea.append(String.valueOf((char)b));
      this.textArea.setCaretPosition(this.textArea.getDocument().getLength());
    }
  }
}
TOP

Related Classes of placeholder.ui.panel.SimplePanel$TextAreaOutputStream

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.