]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ux/src/org/argeo/cms/ux/AbstractCmsEditable.java
Adapt to changes in Argeo TP
[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 /**
10 * Base class for implementing {@link CmsEditable}, mostly managing
11 * {@link CmsEditionListener}s.
12 */
13 public abstract class AbstractCmsEditable implements CmsEditable {
14 private IdentityHashMap<CmsEditionListener, Object> listeners = new IdentityHashMap<>();
15
16 /** Notifies listeners of a {@link CmsEditionEvent}. */
17 protected void notifyListeners(CmsEditionEvent e) {
18 if (CmsEditionEvent.START_EDITING == e.getType()) {
19 for (CmsEditionListener listener : listeners.keySet())
20 listener.editionStarted(e);
21 } else if (CmsEditionEvent.STOP_EDITING == e.getType()) {
22 for (CmsEditionListener listener : listeners.keySet())
23 listener.editionStopped(e);
24 } else {
25 throw new IllegalArgumentException("Unkown edition event type " + e.getType());
26 }
27 }
28
29 @Override
30 public void addCmsEditionListener(CmsEditionListener listener) {
31 listeners.put(listener, new Object());
32 }
33
34 @Override
35 public void removeCmsEditionListener(CmsEditionListener listener) {
36 listeners.remove(listener, new Object());
37 }
38
39 }