public void setLanguageObject(ILanguageObject theLangObj) { // language object must be cloned here so that the original isn't modified. // this prevents the original from being modified even if the user cancels out of the builder. ILanguageObject langObj = (theLangObj == null) ? null : (ILanguageObject) theLangObj.clone(); savedLangObj = langObj; setOriginalSql(langObj); setCurrentSql(langObj); treeViewer.setLanguageObject(langObj); treeViewer.selectRoot(); treeViewer.expandAll(); // Defect 22003 - needed a context for the original expression // Providing a Lable at the top of the dialog. String labelText = Util.getString(PREFIX + "initialExpression") + //$NON-NLS-1$ CoreStringUtil.Constants.DBL_SPACE + CoreStringUtil.Constants.DBL_SPACE + Util.getString(PREFIX + "undefined"); // $NON-NLS-1$ if (savedLangObj != null) { String loString = savedLangObj.toString(); if (loString.length() > 50) { loString = loString.substring(0, 50) + "..."; // $NON-NLS-1$ } labelText = Util.getString(PREFIX + "initialExpression") + //$NON-NLS-1$ CoreStringUtil.Constants.DBL_SPACE + CoreStringUtil.Constants.DBL_SPACE + loString; } if (originalLanguageObjLabel != null) { originalLanguageObjLabel.setText(labelText); originalLanguageObjLabel.getParent().layout(); } // select root tree node Display.getDefault() .asyncExec( new Runnable() { @Override public void run() { treeViewer.selectRoot(); } }); }
@Override public void visitNode(ILanguageObject obj) { if (obj == null) { append(DisplayNodeConstants.UNDEFINED); return; } if ((obj instanceof IExpressionSymbol && !(obj instanceof IAggregateSymbol))) { IQueryService queryService = ModelerCore.getTeiidQueryService(); ISQLStringVisitor delegate = queryService.getCallbackSQLStringVisitor(this); obj.acceptVisitor(delegate); return; } // turn off indenting for nested commands int childIndent = indentLevel; if ((node.languageObject instanceof ISubqueryContainer || node.languageObject instanceof IExpressionStatement) && obj instanceof ICommand) { childIndent = -1; } DisplayNode child = DisplayNodeFactory.createDisplayNode(node, obj, childIndent); node.addChildNode(child); }