/* DefaultDesktopAgent.java Purpose: Description: History: Mar 20, 2012 Created by pao Copyright (C) 2011 Potix Corporation. All Rights Reserved. */ package org.zkoss.zats.mimic.impl; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.zkoss.zats.mimic.AgentException; import org.zkoss.zats.mimic.Client; import org.zkoss.zats.mimic.ComponentAgent; import org.zkoss.zats.mimic.DesktopAgent; import org.zkoss.zats.mimic.Resource; import org.zkoss.zats.mimic.PageAgent; import org.zkoss.zk.ui.Desktop; import org.zkoss.zk.ui.Page; /** * Default implementation fof DesktopAgent. * @author dennis * */ public class DefaultDesktopAgent implements DesktopAgent, DesktopCtrl { private Client client; private Desktop desktop; private Resource downloadable; public DefaultDesktopAgent(Client client, Desktop desktop) { this.client = client; this.desktop = desktop; } public String getId() { return desktop.getId(); } public String getType() { return "desktop"; } public Object getAttribute(String name) { return desktop.getAttribute(name); } public Client getClient() { return client; } public List<PageAgent> getPages() { List<PageAgent> agents = new ArrayList<PageAgent>(); Iterator<?> iter = desktop.getPages().iterator(); while (iter.hasNext()) agents.add(new DefaultPageAgent(this, (Page) iter.next())); return agents; } public Desktop getDesktop() { return desktop; } @Override public int hashCode() { return desktop.hashCode(); } @Override public boolean equals(Object obj) { return desktop.equals(obj); } public Object getDelegatee() { return desktop; } public String toString(){ return new StringBuilder().append(getClass().getSimpleName()) .append("@").append(Integer.toHexString(System.identityHashCode(this))) .append("[").append(desktop.toString()).append("]") .toString(); } public ComponentAgent query(String selector) { return Searcher.find(this, selector); } public List<ComponentAgent> queryAll(String selector) { return Searcher.findAll(this, selector); } public void destroy(){ ((ClientCtrl)getClient()).destroy(this); } public <T> T as(Class<T> clazz) { T obj = ValueResolverManager.getInstance().resolve(this, clazz); if(obj!=null) return obj; throw new AgentException("cannot resolve " + clazz.getName() +" for "+ getType()); } public <T> boolean is(Class<T> clazz) { T obj = ValueResolverManager.getInstance().resolve(this, clazz); return obj!=null; } public void setDownloadable(Resource downloadable) { this.downloadable = downloadable; } public Resource getDownloadable() { return downloadable; } }