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; /** *

Überschrift: Tierverwaltungdialog

* *

Beschreibung: Dialog um neue Tiere anzulegen oder bestehende zu ändern

* *

Copyright: Copyright (c) 2005

* *

Organisation:

* * @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 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