in ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopGuiWorkflowGraph.java [2573:2800]
protected void setToolTip(int x, int y, int screenX, int screenY) {
if (!hopGui.getProps().showToolTips() || openedContextDialog) {
return;
}
canvas.setToolTipText(null);
Image tipImage = null;
WorkflowHopMeta hi = findWorkflowHop(x, y);
// check the area owner list...
//
StringBuilder tip = new StringBuilder();
AreaOwner areaOwner = getVisibleAreaOwner(x, y);
if (areaOwner != null && areaOwner.getAreaType() != null) {
ActionMeta actionCopy;
switch (areaOwner.getAreaType()) {
case WORKFLOW_HOP_ICON:
hi = (WorkflowHopMeta) areaOwner.getOwner();
if (hi.isUnconditional()) {
tipImage = GuiResource.getInstance().getImageUnconditionalHop();
tip.append(
BaseMessages.getString(
PKG,
"WorkflowGraph.Hop.Tooltip.Unconditional",
hi.getFromAction().getName(),
Const.CR));
} else {
if (hi.isEvaluation()) {
tip.append(
BaseMessages.getString(
PKG,
"WorkflowGraph.Hop.Tooltip.EvaluatingTrue",
hi.getFromAction().getName(),
Const.CR));
tipImage = GuiResource.getInstance().getImageTrue();
} else {
tip.append(
BaseMessages.getString(
PKG,
"WorkflowGraph.Hop.Tooltip.EvaluatingFalse",
hi.getFromAction().getName(),
Const.CR));
tipImage = GuiResource.getInstance().getImageFalse();
}
}
break;
case WORKFLOW_HOP_PARALLEL_ICON:
hi = (WorkflowHopMeta) areaOwner.getOwner();
tip.append(
BaseMessages.getString(
PKG,
"WorkflowGraph.Hop.Tooltip.Parallel",
hi.getFromAction().getName(),
Const.CR));
tipImage = GuiResource.getInstance().getImageParallelHop();
break;
case CUSTOM:
String message = (String) areaOwner.getOwner();
tip.append(message);
tipImage = null;
GuiResource.getInstance().getImagePipeline();
break;
case ACTION_RESULT_FAILURE, ACTION_RESULT_SUCCESS:
ActionResult actionResult = (ActionResult) areaOwner.getOwner();
actionCopy = (ActionMeta) areaOwner.getParent();
Result result = actionResult.getResult();
tip.append("'").append(actionCopy.getName()).append("' ");
if (result.getResult()) {
tipImage = GuiResource.getInstance().getImageSuccess();
tip.append("finished successfully.");
} else {
tipImage = GuiResource.getInstance().getImageFailure();
tip.append("failed.");
}
tip.append(Const.CR).append("------------------------").append(Const.CR).append(Const.CR);
tip.append("Result : ").append(result.getResult()).append(Const.CR);
tip.append("Errors : ").append(result.getNrErrors()).append(Const.CR);
if (result.getNrLinesRead() > 0) {
tip.append("Lines read : ").append(result.getNrLinesRead()).append(Const.CR);
}
if (result.getNrLinesWritten() > 0) {
tip.append("Lines written : ").append(result.getNrLinesWritten()).append(Const.CR);
}
if (result.getNrLinesInput() > 0) {
tip.append("Lines input : ").append(result.getNrLinesInput()).append(Const.CR);
}
if (result.getNrLinesOutput() > 0) {
tip.append("Lines output : ").append(result.getNrLinesOutput()).append(Const.CR);
}
if (result.getNrLinesUpdated() > 0) {
tip.append("Lines updated : ").append(result.getNrLinesUpdated()).append(Const.CR);
}
if (result.getNrLinesDeleted() > 0) {
tip.append("Lines deleted : ").append(result.getNrLinesDeleted()).append(Const.CR);
}
if (result.getNrLinesRejected() > 0) {
tip.append("Lines rejected : ").append(result.getNrLinesRejected()).append(Const.CR);
}
if (result.getResultFiles() != null && !result.getResultFiles().isEmpty()) {
tip.append(Const.CR).append("Result files:").append(Const.CR);
if (result.getResultFiles().size() > 10) {
tip.append(" (10 files of ").append(result.getResultFiles().size()).append(" shown");
}
List<ResultFile> files = new ArrayList<>(result.getResultFiles().values());
for (int i = 0; i < files.size(); i++) {
ResultFile file = files.get(i);
tip.append(" - ").append(file.toString()).append(Const.CR);
}
}
if (result.getRows() != null && !result.getRows().isEmpty()) {
tip.append(Const.CR).append("Result rows: ");
if (result.getRows().size() > 10) {
tip.append(" (10 rows of ").append(result.getRows().size()).append(" shown");
}
tip.append(Const.CR);
for (int i = 0; i < result.getRows().size() && i < 10; i++) {
RowMetaAndData row = result.getRows().get(i);
tip.append(" - ").append(row.toString()).append(Const.CR);
}
}
break;
case ACTION_RESULT_CHECKPOINT:
tip.append(
"The workflow started here since this is the furthest checkpoint "
+ "that was reached last time the pipeline was executed.");
tipImage = GuiResource.getInstance().getImageCheckpoint();
break;
case ACTION_INFO_ICON, ACTION_ICON:
ActionMeta actionMetaInfo = (ActionMeta) areaOwner.getOwner();
// If transform is deprecated, display first
if (actionMetaInfo.isDeprecated()) { // only need tooltip if action is deprecated
tip.append(BaseMessages.getString(PKG, "WorkflowGraph.DeprecatedEntry.Tooltip.Title"))
.append(Const.CR);
String tipNext =
BaseMessages.getString(
PKG,
"WorkflowGraph.DeprecatedEntry.Tooltip.Message1",
actionMetaInfo.getName());
int length = tipNext.length() + 5;
for (int i = 0; i < length; i++) {
tip.append("-");
}
tip.append(Const.CR).append(tipNext).append(Const.CR);
tip.append(
BaseMessages.getString(PKG, "WorkflowGraph.DeprecatedEntry.Tooltip.Message2"));
if (!Utils.isEmpty(actionMetaInfo.getSuggestion())
&& !(actionMetaInfo.getSuggestion().startsWith("!")
&& actionMetaInfo.getSuggestion().endsWith("!"))) {
tip.append(" ");
tip.append(
BaseMessages.getString(
PKG,
"WorkflowGraph.DeprecatedEntry.Tooltip.Message3",
actionMetaInfo.getSuggestion()));
}
tipImage = GuiResource.getInstance().getImageDeprecated();
} else if (!Utils.isEmpty(actionMetaInfo.getDescription())) {
tip.append(actionMetaInfo.getDescription());
}
break;
default:
// For plugins...
//
try {
HopGuiTooltipExtension tooltipExt =
new HopGuiTooltipExtension(x, y, screenX, screenY, areaOwner, tip);
ExtensionPointHandler.callExtensionPoint(
hopGui.getLog(),
variables,
HopExtensionPoint.HopGuiWorkflowGraphAreaHover.name(),
tooltipExt);
tipImage = tooltipExt.tooltipImage;
} catch (Exception ex) {
hopGui
.getLog()
.logError(
"Error calling extension point "
+ HopExtensionPoint.HopGuiWorkflowGraphAreaHover.name(),
ex);
}
break;
}
}
if (hi != null && tip.length() == 0) {
// Set the tooltip for the hop:
tip.append(BaseMessages.getString(PKG, "WorkflowGraph.Dialog.HopInfo")).append(Const.CR);
tip.append(BaseMessages.getString(PKG, "WorkflowGraph.Dialog.HopInfo.SourceEntry"))
.append(" ")
.append(hi.getFromAction().getName())
.append(Const.CR);
tip.append(BaseMessages.getString(PKG, "WorkflowGraph.Dialog.HopInfo.TargetEntry"))
.append(" ")
.append(hi.getToAction().getName())
.append(Const.CR);
tip.append(BaseMessages.getString(PKG, "WorkflowGraph.Dialog.HopInfo.Status")).append(" ");
tip.append(
(hi.isEnabled()
? BaseMessages.getString(PKG, "WorkflowGraph.Dialog.HopInfo.Enable")
: BaseMessages.getString(PKG, "WorkflowGraph.Dialog.HopInfo.Disable")));
if (hi.isUnconditional()) {
tipImage = GuiResource.getInstance().getImageUnconditionalHop();
} else {
if (hi.isEvaluation()) {
tipImage = GuiResource.getInstance().getImageTrue();
} else {
tipImage = GuiResource.getInstance().getImageFalse();
}
}
}
if (tip == null || tip.length() == 0) {
toolTip.setVisible(false);
} else {
if (!tip.toString().equalsIgnoreCase(getToolTipText())) {
toolTip.setText(tip.toString());
toolTip.setVisible(false);
showToolTip(new org.eclipse.swt.graphics.Point(screenX, screenY));
}
}
}