1010import org .eclipse .core .runtime .MultiStatus ;
1111import org .eclipse .core .runtime .jobs .Job ;
1212import org .eclipse .jface .preference .PreferencePage ;
13+ import org .eclipse .jface .viewers .CellLabelProvider ;
1314import org .eclipse .jface .viewers .CheckboxTreeViewer ;
15+ import org .eclipse .jface .viewers .ColumnViewerToolTipSupport ;
1416import org .eclipse .jface .viewers .ICheckStateProvider ;
1517import org .eclipse .jface .viewers .ILabelProviderListener ;
1618import org .eclipse .jface .viewers .ITableLabelProvider ;
1719import org .eclipse .jface .viewers .ITreeContentProvider ;
1820import org .eclipse .jface .viewers .TreeViewer ;
1921import org .eclipse .jface .viewers .Viewer ;
22+ import org .eclipse .jface .viewers .ViewerCell ;
2023import org .eclipse .swt .SWT ;
2124import org .eclipse .swt .custom .CCombo ;
2225import org .eclipse .swt .custom .TreeEditor ;
2326import org .eclipse .swt .events .SelectionAdapter ;
2427import org .eclipse .swt .events .SelectionEvent ;
2528import org .eclipse .swt .graphics .Image ;
29+ import org .eclipse .swt .graphics .Point ;
2630import org .eclipse .swt .layout .GridData ;
2731import org .eclipse .swt .layout .GridLayout ;
2832import org .eclipse .swt .widgets .Composite ;
@@ -53,7 +57,6 @@ public void init(IWorkbench workbench) {
5357
5458 @ Override
5559 protected void performDefaults () {
56- // viewer.setInput(new LibraryTree());
5760 libs .reset ();
5861 viewer .refresh ();
5962 if (editor != null && editor .getEditor () != null ) {
@@ -108,7 +111,7 @@ public void createTree(Composite parent) {
108111 protected boolean isLeafMatch (final Viewer viewer , final Object element ) {
109112
110113 int numberOfColumns = ((TreeViewer ) viewer ).getTree ().getColumnCount ();
111- ITableLabelProvider labelProvider = (ITableLabelProvider ) ((TreeViewer ) viewer ).getLabelProvider ();
114+ LibraryLabelProvider labelProvider = (LibraryLabelProvider ) ((TreeViewer ) viewer ).getLabelProvider ();
112115 boolean isMatch = false ;
113116 for (int columnIndex = 0 ; columnIndex < numberOfColumns ; columnIndex ++) {
114117 String labelText = labelProvider .getColumnText (element , columnIndex );
@@ -145,7 +148,10 @@ protected TreeViewer doCreateTreeViewer(Composite composite, int style) {
145148
146149 // this ensures the tree labels are displayed correctly
147150 viewer .refresh (true );
148-
151+
152+ // enable tooltips
153+ ColumnViewerToolTipSupport .enableFor (viewer );
154+
149155 // tree interactions listener
150156 viewer .getTree ().addSelectionListener (new SelectionAdapter () {
151157 public void widgetSelected (SelectionEvent event ) {
@@ -241,31 +247,16 @@ private void verifySubtreeCheckStatus(TreeItem item) {
241247 * Displays the tree labels for both columns: name and version
242248 *
243249 */
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 {
258251
259252 @ 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+ }
265257 return null ;
266258 }
267-
268- @ Override
259+
269260 public String getColumnText (Object element , int col ) {
270261 switch (col ) {
271262 case 0 :
@@ -279,7 +270,33 @@ public String getColumnText(Object element, int col) {
279270 }
280271 return null ;
281272 }
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+ }
283300
284301 /**
285302 * Provides the correct checked status for installed libraries
@@ -412,10 +429,12 @@ public class Library implements Comparable<Library>, Node {
412429 private Category category ;
413430 private TreeSet <Version > versions = new TreeSet <>();
414431 private String version ;
432+ private String tooltip ;
415433
416- public Library (Category category , String name ) {
434+ public Library (Category category , String name , String tooltip ) {
417435 this .category = category ;
418436 this .name = name ;
437+ this .tooltip = tooltip ;
419438 }
420439
421440 public Collection <Version > getVersions () {
@@ -426,6 +445,10 @@ public String getName() {
426445 return name ;
427446 }
428447
448+ public String getTooltip () {
449+ return tooltip ;
450+ }
451+
429452 public String getLatest () {
430453 return versions .last ().toString ();
431454 }
@@ -506,7 +529,11 @@ public LibraryTree() {
506529 for (it .baeyens .arduino .managers .Library library : libraryIndex .getLibraries (categoryName )) {
507530 Library lib = category .libraries .get (library .getName ());
508531 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 ());
510537 category .libraries .put (lib .getName (), lib );
511538 }
512539 lib .versions .add (new Version (library .getVersion ()));
0 commit comments