Bug 121871 Support intellisense for global varible "report" in both expression builder and script editor
Currently expression builder already provide intellisense support for static objects (both BIRT and standard javaScript object). However, it doesn't support intellisene for "report". Even with the class structure displayed in the expression builder, it is quite difficult to figure out how to use the report varible without intellisense. We should use the same mechanism for "report." object intellisense support as we did for "this." objects: - UI (expression builder or script editor) get the type for "report" object - UI use reflection to get all properties, methods defined on report object. - The reflection process will be recursive.
UI/org.eclipse.birt.report.designer.ui/src/org/eclipse/birt/report/designer/ui/dialogs/ExpressionBuilder.java
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.widgets.Widget;
import org.eclipse.ui.ISharedImages;
/**
 * The expression builder
 */
public class ExpressionBuilder extends TitleAreaDialog
{
	private static final String DIALOG_TITLE = Messages.getString( "ExpressionBuidler.Dialog.Title" ); 
	private static final String PROMRT_MESSAGE = Messages.getString( "ExpressionBuilder.Message.Prompt" ); 
	private static final String LABEL_FUNCTIONS = Messages.getString( "ExpressionBuilder.Label.Functions" ); 
	private static final String LABEL_SUB_CATEGORY = Messages.getString( "ExpressionBuilder.Label.SubCategory" ); 
	private static final String LABEL_CATEGORY = Messages.getString( "ExpressionBuilder.Label.Category" ); 
	private static final String LABEL_OPERATORS = Messages.getString( "ExpressionBuilder.Label.Operators" ); 
	private static final String TOOL_TIP_TEXT_REDO = Messages.getString( "TextEditDialog.toolTipText.redo" ); 
	private static final String TOOL_TIP_TEXT_UNDO = Messages.getString( "TextEditDialog.toolTipText.undo" ); 
	private static final String TOOL_TIP_TEXT_DELETE = Messages.getString( "TextEditDialog.toolTipText.delete" ); 
	private static final String TOOL_TIP_TEXT_PASTE = Messages.getString( "TextEditDialog.toolTipText.paste" ); 
	private static final String TOOL_TIP_TEXT_CUT = Messages.getString( "TextEditDialog.toolTipText.cut" ); 
	private static final String TOOL_TIP_TEXT_COPY = Messages.getString( "TextEditDialog.toolTipText.copy" ); 
	private class TableContentProvider implements IStructuredContentProvider