package project;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class RelationshipsForm extends JPanel implements ActionListener {

	Relationships relationship=new Relationships();
	JTextField fieldID;
	JTextField fieldStatus;
	JTextField fieldFirstRelationshipAge;
	RadioButtons fieldVirgin;
	JTextField fieldLongestRelationship;
	JTextField fieldSexOrientation;
	JTextField fieldParentStatus;
	JTextField fieldPartnershipDuration;
	JTextField fieldChildren;
	JTextField fieldSibilings;
	RadioButtons fieldHealth;
	RadioButtons fieldSexLife;
	RadioButtons fieldAttractiveness;
	RadioButtons fieldHappiness;
	JTextField fieldPrinciple;
	JTextField fieldReligion;
	
	/* Setting up for Buttons */
	JButton saveButton;
	JButton cancelButton	;
	
	public RelationshipsForm(Relationships r){
		
		this();
		relationship=r;
		populateForm(r);
	}
	
	
	public RelationshipsForm(){
		
		Dimension dimension=getPreferredSize();
		dimension.width=500;
		dimension.height=400;
		/* setting the border */
		setBorder(BorderFactory.createTitledBorder("Relationship Panel"));
		setBackground(Color.lightGray);
		
		
		/* Setting up Label for the Attributes */
		JLabel labelID=new JLabel("ID:");
		JLabel labelStatus=new JLabel("Status:");
		JLabel labeFirstRelationshipAge=new JLabel("First Relationship Age:");
		JLabel labelVirgin=new JLabel("Virgin:");
		JLabel labelLongestRelationship=new JLabel("Longest Relatioship:");
		JLabel labelSexOrientation=new JLabel("Sexual Orientation:");
		JLabel labelParentStatus=new JLabel("Parent Status:");
		JLabel labelPartnershipDuration=new JLabel("Patnership Duration:");
		JLabel labelChildren=new JLabel("Children:");
		JLabel labelSibilings=new JLabel("Sibilings:");
		JLabel labelHealth=new JLabel("Health:");
		JLabel labelSexLife=new JLabel("Sex Life:");
		JLabel labelAttractiveness=new JLabel("Attarctiveness:");
		JLabel labelHappiness=new JLabel("Happiness:");
		JLabel labelPrinciple=new JLabel("Principle:");
		JLabel labelReligion=new JLabel("Religion:");
		
		
		
		
		
		/* Setting up TextField for the Attributes */
		fieldID=new JTextField(10);
		fieldStatus=new JTextField(10);
		fieldFirstRelationshipAge=new JTextField(10);
		fieldVirgin=new RadioButtons(new String[]{"Yes","No"},1);
		fieldLongestRelationship=new JTextField(20);
		fieldSexOrientation=new JTextField(20);
		fieldParentStatus=new JTextField(20);
		fieldPartnershipDuration=new JTextField(20);
		fieldChildren=new JTextField(20);
		fieldSibilings=new JTextField(20);
		fieldHealth=new RadioButtons(new String[]{"1","2","3","4","5"},1);
		fieldSexLife=new RadioButtons(new String[]{"1","2","3","4","5"},1);
		fieldAttractiveness=new RadioButtons(new String[]{"1","2","3","4","5"},1);
		fieldHappiness=new RadioButtons(new String[]{"1","2","3","4","5"},1);
		fieldPrinciple=new JTextField(20);
		fieldReligion=new JTextField(20);
		
		/* Setting up for Buttons */
		saveButton=new JButton("Save");
		cancelButton=new JButton("Cancel")	;
		
		
		/*Setting up the LayoutManager(GridBagLayout) for the Panel */
		
		setLayout(new GridBagLayout());
		GridBagConstraints gc=new GridBagConstraints();
		
		/* Laying out all the Label fields */
		gc.anchor=GridBagConstraints.LINE_END;
		gc.insets=new Insets(5,5,5,5);
		gc.weightx=0.5;
		gc.weighty=0.5;
		
		gc.gridx=0;
		gc.gridy=0;
		add(labelID,gc);
		
		gc.gridy=1;
		add(labelStatus,gc);
		
		gc.gridy=2;
		add(labeFirstRelationshipAge,gc);
		
		gc.gridy=3;
		add(labelVirgin,gc);
		
		gc.gridy=4;
		add(labelLongestRelationship,gc);
		
		gc.gridy=5;
		add(labelSexOrientation,gc);
		
		gc.gridy=6;
		add(labelParentStatus,gc);
		
		gc.gridy=7;
		add(labelPartnershipDuration,gc);
		
		gc.gridy=8;
		add(labelChildren,gc);
		
		gc.gridy=9;
		add(labelSibilings,gc);
		
		gc.gridy=10;
		add(labelHealth,gc);
		
		gc.gridy=11;
		add(labelSexLife,gc);
		
		gc.gridy=12;
		add(labelAttractiveness,gc);
		
		gc.gridy=13;
		add(labelHappiness,gc);
		
		gc.gridy=14;
		add(labelPrinciple,gc);
		
		gc.gridy=15;
		add(labelReligion,gc);
		
		
		
		/* Laying out all the Text fields */
		
		gc.anchor=GridBagConstraints.LINE_START;
		gc.fill=GridBagConstraints.NONE;
		gc.weightx=1.0;
		gc.weighty=0.5;
		gc.gridwidth=2;
		
		gc.gridx=1;
		gc.gridy=0;
		add(fieldID,gc);
		
		gc.gridy=1;
		add(fieldStatus,gc);
		
		gc.gridy=2;
		add(fieldFirstRelationshipAge,gc);
		
		gc.gridy=3;
		add(fieldVirgin,gc);
		
		gc.gridy=4;
		add(fieldLongestRelationship,gc);
		
		gc.gridy=5;
		add(fieldSexOrientation,gc);
		
		gc.gridy=6;
		add(fieldParentStatus,gc);
		
		gc.gridy=7;
		add(fieldPartnershipDuration,gc);
		gc.gridy=8;
		add(fieldChildren,gc);
		gc.gridy=9;
		add(fieldSibilings,gc);
		gc.gridy=10;
		add(fieldHealth,gc);
		gc.gridy=11;
		add(fieldSexLife,gc);
		gc.gridy=12;
		add(fieldAttractiveness,gc);
		gc.gridy=13;
		add(fieldHappiness,gc);
		gc.gridy=14;
		add(fieldPrinciple,gc);
		gc.gridy=15;
		add(fieldReligion,gc);
		
		
		
		/* Laying out all the Buttons  */
		gc.anchor=GridBagConstraints.FIRST_LINE_END;
		gc.fill=GridBagConstraints.NONE;
		gc.weightx=0.5;
		gc.gridwidth=1;
		gc.weighty=10.0;
		
		gc.gridx=1;
		gc.gridy=16;
		
		add(saveButton,gc);
		
		gc.anchor=GridBagConstraints.FIRST_LINE_START;
		gc.fill=GridBagConstraints.NONE;
		gc.weightx=5;
		gc.weighty=8;
		
		gc.gridx=2;
		gc.gridy=16;
		add(cancelButton,gc);
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}
	
	public void bindFormFields(Relationships r)
	{
		r.setStatus(fieldStatus.getText());
		r.setFirstRelationshipAge(Integer.parseInt(fieldFirstRelationshipAge.getText()));
		//r.setVirgin(fieldVirgin.getSelectedValue());
		r.setLongestRelationship(fieldLongestRelationship.getText());
		r.setSexualOrientation(fieldSexOrientation.getText());
		r.setParentsStatus(fieldParentStatus.getText());
		r.setPartnershipDuration(fieldPartnershipDuration.getText());
		r.setChildren(Integer.parseInt(fieldChildren.getText()));
		r.setSiblings(Integer.parseInt(fieldSibilings.getText()));
		r.setHealth(Integer.parseInt(fieldHealth.getSelectedValue()));
		r.setSexLife(Integer.parseInt(fieldSexLife.getSelectedValue()));
		r.setAttractiveness(Integer.parseInt(fieldAttractiveness.getSelectedValue()));
		r.setHappiness(Integer.parseInt(fieldHappiness.getSelectedValue()));
		r.setPrinciples(fieldPrinciple.getText());
		r.setReligion(fieldReligion.getText());
		
		
		
		
		System.out.println(r);
		
	}
	
	public void populateForm(Relationships r){
		relationship=r;
		fieldID.setText(Integer.toString(r.getId()));
		fieldStatus.setText(r.getStatus());
		fieldFirstRelationshipAge.setText(Integer.toString(r.getVirgin()));
		fieldLongestRelationship.setText(r.getLongestRelationship());
		fieldSexOrientation.setText(r.getSexualOrientation());
		fieldParentStatus.setText(r.getParentsStatus());
		fieldPartnershipDuration.setText(r.getPartnershipDuration());
		fieldChildren.setText(Integer.toString(r.getChildren()));
		fieldSibilings.setText(Integer.toString(r.getSiblings()));
		fieldHealth.setText(r.getHealth());
		fieldSexLife.setText(r.getSexLife());
		fieldAttractiveness.setText(r.getAttractiveness());
		fieldHealth.setText(r.getHappiness());
		fieldPrinciple.setText(r.getPrinciples());
		fieldReligion.setText(r.getReligion());
		
		
	}

}
