dropListener.addDropConstraint( ParameterGroupHandle.class, new DropTypeConstraint( ParameterHandle.class, ParameterGroupHandle.class, true ) );
	protected void addDragAndDropListener()	{		//add drag and drop support		int ops = DND.DROP_MOVE | DND.DROP_COPY;		Transfer[] transfers = new Transfer[]{			TemplateTransfer.getInstance( )		};		getTreeViewer( ).addDragSupport( ops,				transfers,				new DesignerDragListener( getTreeViewer( ) ) );		transfers = new Transfer[]{			TemplateTransfer.getInstance( )		};				DesignerDropListener dropListener = new LibraryDropListener( getTreeViewer( ) );		dropListener.addDropConstraint( ParameterGroupHandle.class,				new DropTypeConstraint( ParameterHandle.class,						ParameterGroupHandle.class,						true ) );		dropListener.addDropConstraint( ParameterGroupHandle.class,				new DropTypeConstraint( Object.class,						ParameterGroupHandle.class,						false ) );		dropListener.addDropConstraint( CascadingParameterGroupHandle.class,				new IDropConstraint( ) {					public int validate( Object transfer, Object target )					{						return RESULT_NO;					}				} );				dropListener.addDropConstraint( ScalarParameterHandle.class,				new IDropConstraint( ) {					public int validate( Object transfer, Object target )					{						ScalarParameterHandle targetParameter = (ScalarParameterHandle) target;						if ( targetParameter.getContainer( ) instanceof CascadingParameterGroupHandle )							return RESULT_NO;						return RESULT_UNKNOW;					}				} );				getTreeViewer( ).addDropSupport( ops, transfers, dropListener );	}