public String toString(Context context, boolean showNever) { StringBuilder ret = new StringBuilder(); // no days if (mDays == 0) { return showNever ? context.getText(R.string.never).toString() : ""; } // every day if (mDays == 0x7f) { return context.getText(R.string.every_day).toString(); } // count selected days int dayCount = 0, days = mDays; while (days > 0) { if ((days & 1) == 1) dayCount++; days >>= 1; } // short or long form? DateFormatSymbols dfs = new DateFormatSymbols(); String[] dayList = (dayCount > 1) ? dfs.getShortWeekdays() : dfs.getWeekdays(); // selected days for (int i = 0; i < 7; i++) { if ((mDays & (1 << i)) != 0) { ret.append(dayList[DAY_MAP[i]]); dayCount -= 1; if (dayCount > 0) ret.append(context.getText(R.string.day_concat)); } } return ret.toString(); }
@Test public void testItAbbreviatesDayNames() { // simulate Feb month when(calendar.get(Calendar.DAY_OF_WEEK)).thenReturn(1); when(calendar.get(Calendar.MONTH)).thenReturn(1); when(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)).thenReturn(28); underTest.setGrowProgress( 1000); // set grow progress so that it simulates the calendar being open underTest.setLocale(Locale.FRANCE); reset(canvas); // reset because invalidate is called underTest.setUseWeekDayAbbreviation(true); reset(canvas); // reset because invalidate is called underTest.drawMonth(canvas, calendar, 0); DateFormatSymbols dateFormatSymbols = new DateFormatSymbols(Locale.FRANCE); String[] dayNames = dateFormatSymbols.getShortWeekdays(); InOrder inOrder = inOrder(canvas); inOrder.verify(canvas).drawText(eq(dayNames[2]), anyInt(), anyInt(), eq(paint)); inOrder.verify(canvas).drawText(eq(dayNames[3]), anyInt(), anyInt(), eq(paint)); inOrder.verify(canvas).drawText(eq(dayNames[4]), anyInt(), anyInt(), eq(paint)); inOrder.verify(canvas).drawText(eq(dayNames[5]), anyInt(), anyInt(), eq(paint)); inOrder.verify(canvas).drawText(eq(dayNames[6]), anyInt(), anyInt(), eq(paint)); inOrder.verify(canvas).drawText(eq(dayNames[7]), anyInt(), anyInt(), eq(paint)); inOrder.verify(canvas).drawText(eq(dayNames[1]), anyInt(), anyInt(), eq(paint)); }
private List<LocalizedLabel> getNameOfWeekdays(AuraLocale locale) throws QuickFixException { DateFormatSymbols weekdaySymbols = DateFormatSymbols.getInstance(locale.getLanguageLocale()); String[] weekdays = weekdaySymbols.getWeekdays(); String[] shortWeekdays = weekdaySymbols.getShortWeekdays(); ArrayList<LocalizedLabel> weekdayList = new ArrayList<>(7); for (int i = 1; i < weekdays.length; i++) { weekdayList.add( new LocalizedLabel( weekdays[i], shortWeekdays[i].toUpperCase(locale.getLanguageLocale()))); } return weekdayList; }
private static String[] getDisplayNameArray(int field, boolean isLong, Locale locale) { DateFormatSymbols dfs = new DateFormatSymbols(locale); switch (field) { case Calendar.AM_PM: return dfs.getAmPmStrings(); case Calendar.DAY_OF_WEEK: return isLong ? dfs.getWeekdays() : dfs.getShortWeekdays(); case Calendar.ERA: return dfs.getEras(); case Calendar.MONTH: return isLong ? dfs.getMonths() : dfs.getShortMonths(); } return null; }
/* look for the rate in te account file for the time in the login string */ public RateEntry getRate(String login) { int logday = 0, rateday = 0; // System.out.println("getRate: login='******'"); String day, time, rate = null; StringTokenizer st = new StringTokenizer(login); // frits pts/21 flash Fri Mar 18 13:46 - 14:30 (6+00:44) // ^ ^ day = st.nextToken(); time = st.nextToken(); time = st.nextToken(); time = st.nextToken().substring(0, 5); // System.out.println(login+" "+day+" "+time); // Get the international names of the days and which day is (1,2,3... // Then find day of each rate entry, (1,2,3,4 // Now we can compare, independent of the language used for the days // Finally use the time to compare as well DateFormatSymbols dfs = new DateFormatSymbols(); String[] days = dfs.getShortWeekdays(); for (int j = 1; j < days.length; j++) { if (day.compareTo(days[j]) == 0) { logday = j; break; } } // logday -> the day given in the gorecords.xml file (the log) int n = rates.size(); // the last rate applies if before the first entry // Init to last rate given in the account RateEntry tmpRE, saveRE = rates(n - 1); // System.out.println("n="+n); for (int i = 0; i < n; i++) { tmpRE = rates(i); for (int j = 1; j < days.length; j++) { if (tmpRE.day.compareTo(days[j]) == 0) { rateday = j; break; } } // System.out.println("j="+jday+" k="+kday+" "+tmpRE.time+" "+tmpRE.loginhr); // the last rate applies if before the first entry if (logday > rateday) { saveRE = tmpRE; } if ((logday == rateday) && (time.compareTo(tmpRE.time) >= 0)) { saveRE = tmpRE; } } return saveRE; }
private void drawMonthDayLabels(Canvas canvas) { int y = MONTH_HEADER_SIZE - (MONTH_DAY_LABEL_TEXT_SIZE / 2); int dayWidthHalf = (mWidth - mPadding * 2) / (mNumDays * 2); for (int i = 0; i < mNumDays; i++) { int calendarDay = (i + mWeekStart) % mNumDays; int x = (2 * i + 1) * dayWidthHalf + mPadding; mDayLabelCalendar.set(Calendar.DAY_OF_WEEK, calendarDay); canvas.drawText( mDateFormatSymbols.getShortWeekdays()[mDayLabelCalendar.get(Calendar.DAY_OF_WEEK)] .toUpperCase(Locale.getDefault()), x, y, mMonthDayLabelPaint); } }
public static void main(String[] args) throws java.lang.Exception { Locale[] locales = Locale.getAvailableLocales(); // sorting locales sortArray(Collator.getInstance(Locale.ENGLISH), locales); // comment first System.out.println("/*"); int i = 0; for (Locale l : locales) { i++; if (l.getDisplayName().contains("(")) continue; if (blacklisted(i)) continue; System.out.print(" * " + i + " " + l.getDisplayName()); System.out.println(); } System.out.println(" */"); // body i = 0; for (Locale l : locales) { i++; if (blacklisted(i)) continue; if (l.getDisplayName().contains("(")) continue; DateFormatSymbols symbols = new DateFormatSymbols(l); String[] dayNames = symbols.getShortWeekdays(); // precompiler condition System.out.println("#if LANG == " + i); System.out.println("// " + l.getDisplayName()); // day array body System.out.println("static const char* const DAYS[] = {"); for (String s : dayNames) { if (s.length() == 0) continue; String norm = Normalizer.normalize(s, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", ""); System.out.print("\"" + norm.toUpperCase() + "\","); System.out.println(" /* " + s + " */"); } System.out.println("};"); System.out.println("#endif "); System.out.println(); } }
/** * Converts the supplied string to a day of the week. * * @param s a string representing the day of the week. * @return <code>-1</code> if the string is not convertable, the day of the week otherwise. */ public static int stringToWeekdayCode(String s) { final String[] shortWeekdayNames = DATE_FORMAT_SYMBOLS.getShortWeekdays(); final String[] weekDayNames = DATE_FORMAT_SYMBOLS.getWeekdays(); int result = -1; s = s.trim(); for (int i = 0; i < weekDayNames.length; i++) { if (s.equals(shortWeekdayNames[i])) { result = i; break; } if (s.equals(weekDayNames[i])) { result = i; break; } } return result; }
public AlarmItemAdapter( Context context, int[] expandedIds, int[] repeatCheckedIds, int[] selectedAlarms, Bundle previousDaysOfWeekMap, ListView list) { super(context, null, 0); mContext = context; mFactory = LayoutInflater.from(context); mList = list; DateFormatSymbols dfs = new DateFormatSymbols(); mShortWeekDayStrings = dfs.getShortWeekdays(); mLongWeekDayStrings = dfs.getWeekdays(); Resources res = mContext.getResources(); mColorLit = res.getColor(R.color.clock_white); mColorDim = res.getColor(R.color.clock_gray); mBackgroundColorSelected = res.getColor(R.color.alarm_selected_color); mBackgroundColor = res.getColor(R.color.alarm_whiteish); mRobotoBold = Typeface.create("sans-serif-condensed", Typeface.BOLD); mRobotoNormal = Typeface.create("sans-serif-condensed", Typeface.NORMAL); if (expandedIds != null) { buildHashSetFromArray(expandedIds, mExpanded); } if (repeatCheckedIds != null) { buildHashSetFromArray(repeatCheckedIds, mRepeatChecked); } if (previousDaysOfWeekMap != null) { mPreviousDaysOfWeekMap = previousDaysOfWeekMap; } if (selectedAlarms != null) { buildHashSetFromArray(selectedAlarms, mSelectedAlarms); } mHasVibrator = ((Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE)).hasVibrator(); }
/** Updates the week names, when the locale changed. */ private void updateWeekNames() { DateFormatSymbols dateFormatSymbols = new DateFormatSymbols(calendarView.localeProperty().get()); String[] weekDays = dateFormatSymbols.getShortWeekdays(); // Start with 1 instead of 0, since the first element in the array is empty. for (int i = 1; i < weekDays.length; i++) { // Get the first character only. String shortWeekDay = weekDays[i].substring(0, 2); // Shift the index according to the first day of week. int j = i - calendarView.getCalendar().getFirstDayOfWeek(); if (j < 0) { j += weekDays.length - 1; } Label label = (Label) getChildren().get(j + (calendarView.getShowWeeks() ? 1 : 0)); label.setText(shortWeekDay); } title.set(getDateFormat("MMMM yyyy").format(calendarView.getCalendar().getTime())); }
private String toString(Context context, boolean showNever, boolean forAccessibility) { StringBuilder ret = new StringBuilder(); // no days if (mBitSet == NO_DAYS_SET) { return showNever ? context.getText(R.string.never).toString() : ""; } // every day if (mBitSet == ALL_DAYS_SET) { return context.getText(R.string.every_day).toString(); } // count selected days int dayCount = 0; int bitSet = mBitSet; while (bitSet > 0) { if ((bitSet & 1) == 1) dayCount++; bitSet >>= 1; } // short or long form? DateFormatSymbols dfs = new DateFormatSymbols(); String[] dayList = (forAccessibility || dayCount <= 1) ? dfs.getWeekdays() : dfs.getShortWeekdays(); // selected days for (int bitIndex = 0; bitIndex < DAYS_IN_A_WEEK; bitIndex++) { if ((mBitSet & (1 << bitIndex)) != 0) { ret.append(dayList[convertBitIndexToDay(bitIndex)]); dayCount -= 1; if (dayCount > 0) ret.append(context.getText(R.string.day_concat)); } } return ret.toString(); }
/** * Faces render output method . * * <p>Method Generator: org.sakaiproject.tool.assessment.devtoolsRenderMaker * * @param context <code>FacesContext</code> for the current request * @param component <code>UIComponent</code> being rendered * @throws IOException if an input/output error occurs */ public void encodeEnd(FacesContext context, UIComponent component) throws IOException { // get the calendar for the Locale, so this will be localized DateFormatSymbols dfs = new DateFormatSymbols(); String[] days = dfs.getShortWeekdays(); String[] months = dfs.getMonths(); String jan = months[Calendar.JANUARY]; String feb = months[Calendar.FEBRUARY]; String mar = months[Calendar.MARCH]; String apr = months[Calendar.APRIL]; String may = months[Calendar.MAY]; String jun = months[Calendar.JUNE]; String jul = months[Calendar.JULY]; String aug = months[Calendar.AUGUST]; String sep = months[Calendar.SEPTEMBER]; String oct = months[Calendar.OCTOBER]; String nov = months[Calendar.NOVEMBER]; String dec = months[Calendar.DECEMBER]; String mon = days[Calendar.MONDAY]; String tue = days[Calendar.TUESDAY]; String wed = days[Calendar.WEDNESDAY]; String thu = days[Calendar.THURSDAY]; String fri = days[Calendar.FRIDAY]; String sat = days[Calendar.SATURDAY]; String sun = days[Calendar.SUNDAY]; String contextPath = context.getExternalContext().getRequestContextPath(); ResponseWriter writer = context.getResponseWriter(); writer.write("<!--\n"); writer.write("Title: Tigra Calendar\n"); writer.write("URL: http://www.softcomplex.com/products/tigra_calendar/\n"); writer.write("Version: 3.2\n"); writer.write("Date: 10/14/2002 (mm/dd/yyyy)\n"); writer.write( "Feedback: feedback@softcCalendar calendar = new GregorianCalendar(pdt);omplex.com (specify product title in the subject)\n"); writer.write("Note: Permission given to use this script in ANY kind of applications if\n"); writer.write(" header lines are left unchanged.\n"); writer.write("Note: Script consists of two files: calendar?.js and calendar.html\n"); writer.write("About us: Our company provides offshore IT consulting services.\n"); writer.write(" Contact us at [email protected] if you have any programming task you\n"); writer.write(" want to be handled by professionals. Our typical hourly rate is $20.\n"); writer.write("-->\n"); writer.write("<html>\n"); // writer.write("<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"); // writer.write( // "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN>"); // writer.write("<html>\n"); writer.write("<head>\n"); writer.write("<title>Select Date, Please.</title>\n"); writer.write("<style>\n"); writer.write(" td {font-family: Tahoma, Verdana, sans-serif; font-size: 12px;}\n"); writer.write("</style>\n"); writer.write("<script language=\"JavaScript\">\n"); writer.write("//<![CDATA[\n"); writer.write("// months as they appear in the calendar's title\n"); writer.write("// (These are dynamically built by locale DateFormatSymbols!)\n"); writer.write( "var ARR_MONTHS = " + "[\"" + jan + "\", \"" + feb + "\", " + "\"" + mar + "\", \"" + apr + "\", " + "\"" + may + "\", \"" + jun + "\",\n"); writer.write( " \"" + jul + "\", \"" + aug + "\", " + "\"" + sep + "\", \"" + oct + "\", \"" + nov + "\", \"" + dec + "\"];\n"); writer.write("// week day titles as they appear on the calendar\n"); writer.write( "var ARR_WEEKDAYS = " + "[\"" + sun + "\", \"" + mon + "\", \"" + tue + "\", " + "\"" + wed + "\", \"" + thu + "\", \"" + fri + "\", " + "\"Sa\"];\n"); writer.write("// day week starts from (normally 0-Su or 1-Mo)\n"); writer.write("var NUM_WEEKSTART = 1;\n"); writer.write( "// path to the directory where calendar images are stored. trailing slash req.\n"); writer.write("var STR_ICONPATH = '" + contextPath + "/images/calendar/';\n"); writer.write("\n"); writer.write("var re_url = new RegExp('datetime=(\\-?\\d+)');\n"); writer.write("var dt_current = (re_url.exec(String(window.location))\n"); writer.write(" ? new Date(new Number(RegExp.$1)) : new Date());\n"); writer.write("var re_id = new RegExp('id=(\\d+)');\n"); writer.write("var num_id = (re_id.exec(String(window.location))\n"); writer.write(" ? new Number(RegExp.$1) : 0);\n"); writer.write("var obj_caller = (window.opener ? window.opener.calendars[num_id] : null);\n"); writer.write("var root_url = new RegExp('root=(\\S+)');\n"); writer.write( "var root = (root_url.exec(String(window.location)) ? new String(RegExp.$1) : \"\")\n"); writer.write("if (obj_caller && obj_caller.year_scroll) {\n"); writer.write(" // get same date in the previous year\n"); writer.write(" var dt_prev_year = new Date(dt_current);\n"); writer.write(" dt_prev_year.setFullYear(dt_prev_year.getFullYear() - 1);\n"); writer.write(" if (dt_prev_year.getDate() != dt_current.getDate())\n"); writer.write(" dt_prev_year.setDate(0);\n"); writer.write("\n"); writer.write(" // get same date in the next year\n"); writer.write(" var dt_next_year = new Date(dt_current);\n"); writer.write(" dt_next_year.setFullYear(dt_next_year.getFullYear() + 1);\n"); writer.write(" if (dt_next_year.getDate() != dt_current.getDate())\n"); writer.write(" dt_next_year.setDate(0);\n"); writer.write("}\n"); writer.write("\n"); writer.write("// get same date in the previous month\n"); writer.write("var dt_prev_month = new Date(dt_current);\n"); writer.write("dt_prev_month.setMonth(dt_prev_month.getMonth() - 1);\n"); writer.write("if (dt_prev_month.getDate() != dt_current.getDate())\n"); writer.write(" dt_prev_month.setDate(0);\n"); writer.write("\n"); writer.write("// get same date in the next month\n"); writer.write("var dt_next_month = new Date(dt_current);\n"); writer.write("dt_next_month.setMonth(dt_next_month.getMonth() + 1);\n"); writer.write("if (dt_next_month.getDate() != dt_current.getDate())\n"); writer.write(" dt_next_month.setDate(0);\n"); writer.write("\n"); writer.write("// get first day to display in the grid for current month\n"); writer.write("var dt_firstday = new Date(dt_current);\n"); writer.write("dt_firstday.setDate(1);\n"); writer.write("dt_firstday.setDate(1 - (7 + dt_firstday.getDay() - NUM_WEEKSTART) % 7);\n"); writer.write("\n"); writer.write("// function passing selected date to calling window\n"); writer.write("function set_datetime(n_datetime, b_close) {\n"); writer.write(" if (!obj_caller) return;\n"); writer.write("\n"); writer.write(" var dt_datetime = obj_caller.prs_time(\n"); writer.write(" (document.cal ? document.cal.time.value : ''),\n"); writer.write(" new Date(n_datetime)\n"); writer.write(" );\n"); writer.write("\n"); writer.write(" if (!dt_datetime) return;\n"); writer.write(" if (b_close) {\n"); writer.write(" window.close();\n"); writer.write(" obj_caller.target.value = (document.cal\n"); writer.write(" ? obj_caller.gen_tsmp(dt_datetime)\n"); writer.write(" : obj_caller.gen_date(dt_datetime)\n"); writer.write(" );\n"); writer.write(" }\n"); writer.write(" else obj_caller.popup(dt_datetime.valueOf());\n"); writer.write("}\n"); writer.write("\n"); writer.write("function set_datetime_update(n_datetime, with_root) {\n"); writer.write(" if (!obj_caller) return;\n"); writer.write("\n"); writer.write(" var dt_datetime = obj_caller.prs_time(\n"); writer.write(" (document.cal ? document.cal.time.value : ''),\n"); writer.write(" new Date(n_datetime)\n"); writer.write(" );\n"); writer.write("\n"); writer.write(" if (!dt_datetime) return;\n"); writer.write(" obj_caller.popup(dt_datetime.valueOf(), with_root);\n"); writer.write("}\n"); writer.write("//]]> \n"); writer.write("</script>\n"); writer.write("</head>\n"); writer.write( "<body bgcolor=\"#FFFFFF\" marginheight=\"5\" marginwidth=\"5\" topmargin=\"5\" leftmargin=\"5\" rightmargin=\"5\">\n"); // replaced these lines with document.write so dom balanced in XHTML // writer.write("<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" // width=\"100%\">\n"); // writer.write("<tr><td bgcolor=\"#4682B4\">\n"); // writer.write("<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" // width=\"100%\">\n"); // writer.write("<tr><td colspan=\"7\"><table cellspacing=\"0\" cellpadding=\"0\" // border=\"0\" width=\"100%\">\n"); // writer.write("<tr>\n"); writer.write("<script language=\"JavaScript\">\n"); // writer.write("//<![CDATA[\n"); // writer.write("alert('got here');\n"); // writer.write("//<!--"); writer.write( "document.write('<table>');"); // class=\"clsOTable\" cellspacing=\"0\" border=\"0\" // width=\"100%\">');\n"); // writer.write("document.write('<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" // width=\"100%\">');\n"); writer.write("document.write('<tr><td bgcolor=\"#4682B4\">');\n"); writer.write( "document.write('<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">');\n"); writer.write( "document.write('<tr><td colspan=\"7\"><table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">');\n"); writer.write("document.write('<tr>');\n"); // following document.write() in original HTML/JavaScript was // nearly incomprehensible when generated into writer.write lines // broke up into shorter strings, hopefully more readable writer.write("document.write(\n"); writer.write( "'<td>'+" + // using JavaScript ? operator "(obj_caller && obj_caller.year_scroll?" + // first alternative "'<a href=\"javascript:set_datetime_update('" + "+dt_prev_year.valueOf()+', root)\">" + "<img src=\"'+STR_ICONPATH+'prev_year.gif\" " + "width=\"16\" height=\"16\" border=\"0\" alt=\"" + PREV_YEAR + "\"/></a> '" + ":" + // second alternative, a blank "'')+" + "'<a href=\"javascript:set_datetime_update(" + "'+dt_prev_month.valueOf()+', root)\">" + "<img src=\"'+STR_ICONPATH+'prev.gif\" " + "width=\"16\" height=\"16\" border=\"0\" alt=\"" + PREV_MONTH + "\"/></a></td>'+\n"); writer.write( "'<td align=\"center\" width=\"100%\">" + "<font color=\"#ffffff\">'+" + "ARR_MONTHS[dt_current.getMonth()]+' '+" + "dt_current.getFullYear() + '</font></td>'+\n"); writer.write( "'<td><a href=\"javascript:set_datetime_update('" + "+dt_next_month.valueOf()+', root)\">" + "<img src=\"'+STR_ICONPATH+'next.gif\" " + "width=\"16\" height=\"16\" border=\"0\" alt=\"" + NEXT_MONTH + "\"/></a>'+" + // ? operator, again... "(obj_caller && obj_caller.year_scroll?" + // first alternative "' <a href=\"javascript:set_datetime_update(" + "'+dt_next_year.valueOf()+', root)\">" + "<img src=\"'+STR_ICONPATH+'next_year.gif\" " + "width=\"16\" height=\"16\" border=\"0\" alt=\"" + NEXT_YEAR + "\"/></a>'" + ":" + // second alternative, blank "'')" + "+'</td>'\n"); writer.write(");\n"); writer.write("document.write('</tr>');\n"); writer.write("document.write('</table></td></tr>');\n"); writer.write("document.write('<tr>')\n"); // replaced these lines with document.write so dom balanced in XHTML // writer.write("</script>\n"); // writer.write("</tr>\n"); // writer.write("</table></td></tr>\n"); // writer.write("<tr>\n"); // writer.write("<script language=\"JavaScript\">\n"); writer.write("\n"); writer.write("// print weekdays titles\n"); writer.write("for (var n=0; n < 7; n++)\n"); writer.write( " document.write('<td bgcolor=\"#87cefa\" align=\"center\"><font color=\"#ffffff\">'+ARR_WEEKDAYS[(NUM_WEEKSTART+n)%7]+'</font></td>');\n"); writer.write("document.write('</tr>');\n"); writer.write("\n"); writer.write("// print calendar table\n"); writer.write("var dt_current_day = new Date(dt_firstday);\n"); writer.write("while (dt_current_day.getMonth() == dt_current.getMonth() ||\n"); writer.write(" dt_current_day.getMonth() == dt_firstday.getMonth()) {\n"); writer.write(" // print row heder\n"); writer.write(" document.write('<tr>');\n"); writer.write(" for (var n_current_wday=0; n_current_wday < 7; n_current_wday++) {\n"); writer.write(" if (dt_current_day.getDate() == dt_current.getDate() && \n"); writer.write(" dt_current_day.getMonth() == dt_current.getMonth())\n"); writer.write(" // print current date\n"); writer.write(" document.write('<td bgcolor=\"#ffb6c1\" align=\"center\" width=\"14%\">');\n"); writer.write(" else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)\n"); writer.write(" // weekend days\n"); writer.write(" document.write('<td bgcolor=\"#dbeaf5\" align=\"center\" width=\"14%\">');\n"); writer.write(" else\n"); writer.write(" // print working days of current month\n"); writer.write(" document.write('<td bgcolor=\"#ffffff\" align=\"center\" width=\"14%\">');\n"); writer.write("\n"); writer.write( " document.write('<a href=\"javascript:set_datetime('+dt_current_day.valueOf() +', true);\">');\n"); writer.write("\n"); writer.write(" if (dt_current_day.getMonth() == this.dt_current.getMonth())\n"); writer.write(" // print days of current month\n"); writer.write(" document.write('<font color=\"#000000\">');\n"); writer.write(" else\n"); writer.write(" // print days of other months\n"); writer.write(" document.write('<font color=\"#606060\">');\n"); writer.write("\n"); writer.write(" document.write(dt_current_day.getDate()+'</font></font></a></td>');\n"); writer.write(" dt_current_day.setDate(dt_current_day.getDate()+1);\n"); writer.write(" }\n"); writer.write(" // print row footer\n"); writer.write(" document.write('</td></td></tr>');\n"); writer.write("}\n"); writer.write("if (obj_caller && obj_caller.time_comp)\n"); writer.write( " document.write('<form onsubmit=\"javascript:set_datetime('+dt_current.valueOf()+', true)\" name=\"cal\"><tr><td colspan=\"7\" bgcolor=\"#87CEFA\"><font color=\"White\" face=\"tahoma, verdana\" size=\"2\">Time: <input type=\"text\" name=\"time\" value=\"'+obj_caller.gen_time(this.dt_current)+'\" size=\"8\" maxlength=\"8\"/></font></td></tr></form>');\n"); writer.write("document.write('</table></td></tr></table>');\n"); // writer.write("//]]> \n"); writer.write("</script>\n"); // replaced these lines with document.write so DOM balanced in XHTML // writer.write("</tr></td>\n"); // writer.write("</table></tr></td>\n"); // writer.write("</table>\n"); writer.write("</body>\n"); writer.write("</html>\n"); writer.write("\n"); }
/** * This method parses the specified string into a date. * * @param dateStr The date string to parse. * @param pos The input and output parse position * @return The parsed date, or <code>null</code> if the string cannot be parsed. */ public Date parse(String dateStr, ParsePosition pos) { int fmt_index = 0; int fmt_max = pattern.length(); calendar.clear(); boolean saw_timezone = false; int quote_start = -1; boolean is2DigitYear = false; try { for (; fmt_index < fmt_max; ++fmt_index) { char ch = pattern.charAt(fmt_index); if (ch == '\'') { int index = pos.getIndex(); if (fmt_index < fmt_max - 1 && pattern.charAt(fmt_index + 1) == '\'') { if (!expect(dateStr, pos, ch)) return null; ++fmt_index; } else quote_start = quote_start < 0 ? fmt_index : -1; continue; } if (quote_start != -1 || ((ch < 'a' || ch > 'z') && (ch < 'A' || ch > 'Z'))) { if (!expect(dateStr, pos, ch)) return null; continue; } // We've arrived at a potential pattern character in the // pattern. int fmt_count = 1; while (++fmt_index < fmt_max && pattern.charAt(fmt_index) == ch) { ++fmt_count; } // We might need to limit the number of digits to parse in // some cases. We look to the next pattern character to // decide. boolean limit_digits = false; if (fmt_index < fmt_max && standardChars.indexOf(pattern.charAt(fmt_index)) >= 0) limit_digits = true; --fmt_index; // We can handle most fields automatically: most either are // numeric or are looked up in a string vector. In some cases // we need an offset. When numeric, `offset' is added to the // resulting value. When doing a string lookup, offset is the // initial index into the string array. int calendar_field; boolean is_numeric = true; int offset = 0; boolean maybe2DigitYear = false; boolean oneBasedHour = false; boolean oneBasedHourOfDay = false; Integer simpleOffset; String[] set1 = null; String[] set2 = null; switch (ch) { case 'd': calendar_field = Calendar.DATE; break; case 'D': calendar_field = Calendar.DAY_OF_YEAR; break; case 'F': calendar_field = Calendar.DAY_OF_WEEK_IN_MONTH; break; case 'E': is_numeric = false; offset = 1; calendar_field = Calendar.DAY_OF_WEEK; set1 = formatData.getWeekdays(); set2 = formatData.getShortWeekdays(); break; case 'w': calendar_field = Calendar.WEEK_OF_YEAR; break; case 'W': calendar_field = Calendar.WEEK_OF_MONTH; break; case 'M': calendar_field = Calendar.MONTH; if (fmt_count <= 2) offset = -1; else { is_numeric = false; set1 = formatData.getMonths(); set2 = formatData.getShortMonths(); } break; case 'y': calendar_field = Calendar.YEAR; if (fmt_count <= 2) maybe2DigitYear = true; break; case 'K': calendar_field = Calendar.HOUR; break; case 'h': calendar_field = Calendar.HOUR; oneBasedHour = true; break; case 'H': calendar_field = Calendar.HOUR_OF_DAY; break; case 'k': calendar_field = Calendar.HOUR_OF_DAY; oneBasedHourOfDay = true; break; case 'm': calendar_field = Calendar.MINUTE; break; case 's': calendar_field = Calendar.SECOND; break; case 'S': calendar_field = Calendar.MILLISECOND; break; case 'a': is_numeric = false; calendar_field = Calendar.AM_PM; set1 = formatData.getAmPmStrings(); break; case 'z': case 'Z': // We need a special case for the timezone, because it // uses a different data structure than the other cases. is_numeric = false; calendar_field = Calendar.ZONE_OFFSET; String[][] zoneStrings = formatData.getZoneStrings(); int zoneCount = zoneStrings.length; int index = pos.getIndex(); boolean found_zone = false; simpleOffset = computeOffset(dateStr.substring(index)); if (simpleOffset != null) { found_zone = true; saw_timezone = true; calendar.set(Calendar.DST_OFFSET, 0); offset = simpleOffset.intValue(); } else { for (int j = 0; j < zoneCount; j++) { String[] strings = zoneStrings[j]; int k; for (k = 0; k < strings.length; ++k) { if (dateStr.startsWith(strings[k], index)) break; } if (k != strings.length) { found_zone = true; saw_timezone = true; TimeZone tz = TimeZone.getTimeZone(strings[0]); // Check if it's a DST zone or ordinary if (k == 3 || k == 4) calendar.set(Calendar.DST_OFFSET, tz.getDSTSavings()); else calendar.set(Calendar.DST_OFFSET, 0); offset = tz.getRawOffset(); pos.setIndex(index + strings[k].length()); break; } } } if (!found_zone) { pos.setErrorIndex(pos.getIndex()); return null; } break; default: pos.setErrorIndex(pos.getIndex()); return null; } // Compute the value we should assign to the field. int value; int index = -1; if (is_numeric) { numberFormat.setMinimumIntegerDigits(fmt_count); if (limit_digits) numberFormat.setMaximumIntegerDigits(fmt_count); if (maybe2DigitYear) index = pos.getIndex(); Number n = numberFormat.parse(dateStr, pos); if (pos == null || !(n instanceof Long)) return null; value = n.intValue() + offset; } else if (set1 != null) { index = pos.getIndex(); int i; boolean found = false; for (i = offset; i < set1.length; ++i) { if (set1[i] != null) if (dateStr.toUpperCase().startsWith(set1[i].toUpperCase(), index)) { found = true; pos.setIndex(index + set1[i].length()); break; } } if (!found && set2 != null) { for (i = offset; i < set2.length; ++i) { if (set2[i] != null) if (dateStr.toUpperCase().startsWith(set2[i].toUpperCase(), index)) { found = true; pos.setIndex(index + set2[i].length()); break; } } } if (!found) { pos.setErrorIndex(index); return null; } value = i; } else value = offset; if (maybe2DigitYear) { // Parse into default century if the numeric year string has // exactly 2 digits. int digit_count = pos.getIndex() - index; if (digit_count == 2) { is2DigitYear = true; value += defaultCentury; } } // Calendar uses 0-based hours. // I.e. 00:00 AM is midnight, not 12 AM or 24:00 if (oneBasedHour && value == 12) value = 0; if (oneBasedHourOfDay && value == 24) value = 0; // Assign the value and move on. calendar.set(calendar_field, value); } if (is2DigitYear) { // Apply the 80-20 heuristic to dermine the full year based on // defaultCenturyStart. int year = calendar.get(Calendar.YEAR); if (calendar.getTime().compareTo(defaultCenturyStart) < 0) calendar.set(Calendar.YEAR, year + 100); } if (!saw_timezone) { // Use the real rules to determine whether or not this // particular time is in daylight savings. calendar.clear(Calendar.DST_OFFSET); calendar.clear(Calendar.ZONE_OFFSET); } return calendar.getTime(); } catch (IllegalArgumentException x) { pos.setErrorIndex(pos.getIndex()); return null; } }
/** * Returns a list of Rules given a pattern. * * @return a {@code List} of Rule objects * @throws IllegalArgumentException if pattern is invalid */ protected List<Rule> parsePattern() { DateFormatSymbols symbols = new DateFormatSymbols(mLocale); List<Rule> rules = new ArrayList<Rule>(); String[] ERAs = symbols.getEras(); String[] months = symbols.getMonths(); String[] shortMonths = symbols.getShortMonths(); String[] weekdays = symbols.getWeekdays(); String[] shortWeekdays = symbols.getShortWeekdays(); String[] AmPmStrings = symbols.getAmPmStrings(); int length = mPattern.length(); int[] indexRef = new int[1]; for (int i = 0; i < length; i++) { indexRef[0] = i; String token = parseToken(mPattern, indexRef); i = indexRef[0]; int tokenLen = token.length(); if (tokenLen == 0) { break; } Rule rule; char c = token.charAt(0); switch (c) { case 'G': // era designator (text) rule = new TextField(Calendar.ERA, ERAs); break; case 'y': // year (number) if (tokenLen == 2) { rule = TwoDigitYearField.INSTANCE; } else { rule = selectNumberRule(Calendar.YEAR, tokenLen < 4 ? 4 : tokenLen); } break; case 'M': // month in year (text and number) if (tokenLen >= 4) { rule = new TextField(Calendar.MONTH, months); } else if (tokenLen == 3) { rule = new TextField(Calendar.MONTH, shortMonths); } else if (tokenLen == 2) { rule = TwoDigitMonthField.INSTANCE; } else { rule = UnpaddedMonthField.INSTANCE; } break; case 'd': // day in month (number) rule = selectNumberRule(Calendar.DAY_OF_MONTH, tokenLen); break; case 'h': // hour in am/pm (number, 1..12) rule = new TwelveHourField(selectNumberRule(Calendar.HOUR, tokenLen)); break; case 'H': // hour in day (number, 0..23) rule = selectNumberRule(Calendar.HOUR_OF_DAY, tokenLen); break; case 'm': // minute in hour (number) rule = selectNumberRule(Calendar.MINUTE, tokenLen); break; case 's': // second in minute (number) rule = selectNumberRule(Calendar.SECOND, tokenLen); break; case 'S': // millisecond (number) rule = selectNumberRule(Calendar.MILLISECOND, tokenLen); break; case 'E': // day in week (text) rule = new TextField(Calendar.DAY_OF_WEEK, tokenLen < 4 ? shortWeekdays : weekdays); break; case 'D': // day in year (number) rule = selectNumberRule(Calendar.DAY_OF_YEAR, tokenLen); break; case 'F': // day of week in month (number) rule = selectNumberRule(Calendar.DAY_OF_WEEK_IN_MONTH, tokenLen); break; case 'w': // week in year (number) rule = selectNumberRule(Calendar.WEEK_OF_YEAR, tokenLen); break; case 'W': // week in month (number) rule = selectNumberRule(Calendar.WEEK_OF_MONTH, tokenLen); break; case 'a': // am/pm marker (text) rule = new TextField(Calendar.AM_PM, AmPmStrings); break; case 'k': // hour in day (1..24) rule = new TwentyFourHourField(selectNumberRule(Calendar.HOUR_OF_DAY, tokenLen)); break; case 'K': // hour in am/pm (0..11) rule = selectNumberRule(Calendar.HOUR, tokenLen); break; case 'z': // time zone (text) if (tokenLen >= 4) { rule = new TimeZoneNameRule(mTimeZone, mLocale, TimeZone.LONG); } else { rule = new TimeZoneNameRule(mTimeZone, mLocale, TimeZone.SHORT); } break; case 'Z': // time zone (value) if (tokenLen == 1) { rule = TimeZoneNumberRule.INSTANCE_NO_COLON; } else { rule = TimeZoneNumberRule.INSTANCE_COLON; } break; case '\'': // literal text String sub = token.substring(1); if (sub.length() == 1) { rule = new CharacterLiteral(sub.charAt(0)); } else { rule = new StringLiteral(sub); } break; default: throw new IllegalArgumentException("Illegal pattern component: " + token); } rules.add(rule); } return rules; }
public LogDateChooser(String label) { thisDialog = this; border = new EtchedBorder(); setBorder(border); Font f = new Font("Helvetica", Font.PLAIN, 10); title = new JLabel(label); add(title); setLayout(new DateLayout()); dfs = new DateFormatSymbols(); months = dfs.getMonths(); weekdays = dfs.getShortWeekdays(); for (int i = 0; i < 7; i++) { days[i] = new JLabel(weekdays[i + 1]); days[i].setFont(f); add(days[i]); } gc = new GregorianCalendar(); mDown = new JButton("<"); mDown.setMargin(new Insets(0, 0, 0, 0)); mDown.addActionListener(new MDownEar()); mDown.setBorderPainted(false); mDown.setFont(f); mDown.setForeground(Color.BLUE); add(mDown); mUp = new JButton(">"); mUp.setMargin(new Insets(0, 0, 0, 0)); mUp.addActionListener(new MUpEar()); mUp.setBorderPainted(false); mUp.setFont(f); mUp.setForeground(Color.BLUE); add(mUp); month = new JLabel(months[gc.get(Calendar.MONTH)]); month.setHorizontalAlignment(SwingConstants.CENTER); month.setFont(f); add(month); year = new JLabel(new Integer(gc.get(Calendar.YEAR)).toString()); year.setFont(f); add(year); yDown = new JButton("<"); yDown.setMargin(new Insets(0, 0, 0, 0)); yDown.addActionListener(new YDownEar()); yDown.setBorderPainted(false); yDown.setFont(f); yDown.setForeground(Color.BLUE); add(yDown); yUp = new JButton(">"); yUp.setMargin(new Insets(0, 0, 0, 0)); yUp.addActionListener(new YUpEar()); yUp.setBorderPainted(false); yUp.setFont(f); yUp.setForeground(Color.BLUE); add(yUp); // System.out.println(year.getText()); NumberEar numberEar = new NumberEar(); for (int i = 0; i < 31; i++) { number[i] = new JButton(new Integer(i + 1).toString()); number[i].setMargin(new Insets(0, 0, 0, 0)); number[i].addActionListener(numberEar); number[i].setBorderPainted(false); number[i].setContentAreaFilled(false); number[i].setFont(f); number[i].setForeground(Color.BLUE); add(number[i]); } number[0].setForeground(Color.CYAN); }
Double getCharge(String date, double howLong) { int jday = 0; Double nMins; String day, time, rate = null; double remain = howLong; StringTokenizer st = new StringTokenizer(date); day = st.nextToken(); time = st.nextToken(); time = st.nextToken(); time = st.nextToken().substring(0, 5); nMins = AProps.getInstance().toMinutes(time); DateFormatSymbols dfs = new DateFormatSymbols(); String[] days = dfs.getShortWeekdays(); for (int j = 1; j < days.length; j++) { if (day.compareTo(days[j]) == 0) { jday = j; break; } } int n = rates.size(), tableNMin; // One Rate for the entire Login session if (n == 1) { // only one flat rate // Get time in hours Double howLongHr = howLong / 60.0; // Calc cost of logon time Double cost = new Double(rates(0).loginhr).doubleValue() * howLongHr; // Cost of each login Double login = new Double(rates(0).login).doubleValue(); cost = cost + login; return (cost); } // Multiple Rates for this login session // Default to last rate in list so that if last rate is eg., Fri and // the current day is Sun, it will still use Friday. iRE = n - 1; RateEntry tmpRE, saveRE = rates(n - 1); for (int i = 0; i < n; i++) { tmpRE = rates(i); if (tmpRE.dayOfWeek() < jday) { saveRE = tmpRE; iRE = i; } tableNMin = (AProps.getInstance().toMinutes(tmpRE.time())).intValue(); if ((tmpRE.dayOfWeek() == jday) && (nMins.intValue() > tableNMin)) { saveRE = tmpRE; iRE = i; } } tRE = iRE + 1; // iRE set rate, tRE set time until if (tRE >= n) tRE = 0; Double charge; int ndays; double diffMins; if (tRE == 0) { ndays = rates(0).dayOfWeek() + (7 - jday); } else { ndays = rates(tRE).dayOfWeek() - jday; } if (ndays > 7) ndays = ndays - 7; int nmin = AProps.getInstance().toMinutes(rates(tRE).time()).intValue() - nMins.intValue(); diffMins = ndays * 24 * 60 + nmin; if (remain < diffMins) { diffMins = remain; } // Calc charge for the first period of time up to the next rate change Double hours = new Double(diffMins / 60.0); charge = new Double(hours * new Double(rates(iRE).loginhr())); // Add in the per session login rate charge += new Double(rates(iRE).login()); remain -= diffMins; // now we have the charge for the first increment including the login, // calculate changes for remaining periods using their rates while (remain > 0.0) { if ((remain - rates(tRE).nMinutes()) >= 0) { charge += rates(tRE).nMinutes() * new Double(rates(tRE).loginhr()) / 60.0; } else { charge += remain * new Double(rates(tRE).loginhr()) / 60.0; } remain -= rates(tRE).nMinutes(); iRE++; if (iRE >= n) iRE = 0; tRE++; if (tRE >= n) tRE = 0; } return (charge); }
static String describeLocale(String name) { final StringBuilder result = new StringBuilder(); result.append("<html>"); final Locale locale = localeByName(name); result.append("<p>"); append(result, "Display Name", locale.getDisplayName()); append(result, "Localized Display Name", locale.getDisplayName(locale)); if (locale.getLanguage().length() > 0) { String iso3Language = "(not available)"; try { iso3Language = locale.getISO3Language(); } catch (MissingResourceException ignored) { } result.append("<p>"); append(result, "Display Language", locale.getDisplayLanguage()); append(result, "Localized Display Language", locale.getDisplayLanguage(locale)); append(result, "2-Letter Language Code", locale.getLanguage()); append(result, "3-Letter Language Code", iso3Language); } if (locale.getCountry().length() > 0) { String iso3Country = "(not available)"; try { iso3Country = locale.getISO3Country(); } catch (MissingResourceException ignored) { } result.append("<p>"); append(result, "Display Country", locale.getDisplayCountry()); append(result, "Localized Display Country", locale.getDisplayCountry(locale)); append(result, "2-Letter Country Code", locale.getCountry()); append(result, "3-Letter Country Code", iso3Country); } if (locale.getVariant().length() > 0) { result.append("<p>"); append(result, "Display Variant", locale.getDisplayVariant()); append(result, "Localized Display Variant", locale.getDisplayVariant(locale)); append(result, "Variant Code", locale.getVariant()); } result.append("<p><b>Number Formatting</b>"); describeNumberFormat(result, "Decimal", NumberFormat.getInstance(locale), 1234.5, -1234.5); describeNumberFormat(result, "Integer", NumberFormat.getIntegerInstance(locale), 1234, -1234); describeNumberFormat( result, "Currency", NumberFormat.getCurrencyInstance(locale), 1234.5, -1234.5); describeNumberFormat(result, "Percent", NumberFormat.getPercentInstance(locale), 12.3); boolean hasLocaleData = hasLocaleData(); if (!hasLocaleData) { result.append("<p><b>Decimal Format Symbols</b>"); NumberFormat nf = NumberFormat.getInstance(locale); if (nf instanceof DecimalFormat) { describeDecimalFormatSymbols(result, ((DecimalFormat) nf).getDecimalFormatSymbols()); } else { result.append("(Didn't expect " + nf.getClass() + ".)"); } } Date now = new Date(); // FIXME: it might be more useful to always show a time in the afternoon, to // make 24-hour patterns more obvious. result.append("<p><b>Date/Time Formatting</b>"); describeDateFormat( result, "Full Date", DateFormat.getDateInstance(DateFormat.FULL, locale), now); describeDateFormat( result, "Long Date", DateFormat.getDateInstance(DateFormat.LONG, locale), now); describeDateFormat( result, "Medium Date", DateFormat.getDateInstance(DateFormat.MEDIUM, locale), now); describeDateFormat( result, "Short Date", DateFormat.getDateInstance(DateFormat.SHORT, locale), now); result.append("<p>"); describeDateFormat( result, "Full Time", DateFormat.getTimeInstance(DateFormat.FULL, locale), now); describeDateFormat( result, "Long Time", DateFormat.getTimeInstance(DateFormat.LONG, locale), now); describeDateFormat( result, "Medium Time", DateFormat.getTimeInstance(DateFormat.MEDIUM, locale), now); describeDateFormat( result, "Short Time", DateFormat.getTimeInstance(DateFormat.SHORT, locale), now); result.append("<p>"); describeDateFormat( result, "Full Date/Time", DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locale), now); describeDateFormat( result, "Long Date/Time", DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale), now); describeDateFormat( result, "Medium Date/Time", DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, locale), now); describeDateFormat( result, "Short Date/Time", DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale), now); if (!hasLocaleData) { result.append("<p><b>Date Format Symbols</b><p>"); DateFormat edf = DateFormat.getDateInstance(DateFormat.FULL, Locale.US); DateFormatSymbols edfs = ((SimpleDateFormat) edf).getDateFormatSymbols(); DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, locale); DateFormatSymbols dfs = ((SimpleDateFormat) df).getDateFormatSymbols(); append(result, "Local Pattern Chars", dfs.getLocalPatternChars()); append(result, "Am/pm", Arrays.toString(dfs.getAmPmStrings())); append(result, "Eras", Arrays.toString(dfs.getEras())); append(result, "Months", Arrays.toString(dfs.getMonths())); append(result, "Short Months", Arrays.toString(dfs.getShortMonths())); append(result, "Weekdays", Arrays.toString(dfs.getWeekdays())); append(result, "Short Weekdays", Arrays.toString(dfs.getShortWeekdays())); } result.append("<p><b>Calendar</b><p>"); Calendar c = Calendar.getInstance(locale); int firstDayOfWeek = c.getFirstDayOfWeek(); String firstDayOfWeekString = new DateFormatSymbols(locale).getWeekdays()[firstDayOfWeek]; String englishFirstDayOfWeekString = new DateFormatSymbols(Locale.US).getWeekdays()[firstDayOfWeek]; String firstDayOfWeekDetails = firstDayOfWeek + " '" + firstDayOfWeekString + "'"; if (!englishFirstDayOfWeekString.equals(firstDayOfWeekString)) { firstDayOfWeekDetails += " (" + englishFirstDayOfWeekString + ")"; } append(result, "First Day of the Week", firstDayOfWeekDetails); append(result, "Minimal Days in First Week", c.getMinimalDaysInFirstWeek()); // If this locale specifies a country, check out the currency. // Languages don't have currencies; countries do. if (!locale.getCountry().equals("")) { result.append("<p><b>Currency</b><p>"); try { Currency currency = Currency.getInstance(locale); append(result, "ISO 4217 Currency Code", currency.getCurrencyCode()); append( result, "Currency Symbol", unicodeString(currency.getSymbol(locale)) + " (" + currency.getSymbol(Locale.US) + ")"); append(result, "Default Fraction Digits", currency.getDefaultFractionDigits()); } catch (IllegalArgumentException ex) { result.append( "<p>(This version of Android is unable to return a Currency for this Locale.)"); } } result.append("<p><b>Data Availability</b><p>"); appendAvailability(result, locale, "BreakIterator", BreakIterator.class); appendAvailability(result, locale, "Calendar", NumberFormat.class); appendAvailability(result, locale, "Collator", Collator.class); appendAvailability(result, locale, "DateFormat", DateFormat.class); appendAvailability(result, locale, "DateFormatSymbols", DateFormatSymbols.class); appendAvailability(result, locale, "DecimalFormatSymbols", DecimalFormatSymbols.class); appendAvailability(result, locale, "NumberFormat", NumberFormat.class); if (hasLocaleData) { result.append("<p><b>libcore.icu.LocaleData</b>"); try { Object enUsData = getLocaleDataInstance(Locale.US); Object localeData = getLocaleDataInstance(locale); String[] previous; result.append("<p>"); describeStringArray(result, "amPm", enUsData, localeData, null); describeStringArray(result, "eras", enUsData, localeData, null); result.append("<p>"); previous = describeStringArray(result, "longMonthNames", enUsData, localeData, null); describeStringArray(result, "longStandAloneMonthNames", enUsData, localeData, previous); previous = describeStringArray(result, "shortMonthNames", enUsData, localeData, null); describeStringArray(result, "shortStandAloneMonthNames", enUsData, localeData, previous); previous = describeStringArray(result, "tinyMonthNames", enUsData, localeData, null); describeStringArray(result, "tinyStandAloneMonthNames", enUsData, localeData, previous); result.append("<p>"); previous = describeStringArray(result, "longWeekdayNames", enUsData, localeData, null); describeStringArray(result, "longStandAloneWeekdayNames", enUsData, localeData, previous); previous = describeStringArray(result, "shortWeekdayNames", enUsData, localeData, null); describeStringArray(result, "shortStandAloneWeekdayNames", enUsData, localeData, previous); previous = describeStringArray(result, "tinyWeekdayNames", enUsData, localeData, null); describeStringArray(result, "tinyStandAloneWeekdayNames", enUsData, localeData, previous); result.append("<p>"); describeString(result, "yesterday", enUsData, localeData); describeString(result, "today", enUsData, localeData); describeString(result, "tomorrow", enUsData, localeData); result.append("<p>"); describeString(result, "timeFormat12", enUsData, localeData); describeString(result, "timeFormat24", enUsData, localeData); result.append("<p>"); describeChar(result, "zeroDigit", enUsData, localeData); describeChar(result, "decimalSeparator", enUsData, localeData); describeChar(result, "groupingSeparator", enUsData, localeData); describeChar(result, "patternSeparator", enUsData, localeData); describeChar(result, "percent", enUsData, localeData); describeChar(result, "perMill", enUsData, localeData); describeChar(result, "monetarySeparator", enUsData, localeData); describeChar(result, "minusSign", enUsData, localeData); describeString(result, "exponentSeparator", enUsData, localeData); describeString(result, "infinity", enUsData, localeData); describeString(result, "NaN", enUsData, localeData); } catch (Exception ex) { result.append("(" + ex.getClass().getSimpleName() + " thrown: " + ex.getMessage() + ")"); System.err.println(ex); } } return result.toString(); }
protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) { IForm form = getForm(cycle); String name = form.getElementId(this); String format = getFormat(); if (format == null) format = "dd MMM yyyy"; SimpleDateFormat formatter = new SimpleDateFormat(format, getPage().getLocale()); boolean disabled = isDisabled(); if (!cycle.isRewinding()) { Body body = Body.get(cycle); if (body == null) throw new ApplicationRuntimeException( Tapestry.format("must-be-contained-by-body", "DatePicker"), this, null, null); Locale locale = getPage().getLocale(); DateFormatSymbols dfs = new DateFormatSymbols(locale); Calendar cal = Calendar.getInstance(locale); Date value = getValue(); Map symbols = new HashMap(); symbols.put(SYM_NAME, name); symbols.put(SYM_FORMAT, format); symbols.put(SYM_INCL_WEEK, getIncludeWeek() ? Boolean.TRUE : Boolean.FALSE); symbols.put(SYM_MONTHNAMES, makeStringList(dfs.getMonths(), 0, 12)); symbols.put(SYM_SHORT_MONTHNAMES, makeStringList(dfs.getShortMonths(), 0, 12)); symbols.put(SYM_WEEKDAYNAMES, makeStringList(dfs.getWeekdays(), 1, 8)); symbols.put(SYM_SHORT_WEEKDAYNAMES, makeStringList(dfs.getShortWeekdays(), 1, 8)); symbols.put(SYM_FIRSTDAYINWEEK, new Integer(cal.getFirstDayOfWeek() - 1)); symbols.put(SYM_MINDAYSINFIRSTWEEK, new Integer(cal.getMinimalDaysInFirstWeek())); symbols.put(SYM_FORMNAME, form.getName()); symbols.put(SYM_VALUE, value); _script.execute(cycle, body, symbols); writer.beginEmpty("input"); writer.attribute("type", "text"); writer.attribute("name", name); writer.attribute("title", formatter.toLocalizedPattern()); if (value != null) writer.attribute("value", formatter.format(value)); if (disabled) writer.attribute("disabled", "disabled"); renderInformalParameters(writer, cycle); writer.printRaw(" "); if (!disabled) { writer.begin("a"); writer.attribute("href", (String) symbols.get(SYM_BUTTONONCLICKHANDLER)); } IAsset icon = getIcon(); writer.beginEmpty("img"); writer.attribute("src", icon.buildURL(cycle)); writer.attribute("border", 0); if (!disabled) writer.end(); // <a> } if (form.isRewinding()) { if (disabled) return; String textValue = cycle.getRequestContext().getParameter(name); if (Tapestry.isBlank(textValue)) return; try { Date value = formatter.parse(textValue); setValue(value); } catch (ParseException ex) { } } }