/** * Converts a string to a month code. * * <p>This method will return one of the constants JANUARY, FEBRUARY, ..., DECEMBER that * corresponds to the string. If the string is not recognised, this method returns -1. * * @param s the string to parse. * @return <code>-1</code> if the string is not parseable, the month of the year otherwise. */ public static int stringToMonthCode(String s) { final String[] shortMonthNames = DATE_FORMAT_SYMBOLS.getShortMonths(); final String[] monthNames = DATE_FORMAT_SYMBOLS.getMonths(); int result = -1; s = s.trim(); // first try parsing the string as an integer (1-12)... try { result = Integer.parseInt(s); } catch (NumberFormatException e) { // suppress } // now search through the month names... if ((result < 1) || (result > 12)) { for (int i = 0; i < monthNames.length; i++) { if (s.equals(shortMonthNames[i])) { result = i + 1; break; } if (s.equals(monthNames[i])) { result = i + 1; break; } } } return result; }
/** * Returns an array of month names. * * @param shortened a flag indicating that shortened month names should be returned. * @return an array of month names. */ public static String[] getMonths(final boolean shortened) { if (shortened) { return DATE_FORMAT_SYMBOLS.getShortMonths(); } else { return DATE_FORMAT_SYMBOLS.getMonths(); } }
private List<LocalizedLabel> getNameOfMonths(AuraLocale locale) throws QuickFixException { DateFormatSymbols monthSymbols = DateFormatSymbols.getInstance(locale.getLanguageLocale()); String[] months = monthSymbols.getMonths(); String[] shortMonths = monthSymbols.getShortMonths(); ArrayList<LocalizedLabel> monthList = new ArrayList<>(months.length); for (int i = 0; i < months.length; i++) { monthList.add(new LocalizedLabel(months[i], shortMonths[i])); } return monthList; }
/** * Get a month's name for a month between 1 and 12. Any invalid month value (e.g. 0 or -1) will * return a value of "Unspecified". * * @param m the month number * @return the month name. */ public static String getMonthName(int m, Locale locale) { if ((m > 0) && (m < 13)) { if (dfs == null || !langMonth.equals(locale)) { dfs = new DateFormatSymbols(locale); langMonth = locale; } return dfs.getMonths()[m - 1]; } else { return "Unspecified"; } }
/** * This method will render the graph according to the choosen year * * @param year * @param comName * @throws SystemException * @return view * @throws Exception * @throws BusinessException * @throws BusinessException * @throws SystemException */ @RequestMapping(value = "yearly", method = RequestMethod.POST) public ModelAndView selectyear( @ModelAttribute("year") int year, @ModelAttribute("company_name") String comName) throws BusinessException, SystemException { logger.info("selectyear():called."); List<History> newlist = new ArrayList<History>(); History h = new History(); list = hs.selectyear(comName, year); if (list.isEmpty()) { logger.error("failed while generating graph"); throw new BusinessException( "No matching record found in the database. Please refine your business criteria.."); } for (int i = 0; i < list.size() - 1; i++) { if (list.get(i).getDate().getMonth() != (list.get(i + 1).getDate().getMonth())) { h = list.get(i); if (h != null) { newlist.add(h); } if (i == list.size() - 2) { newlist.add(list.get(i + 1)); } } } logger.debug(list); ModelAndView mav = new ModelAndView(); String str = "[['x','Stock Price'],["; for (int i = 0; i < newlist.size(); i++) { str = str + "'"; int mon = newlist.get(i).getDate().getMonth(); DateFormatSymbols symbols; symbols = new DateFormatSymbols(); String month = symbols.getMonths()[mon - 1]; str = str + month; str = str + "'"; str = str + ","; str = str + newlist.get(i).getPrice(); str = str + "]"; if (i != newlist.size() - 1) { str = str + ",["; } } str = str + "]"; Map<String, Object> map = new HashMap<String, Object>(); map.put("Name", comName); map.put("string", str); mav.addObject("map", map); mav.setViewName(displaygraph); return mav; }
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; }
private void updateDisplay() { if (this.mDayOfWeekView != null) { this.mCalendar.setFirstDayOfWeek(mWeekStart); this.mDayOfWeekView.setText( dateformartsymbols.getWeekdays()[this.mCalendar.get(Calendar.DAY_OF_WEEK)].toUpperCase( Locale.getDefault())); } this.mSelectedMonthTextView.setText( dateformartsymbols.getMonths()[this.mCalendar.get(Calendar.MONTH)].toUpperCase( Locale.getDefault())); this.mSelectedDayTextView.setText(DAY_FORMAT.format(this.mCalendar.getTime())); this.mYearView.setText(YEAR_FORMAT.format(this.mCalendar.getTime())); long timeInMillis = this.mCalendar.getTimeInMillis(); String desc = DateUtils.formatDateTime(getActivity(), timeInMillis, 24); this.mMonthAndDayView.setContentDescription(desc); }
/** * Returns a string representing the supplied month. * * <p>The string returned is the long or short form of the month name taken from the default * locale. * * @param month the month. * @param shortened if <code>true</code> return the abbreviation of the month. * @return a string representing the supplied month. */ public static String monthCodeToString(final int month, final boolean shortened) { // check arguments... if (!isValidMonthCode(month)) { throw new IllegalArgumentException( "SerialDate.monthCodeToString: month outside valid range."); } final String[] months; if (shortened) { months = DATE_FORMAT_SYMBOLS.getShortMonths(); } else { months = DATE_FORMAT_SYMBOLS.getMonths(); } return months[month - 1]; }
public JPanel getGuiPanel() { JPanel panel = new JPanel(); JButton button = new JButton(); button.addActionListener(new DoItListener()); outputLabel = new JLabel("date appears here"); DateFormatSymbols dateStuff = new DateFormatSymbols(); month = new JComboBox(dateStuff.getMonths()); day = new JTextField(8); year = new JTextField(8); JPanel inputPanel = new JPanel(new GridLayout(3, 2)); inputPanel.add(new JLabel("Month")); inputPanel.add(month); inputPanel.add(new JLabel("Day")); inputPanel.add(day); inputPanel.add(new JLabel("Year")); inputPanel.add(button); inputPanel.add(outputLabel); return panel; }
private void addLocalized(IWContext iwc) { Locale locale = iwc.getCurrentLocale(); DateFormatSymbols symbols = new DateFormatSymbols(locale); IWBundle iwb = this.getBundle(iwc); IWResourceBundle iwrb = iwb.getResourceBundle(iwc); String[] monthStrings; if (this.showNullValue) { if (this.inShort) { this.dayString = iwrb.getLocalizedString(DAY_KEY_S, "D"); this.monthString = iwrb.getLocalizedString(MONTH_KEY_S, "M"); this.yearString = iwrb.getLocalizedString(YEAR_KEY_S, "Y"); } else { this.dayString = iwrb.getLocalizedString(DAY_KEY, "Day"); this.monthString = iwrb.getLocalizedString(MONTH_KEY, "Month"); this.yearString = iwrb.getLocalizedString(YEAR_KEY, "Year"); } this.theDay.setMenuElementDisplayString("00", this.dayString); this.theMonth.setMenuElementDisplayString("00", this.monthString); if (this.showYear) { this.theYear.setMenuElementDisplayString("YY", this.yearString); } } if (this.inShort) { monthStrings = symbols.getShortMonths(); } else { monthStrings = symbols.getMonths(); } for (int i = 1; i <= 12; i++) { String value = Integer.toString(i); if (i < 10) { value = "0" + value; } this.theMonth.setMenuElementDisplayString(value, monthStrings[i - 1]); } }
public String getInitialization() { Locale locale = threadLocale.getLocale(); JSONObject spec = new JSONObject(); DateFormatSymbols symbols = new DateFormatSymbols(locale); spec.put("months", new JSONArray((Object[]) symbols.getMonths())); StringBuilder days = new StringBuilder(); String[] weekdays = symbols.getWeekdays(); Calendar c = Calendar.getInstance(locale); int firstDay = c.getFirstDayOfWeek(); // DatePicker needs them in order from monday to sunday. for (int i = Calendar.MONDAY; i <= Calendar.SATURDAY; i++) { days.append(weekdays[i].substring(0, 1)); } days.append(weekdays[Calendar.SUNDAY].substring(0, 1)); spec.put("days", days.toString().toLowerCase(locale)); // jQuery DatePicker widget expects 0 to be sunday. Calendar defines SUNDAY as 1, MONDAY as 2, // etc. spec.put("firstDay", firstDay - 1); // set language spec.put("language", locale.getLanguage()); // TODO: Skip localization if locale is English? return String.format("Tapestry.DateField.initLocalization(%s);", spec.toString(compactJSON)); }
/** * 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; } }
/** * 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"); }
/** * 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; }
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(); }
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); }
public void paint(Graphics g) { int width = getSize().width; int height = getSize().height; offImage = createImage(width, height); offGraphics = offImage.getGraphics(); offGraphics.setFont(font); fm = offGraphics.getFontMetrics(font); int xPen = 0; int yPen = 0; DateFormatSymbols dfs = new DateFormatSymbols(Preferences.getInstance().getLocale()); // Nom du mois if (drawMonthName) { String strMonthName = StringUtil.capitalize(dfs.getMonths()[mois]) + ", " + new Integer(annee).toString(); offGraphics.setColor(BG_MONTH_NAME); offGraphics.fillRect(xPen, yPen, (width - 1), fm.getHeight() + 2); offGraphics.setColor(FG_MONTH_NAME); offGraphics.drawString(strMonthName, xPen + 5, fm.getHeight()); yPen += fm.getHeight() + 2; } int caseWidth = (width - 2) / 7; // Nom des jours offGraphics.setColor(BG_DAY_NAME); offGraphics.fillRect(1, yPen, width - 2, fm.getHeight() + 5); offGraphics.setColor(FG_DAY_NAME); for (int i = 1; i <= 7; i++) { String strNomJour = StringUtil.capitalize(dfs.getWeekdays()[i].substring(0, 1)); int x = 1 + (i - 1) * caseWidth + (caseWidth - fm.stringWidth(strNomJour)) / 2; int y = yPen + fm.getHeight() - 1; offGraphics.drawString(strNomJour, x, y); } yPen += fm.getHeight() + 5; // Cases des jours Rectangle r = new Rectangle(1, yPen, width - 2, height - yPen - 1); offGraphics.setFont(font); fm = offGraphics.getFontMetrics(font); offGraphics.setColor(BG_DAY); offGraphics.fillRect(r.x, r.y, r.width, r.height); int caseHeight = r.height / 7; Calendar cal = Calendar.getInstance(); cal.setTime(dateDebutMois); int nbJoursVides = cal.get(Calendar.DAY_OF_WEEK) - 1; int iJoursVides = 0; // int iJour = 1; yPen += 3; for (int iRow = 0; iRow < 6; iRow++) { for (int iCol = 0; iCol < 7; iCol++) { int day = cal.get(Calendar.DATE); if (iJoursVides < nbJoursVides) iJoursVides++; else if (cal.get(Calendar.MONTH) == mois) { String strDay = (new Integer(day)).toString(); int xCase = 3 + (iCol * caseWidth); int yCase = yPen + (iRow * caseHeight); int x = xCase + (caseWidth - fm.stringWidth(strDay)) / 2; // int y = yCase + ( caseHeight - fm.getHeight() ) / 2 + fm.getHeight(); int y = yCase + (caseHeight - fm.getHeight()) / 2 + fm.getHeight() - 2; offGraphics.setFont(font); offGraphics.setColor(FG_DAY); // Selection if ((iRow == selectedRow) && (iCol == selectedCol)) { offGraphics.setColor(SELECTION_COLOR); offGraphics.drawRect(xCase + 2, yCase + 1, caseWidth - 4, caseHeight); offGraphics.setColor(FG_DAY); } offGraphics.drawString(strDay, x, y); int dayTemp = cal.get(Calendar.DATE); cal.add(Calendar.DATE, 1); while (cal.get(Calendar.DATE) == dayTemp) { // Cette boucle inefficace est la pour contrer le probleme de l'heure avancee cal.add(Calendar.MINUTE, 1); } } } } // Cadre offGraphics.setColor(Color.black); offGraphics.drawRect(0, 0, width - 1, height - 6); g.drawImage(offImage, 0, 5, null); }
/** * Constructor with date symbols. * * @param symbols the date symbols */ public MonthStringComparator(DateFormatSymbols symbols) { this.months = symbols.getMonths(); this.shortMonths = symbols.getShortMonths(); }
public MonthPick( Composite parent, int style, Calendar start, CalendarComposite cc, ISettings settings, Locale locale) { super(parent, style | SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.ON_TOP); mDFS = new DateFormatSymbols(locale); mMonths = mDFS.getMonths(); mStart = start; mCalendarComposite = cc; mLocale = locale; mSettings = settings; setSize(101, 112); setCapture(true); addMouseListener(this); // oh carbon, why art thou so different! // basically we need to do everything as far as listeners go on Carbon, because everything is // fired differently if (CalendarCombo.OS_CARBON) { mCarbonMouseMoveListener = new Listener() { public void handleEvent(Event event) { // widget mouse movement reporting is really off on Carbon, check if we're actually // reporting a mouse move on us if (Display.getDefault().getCursorControl() == MonthPick.this) { mouseMove(event.x, event.y); } } }; mCarbonMouseUpListener = new Listener() { public void handleEvent(Event event) { mBelowRun = false; mAboveRun = false; mouseUp(null); } }; Display.getDefault().addFilter(SWT.MouseMove, mCarbonMouseMoveListener); Display.getDefault().addFilter(SWT.MouseUp, mCarbonMouseUpListener); addListener( SWT.MouseExit, new Listener() { public void handleEvent(Event event) { // if mouse exited east or west, ignore if (event.x < 0 || event.x > getSize().x) return; // mous exit top or bottom, run thread if (event.y < 0) { mBelowRun = false; runAbove(); } else { mAboveRun = false; runBelow(); } } }); addListener( SWT.MouseEnter, new Listener() { public void handleEvent(Event event) { // halt threads mAboveRun = false; mBelowRun = false; } }); } else { addListener( SWT.MouseMove, new Listener() { public void handleEvent(Event event) { mouseMove(event.x, event.y); } }); } addDisposeListener( new DisposeListener() { public void widgetDisposed(DisposeEvent e) { setCapture(false); if (CalendarCombo.OS_CARBON) { Display.getDefault().removeFilter(SWT.MouseMove, mCarbonMouseMoveListener); Display.getDefault().removeFilter(SWT.MouseUp, mCarbonMouseUpListener); } } }); addPaintListener( new PaintListener() { public void paintControl(PaintEvent event) { paint(event); } }); // on carbon the shell doesn't die if it's stuck open and the mouse is // clicked out of bounds, so we kill it on mouse down (month has time to // be set prior) if (CalendarCombo.OS_CARBON) { mDisposeListener = new Listener() { public void handleEvent(Event e) { Display.getDefault().removeFilter(SWT.MouseDown, mDisposeListener); dispose(); } }; Display.getDefault().addFilter(SWT.MouseDown, mDisposeListener); } }
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) { } } }
/*
/** * Assemble a CalendarWindow object for the month the given GregorianCalendar object specifies. */ CalendarWindow(GregorianCalendar date) { this.setLayout(new BorderLayout(5, 5)); this.setSize(300, 240); // retrieve symbols for day and month names // side effect: script is locale ready assuming arabic numerals DateFormatSymbols symbols = new DateFormatSymbols(); String[] weekday_symbols = symbols.getWeekdays(); String[] month_symbols = symbols.getMonths(); // set the title to something useful this.setTitle( String.format( "%s %s %01d, %d", weekday_symbols[date.get(date.DAY_OF_WEEK)], month_symbols[date.get(date.MONTH)], date.get(date.DATE), date.get(date.YEAR))); JPanel weekday_labels = new JPanel(new GridLayout(0, 7, 5, 5)); // populate the weekday names row for (int i = 1; i < weekday_symbols.length; i++) { JLabel weekday = new JLabel(weekday_symbols[i]); weekday.setHorizontalAlignment(JLabel.CENTER); weekday.setVerticalAlignment(JLabel.BOTTOM); weekday_labels.add(weekday); } JPanel day_grid = new JPanel(new GridLayout(0, 7, 5, 5)); // retrieve the weekday identifier for the first of the month. // why there isn't a function that grabs this vital information // I do not know. int first = new GregorianCalendar(date.get(date.YEAR), date.get(date.MONTH), 1).get(date.DAY_OF_WEEK); // retrieve the days in the month // The ACTUAL maximum because I really want the length of // the month, and not the maximum value the field holds. // // for the future: how about getMaximum(DAY_OF_MONTH) for // length of month and getMaximumValue(DAY_OF_MONTH) for // the maximum value the field supports. int days_in_month = date.getActualMaximum(date.DAY_OF_MONTH); // populate the day of month grid // loops from 1 to the number of days in the month, plus an // offset some for the weekday offset. for (int i = 1; i < days_in_month + first; i++) { // offset the labels so the first fall on the correct // weekday if (i - first + 1 > 0) { JLabel day; day = new JLabel("" + (i - first + 1)); if (i - first + 1 == date.get(date.DAY_OF_MONTH)) { day.setForeground(Color.RED); } day.setHorizontalAlignment(JLabel.CENTER); day_grid.add(day); } else { // placeholder, since you can't skip cells. JPanel empty = new JPanel(); day_grid.add(empty); } } // Add everything to the window. All two of them. // weekdays on a border because those collapse, days in center // because it expands. this.add(weekday_labels, BorderLayout.NORTH); this.add(day_grid, BorderLayout.CENTER); }