summaryrefslogtreecommitdiffstats
path: root/Bachelor/ERGO/TierheimVerw/thv/TierDialog.java
blob: 60f3ca3ae0e4bae4ce9b62852501a4d37c614f58 (plain)
1
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

/**

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

 *

 * <p>Beschreibung: Anzeige Dialog f�r Interessenten</p>

 *

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

 *

 * <p>Organisation: </p>

 *

 * @author Andreas Spirka, Sven Eisenhauer

 * @version 1.0

 */


public class TierDialog extends AbstractMyJDlg implements Observer
{
	Container c;
	int pos = 0;
	TierCon tc;
	TierCon tempCon = new TierCon();
	Tier actTier = new Tier();
	transient ViewComponent pic = new ViewComponent();
	JPanel panelEigenschaften = new JPanel();     // Pane f�r Eigenschaften: RegNr, Name ...
	JPanel panelButton = new JPanel();             // Panel f�r Buttons vor und zur�ck
	//GRID
	JPanel grid = new JPanel();
	JPanel leer = 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");
	Vector<JLabel> tierArtLabels = new Vector<JLabel>();
	Vector<JCheckBox> tierArtCheckBoxes = new Vector<JCheckBox>();
	JTextField regNrText = new JTextField(12);
	JTextField nameText = new JTextField(12);
	JTextField tierartText = new JTextField(12);
	JTextField tierGeschlecht = new JTextField(12);
	JTextField rasseText = new JTextField(12);
	JTextField alterText = new JTextField(12);
	JTextField farbeText = new JTextField(12);
	JTextArea sonstigesText = new JTextArea(2,15);
	JButton zurueck = new JButton("zur�ck");
	JButton vor = new JButton("vor");
	JButton bestand = new JButton("Tierbestand");

	/**
	 * @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 );
	}

	/**
	 * Aktualisiert den verwendeten TierContainer
	 */
	public void updateTc() {
		tc=thv.getTierCon();
		TierCon tempCon2 = new TierCon();
		if(thv.getActUser().getRole() == User.ROLE_GUEST)
		{
			for (int i=0;i<tc.size();i++)
				if( ( (Tier) tc.elementAt(i) ).getFreigabe() )
					tempCon.addTier( (Tier) tc.elementAt(i) );
			tc=tempCon;
		}
		for (int i=0;i<Tier.TIERARTEN.length;i++)
		{
			if(tierArtCheckBoxes.elementAt(i).isSelected())
			{
				for(int n=0;n<tc.size();n++)
				{
					if( ( ((Tier)tc.elementAt(n)).getTierart() ) == i )
					{
						tempCon2.addTier( (Tier) tc.elementAt(n) );
					}
				}
			}
		}
		tc=tempCon2;
		if( (tc.size() > 0) && (pos < tc.size()) )
		{
			actTier = (Tier) tc.elementAt(pos);
		}
		zeigeTier();
	}
	/**
	 * Konstruktor.
	 * @param p Index
	 */
	public TierDialog(int p)
	{
		pos = p;
		ButtonListener2 bl = new ButtonListener2(this);
		setSize(450,350);
		vor.setActionCommand("vor");
		vor.addActionListener(bl);
		vor.addActionListener(bl);
		vor.setMnemonic(KeyEvent.VK_V);
		zurueck.setActionCommand("zurueck");
		zurueck.addActionListener(bl);
		zurueck.setMnemonic(KeyEvent.VK_Z);
		bestand.addActionListener(bl);
		bestand.setActionCommand("bestand");
		c = getContentPane();
		GridBagLayout gbl = new GridBagLayout();
		c.setLayout(gbl);
		//GRID
		grid.setLayout(gbl);

		//***PANELS***
		panelEigenschaften.setBorder(BorderFactory.createEtchedBorder());
		panelEigenschaften.setLayout(  new GridLayout(0, 2,1,1 ) );
		panelButton.setBorder(BorderFactory.createEtchedBorder());
		panelButton.setLayout( new FlowLayout());

		//***GridBag***//
		grid.add(panelEigenschaften);

		// w=Spalten h=Zeilen x=POsitionSpalte y=PositionZeile
		//                           		       x  y  w  h  wx   wy
		addComponent( c, gbl, panelEigenschaften          , 0, 0, 1, 2, 0, 0 );
		addComponent( c, gbl, pic                         , 1, 0, 1, 2, 1.0, 1.0   );
		addComponent( c, gbl, panelButton                 , 1, 2, 1, 1, 0 ,  0 );
		addComponent( c, gbl, bestand                     , 0, 2, 1, 1, 0  ,  0   );

		//***PanelButton***//
		panelButton.add(zurueck);
		panelButton.add(vor);
		bestand.setAlignmentX( Component.CENTER_ALIGNMENT);

		//***PANEL LINKS***
		panelEigenschaften.add(regNr);
		panelEigenschaften.add(regNrText);
		panelEigenschaften.add(name);
		panelEigenschaften.add(nameText);
		panelEigenschaften.add(tierart);
		panelEigenschaften.add(tierartText);
		panelEigenschaften.add(rasse);
		panelEigenschaften.add(rasseText);
		panelEigenschaften.add(alter);
		panelEigenschaften.add(alterText);
		panelEigenschaften.add(geschlecht);
		panelEigenschaften.add(tierGeschlecht);
		panelEigenschaften.add(farbe);
		panelEigenschaften.add(farbeText);
		panelEigenschaften.add(sonstiges);
		panelEigenschaften.add(sonstigesText);
		// JLabels und JCheckBoxes f�r Tierarten generieren
		for (int i=0;i<Tier.TIERARTEN.length;i++)
		{
			tierArtLabels.add(new JLabel(Tier.TIERARTEN[i]));
			tierArtCheckBoxes.add(new JCheckBox());
			tierArtCheckBoxes.elementAt(i).addActionListener(bl);
			tierArtCheckBoxes.elementAt(i).setActionCommand(Tier.TIERARTEN[i]);
			tierArtCheckBoxes.elementAt(i).setSelected(true);
			panelEigenschaften.add(tierArtLabels.elementAt(i));
			panelEigenschaften.add(tierArtCheckBoxes.elementAt(i));
		}
		panelEigenschaften.setAlignmentX( Component.TOP_ALIGNMENT);

		// sonst Exception falls kein Bild vorhanden
		pic.setVisible(false);

		panelButton.add(zurueck);
		panelButton.add(vor);
		bestand.setAlignmentX( Component.CENTER_ALIGNMENT);
		//*** SET_ENABLE=FALSE***
		regNrText.setEnabled(false);
		nameText.setEnabled(false);
		tierartText.setEnabled(false);
		rasseText.setEnabled(false);
		tierGeschlecht.setEnabled(false);
		alterText.setEnabled(false);
		farbeText.setEnabled(false);
		sonstigesText.setEnabled(false);
		setTitle("Tierverwaltung - Tier anzeigen");
		updateTc();
		setVisible(true);
		actTier.addObserver(this);
		zeigeTier();
	}

