/** * The URL query string of of the next page. * * <p>Note: the query string does not start with a "?" or "&" those need to be added as * appropriate by the caller. */ private String getNextPageURL(BrowseParams params, BrowseInfo info) throws SQLException, UIException { // Don't create a next page link if this is the last page if (info.isLast()) return null; Map<String, String> parameters = new HashMap<String, String>(); parameters.putAll(params.getCommonParameters()); parameters.putAll(params.getControlParameters()); if (info.hasNextPage()) { if (info.getNextItem() < 0) parameters.put(BrowseParams.JUMPTO_VALUE, URLEncode(info.getNextValue())); else parameters.put(BrowseParams.JUMPTO_ITEM, Integer.toString(info.getNextItem())); } return super.generateURL(BROWSE_URL_BASE, parameters); }
/** * Makes the jump-list navigation for the results * * @param div * @param info * @param params * @throws WingException */ private void addBrowseJumpNavigation(Division div, BrowseInfo info, BrowseParams params) throws WingException { // Get the name of the index String type = info.getBrowseIndex().getName(); // Prepare a Map of query parameters required for all links Map<String, String> queryParams = new HashMap<String, String>(); queryParams.putAll(params.getCommonParameters()); queryParams.putAll(params.getControlParameters()); // Navigation aid (really this is a poor version of pagination) Division jump = div.addInteractiveDivision( "browse-navigation", BROWSE_URL_BASE, Division.METHOD_POST, "secondary navigation"); // Add all the query parameters as hidden fields on the form for (String key : queryParams.keySet()) jump.addHidden(key).setValue(queryParams.get(key)); // If this is a date based browse, render the date navigation if (isSortedByDate(info)) { Para jumpForm = jump.addPara(); // Create a select list to choose a month jumpForm.addContent(T_jump_select); Select month = jumpForm.addSelect(BrowseParams.MONTH); month.addOption(false, "-1", T_choose_month); for (int i = 1; i <= 12; i++) { month.addOption(false, String.valueOf(i), DCDate.getMonthName(i, Locale.getDefault())); } // Create a select list to choose a year Select year = jumpForm.addSelect(BrowseParams.YEAR); year.addOption(false, "-1", T_choose_year); int currentYear = DCDate.getCurrent().getYear(); int i = currentYear; // Calculate where to move from 1, 5 to 10 year jumps int oneYearBreak = ((currentYear - ONE_YEAR_LIMIT) / 5) * 5; int fiveYearBreak = ((currentYear - FIVE_YEAR_LIMIT) / 10) * 10; int tenYearBreak = (currentYear - TEN_YEAR_LIMIT); do { year.addOption(false, String.valueOf(i), String.valueOf(i)); if (i <= fiveYearBreak) i -= 10; else if (i <= oneYearBreak) i -= 5; else i--; } while (i > tenYearBreak); // Create a free text entry box for the year jumpForm = jump.addPara(); jumpForm.addContent(T_jump_year); jumpForm.addText("start_with").setHelp(T_jump_year_help); jumpForm.addButton("submit").setValue(T_go); } else { // Create a clickable list of the alphabet List jumpList = jump.addList("jump-list", List.TYPE_SIMPLE, "alphabet"); for (char c = 'A'; c <= 'Z'; c++) { Map<String, String> cQuery = new HashMap<String, String>(queryParams); cQuery.put(BrowseParams.STARTS_WITH, Character.toString(c)); jumpList.addItemXref(super.generateURL(BROWSE_URL_BASE, cQuery), Character.toString(c)); } // Create a free text field for the initial characters Para jumpForm = jump.addPara(); jumpForm.addContent(T_starts_with); jumpForm.addText(BrowseParams.STARTS_WITH).setHelp(T_starts_with_help); jumpForm.addButton("submit").setValue(T_go); } }