Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 16177 invoked from network); 9 Aug 2008 08:34:44 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 9 Aug 2008 08:34:44 -0000 Received: (qmail 63342 invoked by uid 500); 9 Aug 2008 08:34:44 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 63312 invoked by uid 500); 9 Aug 2008 08:34:44 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 63301 invoked by uid 99); 9 Aug 2008 08:34:44 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 09 Aug 2008 01:34:44 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 09 Aug 2008 08:33:56 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 02D5D23889BB; Sat, 9 Aug 2008 01:33:54 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r684195 - in /directory/studio/branches/1.2.x: ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/actions/ ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/ ldapbrowser-cor... Date: Sat, 09 Aug 2008 08:33:53 -0000 To: commits@directory.apache.org From: seelmann@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080809083354.02D5D23889BB@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: seelmann Date: Sat Aug 9 01:33:52 2008 New Revision: 684195 URL: http://svn.apache.org/viewvc?rev=684195&view=rev Log: Fix for DIRSTUDIO-365: Added option to the delete dialog to enable/disable tree delete control Added: directory/studio/branches/1.2.x/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/DeleteDialog.java Modified: directory/studio/branches/1.2.x/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/actions/DeleteAction.java directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java Modified: directory/studio/branches/1.2.x/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/actions/DeleteAction.java URL: http://svn.apache.org/viewvc/directory/studio/branches/1.2.x/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/actions/DeleteAction.java?rev=684195&r1=684194&r2=684195&view=diff ============================================================================== --- directory/studio/branches/1.2.x/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/actions/DeleteAction.java (original) +++ directory/studio/branches/1.2.x/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/actions/DeleteAction.java Sat Aug 9 01:33:52 2008 @@ -35,6 +35,7 @@ import org.apache.directory.shared.ldap.name.AttributeTypeAndValue; import org.apache.directory.shared.ldap.schema.syntax.AttributeTypeDescription; import org.apache.directory.shared.ldap.schema.syntax.ObjectClassDescription; +import org.apache.directory.studio.ldapbrowser.common.dialogs.DeleteDialog; import org.apache.directory.studio.ldapbrowser.core.BrowserCoreConstants; import org.apache.directory.studio.ldapbrowser.core.jobs.DeleteAttributesValueJob; import org.apache.directory.studio.ldapbrowser.core.jobs.DeleteEntriesJob; @@ -47,7 +48,6 @@ import org.apache.directory.studio.ldapbrowser.core.model.IValue; import org.apache.directory.studio.ldapbrowser.core.model.schema.Schema; import org.apache.directory.studio.ldapbrowser.core.model.schema.SchemaUtils; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; @@ -75,28 +75,28 @@ IAttribute[] attributes = getAttributes(); IValue[] values = getValues(); - if ( entries.length > 0 && searches.length == 0 && bookmarks.length == 0 - && attributes.length == 0 && values.length == 0 ) + if ( entries.length > 0 && searches.length == 0 && bookmarks.length == 0 && attributes.length == 0 + && values.length == 0 ) { return entries.length > 1 ? "Delete Entries" : "Delete Entry"; } - if ( searches.length > 0 && entries.length == 0 && bookmarks.length == 0 - && attributes.length == 0 && values.length == 0 ) + if ( searches.length > 0 && entries.length == 0 && bookmarks.length == 0 && attributes.length == 0 + && values.length == 0 ) { return searches.length > 1 ? "Delete Searches" : "Delete Search"; } - if ( bookmarks.length > 0 && entries.length == 0 && searches.length == 0 - && attributes.length == 0 && values.length == 0 ) + if ( bookmarks.length > 0 && entries.length == 0 && searches.length == 0 && attributes.length == 0 + && values.length == 0 ) { return bookmarks.length > 1 ? "Delete Bookmarks" : "Delete Bookmark"; } - if ( attributes.length > 0 && entries.length == 0 && searches.length == 0 - && bookmarks.length == 0 && values.length == 0 ) + if ( attributes.length > 0 && entries.length == 0 && searches.length == 0 && bookmarks.length == 0 + && values.length == 0 ) { return attributes.length > 1 ? "Delete Attributes" : "Delete Attribute"; } - if ( values.length > 0 && entries.length == 0 && searches.length == 0 - && bookmarks.length == 0 && attributes.length == 0 ) + if ( values.length > 0 && entries.length == 0 && searches.length == 0 && bookmarks.length == 0 + && attributes.length == 0 ) { return values.length > 1 ? "Delete Values" : "Delete Value"; } @@ -141,6 +141,7 @@ IValue[] values = getValues(); StringBuffer message = new StringBuffer(); + boolean askForTreeDeleteControl = false; if ( entries.length > 0 ) { @@ -162,6 +163,12 @@ } message.append( BrowserCoreConstants.LINE_SEPARATOR ); message.append( BrowserCoreConstants.LINE_SEPARATOR ); + + if ( entries[0].getBrowserConnection().getRootDSE().isControlSupported( + org.apache.directory.studio.ldapbrowser.core.model.Control.TREEDELETE_CONTROL.getOid() ) ) + { + askForTreeDeleteControl = true; + } } if ( searches.length > 0 ) @@ -259,11 +266,12 @@ } } - if ( message.length() == 0 || MessageDialog.openConfirm( getShell(), getText(), message.toString() ) ) + DeleteDialog dialog = new DeleteDialog( getShell(), getText(), message.toString(), askForTreeDeleteControl ); + if ( message.length() == 0 || dialog.open() == DeleteDialog.OK ) { if ( entries.length > 0 ) { - deleteEntries( entries ); + deleteEntries( entries, dialog.isUseTreeDeleteControl() ); } if ( searches.length > 0 ) { @@ -333,8 +341,7 @@ IAttribute[] attributes = getAttributes(); IValue[] values = getValues(); - return entries.length + searches.length + bookmarks.length + attributes.length - + values.length > 0; + return entries.length + searches.length + bookmarks.length + attributes.length + values.length > 0; } catch ( Exception e ) @@ -387,14 +394,14 @@ /** - * Deletes Entries - * - * @param entries - * the Entries to delete + * Deletes Entries. + * + * @param entries the Entries to delete + * @param useTreeDeleteControl true to use the tree delete control */ - protected void deleteEntries( IEntry[] entries ) + protected void deleteEntries( IEntry[] entries, boolean useTreeDeleteControl ) { - new DeleteEntriesJob( entries ).execute(); + new DeleteEntriesJob( entries, useTreeDeleteControl ).execute(); } Added: directory/studio/branches/1.2.x/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/DeleteDialog.java URL: http://svn.apache.org/viewvc/directory/studio/branches/1.2.x/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/DeleteDialog.java?rev=684195&view=auto ============================================================================== --- directory/studio/branches/1.2.x/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/DeleteDialog.java (added) +++ directory/studio/branches/1.2.x/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/DeleteDialog.java Sat Aug 9 01:33:52 2008 @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.directory.studio.ldapbrowser.common.dialogs; + + +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Shell; + + +/** + * Dialog that prompts a user to delete items in the browser tree. + * + * @author Apache Directory Project + * @version $Rev$, $Date$ + */ +public class DeleteDialog extends MessageDialog +{ + + private Button useTreeDeleteControlCheckbox; + + private boolean askForTreeDeleteControl; + + private boolean useTreeDeleteControl; + + + /** + * Instantiates a new delete dialog. + * + * @param parentShell the parent shell + * @param title the title + * @param message the message + * @param askForTreeDeleteControl true if the user should be asked if the tree delete control should be used + */ + public DeleteDialog( Shell parentShell, String title, String message, boolean askForTreeDeleteControl ) + { + super( parentShell, title, null, message, QUESTION, new String[] + { IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL }, OK ); + + this.askForTreeDeleteControl = askForTreeDeleteControl; + this.useTreeDeleteControl = false; + } + + + @Override + protected Control createCustomArea( Composite parent ) + { + if ( askForTreeDeleteControl ) + { + useTreeDeleteControlCheckbox = new Button( parent, SWT.CHECK ); + useTreeDeleteControlCheckbox.setText( "Use Tree Delete Control" ); + return useTreeDeleteControlCheckbox; + } + else + { + return null; + } + } + + + @Override + protected void buttonPressed( int buttonId ) + { + if ( buttonId == OK ) + { + useTreeDeleteControl = useTreeDeleteControlCheckbox != null && useTreeDeleteControlCheckbox.getSelection(); + } + super.buttonPressed( buttonId ); + } + + + /** + * Checks if tree delete control should be used. + * + * @return true, if tree delete control should be used + */ + public boolean isUseTreeDeleteControl() + { + return useTreeDeleteControl; + } + +} Modified: directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java URL: http://svn.apache.org/viewvc/directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java?rev=684195&r1=684194&r2=684195&view=diff ============================================================================== --- directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java (original) +++ directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java Sat Aug 9 01:33:52 2008 @@ -37,9 +37,9 @@ import org.apache.directory.shared.ldap.name.LdapDN; import org.apache.directory.studio.connection.core.Connection; -import org.apache.directory.studio.connection.core.jobs.StudioProgressMonitor; import org.apache.directory.studio.connection.core.Connection.AliasDereferencingMethod; import org.apache.directory.studio.connection.core.Connection.ReferralHandlingMethod; +import org.apache.directory.studio.connection.core.jobs.StudioProgressMonitor; import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages; import org.apache.directory.studio.ldapbrowser.core.events.ChildrenInitializedEvent; import org.apache.directory.studio.ldapbrowser.core.events.EntryDeletedEvent; @@ -73,7 +73,7 @@ /** The entries to delete. */ private IEntry[] entriesToDelete; - + /** The deleted entries. */ private Set deletedEntriesSet; @@ -83,15 +83,19 @@ /** The searches to update. */ private Set searchesToUpdateSet; + /** The use tree delete control flag. */ + private boolean useTreeDeleteControl; + /** * Creates a new instance of DeleteEntriesJob. * * @param entriesToDelete the entries to delete */ - public DeleteEntriesJob( final IEntry[] entriesToDelete ) + public DeleteEntriesJob( final IEntry[] entriesToDelete, boolean useTreeDeleteControl ) { this.entriesToDelete = entriesToDelete; + this.useTreeDeleteControl = useTreeDeleteControl; this.deletedEntriesSet = new HashSet(); this.entriesToUpdateSet = new HashSet(); @@ -140,7 +144,8 @@ // delete from directory int errorStatusSize1 = monitor.getErrorStatus( "" ).getChildren().length; //$NON-NLS-1$ - num = optimisticDeleteEntryRecursive( browserConnection, entryToDelete.getDn(), num, dummyMonitor, monitor ); + num = optimisticDeleteEntryRecursive( browserConnection, entryToDelete.getDn(), useTreeDeleteControl, num, + dummyMonitor, monitor ); int errorStatusSize2 = monitor.getErrorStatus( "" ).getChildren().length; //$NON-NLS-1$ if ( !monitor.isCanceled() ) @@ -207,6 +212,7 @@ * * @param browserConnection the browser connection * @param dn the DN to delete + * @param useTreeDeleteControl true to use the tree delete control * @param numberOfDeletedEntries the number of deleted entries * @param dummyMonitor the dummy monitor * @param monitor the progress monitor @@ -214,11 +220,12 @@ * @return the cumulative number of deleted entries */ static int optimisticDeleteEntryRecursive( IBrowserConnection browserConnection, LdapDN dn, - int numberOfDeletedEntries, StudioProgressMonitor dummyMonitor, StudioProgressMonitor monitor ) + boolean useTreeDeleteControl, int numberOfDeletedEntries, StudioProgressMonitor dummyMonitor, + StudioProgressMonitor monitor ) { // try to delete entry dummyMonitor.reset(); - deleteEntry( browserConnection, dn, dummyMonitor ); + deleteEntry( browserConnection, dn, useTreeDeleteControl, dummyMonitor ); if ( !dummyMonitor.errorsReported() ) { @@ -263,7 +270,7 @@ SearchResult sr = result.next(); LdapDN childDn = JNDIUtils.getDn( sr ); - numberOfDeletedEntries = optimisticDeleteEntryRecursive( browserConnection, childDn, + numberOfDeletedEntries = optimisticDeleteEntryRecursive( browserConnection, childDn, false, numberOfDeletedEntries, dummyMonitor, monitor ); numberInBatch++; } @@ -288,7 +295,7 @@ // try to delete the entry again if ( !dummyMonitor.errorsReported() ) { - deleteEntry( browserConnection, dn, dummyMonitor ); + deleteEntry( browserConnection, dn, false, dummyMonitor ); } if ( !dummyMonitor.errorsReported() ) { @@ -337,12 +344,14 @@ } - static void deleteEntry( IBrowserConnection browserConnection, LdapDN dn, StudioProgressMonitor monitor ) + static void deleteEntry( IBrowserConnection browserConnection, LdapDN dn, boolean useTreeDeleteControl, + StudioProgressMonitor monitor ) { // controls List controlList = new ArrayList(); - if ( browserConnection.getRootDSE().isControlSupported( - org.apache.directory.studio.ldapbrowser.core.model.Control.TREEDELETE_CONTROL.getOid() ) ) + if ( useTreeDeleteControl + && browserConnection.getRootDSE().isControlSupported( + org.apache.directory.studio.ldapbrowser.core.model.Control.TREEDELETE_CONTROL.getOid() ) ) { Control treeDeleteControl = new BasicControl( org.apache.directory.studio.ldapbrowser.core.model.Control.TREEDELETE_CONTROL.getOid(), Modified: directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java URL: http://svn.apache.org/viewvc/directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java?rev=684195&r1=684194&r2=684195&view=diff ============================================================================== --- directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java (original) +++ directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java Sat Aug 9 01:33:52 2008 @@ -174,8 +174,8 @@ if ( !dummyMonitor.errorsReported() ) { dummyMonitor.reset(); - numDel = DeleteEntriesJob.optimisticDeleteEntryRecursive( browserConnection, oldDn, numDel, - dummyMonitor, monitor ); + numDel = DeleteEntriesJob.optimisticDeleteEntryRecursive( browserConnection, oldDn, false, + numDel, dummyMonitor, monitor ); } } else Modified: directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java URL: http://svn.apache.org/viewvc/directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java?rev=684195&r1=684194&r2=684195&view=diff ============================================================================== --- directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java (original) +++ directory/studio/branches/1.2.x/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java Sat Aug 9 01:33:52 2008 @@ -158,8 +158,8 @@ if ( !dummyMonitor.errorsReported() ) { dummyMonitor.reset(); - DeleteEntriesJob.optimisticDeleteEntryRecursive( browserConnection, oldDn, 0, dummyMonitor, - monitor ); + DeleteEntriesJob.optimisticDeleteEntryRecursive( browserConnection, oldDn, false, 0, + dummyMonitor, monitor ); } } else