getTreeViewer( ).addDropSupport( ops, transfers, new LibraryDropListener( getTreeViewer( ) ) );
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 );
	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( )		};		getTreeViewer( ).addDropSupport( ops,				transfers,				new LibraryDropListener( getTreeViewer( ) ) );	}