| 1 23 package info.monitorenter.gui.chart.labelformatters; 24 25 import info.monitorenter.gui.chart.ILabelFormatter; 26 import info.monitorenter.util.Range; 27 import info.monitorenter.util.SimpleDateFormatAnalyzer; 28 29 import java.text.SimpleDateFormat ; 30 import java.util.Calendar ; 31 import java.util.Date ; 32 33 34 74 public class LabelFormatterDate extends ALabelFormatter implements ILabelFormatter { 75 76 private int m_cachedMaxAmountChars = Integer.MAX_VALUE; 77 78 79 private SimpleDateFormat m_df; 80 81 82 private double m_lastFormatted = 0; 83 84 91 public LabelFormatterDate(final SimpleDateFormat dateFormat) { 92 super(); 93 this.m_df = dateFormat; 94 } 95 96 99 public String format(final double value) { 100 this.m_lastFormatted = value; 101 return this.m_df.format(new Date ((long) value)); 102 } 103 104 107 public int getMaxAmountChars() { 108 Range range = this.getAxis().getRange(); 109 double dRange = range.getExtent(); 110 if (this.m_cachedMaxAmountChars == Integer.MAX_VALUE) { 111 this.m_cachedMaxAmountChars = this.m_df.format(new Date ((long) dRange)).length(); 112 } 113 return this.m_cachedMaxAmountChars; 114 } 115 116 119 public double getMinimumValueShiftForChange() { 120 double ret = 0; 121 if (SimpleDateFormatAnalyzer.displaysMillisecond(this.m_df)) { 122 ret = 1; 123 } else if (SimpleDateFormatAnalyzer.displaysSecond(this.m_df)) { 124 ret = 1000; 125 } else if (SimpleDateFormatAnalyzer.displaysMinute(this.m_df)) { 126 ret = 60000; 127 } else if (SimpleDateFormatAnalyzer.displaysHour(this.m_df)) { 128 ret = 360000; 129 } else if (SimpleDateFormatAnalyzer.displaysDay(this.m_df)) { 130 ret = 24 * 360000; 131 } else if (SimpleDateFormatAnalyzer.displaysMonth(this.m_df)) { 132 ret = 31 * 24 * 360000; 133 } else { 134 ret = 12 * 31 * 24 * 60000; 135 } 136 return ret; 137 } 138 139 142 public double getNextEvenValue(final double value, final boolean ceiling) { 143 Date d = new Date ((long) value); 144 Calendar calendar = Calendar.getInstance(); 145 calendar.setTime(d); 146 if (ceiling) { 147 if (!SimpleDateFormatAnalyzer.displaysMillisecond(this.m_df)) { 148 calendar.set(Calendar.MILLISECOND, 0); 149 if (!SimpleDateFormatAnalyzer.displaysSecond(this.m_df)) { 150 calendar.set(Calendar.SECOND, 0); 151 if (!SimpleDateFormatAnalyzer.displaysMinute(this.m_df)) { 152 calendar.set(Calendar.MINUTE, 0); 153 if (!SimpleDateFormatAnalyzer.displaysHour(this.m_df)) { 154 calendar.set(Calendar.HOUR, 0); 155 if (!SimpleDateFormatAnalyzer.displaysDay(this.m_df)) { 156 calendar.set(Calendar.DAY_OF_YEAR, 0); 157 if (!SimpleDateFormatAnalyzer.displaysMonth(this.m_df)) { 158 calendar.set(Calendar.MONTH, 0); 159 if (!SimpleDateFormatAnalyzer.displaysYear(this.m_df)) { 160 calendar.set(Calendar.YEAR, 0); 161 } 162 } 163 } 164 } 165 } 166 } 167 } 168 } else { 169 if (!SimpleDateFormatAnalyzer.displaysMillisecond(this.m_df)) { 170 calendar.set(Calendar.MILLISECOND, 1000); 171 if (!SimpleDateFormatAnalyzer.displaysSecond(this.m_df)) { 172 calendar.set(Calendar.SECOND, 60); 173 if (!SimpleDateFormatAnalyzer.displaysMinute(this.m_df)) { 174 calendar.set(Calendar.MINUTE, 60); 175 if (!SimpleDateFormatAnalyzer.displaysHour(this.m_df)) { 176 calendar.set(Calendar.HOUR, 24); 177 if (!SimpleDateFormatAnalyzer.displaysDay(this.m_df)) { 178 calendar.set(Calendar.DAY_OF_YEAR, 365); 179 if (!SimpleDateFormatAnalyzer.displaysMonth(this.m_df)) { 180 calendar.set(Calendar.MONTH, 12); 181 if (!SimpleDateFormatAnalyzer.displaysYear(this.m_df)) { 182 calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) + 1); 183 } 184 } 185 } 186 } 187 } 188 } 189 } 190 } 191 return calendar.getTimeInMillis(); 192 } 193 194 197 public Number parse(final String formatted) throws NumberFormatException { 198 return new Double (this.m_lastFormatted); 199 } 200 } 201 | Popular Tags |