/*
* DatenModell.java
*
* Created on 09.01.2008, 17:28:09
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package util;
import gui.SwingFenster;
import java.util.Vector;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
/**
*
* @author b0SSti
*/
public class DatenModell extends AbstractTableModel {
String[] feldname = {"Anzahl der Mandate Gesamt", "Parteiname", "Anzahl der Stimmen", "Mandate * Stimmen", "Stimmenanzahl Gesamt", "Divisionsergebnis", "gewonnene Mandante"};
private Partei[] parteiFeld;
public Vector<Partei> daten = null;
private Vector listeners = new Vector();
public DatenModell() {
getData();
//addTableModelListener(this);
}
public Vector<Partei> getData() {
if (daten == null) {
daten = new Vector<Partei>();
Partei p = new Partei();
daten.add(p);
daten.add(p);
}
return daten;
}
public int getColumnCount() {
return feldname.length;
}
public int getRowCount() {
return getData().size();
}
public String getColumnName(int col) {
return feldname[col];
}
public boolean isCellEditable(int row, int col) {
if(col <= 2) return true;
else return false;
}
public Class getColumnClass(int columnIndex) {
switch( columnIndex ){
case 0: return Integer.class;
case 1: return String.class;
case 2: return Integer.class;
case 3: return Double.class;
case 4: return Integer.class;
case 5: return Integer.class;
case 6: return Integer.class;
default: return null;
}
}
public Object getValueAt(int row, int col) {
Partei p = daten.elementAt(row);
switch (col) {
case 0:
return p.getAnzMandante();
case 1:
return p.getParteiName();
case 2:
return p.getAnzStimmen();
case 3:
return new Double (p.getAnzMandante() * p.getAnzStimmen());
case 4:
return p.getAnzStimmenGesamt();
case 5:
return p.getDivisionsergebnis();
case 6:
return p.getGewMandate();
default:
return null;
}
}
// Wird aufgerufen, falls der Wert einer Zelle verändert wurde
public void setValueAt(Object value, int row, int col) {
Partei p = daten.get(row);
switch (col) {
case 0:
p.setAnzMandante((Integer) value);
break;
case 1:
p.setParteiName((String) value);
break;
case 2:
p.setAnzStimmen((Integer) value);
break;
case 4:
p.setAnzStimmenGesamt((Integer) value);
break;
}
/*
int a = daten.get(row).getAnzMandante();
int b = daten.get(row).getAnzStimmen();
//wenn werte bei Mandate && Stimmen enthalten
if (( a > 0) && ( b > 0)) {
int ergebnis = p.berechneMandateStimmen(a, b);
p.setStimmMandate(ergebnis);
}
*/
//addPartei()
fireTableCellUpdated(row, col);
//addRow(row, col);
//tableChanged();
}
public void tableChanged() {
//System.out.println(e.getSource());
//System.out.println("bla");
//if (getColumn() < 3) {
for (int row = 0; row < daten.size(); row++) {
Partei p = daten.get(row);
setValueAt(p.getAnzMandante() * p.getAnzStimmen(), row, 3);
//p.setStimmMandate(row);
}
SwingFenster fenster = new SwingFenster();
fenster.table.repaint();
//berechneErgebnis();
//}
}
public void addRow() {
Partei pa = new Partei();
int index = daten.size();
daten.add(pa);
fireTableRowsInserted(index, index);
fireTableRowsInserted(daten.size()-1, daten.size()-1);
fireTableCellUpdated(index, index);
System.out.println("bal");
super.fireTableDataChanged();
}
public void berechneErgebnis() {
}
}