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 AssignedToDropDown 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 AssignedToDropDown(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  		reset(userService.getUserDisplayName(dn));
41  	}
42  
43  	@Override
44  	public String getText() {
45  		String groupId = null;
46  		String dname = super.getText();
47  		if (EclipseUiUtils.notEmpty(dname))
48  			groupId = userMap.get(dname).getName();
49  		return groupId;
50  	}
51  
52  	// TODO reduce list to relevant assignees.
53  	@Override
54  	protected List<String> getFilteredValues(String filter) {
55  		List<User> users = userService.listGroups(filter, includeUsers, includeSystemRoles);
56  		userMap.clear();
57  		List<String> res = new ArrayList<String>();
58  
59  		for (User user : users) {
60  			String dn = user.getName();
61  			String userDName = userService.getUserDisplayName(dn);
62  			userMap.put(userDName, user);
63  			res.add(userDName);
64  		}
65  		return res;
66  	}
67  }