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 StimEdit 
{
  //Text areas for Stimulus and Pole display.
  public JTextArea stimEditor = new JTextArea(1,1);
  public JScrollPane scrollstimEditor = new JScrollPane(stimEditor);
  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 poleID1 = new JTextField();
  public JTextField poleID2 = new JTextField();
  public JTextField poleID3 = new JTextField();
	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 stimEditorDimension = new Dimension(375,340);
  private Dimension poleDimension = new Dimension(365,85);
  private Dimension poleIDDimension = new Dimension(30,20);
	private Dimension poleCueDimension = new Dimension(340,20);
  
  /**
   * Default Constructor
   */
  public StimEdit() 
  {
  }

  public StimEdit(JLayeredPane layers, BevelBorder bevelL)
  {    
    //***********************************
    //Setup properties of the stimEditor
    //***********************************
    
    //stimEditor properties
    stimEditor.setEditable(true);
    stimEditor.setLineWrap(true);
    stimEditor.setBackground(Color.white);
 
    //stimEditor.setSize(stimEditorDimension);
    stimEditor.setBounds(5,85,(int)stimEditorDimension.getWidth(),(int)stimEditorDimension.getHeight());
    scrollstimEditor.setBounds(5,85,(int)stimEditorDimension.getWidth(),(int)stimEditorDimension.getHeight());
    //stimEditor.setMinimumSize(stimEditorDimension);
    
    //pole1 properties
    pole1.setEditable(true);
    pole1.setLineWrap(true);
    pole1.setWrapStyleWord(true);
		pole1.setBackground(Color.white);

    //pole1.setSize(poleDimension);
    pole1.setBounds(420,110,(int)poleDimension.getWidth(),(int)poleDimension.getHeight());
    scrollPole1.setBounds(420,110,(int)poleDimension.getWidth(),(int)poleDimension.getHeight());
   
    
    //pole2 properties
    pole2.setEditable(true);
    pole2.setLineWrap(true);
		pole2.setWrapStyleWord(true);
    pole2.setBackground(Color.white);

    pole2.setBounds(420,225,(int)poleDimension.getWidth(),(int)poleDimension.getHeight());
    scrollPole2.setBounds(420,225,(int)poleDimension.getWidth(),(int)poleDimension.getHeight());

    
    //pole3 properties
    pole3.setEditable(true);
    pole3.setLineWrap(true);
		pole3.setWrapStyleWord(true);
    pole3.setBackground(Color.white);

    pole3.setBounds(420,340,(int)poleDimension.getWidth(),(int)poleDimension.getHeight());
    scrollPole3.setBounds(420,340,(int)poleDimension.getWidth(),(int)poleDimension.getHeight());
  
		//poleCue1 properites
		poleCue1.setEditable(true);
		poleCue1.setBackground(Color.white);
    poleCue1.setBorder(bevelL);
    poleCue1.setBounds(420,85,(int)poleCueDimension.getWidth(),(int)poleCueDimension.getHeight());

		//poleCue2 properites
		poleCue2.setEditable(true);
		poleCue2.setBackground(Color.white);
    poleCue2.setBorder(bevelL);
    poleCue2.setBounds(420,200,(int)poleCueDimension.getWidth(),(int)poleCueDimension.getHeight());		
		
		//poleCue3 properites
		poleCue3.setEditable(true);
		poleCue3.setBackground(Color.white);
    poleCue3.setBorder(bevelL);
    poleCue3.setBounds(420,315,(int)poleCueDimension.getWidth(),(int)poleCueDimension.getHeight());
		
    //poleID1 properties
    poleID1.setEditable(true);
    //poleCue1.setLineWrap(true);
    poleID1.setBackground(Color.white);
    poleID1.setBorder(bevelL);
    poleID1.setBounds(385,85,(int)poleIDDimension.getWidth(),(int)poleIDDimension.getHeight());
 
    
    //poleID2 properties
    poleID2.setEditable(true);
    //poleCue1.setLineWrap(true);
    poleID2.setBackground(Color.white);
    poleID2.setBorder(bevelL);
    poleID2.setBounds(385,200,(int)poleIDDimension.getWidth(),(int)poleIDDimension.getHeight());
 
    
    //poleID3 properties
    poleID3.setEditable(true);
    //poleCue1.setLineWrap(true);
    poleID3.setBackground(Color.white);
    poleID3.setBorder(bevelL);
    poleID3.setBounds(385,315,(int)poleIDDimension.getWidth(),(int)poleIDDimension.getHeight());

    
    //********************************************************
    //Include the Areas in the stimEditor and set their layer
    //********************************************************
    
    //layers.add(stimEditor);
    //layers.setLayer(stimEditor,1);
    
    layers.add(scrollstimEditor);
    layers.setLayer(scrollstimEditor,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);
		
    layers.add(poleID1);
    layers.add(poleID2);
    layers.add(poleID3);
    layers.setLayer(poleID1,1);
    layers.setLayer(poleID2,1);
    layers.setLayer(poleID3,1);
    
    //********************************
    //Set the Areas to a visible state
    //********************************
    
    stimEditor.setVisible(true);
    pole1.setVisible(true);
    pole2.setVisible(true);
    pole3.setVisible(true);
		poleCue1.setVisible(true);
    poleCue2.setVisible(true);
    poleCue3.setVisible(true);
    poleID1.setVisible(true);
    poleID2.setVisible(true);
    poleID3.setVisible(true);
    
  } 
  
  public void setStim(String text)
  {
    stimEditor.setText(text);
  }
  
  public void appendStim(String text)
  {
    stimEditor.append(text);
  }
  
  public void setPole(int x, String poleID, String poleCue, String pole)
  {
    if(x == 1)
    {
      poleID1.setText(poleID);
      poleCue1.setText(poleCue);
      pole1.setText(pole);
    }
    else if(x == 2)
    {
      poleID2.setText(poleID);
      poleCue2.setText(poleCue);
      pole2.setText(pole);
    }
    else if(x == 3)
    {
      poleID3.setText(poleID);
      poleCue3.setText(poleCue);
      pole3.setText(pole);
    }
    else
      System.out.println("Value out of range");
    
  }
  
  public String getStim()
  {
    if( stimEditor.getText().equals("") )
		{
			return "Question";
		}
		else
		{
			return stimEditor.getText();
		}
  }
  
  public String getPoleCue(int x)
  {
    if(x == 1)
    {
      if( poleCue1.getText().equals("") )
			{
				return "Option A";
			}
			else
			{
				return poleCue1.getText();
			}
    }
    else if(x == 2)
    {
      if( poleCue2.getText().equals("") )
			{
				return "Option B";
			}
			else
			{
				return poleCue2.getText();
			}
    }
    else if(x == 3)
    {
      if( poleCue3.getText().equals("") )
			{
				return "Option C";
			}
			else
			{
				return poleCue3.getText();
			}
    }
    else
    {
      System.out.println("Value out of range");
      return "null";
    }
  }
  
  public String getPoleID(int x)
  {
    if(x == 1)
    {
      if( poleID1.getText().equals("") )
			{
				return "A";
			}
			else
			{
				return poleID1.getText();
			}
    }
    else if(x == 2)
    {
      if( poleID2.getText().equals("") )
			{
				return "B";
			}
			else
			{
				return poleID2.getText();
			}
    }
    else if(x == 3)
    {
      if( poleID3.getText().equals("") )
			{
				return "C";
			}
			else
			{
				return poleID3.getText();
			}
    }
    else
    {
      System.out.println("Value out of range");
      return "null";
    }
  }
  
  public String getPole(int x)
  {
    if(x == 1)
    {
      if( pole1.getText().equals("") )
			{
				return "Option A Description";
			}
			else
			{
				return pole1.getText();
			}
    }
    else if(x == 2)
    {
      if( pole2.getText().equals("") )
			{
				return "Option B Description";
			}
			else
			{
				return pole2.getText();
			}
    }
    else if(x == 3)
    {
      if( pole3.getText().equals("") )
			{
				return "Option C Description";
			}
			else
			{
				return pole3.getText();
			}
    }
    else
    {
      System.out.println("Value out of range");
      return "null";
    }
  }
  
  public void reset()
  {
    stimEditor.setText("");
    pole1.setText("");
    pole2.setText("");
    pole3.setText("");
    poleCue1.setText("");
    poleCue2.setText("");
    poleCue3.setText("");
    poleID1.setText("");
    poleID2.setText("");
    poleID3.setText("");
  }
}
