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/04/15 23:36:35 UTC
svn commit: r529075 - in /directory/ldapstudio/trunk:
ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/
ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/actions/proxy/
ldapstud...
Author: seelmann
Date: Sun Apr 15 14:36:34 2007
New Revision: 529075
URL: http://svn.apache.org/viewvc?view=rev&rev=529075
Log:
Improved Event Handling:
- Added EventRunner and two implemtations for UI and non-UI thread execution
- Each EventListener has to pass its specific EventRunner
- Removed EventDispatcher
Added:
directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/UiThreadEventRunner.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/CoreEventRunner.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRunner.java
Removed:
directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/EventDispatcherSync.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventDispatcher.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventListener.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventPerformanceMeter.java
Modified:
directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/BrowserCommonActivator.java
directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/actions/proxy/BrowserActionProxy.java
directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/browser/BrowserUniversalListener.java
directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/connection/ConnectionUniversalListener.java
directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/entryeditor/EntryEditorWidgetUniversalListener.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/BrowserCorePlugin.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/ConnectionManager.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/BookmarkUpdateListener.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/ConnectionUpdateListener.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EntryUpdateListener.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRegistry.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRunnable.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/SearchUpdateListener.java
directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/internal/model/DelegateEntry.java
directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/schemabrowser/ConnectionComboContributionItem.java
directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/AbstractSearchResultListenerAction.java
directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCursor.java
directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorUniversalListener.java
directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/browser/BrowserViewUniversalListener.java
directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/modificationlogs/ModificationLogsViewUniversalListener.java
directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/wizards/NewEntryAttributesWizardPage.java
directory/ldapstudio/trunk/ldapstudio-ldifeditor/src/main/java/org/apache/directory/ldapstudio/ldifeditor/editor/LdifEditor.java
Modified: directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/BrowserCommonActivator.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/BrowserCommonActivator.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/BrowserCommonActivator.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/BrowserCommonActivator.java Sun Apr 15 14:36:34 2007
@@ -5,7 +5,7 @@
import java.net.URL;
import org.apache.directory.ldapstudio.browser.core.BrowserCorePlugin;
-import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
+import org.apache.directory.ldapstudio.browser.core.events.EventRunner;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
@@ -58,11 +58,11 @@
/** The filter template context type registry. */
private ContributionContextTypeRegistry filterTemplateContextTypeRegistry;
-
- /** The event dispatcher */
- private EventDispatcherSync eventDispatcher;
-
-
+
+ /** The event runner. */
+ private EventRunner eventRunner;
+
+
/**
* The constructor
*/
@@ -78,31 +78,29 @@
public void start( BundleContext context ) throws Exception
{
super.start( context );
-
+
+ if ( eventRunner == null )
+ {
+ eventRunner = new UiThreadEventRunner();
+ }
+
if ( fontRegistry == null )
{
fontRegistry = new FontRegistry( getWorkbench().getDisplay() );
}
-
+
if ( colorRegistry == null )
{
colorRegistry = new ColorRegistry( getWorkbench().getDisplay() );
}
-
+
if ( exceptionHandler == null )
{
exceptionHandler = new ExceptionHandler();
}
- if ( eventDispatcher == null )
- {
- eventDispatcher = new EventDispatcherSync();
- eventDispatcher.startEventDispatcher();
- }
- EventRegistry.init( eventDispatcher );
-
valueEditorPreferences = new ValueEditorsPreferences();
-
+
if ( filterTemplateContextTypeRegistry == null )
{
filterTemplateContextTypeRegistry = new ContributionContextTypeRegistry();
@@ -114,9 +112,9 @@
if ( filterTemplateStore == null )
{
-
- BrowserCorePlugin.getDefault().setAuthHandler( new BrowserCommonAuthHandler() );
- BrowserCorePlugin.getDefault().setReferralHandler( new BrowserCommonReferralHandler() );}
+ BrowserCorePlugin.getDefault().setAuthHandler( new BrowserCommonAuthHandler() );
+ BrowserCorePlugin.getDefault().setReferralHandler( new BrowserCommonReferralHandler() );
+ }
}
@@ -127,33 +125,32 @@
{
plugin = null;
super.stop( context );
-
+
+ if ( eventRunner != null )
+ {
+ eventRunner = null;
+ }
+
if ( fontRegistry != null )
{
fontRegistry = null;
}
-
+
if ( colorRegistry != null )
{
colorRegistry = null;
}
-
+
if ( exceptionHandler != null )
{
exceptionHandler = null;
}
- if ( eventDispatcher != null )
- {
- eventDispatcher.stopEventDispatcher();
- eventDispatcher = null;
- }
-
if ( filterTemplateContextTypeRegistry != null )
{
filterTemplateContextTypeRegistry = null;
}
-
+
if ( filterTemplateStore != null )
{
try
@@ -183,7 +180,7 @@
/**
* Use this method to get SWT images. Use the IMG_ constants from
* BrowserWidgetsConstants for the key.
- *
+ *
* @param key
* The key (relative path to the image im filesystem)
* @return The image discriptor or null
@@ -212,7 +209,7 @@
* <p>
* Note: Don't dispose the returned SWT Image. It is disposed
* automatically when the plugin is stopped.
- *
+ *
* @param key
* The key (relative path to the image im filesystem)
* @return The SWT Image or null
@@ -233,14 +230,14 @@
return image;
}
-
+
/**
* Use this method to get SWT fonts. A FontRegistry is used to manage
* the FontData[]->Font mapping.
* <p>
* Note: Don't dispose the returned SWT Font. It is disposed
* automatically when the plugin is stopped.
- *
+ *
* @param fontData
* the font data
* @return The SWT Font
@@ -263,7 +260,7 @@
* <p>
* Note: Don't dispose the returned color. It is disposed automatically
* when the plugin is stopped.
- *
+ *
* @param rgb
* the rgb color data
* @return The SWT Color
@@ -277,32 +274,31 @@
return colorRegistry.get( rgb.toString() );
}
-
+
/**
- *
+ *
* @return The exception handler
*/
public ExceptionHandler getExceptionHandler()
{
return exceptionHandler;
}
-
-
+
+
/**
* Gets the value editors preferences.
- *
+ *
* @return the value editors preferences
*/
public ValueEditorsPreferences getValueEditorsPreferences()
{
return valueEditorPreferences;
}
-
/**
- *
+ *
* @return The filter template store
*/
public TemplateStore getFilterTemplateStore()
@@ -312,15 +308,15 @@
/**
- *
+ *
* @return The filter template context type registry
*/
public ContextTypeRegistry getFilterTemplateContextTypeRegistry()
{
return filterTemplateContextTypeRegistry;
}
-
-
+
+
/**
* Checks, if this plugins runs in the Eclipse IDE or in RCP environment.
* This is done by looking for the Resource perspective extensions.
@@ -354,8 +350,19 @@
}
}
}
-
+
return false;
}
-
+
+
+ /**
+ * Gets the event runner.
+ *
+ * @return the event runner
+ */
+ public EventRunner getEventRunner()
+ {
+ return eventRunner;
+ }
+
}
Added: directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/UiThreadEventRunner.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/UiThreadEventRunner.java?view=auto&rev=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/UiThreadEventRunner.java (added)
+++ directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/UiThreadEventRunner.java Sun Apr 15 14:36:34 2007
@@ -0,0 +1,30 @@
+
+package org.apache.directory.ldapstudio.browser.common;
+
+import org.apache.directory.ldapstudio.browser.core.events.EventRunnable;
+import org.apache.directory.ldapstudio.browser.core.events.EventRunner;
+import org.eclipse.swt.widgets.Display;
+
+
+/**
+ * Implementation of {@link EventRunner} that executes an {@link EventRunnable}
+ * withing the SWT UI thread.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class UiThreadEventRunner implements EventRunner
+{
+
+ /**
+ * {@inheritDoc}
+ *
+ * This implementation executes the given {@link EventRunnable} within
+ * the SWT UI thread.
+ */
+ public void execute( EventRunnable runnable )
+ {
+ Display.getDefault().asyncExec( runnable );
+ }
+
+}
Modified: directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/actions/proxy/BrowserActionProxy.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/actions/proxy/BrowserActionProxy.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/actions/proxy/BrowserActionProxy.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/actions/proxy/BrowserActionProxy.java Sun Apr 15 14:36:34 2007
@@ -6,21 +6,22 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.common.actions.proxy;
+import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator;
import org.apache.directory.ldapstudio.browser.common.actions.BrowserAction;
import org.apache.directory.ldapstudio.browser.common.actions.SelectionUtils;
import org.apache.directory.ldapstudio.browser.core.events.BookmarkUpdateEvent;
@@ -32,9 +33,7 @@
import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
import org.apache.directory.ldapstudio.browser.core.events.SearchUpdateEvent;
import org.apache.directory.ldapstudio.browser.core.events.SearchUpdateListener;
-
import org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
@@ -63,10 +62,10 @@
this.selectionProvider.addSelectionChangedListener( this );
// PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().addSelectionListener(this);
- EventRegistry.addConnectionUpdateListener( this );
- EventRegistry.addEntryUpdateListener( this );
- EventRegistry.addSearchUpdateListener( this );
- EventRegistry.addBookmarkUpdateListener( this );
+ EventRegistry.addConnectionUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
+ EventRegistry.addEntryUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
+ EventRegistry.addSearchUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
+ EventRegistry.addBookmarkUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
this.updateAction();
Modified: directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/browser/BrowserUniversalListener.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/browser/BrowserUniversalListener.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/browser/BrowserUniversalListener.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/browser/BrowserUniversalListener.java Sun Apr 15 14:36:34 2007
@@ -6,21 +6,22 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.common.widgets.browser;
+import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator;
import org.apache.directory.ldapstudio.browser.core.events.AttributesInitializedEvent;
import org.apache.directory.ldapstudio.browser.core.events.ConnectionUpdateEvent;
import org.apache.directory.ldapstudio.browser.core.events.ConnectionUpdateListener;
@@ -54,13 +55,13 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation checks if the collapsed entry more children
- * than currently fetched. If this is the case cached children are
+ * than currently fetched. If this is the case cached children are
* cleared an must be fetched newly when expanding the tree.
- *
+ *
* This could happen when first using a search that returns
- * only some of an entry's children.
+ * only some of an entry's children.
*/
public void treeCollapsed( TreeExpansionEvent event )
{
@@ -119,8 +120,8 @@
viewer.addTreeListener( treeViewerListener );
viewer.addDoubleClickListener( doubleClickListener );
- EventRegistry.addConnectionUpdateListener( this );
- EventRegistry.addEntryUpdateListener( this );
+ EventRegistry.addConnectionUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
+ EventRegistry.addEntryUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
}
@@ -144,8 +145,8 @@
/**
* {@inheritDoc}
- *
- * This implementation refreshes the tree and collapses the
+ *
+ * This implementation refreshes the tree and collapses the
* tree when the connection is closed.
*/
public void connectionUpdated( ConnectionUpdateEvent connectionUpdateEvent )
@@ -167,13 +168,13 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation refreshes the tree.
*/
public void entryUpdated( EntryModificationEvent event )
{
// 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
Modified: directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/connection/ConnectionUniversalListener.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/connection/ConnectionUniversalListener.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/connection/ConnectionUniversalListener.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/connection/ConnectionUniversalListener.java Sun Apr 15 14:36:34 2007
@@ -6,21 +6,22 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.common.widgets.connection;
+import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator;
import org.apache.directory.ldapstudio.browser.core.events.BookmarkUpdateEvent;
import org.apache.directory.ldapstudio.browser.core.events.BookmarkUpdateListener;
import org.apache.directory.ldapstudio.browser.core.events.ConnectionUpdateEvent;
@@ -58,10 +59,10 @@
{
this.viewer = viewer;
- EventRegistry.addConnectionUpdateListener( this );
- EventRegistry.addEntryUpdateListener( this );
- EventRegistry.addSearchUpdateListener( this );
- EventRegistry.addBookmarkUpdateListener( this );
+ EventRegistry.addConnectionUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
+ EventRegistry.addEntryUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
+ EventRegistry.addSearchUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
+ EventRegistry.addBookmarkUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
}
@@ -83,7 +84,7 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation refreshes the viewer. If a new connection was added
* this connection is selected.
*/
@@ -102,7 +103,7 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation refreshes the viewer.
*/
public void entryUpdated( EntryModificationEvent event )
@@ -116,7 +117,7 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation refreshes the viewer.
*/
public void searchUpdated( SearchUpdateEvent searchUpdateEvent )
@@ -134,7 +135,7 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation refreshes the viewer.
*/
public void bookmarkUpdated( BookmarkUpdateEvent bookmarkUpdateEvent )
Modified: directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/entryeditor/EntryEditorWidgetUniversalListener.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/entryeditor/EntryEditorWidgetUniversalListener.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/entryeditor/EntryEditorWidgetUniversalListener.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-common/src/main/java/org/apache/directory/ldapstudio/browser/common/widgets/entryeditor/EntryEditorWidgetUniversalListener.java Sun Apr 15 14:36:34 2007
@@ -6,21 +6,22 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.common.widgets.entryeditor;
+import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator;
import org.apache.directory.ldapstudio.browser.common.actions.SelectionUtils;
import org.apache.directory.ldapstudio.browser.core.events.BulkModificationEvent;
import org.apache.directory.ldapstudio.browser.core.events.EmptyValueAddedEvent;
@@ -72,7 +73,7 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation starts the value editor.
*/
public void widgetDefaultSelected( SelectionEvent e )
@@ -87,7 +88,7 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation starts the value editor or expands/collapses the selected attribute.
*/
public void mouseDoubleClick( MouseEvent e )
@@ -142,7 +143,7 @@
// register listeners
viewer.getTree().addSelectionListener( viewerSelectionListener );
viewer.getTree().addMouseListener( viewerMouseListener );
- EventRegistry.addEntryUpdateListener( this );
+ EventRegistry.addEntryUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
}
@@ -163,7 +164,7 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation refreshes the viewer and selects a value depending
* on the event.
*/
Modified: directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/BrowserCorePlugin.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/BrowserCorePlugin.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/BrowserCorePlugin.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/BrowserCorePlugin.java Sun Apr 15 14:36:34 2007
@@ -6,21 +6,23 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.core;
+import org.apache.directory.ldapstudio.browser.core.events.CoreEventRunner;
+import org.apache.directory.ldapstudio.browser.core.events.EventRunner;
import org.apache.directory.ldapstudio.browser.core.model.IAuthHandler;
import org.apache.directory.ldapstudio.browser.core.model.IConnection;
import org.apache.directory.ldapstudio.browser.core.model.IReferralHandler;
@@ -51,6 +53,9 @@
/** The preferences */
private BrowserCorePreferences preferences;
+ /** The event runner. */
+ private EventRunner eventRunner;
+
/**
* Creates a new instance of BrowserCorePlugin.
@@ -70,6 +75,11 @@
{
super.start( context );
+ if ( eventRunner == null )
+ {
+ eventRunner = new CoreEventRunner();
+ }
+
if ( connectionManager == null )
{
connectionManager = new ConnectionManager();
@@ -84,6 +94,11 @@
{
super.stop( context );
+ if ( eventRunner != null )
+ {
+ eventRunner = null;
+ }
+
if ( connectionManager != null )
{
IConnection[] connections = connectionManager.getConnections();
@@ -98,7 +113,7 @@
/**
* Returns the BrowserPlugin instance.
- *
+ *
* @return The BrowserPlugin instance
*/
public static BrowserCorePlugin getDefault()
@@ -109,8 +124,8 @@
/**
* Gets the Connection Manager
- *
- * @return
+ *
+ * @return
* the connection manager
*/
public ConnectionManager getConnectionManager()
@@ -120,7 +135,7 @@
/**
- *
+ *
* @return The preferences
*/
public BrowserCorePreferences getCorePreferences()
@@ -155,7 +170,7 @@
/**
* Gets the ReferralHanlder
- *
+ *
* @return
* the ReferralHandler
*/
@@ -167,12 +182,23 @@
/**
* Sets the ReferralHandler
- *
+ *
* @param referralHandler
* the ReferralHandler to set
*/
public void setReferralHandler( IReferralHandler referralHandler )
{
this.referralHandler = referralHandler;
+ }
+
+
+ /**
+ * Gets the event runner.
+ *
+ * @return the event runner
+ */
+ public EventRunner getEventRunner()
+ {
+ return eventRunner;
}
}
Modified: directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/ConnectionManager.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/ConnectionManager.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/ConnectionManager.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/ConnectionManager.java Sun Apr 15 14:36:34 2007
@@ -78,9 +78,9 @@
{
this.connectionList = new ArrayList<IConnection>();
loadConnections();
- EventRegistry.addConnectionUpdateListener( this );
- EventRegistry.addSearchUpdateListener( this );
- EventRegistry.addBookmarkUpdateListener( this );
+ EventRegistry.addConnectionUpdateListener( this, BrowserCorePlugin.getDefault().getEventRunner() );
+ EventRegistry.addSearchUpdateListener( this, BrowserCorePlugin.getDefault().getEventRunner() );
+ EventRegistry.addBookmarkUpdateListener( this, BrowserCorePlugin.getDefault().getEventRunner() );
}
Modified: directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/BookmarkUpdateListener.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/BookmarkUpdateListener.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/BookmarkUpdateListener.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/BookmarkUpdateListener.java Sun Apr 15 14:36:34 2007
@@ -6,20 +6,22 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.core.events;
+import java.util.EventListener;
+
import org.apache.directory.ldapstudio.browser.core.model.IBookmark;
@@ -34,7 +36,7 @@
/**
* Called when an {@link IBookmark} was updated.
- *
+ *
* @param bookmarkUpdateEvent the bookmark update event
*/
public void bookmarkUpdated( BookmarkUpdateEvent bookmarkUpdateEvent );
Modified: directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/ConnectionUpdateListener.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/ConnectionUpdateListener.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/ConnectionUpdateListener.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/ConnectionUpdateListener.java Sun Apr 15 14:36:34 2007
@@ -6,21 +6,23 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.core.events;
+import java.util.EventListener;
+
import org.apache.directory.ldapstudio.browser.core.model.IConnection;
@@ -35,7 +37,7 @@
/**
* Called when an {@link IConnection} was updated.
- *
+ *
* @param connectionUpdateEvent the connection update event
*/
public void connectionUpdated( ConnectionUpdateEvent connectionUpdateEvent );
Added: directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/CoreEventRunner.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/CoreEventRunner.java?view=auto&rev=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/CoreEventRunner.java (added)
+++ directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/CoreEventRunner.java Sun Apr 15 14:36:34 2007
@@ -0,0 +1,25 @@
+package org.apache.directory.ldapstudio.browser.core.events;
+
+
+/**
+ * Default implementation of {@link EventRunner} that executes an {@link EventRunnable}
+ * withing the current thread.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class CoreEventRunner implements EventRunner
+{
+
+ /**
+ * {@inheritDoc}
+ *
+ * This implementation executes the given {@link EventRunnable} within
+ * the current thread.
+ */
+ public void execute( EventRunnable runnable )
+ {
+ runnable.run();
+ }
+
+}
Modified: directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EntryUpdateListener.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EntryUpdateListener.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EntryUpdateListener.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EntryUpdateListener.java Sun Apr 15 14:36:34 2007
@@ -6,20 +6,23 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.core.events;
+
+import java.util.EventListener;
+
import org.apache.directory.ldapstudio.browser.core.model.IEntry;
@@ -34,7 +37,7 @@
/**
* Called when an {@link IEntry} was updated.
- *
+ *
* @param event the event
*/
public void entryUpdated( EntryModificationEvent event );
Modified: directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRegistry.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRegistry.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRegistry.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRegistry.java Sun Apr 15 14:36:34 2007
@@ -6,208 +6,357 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.core.events;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.directory.ldapstudio.browser.core.model.schema.AttributeTypeDescription;
-import org.apache.directory.ldapstudio.browser.core.model.schema.LdapSyntaxDescription;
-import org.apache.directory.ldapstudio.browser.core.model.schema.MatchingRuleDescription;
-import org.apache.directory.ldapstudio.browser.core.model.schema.MatchingRuleUseDescription;
-import org.apache.directory.ldapstudio.browser.core.model.schema.ObjectClassDescription;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+/**
+ * The EventRegistry is a central point to register for LDAP Studio specific
+ * events and to fire events to registered listeners.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
public class EventRegistry
{
- private static EventDispatcher eventDispatcher;
+ /** The list of threads with suspended event fireing. */
+ private static Set<Thread> suspendedEventFireringThreads = new HashSet<Thread>();;
+
+ /** The lock used to synchronize event fireings */
+ private static Object lock = new Object();
- public static void init( EventDispatcher eventDispatcher )
+ /**
+ * Checks if event fireing is suspended in the current thread.
+ *
+ * @return true, if event fireing is suspended in the current thread
+ */
+ public static boolean isEventFireingSuspendedInCurrentThread()
{
- EventRegistry.eventDispatcher = eventDispatcher;
+ return suspendedEventFireringThreads.contains( Thread.currentThread() );
}
+ /**
+ * Resumes event fireing in the current thread.
+ */
public static void resumeEventFireingInCurrentThread()
{
- eventDispatcher.resumeEventFireingInCurrentThread();
+ suspendedEventFireringThreads.remove( Thread.currentThread() );
}
+ /**
+ * Suspends event fireing in the current thread.
+ */
public static void suspendEventFireingInCurrentThread()
{
- eventDispatcher.suspendEventFireingInCurrentThread();
+ suspendedEventFireringThreads.add( Thread.currentThread() );
}
- private static List searchUpdateListenerList = new ArrayList();
- public static void addSearchUpdateListener( SearchUpdateListener listener )
+ /** The map with search update listeners and their runners */
+ private static Map<SearchUpdateListener, EventRunner> searchUpdateListeners = new HashMap<SearchUpdateListener, EventRunner>();
+
+
+ /**
+ * Adds the search update listener.
+ *
+ * @param listener the listener
+ * @param runner the runner
+ */
+ public static void addSearchUpdateListener( SearchUpdateListener listener, EventRunner runner )
{
- if ( !searchUpdateListenerList.contains( listener ) )
- searchUpdateListenerList.add( listener );
+ assert listener != null;
+ assert runner != null;
+
+ if ( !searchUpdateListeners.containsKey( listener ) )
+ {
+ searchUpdateListeners.put( listener, runner );
+ }
}
+ /**
+ * Removes the search update listener.
+ *
+ * @param listener the listener
+ */
public static void removeSearchUpdateListener( SearchUpdateListener listener )
{
- if ( searchUpdateListenerList.contains( listener ) )
- searchUpdateListenerList.remove( listener );
+ if ( searchUpdateListeners.containsKey( listener ) )
+ {
+ searchUpdateListeners.remove( listener );
+ }
}
+ /**
+ * Notifies each {@link SearchUpdateListener} about the the given {@link SearchUpdateEvent}.
+ * Uses the {@link EventRunner}s.
+ *
+ * @param searchUpdateEvent the search update event
+ * @param source the source
+ */
public static void fireSearchUpdated( final SearchUpdateEvent searchUpdateEvent, final Object source )
{
- for ( int i = 0; i < searchUpdateListenerList.size(); i++ )
+ if( isEventFireingSuspendedInCurrentThread() )
+ {
+ return;
+ }
+
+ Iterator<SearchUpdateListener> it = searchUpdateListeners.keySet().iterator();
+ while( it.hasNext() )
{
- final SearchUpdateListener listener = ( SearchUpdateListener ) searchUpdateListenerList.get( i );
+ final SearchUpdateListener listener = it.next();
EventRunnable runnable = new EventRunnable()
{
- public Object getEventObject()
- {
- return searchUpdateEvent.getSearch();
- }
-
-
public void run()
{
listener.searchUpdated( searchUpdateEvent );
}
};
- eventDispatcher.dispatchEvent( source, listener, runnable );
+
+ EventRunner runner = searchUpdateListeners.get( listener );
+
+ synchronized( lock )
+ {
+ runner.execute( runnable );
+ }
}
}
- private static List bookmarkUpdateListenerList = new ArrayList();
+
+ /** The map with bookmark update listeners and their runners */
+ private static Map<BookmarkUpdateListener, EventRunner> bookmarkUpdateListeners = new HashMap<BookmarkUpdateListener, EventRunner>();
- public static void addBookmarkUpdateListener( BookmarkUpdateListener listener )
+ /**
+ * Adds the bookmark update listener.
+ *
+ * @param listener the listener
+ * @param runner the runner
+ */
+ public static void addBookmarkUpdateListener( BookmarkUpdateListener listener, EventRunner runner )
{
- if ( !bookmarkUpdateListenerList.contains( listener ) )
- bookmarkUpdateListenerList.add( listener );
+ assert listener != null;
+ assert runner != null;
+
+ if ( !bookmarkUpdateListeners.containsKey( listener ) )
+ {
+ bookmarkUpdateListeners.put( listener, runner );
+ }
}
+ /**
+ * Removes the bookmark update listener.
+ *
+ * @param listener the listener
+ */
public static void removeBookmarkUpdateListener( BookmarkUpdateListener listener )
{
- if ( bookmarkUpdateListenerList.contains( listener ) )
- bookmarkUpdateListenerList.remove( listener );
+ if ( bookmarkUpdateListeners.containsKey( listener ) )
+ {
+ bookmarkUpdateListeners.remove( listener );
+ }
}
+ /**
+ * Notifies each {@link BookmarkUpdateListener} about the the given {@link BookmarkUpdateEvent}.
+ * Uses the {@link EventRunner}s.
+ *
+ * @param bookmarkUpdateEvent the bookmark update event
+ * @param source the source
+ */
public static void fireBookmarkUpdated( final BookmarkUpdateEvent bookmarkUpdateEvent, final Object source )
{
- for ( int i = 0; i < bookmarkUpdateListenerList.size(); i++ )
+ if( isEventFireingSuspendedInCurrentThread() )
+ {
+ return;
+ }
+
+ Iterator<BookmarkUpdateListener> it = bookmarkUpdateListeners.keySet().iterator();
+ while( it.hasNext() )
{
- final BookmarkUpdateListener listener = ( BookmarkUpdateListener ) bookmarkUpdateListenerList.get( i );
+ final BookmarkUpdateListener listener = it.next();
EventRunnable runnable = new EventRunnable()
{
- public Object getEventObject()
- {
- return bookmarkUpdateEvent.getBookmark();
- }
-
-
public void run()
{
listener.bookmarkUpdated( bookmarkUpdateEvent );
}
};
- eventDispatcher.dispatchEvent( source, listener, runnable );
+
+ EventRunner runner = bookmarkUpdateListeners.get( listener );
+ synchronized( lock )
+ {
+ runner.execute( runnable );
+ }
}
}
- private static List connectionUpdateListenerList = new ArrayList();
+ /** The map with connection update listeners and their runners */
+ private static Map<ConnectionUpdateListener, EventRunner> connectionUpdateListeners = new HashMap<ConnectionUpdateListener, EventRunner>();
- public static void addConnectionUpdateListener( ConnectionUpdateListener listener )
+ /**
+ * Adds the connection update listener.
+ *
+ * @param listener the listener
+ * @param runner the runner
+ */
+ public static void addConnectionUpdateListener( ConnectionUpdateListener listener, EventRunner runner )
{
- if ( !connectionUpdateListenerList.contains( listener ) )
- connectionUpdateListenerList.add( listener );
+ assert listener != null;
+ assert runner != null;
+
+ if ( !connectionUpdateListeners.containsKey( listener ) )
+ {
+ connectionUpdateListeners.put( listener, runner );
+ }
}
+ /**
+ * Removes the connection update listener.
+ *
+ * @param listener the listener
+ */
public static void removeConnectionUpdateListener( ConnectionUpdateListener listener )
{
- if ( connectionUpdateListenerList.contains( listener ) )
- connectionUpdateListenerList.remove( listener );
+ if ( connectionUpdateListeners.containsKey( listener ) )
+ {
+ connectionUpdateListeners.remove( listener );
+ }
}
+ /**
+ * Notifies each {@link ConnectionUpdateListener} about the the given {@link ConnectionUpdateEvent}.
+ * Uses the {@link EventRunner}s.
+ *
+ * @param connectionUpdateEvent the connection update event
+ * @param source the source
+ */
public static void fireConnectionUpdated( final ConnectionUpdateEvent connectionUpdateEvent, final Object source )
{
- for ( int i = 0; i < connectionUpdateListenerList.size(); i++ )
+ if( isEventFireingSuspendedInCurrentThread() )
+ {
+ return;
+ }
+
+ Iterator<ConnectionUpdateListener> it = connectionUpdateListeners.keySet().iterator();
+ while( it.hasNext() )
{
- final ConnectionUpdateListener listener = ( ConnectionUpdateListener ) connectionUpdateListenerList.get( i );
+ final ConnectionUpdateListener listener = it.next();
EventRunnable runnable = new EventRunnable()
{
- public Object getEventObject()
- {
- return connectionUpdateEvent.getConnection();
- }
-
-
public void run()
{
listener.connectionUpdated( connectionUpdateEvent );
}
};
- eventDispatcher.dispatchEvent( source, listener, runnable );
+
+ EventRunner runner = connectionUpdateListeners.get( listener );
+ synchronized( lock )
+ {
+ runner.execute( runnable );
+ }
}
}
- private static List entryUpdateListenerList = new ArrayList();
+ /** The map with entry update listeners and their runners */
+ private static Map<EntryUpdateListener, EventRunner> entryUpdateListeners = new HashMap<EntryUpdateListener, EventRunner>();
- public static void addEntryUpdateListener( EntryUpdateListener listener )
+
+ /**
+ * Adds the entry update listener.
+ *
+ * @param listener the listener
+ * @param runner the runner
+ */
+ public static void addEntryUpdateListener( EntryUpdateListener listener, EventRunner runner )
{
- if ( !entryUpdateListenerList.contains( listener ) )
- entryUpdateListenerList.add( listener );
+ assert listener != null;
+ assert runner != null;
+
+ if ( !entryUpdateListeners.containsKey( listener ) )
+ {
+ entryUpdateListeners.put( listener, runner );
+ }
}
+ /**
+ * Removes the entry update listener.
+ *
+ * @param listener the listener
+ */
public static void removeEntryUpdateListener( EntryUpdateListener listener )
{
- if ( entryUpdateListenerList.contains( listener ) )
- entryUpdateListenerList.remove( listener );
+ if ( entryUpdateListeners.containsKey( listener ) )
+ {
+ entryUpdateListeners.remove( listener );
+ }
}
- public static void fireEntryUpdated( final EntryModificationEvent event, final Object source )
+ /**
+ * Notifies each {@link EntryUpdateListener} about the the given {@link EntryModificationEvent}.
+ * Uses the {@link EventRunner}s.
+ *
+ * @param entryUpdateEvent the entry update event
+ * @param source the source
+ */
+ public static void fireEntryUpdated( final EntryModificationEvent entryUpdateEvent, final Object source )
{
- for ( int i = 0; i < entryUpdateListenerList.size(); i++ )
+ if( isEventFireingSuspendedInCurrentThread() )
+ {
+ return;
+ }
+
+ Iterator<EntryUpdateListener> it = entryUpdateListeners.keySet().iterator();
+ while( it.hasNext() )
{
- final EntryUpdateListener listener = ( EntryUpdateListener ) entryUpdateListenerList.get( i );
+ final EntryUpdateListener listener = it.next();
EventRunnable runnable = new EventRunnable()
{
- public Object getEventObject()
- {
- return event;
- }
-
-
public void run()
{
- listener.entryUpdated( event );
+ listener.entryUpdated( entryUpdateEvent );
}
};
- eventDispatcher.dispatchEvent( source, listener, runnable );
+
+ EventRunner runner = entryUpdateListeners.get( listener );
+ synchronized( lock )
+ {
+ runner.execute( runnable );
+ }
}
}
+
}
Modified: directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRunnable.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRunnable.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRunnable.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRunnable.java Sun Apr 15 14:36:34 2007
@@ -6,24 +6,30 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.core.events;
+/**
+ * The <code>EventRunnable</code> interface should be implemented by any
+ * class whose instances are intended to be executed by an {@link EventRunner}.
+ * The class must define a method of no arguments called <code>run</code>.
+ * <p>
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
public interface EventRunnable extends Runnable
{
-
- public Object getEventObject();
-
}
Added: directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRunner.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRunner.java?view=auto&rev=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRunner.java (added)
+++ directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/EventRunner.java Sun Apr 15 14:36:34 2007
@@ -0,0 +1,20 @@
+package org.apache.directory.ldapstudio.browser.core.events;
+
+
+/**
+ * An EventRunner is used to execute an {@link EventRunnable}.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public interface EventRunner
+{
+
+ /**
+ * Executes the given {@link EventRunnable}.
+ *
+ * @param runnable the event runnable to run
+ */
+ public void execute( EventRunnable runnable );
+
+}
Modified: directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/SearchUpdateListener.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/SearchUpdateListener.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/SearchUpdateListener.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/events/SearchUpdateListener.java Sun Apr 15 14:36:34 2007
@@ -21,6 +21,8 @@
package org.apache.directory.ldapstudio.browser.core.events;
+import java.util.EventListener;
+
import org.apache.directory.ldapstudio.browser.core.model.ISearch;
Modified: directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/internal/model/DelegateEntry.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/internal/model/DelegateEntry.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/internal/model/DelegateEntry.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-core/src/main/java/org/apache/directory/ldapstudio/browser/core/internal/model/DelegateEntry.java Sun Apr 15 14:36:34 2007
@@ -6,16 +6,16 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.core.internal.model;
@@ -74,7 +74,7 @@
this.dn = dn;
this.entryDoesNotExist = false;
this.delegate = null;
- EventRegistry.addEntryUpdateListener( this );
+ EventRegistry.addEntryUpdateListener( this, BrowserCorePlugin.getDefault().getEventRunner() );
}
Modified: directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/schemabrowser/ConnectionComboContributionItem.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/schemabrowser/ConnectionComboContributionItem.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/schemabrowser/ConnectionComboContributionItem.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/schemabrowser/ConnectionComboContributionItem.java Sun Apr 15 14:36:34 2007
@@ -6,21 +6,22 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.ui.editors.schemabrowser;
+import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator;
import org.apache.directory.ldapstudio.browser.common.widgets.connection.ConnectionContentProvider;
import org.apache.directory.ldapstudio.browser.common.widgets.connection.ConnectionLabelProvider;
import org.apache.directory.ldapstudio.browser.core.BrowserCorePlugin;
@@ -94,7 +95,7 @@
{
public void selectionChanged( SelectionChangedEvent event )
{
- // Do not set the input of the schema browser if
+ // Do not set the input of the schema browser if
// the selection was changed programatically.
if ( !inChange )
{
@@ -104,7 +105,7 @@
}
} );
- EventRegistry.addConnectionUpdateListener( this );
+ EventRegistry.addConnectionUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
// Initialize width of combo
toolitem.setWidth( comboViewer.getCombo().computeSize( SWT.DEFAULT, SWT.DEFAULT, true ).x );
@@ -126,7 +127,7 @@
/**
* The control item implementation of this <code>IContributionItem</code>
* method calls the <code>createControl</code> method.
- *
+ *
* @param parent the parent of the control to fill
*/
public final void fill( Composite parent )
@@ -138,7 +139,7 @@
/**
* The control item implementation of this <code>IContributionItem</code>
* method throws an exception since controls cannot be added to menus.
- *
+ *
* @param parent the menu
* @param index menu index
*/
@@ -153,7 +154,7 @@
* method calls the <code>createControl</code> method to
* create a control under the given parent, and then creates
* a new tool item to hold it.
- *
+ *
* @param parent the ToolBar to add the new control to
* @param index the index
*/
@@ -179,7 +180,7 @@
/**
* Gets the connection.
- *
+ *
* @return the connection
*/
public IConnection getConnection()
@@ -196,7 +197,7 @@
/**
* Sets the connection.
- *
+ *
* @param connection the connection
*/
public void setConnection( IConnection connection )
Modified: directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/AbstractSearchResultListenerAction.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/AbstractSearchResultListenerAction.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/AbstractSearchResultListenerAction.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/AbstractSearchResultListenerAction.java Sun Apr 15 14:36:34 2007
@@ -6,21 +6,22 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.ui.editors.searchresult;
+import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator;
import org.apache.directory.ldapstudio.browser.common.actions.SelectionUtils;
import org.apache.directory.ldapstudio.browser.core.events.EntryModificationEvent;
import org.apache.directory.ldapstudio.browser.core.events.EntryUpdateListener;
@@ -78,7 +79,7 @@
private void init()
{
this.selectionProvider.addSelectionChangedListener( this );
- EventRegistry.addEntryUpdateListener( this );
+ EventRegistry.addEntryUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
this.selectedSearch = null;
this.selectedSearchResult = null;
Modified: directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCursor.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCursor.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCursor.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCursor.java Sun Apr 15 14:36:34 2007
@@ -6,16 +6,16 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.ui.editors.searchresult;
@@ -25,6 +25,7 @@
import java.util.Iterator;
import java.util.List;
+import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator;
import org.apache.directory.ldapstudio.browser.core.events.EntryModificationEvent;
import org.apache.directory.ldapstudio.browser.core.events.EntryUpdateListener;
import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
@@ -63,7 +64,7 @@
setBackground( Display.getDefault().getSystemColor( SWT.COLOR_LIST_SELECTION ) );
setForeground( Display.getDefault().getSystemColor( SWT.COLOR_LIST_SELECTION_TEXT ) );
- EventRegistry.addEntryUpdateListener( this );
+ EventRegistry.addEntryUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
initSelectionChecker();
initSelectionProvider();
Modified: directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorUniversalListener.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorUniversalListener.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorUniversalListener.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorUniversalListener.java Sun Apr 15 14:36:34 2007
@@ -6,16 +6,16 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.ui.editors.searchresult;
@@ -27,6 +27,7 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$, $Date$
*/
+import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator;
import org.apache.directory.ldapstudio.browser.common.actions.SelectionUtils;
import org.apache.directory.ldapstudio.browser.core.events.EmptyValueAddedEvent;
import org.apache.directory.ldapstudio.browser.core.events.EntryModificationEvent;
@@ -109,7 +110,7 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation sets the editor's input when a search is selected.
*/
public void selectionChanged( IWorkbenchPart part, ISelection selection )
@@ -138,7 +139,7 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation deactivates the shortcuts when the part is deactivated.
*/
public void partDeactivated( IWorkbenchPartReference partRef )
@@ -158,7 +159,7 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation activates the shortcuts when the part is activated.
*/
public void partActivated( IWorkbenchPartReference partRef )
@@ -232,7 +233,7 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation opens the search result when clicking thd DN link.
*/
public void linkActivated( HyperlinkEvent e )
@@ -274,7 +275,7 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation removed the DN link.
*/
public void mouseExit( MouseEvent e )
@@ -297,7 +298,7 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation renders the DN link.
*/
public void mouseMove( MouseEvent e )
@@ -319,7 +320,7 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation renders the DN link.
*/
public void mouseMove( MouseEvent e )
@@ -342,7 +343,7 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation sets the cursor's background color.
*/
public void widgetSelected( SelectionEvent e )
@@ -369,7 +370,7 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation starts the value editor when pressing enter.
*/
public void widgetDefaultSelected( SelectionEvent e )
@@ -386,7 +387,7 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation starts the value editor when double-clicking a cell.
*/
public void mouseDoubleClick( MouseEvent e )
@@ -419,7 +420,7 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation starts the value editor when a non-control key is pressed.
*/
public void keyPressed( KeyEvent e )
@@ -493,8 +494,8 @@
editor.getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener( BrowserView.getId(),
searchSelectionListener );
- EventRegistry.addSearchUpdateListener( this );
- EventRegistry.addEntryUpdateListener( this );
+ EventRegistry.addSearchUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
+ EventRegistry.addEntryUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
}
@@ -523,7 +524,7 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation refreshes the search result editor.
*/
public void searchUpdated( SearchUpdateEvent searchUpdateEvent )
@@ -537,8 +538,8 @@
/**
* {@inheritDoc}
- *
- * This implementation refreshes the search result editor
+ *
+ * This implementation refreshes the search result editor
* or starts the value editor if an empty value was added.
*/
public void entryUpdated( EntryModificationEvent event )
@@ -677,7 +678,7 @@
/**
- * Ensures that the table contains at least the number of
+ * Ensures that the table contains at least the number of
* the requested columns.
*
* @param count the requested number of columns
Modified: directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/browser/BrowserViewUniversalListener.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/browser/BrowserViewUniversalListener.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/browser/BrowserViewUniversalListener.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/browser/BrowserViewUniversalListener.java Sun Apr 15 14:36:34 2007
@@ -6,16 +6,16 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.ui.views.browser;
@@ -25,6 +25,7 @@
import java.util.HashMap;
import java.util.Map;
+import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator;
import org.apache.directory.ldapstudio.browser.common.actions.SelectionUtils;
import org.apache.directory.ldapstudio.browser.common.widgets.browser.BrowserUniversalListener;
import org.apache.directory.ldapstudio.browser.core.events.AttributesInitializedEvent;
@@ -92,7 +93,7 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation sets the input when another connection was selected.
*/
public void selectionChanged( IWorkbenchPart part, ISelection selection )
@@ -120,7 +121,7 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation deactivates the shortcuts when the part is deactivated.
*/
public void partDeactivated( IWorkbenchPartReference partRef )
@@ -140,7 +141,7 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation activates the shortcuts when the part is activated.
*/
public void partActivated( IWorkbenchPartReference partRef )
@@ -225,7 +226,7 @@
/**
* Creates a new instance of BrowserViewUniversalListener.
- *
+ *
* @param view the browser view
*/
public BrowserViewUniversalListener( BrowserView view )
@@ -238,10 +239,10 @@
connectionToSelectedElementMap = new HashMap<IConnection, ISelection>();
// register listeners
- EventRegistry.addSearchUpdateListener( this );
- EventRegistry.addBookmarkUpdateListener( this );
- EventRegistry.addEntryUpdateListener( this );
- EventRegistry.addConnectionUpdateListener( this );
+ EventRegistry.addSearchUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
+ EventRegistry.addBookmarkUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
+ EventRegistry.addEntryUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
+ EventRegistry.addConnectionUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
view.getSite().getPage().addPartListener( partListener );
view.getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener( ConnectionView.getId(),
@@ -252,7 +253,7 @@
/**
- * Ensures that the entry editor or the search result editor are
+ * Ensures that the entry editor or the search result editor are
* opended and ready to show the given selection.
*
* @param selection the browser's selection.
@@ -391,8 +392,8 @@
/**
* {@inheritDoc}
- *
- * This implementation refreshes the tree and expands/collapses the
+ *
+ * This implementation refreshes the tree and expands/collapses the
* tree when the connection is opened/closed.
*/
public void connectionUpdated( ConnectionUpdateEvent connectionUpdateEvent )
@@ -402,7 +403,7 @@
// expand viewer
viewer.refresh( connectionUpdateEvent.getConnection() );
viewer.expandToLevel( 2 );
-
+
// expand root DSE to show base entries
IRootDSE rootDSE = connectionUpdateEvent.getConnection().getRootDSE();
viewer.expandToLevel( rootDSE, 1 );
@@ -429,7 +430,7 @@
/**
* {@inheritDoc}
- *
+ *
* This viewer selects the updated search.
*/
public void searchUpdated( SearchUpdateEvent searchUpdateEvent )
@@ -460,14 +461,14 @@
/**
* {@inheritDoc}
- *
- * This implementation refreshes the tree and
+ *
+ * This implementation refreshes the tree and
* selects an entry depending on the event type.
*/
public void entryUpdated( EntryModificationEvent event )
{
// 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
Modified: directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/modificationlogs/ModificationLogsViewUniversalListener.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/modificationlogs/ModificationLogsViewUniversalListener.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/modificationlogs/ModificationLogsViewUniversalListener.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/views/modificationlogs/ModificationLogsViewUniversalListener.java Sun Apr 15 14:36:34 2007
@@ -6,16 +6,16 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.ui.views.modificationlogs;
@@ -24,6 +24,7 @@
import java.io.File;
import java.io.FileReader;
+import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator;
import org.apache.directory.ldapstudio.browser.common.actions.SelectionUtils;
import org.apache.directory.ldapstudio.browser.core.events.AttributesInitializedEvent;
import org.apache.directory.ldapstudio.browser.core.events.ChildrenInitializedEvent;
@@ -58,7 +59,7 @@
{
/**
* {@inheritDoc}
- *
+ *
* This implementation sets the input when another connection was selected.
*/
public void selectionChanged( IWorkbenchPart part, ISelection selection )
@@ -90,7 +91,7 @@
this.view = view;
this.input = null;
- EventRegistry.addEntryUpdateListener( this );
+ EventRegistry.addEntryUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
view.getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener( ConnectionView.getId(),
connectionSelectionListener );
}
@@ -125,7 +126,7 @@
/**
* Sets the input.
- *
+ *
* @param input the input
*/
void setInput( ModificationLogsViewInput input )
@@ -165,7 +166,7 @@
/**
* {@inheritDoc}
- *
+ *
* This implementation refreshes the input.
*/
public void entryUpdated( EntryModificationEvent event )
Modified: directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/wizards/NewEntryAttributesWizardPage.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/wizards/NewEntryAttributesWizardPage.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/wizards/NewEntryAttributesWizardPage.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/wizards/NewEntryAttributesWizardPage.java Sun Apr 15 14:36:34 2007
@@ -6,21 +6,22 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.browser.ui.wizards;
+import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator;
import org.apache.directory.ldapstudio.browser.common.widgets.entryeditor.EntryEditorWidget;
import org.apache.directory.ldapstudio.browser.common.widgets.entryeditor.EntryEditorWidgetActionGroup;
import org.apache.directory.ldapstudio.browser.common.widgets.entryeditor.EntryEditorWidgetActionGroupWithAttribute;
@@ -73,7 +74,7 @@
/**
* Creates a new instance of NewEntryAttributesWizardPage.
- *
+ *
* @param pageName the page name
* @param wizard the wizard
*/
@@ -112,8 +113,8 @@
/**
* {@inheritDoc}
- *
- * This implementation initializes the must attributes of the
+ *
+ * This implementation initializes the must attributes of the
* protoype entry and initializes the entry widget when this
* page becomes visible.
*/
@@ -251,7 +252,7 @@
// create the listener
universalListener = new EntryEditorWidgetUniversalListener( mainWidget.getViewer(), actionGroup
.getOpenDefaultEditorAction() );
- EventRegistry.addEntryUpdateListener( this );
+ EventRegistry.addEntryUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
setControl( composite );
}
@@ -271,7 +272,7 @@
/**
* Checks if is disposed.
- *
+ *
* @return true, if is disposed
*/
private boolean isDisposed()
Modified: directory/ldapstudio/trunk/ldapstudio-ldifeditor/src/main/java/org/apache/directory/ldapstudio/ldifeditor/editor/LdifEditor.java
URL: http://svn.apache.org/viewvc/directory/ldapstudio/trunk/ldapstudio-ldifeditor/src/main/java/org/apache/directory/ldapstudio/ldifeditor/editor/LdifEditor.java?view=diff&rev=529075&r1=529074&r2=529075
==============================================================================
--- directory/ldapstudio/trunk/ldapstudio-ldifeditor/src/main/java/org/apache/directory/ldapstudio/ldifeditor/editor/LdifEditor.java (original)
+++ directory/ldapstudio/trunk/ldapstudio-ldifeditor/src/main/java/org/apache/directory/ldapstudio/ldifeditor/editor/LdifEditor.java Sun Apr 15 14:36:34 2007
@@ -6,16 +6,16 @@
* 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.
- *
+ * under the License.
+ *
*/
package org.apache.directory.ldapstudio.ldifeditor.editor;
@@ -235,7 +235,7 @@
super.init( site, input );
- EventRegistry.addConnectionUpdateListener( this );
+ EventRegistry.addConnectionUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() );
getSite().getPage().addPartListener( this );
this.valueEditorManager = new ValueEditorManager( getSite().getShell() );
@@ -611,7 +611,7 @@
/**
* This implementation checks if the input is of type
- * NonExistingLdifEditorInput. In that case doSaveAs() is
+ * NonExistingLdifEditorInput. In that case doSaveAs() is
* called to prompt for a new file name and location.
*/
public void doSave( IProgressMonitor progressMonitor )
@@ -632,16 +632,16 @@
* - NonExistingLdifEditorInput: New file, not yet saved
* - PathEditorInput: file opened with our internal "Open File.." action
* - FileEditorInput: file is within workspace
- * - JavaFileEditorInput: file opend with "Open File..." action from org.eclipse.ui.editor
- *
+ * - JavaFileEditorInput: file opend with "Open File..." action from org.eclipse.ui.editor
+ *
* In RCP the FileDialog appears.
* In IDE the super implementation is called.
* To detect if this plugin runs in IDE the org.eclipse.ui.ide extension point is checked.
- *
+ *
*/
protected void performSaveAs( IProgressMonitor progressMonitor )
{
- // detect IDE or RCP:
+ // detect IDE or RCP:
// check if perspective org.eclipse.ui.resourcePerspective is available
boolean isIDE = BrowserCommonActivator.isIDEEnvironment();