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