示例#1
0
  /**
   * 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;
  }
示例#2
0
  /**
   * 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();
    }
  }
示例#3
0
 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;
 }
示例#4
0
 /**
  * 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;
  }
示例#6
0
 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);
  }
示例#8
0
  /**
   * 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;
 }
示例#10
0
  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>&#160;'"
            + ":"
            +
            // 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
            "'&#160;<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");
  }
示例#14
0
  /**
   * 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;
  }
示例#15
0
  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();
  }
示例#16
0
 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);
 }
示例#17
0
  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);
  }
示例#18
0
 /**
  * Constructor with date symbols.
  *
  * @param symbols the date symbols
  */
 public MonthStringComparator(DateFormatSymbols symbols) {
   this.months = symbols.getMonths();
   this.shortMonths = symbols.getShortMonths();
 }
示例#19
0
  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);
    }
  }
示例#20
0
  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("&nbsp;");

      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) {
      }
    }
  }
示例#21
0
/*
示例#22
0
文件: main.java 项目: Artanis/CSC220
  /**
   * 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);
  }