1 package org.argeo.connect.ui.widgets;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.Map;
6 import java.util.Set;
7 import java.util.TreeMap;
8 import java.util.TreeSet;
9
10 import org.argeo.connect.UserAdminService;
11 import org.argeo.eclipse.ui.EclipseUiUtils;
12 import org.eclipse.swt.widgets.Text;
13 import org.osgi.service.useradmin.User;
14
15
16 public class GroupDropDown extends ConnectAbstractDropDown {
17 private final UserAdminService userService;
18 private final String groupDn;
19
20 private Map<String, User> userMap = new TreeMap<String, User>();
21
22
23
24
25
26
27 public GroupDropDown(Text text, UserAdminService userAdminService, String groupDn) {
28 super(text);
29 this.userService = userAdminService;
30 this.groupDn = groupDn;
31 init();
32 }
33
34 public void resetDN(String dn) {
35 if (EclipseUiUtils.notEmpty(dn))
36 reset(userService.getUserDisplayName(dn));
37 else
38 reset("");
39 }
40
41 @Override
42 public String getText() {
43 String groupId = null;
44 String dname = super.getText();
45 if (EclipseUiUtils.notEmpty(dname))
46 groupId = userMap.get(dname).getName();
47 return groupId;
48 }
49
50 @Override
51 protected List<String> getFilteredValues(String filter) {
52 Set<User> users = userService.listUsersInGroup(groupDn, filter);
53 userMap.clear();
54 Set<String> res = new TreeSet<String>();
55
56 for (User user : users) {
57 String dn = user.getName();
58 String userDName = userService.getUserDisplayName(dn);
59 userMap.put(userDName, user);
60 res.add(userDName);
61 }
62
63 return new ArrayList<>(res);
64 }
65 }