Skip to content

Commit cfb22c8

Browse files
committed
added tooltip support to display library description and supported architectures
1 parent 98468c4 commit cfb22c8

File tree

1 file changed

+54
-27
lines changed

1 file changed

+54
-27
lines changed

it.baeyens.arduino.core/src/it/baeyens/arduino/ui/LibraryPreferencePage.java

Lines changed: 54 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,23 @@
1010
import org.eclipse.core.runtime.MultiStatus;
1111
import org.eclipse.core.runtime.jobs.Job;
1212
import org.eclipse.jface.preference.PreferencePage;
13+
import org.eclipse.jface.viewers.CellLabelProvider;
1314
import org.eclipse.jface.viewers.CheckboxTreeViewer;
15+
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
1416
import org.eclipse.jface.viewers.ICheckStateProvider;
1517
import org.eclipse.jface.viewers.ILabelProviderListener;
1618
import org.eclipse.jface.viewers.ITableLabelProvider;
1719
import org.eclipse.jface.viewers.ITreeContentProvider;
1820
import org.eclipse.jface.viewers.TreeViewer;
1921
import org.eclipse.jface.viewers.Viewer;
22+
import org.eclipse.jface.viewers.ViewerCell;
2023
import org.eclipse.swt.SWT;
2124
import org.eclipse.swt.custom.CCombo;
2225
import org.eclipse.swt.custom.TreeEditor;
2326
import org.eclipse.swt.events.SelectionAdapter;
2427
import org.eclipse.swt.events.SelectionEvent;
2528
import org.eclipse.swt.graphics.Image;
29+
import org.eclipse.swt.graphics.Point;
2630
import org.eclipse.swt.layout.GridData;
2731
import org.eclipse.swt.layout.GridLayout;
2832
import 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

Comments
 (0)