public function startRender(__IComponent &$component) { $component_id = $component->getId(); $component_name = $component->getName(); if (!__ResponseWriterManager::getInstance()->hasResponseWriter('remoteservicedeclarations_' . $component_name)) { $send_event_parameters = array(); $send_event_parameters[] = "'remotecall'"; $send_event_parameters[] = "arg"; $send_event_parameters[] = "'{$component_id}'"; $send_event_parameters = join(', ', $send_event_parameters); //generate the remote service function: $js_code = <<<CODESET {$component_name} = function() { var arg = \$A({$component_name}.arguments); (__ClientEventHandler.getInstance()).sendEvent({$send_event_parameters}); }; CODESET; $jod_response_writer2 = new __JavascriptOnDemandResponseWriter('remoteservicedeclarations_' . $component_name); $jod_response_writer2->addJsCode($js_code); $javascript_rw = __ResponseWriterManager::getInstance()->getResponseWriter('javascript'); $javascript_rw->addResponseWriter($jod_response_writer2); //generate the callback code (if applicable) $callback = $component->getClientResponseCallback(); if ($callback != null) { $js_callback_code = "{$component_id} = new __ResponseCallbackHandler({$callback});"; if (__ResponseWriterManager::getInstance()->hasResponseWriter('remoteservicecallback')) { $jod_response_writer = __ResponseWriterManager::getInstance()->getResponseWriter('remoteservicecallback'); } else { $jod_response_writer = new __JavascriptOnDemandResponseWriter('remoteservicecallback'); } $jod_response_writer->addJsCode($js_callback_code); $jod_response_writer->setLoadAfterDomLoaded(true); $javascript_rw->addResponseWriter($jod_response_writer); } } }