Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn2011-07-10 00:17:19 +0000
committerCode Review2011-07-10 00:17:19 +0000
commit6479ec6ceafc68c3226b9853e05c0d3041bf311b (patch)
tree43677ede6c12d8f7449843614d34911fb6c20861
parent9246d623fc99eef9188e69b84919f5c86b13f36c (diff)
parent4c7496e26e4207038e8876569a68722c431b84e4 (diff)
downloadegit-6479ec6ceafc68c3226b9853e05c0d3041bf311b.tar.gz
egit-6479ec6ceafc68c3226b9853e05c0d3041bf311b.tar.xz
egit-6479ec6ceafc68c3226b9853e05c0d3041bf311b.zip
Merge "Add more information to merge and fetch results dialogs."
-rw-r--r--org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/FetchAndMergeActionTest.java11
-rw-r--r--org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewFetchAndPushTest.java11
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java9
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIUtils.java20
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/RepositoryCommit.java53
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchResultDialog.java28
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchResultTable.java523
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FileDiff.java13
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/merge/MergeResultDialog.java84
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/pull/PullResultDialog.java20
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties9
11 files changed, 522 insertions, 259 deletions
diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/FetchAndMergeActionTest.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/FetchAndMergeActionTest.java
index 63704df1ba..f39bf8a630 100644
--- a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/FetchAndMergeActionTest.java
+++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/FetchAndMergeActionTest.java
@@ -31,7 +31,6 @@ import org.eclipse.osgi.util.NLS;
import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotPerspective;
import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -95,10 +94,10 @@ public class FetchAndMergeActionTest extends LocalRepositoryTestCase {
ConfigConstants.CONFIG_KEY_URL);
SWTBotShell confirm = bot.shell(NLS.bind(
UIText.FetchResultDialog_title, uri));
- SWTBotTable table = confirm.bot().table();
- String branch = table.getTableItem(0).getText(2);
- assertTrue("Wrong result", previousCommit.startsWith(branch.substring(
- 0, 7)));
+ SWTBotTree tree = confirm.bot().tree();
+ String branch = tree.getAllItems()[0].getText();
+ assertTrue("Wrong result",
+ branch.contains(previousCommit.substring(0, 7)));
confirm.close();
@@ -109,7 +108,7 @@ public class FetchAndMergeActionTest extends LocalRepositoryTestCase {
fetchDialog.bot().button(IDialogConstants.NEXT_LABEL).click();
fetchDialog.bot().button(IDialogConstants.FINISH_LABEL).click();
confirm = bot.shell(NLS.bind(UIText.FetchResultDialog_title, uri));
- int count = confirm.bot().table().rowCount();
+ int count = confirm.bot().tree().rowCount();
confirm.close();
diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewFetchAndPushTest.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewFetchAndPushTest.java
index 9c4f9c9575..fd3d8631f9 100644
--- a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewFetchAndPushTest.java
+++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewFetchAndPushTest.java
@@ -31,6 +31,7 @@ import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -195,7 +196,7 @@ public class GitRepositoriesViewFetchAndPushTest extends
.getPluginLocalizedValue("SimpleFetchCommand"));
SWTBotShell confirm = bot.shell(dialogTitle);
- assertEquals("Wrong result table row count", 0, confirm.bot().table()
+ assertEquals("Wrong result tree row count", 0, confirm.bot().tree()
.rowCount());
confirm.close();
@@ -225,10 +226,10 @@ public class GitRepositoriesViewFetchAndPushTest extends
TestUtil.joinJobs(JobFamilies.FETCH);
confirm = bot.shell(dialogTitle);
- SWTBotTable table = confirm.bot().table();
+ SWTBotTreeItem[] treeItems = confirm.bot().tree().getAllItems();
boolean found = false;
- for (int i = 0; i < table.rowCount(); i++) {
- found = table.getTableItem(i).getText(2).startsWith(objid);
+ for (SWTBotTreeItem item : treeItems) {
+ found = item.getText().contains(objid);
if (found)
break;
}
@@ -241,7 +242,7 @@ public class GitRepositoriesViewFetchAndPushTest extends
.getPluginLocalizedValue("SimpleFetchCommand"));
confirm = bot.shell(dialogTitle);
- assertEquals("Wrong result table row count", 0, confirm.bot().table()
+ assertEquals("Wrong result tree row count", 0, confirm.bot().tree()
.rowCount());
}
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java
index c6643a8209..4be6bb8be9 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java
@@ -889,6 +889,9 @@ public class UIText extends NLS {
public static String RepositoryAction_multiRepoSelectionTitle;
/** */
+ public static String RepositoryCommit_UserAndDate;
+
+ /** */
public static String RepositorySearchDialog_browse;
/** */
@@ -2236,13 +2239,13 @@ public class UIText extends NLS {
public static String FetchResultDialog_title;
/** */
- public static String FetchResultTable_columnDst;
+ public static String FetchResultTable_collapseAll;
/** */
- public static String FetchResultTable_columnSrc;
+ public static String FetchResultTable_counterCommits;
/** */
- public static String FetchResultTable_columnStatus;
+ public static String FetchResultTable_expandAll;
/** */
public static String FetchResultTable_statusDetailCouldntLock;
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIUtils.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIUtils.java
index 6c2e21067f..70a373c4df 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIUtils.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIUtils.java
@@ -15,6 +15,7 @@ import java.util.List;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
+import org.eclipse.core.runtime.Path;
import org.eclipse.egit.ui.internal.components.RefContentProposal;
import org.eclipse.jface.bindings.keys.KeyStroke;
import org.eclipse.jface.bindings.keys.ParseException;
@@ -26,6 +27,7 @@ import org.eclipse.jface.fieldassist.IContentProposal;
import org.eclipse.jface.fieldassist.IContentProposalProvider;
import org.eclipse.jface.fieldassist.TextContentAdapter;
import org.eclipse.jface.resource.FontRegistry;
+import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.osgi.util.NLS;
@@ -38,6 +40,7 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Widget;
+import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
/**
@@ -430,4 +433,21 @@ public class UIUtils {
});
}
+ /**
+ * Get editor image for path
+ *
+ * @param path
+ * @return image descriptor
+ */
+ public static ImageDescriptor getEditorImage(final String path) {
+ if (path != null && path.length() > 0) {
+ final String name = new Path(path).lastSegment();
+ if (name != null)
+ return PlatformUI.getWorkbench().getEditorRegistry()
+ .getImageDescriptor(name);
+ }
+ return PlatformUI.getWorkbench().getSharedImages()
+ .getImageDescriptor(ISharedImages.IMG_OBJ_FILE);
+ }
+
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/RepositoryCommit.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/RepositoryCommit.java
index 5fa5a9d59b..610da0cace 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/RepositoryCommit.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/RepositoryCommit.java
@@ -11,17 +11,24 @@
package org.eclipse.egit.ui.internal.commit;
import java.io.IOException;
+import java.text.DateFormat;
+import java.text.MessageFormat;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.PlatformObject;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.UIIcons;
+import org.eclipse.egit.ui.UIText;
import org.eclipse.egit.ui.internal.history.FileDiff;
import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.notes.Note;
@@ -29,7 +36,7 @@ import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.treewalk.TreeWalk;
import org.eclipse.jgit.treewalk.filter.TreeFilter;
-import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.model.WorkbenchAdapter;
/**
* Class that encapsulates a particular {@link Repository} instance and
@@ -38,8 +45,24 @@ import org.eclipse.ui.model.IWorkbenchAdapter;
* This class computes and provides access to the {@link FileDiff} objects
* introduced by the commit.
*/
-public class RepositoryCommit extends PlatformObject implements
- IWorkbenchAdapter {
+public class RepositoryCommit extends WorkbenchAdapter implements IAdaptable {
+
+ private static DateFormat FORMAT = DateFormat.getDateTimeInstance(
+ DateFormat.MEDIUM, DateFormat.SHORT);
+
+ /**
+ * Format commit date
+ *
+ * @param date
+ * @return date string
+ */
+ public static String formatDate(final Date date) {
+ if (date == null)
+ return ""; //$NON-NLS-1$
+ synchronized (FORMAT) {
+ return FORMAT.format(date);
+ }
+ }
/**
* NAME_LENGTH
@@ -67,9 +90,6 @@ public class RepositoryCommit extends PlatformObject implements
this.commit = commit;
}
- /**
- * @see org.eclipse.core.runtime.PlatformObject#getAdapter(java.lang.Class)
- */
public Object getAdapter(Class adapter) {
if (Repository.class == adapter)
return repository;
@@ -77,7 +97,7 @@ public class RepositoryCommit extends PlatformObject implements
if (RevCommit.class == adapter)
return commit;
- return super.getAdapter(adapter);
+ return Platform.getAdapterManager().getAdapter(this, adapter);
}
/**
@@ -191,4 +211,21 @@ public class RepositoryCommit extends PlatformObject implements
return null;
}
+ public StyledString getStyledText(Object object) {
+ StyledString styled = new StyledString();
+ styled.append(abbreviate());
+ styled.append(": "); //$NON-NLS-1$
+ styled.append(commit.getShortMessage());
+
+ PersonIdent person = commit.getAuthorIdent();
+ if (person == null)
+ person = commit.getCommitterIdent();
+ if (person != null)
+ styled.append(MessageFormat.format(
+ UIText.RepositoryCommit_UserAndDate, person.getName(),
+ formatDate(person.getWhen())),
+ StyledString.QUALIFIER_STYLER);
+ return styled;
+ }
+
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchResultDialog.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchResultDialog.java
index b13e72ae95..ec3a8245f1 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchResultDialog.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchResultDialog.java
@@ -14,11 +14,11 @@ import org.eclipse.egit.ui.UIText;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
+import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.transport.FetchResult;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
@@ -133,20 +133,28 @@ public class FetchResultDialog extends TitleAreaDialog {
sourceString));
}
- final FetchResultTable table = new FetchResultTable(composite);
- if (result.getFetchResult() != null)
- table.setData(localDb, result.getFetchResult());
- final Control tableControl = table.getControl();
- final GridData tableLayout = new GridData(SWT.FILL, SWT.FILL, true,
- true);
- tableLayout.widthHint = 600;
- tableLayout.heightHint = 300;
- tableControl.setLayoutData(tableLayout);
+ createFetchResultTable(composite);
applyDialogFont(composite);
return composite;
}
+ /**
+ * Create fetch result table under given parent composite
+ *
+ * @param parent
+ * @return main result table control
+ */
+ public Control createFetchResultTable(Composite parent) {
+ final FetchResultTable table = new FetchResultTable(parent);
+ if (result.getFetchResult() != null)
+ table.setData(localDb, result.getFetchResult());
+ final Control tableControl = table.getControl();
+ GridDataFactory.fillDefaults().grab(true, true).hint(600, 300)
+ .applyTo(tableControl);
+ return table.getControl();
+ }
+
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchResultTable.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchResultTable.java
index 52b0c4853d..eea5356ddb 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchResultTable.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchResultTable.java
@@ -1,238 +1,411 @@
package org.eclipse.egit.ui.internal.fetch;
import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import org.eclipse.egit.ui.Activator;
+import org.eclipse.egit.ui.UIIcons;
import org.eclipse.egit.ui.UIText;
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.egit.ui.UIUtils;
+import org.eclipse.egit.ui.internal.commit.CommitEditor;
+import org.eclipse.egit.ui.internal.commit.RepositoryCommit;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IOpenListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.OpenEvent;
+import org.eclipse.jface.viewers.StyledString;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectReader;
-import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.lib.Repository;
-import org.eclipse.jgit.lib.RefUpdate.Result;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.FetchResult;
import org.eclipse.jgit.transport.TrackingRefUpdate;
-import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.model.WorkbenchAdapter;
+import org.eclipse.ui.model.WorkbenchContentProvider;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
/**
* Component displaying table with results of fetch operation.
*/
class FetchResultTable {
- private static final int TABLE_PREFERRED_HEIGHT = 600;
- private static final int TABLE_PREFERRED_WIDTH = 300;
+ private class FetchResultAdapter extends WorkbenchAdapter {
+
+ private final TrackingRefUpdate update;
+
+ private Object[] children;
+
+ public FetchResultAdapter(TrackingRefUpdate update) {
+ this.update = update;
+ }
+
+ public String getLabel(Object object) {
+ return getStyledText(object).getString();
+ }
+
+ public ImageDescriptor getImageDescriptor(Object object) {
+ switch (update.getResult()) {
+ case IO_FAILURE:
+ case LOCK_FAILURE:
+ case REJECTED_CURRENT_BRANCH:
+ case REJECTED:
+ return PlatformUI.getWorkbench().getSharedImages()
+ .getImageDescriptor(ISharedImages.IMG_OBJS_ERROR_TSK);
+ case FORCED:
+ case RENAMED:
+ case FAST_FORWARD:
+ if (update.getRemoteName().startsWith(Constants.R_HEADS))
+ return UIIcons.BRANCH;
+ if (update.getLocalName().startsWith(Constants.R_TAGS))
+ return UIIcons.TAG;
+ if (update.getLocalName().startsWith(Constants.R_NOTES))
+ return UIIcons.NOTE;
+ break;
+ case NEW:
+ if (update.getRemoteName().startsWith(Constants.R_HEADS))
+ return UIIcons.CREATE_BRANCH;
+ if (update.getLocalName().startsWith(Constants.R_TAGS))
+ return UIIcons.CREATE_TAG;
+ if (update.getLocalName().startsWith(Constants.R_NOTES))
+ return UIIcons.NOTE;
+ break;
+ default:
+ return super.getImageDescriptor(object);
+ }
+ return super.getImageDescriptor(object);
+ }
+
+ private void addCommits(StyledString styled, String separator) {
+ styled.append('[', StyledString.DECORATIONS_STYLER);
+ styled.append(safeAbbreviate(update.getNewObjectId()),
+ StyledString.DECORATIONS_STYLER);
+ styled.append(separator, StyledString.DECORATIONS_STYLER);
+ styled.append(safeAbbreviate(update.getOldObjectId()),
+ StyledString.DECORATIONS_STYLER);
+ styled.append(']', StyledString.DECORATIONS_STYLER);
+
+ styled.append(MessageFormat.format(
+ UIText.FetchResultTable_counterCommits,
+ Integer.valueOf(getChildren(this).length)),
+ StyledString.COUNTER_STYLER);
+ }
+
+ public Object[] getChildren(Object object) {
+ if (children != null)
+ return children;
+
+ switch (update.getResult()) {
+ case FORCED:
+ case FAST_FORWARD:
+ RevWalk walk = new RevWalk(reader);
+ try {
+ walk.setRetainBody(true);
+ walk.markStart(walk.parseCommit(update.getNewObjectId()));
+ walk.markUninteresting(walk.parseCommit(update
+ .getOldObjectId()));
+ List<RepositoryCommit> commits = new ArrayList<RepositoryCommit>();
+ for (RevCommit commit : walk)
+ commits.add(new RepositoryCommit(repo, commit));
+ children = commits.toArray();
+ break;
+ } catch (IOException e) {
+ Activator.logError(
+ "Error parsing commits from fetch result", e); //$NON-NLS-1$
+ } finally {
+ walk.release();
+ }
+ //$FALL-THROUGH$
+ default:
+ children = super.getChildren(object);
+ }
+ return children;
+ }
+
+ public StyledString getStyledText(Object object) {
+ StyledString styled = new StyledString();
+ final String remote = update.getRemoteName();
+ final String local = update.getLocalName();
+ styled.append(Repository.shortenRefName(remote));
+ styled.append(" : ", StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
+ styled.append(Repository.shortenRefName(local),
+ StyledString.QUALIFIER_STYLER);
+ styled.append(' ');
+ switch (update.getResult()) {
+ case LOCK_FAILURE:
+ styled.append(UIText.FetchResultTable_statusLockFailure,
+ StyledString.DECORATIONS_STYLER);
+ break;
+ case IO_FAILURE:
+ styled.append(UIText.FetchResultTable_statusIOError,
+ StyledString.DECORATIONS_STYLER);
+ break;
+ case NEW:
+ if (remote.startsWith(Constants.R_HEADS))
+ styled.append(UIText.FetchResultTable_statusNewBranch,
+ StyledString.DECORATIONS_STYLER);
+ else if (local.startsWith(Constants.R_TAGS))
+ styled.append(UIText.FetchResultTable_statusNewTag,
+ StyledString.DECORATIONS_STYLER);
+ else
+ styled.append(UIText.FetchResultTable_statusNew,
+ StyledString.DECORATIONS_STYLER);
+ break;
+ case FORCED:
+ addCommits(styled, "..."); //$NON-NLS-1$
+ break;
+ case FAST_FORWARD:
+ addCommits(styled, ".."); //$NON-NLS-1$
+ break;
+ case REJECTED:
+ styled.append(UIText.FetchResultTable_statusRejected,
+ StyledString.DECORATIONS_STYLER);
+ break;
+ case NO_CHANGE:
+ styled.append(UIText.FetchResultTable_statusUpToDate,
+ StyledString.DECORATIONS_STYLER);
+ break;
+ default:
+ break;
+ }
+ return styled;
+ }
+ }
- private static final int COLUMN_SRC_WEIGHT = 10;
+ private final Composite treePanel;
- private static final int COLUMN_DST_WEIGHT = 10;
+ private final TreeViewer treeViewer;
- private static final int COLUMN_STATUS_WEIGHT = 7;
+ private Repository repo;
- private final Composite tablePanel;
+ private ObjectReader reader;
- private final TableViewer tableViewer;
+ private Map<ObjectId, String> abbrevations;
- private final Color rejectedColor;
+ FetchResultTable(final Composite parent) {
+ treePanel = new Composite(parent, SWT.NONE);
+ GridLayoutFactory.swtDefaults().numColumns(2).applyTo(treePanel);
+ treeViewer = new TreeViewer(treePanel);
+ treeViewer.setAutoExpandLevel(2);
- private final Color updatedColor;
+ addToolbar(treePanel);
- private final Color upToDateColor;
+ final IStyledLabelProvider styleProvider = new IStyledLabelProvider() {
- private ObjectReader reader;
+ private final WorkbenchLabelProvider wrapped = new WorkbenchLabelProvider();
- private Map<ObjectId, String> abbrevations;
-
- FetchResultTable(final Composite parent) {
- tablePanel = new Composite(parent, SWT.NONE);
- tablePanel.setLayout(new GridLayout());
- final GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
- layoutData.heightHint = TABLE_PREFERRED_HEIGHT;
- layoutData.widthHint = TABLE_PREFERRED_WIDTH;
- tableViewer = new TableViewer(tablePanel);
- ColumnViewerToolTipSupport.enableFor(tableViewer);
- final Table table = tableViewer.getTable();
- table.setLinesVisible(true);
- table.setHeaderVisible(true);
-
- rejectedColor = new Color(parent.getDisplay(), 255, 0, 0);
- updatedColor = new Color(parent.getDisplay(), 0, 255, 0);
- upToDateColor = new Color(parent.getDisplay(), 245, 245, 245);
-
- tablePanel.addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- if (reader != null)
- reader.release();
+ public void removeListener(ILabelProviderListener listener) {
+ // Empty
+ }
- // dispose of our allocated Color instances
- rejectedColor.dispose();
- updatedColor.dispose();
- upToDateColor.dispose();
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
}
- });
- tableViewer.setContentProvider(new TrackingRefUpdateContentProvider());
- tableViewer.setInput(null);
+ public void dispose() {
+ wrapped.dispose();
+ }
- createTableColumns();
- }
+ public void addListener(ILabelProviderListener listener) {
+ // Empty
+ }
- void setData(final Repository db, final FetchResult fetchResult) {
- tableViewer.setInput(null);
- this.reader = db.newObjectReader();
- this.abbrevations = new HashMap<ObjectId, String>();
- tableViewer.setInput(fetchResult);
- }
+ public StyledString getStyledText(Object element) {
+ // TODO Replace with use of IWorkbenchAdapter3 when is no longer
+ // supported
+ if (element instanceof FetchResultAdapter)
+ return ((FetchResultAdapter) element)
+ .getStyledText(element);
+ if (element instanceof RepositoryCommit)
+ return ((RepositoryCommit) element).getStyledText(element);
- Control getControl() {
- return tablePanel;
- }
+ return new StyledString(wrapped.getText(element));
+ }
- private void createTableColumns() {
- final TableColumnLayout layout = new TableColumnLayout();
- tablePanel.setLayout(layout);
+ public Image getImage(Object element) {
+ return wrapped.getImage(element);
+ }
+ };
+ treeViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(
+ styleProvider) {
- final TableViewerColumn srcViewer = createColumn(layout,
- UIText.FetchResultTable_columnSrc, COLUMN_SRC_WEIGHT, SWT.LEFT);
- srcViewer.setLabelProvider(new ColumnLabelProvider() {
@Override
- public String getText(Object element) {
- return ((TrackingRefUpdate) element).getRemoteName();
+ public String getToolTipText(final Object element) {
+ if (element instanceof FetchResultAdapter) {
+ switch (((FetchResultAdapter) element).update.getResult()) {
+ case FAST_FORWARD:
+ return UIText.FetchResultTable_statusDetailFastForward;
+ case FORCED:
+ case REJECTED:
+ return UIText.FetchResultTable_statusDetailNonFastForward;
+ case IO_FAILURE:
+ return UIText.FetchResultTable_statusDetailIOError;
+ case LOCK_FAILURE:
+ return UIText.FetchResultTable_statusDetailCouldntLock;
+ default:
+ return super.getToolTipText(element);
+ }
+ }
+ return super.getToolTipText(element);
}
+
});
+ treeViewer.setSorter(new ViewerSorter() {
+
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ if (e1 instanceof FetchResultAdapter
+ && e2 instanceof FetchResultAdapter) {
+ FetchResultAdapter f1 = (FetchResultAdapter) e1;
+ FetchResultAdapter f2 = (FetchResultAdapter) e2;
+ if (f1.getChildren(f1).length > 0
+ && f2.getChildren(f2).length == 0)
+ return 1;
+ if (f1.getChildren(f1).length == 0
+ && f2.getChildren(f2).length > 0)
+ return -1;
+
+ return f1.getLabel(f1).compareToIgnoreCase(f2.getLabel(f2));
+ }
- final TableViewerColumn dstViewer = createColumn(layout,
- UIText.FetchResultTable_columnDst, COLUMN_DST_WEIGHT, SWT.LEFT);
- dstViewer.setLabelProvider(new ColumnLabelProvider() {
- @Override
- public String getText(Object element) {
- return ((TrackingRefUpdate) element).getLocalName();
+ // Leave commits order alone
+ if (e1 instanceof RepositoryCommit
+ && e2 instanceof RepositoryCommit)
+ return 0;
+
+ return super.compare(viewer, e1, e2);
}
+
});
+ ColumnViewerToolTipSupport.enableFor(treeViewer);
+ final Tree tree = treeViewer.getTree();
+ GridDataFactory.fillDefaults().grab(true, true).applyTo(tree);
+ tree.setLinesVisible(true);
- final TableViewerColumn statusViewer = createColumn(layout,
- UIText.FetchResultTable_columnStatus, COLUMN_STATUS_WEIGHT,
- SWT.LEFT);
- statusViewer.setLabelProvider(new ColumnLabelProvider() {
- @Override
- public String getText(final Object element) {
- final TrackingRefUpdate tru = (TrackingRefUpdate) element;
- final RefUpdate.Result r = tru.getResult();
- if (r == RefUpdate.Result.LOCK_FAILURE)
- return UIText.FetchResultTable_statusLockFailure;
-
- if (r == RefUpdate.Result.IO_FAILURE)
- return UIText.FetchResultTable_statusIOError;
-
- if (r == RefUpdate.Result.NEW) {
- if (tru.getRemoteName().startsWith(Constants.R_HEADS))
- return UIText.FetchResultTable_statusNewBranch;
- else if (tru.getLocalName().startsWith(Constants.R_TAGS))
- return UIText.FetchResultTable_statusNewTag;
- return UIText.FetchResultTable_statusNew;
- }
+ treePanel.addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(DisposeEvent e) {
+ if (reader != null)
+ reader.release();
+ }
+ });
- if (r == RefUpdate.Result.FORCED) {
- final String o = safeAbbreviate(tru.getOldObjectId());
- final String n = safeAbbreviate(tru.getNewObjectId());
- return o + "..." + n; //$NON-NLS-1$
- }
+ treeViewer.setContentProvider(new WorkbenchContentProvider() {
- if (r == RefUpdate.Result.FAST_FORWARD) {
- final String o = safeAbbreviate(tru.getOldObjectId());
- final String n = safeAbbreviate(tru.getNewObjectId());
- return o + ".." + n; //$NON-NLS-1$
- }
+ public Object[] getElements(Object inputElement) {
+ if (inputElement == null)
+ return new FetchResultAdapter[0];
- if (r == RefUpdate.Result.REJECTED)
- return UIText.FetchResultTable_statusRejected;
- if (r == RefUpdate.Result.NO_CHANGE)
- return UIText.FetchResultTable_statusUpToDate;
- throw new IllegalArgumentException(NLS.bind(
- UIText.FetchResultTable_statusUnexpected, r));
- }
-
- private String safeAbbreviate(ObjectId id) {
- String abbrev = abbrevations.get(id);
- if (abbrev == null) {
- try {
- abbrev = reader.abbreviate(id).name();
- } catch (IOException cannotAbbreviate) {
- abbrev = id.name();
- }
- abbrevations.put(id, abbrev);
- }
- return abbrev;
+ final FetchResult result = (FetchResult) inputElement;
+ TrackingRefUpdate[] updates = result.getTrackingRefUpdates()
+ .toArray(new TrackingRefUpdate[0]);
+ FetchResultAdapter[] elements = new FetchResultAdapter[updates.length];
+ for (int i = 0; i < elements.length; i++)
+ elements[i] = new FetchResultAdapter(updates[i]);
+ return elements;
}
- @Override
- public String getToolTipText(final Object element) {
- final Result result = ((TrackingRefUpdate) element).getResult();
- switch (result) {
- case FAST_FORWARD:
- return UIText.FetchResultTable_statusDetailFastForward;
- case FORCED:
- case REJECTED:
- return UIText.FetchResultTable_statusDetailNonFastForward;
- case NEW:
- case NO_CHANGE:
- return null;
- case IO_FAILURE:
- return UIText.FetchResultTable_statusDetailIOError;
- case LOCK_FAILURE:
- return UIText.FetchResultTable_statusDetailCouldntLock;
- default:
- throw new IllegalArgumentException(NLS.bind(
- UIText.FetchResultTable_statusUnexpected, result));
- }
+ public Object[] getChildren(Object element) {
+ if (element instanceof RepositoryCommit)
+ return ((RepositoryCommit) element).getDiffs();
+ return super.getChildren(element);
}
- @Override
- public Color getBackground(final Object element) {
- final Result result = ((TrackingRefUpdate) element).getResult();
- switch (result) {
- case FAST_FORWARD:
- case FORCED:
- case NEW:
- return updatedColor;
- case NO_CHANGE:
- return upToDateColor;
- case IO_FAILURE:
- case LOCK_FAILURE:
- case REJECTED:
- return rejectedColor;
- default:
- throw new IllegalArgumentException(NLS.bind(
- UIText.FetchResultTable_statusUnexpected, result));
- }
+ });
+
+ treeViewer.addOpenListener(new IOpenListener() {
+
+ public void open(OpenEvent event) {
+ ISelection selection = event.getSelection();
+ if (selection instanceof IStructuredSelection)
+ for (Object element : ((IStructuredSelection) selection)
+ .toArray())
+ if (element instanceof RepositoryCommit)
+ CommitEditor.openQuiet((RepositoryCommit) element);
+ }
+ });
+ }
+
+ private void addToolbar(Composite parent) {
+ ToolBar toolbar = new ToolBar(parent, SWT.VERTICAL);
+ GridDataFactory.fillDefaults().grab(false, true).applyTo(toolbar);
+
+ ToolItem collapseItem = new ToolItem(toolbar, SWT.PUSH);
+ Image collapseImage = UIIcons.COLLAPSEALL.createImage();
+ UIUtils.hookDisposal(collapseItem, collapseImage);
+ collapseItem.setImage(collapseImage);
+ collapseItem.setToolTipText(UIText.FetchResultTable_collapseAll);
+ collapseItem.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ treeViewer.collapseAll();
+ }
+
+ });
+
+ ToolItem expandItem = new ToolItem(toolbar, SWT.PUSH);
+ Image expandImage = UIIcons.EXPAND_ALL.createImage();
+ UIUtils.hookDisposal(expandItem, expandImage);
+ expandItem.setImage(expandImage);
+ expandItem.setToolTipText(UIText.FetchResultTable_expandAll);
+ expandItem.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent e) {
+ treeViewer.expandAll();
}
+
});
}
- private TableViewerColumn createColumn(
- final TableColumnLayout columnLayout, final String text,
- final int weight, final int style) {
- final TableViewerColumn viewerColumn = new TableViewerColumn(
- tableViewer, style);
- final TableColumn column = viewerColumn.getColumn();
- column.setText(text);
- columnLayout.setColumnData(column, new ColumnWeightData(weight));
- return viewerColumn;
+ void setData(final Repository db, final FetchResult fetchResult) {
+ treeViewer.setInput(null);
+ repo = db;
+ reader = db.newObjectReader();
+ abbrevations = new HashMap<ObjectId, String>();
+ treeViewer.setInput(fetchResult);
+ }
+
+ private String safeAbbreviate(ObjectId id) {
+ String abbrev = abbrevations.get(id);
+ if (abbrev == null) {
+ try {
+ abbrev = reader.abbreviate(id).name();
+ } catch (IOException cannotAbbreviate) {
+ abbrev = id.name();
+ }
+ abbrevations.put(id, abbrev);
+ }
+ return abbrev;
}
+
+ Control getControl() {
+ return treePanel;
+ }
+
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FileDiff.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FileDiff.java
index 607b9d76b6..1efbf6ac94 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FileDiff.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FileDiff.java
@@ -20,6 +20,8 @@ import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
+import org.eclipse.egit.ui.UIUtils;
+import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jgit.diff.DiffEntry;
import org.eclipse.jgit.diff.DiffEntry.ChangeType;
import org.eclipse.jgit.diff.DiffFormatter;
@@ -39,12 +41,13 @@ import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.treewalk.EmptyTreeIterator;
import org.eclipse.jgit.treewalk.TreeWalk;
+import org.eclipse.ui.model.WorkbenchAdapter;
/**
* A class with information about the changes to a file introduced in a
* commit.
*/
-public class FileDiff {
+public class FileDiff extends WorkbenchAdapter {
private final RevCommit commit;
@@ -299,6 +302,14 @@ public class FileDiff {
commit = c;
}
+ public ImageDescriptor getImageDescriptor(Object object) {
+ return UIUtils.getEditorImage(getPath());
+ }
+
+ public String getLabel(Object object) {
+ return getPath();
+ }
+
private static class FileDiffForMerges extends FileDiff {
private String path;
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/merge/MergeResultDialog.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/merge/MergeResultDialog.java
index 2f57a85d51..b006acd9a1 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/merge/MergeResultDialog.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/merge/MergeResultDialog.java
@@ -9,6 +9,9 @@
package org.eclipse.egit.ui.internal.merge;
import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.UIText;
@@ -17,15 +20,16 @@ import org.eclipse.egit.ui.internal.commit.RepositoryCommit;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IOpenListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.OpenEvent;
+import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jgit.api.MergeResult;
import org.eclipse.jgit.lib.ObjectId;
@@ -45,6 +49,7 @@ import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
/**
* Dialog for displaying a MergeResult
@@ -54,8 +59,6 @@ public class MergeResultDialog extends Dialog {
private static final String SPACE = " "; //$NON-NLS-1$
- private static final String EMPTY = ""; //$NON-NLS-1$
-
private final MergeResult mergeResult;
private final Repository repository;
@@ -126,22 +129,17 @@ public class MergeResultDialog extends Dialog {
}
public Object[] getElements(Object inputElement) {
- return mergeResult.getMergedCommits();
+ return getCommits(mergeResult.getMergedCommits());
}
});
- TableViewerColumn idColumn = new TableViewerColumn(viewer, SWT.LEFT);
- idColumn.getColumn().setText(UIText.MergeResultDialog_id);
- idColumn.getColumn().setWidth(100);
- TableViewerColumn textColumn = new TableViewerColumn(viewer, SWT.LEFT);
- textColumn.getColumn().setText(UIText.MergeResultDialog_description);
- textColumn.getColumn().setWidth(300);
Table table = viewer.getTable();
- table.setHeaderVisible(true);
table.setLinesVisible(true);
- viewer.setLabelProvider(new ITableLabelProvider() {
+ final IStyledLabelProvider styleProvider = new IStyledLabelProvider() {
+
+ private final WorkbenchLabelProvider wrapped = new WorkbenchLabelProvider();
public void removeListener(ILabelProviderListener listener) {
- // empty
+ // Empty
}
public boolean isLabelProperty(Object element, String property) {
@@ -149,26 +147,28 @@ public class MergeResultDialog extends Dialog {
}
public void dispose() {
- // empty
+ wrapped.dispose();
}
public void addListener(ILabelProviderListener listener) {
- // empty
+ // Empty
}
- public String getColumnText(Object element, int columnIndex) {
- ObjectId commitId = (ObjectId) element;
- if (columnIndex == 0)
- return abbreviate(commitId, false);
- else if (columnIndex == 1)
- return getCommitMessage(commitId);
- return EMPTY;
+ public StyledString getStyledText(Object element) {
+ // TODO Replace with use of IWorkbenchAdapter3 when is no longer
+ // supported
+ if (element instanceof RepositoryCommit)
+ return ((RepositoryCommit) element).getStyledText(element);
+
+ return new StyledString(wrapped.getText(element));
}
- public Image getColumnImage(Object element, int columnIndex) {
- return null;
+ public Image getImage(Object element) {
+ return wrapped.getImage(element);
}
- });
+ };
+ viewer.setLabelProvider(new DelegatingStyledCellLabelProvider(
+ styleProvider));
applyDialogFont(composite);
GridDataFactory.fillDefaults().grab(true, true)
.align(SWT.FILL, SWT.FILL).span(2, 1)
@@ -178,30 +178,36 @@ public class MergeResultDialog extends Dialog {
public void open(OpenEvent event) {
ISelection selection = event.getSelection();
- if (selection instanceof IStructuredSelection) {
+ if (selection instanceof IStructuredSelection)
for (Object element : ((IStructuredSelection) selection)
.toArray())
- if (element instanceof ObjectId)
- openCommit((ObjectId) element);
- }
+ if (element instanceof RepositoryCommit)
+ CommitEditor.openQuiet((RepositoryCommit) element);
}
});
return composite;
}
- private void openCommit(ObjectId id) {
- try {
- RevCommit commit = new RevWalk(repository).parseCommit(id);
- CommitEditor.openQuiet(new RepositoryCommit(repository, commit));
- } catch (IOException e) {
- Activator.logError(UIText.MergeResultDialog_couldNotFindCommit, e);
- }
+ private RepositoryCommit[] getCommits(final ObjectId[] merges) {
+ final List<RepositoryCommit> commits = new ArrayList<RepositoryCommit>();
+ final RevWalk walk = new RevWalk(objectReader);
+ walk.setRetainBody(true);
+ for (ObjectId merge : merges)
+ try {
+ commits.add(new RepositoryCommit(repository, walk
+ .parseCommit(merge)));
+ } catch (IOException e) {
+ Activator.logError(MessageFormat.format(
+ UIText.MergeResultDialog_couldNotFindCommit,
+ merge.name()), e);
+ }
+ return commits.toArray(new RepositoryCommit[commits.size()]);
}
private String getCommitMessage(ObjectId id) {
RevCommit commit;
try {
- commit = new RevWalk(repository).parseCommit(id);
+ commit = new RevWalk(objectReader).parseCommit(id);
} catch (IOException e) {
Activator.logError(UIText.MergeResultDialog_couldNotFindCommit, e);
return UIText.MergeResultDialog_couldNotFindCommit;
@@ -210,7 +216,7 @@ public class MergeResultDialog extends Dialog {
}
private String abbreviate(ObjectId id, boolean addBrackets) {
- StringBuilder result = new StringBuilder(EMPTY);
+ StringBuilder result = new StringBuilder();
if (addBrackets)
result.append("["); //$NON-NLS-1$
try {
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/pull/PullResultDialog.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/pull/PullResultDialog.java
index d649eeef63..df3761f4be 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/pull/PullResultDialog.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/pull/PullResultDialog.java
@@ -16,16 +16,17 @@ import org.eclipse.egit.ui.internal.merge.MergeResultDialog;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jgit.api.MergeResult;
+import org.eclipse.jgit.api.MergeResult.MergeStatus;
import org.eclipse.jgit.api.PullResult;
import org.eclipse.jgit.api.RebaseResult;
-import org.eclipse.jgit.api.MergeResult.MergeStatus;
import org.eclipse.jgit.api.RebaseResult.Status;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.transport.FetchResult;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
@@ -60,22 +61,25 @@ public class PullResultDialog extends Dialog {
@Override
protected Control createDialogArea(Composite parent) {
Composite main = new Composite(parent, SWT.NONE);
- main.setLayout(new GridLayout(1, false));
+ GridLayoutFactory.swtDefaults().applyTo(main);
GridDataFactory.fillDefaults().indent(0, 0).grab(true, true).applyTo(
main);
Group fetchResultGroup = new Group(main, SWT.SHADOW_ETCHED_IN);
fetchResultGroup
.setText(UIText.PullResultDialog_FetchResultGroupHeader);
- fetchResultGroup.setLayout(new GridLayout(1, false));
+ GridLayoutFactory.fillDefaults().applyTo(fetchResultGroup);
GridDataFactory.fillDefaults().grab(true, true).applyTo(
fetchResultGroup);
FetchResult fRes = result.getFetchResult();
if (fRes != null && !fRes.getTrackingRefUpdates().isEmpty()) {
FetchResultDialog dlg = new FetchResultDialog(getParentShell(),
repo, fRes, result.getFetchedFrom());
- Control fresult = dlg.createDialogArea(fetchResultGroup);
- GridDataFactory.fillDefaults().grab(true, true).hint(SWT.DEFAULT,
- 130).applyTo(fresult);
+ Control fresult = dlg.createFetchResultTable(fetchResultGroup);
+ Object layoutData = fresult.getLayoutData();
+ if (layoutData instanceof GridData)
+ GridDataFactory.createFrom((GridData) layoutData)
+ .hint(SWT.DEFAULT, 130).applyTo(fresult);
+
} else {
Label noResult = new Label(fetchResultGroup, SWT.NONE);
if (result.getFetchedFrom().equals(".")) //$NON-NLS-1$
@@ -90,7 +94,7 @@ public class PullResultDialog extends Dialog {
Group mergeResultGroup = new Group(main, SWT.SHADOW_ETCHED_IN);
mergeResultGroup
.setText(UIText.PullResultDialog_MergeResultGroupHeader);
- mergeResultGroup.setLayout(new GridLayout(1, false));
+ GridLayoutFactory.fillDefaults().applyTo(mergeResultGroup);
GridDataFactory.fillDefaults().grab(true, true).applyTo(
mergeResultGroup);
MergeResult mRes = result.getMergeResult();
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties
index 60281b5a35..753bc2b9d5 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties
@@ -273,6 +273,7 @@ RepositoryAction_errorFindingRepo=Could not find a repository associated with th
RepositoryAction_errorFindingRepoTitle=Cannot Find Repository
RepositoryAction_multiRepoSelection=Cannot perform reset on multiple repositories simultaneously.\n\nPlease select items from only one repository.
RepositoryAction_multiRepoSelectionTitle=Multiple Repositories Selection
+RepositoryCommit_UserAndDate=\ ({0} on {1})
RepositoryPropertySource_EditConfigurationTitle=Git Configuration Editor
RepositoryPropertySource_EffectiveConfigurationAction=Effective Configuration
@@ -738,9 +739,9 @@ FetchResultDialog_labelEmptyResult=No ref to fetch from {0} - everything up to d
FetchResultDialog_labelNonEmptyResult=Fetched from {0}.
FetchResultDialog_title=Fetch Results: {0}
-FetchResultTable_columnDst=Destination Ref
-FetchResultTable_columnSrc=Source Ref
-FetchResultTable_columnStatus=Status
+FetchResultTable_collapseAll=Collapse All
+FetchResultTable_counterCommits=\ ({0})
+FetchResultTable_expandAll=Expand All
FetchResultTable_statusDetailCouldntLock=couldn't lock local tracking ref for update
FetchResultTable_statusDetailFastForward=fast-forward
FetchResultTable_statusDetailIOError=I/O error occurred during local tracking ref update
@@ -811,7 +812,7 @@ MergeModeDialog_DialogTitle=Select a Merge Mode
MergeModeDialog_DontAskAgainLabel=&Don't ask again
MergeModeDialog_MergeMode_1_Label=Use the &workspace version of conflicting files (pre-merged by Git)
MergeModeDialog_MergeMode_2_Label=Use &HEAD (the last local version) of conflicting files
-MergeResultDialog_couldNotFindCommit=Could not find commit
+MergeResultDialog_couldNotFindCommit=Could not find commit: {0}
MergeResultDialog_description=Description
MergeResultDialog_id=Commit Id
MergeResultDialog_mergeInput=Merge input

Back to the top