]>
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 return themes
.get(themeId
);
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
))
37 if (!themes
.containsKey(themeId
)) {
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();
52 public void removeTheme(CmsTheme theme
, Map
<String
, String
> properties
) {
53 themes
.remove(theme
.getThemeId());
57 public void addCmsAppListener(CmsAppListener listener
) {
58 cmsAppListeners
.add(listener
);
59 if (allThemesAvailable())
60 listener
.themingUpdated();
64 public void removeCmsAppListener(CmsAppListener listener
) {
65 cmsAppListeners
.remove(listener
);
68 protected Repository
getRepository() {
72 public void setRepository(Repository repository
) {
73 this.repository
= repository
;