diff options
author | Stefan Seelmann <mail@stefan-seelmann.de> | 2021-01-10 23:28:59 +0300 |
---|---|---|
committer | Stefan Seelmann <mail@stefan-seelmann.de> | 2021-01-10 23:28:59 +0300 |
commit | dfed72919c1018dc73e4ace51c4b508239bd32e2 (patch) | |
tree | c8333021164b34fc418b322c49fe0fdff52bb451 | |
parent | a543b2d9c7154f913ab5a61af34ad5e8416b0fbb (diff) |
DIRSTUDIO-837, DIRSTUDIO-1167: Fix quick search, require one instance per connection rather than one global object
8 files changed, 42 insertions, 61 deletions
diff --git a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/actions/OpenQuickSearchAction.java b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/actions/OpenQuickSearchAction.java index 6efa6a5dd..774fd5bed 100644 --- a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/actions/OpenQuickSearchAction.java +++ b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/actions/OpenQuickSearchAction.java @@ -24,7 +24,6 @@ package org.apache.directory.studio.ldapbrowser.common.actions; import org.apache.directory.studio.connection.core.Utils; import org.apache.directory.studio.ldapbrowser.common.BrowserCommonActivator; import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants; -import org.apache.directory.studio.ldapbrowser.common.widgets.browser.BrowserWidget; import org.apache.directory.studio.ldapbrowser.core.jobs.SearchRunnable; import org.apache.directory.studio.ldapbrowser.core.jobs.StudioBrowserJob; import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection; @@ -45,19 +44,6 @@ import org.eclipse.ui.dialogs.PreferencesUtil; */ public class OpenQuickSearchAction extends BrowserAction { - /** The browser widget */ - private BrowserWidget widget; - - - /** - * Creates a new instance of OpenQuickSearchAction. - */ - public OpenQuickSearchAction( BrowserWidget widget ) - { - this.widget = widget; - } - - /** * {@inheritDoc} */ @@ -68,7 +54,7 @@ public class OpenQuickSearchAction extends BrowserAction if ( browserConnection != null ) { // Getting the current quick search - IQuickSearch quickSearch = widget.getQuickSearch(); + IQuickSearch quickSearch = browserConnection.getSearchManager().getQuickSearch(); // Creating a new quick search with the currently selected entry // if there's no current quick search or quick search isn't selected @@ -88,7 +74,7 @@ public class OpenQuickSearchAction extends BrowserAction // Creating a new quick search quickSearch = new QuickSearch( searchBase, browserConnection ); - widget.setQuickSearch( quickSearch ); + browserConnection.getSearchManager().setQuickSearch( quickSearch ); } // Creating and opening the dialog @@ -201,7 +187,7 @@ public class OpenQuickSearchAction extends BrowserAction { if ( getSelectedSearches().length == 1 ) { - return getSelectedSearches()[0].equals( widget.getQuickSearch() ); + return getSelectedSearches()[0] instanceof IQuickSearch; } return false; diff --git a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserActionGroup.java b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserActionGroup.java index 19ce4853f..68dd46fe2 100644 --- a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserActionGroup.java +++ b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserActionGroup.java @@ -108,8 +108,7 @@ public class BrowserActionGroup implements ActionHandlerManager, IMenuListener showQuickSearchAction = new ShowQuickSearchAction( mainWidget.getQuickSearchWidget() ); collapseAllAction = new CollapseAllAction( viewer ); - browserActionMap.put( OPEN_QUICK_SEARCH_ACTION, new BrowserViewActionProxy( viewer, new OpenQuickSearchAction( - mainWidget ) ) ); + browserActionMap.put( OPEN_QUICK_SEARCH_ACTION, new BrowserViewActionProxy( viewer, new OpenQuickSearchAction() ) ); browserActionMap.put( UP_ACTION, new BrowserViewActionProxy( viewer, new UpAction( viewer ) ) ); browserActionMap.put( REFRESH_ACTION, new BrowserViewActionProxy( viewer, new RefreshAction() ) ); browserActionMap.put( FILTER_CHILDREN_ACTION, new BrowserViewActionProxy( viewer, new FilterChildrenAction() ) ); diff --git a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserContentProvider.java b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserContentProvider.java index 87436e826..222358cdc 100644 --- a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserContentProvider.java +++ b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserContentProvider.java @@ -60,9 +60,6 @@ import org.eclipse.jface.viewers.Viewer; */ public class BrowserContentProvider implements ITreeContentProvider { - /** The browser widget */ - private BrowserWidget widget; - /** The viewer. */ private TreeViewer viewer; @@ -106,7 +103,6 @@ public class BrowserContentProvider implements ITreeContentProvider */ public BrowserContentProvider( BrowserWidget widget, BrowserPreferences preferences, BrowserSorter sorter ) { - this.widget = widget; this.viewer = widget.getViewer(); this.preferences = preferences; this.sorter = sorter; @@ -353,6 +349,7 @@ public class BrowserContentProvider implements ITreeContentProvider else if ( parent instanceof IEntry ) { final IEntry parentEntry = ( IEntry ) parent; + IQuickSearch quickSearch = parentEntry.getBrowserConnection().getSearchManager().getQuickSearch(); if ( parentEntry instanceof IContinuation ) { @@ -384,10 +381,10 @@ public class BrowserContentProvider implements ITreeContentProvider List<Object> objects = new ArrayList<Object>(); - if ( widget.getQuickSearch() != null - && parentEntry.getDn().equals( widget.getQuickSearch().getSearchBase() ) ) + if ( quickSearch != null + && parentEntry.getDn().equals( quickSearch.getSearchBase() ) ) { - objects.add( widget.getQuickSearch() ); + objects.add( quickSearch ); } if ( parentEntry.getTopPageChildrenRunnable() != null ) @@ -410,10 +407,10 @@ public class BrowserContentProvider implements ITreeContentProvider List<Object> objects = new ArrayList<Object>(); - if ( widget.getQuickSearch() != null - && parentEntry.getDn().equals( widget.getQuickSearch().getSearchBase() ) ) + if ( quickSearch != null + && parentEntry.getDn().equals( quickSearch.getSearchBase() ) ) { - objects.add( widget.getQuickSearch() ); + objects.add( quickSearch ); } objects.addAll( Arrays.asList( entryPages ) ); diff --git a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserQuickSearchWidget.java b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserQuickSearchWidget.java index b28b8cf9d..923ceb11c 100644 --- a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserQuickSearchWidget.java +++ b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserQuickSearchWidget.java @@ -333,7 +333,7 @@ public class BrowserQuickSearchWidget quickSearch.getSearchParameter().setFilter( filter.toString() ); // set new quick search - browserWidget.setQuickSearch( quickSearch ); + conn.getSearchManager().setQuickSearch( quickSearch ); // execute quick search new StudioBrowserJob( new SearchRunnable( new ISearch[] diff --git a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserUniversalListener.java b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserUniversalListener.java index 244d6a4e3..ef37d6cc4 100644 --- a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserUniversalListener.java +++ b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserUniversalListener.java @@ -277,9 +277,9 @@ public class BrowserUniversalListener implements ConnectionUpdateListener, Entry if ( ( search instanceof IQuickSearch ) && ( searchUpdateEvent.getDetail() == EventDetail.SEARCH_REMOVED ) ) { - if ( widget.getQuickSearch() == search ) + if ( search.getBrowserConnection().getSearchManager().getQuickSearch() == search ) { - widget.setQuickSearch( null ); + search.getBrowserConnection().getSearchManager().setQuickSearch( null ); } } diff --git a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserWidget.java b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserWidget.java index f7ef22765..70856a290 100644 --- a/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserWidget.java +++ b/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/browser/BrowserWidget.java @@ -24,7 +24,6 @@ package org.apache.directory.studio.ldapbrowser.common.widgets.browser; import org.apache.directory.studio.common.ui.widgets.BaseWidgetUtils; import org.apache.directory.studio.common.ui.widgets.ViewFormWidget; import org.apache.directory.studio.ldapbrowser.common.dialogs.SelectEntryDialog; -import org.apache.directory.studio.ldapbrowser.core.model.IQuickSearch; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.viewers.TreeViewer; @@ -65,9 +64,6 @@ public class BrowserWidget extends ViewFormWidget /** The tree viewer. */ private TreeViewer viewer; - /** The quick search. */ - private IQuickSearch quickSearch; - /** * Creates a new instance of BrowserWidget. @@ -246,26 +242,4 @@ public class BrowserWidget extends ViewFormWidget { return viewer; } - - - /** - * Sets the quick search. - * - * @param quickSearch the new quick search - */ - public void setQuickSearch( IQuickSearch quickSearch ) - { - this.quickSearch = quickSearch; - } - - - /** - * Gets the quick search. - * - * @return the quick search - */ - public IQuickSearch getQuickSearch() - { - return quickSearch; - } } diff --git a/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/SearchManager.java b/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/SearchManager.java index 80d9603c6..7e7d5db85 100644 --- a/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/SearchManager.java +++ b/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/SearchManager.java @@ -28,6 +28,7 @@ import java.util.List; import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry; import org.apache.directory.studio.ldapbrowser.core.events.SearchUpdateEvent; import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection; +import org.apache.directory.studio.ldapbrowser.core.model.IQuickSearch; import org.apache.directory.studio.ldapbrowser.core.model.ISearch; import org.eclipse.osgi.util.NLS; @@ -49,6 +50,8 @@ public class SearchManager implements Serializable /** The connection. */ private IBrowserConnection connection; + /** The quick search. */ + private IQuickSearch quickSearch; /** * Creates a new instance of SearchManager. @@ -209,4 +212,26 @@ public class SearchManager implements Serializable { return searchList.size(); } + + + /** + * Sets the quick search. + * + * @param quickSearch the new quick search + */ + public void setQuickSearch( IQuickSearch quickSearch ) + { + this.quickSearch = quickSearch; + } + + + /** + * Gets the quick search. + * + * @return the quick search + */ + public IQuickSearch getQuickSearch() + { + return quickSearch; + } } diff --git a/plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/browser/BrowserViewUniversalListener.java b/plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/browser/BrowserViewUniversalListener.java index 8c5159f08..790971364 100644 --- a/plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/browser/BrowserViewUniversalListener.java +++ b/plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/browser/BrowserViewUniversalListener.java @@ -550,9 +550,9 @@ public class BrowserViewUniversalListener extends BrowserUniversalListener imple if ( ( search instanceof IQuickSearch ) && ( searchUpdateEvent.getDetail() == EventDetail.SEARCH_REMOVED ) ) { - if ( widget.getQuickSearch() == search ) + if ( search.getBrowserConnection().getSearchManager().getQuickSearch() == search ) { - widget.setQuickSearch( null ); + search.getBrowserConnection().getSearchManager().setQuickSearch( null ); } } @@ -568,7 +568,7 @@ public class BrowserViewUniversalListener extends BrowserUniversalListener imple } else if ( ( search instanceof IQuickSearch ) && ( searchUpdateEvent.getDetail() != EventDetail.SEARCH_REMOVED ) ) { - if ( widget.getQuickSearch() == search ) + if ( search.getBrowserConnection().getSearchManager().getQuickSearch() == search ) { viewer.setSelection( new StructuredSelection( search ), true ); } |