01: /*
02: *
03: * JMoney - A Personal Finance Manager
04: * Copyright (c) 2004 Nigel Westbury <westbury@users.sourceforge.net>
05: *
06: *
07: * This program is free software; you can redistribute it and/or modify
08: * it under the terms of the GNU General Public License as published by
09: * the Free Software Foundation; either version 2 of the License, or
10: * (at your option) any later version.
11: *
12: * This program is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15: * GNU General Public License for more details.
16: *
17: * You should have received a copy of the GNU General Public License
18: * along with this program; if not, write to the Free Software
19: * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20: *
21: */
22:
23: package net.sf.jmoney.fields;
24:
25: import net.sf.jmoney.model2.Currency;
26: import net.sf.jmoney.model2.ExtendableObject;
27: import net.sf.jmoney.model2.IPropertyControl;
28: import net.sf.jmoney.model2.IReferenceControlFactory;
29: import net.sf.jmoney.model2.PropertyControlFactory;
30: import net.sf.jmoney.model2.ScalarPropertyAccessor;
31:
32: import org.eclipse.swt.widgets.Composite;
33:
34: /**
35: * A control factory to select a currency.
36: *
37: * @author Nigel Westbury
38: * @author Johann Gyger
39: */
40: public abstract class CurrencyControlFactory<P> extends
41: PropertyControlFactory<Currency> implements
42: IReferenceControlFactory<P, Currency> {
43:
44: public IPropertyControl createPropertyControl(Composite parent,
45: ScalarPropertyAccessor<Currency> propertyAccessor) {
46: return new CurrencyEditor(parent, propertyAccessor);
47: }
48:
49: @Override
50: public String formatValueForMessage(
51: ExtendableObject extendableObject,
52: ScalarPropertyAccessor<? extends Currency> propertyAccessor) {
53: Currency value = extendableObject
54: .getPropertyValue(propertyAccessor);
55: return value == null ? "none" : "'" + value.getName() + "'";
56: }
57:
58: @Override
59: public String formatValueForTable(
60: ExtendableObject extendableObject,
61: ScalarPropertyAccessor<? extends Currency> propertyAccessor) {
62: Currency value = extendableObject
63: .getPropertyValue(propertyAccessor);
64: return value == null ? "" : value.getCode();
65: }
66:
67: public Currency getDefaultValue() {
68: return null;
69: }
70:
71: public boolean isEditable() {
72: return true;
73: }
74: }
|