]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ux/src/org/argeo/cms/ux/AbstractCmsEditable.java
Make JCR to ACR more flexible
[lgpl/argeo-commons.git] / org.argeo.cms.ux / src / org / argeo / cms / ux / AbstractCmsEditable.java
1 package org.argeo.cms.ux;
2
3 import java.util.IdentityHashMap;
4
5 import org.argeo.api.cms.ux.CmsEditable;
6 import org.argeo.api.cms.ux.CmsEditionEvent;
7 import org.argeo.api.cms.ux.CmsEditionListener;
8
9 public abstract class AbstractCmsEditable implements CmsEditable {
10 private IdentityHashMap<CmsEditionListener, Object> listeners = new IdentityHashMap<>();
11
12 protected void notifyListeners(CmsEditionEvent e) {
13 if (CmsEditionEvent.START_EDITING == e.getType()) {
14 for (CmsEditionListener listener : listeners.keySet())
15 listener.editionStarted(e);
16 } else if (CmsEditionEvent.STOP_EDITING == e.getType()) {
17 for (CmsEditionListener listener : listeners.keySet())
18 listener.editionStopped(e);
19 } else {
20 throw new IllegalArgumentException("Unkown edition event type " + e.getType());
21 }
22 }
23
24 @Override
25 public void addCmsEditionListener(CmsEditionListener listener) {
26 listeners.put(listener, new Object());
27 }
28
29 @Override
30 public void removeCmsEditionListener(CmsEditionListener listener) {
31 listeners.remove(listener, new Object());
32 }
33
34 }