]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/ui/AbstractCmsApp.java
Merge remote-tracking branch 'origin/master' into v2.x
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / AbstractCmsApp.java
1 package org.argeo.cms.ui;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.HashMap;
6 import java.util.List;
7 import java.util.Map;
8
9 import javax.jcr.Repository;
10
11 import org.eclipse.rap.rwt.RWT;
12
13 /** Base class for {@link CmsApp}s. */
14 public abstract class AbstractCmsApp implements CmsApp {
15 private Map<String, CmsTheme> themes = Collections.synchronizedMap(new HashMap<>());
16
17 private List<CmsAppListener> cmsAppListeners = new ArrayList<>();
18
19 private Repository repository;
20
21 protected abstract String getThemeId(String uiName);
22
23 @Override
24 public CmsTheme getTheme(String uiName) {
25 String themeId = getThemeId(uiName);
26 if (themeId == null)
27 return null;
28 return themes.get(themeId);
29 }
30
31 protected boolean allThemesAvailable() {
32 boolean themeMissing = false;
33 uiNames: for (String uiName : getUiNames()) {
34 String themeId = getThemeId(uiName);
35 if (RWT.DEFAULT_THEME_ID.equals(themeId))
36 continue uiNames;
37 if (!themes.containsKey(themeId)) {
38 themeMissing = true;
39 break uiNames;
40 }
41 }
42 return !themeMissing;
43 }
44
45 public void addTheme(CmsTheme theme, Map<String, String> properties) {
46 themes.put(theme.getThemeId(), theme);
47 if (allThemesAvailable())
48 for (CmsAppListener listener : cmsAppListeners)
49 listener.themingUpdated();
50 }
51
52 public void removeTheme(CmsTheme theme, Map<String, String> properties) {
53 themes.remove(theme.getThemeId());
54 }
55
56 @Override
57 public void addCmsAppListener(CmsAppListener listener) {
58 cmsAppListeners.add(listener);
59 if (allThemesAvailable())
60 listener.themingUpdated();
61 }
62
63 @Override
64 public void removeCmsAppListener(CmsAppListener listener) {
65 cmsAppListeners.remove(listener);
66 }
67
68 protected Repository getRepository() {
69 return repository;
70 }
71
72 public void setRepository(Repository repository) {
73 this.repository = repository;
74 }
75
76 }