summaryrefslogtreecommitdiffstats
path: root/Bachelor/ERGO/TierheimVerw/thv/TierVerDialog.java
blob: 81da47a8e861b13f22296e336c3e91b15ec9c064 (plain)
1
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.util.*;
import javax.swing.*;
import java.text.DateFormat;
/**

 * <p>�berschrift: Tierverwaltungdialog</p>

 *

 * <p>Beschreibung: Dialog um neue Tiere anzulegen oder bestehende zu �ndern</p>

 *

 * <p>Copyright: Copyright (c) 2005</p>

 *

 * <p>Organisation: </p>

 *

 * @author Andreas Spirka, Sven Eisenhauer

 * @version 1.0

 */

public class TierVerDialog extends AbstractMyJDlg implements Observer
{
	Container c;
	User actUser;
	TierCon tc;
	int pos=0;
	String bildpfad="";
	Tier actTier;
	String[] UserNames;
	UserCon users;

	transient ViewComponent pic = new ViewComponent();
	transient ImageFilter filter = new ImageFilter();
	transient JFileChooser chooser = new JFileChooser();

	// *** Container ***
	JPanel panelEigenschaften = new JPanel();     // Panel f�r Eigenschaften: RegNr, Name ...
	JPanel panelButton = new JPanel();             // Panel f�r Buttons vor und zur�ck
	JPanel panelArzt = new JPanel();             // Panel f�r die rechte Seite
	JPanel panelMenue = new JPanel();
	JPanel panelFrei = new JPanel();
	JPanel panelButtonBild = new JPanel();
	JPanel panelUnten= new JPanel();

	//GRIDBAG
	JPanel grid = new JPanel();

	//***Components***
	JLabel regNr = new JLabel("RegNr.");
	JLabel name = new JLabel("Name");
	JLabel tierart = new JLabel("Tierart");
	JLabel rasse = new JLabel("Rasse");
	JLabel alter = new JLabel("Alter");
	JLabel geschlecht = new JLabel("Geschlecht");
	JLabel farbe = new JLabel("Farbe");
	JLabel sonstiges = new JLabel("Sonstiges");
	JLabel heimeintritt = new JLabel("Heimeintritt");
	JLabel impfung = new JLabel("Impfung");
	JLabel idMitarbeiter = new JLabel("ID Mitarbeiter");
	JLabel aenderung = new JLabel("letzte �nderung");
	JLabel arzt = new JLabel("�rztlicher Befund");
	JLabel freiLabel = new JLabel("Tier freigeben");
	JTextField regNrText = new JTextField(12);
	JTextField nameText = new JTextField(12);
	JLabel statusLabel = new JLabel();

	JComboBox tierartText = new JComboBox(Tier.TIERARTEN);
	JComboBox tierGeschlecht = new JComboBox(Tier.GESCHLECHT);
	JTextField rasseText = new JTextField(12);
	JTextField alterText = new JTextField(12);
	JTextField farbeText = new JTextField(12);
	JTextArea sonstigesText = new JTextArea(5,12);
	JTextField heimeintrittText = new JTextField(12);
	JTextField impfungText = new JTextField(12);
	JComboBox idMitarbeiterText =new JComboBox();
	JTextField aenderungText = new JTextField(12);
	JTextArea befund = new JTextArea(5,15);
	JCheckBox box = new JCheckBox();

	JButton zurueck = new JButton("zur�ck");
	JButton vor = new JButton("vor");
	JButton bestand = new JButton("Tierbestand");
	JButton abbrechenJB = new JButton("Abbrechen");
	JButton speichernJB = new JButton("Tier hinzuf�gen");
	JButton bildJB = new JButton("Bild");
	JButton bildDelJB = new JButton("Bild l�schen");
	JButton neuJB = new JButton("neu");

	//f�r GridBag
	/**
	 * @param cont
	 * @param gbl
	 * @param c
	 * @param x
	 * @param y
	 * @param width
	 * @param height
	 * @param weightx
	 * @param weighty
	 */
	static void addComponent( Container cont,
			GridBagLayout gbl,
			Component c,
			int x, int y,
			int width, int height,
			double weightx, double weighty ){
		GridBagConstraints gbc = new GridBagConstraints();
		gbc.fill = GridBagConstraints.BOTH;
		gbc.gridx = x; gbc.gridy = y;
		gbc.gridwidth = width; gbc.gridheight = height;
		gbc.weightx = weightx; gbc.weighty = weighty;
		gbl.setConstraints( c, gbc );
		cont.add( c );
	}

