10
10
import org .eclipse .core .runtime .MultiStatus ;
11
11
import org .eclipse .core .runtime .jobs .Job ;
12
12
import org .eclipse .jface .preference .PreferencePage ;
13
+ import org .eclipse .jface .viewers .CellLabelProvider ;
13
14
import org .eclipse .jface .viewers .CheckboxTreeViewer ;
15
+ import org .eclipse .jface .viewers .ColumnViewerToolTipSupport ;
14
16
import org .eclipse .jface .viewers .ICheckStateProvider ;
15
17
import org .eclipse .jface .viewers .ILabelProviderListener ;
16
18
import org .eclipse .jface .viewers .ITableLabelProvider ;
17
19
import org .eclipse .jface .viewers .ITreeContentProvider ;
18
20
import org .eclipse .jface .viewers .TreeViewer ;
19
21
import org .eclipse .jface .viewers .Viewer ;
22
+ import org .eclipse .jface .viewers .ViewerCell ;
20
23
import org .eclipse .swt .SWT ;
21
24
import org .eclipse .swt .custom .CCombo ;
22
25
import org .eclipse .swt .custom .TreeEditor ;
23
26
import org .eclipse .swt .events .SelectionAdapter ;
24
27
import org .eclipse .swt .events .SelectionEvent ;
25
28
import org .eclipse .swt .graphics .Image ;
29
+ import org .eclipse .swt .graphics .Point ;
26
30
import org .eclipse .swt .layout .GridData ;
27
31
import org .eclipse .swt .layout .GridLayout ;
28
32
import org .eclipse .swt .widgets .Composite ;
@@ -53,7 +57,6 @@ public void init(IWorkbench workbench) {
53
57
54
58
@ Override
55
59
protected void performDefaults () {
56
- // viewer.setInput(new LibraryTree());
57
60
libs .reset ();
58
61
viewer .refresh ();
59
62
if (editor != null && editor .getEditor () != null ) {
@@ -108,7 +111,7 @@ public void createTree(Composite parent) {
108
111
protected boolean isLeafMatch (final Viewer viewer , final Object element ) {
109
112
110
113
int numberOfColumns = ((TreeViewer ) viewer ).getTree ().getColumnCount ();
111
- ITableLabelProvider labelProvider = (ITableLabelProvider ) ((TreeViewer ) viewer ).getLabelProvider ();
114
+ LibraryLabelProvider labelProvider = (LibraryLabelProvider ) ((TreeViewer ) viewer ).getLabelProvider ();
112
115
boolean isMatch = false ;
113
116
for (int columnIndex = 0 ; columnIndex < numberOfColumns ; columnIndex ++) {
114
117
String labelText = labelProvider .getColumnText (element , columnIndex );
@@ -145,7 +148,10 @@ protected TreeViewer doCreateTreeViewer(Composite composite, int style) {
145
148
146
149
// this ensures the tree labels are displayed correctly
147
150
viewer .refresh (true );
148
-
151
+
152
+ // enable tooltips
153
+ ColumnViewerToolTipSupport .enableFor (viewer );
154
+
149
155
// tree interactions listener
150
156
viewer .getTree ().addSelectionListener (new SelectionAdapter () {
151
157
public void widgetSelected (SelectionEvent event ) {
@@ -241,31 +247,16 @@ private void verifySubtreeCheckStatus(TreeItem item) {
241
247
* Displays the tree labels for both columns: name and version
242
248
*
243
249
*/
244
- private static class LibraryLabelProvider implements ITableLabelProvider {
245
-
246
- @ Override
247
- public void addListener (ILabelProviderListener arg0 ) {
248
- }
249
-
250
- @ Override
251
- public void dispose () {
252
- }
253
-
254
- @ Override
255
- public boolean isLabelProperty (Object arg0 , String arg1 ) {
256
- return false ;
257
- }
250
+ private static class LibraryLabelProvider extends CellLabelProvider {
258
251
259
252
@ Override
260
- public void removeListener (ILabelProviderListener arg0 ) {
261
- }
262
-
263
- @ Override
264
- public Image getColumnImage (Object element , int col ) {
253
+ public String getToolTipText (Object element ) {
254
+ if (element instanceof LibraryTree .Library ) {
255
+ return ((LibraryTree .Library )element ).getTooltip ();
256
+ }
265
257
return null ;
266
258
}
267
-
268
- @ Override
259
+
269
260
public String getColumnText (Object element , int col ) {
270
261
switch (col ) {
271
262
case 0 :
@@ -279,7 +270,33 @@ public String getColumnText(Object element, int col) {
279
270
}
280
271
return null ;
281
272
}
282
- }
273
+
274
+ @ Override
275
+ public Point getToolTipShift (Object object ) {
276
+ return new Point (5 ,5 );
277
+ }
278
+
279
+ @ Override
280
+ public int getToolTipDisplayDelayTime (Object object ) {
281
+ return 500 ;
282
+ }
283
+
284
+ @ Override
285
+ public int getToolTipTimeDisplayed (Object object ) {
286
+ return 0 ;
287
+ }
288
+
289
+ @ Override
290
+ public void update (ViewerCell cell ) {
291
+ if (cell .getColumnIndex () == 0 ) {
292
+ cell .setText (((LibraryTree .Node )cell .getElement ()).getName ());
293
+ } else if (cell .getElement () instanceof LibraryTree .Library ) {
294
+ cell .setText (((LibraryTree .Library )cell .getElement ()).getVersion ());
295
+ } else {
296
+ cell .setText (null );
297
+ }
298
+ }
299
+ }
283
300
284
301
/**
285
302
* Provides the correct checked status for installed libraries
@@ -412,10 +429,12 @@ public class Library implements Comparable<Library>, Node {
412
429
private Category category ;
413
430
private TreeSet <Version > versions = new TreeSet <>();
414
431
private String version ;
432
+ private String tooltip ;
415
433
416
- public Library (Category category , String name ) {
434
+ public Library (Category category , String name , String tooltip ) {
417
435
this .category = category ;
418
436
this .name = name ;
437
+ this .tooltip = tooltip ;
419
438
}
420
439
421
440
public Collection <Version > getVersions () {
@@ -426,6 +445,10 @@ public String getName() {
426
445
return name ;
427
446
}
428
447
448
+ public String getTooltip () {
449
+ return tooltip ;
450
+ }
451
+
429
452
public String getLatest () {
430
453
return versions .last ().toString ();
431
454
}
@@ -506,7 +529,11 @@ public LibraryTree() {
506
529
for (it .baeyens .arduino .managers .Library library : libraryIndex .getLibraries (categoryName )) {
507
530
Library lib = category .libraries .get (library .getName ());
508
531
if (lib == null ) {
509
- lib = new Library (category , library .getName ());
532
+ StringBuilder builder = new StringBuilder ("Architectures: " )
533
+ .append (library .getArchitectures ().toString ())
534
+ .append ("\n \n " )
535
+ .append (library .getSentence ());
536
+ lib = new Library (category , library .getName (), builder .toString ());
510
537
category .libraries .put (lib .getName (), lib );
511
538
}
512
539
lib .versions .add (new Version (library .getVersion ()));
0 commit comments