import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.util.*;

public class StimDisplay 
{
  //Text areas for Stimulus and Pole display.
	public JTextArea stimDisplay = new JTextArea(1,1);
  public JScrollPane scrollStimDisplay = new JScrollPane(stimDisplay);
  public JTextArea pole1 = new JTextArea();
  public JScrollPane scrollPole1 = new JScrollPane(pole1);
  public JTextArea pole2 = new JTextArea();
  public JScrollPane scrollPole2 = new JScrollPane(pole2);
  public JTextArea pole3 = new JTextArea();
  public JScrollPane scrollPole3 = new JScrollPane(pole3);
  public JTextField poleCue1 = new JTextField();
  public JTextField poleCue2 = new JTextField();
  public JTextField poleCue3 = new JTextField();
	
	//Dimentions for each area of the Stimulus and Pole Display
	private Dimension stimDisplayDimension = new Dimension(400,295);
	private Dimension poleDimension = new Dimension(365,85);
	private Dimension poleCueDimension = new Dimension(30,20);
	
	/**
	 * Default Constructor
	 */
	public StimDisplay() 
	{
	}

  public StimDisplay(JLayeredPane layers, BevelBorder bevelL)
  {    
    //***********************************
    //Setup properties of the StimDisplay
    //***********************************
    
    //stimDisplay properties
    stimDisplay.setEditable(false);
    stimDisplay.setLineWrap(true);
    stimDisplay.setWrapStyleWord(true);
    stimDisplay.setBackground(Color.white);
    //stimDisplay.setBorder(bevelL);
    //stimDisplay.setText("Stim Display");
    //stimDisplay.setText("TEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\n");
    stimDisplay.setHighlighter(null);
    //stimDisplay.setSize(stimDisplayDimension);
    stimDisplay.setBounds(5,5,400,295);
    scrollStimDisplay.setBounds(5,5,400,295);
    //stimDisplay.setMinimumSize(stimDisplayDimension);
    
    //pole1 properties
    pole1.setEditable(false);
    pole1.setLineWrap(true);
    pole1.setWrapStyleWord(true);
    pole1.setBackground(Color.white);
    //pole1.setBorder(bevelL);
    //pole1.setText("TEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\n");
    pole1.setHighlighter(null);
    //pole1.setSize(poleDimension);
    pole1.setBounds(40,305,365,85);
    scrollPole1.setBounds(40,305,365,85);
    //pole1.setMinimumSize(poleDimension);
    //pole1.setMaximumSize(poleDimension);
    //pole1.setPreferredSize(poleDimension);
    
    //pole2 properties
    pole2.setEditable(false);
    pole2.setLineWrap(true);
    pole2.setWrapStyleWord(true);
    pole2.setBackground(Color.white);
    //pole2.setBorder(bevelL);
    //pole2.setText("TEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\n");
    pole2.setHighlighter(null);
    //pole2.setSize(poleDimension);
    pole2.setBounds(40,395,365,85);
    scrollPole2.setBounds(40,395,365,85);
    //pole2.setMinimumSize(poleDimension);
    //pole2.setMaximumSize(poleDimension);
    //pole2.setPreferredSize(poleDimension);
    
    //pole3 properties
    pole3.setEditable(false);
    pole3.setLineWrap(true);
    pole3.setWrapStyleWord(true);
    pole3.setBackground(Color.white);
    //pole3.setBorder(bevelL);
    //pole3.setText("TEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\n");
    pole3.setHighlighter(null);
    //pole3.setSize(poleDimension);
    pole3.setBounds(40,485,365,85);
    scrollPole3.setBounds(40,485,365,85);
    //pole3.setMinimumSize(poleDimension);
    //pole3.setMaximumSize(poleDimension);
    //pole3.setPreferredSize(poleDimension);
    
    //poleCue1 properties
    poleCue1.setEditable(false);
    //poleCue1.setLineWrap(true);
    poleCue1.setBackground(Color.white);
    poleCue1.setBorder(bevelL);
    //poleCue1.setText("poleCue1");
    poleCue1.setHighlighter(null);
    //poleCue1.setSize(poleCueDimension);
    poleCue1.setBounds(5,305,30,20);
    //poleCue1.setMinimumSize(poleCueDimension);
    //poleCue1.setMaximumSize(poleCueDimension);
    //poleCue1.setPreferredSize(poleCueDimension);
    
    //poleCue2 properties
    poleCue2.setEditable(false);
    //poleCue1.setLineWrap(true);
    poleCue2.setBackground(Color.white);
    poleCue2.setBorder(bevelL);
    //poleCue2.setText("poleCue2");
    poleCue2.setHighlighter(null);
    //poleCue2.setSize(poleCueDimension);
    poleCue2.setBounds(5,395,30,20);
    //poleCue2.setMinimumSize(poleCueDimension);
    //poleCue2.setMaximumSize(poleCueDimension);
    //poleCue2.setPreferredSize(poleCueDimension);
    
    //poleCue3 properties
    poleCue3.setEditable(false);
    //poleCue1.setLineWrap(true);
    poleCue3.setBackground(Color.white);
    poleCue3.setBorder(bevelL);
    //poleCue3.setText("poleCue3");
    poleCue3.setHighlighter(null);
    //poleCue3.setSize(poleCueDimension);
    poleCue3.setBounds(5,485,30,20);
    //poleCue3.setMinimumSize(poleCueDimension);
   // poleCue3.setMaximumSize(poleCueDimension);
   // poleCue3.setPreferredSize(poleCueDimension);
    
    //********************************************************
    //Include the Areas in the StimDisplay and set their layer
    //********************************************************
    
    //layers.add(stimDisplay);
    //layers.setLayer(stimDisplay,1);
    
    layers.add(scrollStimDisplay);
    layers.setLayer(scrollStimDisplay,1);
    
    layers.add(scrollPole1);
    layers.add(scrollPole2);
    layers.add(scrollPole3);
    layers.setLayer(scrollPole1,1);
    layers.setLayer(scrollPole2,1);
    layers.setLayer(scrollPole3,1);
    
    layers.add(poleCue1);
    layers.add(poleCue2);
    layers.add(poleCue3);
    layers.setLayer(poleCue1,1);
    layers.setLayer(poleCue2,1);
    layers.setLayer(poleCue3,1);
    
    //********************************
    //Set the Areas to a visible state
    //********************************
    
    stimDisplay.setVisible(true);
    pole1.setVisible(true);
    pole2.setVisible(true);
    pole3.setVisible(true);
    poleCue1.setVisible(true);
    poleCue2.setVisible(true);
    poleCue3.setVisible(true);
    
  }
  
