From cd7fbec7e6099a5049736322e5c41eb719b1f214 Mon Sep 17 00:00:00 2001 From: hneemann Date: Thu, 30 Mar 2017 17:33:26 +0200 Subject: [PATCH] added tooltips to component tree and InsertHistory --- .../digital/draw/library/LibraryNode.java | 16 ++++++++++++++++ .../de/neemann/digital/gui/InsertAction.java | 7 +++++++ .../de/neemann/digital/gui/InsertHistory.java | 2 +- .../de/neemann/digital/gui/LibrarySelector.java | 7 +------ .../digital/gui/components/tree/SelectTree.java | 13 +++++++++++++ 5 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/neemann/digital/draw/library/LibraryNode.java b/src/main/java/de/neemann/digital/draw/library/LibraryNode.java index c47e9336c..9bd7d734d 100644 --- a/src/main/java/de/neemann/digital/draw/library/LibraryNode.java +++ b/src/main/java/de/neemann/digital/draw/library/LibraryNode.java @@ -1,8 +1,11 @@ package de.neemann.digital.draw.library; +import de.neemann.digital.core.element.ElementAttributes; import de.neemann.digital.core.element.ElementTypeDescription; import de.neemann.digital.draw.elements.VisualElement; import de.neemann.digital.draw.shapes.ShapeFactory; +import de.neemann.digital.lang.Lang; +import de.neemann.gui.StringUtils; import javax.swing.*; import java.io.File; @@ -271,4 +274,17 @@ public class LibraryNode implements Iterable { icon = null; library.fireLibraryChanged(this); } + + /** + * @return the tool tip text + */ + public String getToolTipText() { + if (isCustom()) { + if (description == null) + return null; + else + return StringUtils.textToHTML(description.getDescription(new ElementAttributes())); + } else + return StringUtils.textToHTML(Lang.getNull("elem_" + getName() + "_tt")); + } } diff --git a/src/main/java/de/neemann/digital/gui/InsertAction.java b/src/main/java/de/neemann/digital/gui/InsertAction.java index 52fda6d56..640bbfa9d 100644 --- a/src/main/java/de/neemann/digital/gui/InsertAction.java +++ b/src/main/java/de/neemann/digital/gui/InsertAction.java @@ -82,4 +82,11 @@ public final class InsertAction extends ToolTipAction { SwingUtilities.invokeLater(new ErrorMessage(Lang.get("msg_errorImportingModel")).addCause(ex)); } } + + /** + * @return the library node + */ + public LibraryNode getNode() { + return node; + } } diff --git a/src/main/java/de/neemann/digital/gui/InsertHistory.java b/src/main/java/de/neemann/digital/gui/InsertHistory.java index 177671f54..736c5e782 100644 --- a/src/main/java/de/neemann/digital/gui/InsertHistory.java +++ b/src/main/java/de/neemann/digital/gui/InsertHistory.java @@ -44,7 +44,7 @@ public class InsertHistory implements LibraryListener { if (!contains(action)) { WrapperAction wrapper = new WrapperAction(action, bar.getComponentCount()); wrappers.add(wrapper); - bar.add(wrapper); + bar.add(wrapper).setToolTipText(action.getNode().getToolTipText()); if (wrappers.size() > MAX_ICONS) { int oldest = findOldestIndex(); removeWrapperFromToolBar(wrappers.get(oldest)); diff --git a/src/main/java/de/neemann/digital/gui/LibrarySelector.java b/src/main/java/de/neemann/digital/gui/LibrarySelector.java index e4cabb797..2800504a6 100644 --- a/src/main/java/de/neemann/digital/gui/LibrarySelector.java +++ b/src/main/java/de/neemann/digital/gui/LibrarySelector.java @@ -7,7 +7,6 @@ import de.neemann.digital.draw.shapes.ShapeFactory; import de.neemann.digital.gui.components.CircuitComponent; import de.neemann.digital.lang.Lang; import de.neemann.gui.ErrorMessage; -import de.neemann.gui.StringUtils; import de.neemann.gui.ToolTipAction; import javax.swing.*; @@ -85,7 +84,7 @@ public class LibrarySelector implements LibraryListener { private void addComponents(JMenu parts, LibraryNode node) { if (node.isLeaf()) { parts.add(new InsertAction(node, insertHistory, circuitComponent, shapeFactory) - .setToolTip(createToolTipText(node.getName())) + .setToolTip(node.getToolTipText()) .createJMenuItem()); } else { JMenu subMenu = new JMenu(node.getName()); @@ -94,8 +93,4 @@ public class LibrarySelector implements LibraryListener { parts.add(subMenu); } } - - private static String createToolTipText(String elementName) { - return StringUtils.textToHTML(Lang.getNull("elem_" + elementName + "_tt")); - } } diff --git a/src/main/java/de/neemann/digital/gui/components/tree/SelectTree.java b/src/main/java/de/neemann/digital/gui/components/tree/SelectTree.java index 8239e20af..016216ebb 100644 --- a/src/main/java/de/neemann/digital/gui/components/tree/SelectTree.java +++ b/src/main/java/de/neemann/digital/gui/components/tree/SelectTree.java @@ -57,6 +57,19 @@ public class SelectTree extends JTree { } }); setCellRenderer(new MyCellRenderer()); + setToolTipText(""); + } + + @Override + public String getToolTipText(MouseEvent e) { + TreePath selPath = getPathForLocation(e.getX(), e.getY()); + if (selPath != null && selPath.getPathCount() > 0) { + Object lp = selPath.getLastPathComponent(); + if (lp instanceof LibraryNode) { + return ((LibraryNode) lp).getToolTipText(); + } + } + return null; } private class MyCellRenderer extends DefaultTreeCellRenderer {