Remove System.out.println from RevWalkFilterTest
[jgit.git] / org.spearce.egit.ui / src / org / spearce / egit / ui / internal / fetch / FetchResultTable.java
blobf1169d1c8ff9a04b33411bc9e1ec1c67d68e79ba
1 package org.spearce.egit.ui.internal.fetch;
3 import org.eclipse.jface.layout.TableColumnLayout;
4 import org.eclipse.jface.resource.ColorRegistry;
5 import org.eclipse.jface.viewers.ColumnLabelProvider;
6 import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
7 import org.eclipse.jface.viewers.ColumnWeightData;
8 import org.eclipse.jface.viewers.TableViewer;
9 import org.eclipse.jface.viewers.TableViewerColumn;
10 import org.eclipse.osgi.util.NLS;
11 import org.eclipse.swt.SWT;
12 import org.eclipse.swt.graphics.Color;
13 import org.eclipse.swt.graphics.RGB;
14 import org.eclipse.swt.layout.GridData;
15 import org.eclipse.swt.layout.GridLayout;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.swt.widgets.Control;
18 import org.eclipse.swt.widgets.Table;
19 import org.eclipse.swt.widgets.TableColumn;
20 import org.spearce.egit.ui.UIText;
21 import org.spearce.jgit.lib.Constants;
22 import org.spearce.jgit.lib.RefUpdate;
23 import org.spearce.jgit.lib.Repository;
24 import org.spearce.jgit.lib.RefUpdate.Result;
25 import org.spearce.jgit.transport.FetchResult;
26 import org.spearce.jgit.transport.TrackingRefUpdate;
28 /**
29 * Component displaying table with results of fetch operation.
31 class FetchResultTable {
32 private static final int TABLE_PREFERRED_HEIGHT = 600;
34 private static final int TABLE_PREFERRED_WIDTH = 300;
36 private static final int COLUMN_SRC_WEIGHT = 10;
38 private static final int COLUMN_DST_WEIGHT = 10;
40 private static final int COLUMN_STATUS_WEIGHT = 7;
42 private static final String COLOR_REJECTED_KEY = "REJECTED"; //$NON-NLS-1$
44 private static final RGB COLOR_REJECTED = new RGB(255, 0, 0);
46 private static final String COLOR_UPDATED_KEY = "UPDATED"; //$NON-NLS-1$
48 private static final RGB COLOR_UPDATED = new RGB(0, 255, 0);
50 private static final String COLOR_UP_TO_DATE_KEY = "UP_TO_DATE"; //$NON-NLS-1$
52 private static final RGB COLOR_UP_TO_DATE = new RGB(245, 245, 245);
54 private final Composite tablePanel;
56 private final TableViewer tableViewer;
58 private final ColorRegistry colorRegistry;
60 private Repository db;
62 FetchResultTable(final Composite parent) {
63 tablePanel = new Composite(parent, SWT.NONE);
64 tablePanel.setLayout(new GridLayout());
65 final GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
66 layoutData.heightHint = TABLE_PREFERRED_HEIGHT;
67 layoutData.widthHint = TABLE_PREFERRED_WIDTH;
68 tableViewer = new TableViewer(tablePanel);
69 ColumnViewerToolTipSupport.enableFor(tableViewer);
70 final Table table = tableViewer.getTable();
71 table.setLinesVisible(true);
72 table.setHeaderVisible(true);
74 colorRegistry = new ColorRegistry(table.getDisplay());
75 colorRegistry.put(COLOR_REJECTED_KEY, COLOR_REJECTED);
76 colorRegistry.put(COLOR_UPDATED_KEY, COLOR_UPDATED);
77 colorRegistry.put(COLOR_UP_TO_DATE_KEY, COLOR_UP_TO_DATE);
79 tableViewer.setContentProvider(new TrackingRefUpdateContentProvider());
80 tableViewer.setInput(null);
82 createTableColumns();
85 void setData(final Repository db, final FetchResult fetchResult) {
86 tableViewer.setInput(null);
87 this.db = db;
88 tableViewer.setInput(fetchResult);
91 Control getControl() {
92 return tablePanel;
95 private void createTableColumns() {
96 final TableColumnLayout layout = new TableColumnLayout();
97 tablePanel.setLayout(layout);
99 final TableViewerColumn srcViewer = createColumn(layout,
100 UIText.FetchResultTable_columnSrc, COLUMN_SRC_WEIGHT, SWT.LEFT);
101 srcViewer.setLabelProvider(new ColumnLabelProvider() {
102 @Override
103 public String getText(Object element) {
104 return ((TrackingRefUpdate) element).getRemoteName();
108 final TableViewerColumn dstViewer = createColumn(layout,
109 UIText.FetchResultTable_columnDst, COLUMN_DST_WEIGHT, SWT.LEFT);
110 dstViewer.setLabelProvider(new ColumnLabelProvider() {
111 @Override
112 public String getText(Object element) {
113 return ((TrackingRefUpdate) element).getLocalName();
117 final TableViewerColumn statusViewer = createColumn(layout,
118 UIText.FetchResultTable_columnStatus, COLUMN_STATUS_WEIGHT,
119 SWT.LEFT);
120 statusViewer.setLabelProvider(new ColumnLabelProvider() {
121 @Override
122 public String getText(final Object element) {
123 final TrackingRefUpdate tru = (TrackingRefUpdate) element;
124 final RefUpdate.Result r = tru.getResult();
125 if (r == RefUpdate.Result.LOCK_FAILURE)
126 return UIText.FetchResultTable_statusLockFailure;
128 if (r == RefUpdate.Result.IO_FAILURE)
129 return UIText.FetchResultTable_statusIOError;
131 if (r == RefUpdate.Result.NEW) {
132 if (tru.getRemoteName().startsWith(Constants.R_HEADS))
133 return UIText.FetchResultTable_statusNewBranch;
134 else if (tru.getLocalName().startsWith(Constants.R_TAGS))
135 return UIText.FetchResultTable_statusNewTag;
136 return UIText.FetchResultTable_statusNew;
139 if (r == RefUpdate.Result.FORCED) {
140 final String o = tru.getOldObjectId().abbreviate(db).name();
141 final String n = tru.getNewObjectId().abbreviate(db).name();
142 return o + "..." + n; //$NON-NLS-1$
145 if (r == RefUpdate.Result.FAST_FORWARD) {
146 final String o = tru.getOldObjectId().abbreviate(db).name();
147 final String n = tru.getNewObjectId().abbreviate(db).name();
148 return o + ".." + n; //$NON-NLS-1$
151 if (r == RefUpdate.Result.REJECTED)
152 return UIText.FetchResultTable_statusRejected;
153 if (r == RefUpdate.Result.NO_CHANGE)
154 return UIText.FetchResultTable_statusUpToDate;
155 throw new IllegalArgumentException(NLS.bind(
156 UIText.FetchResultTable_statusUnexpected, r));
159 @Override
160 public String getToolTipText(final Object element) {
161 final Result result = ((TrackingRefUpdate) element).getResult();
162 switch (result) {
163 case FAST_FORWARD:
164 return UIText.FetchResultTable_statusDetailFastForward;
165 case FORCED:
166 case REJECTED:
167 return UIText.FetchResultTable_statusDetailNonFastForward;
168 case NEW:
169 case NO_CHANGE:
170 return null;
171 case IO_FAILURE:
172 return UIText.FetchResultTable_statusDetailIOError;
173 case LOCK_FAILURE:
174 return UIText.FetchResultTable_statusDetailCouldntLock;
175 default:
176 throw new IllegalArgumentException(NLS.bind(
177 UIText.FetchResultTable_statusUnexpected, result));
181 @Override
182 public Color getBackground(final Object element) {
183 final Result result = ((TrackingRefUpdate) element).getResult();
184 switch (result) {
185 case FAST_FORWARD:
186 case FORCED:
187 case NEW:
188 return colorRegistry.get(COLOR_UPDATED_KEY);
189 case NO_CHANGE:
190 return colorRegistry.get(COLOR_UP_TO_DATE_KEY);
191 case IO_FAILURE:
192 case LOCK_FAILURE:
193 case REJECTED:
194 return colorRegistry.get(COLOR_REJECTED_KEY);
195 default:
196 throw new IllegalArgumentException(NLS.bind(
197 UIText.FetchResultTable_statusUnexpected, result));
203 private TableViewerColumn createColumn(
204 final TableColumnLayout columnLayout, final String text,
205 final int weight, final int style) {
206 final TableViewerColumn viewerColumn = new TableViewerColumn(
207 tableViewer, style);
208 final TableColumn column = viewerColumn.getColumn();
209 column.setText(text);
210 columnLayout.setColumnData(column, new ColumnWeightData(weight));
211 return viewerColumn;