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
;
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);
85 void setData(final Repository db
, final FetchResult fetchResult
) {
86 tableViewer
.setInput(null);
88 tableViewer
.setInput(fetchResult
);
91 Control
getControl() {
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() {
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() {
112 public String
getText(Object element
) {
113 return ((TrackingRefUpdate
) element
).getLocalName();
117 final TableViewerColumn statusViewer
= createColumn(layout
,
118 UIText
.FetchResultTable_columnStatus
, COLUMN_STATUS_WEIGHT
,
120 statusViewer
.setLabelProvider(new ColumnLabelProvider() {
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
));
160 public String
getToolTipText(final Object element
) {
161 final Result result
= ((TrackingRefUpdate
) element
).getResult();
164 return UIText
.FetchResultTable_statusDetailFastForward
;
167 return UIText
.FetchResultTable_statusDetailNonFastForward
;
172 return UIText
.FetchResultTable_statusDetailIOError
;
174 return UIText
.FetchResultTable_statusDetailCouldntLock
;
176 throw new IllegalArgumentException(NLS
.bind(
177 UIText
.FetchResultTable_statusUnexpected
, result
));
182 public Color
getBackground(final Object element
) {
183 final Result result
= ((TrackingRefUpdate
) element
).getResult();
188 return colorRegistry
.get(COLOR_UPDATED_KEY
);
190 return colorRegistry
.get(COLOR_UP_TO_DATE_KEY
);
194 return colorRegistry
.get(COLOR_REJECTED_KEY
);
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(
208 final TableColumn column
= viewerColumn
.getColumn();
209 column
.setText(text
);
210 columnLayout
.setColumnData(column
, new ColumnWeightData(weight
));