001 import data.*; 002 import sale.*; 003 import util.swing.*; 004 005 import java.awt.*; 006 import java.text.*; 007 008 import javax.swing.*; 009 010 011 /** 012 * Editor für die Geldbeträge in den Tabellen. 013 */ 014 public class DMCellEditor extends DefaultCellEditor 015 { 016 017 //// attributes //////////////////////////////////////////////////////////// 018 019 private String[] result; 020 021 022 //// constructor /////////////////////////////////////////////////////////// 023 024 /** 025 * Erstellt ein neues Objekt der Klasse <CODE>DMCellEditor</CODE>. 026 */ 027 public DMCellEditor (String[] result, String init) 028 { 029 super(new JTextInput(result, init)); 030 this.result = result; 031 } 032 033 034 //// public methods //////////////////////////////////////////////////////// 035 036 /** 037 * Gibt die zum Editieren verwendete Komponente korrekt initialisiert 038 * zurück. 039 */ 040 public Component getTableCellEditorComponent(JTable jTable, 041 Object value, boolean isSelected, int row, int column) 042 { 043 // die Komponente holen, 044 Component component = 045 super.getTableCellEditorComponent(jTable, value, isSelected, row, column); 046 047 // ...initialisieren 048 ((JTextInput)component).setText(((Currency) 049 Shop.getTheShop().getCatalog("DM")).toString((NumberValue)value)); 050 051 // ...und zurueckgeben 052 return component; 053 } 054 055 /** 056 * Versucht, den eingegebenen Text als Geldbetrag zu interpretieren. 057 */ 058 public Object getCellEditorValue() 059 { 060 // versuchen, den Text zu parsen und zurueckzugeben 061 try { 062 return ((Currency)Shop.getTheShop().getCatalog("DM")).parse(result[0]); 063 } 064 catch (ParseException pexc) { 065 // Text konnte nicht verarbeitet werden, 0 zurueckgeben 066 return new IntegerValue (0); 067 } 068 } 069 070 /** 071 * Versucht, das Editieren zu beenden und gibt eine Bewertung des 072 * Erfolges zurück. 073 */ 074 public boolean stopCellEditing() 075 { 076 // versuchen den Text zu parsen 077 try { 078 ((Currency)Shop.getTheShop().getCatalog("DM")).parse(result [0]); 079 } 080 catch (ParseException pexc) { 081 // Text konnte nicht verarbeitet werden, editieren kann nicht 082 // beendet werden 083 return false; 084 } 085 086 // Editieren kann nach Maszgabe der Methode der Oberklasse beendet werden 087 return super.stopCellEditing(); 088 } 089 }