From 9fc6c314939e43dc8be14120c6df5de875b03475 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Fri, 23 Aug 2019 21:10:24 +0300 Subject: [PATCH] #6570 ERD tooltips --- .../dbeaver/ext/erd/figures/EntityFigure.java | 47 ++++++++++++++----- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/figures/EntityFigure.java b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/figures/EntityFigure.java index c1276652a4..10f6233bc4 100644 --- a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/figures/EntityFigure.java +++ b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/figures/EntityFigure.java @@ -24,10 +24,12 @@ import org.eclipse.jface.resource.ColorRegistry; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.RGB; +import org.jkiss.code.NotNull; import org.jkiss.dbeaver.ext.erd.ERDConstants; import org.jkiss.dbeaver.ext.erd.editor.ERDViewStyle; import org.jkiss.dbeaver.ext.erd.model.ERDEntity; import org.jkiss.dbeaver.ext.erd.part.EntityPart; +import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPEvaluationContext; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.struct.DBSEntityType; @@ -69,11 +71,13 @@ public class EntityFigure extends Figure { if (!CommonUtils.isEmpty(entity.getAlias())) { entityName += " " + entity.getAlias(); } - nameLabel = new EditableLabel( - entityName); - if (tableImage != null) { - nameLabel.setIcon(tableImage); - } + nameLabel = new EditableLabel(entityName) { + @Override + public IFigure getToolTip() { + return createToolTip(); + } + }; + nameLabel.setIcon(tableImage); nameLabel.setBorder(new MarginBorder(3)); Label descLabel = null; @@ -105,15 +109,36 @@ public class EntityFigure extends Figure { add(keyFigure); add(attributeFigure); - // Tooltip doesn't make sense and just flicks around -/* - Label toolTip = new Label(DBUtils.getObjectFullName(entity.getObject(), DBPEvaluationContext.UI)); - toolTip.setIcon(tableImage); - setToolTip(toolTip); -*/ refreshColors(); } + @NotNull + private IFigure createToolTip() { + ERDEntity entity = part.getEntity(); + DBPDataSourceContainer dataSource = entity.getDataSource().getContainer(); + + Figure toolTip = new Figure(); + toolTip.setOpaque(true); + //toolTip.setPreferredSize(300, 200); + toolTip.setBorder(getBorder()); + toolTip.setLayoutManager(new GridLayout(1, false)); + + { + Label dsLabel = new Label(dataSource.getName()); + dsLabel.setIcon(DBeaverIcons.getImage(dataSource.getDriver().getIcon())); + dsLabel.setBorder(new MarginBorder(2)); + toolTip.add(dsLabel); + } + { + Label entityLabel = new Label(DBUtils.getObjectFullName(entity.getObject(), DBPEvaluationContext.UI)); + entityLabel.setIcon(DBeaverIcons.getImage(entity.getObject().getEntityType().getIcon())); + entityLabel.setBorder(new MarginBorder(2)); + toolTip.add(entityLabel); + } + + return toolTip; + } + protected Color getBorderColor() { int dsIndex = getPart().getDiagram().getDataSourceIndex(part.getEntity().getDataSource().getContainer()); RGB[] extraDsColors = ERDConstants.EXTRA_DS_COLORS; -- GitLab