--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0">
+ <implementation class="org.argeo.app.ui.people.GroupUiProvider"/>
+ <service>
+ <provide interface="org.argeo.cms.swt.acr.SwtUiProvider"/>
+ </service>
+ <properties entry="config/groupUiProvider.properties"/>
+ <reference bind="setCmsUserManager" cardinality="1..1" interface="org.argeo.cms.CmsUserManager" name="CmsUserManager" policy="static"/>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0">
+ <implementation class="org.argeo.app.ui.people.HierarchyUnitUiProvider"/>
+ <service>
+ <provide interface="org.argeo.cms.swt.acr.SwtUiProvider"/>
+ </service>
+ <properties entry="config/hierarchyUnitUiProvider.properties"/>
+ <reference bind="setCmsUserManager" cardinality="1..1" interface="org.argeo.cms.CmsUserManager" name="CmsUserManager" policy="static"/>
+</scr:component>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="init">
<implementation class="org.argeo.app.ui.people.PersonUiProvider"/>
<service>
- <provide interface="org.argeo.cms.ui.CmsUiProvider"/>
+ <provide interface="org.argeo.cms.swt.acr.SwtUiProvider"/>
</service>
<properties entry="config/personUiProvider.properties"/>
<property name="availableRoles" type="String">
OSGI-INF/peopleEntryArea.xml,\
OSGI-INF/peopleLayer.xml,\
OSGI-INF/personUiProvider.xml,\
+OSGI-INF/groupUiProvider.xml,\
+OSGI-INF/hierarchyUnitUiProvider.xml,\
OSGI-INF/contentEntryArea.xml,\
OSGI-INF/contentLayer.xml,\
OSGI-INF/documentsFolder.xml,\
--- /dev/null
+service.pid=argeo.people.ui.groupUiProvider
+
+entity.type=ldap:groupOfNames
\ No newline at end of file
--- /dev/null
+service.pid=argeo.people.ui.hierarchyUnitUiProvider
+
+entity.type=ldap:organizationalUnit
\ No newline at end of file
weights=3000,7000
title=%people
-entity.type=ldap:inetOrgPerson,ldap:groupOfNames
\ No newline at end of file
+entity.type=ldap:inetOrgPerson,ldap:groupOfNames,ldap:organizationalUnit
\ No newline at end of file
service.pid=argeo.people.ui.personUiProvider
-entity.type=ldap:inetOrgPerson,ldap:groupOfNames
\ No newline at end of file
+entity.type=ldap:inetOrgPerson,ldap:posixAccount
\ No newline at end of file
@Deprecated
private String defaultThemeId = "org.argeo.app.theme.default";
+ // TODO use QName as key for byType
private Map<String, RankedObject<SwtUiProvider>> uiProvidersByPid = Collections.synchronizedMap(new HashMap<>());
private Map<String, RankedObject<SwtUiProvider>> uiProvidersByType = Collections.synchronizedMap(new HashMap<>());
private Map<String, RankedObject<SuiteLayer>> layersByPid = Collections.synchronizedSortedMap(new TreeMap<>());
if (byType.containsKey(type))
types.add(type);
}
- if (types.size() == 0)
+ if (types.size() == 0) {
throw new IllegalArgumentException("No type found for " + content + " (" + objectClasses + ")");
+ }
String type = types.iterator().next();
if (!byType.containsKey(type))
throw new IllegalArgumentException("No component found for " + content + " with type " + type);
}
}
} catch (Exception e) {
- log.error("Cannot handle event " + event, e);
-// CmsView.getCmsView(ui).exception(e);
+ CmsFeedback.show("Cannot handle event " + event, e);
+// log.error("Cannot handle event " + event, e);
}
});
}
import org.argeo.app.ui.SuiteEvent;
import org.argeo.cms.swt.CmsSwtUtils;
import org.argeo.cms.swt.acr.SwtUiProvider;
-import org.argeo.cms.swt.widgets.SwtHierarchicalPart;
+import org.argeo.cms.swt.widgets.SwtTreeView;
import org.argeo.cms.ux.acr.ContentHierarchicalPart;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
};
contentPart.setInput(rootContent);
- SwtHierarchicalPart<Content> view = new SwtHierarchicalPart<>(parent, 0, contentPart);
+ SwtTreeView<Content> view = new SwtTreeView<>(parent, 0, contentPart);
view.setLayoutData(CmsSwtUtils.fillAll());
contentPart.setInput(rootContent);
--- /dev/null
+package org.argeo.app.ui.people;
+
+import org.argeo.api.acr.Content;
+import org.argeo.cms.CmsUserManager;
+import org.argeo.cms.swt.acr.SwtUiProvider;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+public class GroupUiProvider implements SwtUiProvider {
+ private CmsUserManager cmsUserManager;
+
+ @Override
+ public Control createUiPart(Composite parent, Content context) {
+ new Label(parent, 0).setText("Group " + context);
+ return null;
+ }
+
+ public void setCmsUserManager(CmsUserManager cmsUserManager) {
+ this.cmsUserManager = cmsUserManager;
+ }
+
+}
--- /dev/null
+package org.argeo.app.ui.people;
+
+import org.argeo.api.acr.Content;
+import org.argeo.cms.CmsUserManager;
+import org.argeo.cms.swt.acr.SwtUiProvider;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+
+public class HierarchyUnitUiProvider implements SwtUiProvider {
+ private CmsUserManager cmsUserManager;
+
+ @Override
+ public Control createUiPart(Composite parent, Content context) {
+ new Label(parent,0).setText("Hierarchy unit "+context);
+ return null;
+ }
+
+ public void setCmsUserManager(CmsUserManager cmsUserManager) {
+ this.cmsUserManager = cmsUserManager;
+ }
+
+}
import org.argeo.cms.swt.CmsSwtUtils;
import org.argeo.cms.swt.Selected;
import org.argeo.cms.swt.acr.SwtUiProvider;
-import org.argeo.cms.swt.widgets.SwtHierarchicalPart;
-import org.argeo.cms.swt.widgets.SwtTabularPart;
+import org.argeo.cms.swt.widgets.SwtTableView;
+import org.argeo.cms.swt.widgets.SwtTreeView;
import org.argeo.cms.ui.CmsUiProvider;
import org.argeo.cms.ux.widgets.AbstractHierarchicalPart;
import org.argeo.cms.ux.widgets.Column;
|| CurrentUser.implies(CmsRole.userAdmin,
IpaUtils.IPA_ACCOUNTS_RDN + "," + directory.getBase())) // IPA
{
- visible.add(directory);
+ // we do not show the base level
+ for (HierarchyUnit hu : directory.getDirectHierarchyUnits(true)) {
+ visible.add(hu);
+ }
}
}
return model.getHierarchyUnitName();
}
+ @Override
+ public CmsIcon getIcon(HierarchyUnit model) {
+ return SuiteIcon.group;
+ }
+
};
- SwtHierarchicalPart<HierarchyUnit> directoriesView = new SwtHierarchicalPart<>(sashForm, SWT.NONE,
- hierarchyPart);
+ SwtTreeView<HierarchyUnit> directoriesView = new SwtTreeView<>(sashForm, SWT.NONE, hierarchyPart);
DefaultTabularPart<HierarchyUnit, Content> usersPart = new DefaultTabularPart<>() {
});
usersPart.addColumn((Column<Content>) (role) -> role.attr(LdapAttrs.mail.qName()));
- SwtTabularPart<HierarchyUnit, Content> usersView = new SwtTabularPart<>(sashForm, SWT.NONE, usersPart);
+ SwtTableView<HierarchyUnit, Content> usersView = new SwtTableView<>(sashForm, SWT.NONE, usersPart);
// toolbar
Composite bottom = new Composite(parent, SWT.NONE);
// CONTROLLER
hierarchyPart.onSelected((o) -> {
if (o instanceof HierarchyUnit) {
- usersPart.setInput((HierarchyUnit) o);
+ HierarchyUnit hierarchyUnit = (HierarchyUnit) o;
+ usersPart.setInput(hierarchyUnit);
+ cmsView.sendEvent(SuiteEvent.refreshPart.topic(),
+ SuiteEvent.eventProperties(ContentUtils.hierarchyUnitToContent(contentSession, hierarchyUnit)));
}
});
import org.argeo.cms.Localized;
import org.argeo.cms.swt.CmsSwtUtils;
import org.argeo.cms.swt.acr.SwtSection;
+import org.argeo.cms.swt.acr.SwtUiProvider;
import org.argeo.cms.swt.widgets.EditableText;
-import org.argeo.cms.ui.CmsUiProvider;
import org.argeo.util.naming.LdapAttrs;
import org.argeo.util.naming.LdapObjs;
import org.eclipse.swt.SWT;
import org.osgi.service.useradmin.User;
/** Edit a suite user. */
-public class PersonUiProvider implements CmsUiProvider {
+public class PersonUiProvider implements SwtUiProvider {
private String[] availableRoles;
private CmsUserManager cmsUserManager;