private TooltipData generateTooltipData(FormulaFunction function, int currentArgIndex) { TooltipData td = new TooltipData(); StringBuilder sb = new StringBuilder(); sb.append(function.getName() + "("); int nbArgs = function.getArgumentNames().size(); int from = 0, to = 0; for (int i = 0; i < nbArgs; i++) { if (i == currentArgIndex) { from = sb.length(); } sb.append("<"); sb.append(function.getArgumentTypes().get(i).getSimpleName()); sb.append(">"); sb.append(function.getArgumentNames().get(i)); if (i == currentArgIndex) { to = sb.length(); } if (i < nbArgs - 1) sb.append(", "); } if (function.isVarArgs()) { if (currentArgIndex >= nbArgs) { from = sb.length(); to = from + 4; } sb.append(",..."); } sb.append(")"); td.styles = new ProposalStyle[1]; td.styles[0] = ProposalStyle.getDefault(from, to); td.value = sb.toString(); return td; }
private String generateSignature(FormulaFunction function) { StringBuffer sb = new StringBuffer(); if (function.getReturnType() != null) { sb.append("<"); sb.append(function.getReturnType().getSimpleName()); sb.append("> "); } sb.append(function.getName() + "("); int nbArgs = function.getArgumentNames().size(); for (int i = 0; i < nbArgs; i++) { sb.append("<"); sb.append(function.getArgumentTypes().get(i).getSimpleName()); sb.append(">"); sb.append(function.getArgumentNames().get(i)); if (i < nbArgs - 1) sb.append(", "); } if (function.isVarArgs()) sb.append(",..."); sb.append(")"); return sb.toString(); }