Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 187127 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/tasks/tests/PersonProposalProviderTest.java (+51 lines)
Lines 49-54 Link Here
49
		assertNotNull(result);
49
		assertNotNull(result);
50
		assertEquals(1, result.length);
50
		assertEquals(1, result.length);
51
		assertEquals("foo", result[0].getContent());
51
		assertEquals("foo", result[0].getContent());
52
53
		// tests for add more the one Person
54
		result = provider.getProposals("f", 1);
55
		assertNotNull(result);
56
		assertEquals(1, result.length);
57
		assertEquals("foo", result[0].getContent());
58
59
		result = provider.getProposals("f,xx", 1);
60
		assertNotNull(result);
61
		assertEquals(1, result.length);
62
		assertEquals("foo,xx", result[0].getContent());
63
		result = provider.getProposals("f xx", 1);
64
		assertNotNull(result);
65
		assertEquals(1, result.length);
66
		assertEquals("foo xx", result[0].getContent());
67
		result = provider.getProposals("a,xx", 1);
68
		assertNotNull(result);
69
		assertEquals(0, result.length);
70
71
		result = provider.getProposals("xx,f", 4);
72
		assertNotNull(result);
73
		assertEquals(1, result.length);
74
		assertEquals("xx,foo", result[0].getContent());
75
		result = provider.getProposals("xx f", 4);
76
		assertNotNull(result);
77
		assertEquals(1, result.length);
78
		assertEquals("xx foo", result[0].getContent());
79
		result = provider.getProposals("xx,a", 4);
80
		assertNotNull(result);
81
		assertEquals(0, result.length);
82
83
		result = provider.getProposals("xx,f,yy", 4);
84
		assertNotNull(result);
85
		assertEquals(1, result.length);
86
		assertEquals("xx,foo,yy", result[0].getContent());
87
		result = provider.getProposals("xx f yy", 4);
88
		assertNotNull(result);
89
		assertEquals(1, result.length);
90
		assertEquals("xx foo yy", result[0].getContent());
91
		result = provider.getProposals("xx,a,yy", 4);
92
		assertNotNull(result);
93
		assertEquals(0, result.length);
94
95
		result = provider.getProposals("xx,,yy", 3);
96
		assertNotNull(result);
97
		assertEquals(1, result.length);
98
		assertEquals("xx,foo,yy", result[0].getContent());
99
		result = provider.getProposals("xx  yy", 3);
100
		assertNotNull(result);
101
		assertEquals(1, result.length);
102
		assertEquals("xx foo yy", result[0].getContent());
52
	}
103
	}
53
104
54
}
105
}
(-)src/org/eclipse/mylyn/internal/tasks/ui/PersonContentProposal.java (-2 / +5 lines)
Lines 20-28 Link Here
20
20
21
	private boolean isCurrentUser = false;
21
	private boolean isCurrentUser = false;
22
22
23
	public PersonContentProposal(String address, boolean isCurrentUser) {
23
	private final String resultAddress;
24
25
	public PersonContentProposal(String address, boolean isCurrentUser, String resultAddress) {
24
		this.address = address;
26
		this.address = address;
25
		this.isCurrentUser = isCurrentUser;
27
		this.isCurrentUser = isCurrentUser;
28
		this.resultAddress = resultAddress;
26
	}
29
	}
27
30
28
	public String getLabel() {
31
	public String getLabel() {
Lines 38-44 Link Here
38
	}
41
	}
39
42
40
	public String getContent() {
43
	public String getContent() {
41
		return address;
44
		return resultAddress;
42
	}
45
	}
43
46
44
	public Image getImage() {
47
	public Image getImage() {
(-)src/org/eclipse/mylyn/internal/tasks/ui/PersonProposalProvider.java (-6 / +76 lines)
Lines 49-68 Link Here
49
			throw new IllegalArgumentException();
49
			throw new IllegalArgumentException();
50
		}
50
		}
