001 /* 002 Copyright (C) 2003 Laurent Martelli <laurent@aopsys.com> 003 004 This program is free software; you can redistribute it and/or modify 005 it under the terms of the GNU Lesser General Public License as 006 published by the Free Software Foundation; either version 2 of the 007 License, or (at your option) any later version. 008 009 This program is distributed in the hope that it will be useful, 010 but WITHOUT ANY WARRANTY; without even the implied warranty of 011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 GNU Lesser General Public License for more details. 013 014 You should have received a copy of the GNU Lesser General Public License 015 along with this program; if not, write to the Free Software 016 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ 017 018 package org.objectweb.jac.aspects.gui; 019 020 import java.text.DecimalFormat; 021 import java.text.ParsePosition; 022 import org.apache.log4j.Logger; 023 import org.objectweb.jac.core.rtti.FieldItem; 024 import org.objectweb.jac.core.rtti.MetaItem; 025 import org.objectweb.jac.core.rtti.RttiAC; 026 import org.objectweb.jac.util.Strings; 027 028 public class IntFormat implements Format { 029 static Logger logger = Logger.getLogger("gui"); 030 031 protected DecimalFormat format; 032 protected FieldItem field; 033 034 public IntFormat(FieldItem field) { 035 this.field = field; 036 037 MetaItem type = RttiAC.getFieldType(field); 038 String formatString = null; 039 if (type!=null) 040 formatString = GuiAC.getIntFormat(type); 041 else 042 formatString = GuiAC.getIntFormat(field); 043 044 if (formatString!=null) 045 format = new DecimalFormat(formatString); 046 else 047 logger.error("No format for "+field); 048 } 049 050 public String format(Object value) { 051 return format((Number)value); 052 } 053 054 public String format(Number value) { 055 if (value!=null) 056 return format(value.longValue()); 057 else 058 return ""; 059 } 060 061 public String format(long value) { 062 if (format!=null) 063 return format.format(value); 064 else 065 return ""+value; 066 } 067 068 public Object parse(String str, ParsePosition pos) { 069 return parseNumber(str,pos); 070 } 071 072 public Number parseNumber(String str, ParsePosition pos) { 073 String string = str.trim(); 074 075 if (Strings.isEmpty(string)) 076 return null; 077 078 return format.parse(str,pos); 079 } 080 } 081