Package views

Source Code of views.TextPanel

package views;

import java.awt.BorderLayout;
import java.awt.Color;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Enumeration;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.DefaultHighlighter.DefaultHighlightPainter;

import misc.ResultTreeNode;
import model.Model;
import application.Application;

public class TextPanel extends JPanel implements PropertyChangeListener{

  // Reference to the Model
  Model model;
 
  private JPanel jPanelButtons = null;
  private JScrollPane jScrollPaneText = null;
  private JTextArea jTextArea = null;
  private JButton jButtonLoad = null;
  private JButton jButtonSave = null;
  private DefaultHighlighter highlighter = null;
  private DefaultHighlightPainter highlightPainter = null;
 
  public TextPanel(Model model) {
    super();
    this.model = model;
    model.addPropertyChangeListener(this);
    initialize();
  }

  /**
   * This method initializes this
   *
   */
  private void initialize() {
        this.setLayout(new BorderLayout());
        this.setSize(new java.awt.Dimension(400,400));
        this.setBorder(BorderFactory.createTitledBorder(Application.messages.getString("TITLE_TEXT")));
        this.add(getJPanelButtons(), java.awt.BorderLayout.NORTH);
        this.add(getJScrollPaneText(), java.awt.BorderLayout.CENTER);
  }

  /**
   * This method initializes jPanelButtons 
   *  
   * @return javax.swing.JPanel 
   */
  private JPanel getJPanelButtons() {
    if (jPanelButtons == null) {
      jPanelButtons = new JPanel();
      jPanelButtons.setLayout(null);
      jPanelButtons.setPreferredSize(new java.awt.Dimension(1,35));
      jPanelButtons.setName("jPanelButtons");
      jPanelButtons.add(getJButtonLoad(), null);
      jPanelButtons.add(getJButtonSave(), null);
    }
    return jPanelButtons;
  }

  /**
   * This method initializes jScrollPaneText 
   *  
   * @return javax.swing.JScrollPane 
   */
  private JScrollPane getJScrollPaneText() {
    if (jScrollPaneText == null) {
      jScrollPaneText = new JScrollPane();
      jScrollPaneText.setName("jScrollPaneText");
      jScrollPaneText.setViewportView(getJTextArea());
    }
    return jScrollPaneText;
  }

  /**
   * This method initializes jTextArea 
   *  
   * @return javax.swing.JTextArea 
   */
  private JTextArea getJTextArea() {
    if (jTextArea == null) {
      jTextArea = new JTextArea();
      jTextArea.setLineWrap(true);
     
      highlightPainter = new DefaultHighlightPainter(new Color(214, 186, 255));
      highlighter = new DefaultHighlighter();
      jTextArea.setHighlighter(highlighter);
     
      jTextArea.addKeyListener(new java.awt.event.KeyAdapter() {
        public void keyReleased(java.awt.event.KeyEvent e) {
          onTextChange();
        }
      });
    }
    return jTextArea;
  }

  /**
   * This method initializes jButtonLoad 
   *  
   * @return javax.swing.JButton 
   */
  private JButton getJButtonLoad() {
    if (jButtonLoad == null) {
      jButtonLoad = new JButton();
      jButtonLoad.setText(Application.messages.getString("BUTTON_LOAD"));
      jButtonLoad.setBounds(new java.awt.Rectangle(10,5,90,25));
      jButtonLoad.setName("jButtonLoad");
      jButtonLoad.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          openTextFile();
        }
      });
    }
    return jButtonLoad;
  }

  /**
   * This method initializes jButtonSave 
   *  
   * @return javax.swing.JButton 
   */
  private JButton getJButtonSave() {
    if (jButtonSave == null) {
      jButtonSave = new JButton();
      jButtonSave.setText(Application.messages.getString("BUTTON_SAVE"));
      jButtonSave.setBounds(new java.awt.Rectangle(105,5,90,25));
      jButtonSave.setName("jButtonSave");
      jButtonSave.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          saveTextFile();
        }
      });
    }
    return jButtonSave;
 
 
  /**
   * openTextFile loads a new file
   */
  private void openTextFile() {
    model.openTextFile();
  }
 
  /**
   * saveTextFile saves a file
   */
  private void saveTextFile() {
    model.saveTextFile();
  }
 
  /**
   * onTextChange calls the model
   */
  private void onTextChange() {
    model.setText(jTextArea.getText());
  }
 
  /**
   * highlightText highlights text with the matches informations stored in the resultTree
   * @param matches
   */
  private void highlightText(ResultTreeNode matches) {
    ResultTreeNode node;
    highlighter.removeAllHighlights();
    for (Enumeration e = matches.depthFirstEnumeration(); e.hasMoreElements() ;) {     
      try {
        node = (ResultTreeNode)e.nextElement();
        highlighter.addHighlight(node.getIndexStart(), node.getIndexEnd(), highlightPainter);
      }
      catch (Exception evt) { evt.printStackTrace(); }
    }
  }
 
  /**
   * When the resultTree is changed, then the highlight process is called to update the text area
   */
  public void propertyChange(PropertyChangeEvent arg0) {
    if (arg0.getPropertyName() == "resultTree" || arg0.getPropertyName() == "resultMatch") {
      highlightText((ResultTreeNode)arg0.getNewValue());
    }
    if (arg0.getPropertyName() == "inputText") {
      if(((String)arg0.getNewValue()).compareTo(jTextArea.getText()) != 0)
        jTextArea.setText((String)arg0.getNewValue());
    }
  }


}
TOP

Related Classes of views.TextPanel

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.