Signed-off-by: Roger C. Soares <rogersoares@intelinet.com.br>
---
org.spearce.egit.ui/icons/elcl16/refs.gif | Bin 0 -> 340 bytes
.../src/org/spearce/egit/ui/FindToolbar.java | 55 ++++++++++++++++++-
.../src/org/spearce/egit/ui/FindToolbarThread.java | 58 ++++++++++++++++++--
.../src/org/spearce/egit/ui/GitHistoryPage.java | 2 +-
.../src/org/spearce/egit/ui/UIIcons.java | 3 +
.../src/org/spearce/egit/ui/UIText.java | 2 +
.../src/org/spearce/egit/ui/uitext.properties | 1 +
7 files changed, 114 insertions(+), 7 deletions(-)
create mode 100644 org.spearce.egit.ui/icons/elcl16/refs.gif
diff --git a/org.spearce.egit.ui/icons/elcl16/refs.gif b/org.spearce.egit.ui/icons/elcl16/refs.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f605ae6206a87ac162c1377f7e47d494dda7cb2b
GIT binary patch
literal 340
zcmZ?wbhEHb6krfwSZcwbmgJ(D<!M+OZdey#(h{>QTVQ3Lz`Dgc9cw*1)_S$C^XypX
z(Xr06bDdAediTx^?%mt$dUu&s?y8u$%j@pWtd-X?S6$0kbv=F6^^8?FQdZqaTXiFS
z)y>qkcTzUquG)B~V&k34jdv?H-7DL4uYAL!$W8Z4Hr+4Xe7|_ZGr!GGGB&?)`F*$f
z_x;Y__q%>Snf?38oIgPHbk6UW>;Al4_xsh_->=sF0iw4%|Kk9PKUo;L80;Bz7=Qre
zCkD2{1M>?!bfo%EJlS|4$B5tUaIV)}u`brx*W4zb&D#2U!vn3^$s59bZ1Q$S>+IOg
zAmGu~HnncOzDo#;i=Q96fJUP;BQGZh7Y{cdzpzS&6SJt8gt)YnjHImQRC^XV1qFFU
XWhFIL^+iG~8#iq(_uA&=$Y2cs2pX!@
literal 0
HcmV?d00001
diff --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
index f744db7..4396cda 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/FindToolbar.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/FindToolbar.java
@@ -18,6 +18,7 @@ package org.spearce.egit.ui;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import org.eclipse.core.runtime.Preferences;
import org.eclipse.swt.SWT;
@@ -49,6 +50,8 @@ import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.widgets.Widget;
import org.eclipse.team.core.history.IFileRevision;
+import org.spearce.jgit.lib.ObjectId;
+import org.spearce.jgit.lib.Tag;
/**
* A toolbar for the history page.
@@ -62,6 +65,8 @@ public class FindToolbar extends Composite {
private static final int PREFS_FINDIN_COMMENTS = 2;
+ private static final int PREFS_FINDIN_REFS = 3;
+
private static final int PREFS_FINDIN_AUTHOR = 4;
private static final int PREFS_FINDIN_COMMITTER = 5;
@@ -81,6 +86,10 @@ public class FindToolbar extends Composite {
private List<IFileRevision> fileRevisions;
+ private Map<ObjectId, Tag[]> tags;
+
+ private Map<ObjectId, String[]> branches;
+
private Text patternField;
private Button nextButton;
@@ -97,6 +106,8 @@ public class FindToolbar extends Composite {
private MenuItem commentsItem;
+ private MenuItem refsItem;
+
private MenuItem authorItem;
private MenuItem committerItem;
@@ -109,6 +120,8 @@ public class FindToolbar extends Composite {
private Image commentsIcon;
+ private Image referencesIcon;
+
private Image authorIcon;
private Image committerIcon;
@@ -130,6 +143,7 @@ public class FindToolbar extends Composite {
previousIcon = UIIcons.ELCL16_PREVIOUS.createImage();
commitIdIcon = UIIcons.ELCL16_COMMIT.createImage();
commentsIcon = UIIcons.ELCL16_COMMENTS.createImage();
+ referencesIcon = UIIcons.ELCL16_REFERENCES.createImage();
authorIcon = UIIcons.ELCL16_AUTHOR.createImage();
committerIcon = UIIcons.ELCL16_COMMITTER.createImage();
@@ -170,6 +184,8 @@ public class FindToolbar extends Composite {
commitIdItem.setText("Revision");
commentsItem = new MenuItem(prefsMenu, SWT.RADIO);
commentsItem.setText("Comments");
+ refsItem = new MenuItem(prefsMenu, SWT.RADIO);
+ refsItem.setText("References");
authorItem = new MenuItem(prefsMenu, SWT.RADIO);
authorItem.setText("Author");
committerItem = new MenuItem(prefsMenu, SWT.RADIO);
@@ -189,6 +205,9 @@ public class FindToolbar extends Composite {
commentsItem.notifyListeners(SWT.Selection, null);
break;
case PREFS_FINDIN_COMMENTS:
+ refsItem.notifyListeners(SWT.Selection, null);
+ break;
+ case PREFS_FINDIN_REFS:
authorItem.notifyListeners(SWT.Selection, null);
break;
case PREFS_FINDIN_AUTHOR:
@@ -225,10 +244,13 @@ public class FindToolbar extends Composite {
final FindToolbarThread finder = new FindToolbarThread();
finder.pattern = ((Text) e.getSource()).getText();
finder.fileRevisions = fileRevisions;
+ finder.tags = tags;
+ finder.branches = branches;
finder.toolbar = thisToolbar;
finder.ignoreCase = caseItem.getSelection();
finder.findInCommitId = commitIdItem.getSelection();
finder.findInComments = commentsItem.getSelection();
+ finder.findInReferences = refsItem.getSelection();
finder.findInAuthor = authorItem.getSelection();
finder.findInCommitter = committerItem.getSelection();
Display.getDefault().timerExec(200, new Runnable() {
@@ -248,10 +270,13 @@ public class FindToolbar extends Composite {
final FindToolbarThread finder = new FindToolbarThread();
finder.pattern = patternField.getText();
finder.fileRevisions = fileRevisions;
+ finder.tags = tags;
+ finder.branches = branches;
finder.toolbar = thisToolbar;
finder.ignoreCase = caseItem.getSelection();
finder.findInCommitId = commitIdItem.getSelection();
finder.findInComments = commentsItem.getSelection();
+ finder.findInReferences = refsItem.getSelection();
finder.findInAuthor = authorItem.getSelection();
finder.findInCommitter = committerItem.getSelection();
finder.start();
@@ -339,7 +364,7 @@ public class FindToolbar extends Composite {
public void widgetSelected(SelectionEvent e) {
prefsItem.setImage(commentsIcon);
prefsItem
- .setToolTipText(UIText.ResourceHistory_findbar_changeto_author);
+ .setToolTipText(UIText.ResourceHistory_findbar_changeto_refs);
prefsItemChanged(PREFS_FINDIN_COMMENTS, commentsItem);
}
});
@@ -347,6 +372,21 @@ public class FindToolbar extends Composite {
commentsItem.setSelection(true);
prefsItem.setImage(commentsIcon);
prefsItem
+ .setToolTipText(UIText.ResourceHistory_findbar_changeto_refs);
+ }
+
+ refsItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ prefsItem.setImage(referencesIcon);
+ prefsItem
+ .setToolTipText(UIText.ResourceHistory_findbar_changeto_author);
+ prefsItemChanged(PREFS_FINDIN_REFS, refsItem);
+ }
+ });
+ if (selectedPrefsItem == PREFS_FINDIN_REFS) {
+ refsItem.setSelection(true);
+ prefsItem.setImage(referencesIcon);
+ prefsItem
.setToolTipText(UIText.ResourceHistory_findbar_changeto_author);
}
@@ -386,6 +426,7 @@ public class FindToolbar extends Composite {
Activator.getDefault().savePluginPreferences();
commitIdItem.setSelection(false);
commentsItem.setSelection(false);
+ refsItem.setSelection(false);
authorItem.setSelection(false);
committerItem.setSelection(false);
item.setSelection(true);
@@ -399,6 +440,7 @@ public class FindToolbar extends Composite {
previousIcon.dispose();
commitIdIcon.dispose();
commentsIcon.dispose();
+ referencesIcon.dispose();
authorIcon.dispose();
committerIcon.dispose();
super.dispose();
@@ -419,9 +461,18 @@ public class FindToolbar extends Composite {
*
* @param fileRevisions
* the revision list to be searched
+ * @param tags
+ * a map containing the tags that are being displayed in the
+ * history page
+ * @param branches
+ * a map containing the branches that are being displayed in the
+ * history page
*/
- public void setFileRevisions(List<IFileRevision> fileRevisions) {
+ public void setFileRevisions(List<IFileRevision> fileRevisions,
+ Map<ObjectId, Tag[]> tags, Map<ObjectId, String[]> branches) {
this.fileRevisions = fileRevisions;
+ this.tags = tags;
+ this.branches = branches;
}
void progressUpdate(int percent) {
diff --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
index 6a6d72c..097b785 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/FindToolbarThread.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/FindToolbarThread.java
@@ -17,10 +17,13 @@
package org.spearce.egit.ui;
import java.util.List;
+import java.util.Map;
import org.eclipse.swt.widgets.Display;
import org.eclipse.team.core.history.IFileRevision;
import org.spearce.egit.core.internal.mapping.GitCommitFileRevision;
+import org.spearce.jgit.lib.ObjectId;
+import org.spearce.jgit.lib.Tag;
/**
* This class executes the search function for the find toolbar. Only one thread
@@ -49,6 +52,10 @@ public class FindToolbarThread extends Thread {
List<IFileRevision> fileRevisions;
+ Map<ObjectId, Tag[]> tags;
+
+ Map<ObjectId, String[]> branches;
+
FindToolbar toolbar;
boolean ignoreCase;
@@ -57,6 +64,8 @@ public class FindToolbarThread extends Thread {
boolean findInComments;
+ boolean findInReferences;
+
boolean findInAuthor;
boolean findInCommitter;
@@ -78,15 +87,18 @@ public class FindToolbarThread extends Thread {
}
public void run() {
- execFind(currentThreadIx, fileRevisions, pattern, toolbar, ignoreCase,
- findInCommitId, findInComments, findInAuthor, findInCommitter);
+ execFind(currentThreadIx, fileRevisions, tags, branches, pattern,
+ toolbar, ignoreCase, findInCommitId, findInComments,
+ findInReferences, findInAuthor, findInCommitter);
}
private synchronized static void execFind(int threadIx,
- List<IFileRevision> fileRevisions, final String pattern,
+ List<IFileRevision> fileRevisions, Map<ObjectId, Tag[]> tags,
+ Map<ObjectId, String[]> branches, final String pattern,
final FindToolbar toolbar, boolean ignoreCase,
boolean findInCommitId, boolean findInComments,
- boolean findInAuthor, boolean findInCommitter) {
+ boolean findInReferences, boolean findInAuthor,
+ boolean findInCommitter) {
// If it isn't the last event, just ignore it.
if (threadIx < globalThreadIx) {
return;
@@ -161,6 +173,44 @@ public class FindToolbarThread extends Thread {
}
}
+ if (findInReferences && notFound) {
+ Tag[] tagArray = tags.get(revision.getCommitId());
+ if (tagArray != null) {
+ for (Tag tag : tagArray) {
+ String tagName = tag.getTag();
+ if (ignoreCase) {
+ tagName = tagName.toLowerCase();
+ }
+ if (tagName.indexOf(findPattern) != -1) {
+ totalMatches++;
+ findResults.add(i);
+ notFound = false;
+ break;
+ }
+ }
+ }
+ if (notFound) {
+ String[] branchNameArray = branches.get(revision
+ .getCommitId());
+ if (branchNameArray != null) {
+ for (String branchName : branchNameArray) {
+ if (branchName.startsWith("refs/heads/")) {
+ branchName = branchName.substring(11);
+ }
+ if (ignoreCase) {
+ branchName = branchName.toLowerCase();
+ }
+ if (branchName.indexOf(findPattern) != -1) {
+ totalMatches++;
+ findResults.add(i);
+ notFound = false;
+ break;
+ }
+ }
+ }
+ }
+ }
+
if (findInAuthor && notFound) {
String author = revision.getCommit().getAuthor()
.getName();
diff --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
index 5da095b..d0346a9 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java
@@ -842,7 +842,7 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,
monitor,
isShowAllRepoVersions());
fileRevisions = Collections.synchronizedList(fileHistoryFor.getFileRevisionsList());
- findToolbar.setFileRevisions(fileRevisions);
+ findToolbar.setFileRevisions(fileRevisions, newtags, branches);
Display.getDefault().syncExec(new Runnable() {
public void run() {
if (findToolbar.isDisposed()) {
diff --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
index 33edcec..a04bb5c 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIIcons.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIIcons.java
@@ -50,6 +50,8 @@ public class UIIcons {
public static final ImageDescriptor ELCL16_COMMIT;
/** Comments icon */
public static final ImageDescriptor ELCL16_COMMENTS;
+ /** References icon */
+ public static final ImageDescriptor ELCL16_REFERENCES;
/** Author icon */
public static final ImageDescriptor ELCL16_AUTHOR;
/** Committer icon */
@@ -69,6 +71,7 @@ public class UIIcons {
ELCL16_PREVIOUS = map("elcl16/previous.gif");
ELCL16_COMMIT = map("elcl16/commit.gif");
ELCL16_COMMENTS = map("elcl16/comment.gif");
+ ELCL16_REFERENCES = map("elcl16/refs.gif");
ELCL16_AUTHOR = map("elcl16/author.gif");
ELCL16_COMMITTER = map("elcl16/committer.gif");
}
diff --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
index 318c12a..87a6b67 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java
@@ -67,6 +67,8 @@ public class UIText extends NLS {
/** */
public static String ResourceHistory_findbar_changeto_comments;
/** */
+ public static String ResourceHistory_findbar_changeto_refs;
+ /** */
public static String ResourceHistory_findbar_changeto_author;
/** */
public static String ResourceHistory_findbar_changeto_committer;
diff --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
index 7bbca5f..da8e88b 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties
@@ -36,5 +36,6 @@ ResourceHistory_toggleTooltips=Show Revision Tooltip
ResourceHistory_findbar_changeto_commit=Change to Revision
ResourceHistory_findbar_changeto_comments=Change to Comments
+ResourceHistory_findbar_changeto_refs=Change to References
ResourceHistory_findbar_changeto_author=Change to Author
ResourceHistory_findbar_changeto_committer=Change to Committer
--
1.5.4.1
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html