Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* AcegiAuthenticationEntryPoint.java
  
  {{IS_NOTE
  	Purpose:
  		
  	Description:
  		
  	History:
  		Thu Dec 27 11:32:06     2006, Created by Henri
 }}IS_NOTE
 
 Copyright (C) 2006 Potix Corporation. All Rights Reserved.
 
 {{IS_RIGHT
 }}IS_RIGHT
 */
 package org.zkoss.zkplus.acegi;
 
 
 
 import  org.zkoss.zul.Textbox;
 import  org.zkoss.zul.Window;
 
 
 import java.util.Map;
 import java.util.List;

The default listener to show a modal window for login and other things.

The event data is the url page and it expects:

  • The url page must be a zul defined page (*.zul).
  • The url page must enclosed with a window component so it can be doModal().

This implementation would automatically remove the added eventlistener from the target component.

Author(s):
Henri
 
 public class ShowWindowEventListener implements EventListener {
 	public void onEvent(Event event) {
 		//fetch old Event stored in Session and post again
 		final Component comp = event.getTarget();
 		
 		final Page page = comp.getPage();
 		final String url = (Stringevent.getData();
 		final Execution exec = Executions.getCurrent();
 		try {
 			doModal(pageurl);
     	} finally {
 			if (comp.isListenerAvailable(event.getName(), true)) {
 				EventListener listener = (EventListenercomp.getAttribute(event.getName());
 				if (listener != null) {
 					comp.removeEventListener(event.getName(), listener);
 					comp.removeAttribute(event.getName());
 				}
 			}
 		}
 	}
 
 	private void doModal(Page pageString url) {
 		final Execution exec = Executions.getCurrent();
 		final Object[] urls = parseUrl(url);
     	final Component modalwin = exec.createComponents((String)urls[0], null, (Map)urls[1]);
     	if (!(modalwin instanceof Window)) {
     		throw new UiException("The page must enclosed with a Window component. Check url definition: "+url);
     	}
     	modalwin.setPage(page);
     	try {
 	    	((Window)modalwin).doModal();
     	} catch(java.lang.InterruptedException ex) {
     		//ignore
     	}
 	}		
 
 	//Object[0]: url, Object[1]: Map
 	private Object[] parseUrl(String url) {
 		Object[] result = new Object[2];
		int j = url.indexOf("?");
		if (j < 0) {
			result[0] = url;
			return result;
		}
		result[0] = url.substring(0, j);
		if ((j+1) >= url.length()) {
			return result;
		}
		url = url.substring(j+1);
		List list = (List) CollectionsX.parse(new ArrayList(), url'&');
		Map args = new HashMap();
		for(final Iterator it = list.iterator(); it.hasNext();) {
			List pair = (List) CollectionsX.parse(new ArrayList(2), (Stringit.next(), '=');
			args.put(pair.get(0), pair.get(1));
		}
		result[1] = args;
		return result;
	}
New to GrepCode? Check out our FAQ X