///////////////////////////////////////////////////////////////////////////////// // Copyright © 2008 W. Kowarschick // // Permission is granted to copy, distribute and/or modify this document // under the terms of the WK License, Version 1.0 (WKL 1.0) or any later version // published by Wolfgang Kowarschick. ///////////////////////////////////////////////////////////////////////////////// package controller { import flash.net.URLRequest; import flash.net.navigateToURL; import model.ModelSite; import model.ModelURL; import mx.events.PropertyChangeEvent; import service.ServiceCSSLoad; import service.ServiceQueue; import service.ServiceXMLLoad; public class ControllerSite { ///////////////////////////////////////////////////////////////////////////// // Instance Members ///////////////////////////////////////////////////////////////////////////// private var v_model_url: ModelURL; private var v_model_site: ModelSite; private var v_service_queue: ServiceQueue; ///////////////////////////////////////////////////////////////////////////// // Constructor ///////////////////////////////////////////////////////////////////////////// public function ControllerSite() { v_model_url = Components.instance.modelURL; v_model_site = Components.instance.modelSite; v_service_queue = Components.instance.serviceQueue; v_model_url.addEventListener (PropertyChangeEvent.PROPERTY_CHANGE, eh_load_url_data); v_model_site.addEventListener (PropertyChangeEvent.PROPERTY_CHANGE, eh_load_css_data); } ///////////////////////////////////////////////////////////////////////////// // Public Methods ///////////////////////////////////////////////////////////////////////////// public function set url(p_url: String): void { v_model_url.url = p_url; } ///////////////////////////////////////////////////////////////////////////// // Event Handlers ///////////////////////////////////////////////////////////////////////////// private function eh_load_url_data(p_event: PropertyChangeEvent): void { if (p_event.property == "domain" && v_model_url.domain.match("(kowa|cms|mmdb|mmprog|pm)\.hs-augsburg\.de") ) v_service_queue.execute (new ServiceXMLLoad ("http://"+v_model_url.domain+"/flash/navigation-tree.xml", v_model_site, "navigationTree" ) ); else if (p_event.property == "url") { if (v_model_url.external) { var l_request: URLRequest = new URLRequest(v_model_url.url); try { navigateToURL(l_request, '_blank'); // second argument is target } catch (e:Error) { // Error page should be displayed; trace("Cannot switch to URL '" + v_model_url.url + "'"); } } else v_service_queue.execute (new ServiceXMLLoad (v_model_url.url+"body.flash.xml", v_model_site, "pageContent", true ) ); }; } private function eh_load_css_data(p_event: PropertyChangeEvent): void { if (p_event.property == "htmlCSSurl") v_service_queue.execute (new ServiceCSSLoad (v_model_site.htmlCSSurl, v_model_site, "htmlStyleSheet" ) ); } ///////////////////////////////////////////////////////////////////////////// // End of Class ///////////////////////////////////////////////////////////////////////////// } } /* public function cloneXML(p_xml: XML): XML { var l_xml: XML = <{p_xml.name()}/>; for each (var l_attribute: XML in p_xml.attributes()) l_xml.@[l_attribute.name()] = l_attribute; for each (var l_child: XML in p_xml.children()) l_xml.appendChild(this.cloneXML(l_child)); return l_xml; } */