| DMCellEditor |
import data.*;
import sale.*;
import util.swing.*;
import java.awt.*;
import java.text.*;
import javax.swing.*;
/**
* Editor für die Geldbeträge in den Tabellen.
*/
public class DMCellEditor extends DefaultCellEditor
{
//// attributes ////////////////////////////////////////////////////////////
private String[] result;
//// constructor ///////////////////////////////////////////////////////////
/**
* Erstellt ein neues Objekt der Klasse <CODE>DMCellEditor</CODE>.
*/
public DMCellEditor (String[] result, String init)
{
super(new JTextInput(result, init));
this.result = result;
}
//// public methods ////////////////////////////////////////////////////////
/**
* Gibt die zum Editieren verwendete Komponente korrekt initialisiert
* zurück.
*/
public Component getTableCellEditorComponent(JTable jTable,
Object value, boolean isSelected, int row, int column)
{
// die Komponente holen,
Component component =
super.getTableCellEditorComponent(jTable, value, isSelected, row, column);
// ...initialisieren
((JTextInput)component).setText(((Currency)
Shop.getTheShop().getCatalog("DM")).toString((NumberValue)value));
// ...und zurueckgeben
return component;
}
/**
* Versucht, den eingegebenen Text als Geldbetrag zu interpretieren.
*/
public Object getCellEditorValue()
{
// versuchen, den Text zu parsen und zurueckzugeben
try {
return ((Currency)Shop.getTheShop().getCatalog("DM")).parse(result[0]);
}
catch (ParseException pexc) {
// Text konnte nicht verarbeitet werden, 0 zurueckgeben
return new IntegerValue (0);
}
}
/**
* Versucht, das Editieren zu beenden und gibt eine Bewertung des
* Erfolges zurück.
*/
public boolean stopCellEditing()
{
// versuchen den Text zu parsen
try {
((Currency)Shop.getTheShop().getCatalog("DM")).parse(result [0]);
}
catch (ParseException pexc) {
// Text konnte nicht verarbeitet werden, editieren kann nicht
// beendet werden
return false;
}
// Editieren kann nach Maszgabe der Methode der Oberklasse beendet werden
return super.stopCellEditing();
}
}
| DMCellEditor |