All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zkoss.zk.ui.event.URIEvent Maven / Gradle / Ivy

There is a newer version: 10.0.0-jakarta
Show newest version
/* URIEvent.java

	Purpose:
		
	Description:
		
	History:
		Thu Aug  7 09:19:15     2008, Created by tomyeh

Copyright (C) 2008 Potix Corporation. All Rights Reserved.

{{IS_RIGHT
	This program is distributed under LGPL Version 2.1 in the hope that
	it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.zk.ui.event;

import java.util.Map;

import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.au.AuRequest;

/**
 * The URI update event used with onURIChange
 * to notify that the associated URI
 * is changed by the user. Currently it is supported only by ZUL's
 * iframe component (and only if iframe contains a ZK page).
 *
 * 

A typical use of this event is to support a better bookmarking * for a page containing iframe. * *

Unlike {@link BookmarkEvent}, this event is sent to the component * (iframe) directly. * * @author tomyeh * @since 3.5.0 */ public class URIEvent extends Event { /** The URI. */ private final String _uri; /** Converts an AU request to an URI event. * @since 5.0.0 */ public static final URIEvent getURIEvent(AuRequest request) { final Map data = request.getData(); String uri = (String)data.get(""); int urilen = uri.length(); if (urilen > 0 && uri.charAt(0) == '/') { //Convert URL to URI if starting with the context path String ctx = Executions.getCurrent().getContextPath(); int ctxlen = ctx != null ? ctx.length(): 0; if (ctxlen > 0 && !"/".equals(ctx)) { if (ctx.charAt(0) != '/') { //just in case ctx = '/' + ctx; ++ctxlen; } if (uri.startsWith(ctx) && (urilen == ctxlen || uri.charAt(ctxlen) == '/')) uri = uri.substring(ctxlen); } } return new URIEvent(request.getCommand(), request.getComponent(), uri); } /** Constructs an URI update event. * @param target the component to receive the event. * @param uri the URI. Note: it doesn't include the context path * unless it starts with a protocol (such as http://). */ public URIEvent(String name, Component target, String uri) { super(name, target); _uri = uri != null ? uri: ""; } /** Returns the URI (never null). * Notice that it does not include the context path, unless * it starts with a protocol (such as http://). */ public String getURI() { return _uri; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy