public Object stringToValue(String string) throws ParseException {
        Date date = null;
        int start = 0;
        int end = string.length();
        try {
            int sep;
            int month, day, year;
            sep = string.indexOf('/');
            if (sep <= 0) {
                setEditValid(false);
                throw new ParseException("Month missing", 0);
            }

            month = Integer.valueOf(string.substring(0, sep)).intValue();
            start = sep+1;
            sep = string.indexOf('/', start);
            if (sep < 0) {
                if (start == end) {
                    setEditValid(false);
                    throw new ParseException("Day missing", start);
                }
                day = Integer.valueOf(string.substring(start)).intValue();
                cal.setTime(new Date());
                year = cal.get(Calendar.YEAR);
            } else {
                if (sep == start) {
                    setEditValid(false);
                    throw new ParseException("Day missing", start);
                }
                day = Integer.valueOf(string.substring(start, sep)).intValue();
                start = sep+1;
                sep = string.indexOf('/', start);
                if (sep >=0) {
                    setEditValid(false);
                    throw new ParseException("Too may separators", start);
                }
                year = Integer.valueOf(string.substring(start)).intValue();
            }

            cal.set(Calendar.YEAR, year);
            cal.set(Calendar.MONTH, month-1);
            cal.set(Calendar.DAY_OF_MONTH, day);
            cal.set(Calendar.HOUR_OF_DAY, 12);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.MILLISECOND, 0);
            date = cal.getTime();
            setEditValid(true);
        } catch (NumberFormatException exc) {
            setEditValid(false);
            throw new ParseException("Unable to parse date", start);
        } catch (ArrayIndexOutOfBoundsException exc) {
            setEditValid(false);
            throw new ParseException("Invalid date value", start);
        } catch (IllegalArgumentException exc) {
            setEditValid(false);
            throw new ParseException("Invalid date value", start);
        }

        return date;
    }