{"thread":{"id":"12832","subject":"[EGIT PATCH 3/4] Add \"find in references\" to the find toolbar.","startedAt":"2008-03-24T02:57:46Z","lastAt":"2008-03-24T02:57:46Z","messageCount":1,"participants":["Roger C. Soares"],"isPatch":true,"patchVersion":1,"patchTotal":4},"messages":[{"id":"72845","messageId":"1206327466-6521-1-git-send-email-rogersoares@intelinet.com.br","threadId":"12832","inReplyTo":null,"subject":"[EGIT PATCH 3/4] Add \"find in references\" to the find toolbar.","fromName":"Roger C. Soares","fromEmail":"rogersoares@intelinet.com.br","sentAt":"2008-03-24T02:57:46Z","receivedAt":"2008-03-24T02:57:46Z","isPatch":true,"sender":{"key":"rogersoares@intelinet.com.br","avatar":null},"body":"Signed-off-by: Roger C. Soares <rogersoares@intelinet.com.br>\n---\n org.spearce.egit.ui/icons/elcl16/refs.gif          |  Bin 0 -> 340 bytes\n .../src/org/spearce/egit/ui/FindToolbar.java       |   55 ++++++++++++++++++-\n .../src/org/spearce/egit/ui/FindToolbarThread.java |   58 ++++++++++++++++++--\n .../src/org/spearce/egit/ui/GitHistoryPage.java    |    2 +-\n .../src/org/spearce/egit/ui/UIIcons.java           |    3 +\n .../src/org/spearce/egit/ui/UIText.java            |    2 +\n .../src/org/spearce/egit/ui/uitext.properties      |    1 +\n 7 files changed, 114 insertions(+), 7 deletions(-)\n create mode 100644 org.spearce.egit.ui/icons/elcl16/refs.gif\n\ndiff --git a/org.spearce.egit.ui/icons/elcl16/refs.gif b/org.spearce.egit.ui/icons/elcl16/refs.gif\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..f605ae6206a87ac162c1377f7e47d494dda7cb2b\nGIT binary patch\nliteral 340\nzcmZ?wbhEHb6krfwSZcwbmgJ(D<!M+OZdey#(h{>QTVQ3Lz`Dgc9cw*1)_S$C^XypX\nz(Xr06bDdAediTx^?%mt$dUu&s?y8u$%j@pWtd-X?S6$0kbv=F6^^8?FQdZqaTXiFS\nz)y>qkcTzUquG)B~V&k34jdv?H-7DL4uYAL!$W8Z4Hr+4Xe7|_ZGr!GGGB&?)`F*$f\nz_x;Y__q%>Snf?38oIgPHbk6UW>;Al4_xsh_->=sF0iw4%|Kk9PKUo;L80;Bz7=Qre\nzCkD2{1M>?!bfo%EJlS|4$B5tUaIV)}u`brx*W4zb&D#2U!vn3^$s59bZ1Q$S>+IOg\nzAmGu~HnncOzDo#;i=Q96fJUP;BQGZh7Y{cdzpzS&6SJt8gt)YnjHImQRC^XV1qFFU\nXWhFIL^+iG~8#iq(_uA&=$Y2cs2pX!@\n\nliteral 0\nHcmV?d00001\n\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/FindToolbar.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/FindToolbar.java\nindex f744db7..4396cda 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/FindToolbar.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/FindToolbar.java\n@@ -18,6 +18,7 @@ package org.spearce.egit.ui;\n \n import java.util.ArrayList;\n import java.util.List;\n+import java.util.Map;\n \n import org.eclipse.core.runtime.Preferences;\n import org.eclipse.swt.SWT;\n@@ -49,6 +50,8 @@ import org.eclipse.swt.widgets.ToolBar;\n import org.eclipse.swt.widgets.ToolItem;\n import org.eclipse.swt.widgets.Widget;\n import org.eclipse.team.core.history.IFileRevision;\n+import org.spearce.jgit.lib.ObjectId;\n+import org.spearce.jgit.lib.Tag;\n \n /**\n  * A toolbar for the history page.\n@@ -62,6 +65,8 @@ public class FindToolbar extends Composite {\n \n \tprivate static final int PREFS_FINDIN_COMMENTS = 2;\n \n+\tprivate static final int PREFS_FINDIN_REFS = 3;\n+\n \tprivate static final int PREFS_FINDIN_AUTHOR = 4;\n \n \tprivate static final int PREFS_FINDIN_COMMITTER = 5;\n@@ -81,6 +86,10 @@ public class FindToolbar extends Composite {\n \n \tprivate List<IFileRevision> fileRevisions;\n \n+\tprivate Map<ObjectId, Tag[]> tags;\n+\n+\tprivate Map<ObjectId, String[]> branches;\n+\n \tprivate Text patternField;\n \n \tprivate Button nextButton;\n@@ -97,6 +106,8 @@ public class FindToolbar extends Composite {\n \n \tprivate MenuItem commentsItem;\n \n+\tprivate MenuItem refsItem;\n+\n \tprivate MenuItem authorItem;\n \n \tprivate MenuItem committerItem;\n@@ -109,6 +120,8 @@ public class FindToolbar extends Composite {\n \n \tprivate Image commentsIcon;\n \n+\tprivate Image referencesIcon;\n+\n \tprivate Image authorIcon;\n \n \tprivate Image committerIcon;\n@@ -130,6 +143,7 @@ public class FindToolbar extends Composite {\n \t\tpreviousIcon = UIIcons.ELCL16_PREVIOUS.createImage();\n \t\tcommitIdIcon = UIIcons.ELCL16_COMMIT.createImage();\n \t\tcommentsIcon = UIIcons.ELCL16_COMMENTS.createImage();\n+\t\treferencesIcon = UIIcons.ELCL16_REFERENCES.createImage();\n \t\tauthorIcon = UIIcons.ELCL16_AUTHOR.createImage();\n \t\tcommitterIcon = UIIcons.ELCL16_COMMITTER.createImage();\n \n@@ -170,6 +184,8 @@ public class FindToolbar extends Composite {\n \t\tcommitIdItem.setText(\"Revision\");\n \t\tcommentsItem = new MenuItem(prefsMenu, SWT.RADIO);\n \t\tcommentsItem.setText(\"Comments\");\n+\t\trefsItem = new MenuItem(prefsMenu, SWT.RADIO);\n+\t\trefsItem.setText(\"References\");\n \t\tauthorItem = new MenuItem(prefsMenu, SWT.RADIO);\n \t\tauthorItem.setText(\"Author\");\n \t\tcommitterItem = new MenuItem(prefsMenu, SWT.RADIO);\n@@ -189,6 +205,9 @@ public class FindToolbar extends Composite {\n \t\t\t\t\t\tcommentsItem.notifyListeners(SWT.Selection, null);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase PREFS_FINDIN_COMMENTS:\n+\t\t\t\t\t\trefsItem.notifyListeners(SWT.Selection, null);\n+\t\t\t\t\t\tbreak;\n+\t\t\t\t\tcase PREFS_FINDIN_REFS:\n \t\t\t\t\t\tauthorItem.notifyListeners(SWT.Selection, null);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase PREFS_FINDIN_AUTHOR:\n@@ -225,10 +244,13 @@ public class FindToolbar extends Composite {\n \t\t\t\tfinal FindToolbarThread finder = new FindToolbarThread();\n \t\t\t\tfinder.pattern = ((Text) e.getSource()).getText();\n \t\t\t\tfinder.fileRevisions = fileRevisions;\n+\t\t\t\tfinder.tags = tags;\n+\t\t\t\tfinder.branches = branches;\n \t\t\t\tfinder.toolbar = thisToolbar;\n \t\t\t\tfinder.ignoreCase = caseItem.getSelection();\n \t\t\t\tfinder.findInCommitId = commitIdItem.getSelection();\n \t\t\t\tfinder.findInComments = commentsItem.getSelection();\n+\t\t\t\tfinder.findInReferences = refsItem.getSelection();\n \t\t\t\tfinder.findInAuthor = authorItem.getSelection();\n \t\t\t\tfinder.findInCommitter = committerItem.getSelection();\n \t\t\t\tDisplay.getDefault().timerExec(200, new Runnable() {\n@@ -248,10 +270,13 @@ public class FindToolbar extends Composite {\n \t\t\t\t\tfinal FindToolbarThread finder = new FindToolbarThread();\n \t\t\t\t\tfinder.pattern = patternField.getText();\n \t\t\t\t\tfinder.fileRevisions = fileRevisions;\n+\t\t\t\t\tfinder.tags = tags;\n+\t\t\t\t\tfinder.branches = branches;\n \t\t\t\t\tfinder.toolbar = thisToolbar;\n \t\t\t\t\tfinder.ignoreCase = caseItem.getSelection();\n \t\t\t\t\tfinder.findInCommitId = commitIdItem.getSelection();\n \t\t\t\t\tfinder.findInComments = commentsItem.getSelection();\n+\t\t\t\t\tfinder.findInReferences = refsItem.getSelection();\n \t\t\t\t\tfinder.findInAuthor = authorItem.getSelection();\n \t\t\t\t\tfinder.findInCommitter = committerItem.getSelection();\n \t\t\t\t\tfinder.start();\n@@ -339,7 +364,7 @@ public class FindToolbar extends Composite {\n \t\t\tpublic void widgetSelected(SelectionEvent e) {\n \t\t\t\tprefsItem.setImage(commentsIcon);\n \t\t\t\tprefsItem\n-\t\t\t\t\t\t.setToolTipText(UIText.ResourceHistory_findbar_changeto_author);\n+\t\t\t\t\t\t.setToolTipText(UIText.ResourceHistory_findbar_changeto_refs);\n \t\t\t\tprefsItemChanged(PREFS_FINDIN_COMMENTS, commentsItem);\n \t\t\t}\n \t\t});\n@@ -347,6 +372,21 @@ public class FindToolbar extends Composite {\n \t\t\tcommentsItem.setSelection(true);\n \t\t\tprefsItem.setImage(commentsIcon);\n \t\t\tprefsItem\n+\t\t\t\t\t.setToolTipText(UIText.ResourceHistory_findbar_changeto_refs);\n+\t\t}\n+\n+\t\trefsItem.addSelectionListener(new SelectionAdapter() {\n+\t\t\tpublic void widgetSelected(SelectionEvent e) {\n+\t\t\t\tprefsItem.setImage(referencesIcon);\n+\t\t\t\tprefsItem\n+\t\t\t\t\t\t.setToolTipText(UIText.ResourceHistory_findbar_changeto_author);\n+\t\t\t\tprefsItemChanged(PREFS_FINDIN_REFS, refsItem);\n+\t\t\t}\n+\t\t});\n+\t\tif (selectedPrefsItem == PREFS_FINDIN_REFS) {\n+\t\t\trefsItem.setSelection(true);\n+\t\t\tprefsItem.setImage(referencesIcon);\n+\t\t\tprefsItem\n \t\t\t\t\t.setToolTipText(UIText.ResourceHistory_findbar_changeto_author);\n \t\t}\n \n@@ -386,6 +426,7 @@ public class FindToolbar extends Composite {\n \t\tActivator.getDefault().savePluginPreferences();\n \t\tcommitIdItem.setSelection(false);\n \t\tcommentsItem.setSelection(false);\n+\t\trefsItem.setSelection(false);\n \t\tauthorItem.setSelection(false);\n \t\tcommitterItem.setSelection(false);\n \t\titem.setSelection(true);\n@@ -399,6 +440,7 @@ public class FindToolbar extends Composite {\n \t\tpreviousIcon.dispose();\n \t\tcommitIdIcon.dispose();\n \t\tcommentsIcon.dispose();\n+\t\treferencesIcon.dispose();\n \t\tauthorIcon.dispose();\n \t\tcommitterIcon.dispose();\n \t\tsuper.dispose();\n@@ -419,9 +461,18 @@ public class FindToolbar extends Composite {\n \t *\n \t * @param fileRevisions\n \t *            the revision list to be searched\n+\t * @param tags\n+\t *            a map containing the tags that are being displayed in the\n+\t *            history page\n+\t * @param branches\n+\t *            a map containing the branches that are being displayed in the\n+\t *            history page\n \t */\n-\tpublic void setFileRevisions(List<IFileRevision> fileRevisions) {\n+\tpublic void setFileRevisions(List<IFileRevision> fileRevisions,\n+\t\t\tMap<ObjectId, Tag[]> tags, Map<ObjectId, String[]> branches) {\n \t\tthis.fileRevisions = fileRevisions;\n+\t\tthis.tags = tags;\n+\t\tthis.branches = branches;\n \t}\n \n \tvoid progressUpdate(int percent) {\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/FindToolbarThread.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/FindToolbarThread.java\nindex 6a6d72c..097b785 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/FindToolbarThread.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/FindToolbarThread.java\n@@ -17,10 +17,13 @@\n package org.spearce.egit.ui;\n \n import java.util.List;\n+import java.util.Map;\n \n import org.eclipse.swt.widgets.Display;\n import org.eclipse.team.core.history.IFileRevision;\n import org.spearce.egit.core.internal.mapping.GitCommitFileRevision;\n+import org.spearce.jgit.lib.ObjectId;\n+import org.spearce.jgit.lib.Tag;\n \n /**\n  * This class executes the search function for the find toolbar. Only one thread\n@@ -49,6 +52,10 @@ public class FindToolbarThread extends Thread {\n \n \tList<IFileRevision> fileRevisions;\n \n+\tMap<ObjectId, Tag[]> tags;\n+\n+\tMap<ObjectId, String[]> branches;\n+\n \tFindToolbar toolbar;\n \n \tboolean ignoreCase;\n@@ -57,6 +64,8 @@ public class FindToolbarThread extends Thread {\n \n \tboolean findInComments;\n \n+\tboolean findInReferences;\n+\n \tboolean findInAuthor;\n \n \tboolean findInCommitter;\n@@ -78,15 +87,18 @@ public class FindToolbarThread extends Thread {\n \t}\n \n \tpublic void run() {\n-\t\texecFind(currentThreadIx, fileRevisions, pattern, toolbar, ignoreCase,\n-\t\t\t\tfindInCommitId, findInComments, findInAuthor, findInCommitter);\n+\t\texecFind(currentThreadIx, fileRevisions, tags, branches, pattern,\n+\t\t\t\ttoolbar, ignoreCase, findInCommitId, findInComments,\n+\t\t\t\tfindInReferences, findInAuthor, findInCommitter);\n \t}\n \n \tprivate synchronized static void execFind(int threadIx,\n-\t\t\tList<IFileRevision> fileRevisions, final String pattern,\n+\t\t\tList<IFileRevision> fileRevisions, Map<ObjectId, Tag[]> tags,\n+\t\t\tMap<ObjectId, String[]> branches, final String pattern,\n \t\t\tfinal FindToolbar toolbar, boolean ignoreCase,\n \t\t\tboolean findInCommitId, boolean findInComments,\n-\t\t\tboolean findInAuthor, boolean findInCommitter) {\n+\t\t\tboolean findInReferences, boolean findInAuthor,\n+\t\t\tboolean findInCommitter) {\n \t\t// If it isn't the last event, just ignore it.\n \t\tif (threadIx < globalThreadIx) {\n \t\t\treturn;\n@@ -161,6 +173,44 @@ public class FindToolbarThread extends Thread {\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \n+\t\t\t\t\tif (findInReferences && notFound) {\n+\t\t\t\t\t\tTag[] tagArray = tags.get(revision.getCommitId());\n+\t\t\t\t\t\tif (tagArray != null) {\n+\t\t\t\t\t\t\tfor (Tag tag : tagArray) {\n+\t\t\t\t\t\t\t\tString tagName = tag.getTag();\n+\t\t\t\t\t\t\t\tif (ignoreCase) {\n+\t\t\t\t\t\t\t\t\ttagName = tagName.toLowerCase();\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\tif (tagName.indexOf(findPattern) != -1) {\n+\t\t\t\t\t\t\t\t\ttotalMatches++;\n+\t\t\t\t\t\t\t\t\tfindResults.add(i);\n+\t\t\t\t\t\t\t\t\tnotFound = false;\n+\t\t\t\t\t\t\t\t\tbreak;\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t}\n+\t\t\t\t\t\tif (notFound) {\n+\t\t\t\t\t\t\tString[] branchNameArray = branches.get(revision\n+\t\t\t\t\t\t\t\t\t.getCommitId());\n+\t\t\t\t\t\t\tif (branchNameArray != null) {\n+\t\t\t\t\t\t\t\tfor (String branchName : branchNameArray) {\n+\t\t\t\t\t\t\t\t\tif (branchName.startsWith(\"refs/heads/\")) {\n+\t\t\t\t\t\t\t\t\t\tbranchName = branchName.substring(11);\n+\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\tif (ignoreCase) {\n+\t\t\t\t\t\t\t\t\t\tbranchName = branchName.toLowerCase();\n+\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\tif (branchName.indexOf(findPattern) != -1) {\n+\t\t\t\t\t\t\t\t\t\ttotalMatches++;\n+\t\t\t\t\t\t\t\t\t\tfindResults.add(i);\n+\t\t\t\t\t\t\t\t\t\tnotFound = false;\n+\t\t\t\t\t\t\t\t\t\tbreak;\n+\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\n \t\t\t\t\tif (findInAuthor && notFound) {\n \t\t\t\t\t\tString author = revision.getCommit().getAuthor()\n \t\t\t\t\t\t\t\t.getName();\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java\nindex 5da095b..d0346a9 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java\n@@ -842,7 +842,7 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t\t\t\t\t\t\t\tmonitor,\n \t\t\t\t\t\t\t\tisShowAllRepoVersions());\n \t\t\t\tfileRevisions = Collections.synchronizedList(fileHistoryFor.getFileRevisionsList());\n-\t\t\t\tfindToolbar.setFileRevisions(fileRevisions);\n+\t\t\t\tfindToolbar.setFileRevisions(fileRevisions, newtags, branches);\n \t\t\t\tDisplay.getDefault().syncExec(new Runnable() {\n \t\t\t\t\tpublic void run() {\n \t\t\t\t\t\tif (findToolbar.isDisposed()) {\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIIcons.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIIcons.java\nindex 33edcec..a04bb5c 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIIcons.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIIcons.java\n@@ -50,6 +50,8 @@ public class UIIcons {\n \tpublic static final ImageDescriptor ELCL16_COMMIT;\n \t/** Comments icon */\n \tpublic static final ImageDescriptor ELCL16_COMMENTS;\n+\t/** References icon */\n+\tpublic static final ImageDescriptor ELCL16_REFERENCES;\n \t/** Author icon */\n \tpublic static final ImageDescriptor ELCL16_AUTHOR;\n \t/** Committer icon */\n@@ -69,6 +71,7 @@ public class UIIcons {\n \t\tELCL16_PREVIOUS = map(\"elcl16/previous.gif\");\n \t\tELCL16_COMMIT = map(\"elcl16/commit.gif\");\n \t\tELCL16_COMMENTS = map(\"elcl16/comment.gif\");\n+\t\tELCL16_REFERENCES = map(\"elcl16/refs.gif\");\n \t\tELCL16_AUTHOR = map(\"elcl16/author.gif\");\n \t\tELCL16_COMMITTER = map(\"elcl16/committer.gif\");\n \t}\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java\nindex 318c12a..87a6b67 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java\n@@ -67,6 +67,8 @@ public class UIText extends NLS {\n \t/** */\n \tpublic static String ResourceHistory_findbar_changeto_comments;\n \t/** */\n+\tpublic static String ResourceHistory_findbar_changeto_refs;\n+\t/** */\n \tpublic static String ResourceHistory_findbar_changeto_author;\n \t/** */\n \tpublic static String ResourceHistory_findbar_changeto_committer;\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties\nindex 7bbca5f..da8e88b 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties\n@@ -36,5 +36,6 @@ ResourceHistory_toggleTooltips=Show Revision Tooltip\n \n ResourceHistory_findbar_changeto_commit=Change to Revision\n ResourceHistory_findbar_changeto_comments=Change to Comments\n+ResourceHistory_findbar_changeto_refs=Change to References\n ResourceHistory_findbar_changeto_author=Change to Author\n ResourceHistory_findbar_changeto_committer=Change to Committer\n-- \n1.5.4.1\n"}]}