View Javadoc
1   package org.argeo.connect.ui.widgets;
2   
3   import java.util.ArrayList;
4   import java.util.LinkedHashMap;
5   import java.util.List;
6   import java.util.Map;
7   
8   import org.argeo.connect.UserAdminService;
9   import org.argeo.eclipse.ui.EclipseUiUtils;
10  import org.eclipse.swt.widgets.Text;
11  import org.osgi.service.useradmin.User;
12  
13  /** Drop down that displays the list of existing groups */
14  @Deprecated
15  public class ExistingGroupsDropDown extends ConnectAbstractDropDown {
16  	private final UserAdminService userService;
17  	private final boolean includeUsers;
18  	private final boolean includeSystemRoles;
19  
20  	// We use a map: the displayed value is not the key we want to retrieve
21  	// use a linked map to keep ordered returned by the query
22  	private Map<String, User> userMap = new LinkedHashMap<String, User>();
23  
24  	/**
25  	 * @param text
26  	 * @param userAdminService
27  	 * @param includeUsers
28  	 * @param includeSystemRoles
29  	 */
30  	public ExistingGroupsDropDown(Text text, UserAdminService userAdminService, boolean includeUsers,
31  			boolean includeSystemRoles) {
32  		super(text);
33  		this.userService = userAdminService;
34  		this.includeUsers = includeUsers;
35  		this.includeSystemRoles = includeSystemRoles;
36  		init();
37  	}
38  
39  	public void resetDN(String dn) {
40  		if (EclipseUiUtils.notEmpty(dn))
41  			reset(userService.getUserDisplayName(dn));
42  		else
43  			reset("");
44  	}
45  
46  	@Override
47  	public String getText() {
48  		String groupId = null;
49  		String dname = super.getText();
50  		if (EclipseUiUtils.notEmpty(dname))
51  			groupId = userMap.get(dname).getName();
52  		return groupId;
53  	}
54  
55  	@Override
56  	protected List<String> getFilteredValues(String filter) {
57  		List<User> users = userService.listGroups(filter, includeUsers, includeSystemRoles);
58  		userMap.clear();
59  		List<String> res = new ArrayList<String>();
60  
61  		for (User user : users) {
62  			String dn = user.getName();
63  			String userDName = userService.getUserDisplayName(dn);
64  			userMap.put(userDName, user);
65  			res.add(userDName);
66  		}
67  		return res;
68  	}
69  }