### Eclipse Workspace Patch 1.0 #P web_client_utils Index: src/com/servoy/plugins/BehaviorProvider.java =================================================================== --- src/com/servoy/plugins/BehaviorProvider.java (revision 54) +++ src/com/servoy/plugins/BehaviorProvider.java (working copy) @@ -9,6 +9,7 @@ package com.servoy.plugins; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -26,6 +27,7 @@ import org.mozilla.javascript.Function; import com.servoy.j2db.scripting.FunctionDefinition; +import com.servoy.j2db.server.headlessclient.IPageContributor; import com.servoy.j2db.server.headlessclient.IWebClientPluginAccess; import com.servoy.j2db.server.headlessclient.dataui.WebEventExecutor; import com.servoy.j2db.util.Utils; @@ -183,41 +185,69 @@ } public void addCssReference(String url) { - app.getPageContributor().addBehavior(CALLBACK_BEHAVIOR, this); - if (url != null && !cssReferences.contains(url)) cssReferences.add(url); + if(!executeGlobalMethod("addGlobalCSSResourceReference", String.class, url)) { + app.getPageContributor().addBehavior(CALLBACK_BEHAVIOR, this); + if (url != null && !cssReferences.contains(url)) cssReferences.add(url); + } } public void addJsReference(String url) { - app.getPageContributor().addBehavior(CALLBACK_BEHAVIOR, this); - if (url != null && !jsReferences.contains(url)) jsReferences.add(url); + if(!executeGlobalMethod("addGlobalJSResourceReference", String.class, url)) { + app.getPageContributor().addBehavior(CALLBACK_BEHAVIOR, this); + if (url != null && !jsReferences.contains(url)) jsReferences.add(url); + } } public void addCssReference(ResourceReference url) { - app.getPageContributor().addBehavior(CALLBACK_BEHAVIOR, this); - if (url != null && !cssReferences.contains(url)) cssReferences.add(url); + if(!executeGlobalMethod("addGlobalCSSResourceReference", ResourceReference.class, url)) { + app.getPageContributor().addBehavior(CALLBACK_BEHAVIOR, this); + if (url != null && !cssReferences.contains(url)) cssReferences.add(url); + } } public void addJsReference(ResourceReference url) { - app.getPageContributor().addBehavior(CALLBACK_BEHAVIOR, this); - if (url != null && !jsReferences.contains(url)) jsReferences.add(url); + if(!executeGlobalMethod("addGlobalJSResourceReference", ResourceReference.class, url)) { + app.getPageContributor().addBehavior(CALLBACK_BEHAVIOR, this); + if (url != null && !jsReferences.contains(url)) jsReferences.add(url); + } } public void removeCssReference(ResourceReference url) { - cssReferences.remove(url); + if(!executeGlobalMethod("removeGlobalResourceReference", ResourceReference.class, url)) { + cssReferences.remove(url); + } } public void removeCssReference(String url) { - cssReferences.remove(url); + if(!executeGlobalMethod("removeGlobalResourceReference", String.class, url)) { + cssReferences.remove(url); + } } public void removeJsReference(ResourceReference url) { - jsReferences.remove(url); + if(!executeGlobalMethod("removeGlobalResourceReference", ResourceReference.class, url)) { + jsReferences.remove(url); + } } public void removeJsReference(String url) { - jsReferences.remove(url); + if(!executeGlobalMethod("removeGlobalResourceReference", String.class, url)) { + jsReferences.remove(url); + } } + private boolean executeGlobalMethod(String methodName, Class parameterType, Object url) { + try { + IPageContributor pageContributor = app.getPageContributor(); + Class clazz = pageContributor.getClass(); + Method m = clazz.getDeclaredMethod(methodName, new Class[]{ parameterType }); + m.invoke(pageContributor, new Object[] { url }); + return true; + } catch (Exception e) { + return false; + } + } + /* public interface ILatestPageBehaviorListener extends IBehaviorListener {