]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/ui/AbstractCmsApp.java
1 package org
.argeo
.cms
.ui
;
3 import java
.util
.ArrayList
;
4 import java
.util
.Collections
;
5 import java
.util
.HashMap
;
9 import javax
.jcr
.Repository
;
11 import org
.eclipse
.rap
.rwt
.RWT
;
13 /** Base class for {@link CmsApp}s. */
14 public abstract class AbstractCmsApp
implements CmsApp
{
15 private Map
<String
, CmsTheme
> themes
= Collections
.synchronizedMap(new HashMap
<>());
17 private List
<CmsAppListener
> cmsAppListeners
= new ArrayList
<>();
19 private Repository repository
;
21 protected abstract String
getThemeId(String uiName
);
24 public CmsTheme
getTheme(String uiName
) {
25 String themeId
= getThemeId(uiName
);
28 if (!themes
.containsKey(themeId
))
29 throw new IllegalArgumentException("Theme " + themeId
+ " not found.");
30 return themes
.get(themeId
);
34 public boolean allThemesAvailable() {
35 boolean themeMissing
= false;
36 uiNames
: for (String uiName
: getUiNames()) {
37 String themeId
= getThemeId(uiName
);
38 if (RWT
.DEFAULT_THEME_ID
.equals(themeId
))
40 if (!themes
.containsKey(themeId
)) {
48 public void addTheme(CmsTheme theme
, Map
<String
, String
> properties
) {
49 themes
.put(theme
.getThemeId(), theme
);
50 if (allThemesAvailable())
51 for (CmsAppListener listener
: cmsAppListeners
)
52 listener
.themingUpdated();
55 public void removeTheme(CmsTheme theme
, Map
<String
, String
> properties
) {
56 themes
.remove(theme
.getThemeId());
60 public void addCmsAppListener(CmsAppListener listener
) {
61 cmsAppListeners
.add(listener
);
62 if (allThemesAvailable())
63 listener
.themingUpdated();
67 public void removeCmsAppListener(CmsAppListener listener
) {
68 cmsAppListeners
.remove(listener
);
71 protected Repository
getRepository() {
75 public void setRepository(Repository repository
) {
76 this.repository
= repository
;