/** * get/create token out of placeRequest. * * @return token string */ public final String getToken() { if (placeRequest == null) { return null; } if (placeRequest.getParameterNames() == null || placeRequest.getParameterNames().size() == 0) { return placeRequest.getNameToken(); } final StringBuilder token = new StringBuilder(); token.append(placeRequest.getNameToken()); for (final String param : placeRequest.getParameterNames()) { token.append(';'); token.append(param); token.append('='); token.append(placeRequest.getParameter(param, StringUtils.EMPTY)); } return token.toString(); } }
/** * get/create token out of placeRequest. * * @return token string */ public final String getToken() { if (placeRequest == null) { return null; } if (placeRequest.getParameterNames() == null || placeRequest.getParameterNames().size() == 0) { return placeRequest.getNameToken(); } final StringBuilder token = new StringBuilder(); token.append(placeRequest.getNameToken()); for (final String param : placeRequest.getParameterNames()) { token.append(';'); token.append(param); token.append('='); token.append(placeRequest.getParameter(param, StringUtils.EMPTY)); } return token.toString(); } }
@Override public String toPlaceToken(final PlaceRequest placeRequest) throws TokenFormatException { String placeToken = placeRequest.getNameToken(); final StringBuilder queryStringBuilder = new StringBuilder(); String querySeparator = StringUtils.EMPTY; for (final String parameterName : placeRequest.getParameterNames()) { final String parameterValue = placeRequest.getParameter(parameterName, null); if (parameterValue != null) { final String encodedParameterValue = urlUtils.encodeQueryString(parameterValue); if (placeToken.contains("/{" + parameterName + "}")) { // route parameter placeToken = placeToken.replace("{" + parameterName + "}", encodedParameterValue); } else { // query parameter queryStringBuilder.append(querySeparator).append(parameterName).append('=') .append(encodedParameterValue); querySeparator = "&"; } } } final String queryString = queryStringBuilder.toString(); if (!queryString.isEmpty()) { placeToken = placeToken + "?" + queryString; // NOPMD } return placeToken; }
@Override public String toPlaceToken(PlaceRequest placeRequest) throws TokenFormatException { String placeToken = placeRequest.getNameToken(); StringBuilder queryStringBuilder = new StringBuilder(); String querySeparator = ""; for (String parameterName : placeRequest.getParameterNames()) { String parameterValue = placeRequest.getParameter(parameterName, null); if (parameterValue != null) { String encodedParameterValue = urlUtils.encodeQueryString(parameterValue); if (placeToken.contains("/{" + parameterName + "}")) { // route parameter placeToken = placeToken.replace("{" + parameterName + "}", encodedParameterValue); } else { // query parameter queryStringBuilder.append(querySeparator).append(parameterName).append("=") .append(encodedParameterValue); querySeparator = "&"; } } } String queryString = queryStringBuilder.toString(); if (!queryString.isEmpty()) { placeToken = placeToken + "?" + queryString; } return placeToken; }
@Override public String toPlaceToken(final PlaceRequest placeRequest) throws TokenFormatException { String placeToken = placeRequest.getNameToken(); final StringBuilder queryStringBuilder = new StringBuilder(); String querySeparator = StringUtils.EMPTY; for (final String parameterName : placeRequest.getParameterNames()) { final String parameterValue = placeRequest.getParameter(parameterName, null); if (parameterValue != null) { final String encodedParameterValue = urlUtils.encodeQueryString(parameterValue); if (placeToken.contains("/{" + parameterName + "}")) { // route parameter placeToken = placeToken.replace("{" + parameterName + "}", encodedParameterValue); } else { // query parameter queryStringBuilder.append(querySeparator).append(parameterName).append('=') .append(encodedParameterValue); querySeparator = "&"; } } } final String queryString = queryStringBuilder.toString(); if (!queryString.isEmpty()) { placeToken = placeToken + "?" + queryString; // NOPMD } return placeToken; }
/** * Converts a place token to an unescaped string. If the name token or the parameters contain any * of the separator symbols, they will be escaped with our custom escaping mechanism. * * @param placeRequest The place request to convert. * @return The unescaped string for the place token corresponding to that place request. * @throws TokenFormatException if there is an error converting. */ private String placeTokenToUnescapedString(PlaceRequest placeRequest) throws TokenFormatException { StringBuilder out = new StringBuilder(); out.append(customEscape(placeRequest.getNameToken())); Set<String> params = placeRequest.getParameterNames(); if (params != null) { for (String name : params) { out.append(paramSeparator).append(customEscape(name)).append(valueSeparator).append( customEscape(placeRequest.getParameter(name, null))); } } return out.toString(); }
void setTabAccessible(boolean tabAccessible) { this.tabAccessible = tabAccessible; // If the current place matches dynamic tab presenter, reveal // the place again in order to apply presenter reveal process // after tab accessibility change String currentPlaceToken = placeManager.getCurrentPlaceRequest().getNameToken(); if (getProxy().getTargetHistoryToken().equals(currentPlaceToken)) { placeManager.revealCurrentPlace(); } }
@Override public void onSelection(SelectionEvent<Integer> event) { if (_modifyingTabs) { // add/remove tab may change the selection return; } if (event.getSelectedItem() < 0) { // TODO: WHAT???? return; } final PlaceRequest current = placeManager.getCurrentPlaceRequest(); final String selectedToken = _tabs.get(event.getSelectedItem()).getTargetHistoryToken(); final String currentToken = current == null ? null : current.getNameToken(); if (!selectedToken.equals(currentToken)) { placeManager.revealPlace(new PlaceRequest(selectedToken)); } } });
/** * Update the fragment parameters of the current visible place. This will cause a NEW item to be added to the * browser history so the back button will take you back to the previous fragment parameters on the same place. * @param params key value pairs containing the key and the value of the parameters. Valid keys are defined in * {@link FragmentParams} * @param newItem true to insert new item into History, false to simply replace current URL without adding * to history */ public void setFragmentParameters(Map<String, String> params, boolean newItem) { PlaceRequest request = new PlaceRequest.Builder().nameToken( getCurrentPlaceRequest().getNameToken()).with(params).build(); if (newItem) { History.newItem(buildHistoryToken(request), false); } else { History.replaceItem(buildHistoryToken(request), false); } }
@Override public void onLockInteraction(LockInteractionEvent event) { // Allow progress indicator to be hidden regardless of the current (non-empty) place boolean emptyPlace = placeManager.getCurrentPlaceRequest().getNameToken() == null; if (!emptyPlace && !event.shouldLock()) { // Use deferred command because some other initialization might happen // right after place transition; therefore we want to hide the loading // indicator only after the browser event loop returns Scheduler.get().scheduleDeferred(() -> hideLoadingIndicator()); } // Set data attribute on body element to indicate the status of the application BodyElement body = Document.get().getBody(); if (event.shouldLock()) { body.setAttribute(APP_STATUS_ATTRIBUTE, APP_STATUS_BUSY); } else { body.setAttribute(APP_STATUS_ATTRIBUTE, APP_STATUS_READY); } }
@Override public void onChangeUser(final ChangeUserEvent pevent) { if (tokenEquals(placeManager.getCurrentPlaceRequest().getNameToken(), logoutToken)) { final PlaceRequest loginPlaceRequest = new PlaceRequest.Builder().nameToken(loginToken).build(); placeManager.revealPlace(loginPlaceRequest); } else { if (placeManager.getHierarchyDepth() > 1) { placeManager.revealRelativePlace(-1); } else if (tokenEquals(placeManager.getCurrentPlaceRequest().getNameToken(), loginToken) && pevent.getUser() != null && pevent.getUser().isLoggedIn()) { placeManager.revealDefaultPlace(); } else if (pevent.getUser() == null || !pevent.getUser().isLoggedIn()) { // user not logged in, load page once again, maybe we are no longer allowed to see placeManager.revealCurrentPlace(); } } navigationStructure.buildVisibleNavigation(pevent.getUser()); getView().createNavigation(navigationStructure); }
@Override public void onChangeUser(final ChangeUserEvent pevent) { if (tokenEquals(placeManager.getCurrentPlaceRequest().getNameToken(), logoutToken)) { final PlaceRequest loginPlaceRequest = new PlaceRequest.Builder().nameToken(loginToken).build(); placeManager.revealPlace(loginPlaceRequest); } else { if (placeManager.getHierarchyDepth() > 1) { placeManager.revealRelativePlace(-1); } else if (tokenEquals(placeManager.getCurrentPlaceRequest().getNameToken(), loginToken) && pevent.getUser() != null && pevent.getUser().isLoggedIn()) { placeManager.revealDefaultPlace(); } else if (pevent.getUser() == null || !pevent.getUser().isLoggedIn()) { // user not logged in, load page once again, maybe we are no longer allowed to see placeManager.revealCurrentPlace(); } } navigationStructure.buildVisibleNavigation(pevent.getUser()); getView().createNavigation(navigationStructure); }