View Javadoc
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  /** Drop down that displays the list of existing groups */
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  	 * @param text
24  	 * @param userAdminService
25  	 * @param groupDn
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  		// TODO make order configurable
63  		return new ArrayList<>(res);
64  	}
65  }