51
51
52
		String resultPrefix = "";
53
		String resultPostfix = "";
52
		SortedSet<String> addressSet = getAddressSet();
54
		SortedSet<String> addressSet = getAddressSet();
53
		if (position > 0) {
55
		if (position > 0) {
56
			String searchElement = contents;
57
			int comma_prev = contents.substring(0, position).lastIndexOf(',');
58
			int comma_next = contents.substring(position).indexOf(',');
59
			int space_prev = contents.substring(0, position).lastIndexOf(' ');
60
			int space_next = contents.substring(position).indexOf(' ');
61
			int pos_prev;
62
			int pos_next;
63
64
			if (comma_prev != -1) {
65
				if (space_prev != -1) {
66
					pos_prev = Math.max(comma_prev, space_prev);
67
				} else {
68
					pos_prev = comma_prev;
69
				}
70
			} else {
71
				if (space_prev != -1) {
72
					pos_prev = space_prev;
73
				} else {
74
					pos_prev = -1;
75
				}
76
			}
77
78
			if (comma_next != -1) {
79
				if (space_next != -1) {
80
					pos_next = Math.min(comma_next, space_next);
81
				} else {
82
					pos_next = comma_next;
83
				}
84
			} else {
85
				if (space_next != -1) {
86
					pos_next = space_next;
87
				} else {
88
					pos_next = -1;
89
				}
90
			}
91
92
			int new_position;
93
			if (pos_prev != -1) {
94
				new_position = position - pos_prev - 1;
95
				if (pos_next != -1) {
96
					searchElement = contents.substring(pos_prev + 1, position + pos_next);
97
					resultPrefix = contents.substring(0, pos_prev + 1);
98
					resultPostfix = contents.substring(position + pos_next);
99
				} else {
100
					searchElement = contents.substring(pos_prev + 1);
101
					resultPrefix = contents.substring(0, pos_prev + 1);
102
					resultPostfix = "";
103
				}
104
			} else {
105
				new_position = position;
106
				if (pos_next != -1) {
107
					searchElement = contents.substring(0, position + pos_next);
108
					resultPrefix = "";
109
					resultPostfix = contents.substring(position + pos_next);
110
				} else {
111
					searchElement = contents;
112
					resultPrefix = "";
113
					resultPostfix = "";
114
				}
115
			}
116
54
			// retrieve subset of the tree set using key range
117
			// retrieve subset of the tree set using key range
55
			char[] chars = contents.toLowerCase().toCharArray();
118
			if (!searchElement.equals("")) {
56
			String contents1 = new String(chars, 0, position);
119
				char[] chars = searchElement.toLowerCase().toCharArray();
57
			chars[position - 1]++;
120
				String contents1 = new String(chars, 0, searchElement.length());
58
			String contents2 = new String(chars, 0, position);
121
				if (new_position > 0) {
59
			addressSet = addressSet.subSet(contents1, contents2);
122
					chars[new_position - 1]++;
123
				} else {
124
					chars[new_position]++;
125
				}
126
				String contents2 = new String(chars, 0, searchElement.length());
127
				addressSet = addressSet.subSet(contents1, contents2);
128
			}
60
		}
129
		}
61
130
62
		IContentProposal[] result = new IContentProposal[addressSet.size()];
131
		IContentProposal[] result = new IContentProposal[addressSet.size()];
63
		int i = 0;
132
		int i = 0;
64
		for (final String address : addressSet) {
133
		for (final String address : addressSet) {
65
			result[i++] = new PersonContentProposal(address, address.equalsIgnoreCase(currentUser));
134
			result[i++] = new PersonContentProposal(address, address.equalsIgnoreCase(currentUser), resultPrefix
135
					+ address + resultPostfix);
66
		}
136
		}
67
		Arrays.sort(result);
137
		Arrays.sort(result);
68
		return result;
138
		return result;

Return to bug 187127