  public void setStim(String text)
  {
    stimDisplay.setText(text);
  }
  
  public void appendStim(String text)
  {
    stimDisplay.append(text);
    scrollStimDisplay.getVerticalScrollBar().setValue(0);
  }
  
  public void setPole(int x, String poleCue, String poleTopic, String pole)
  {
    if(x == 1)
    {
      poleCue1.setText(poleCue);
      pole1.setText(poleTopic + "\n\n");
      pole1.append(pole);
      scrollPole1.getHorizontalScrollBar().setValue(0);
    }
    else if(x == 2)
    {
      poleCue2.setText(poleCue);
      pole2.setText(poleTopic + "\n\n");
      pole2.append(pole);
    }
    else if(x == 3)
    {
      poleCue3.setText(poleCue);
      pole3.setText(poleTopic + "\n\n");
      pole3.append(pole);
    }
    else
      System.out.println("Value out of range");
    
  }
  
  public String getStim()
  {
    return stimDisplay.getText();
  }
  
  public String getPoleCue(int x)
  {
    if(x == 1)
    {
      return poleCue1.getText();
    }
    else if(x == 2)
    {
      return poleCue2.getText();
    }
    else if(x == 3)
    {
      return poleCue3.getText();
    }
    else
    {
      System.out.println("Value out of range");
      return "null";
    }
  }
  
  public String getPoleTopic(int x)
  {
    if(x == 1)
    {
      String temp = pole1.getText();
      return temp.substring(0,temp.indexOf('\n'));
    }
    else if(x == 2)
    {
      String temp = pole2.getText();
      return temp.substring(0,temp.indexOf('\n'));
    }
    else if(x == 3)
    {
      String temp = pole3.getText();
      return temp.substring(0,temp.indexOf('\n'));
    }
    else
    {
      System.out.println("Value out of range");
      return "null";
    }
  }
  
  public String getPole(int x)
  {
    if(x == 1)
    {
      String temp = pole1.getText();
      return temp.substring(temp.indexOf('\n'));
    }
    else if(x == 2)
    {
      String temp = pole2.getText();
      return temp.substring(temp.indexOf('\n'));
    }
    else if(x == 3)
    {
      String temp = pole3.getText();
      return temp.substring(temp.indexOf('\n'));
    }
    else
    {
      System.out.println("Value out of range");
      return "null";
    }
  }
  
  public void reset()
  {
    stimDisplay.setText("");
    pole1.setText("");
    pole2.setText("");
    pole3.setText("");
    poleCue1.setText("");
    poleCue2.setText("");
    poleCue3.setText("");
  }
  
}
