You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2007/01/12 00:02:15 UTC
svn commit: r495424 - in
/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui:
views/browser/ widgets/browser/
Author: seelmann
Date: Thu Jan 11 15:02:14 2007
New Revision: 495424
URL: http://svn.apache.org/viewvc?view=rev&rev=495424
Log:
Another fix for DIRSTUDIO-27, removed warnings
Modified:
directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/browser/BrowserViewUniversalListener.java
directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/widgets/browser/BrowserContentProvider.java
directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/widgets/browser/BrowserUniversalListener.java
Modified: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/browser/BrowserViewUniversalListener.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/browser/BrowserViewUniversalListener.java?view=diff&rev=495424&r1=495423&r2=495424
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/browser/BrowserViewUniversalListener.java (original)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/browser/BrowserViewUniversalListener.java Thu Jan 11 15:02:14 2007
@@ -279,9 +279,20 @@
public void entryUpdated( EntryModificationEvent event )
{
+
+ // Don't handle attribute initalization, could cause double
+ // retrieval of children.
+ //
+ // When double-clicking an entry two Jobs/Threads are started:
+ // - InitializeAttributesJob and
+ // - InitializeChildrenJob
+ // If the InitializeAttributesJob is finished first the
+ // AttributesInitializedEvent is fired. If this causes
+ // a refresh of the tree before the children are initialized
+ // another InitializeChildrenJob is executed.
if ( event instanceof AttributesInitializedEvent )
{
- this.viewer.refresh(); // This was added to fix the DIRSTUDIO-27 Jira.
+ return;
}
if ( event instanceof EntryAddedEvent )
Modified: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/widgets/browser/BrowserContentProvider.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/widgets/browser/BrowserContentProvider.java?view=diff&rev=495424&r1=495423&r2=495424
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/widgets/browser/BrowserContentProvider.java (original)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/widgets/browser/BrowserContentProvider.java Thu Jan 11 15:02:14 2007
@@ -52,20 +52,20 @@
protected BrowserSorter sorter;
- private Map entryToEntryPagesMap;
+ private Map<IEntry, BrowserEntryPage[]> entryToEntryPagesMap;
- private Map searchToSearchResultPagesMap;
+ private Map<ISearch, BrowserSearchResultPage[]> searchToSearchResultPagesMap;
- private Map connectionToCategoriesMap;
+ private Map<IConnection, BrowserCategory[]> connectionToCategoriesMap;
public BrowserContentProvider( BrowserPreferences layout, BrowserSorter sorter )
{
this.layout = layout;
this.sorter = sorter;
- this.entryToEntryPagesMap = new HashMap();
- this.searchToSearchResultPagesMap = new HashMap();
- this.connectionToCategoriesMap = new HashMap();
+ this.entryToEntryPagesMap = new HashMap<IEntry, BrowserEntryPage[]>();
+ this.searchToSearchResultPagesMap = new HashMap<ISearch, BrowserSearchResultPage[]>();
+ this.connectionToCategoriesMap = new HashMap<IConnection, BrowserCategory[]>();
}
@@ -103,34 +103,15 @@
if ( !this.connectionToCategoriesMap.containsKey( connection ) )
{
BrowserCategory[] categories = new BrowserCategory[3];
- List entryList = new ArrayList();
- if ( connection.isOpened() )
- {
- entryList.addAll( Arrays.asList( connection.getBaseDNEntries() ) );
- entryList.add( connection.getRootDSE() );
- entryList.addAll( Arrays.asList( connection.getMetadataEntries() ) );
- }
- categories[0] = new BrowserCategory( BrowserCategory.TYPE_DIT, connection, entryList.toArray() );
- categories[1] = new BrowserCategory( BrowserCategory.TYPE_SEARCHES, connection, connection
- .getSearchManager().getSearches() );
- categories[2] = new BrowserCategory( BrowserCategory.TYPE_BOOKMARKS, connection, connection
- .getBookmarkManager().getBookmarks() );
+ categories[0] = new BrowserCategory( BrowserCategory.TYPE_DIT, connection, null );
+ categories[1] = new BrowserCategory( BrowserCategory.TYPE_SEARCHES, connection, null );
+ categories[2] = new BrowserCategory( BrowserCategory.TYPE_BOOKMARKS, connection, null );
this.connectionToCategoriesMap.put( connection, categories );
}
- BrowserCategory[] categories = ( BrowserCategory[] ) this.connectionToCategoriesMap.get( connection );
- List entryList = new ArrayList();
- if ( connection.isOpened() )
- {
- entryList.addAll( Arrays.asList( connection.getBaseDNEntries() ) );
- entryList.add( connection.getRootDSE() );
- entryList.addAll( Arrays.asList( connection.getMetadataEntries() ) );
- }
- categories[0].setChildren( entryList.toArray() );
- categories[1].setChildren( connection.getSearchManager().getSearches() );
- categories[2].setChildren( connection.getBookmarkManager().getBookmarks() );
+ BrowserCategory[] categories = this.connectionToCategoriesMap.get( connection );
- List catList = new ArrayList( 3 );
+ List<BrowserCategory> catList = new ArrayList<BrowserCategory>( 3 );
if ( this.layout.isShowDIT() )
catList.add( categories[0] );
if ( this.layout.isShowSearches() )
@@ -138,7 +119,7 @@
if ( this.layout.isShowBookmarks() )
catList.add( categories[2] );
- return ( BrowserCategory[] ) catList.toArray( new BrowserCategory[0] );
+ return catList.toArray( new BrowserCategory[0] );
}
else if ( parent instanceof IEntry[] )
{
@@ -168,8 +149,7 @@
{
if ( this.connectionToCategoriesMap.get( ( ( IEntry ) child ).getConnection() ) != null )
{
- return ( ( BrowserCategory[] ) this.connectionToCategoriesMap.get( ( ( IEntry ) child )
- .getConnection() ) )[0];
+ return this.connectionToCategoriesMap.get( ( ( IEntry ) child ).getConnection() )[0];
}
else
{
@@ -178,7 +158,7 @@
}
else if ( this.entryToEntryPagesMap.containsKey( parentEntry ) )
{
- BrowserEntryPage[] entryPages = ( BrowserEntryPage[] ) this.entryToEntryPagesMap.get( parentEntry );
+ BrowserEntryPage[] entryPages = this.entryToEntryPagesMap.get( parentEntry );
BrowserEntryPage ep = null;
for ( int i = 0; i < entryPages.length && ep == null; i++ )
{
@@ -198,15 +178,14 @@
else if ( child instanceof ISearch )
{
ISearch search = ( ( ISearch ) child );
- return ( ( BrowserCategory[] ) this.connectionToCategoriesMap.get( search.getConnection() ) )[1];
+ return this.connectionToCategoriesMap.get( search.getConnection() )[1];
}
else if ( child instanceof ISearchResult )
{
ISearch parentSearch = ( ( ISearchResult ) child ).getSearch();
if ( parentSearch != null && this.searchToSearchResultPagesMap.containsKey( parentSearch ) )
{
- BrowserSearchResultPage[] srPages = ( BrowserSearchResultPage[] ) this.searchToSearchResultPagesMap
- .get( parentSearch );
+ BrowserSearchResultPage[] srPages = this.searchToSearchResultPagesMap.get( parentSearch );
BrowserSearchResultPage srp = null;
for ( int i = 0; i < srPages.length && srp == null; i++ )
{
@@ -222,7 +201,7 @@
else if ( child instanceof IBookmark )
{
IBookmark bookmark = ( ( IBookmark ) child );
- return ( ( BrowserCategory[] ) this.connectionToCategoriesMap.get( bookmark.getConnection() ) )[2];
+ return this.connectionToCategoriesMap.get( bookmark.getConnection() )[2];
}
else
{
@@ -294,7 +273,7 @@
}
else
{
- entryPages = ( BrowserEntryPage[] ) this.entryToEntryPagesMap.get( parentEntry );
+ entryPages = this.entryToEntryPagesMap.get( parentEntry );
if ( childrenCount - 1 != entryPages[entryPages.length - 1].getLast() )
{
entryPages = getEntryPages( parentEntry, 0, childrenCount - 1 );
@@ -354,7 +333,7 @@
}
else
{
- srPages = ( BrowserSearchResultPage[] ) this.searchToSearchResultPagesMap.get( search );
+ srPages = this.searchToSearchResultPagesMap.get( search );
if ( search.getSearchResults().length - 1 != srPages[srPages.length - 1].getLast() )
{
srPages = getSearchResultPages( search, 0, search.getSearchResults().length - 1 );
@@ -367,27 +346,58 @@
else if ( parent instanceof BrowserCategory )
{
BrowserCategory category = ( BrowserCategory ) parent;
+ IConnection connection = category.getParent();
- List objects = new ArrayList( Arrays.asList( category.getChildren() ) );
- for ( Iterator it = objects.iterator(); it.hasNext(); )
+ switch ( category.getType() )
{
- Object o = it.next();
- if ( !this.layout.isShowDirectoryMetaEntries()
- && ( o instanceof DirectoryMetadataEntry || o instanceof RootDSE ) )
+
+ case BrowserCategory.TYPE_DIT:
+ {
+
+ // open connection when expanding DIT
+ if ( !connection.isOpened() )
+ {
+ new OpenConnectionsJob( connection ).execute();
+ return new String[]
+ { "Fetching Entries..." };
+ }
+
+ // get base entries
+ List<IEntry> entryList = new ArrayList<IEntry>();
+ if ( connection.isOpened() )
+ {
+ entryList.addAll( Arrays.asList( connection.getBaseDNEntries() ) );
+ entryList.add( connection.getRootDSE() );
+ entryList.addAll( Arrays.asList( connection.getMetadataEntries() ) );
+ }
+
+ // remove non-visible entries
+ for ( Iterator<IEntry> it = entryList.iterator(); it.hasNext(); )
+ {
+ Object o = it.next();
+ if ( !this.layout.isShowDirectoryMetaEntries()
+ && ( o instanceof DirectoryMetadataEntry || o instanceof RootDSE ) )
+ {
+ it.remove();
+ }
+ }
+
+ return entryList.toArray();
+ }
+
+ case BrowserCategory.TYPE_SEARCHES:
{
- it.remove();
+ return connection.getSearchManager().getSearches();
+ }
+
+ case BrowserCategory.TYPE_BOOKMARKS:
+ {
+ return connection.getBookmarkManager().getBookmarks();
}
- }
- // open connection when expanding DIT
- if ( category.getType() == BrowserCategory.TYPE_DIT && !category.getParent().isOpened() )
- {
- new OpenConnectionsJob( category.getParent() ).execute();
- return new String[]
- { "Fetching Entries..." };
}
- return objects.toArray();
+ return new Object[0];
}
else
{
Modified: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/widgets/browser/BrowserUniversalListener.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/widgets/browser/BrowserUniversalListener.java?view=diff&rev=495424&r1=495423&r2=495424
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/widgets/browser/BrowserUniversalListener.java (original)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/widgets/browser/BrowserUniversalListener.java Thu Jan 11 15:02:14 2007
@@ -106,7 +106,15 @@
{
// Don't handle attribute initalization, could cause double
- // retrieval of children
+ // retrieval of children.
+ //
+ // When double-clicking an entry two Jobs/Threads are started:
+ // - InitializeAttributesJob and
+ // - InitializeChildrenJob
+ // If the InitializeAttributesJob is finished first the
+ // AttributesInitializedEvent is fired. If this causes
+ // a refresh of the tree before the children are initialized
+ // another InitializeChildrenJob is executed.
if ( event instanceof AttributesInitializedEvent )
{
return;