Introduce CMS web entry point.
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / CmsTheme.java
index 37f52a35e5e40722224697f370f1bd2f63231c46..bd4daec2eec6cf53c59fad747e27a9d0681330b6 100644 (file)
@@ -45,11 +45,16 @@ public interface CmsTheme {
        Image getIcon(String name, Integer preferredSize);
 
        static CmsTheme getCmsTheme(Composite parent) {
-               // find parent shell
-               Shell topShell = parent.getShell();
-               while (topShell.getParent() != null)
-                       topShell = (Shell) topShell.getParent();
-               return (CmsTheme) topShell.getData(CmsTheme.class.getName());
+               CmsTheme theme = (CmsTheme) parent.getData(CmsTheme.class.getName());
+               if (theme == null) {
+                       // find parent shell
+                       Shell topShell = parent.getShell();
+                       while (topShell.getParent() != null)
+                               topShell = (Shell) topShell.getParent();
+                       theme = (CmsTheme) topShell.getData(CmsTheme.class.getName());
+                       parent.setData(CmsTheme.class.getName(), theme);
+               }
+               return theme;
        }
 
        static void registerCmsTheme(Shell shell, CmsTheme theme) {