Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 93935 Details for
Bug 187127
support content assist to work after a comma in the cc list
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
updated patch
clipboard.txt (text/plain), 8.46 KB, created by
Steffen Pingel
on 2008-03-28 02:27:32 EDT
(
hide
)
Description:
updated patch
Filename:
MIME Type:
Creator:
Steffen Pingel
Created:
2008-03-28 02:27:32 EDT
Size:
8.46 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylyn.tasks.ui >Index: src/org/eclipse/mylyn/internal/tasks/ui/PersonProposalProvider.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/PersonProposalProvider.java,v >retrieving revision 1.18 >diff -u -r1.18 PersonProposalProvider.java >--- src/org/eclipse/mylyn/internal/tasks/ui/PersonProposalProvider.java 1 Mar 2008 21:38:50 -0000 1.18 >+++ src/org/eclipse/mylyn/internal/tasks/ui/PersonProposalProvider.java 28 Mar 2008 06:25:47 -0000 >@@ -28,6 +28,7 @@ > /** > * @author Shawn Minto > * @author Eugene Kuleshov >+ * @author Steffen Pingel > */ > public class PersonProposalProvider implements IContentProposalProvider { > >@@ -49,25 +50,54 @@ > throw new IllegalArgumentException(); > } > >+ int leftSeparator = getIndexOfLeftSeparator(contents, position); >+ int rightSeparator = getIndexOfRightSeparator(contents, position); >+ >+ assert leftSeparator <= position; >+ assert position <= rightSeparator; >+ >+ String searchText = contents.substring(leftSeparator + 1, position); >+ String resultPrefix = contents.substring(0, leftSeparator + 1); >+ String resultPostfix = contents.substring(rightSeparator); >+ >+ // retrieve subset of the tree set using key range > SortedSet<String> addressSet = getAddressSet(); >- if (position > 0) { >- // retrieve subset of the tree set using key range >- char[] chars = contents.toLowerCase().toCharArray(); >- String contents1 = new String(chars, 0, position); >- chars[position - 1]++; >- String contents2 = new String(chars, 0, position); >- addressSet = addressSet.subSet(contents1, contents2); >+ if (!searchText.equals("")) { >+ searchText = searchText.toLowerCase(); >+ char[] nextWord = searchText.toCharArray(); >+ nextWord[searchText.length() - 1]++; >+ addressSet = addressSet.subSet(searchText, new String(nextWord)); > } > > IContentProposal[] result = new IContentProposal[addressSet.size()]; > int i = 0; > for (final String address : addressSet) { >- result[i++] = new PersonContentProposal(address, address.equalsIgnoreCase(currentUser)); >+ result[i++] = new PersonContentProposal(address, address.equalsIgnoreCase(currentUser), resultPrefix >+ + address + resultPostfix, resultPrefix.length() + address.length()); > } > Arrays.sort(result); > return result; > } > >+ private int getIndexOfLeftSeparator(String contents, int position) { >+ int i = contents.lastIndexOf(' ', position - 1); >+ i = Math.max(contents.lastIndexOf(',', position - 1), i); >+ return i; >+ } >+ >+ private int getIndexOfRightSeparator(String contents, int position) { >+ int index = contents.length(); >+ int i = contents.indexOf(' ', position); >+ if (i != -1) { >+ index = Math.min(i, index); >+ } >+ i = contents.indexOf(',', position); >+ if (i != -1) { >+ index = Math.min(i, index); >+ } >+ return index; >+ } >+ > private SortedSet<String> getAddressSet() { > if (addressSet != null) { > return addressSet; >Index: src/org/eclipse/mylyn/internal/tasks/ui/PersonContentProposal.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/PersonContentProposal.java,v >retrieving revision 1.6 >diff -u -r1.6 PersonContentProposal.java >--- src/org/eclipse/mylyn/internal/tasks/ui/PersonContentProposal.java 1 Mar 2008 21:38:50 -0000 1.6 >+++ src/org/eclipse/mylyn/internal/tasks/ui/PersonContentProposal.java 28 Mar 2008 06:25:47 -0000 >@@ -8,6 +8,7 @@ > > package org.eclipse.mylyn.internal.tasks.ui; > >+import org.eclipse.core.runtime.Assert; > import org.eclipse.jface.fieldassist.IContentProposal; > import org.eclipse.swt.graphics.Image; > >@@ -20,9 +21,21 @@ > > private boolean isCurrentUser = false; > >- public PersonContentProposal(String address, boolean isCurrentUser) { >+ private final String replacementText; >+ >+ private final int cursorPosition; >+ >+ public PersonContentProposal(String address, boolean isCurrentUser, String replacementText, int cursorPosition) { >+ Assert.isNotNull(address); >+ Assert.isNotNull(replacementText); > this.address = address; > this.isCurrentUser = isCurrentUser; >+ this.replacementText = replacementText; >+ this.cursorPosition = cursorPosition; >+ } >+ >+ public PersonContentProposal(String address, boolean isCurrentUser) { >+ this(address, isCurrentUser, address, address.length()); > } > > public String getLabel() { >@@ -34,11 +47,11 @@ > } > > public int getCursorPosition() { >- return address.length(); >+ return cursorPosition; > } > > public String getContent() { >- return address; >+ return replacementText; > } > > public Image getImage() { >#P org.eclipse.mylyn.tasks.tests >Index: src/org/eclipse/mylyn/tasks/tests/PersonProposalProviderTest.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/PersonProposalProviderTest.java,v >retrieving revision 1.2 >diff -u -r1.2 PersonProposalProviderTest.java >--- src/org/eclipse/mylyn/tasks/tests/PersonProposalProviderTest.java 1 Mar 2008 21:38:41 -0000 1.2 >+++ src/org/eclipse/mylyn/tasks/tests/PersonProposalProviderTest.java 28 Mar 2008 06:25:50 -0000 >@@ -14,6 +14,10 @@ > import org.eclipse.mylyn.internal.tasks.ui.PersonProposalProvider; > import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryTask; > >+/** >+ * @author Frank Becker >+ * @author Steffen Pingel >+ */ > public class PersonProposalProviderTest extends TestCase { > > public void testGetProposalsNullParameters() { >@@ -51,4 +55,87 @@ > assertEquals("foo", result[0].getContent()); > } > >+ public void testGetProposalsMultipleAddresses() { >+ IContentProposal[] result; >+ >+ MockRepositoryTask task = new MockRepositoryTask(null, "1", null); >+ task.setOwner("foo"); >+ PersonProposalProvider provider = new PersonProposalProvider(task, null); >+ >+ result = provider.getProposals("f,xx", 1); >+ assertNotNull(result); >+ assertEquals(1, result.length); >+ assertEquals("foo,xx", result[0].getContent()); >+ assertEquals("foo", result[0].getLabel()); >+ assertEquals(3, result[0].getCursorPosition()); >+ >+ result = provider.getProposals("f xx", 1); >+ assertNotNull(result); >+ assertEquals(1, result.length); >+ assertEquals("foo xx", result[0].getContent()); >+ assertEquals("foo", result[0].getLabel()); >+ assertEquals(3, result[0].getCursorPosition()); >+ >+ result = provider.getProposals("a,xx", 1); >+ assertNotNull(result); >+ assertEquals(0, result.length); >+ >+ result = provider.getProposals("xx,f", 4); >+ assertNotNull(result); >+ assertEquals(1, result.length); >+ assertEquals("xx,foo", result[0].getContent()); >+ assertEquals("foo", result[0].getLabel()); >+ assertEquals(6, result[0].getCursorPosition()); >+ >+ result = provider.getProposals("xx f", 4); >+ assertNotNull(result); >+ assertEquals(1, result.length); >+ assertEquals("xx foo", result[0].getContent()); >+ assertEquals("foo", result[0].getLabel()); >+ assertEquals(6, result[0].getCursorPosition()); >+ >+ result = provider.getProposals("xx,a", 4); >+ assertNotNull(result); >+ assertEquals(0, result.length); >+ >+ result = provider.getProposals("xyz,f,yy", 4); >+ assertNotNull(result); >+ assertEquals(1, result.length); >+ assertEquals("xyz,foo,yy", result[0].getContent()); >+ assertEquals("foo", result[0].getLabel()); >+ assertEquals(7, result[0].getCursorPosition()); >+ >+ result = provider.getProposals("xx f yy", 4); >+ assertNotNull(result); >+ assertEquals(1, result.length); >+ assertEquals("xx foo yy", result[0].getContent()); >+ assertEquals("foo", result[0].getLabel()); >+ assertEquals(6, result[0].getCursorPosition()); >+ >+ result = provider.getProposals("xx,a,yy", 4); >+ assertNotNull(result); >+ assertEquals(0, result.length); >+ >+ result = provider.getProposals("xx,,yy", 3); >+ assertNotNull(result); >+ assertEquals(1, result.length); >+ assertEquals("xx,foo,yy", result[0].getContent()); >+ assertEquals("foo", result[0].getLabel()); >+ assertEquals(6, result[0].getCursorPosition()); >+ >+ result = provider.getProposals("x yy", 2); >+ assertNotNull(result); >+ assertEquals(1, result.length); >+ assertEquals("x foo", result[0].getContent()); >+ assertEquals("foo", result[0].getLabel()); >+ assertEquals(5, result[0].getCursorPosition()); >+ >+ result = provider.getProposals(", ", 1); >+ assertNotNull(result); >+ assertEquals(1, result.length); >+ assertEquals("x,foo ", result[0].getContent()); >+ assertEquals("foo", result[0].getLabel()); >+ assertEquals(5, result[0].getCursorPosition()); >+ } >+ > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 187127
:
92375
|
92376
|
92521
|
92522
|
92524
| 93935 |
93936
|
94077
|
94078
|
94079
|
94124
|
94125
|
94126
|
94127