	/**
	 * Konstruktor
	 */
	public TierVerDialog()
	{
		ButtonListener2 bl = new ButtonListener2(this);
		actUser=thv.getActUser();
		tc=thv.getTierCon();
		String fName = "user.dat";
		c = getContentPane();
		GridBagLayout gbl = new GridBagLayout();
		c.setLayout(gbl);
		setSize(new Dimension(700,500));

		panelEigenschaften.setBorder(BorderFactory.createEtchedBorder());
		panelEigenschaften.setLayout(  new GridLayout(12, 0,1,1 ) );
		panelButton.setBorder(BorderFactory.createEtchedBorder());
		panelButton.setLayout( new FlowLayout());
		panelArzt.setLayout(new GridLayout(0,1,1,1));
		panelArzt.setBorder(BorderFactory.createEtchedBorder());
		panelMenue.setLayout( new FlowLayout());
		panelButtonBild.setLayout( new FlowLayout());

		//***GridBag***//
		// w=Spalten h=Zeilen x=POsitionSpalte y=PositionZeile
		//                                          x  y  w  h  wx   wy
		addComponent( c, gbl, panelEigenschaften          , 0, 0, 1, 2, 1.0, 1.0 );
		addComponent( c, gbl, panelButtonBild             , 0, 2, 1, 1, 0, 0 );
		addComponent( c, gbl, panelArzt                   , 0, 3, 1, 3,  0,   0 );
		addComponent( c, gbl, pic                         , 3, 0, 1, 2, 1.0, 0   );
		addComponent( c, gbl, panelButton                 , 3, 2, 1, 1, 0 ,  0 );
		addComponent( c, gbl, panelMenue                  , 3, 3, 1, 1, 0, 1.0);
		addComponent( c, gbl, bestand                     , 3, 4, 1, 1, 0  ,  0   );

		pic.setMinimumSize(new Dimension(200,200));
		pic.setMaximumSize(new Dimension(200,200));

		//***PanelButton***//
		panelButton.add(zurueck);
		panelButton.add(vor);
		vor.setActionCommand("vor");
		vor.addActionListener(bl);
		vor.setMnemonic(KeyEvent.VK_V);
		zurueck.setActionCommand("zurueck");
		zurueck.addActionListener(bl);
		zurueck.setMnemonic(KeyEvent.VK_Z);

		//***PanelButtonBild***//
		panelButtonBild.add(bildJB);
		bildJB.setActionCommand("bild");
		bildJB.addActionListener(bl);
		bildJB.setMnemonic(KeyEvent.VK_B);
		panelButtonBild.add(bildDelJB);
		bildDelJB.setActionCommand("bilddel");
		bildDelJB.addActionListener(bl);

		//***PanelMenue***//
		panelMenue.add(speichernJB);
		speichernJB.setActionCommand("speichern");
		speichernJB.addActionListener(bl);
		speichernJB.setMnemonic(KeyEvent.VK_H);
		panelMenue.add(neuJB);
		neuJB.setActionCommand("neu");
		neuJB.setMnemonic(KeyEvent.VK_N);
		neuJB.addActionListener(bl);
		panelMenue.add(abbrechenJB);
		abbrechenJB.setActionCommand("abbrechen");
		abbrechenJB.addActionListener(bl);

		//**PANEL Arzt***//
		panelArzt.add(arzt);
		arzt.setAlignmentX( Component.CENTER_ALIGNMENT);
		panelArzt.add(befund);
		panelArzt.add(panelFrei);
		panelFrei.add(freiLabel);
		panelFrei.add(box);



		//***PANEL EIgenschaften***
		panelEigenschaften.add(regNr);
		panelEigenschaften.add(regNrText);
		regNrText.setEnabled(false);
		name.setLabelFor(nameText);
		name.setDisplayedMnemonic(KeyEvent.VK_M);
		panelEigenschaften.add(name);
		panelEigenschaften.add(nameText);
		panelEigenschaften.add(tierart);
		tierart.setLabelFor(tierartText);
		tierart.setDisplayedMnemonic(KeyEvent.VK_T);
		panelEigenschaften.add(tierartText);
		rasse.setDisplayedMnemonic(KeyEvent.VK_R);
		rasse.setLabelFor(rasseText);
		panelEigenschaften.add(rasse);
		panelEigenschaften.add(rasseText);
		panelEigenschaften.add(alter);
		alter.setDisplayedMnemonic(KeyEvent.VK_L);
		alter.setLabelFor(alterText);
		alterText.setInputVerifier(new IntVerifier());
		panelEigenschaften.add(alterText);
		panelEigenschaften.add(geschlecht);
		geschlecht.setDisplayedMnemonic(KeyEvent.VK_G);
		geschlecht.setLabelFor(tierGeschlecht);
		panelEigenschaften.add(tierGeschlecht);
		farbe.setDisplayedMnemonic(KeyEvent.VK_F);
		farbe.setLabelFor(farbeText);
		panelEigenschaften.add(farbe);
		panelEigenschaften.add(farbeText);
		panelEigenschaften.add(sonstiges);
		sonstiges.setDisplayedMnemonic(KeyEvent.VK_S);
		sonstiges.setLabelFor(sonstigesText);
		panelEigenschaften.add(sonstigesText);
		panelEigenschaften.add(heimeintritt);
		heimeintritt.setDisplayedMnemonic(KeyEvent.VK_E);
		heimeintritt.setLabelFor(heimeintrittText);
		//heimeintrittText.setText(DateFormat.getDateInstance().format(new Date()));
		panelEigenschaften.add(heimeintrittText);
		impfung.setDisplayedMnemonic(KeyEvent.VK_I);
		impfung.setLabelFor(impfungText);
		panelEigenschaften.add(impfung);
		panelEigenschaften.add(impfungText);
		idMitarbeiter.setDisplayedMnemonic(KeyEvent.VK_M);
		idMitarbeiter.setLabelFor(idMitarbeiterText);
		panelEigenschaften.add(idMitarbeiter);
		try {
			FileInputStream fis = new FileInputStream(fName);
			ObjectInputStream ois = new ObjectInputStream(fis);
			users = (UserCon) ois.readObject();
			ois.close();
			fis.close();
			UserNames=new String[users.size()];
			for (int i=0;i<users.size();i++)
			{
				User u2 = (User) users.elementAt(i);
				UserNames[i] = u2.getUserName();
				if (u2.getRole() != User.ROLE_GUEST)
					idMitarbeiterText.addItem((Object) u2.getUserName());
			}
			//idMitarbeiterText = new JComboBox(UserNames);
			panelEigenschaften.add(idMitarbeiterText);
		} catch (Exception exception) { exception.printStackTrace(); }
		panelEigenschaften.add(aenderung);
		panelEigenschaften.add(aenderungText);
		aenderungText.setEnabled(false);
		bestand.setAlignmentX( Component.CENTER_ALIGNMENT);

		pic.setVisible(false);

		bestand.setActionCommand("bestand");
		bestand.addActionListener(bl);
		bestand.setAlignmentX( Component.CENTER_ALIGNMENT);
		befund.setSize(new Dimension(150,150));
		arzt.setAlignmentX( Component.CENTER_ALIGNMENT);
		if(actUser.getRole() != User.ROLE_VET){
			befund.setEnabled(false);
			box.setEnabled(false);
		}

		setTitle("Tierverwaltung - Neues Tier anlegen");
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension frameSize = getSize();
		setLocation((screenSize.width/2)-(frameSize.width/2),(screenSize.height/2)-(frameSize.height/2));

		setVisible(true);
		actTier=new Tier(
				tc.getNextFreeID(),
				"",				 //Name
				0,				 	 //Tierart
				"",				 //Rasse
				"",				 //Farbe
				0, 				 //Alter
				0,					 //Geschlecht
				"",				 //Foto
				"",				 //sonstiges
				new Date(),				 //heimeintritt
				"",				 //impfung
				actUser,			 // zust�ndiger Mitarbeiter
				//"",				 //�nderung
				"",				 //befund
				actUser,			 //last Canger
				false //Freigabe
		);
		actTier.addObserver(this);
		zeigeTier();

		try {
			jbInit();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	/**
	 * zeigt akutelles Tier an
	 */
	private void zeigeTier()
	{
		if(tc.size() > 0)
		{
			vor.setEnabled(true);
			zurueck.setEnabled(true);
		}
		else
		{
			vor.setEnabled(false);
			zurueck.setEnabled(false);
		}
		String foto = actTier.getFoto();
		File file = new File(foto);
		if(file.exists() ) {
			pic.setImage(file);
			pic.setVisible(true);
			bildDelJB.setEnabled(true);
		}
		else
		{
			pic.setVisible(false);
			bildDelJB.setEnabled(false);
		}
		regNrText.setText(Integer.toString(actTier.getTierID()));
		nameText.setText(actTier.getTierName());
		tierartText.setSelectedIndex(actTier.getTierart());
		rasseText.setText(actTier.getRasse());
		alterText.setText(Integer.toString(actTier.getAlter()));
		farbeText.setText(actTier.getFarbe());
		sonstigesText.setText(actTier.getSonstiges());
		heimeintrittText.setText(actTier.getHeimeintritt());
		impfungText.setText(actTier.getImpfung());
		befund.setText(actTier.getBefund());
		tierGeschlecht.setSelectedIndex(actTier.getGeschlecht());
		box.setSelected(actTier.getFreigabe());
		aenderungText.setText(actTier.getAenderung());
		int i = 0;
		for (i = 0; i < UserNames.length; i++) {
			if (UserNames[i].equals(actTier.getMitarbeiter().getUserName()))
				break;
		}
		idMitarbeiterText.setSelectedIndex(i);
	}

	/**
	 * Speichert das aktuelle Tier im Container
	 * @param func Funktion: 0 f�gt Tier hinzu, 1 �ndert Tier an Position pos im Container
	 */
	public void speichern(int func)
	{
		actTier.setTierName(nameText.getText());
		actTier.setTierArt(tierartText.getSelectedIndex());
		actTier.setRasse(rasseText.getText());
		actTier.setFarbe(farbeText.getText());
		actTier.setAlter(Integer.parseInt(alterText.getText()));
		actTier.setGeschlecht(tierGeschlecht.getSelectedIndex());
		actTier.setSonstiges(sonstigesText.getText());
		actTier.setHeimeintritt(heimeintrittText.getText());
		actTier.setAenderung(aenderungText.getText());
		int j=0;
		boolean found=false;
		String maName = (String) idMitarbeiterText.getSelectedItem();
		User u2=(User) users.elementAt(j);
		while ( !found && j < users.size() )
		{
			if (maName.equals(u2.getUserName()))
			{
				found=true;
			}
			else
			{
				j++;
				u2=(User) users.elementAt(j);
			}
		}
		if(!found) u2 = actUser;
		actTier.setMitarbeiter(u2);
		actTier.setImpfung(impfungText.getText());
		actTier.setBefund(befund.getText());
		actTier.setChanger(actUser);
		actTier.setFreigabe(box.isSelected());
		switch (func)
		{
		case 0: tc.addTier(actTier); break;
		case 1: tc.setElementAt(actTier,pos);
		}
			
		thv.setDataChanged(true);
	}
	/**
	 * generiert ein neues Tierobjekt
	 */
	public void newTier()
	{
		actTier=new Tier(
				tc.getNextFreeID(),
				"",										 //Name
				0,				 //Tierart
				"",									 //Rasse
				"",									 //Farbe
				0, //Alter
				0,		//Geschlecht
				"",						 //Foto
				"",							 //sonstiges
				new Date(),						 //heimeintritt
				"",								 //impfung
				actUser,															 // zust�ndiger Mitarbeiter
				//"",							 //�nderung
				"",											 //befund
				actUser,																 //last Canger
				false //Freigabe
		);
		actTier.addObserver(this);
	}
	/* (non-Javadoc)
	 * @see AbstractMyJDlg#buttonActionPerformed(java.awt.event.ActionEvent)
	 */
	public void buttonActionPerformed( ActionEvent e )
	{
		String c = e.getActionCommand();
		if(c.equals("speichern"))
		{
			speichern(0);
			statusLabel.setText("Tier hinzugef�gt");
			newTier();
			zeigeTier();
		}
		else if (c.equals("speichern2"))
		{
			statusLabel.setText("�nderungen �bernommen");
			speichern(1);
			zeigeTier();
		}
		else if (c.equals("abbrechen"))
		{
			dispose();
		}
		else if (c.equals("bestand"))
		{
			new AlleTiereDlg();
		}
		else if (c.equals("vor"))
		{
			if (pos < tc.size()-1)
				pos++;
			else
				pos = 0;
			actTier = (Tier) tc.elementAt(pos);
			statusLabel.setText("");
			speichernJB.setText("�nderungen speichern");
			speichernJB.setActionCommand("speichern2");
			setTitle("Tierverwaltung - Tier bearbeiten");
			zeigeTier();
		}
		else if (c.equals("zurueck"))
		{
			if (pos > 0)
				pos--;
			else
				pos =  tc.size()-1;
			actTier = (Tier) tc.elementAt(pos);
			statusLabel.setText("");
			speichernJB.setText("�nderungen speichern");
			speichernJB.setActionCommand("speichern2");
			setTitle("Tierverwaltung - Tier bearbeiten");
			zeigeTier();
		}
		else if (c.equals("bild"))
		{
			JOptionPane pane = new JOptionPane();
			JDialog dod = pane.createDialog(this,"Datei �ffnen...");
			chooser.setFileFilter(filter);
			int returnVal = chooser.showOpenDialog(dod);
			if(returnVal == JFileChooser.APPROVE_OPTION)
			{
				bildpfad = chooser.getSelectedFile().getPath();
				actTier.setFoto(bildpfad);
			}
			dod.dispose();
			zeigeTier();
		}
		else if (c.equals("bilddel"))
		{
			actTier.setFoto("");
			zeigeTier();
		}
		else if (c.equals("neu"))
		{
			newTier();
			speichernJB.setText("Tier hinzuf�gen");
			speichernJB.setActionCommand("speichern");
			zeigeTier();
			setTitle("Tierverwaltung - Neues Tier anlegen");
		}
	}

	/* (non-Javadoc)
	 * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
	 */
	public void update(Observable o, Object arg)
	{
		zeigeTier();
	}

	/**
	 * @throws Exception
	 */
	private void jbInit() throws Exception {
	}
}//end class TierVerDialog