X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.ui%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fui%2FSuiteApp.java;h=62e1a700a768356b444c35a42932c3cc5dcfc052;hp=7bb9991e0bd90d398c3250eaa7453487dfe0d27c;hb=4390bdf66e304558ecf692fdfb3983b7da4bc5ac;hpb=5f3933c6262a3f45212299f6f0ec3c29a2e411bf diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java index 7bb9991..62e1a70 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java @@ -18,16 +18,18 @@ import javax.jcr.nodetype.NodeType; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.api.NodeUtils; +import org.argeo.cms.CmsUserManager; import org.argeo.cms.ui.AbstractCmsApp; import org.argeo.cms.ui.CmsTheme; import org.argeo.cms.ui.CmsUiProvider; import org.argeo.cms.ui.CmsView; +import org.argeo.cms.ui.MvcProvider; import org.argeo.cms.ui.dialogs.CmsFeedback; import org.argeo.cms.ui.util.CmsEvent; import org.argeo.cms.ui.util.CmsUiUtils; import org.argeo.entity.EntityConstants; import org.argeo.entity.EntityNames; -import org.argeo.entity.EntityTypes; +import org.argeo.entity.EntityType; import org.argeo.jcr.Jcr; import org.argeo.jcr.JcrUtils; import org.argeo.suite.RankedObject; @@ -54,9 +56,13 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { private final static String DEFAULT_THEME_ID = "org.argeo.suite.theme.default"; private Map> uiProvidersByPid = Collections.synchronizedMap(new HashMap<>()); +// private Map>> mvcProvidersByPid = Collections +// .synchronizedMap(new HashMap<>()); private Map> uiProvidersByType = Collections.synchronizedMap(new HashMap<>()); private Map> layers = Collections.synchronizedSortedMap(new TreeMap<>()); + private CmsUserManager cmsUserManager; + // TODO make more optimal or via CmsSession/CmsView private Map managedUis = new HashMap<>(); @@ -180,12 +186,19 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { if (uiProvidersByType.containsKey(typeName)) { types.add(typeName); } + for (NodeType mixin : nodeType.getDeclaredSupertypes()) { + if (uiProvidersByType.containsKey(mixin.getName())) { + types.add(mixin.getName()); + } + } } // entity type - if (context.isNodeType(EntityTypes.ENTITY_ENTITY)) { - String typeName =context.getProperty(EntityNames.ENTITY_TYPE).getString(); - if (uiProvidersByType.containsKey(typeName)) { - types.add(typeName); + if (context.isNodeType(EntityType.entity.get())) { + if (context.hasProperty(EntityNames.ENTITY_TYPE)) { + String typeName = context.getProperty(EntityNames.ENTITY_TYPE).getString(); + if (uiProvidersByType.containsKey(typeName)) { + types.add(typeName); + } } } @@ -320,6 +333,25 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { } +// public void addMvcProvider(MvcProvider uiProvider, Map properties) { +// if (properties.containsKey(Constants.SERVICE_PID)) { +// String pid = (String) properties.get(Constants.SERVICE_PID); +// RankedObject.putIfHigherRank(mvcProvidersByPid, pid, uiProvider, properties); +// } +// } +// +// public void removeMvcProvider(MvcProvider uiProvider, Map properties) { +// if (properties.containsKey(Constants.SERVICE_PID)) { +// String pid = (String) properties.get(Constants.SERVICE_PID); +// if (mvcProvidersByPid.containsKey(pid)) { +// if (mvcProvidersByPid.get(pid).equals(new RankedObject>(uiProvider, properties))) { +// mvcProvidersByPid.remove(pid); +// } +// } +// } +// +// } + public void addLayer(SuiteLayer layer, Map properties) { if (properties.containsKey(Constants.SERVICE_PID)) { String pid = (String) properties.get(Constants.SERVICE_PID); @@ -338,6 +370,10 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { } } + public void setCmsUserManager(CmsUserManager cmsUserManager) { + this.cmsUserManager = cmsUserManager; + } + @Override public void handleEvent(Event event) {