package BarDB.GUI;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import BarDB.Rezepte.*;
import BarDB.Rezepte.Zutaten.*;
/**
*
* @author lq
*/
public class MainFrame extends JFrame implements ActionListener{
private JToolBar toolBar = new JToolBar();
private JButton exit_Button = new JButton("Exit");
private JButton neueZutat_Button = new JButton("Zutat hinzufügen");
private JButton neuesRezept_Button = new JButton("Rezept hinzufügen");
private JButton dbInfo_Button = new JButton("DB Info");
private JButton refreshDB_Button = new JButton("generiere Datenbank neu");
private JButton findRezept_Button = new JButton("finde Rezept");
private Component centerComponent = null;
private SelectSortMethod_Panel selectSortMethod_Panel = new SelectSortMethod_Panel();
/** Creates a new instance of MainFrame */
public MainFrame() {
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
System.exit(0);
}
});
Toolkit tk = Toolkit.getDefaultToolkit();
this.setSize(800, 600);
this.setLocation((int) ((tk.getScreenSize().width-this.getSize().width)/2.0), (int) ((tk.getScreenSize().height-this.getSize().height)/2.0));
neueZutat_Button.addActionListener(this);
dbInfo_Button.addActionListener(this);
exit_Button.addActionListener(this);
refreshDB_Button.addActionListener(this);
this.neuesRezept_Button.addActionListener(this);
findRezept_Button.addActionListener(this);
toolBar.add(neuesRezept_Button);
toolBar.add(neueZutat_Button);
toolBar.add(findRezept_Button);
toolBar.add(dbInfo_Button);
toolBar.add(refreshDB_Button);
toolBar.add(exit_Button);
this.getContentPane().add(this.selectSortMethod_Panel, "North");
this.getContentPane().add(toolBar, "South");
}
public void actionPerformed(ActionEvent evt) {
if(evt.getSource().equals(exit_Button)) { System.exit(0); }
else if(evt.getSource().equals(neueZutat_Button)) {
Neue_Zutat nz = new Neue_Zutat();
nz.show();
}
else if(evt.getSource().equals(dbInfo_Button)) {
new DB_InfoFrame().show();
}
else if(evt.getSource().equals(refreshDB_Button)) {
ZutatenManager.refreshAll();
RezeptManager.refreshAll();
}
else if(evt.getSource().equals(this.neuesRezept_Button)) {
new Neues_Rezept().show();
}
/*UM DIESEN CODEABSCHNITT GEHT ES*/
else if(evt.getSource().equals(findRezept_Button)) {
FindRezept_Dialog fr_d = new FindRezept_Dialog(this, true);
Rezept [] r = fr_d.showDialog();
if(r == null) return;
Rezept_TableModel rtm = new Rezept_TableModel(r);
JTable table = rtm.getTable();
selectSortMethod_Panel.setTableModel(rtm);
this.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
rtm.update();
}
/*ENDE */
else System.out.println("unbekanntes Ereignis");
}
public void setCenterComponent(Component c) {
if(centerComponent != null)
this.getContentPane().remove(centerComponent);
centerComponent = c;
this.getContentPane().add(centerComponent, BorderLayout.CENTER);
}
public static void main(String [] args) {
MainFrame mf = new MainFrame();
mf.show();
}
}
/*
* Rezept_Table.java
*
* Created on 13. September 2004, 15:52
*/
package BarDB.GUI;
import BarDB.Rezepte.*;
import javax.swing.table.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import java.text.*;
import javax.swing.event.*;
/**
*
* @author lq
*/
public class Rezept_TableModel implements TableModel {
private Rezept[] rezepte; //ist die Grundlage für liste
private Object[][] liste; //enthält alle Objecte die in der Tabelle angezeigt werden sollen
private Vector listeners = new Vector(); //tableModelListener
final int columnCount = 6;
private JTable table = null;
public Rezept_TableModel(Rezept [] _rezepte) {
rezepte = _rezepte;
refreshListe();
}
/*generiert "liste" neu. In "liste" stehen alle Objekte die in der Tabelle angezeigt werden sollen*/
public void refreshListe() {
liste = new Object[rezepte.length][columnCount];
JLabel label;
String s;
DecimalFormat df = new DecimalFormat("0.##");
for(int i=0; i<rezepte.length; i++) {
label = new JLabel(rezepte[i].getName());
label.setToolTipText(label.getText());
liste[i][0] = label;
String [] s2 = new String[rezepte[i].getZutat().length];
for(int j=0; j<s2.length; j++)
s2[j] = rezepte[i].getMenge()[j]+rezepte[i].getMengeneinheit()[j]+" "+rezepte[i].getZutat()[j];
Arrays.sort(s2);
s = "";
for(int j=s2.length; j>0; j--)
s+=s2[j-1]+", ";
label = new JLabel(s); label.setToolTipText(label.getText());
liste[i][1] = label;
label = new JLabel(df.format(rezepte[i].getBewertung())); label.setToolTipText(label.getText());
liste[i][2] = label;
label = new JLabel(df.format(rezepte[i].getLiter() * 100.0)+" cl"); label.setToolTipText(label.getText());
label.setPreferredSize(new Dimension(50,20));
liste[i][3] = label;
label = new JLabel(rezepte[i].getBargeraete());
label.setToolTipText(label.getText());
liste[i][4] = label;
label = new JLabel(rezepte[i].getZubereitung());
label.setToolTipText(label.getText());
liste[i][5] = label;
}
update();
}
/*sollte eigentlich dafür sorgen, das die Tabelle neu gezeichnet wird*/
public void update() {
/* TableModelEvent e = new TableModelEvent( this, index, index,
TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT ); */
TableModelEvent e = new TableModelEvent(this,0,this.getColumnCount(),TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT);
for(int i=0; i<listeners.size(); i++)
((TableModelListener)listeners.get( i )).tableChanged( e );
System.out.println("Update finished "+listeners.size());
}
public void addTableModelListener(javax.swing.event.TableModelListener l) {
listeners.add(l);
}
public Class getColumnClass(int columnIndex) {
switch (columnIndex) {
case 0: return JLabel.class;
case 1: return JLabel.class;
case 2: return JLabel.class;
case 3: return JLabel.class;
case 4: return JLabel.class;
case 5: return JLabel.class;
default: break;
}
return Object.class;
}
public int getColumnCount() {
return this.columnCount;
}
public String getColumnName(int columnIndex) {
switch(columnIndex) {
case 0: return "Name";
case 1: return "Zutaten";
case 2: return "Note";
case 3: return "Menge";
case 4: return "Bargeräte";
case 5: return "Zubereitung";
default: return "NULLLLL";
}
}
public int getRowCount() {
return rezepte.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
if((rowIndex < liste.length) && (columnIndex < liste[0].length)) {
return liste[rowIndex][columnIndex];
}else return Object.class;
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public void removeTableModelListener(javax.swing.event.TableModelListener l) {
listeners.remove(l);
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
}
public Rezept [] getRezepte() {
return rezepte;
}
public void setRezepte(Rezept[] _rezept) {
rezepte = _rezept;
refreshListe();
}
public void addMouseListener(final JTable table) {
table.getTableHeader().addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent event) {
}
});
}
public JTable getTable() {
if(table != null) return table;
table = new JTable(this);
table.setAutoResizeMode(table.AUTO_RESIZE_ALL_COLUMNS);
table.setIntercellSpacing(new Dimension(4,2));
table.getTableHeader().setEnabled(true);
table.getTableHeader().setResizingAllowed(true);
addMouseListener(table);
addTableModelListener(table);
table.setDefaultRenderer(JLabel.class, new JLabelTableCellRenderer());
return table;
}
}
class JLabelTableCellRenderer implements TableCellRenderer {
public java.awt.Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
try { JLabel label = (JLabel) value;
label.setBackground(Color.WHITE);
label.setForeground(Color.BLACK);
return label;
}catch(Exception e) {
}
return new JLabel(value.toString());
}
}