Bug 139110 GUI enhancement to support create subquery more conveniently.
Description: GUI enhancement to support create subquery more conveniently. Steps to reproduce: Subquery means insert table/list inside another table/list item, and the inner table/list item doesn't has its own dataset binding. In latest build, if you want to creat a subquery structure, you have to use dataSetRow as binding expression for data items in inner table/list item. For example: 1. Insert a list, generate column data binding for it. 2. Add a group for the list. 3. Insert table to list group header which is used to display data rows in list group. Dont' bind table to dataset. 4. Insert a data to table detail row. 5. New a binding column for data, click to Open Expression Builder. The issue is that only "Availabel column bindings" is listed in Category but no "Available Data Sets". So I have to type dataSetRow[".."] by myself to generate correct subquery. For users, maybe they will mistakenly use "Available column bindings" which will generate expression like row._outer[".."] and get wrong result. So it is recommended to add "Available Data Sets" in Expression Builder for such case.
UI/org.eclipse.birt.report.designer.core/src/org/eclipse/birt/report/designer/util/DEUtil.java
bindingList.add( iterator.next( ) );
			}
		}
		ReportItemHandle holder = getBindingHolder( handle );
		if ( holder != null )
		{
			if ( holder instanceof ListingHandle
					&& ( (ListingHandle) holder ).getDetail( ) == handle.getContainerSlotHandle( ) )
			{
				SlotHandle groupSlotHandle = ( (ListingHandle) holder ).getGroups( );
				for ( Iterator iter = groupSlotHandle.iterator( ); iter.hasNext( ); )
				{
					GroupHandle group = (GroupHandle) iter.next( );
					for ( Iterator columnIter = group.columnBindingsIterator( ); columnIter.hasNext( ); )
					{
						bindingList.add( columnIter.next( ) );
					}
				}
			}
			for ( DesignElementHandle elementHandle = handle.getContainer( ); elementHandle != holder.getContainer( ); elementHandle = elementHandle.getContainer( ) )
			{
				List subBindingList = new ArrayList( );
				Iterator iterator = getBindingColumnIterator( elementHandle );
				while ( iterator.hasNext( ) )
				{
					subBindingList.add( iterator.next( ) );
				}
				bindingList.addAll( 0, subBindingList );
			}
		}