	/**
	 * Daten des aktuellen Tieres anzeigen
	 */
	private void zeigeTier()
	{
		if(tc.size() > 0)
		{
			vor.setEnabled(true);
			zurueck.setEnabled(true);
		}
		else
		{
			vor.setEnabled(false);
			zurueck.setEnabled(false);
		}
		regNrText.setText(Integer.toString(actTier.getTierID()));
		nameText.setText(actTier.getTierName());
		tierartText.setText(Tier.TIERARTEN[actTier.getTierart()]);
		rasseText.setText(actTier.getRasse());
		alterText.setText(Integer.toString(actTier.getAlter()));
		tierGeschlecht.setText(Tier.GESCHLECHT[actTier.getGeschlecht()]);
		farbeText.setText(actTier.getFarbe());
		sonstigesText.setText(actTier.getSonstiges());

		File file = new File(actTier.getFoto());
		if(file.exists() )
		{
			pic.setImage(file);
			pic.setVisible(true);
		}
		else
		{
			pic.setVisible(false);
		}

		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension frameSize = getSize();
		setLocation((screenSize.width/2)-(frameSize.width/2),(screenSize.height/2)-(frameSize.height/2));
	}

	/* (non-Javadoc)
	 * @see AbstractMyJDlg#buttonActionPerformed(java.awt.event.ActionEvent)
	 */
	public void buttonActionPerformed( ActionEvent e )
	{
		String c = e.getActionCommand();
		if (c.equals("bestand"))
		{
			new AlleFTiereDlg();
		}
		else if (c.equals("vor"))
		{
			if (pos < tc.size()-1)
				pos++;
			else
				pos = 0;
			actTier=(Tier) tc.elementAt(pos);
			zeigeTier();
		}
		else if (c.equals("zurueck"))
		{
			if (pos > 0)
				pos--;
			else
				pos =  tc.size()-1;
			actTier=(Tier) tc.elementAt(pos);
			zeigeTier();
		}
		for (int i=0;i<Tier.TIERARTEN.length;i++)
		{
			if(c.equals(Tier.TIERARTEN[i]))
			{
				updateTc();
			}
		}
	}
	/* (non-Javadoc)
	 * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
	 */
	public void update(Observable o, Object arg)
	{
		zeigeTier();
	}
}//end class  TierDialog