Hi, TBC folks.

Back in July 2010, my colleague mailed an issue to the TBC support
email list, and Scott confirmed that it was a bug.  I'm pinging you
now to see if any progress was made on fixing this bug.  The details
of the July support interaction are quoted below.

   -David Lum

=============================================================
From: Scott Henninger [mailto:[email protected]]
Sent: Wednesday, July 28, 2010 10:56 PM
To: Tony Clarke
Subject: Re: reporting a defect with composer

Tony, we appear to have two defect reports here.  The first is that
some FileRegistry tasks are not placed in the background.  This has
been logged and we will look into possible fixes after the 3.4
released, which is scheduled for September.

The second is that somehow that you got the email
[email protected], and that it somehow maps to a
[email protected].  I'll look into that as well.

For the record it's [email protected] - see
http://www.topquadrant.com/products/support.html

-- Scott

On 7/28/10 5:07 PM, Tony Clarke wrote:
Ref: Defect 455

Hi Support,
I would like to report a usability defect with Topbraid composer. I
couldn’t find any other place to report defects so I decided to email
support directly. I have a license and my license key is
573397566073158741566514.

The defect exists in the standard edition 3.3.1 and maestro editor
3.3.2.

Here is what I observer….

The Topbraid editor registers a workspace change listener:
org.topbraidcomposer.core.io.TBCFileRegistry

Here is an example stack of where Topbraid registers the workspace
change listener.

Thread [main] (Suspended (breakpoint at line 67 in
org.eclipse.core.internal.events.ResourceChangeListenerList))
 
org.eclipse.core.internal.events.ResourceChangeListenerList.add(org.eclipse.core.resources.IResourceChangeListener,
int) line: 67
 
org.eclipse.core.internal.events.NotificationManager.addListener(org.eclipse.core.resources.IResourceChangeListener,
int) line: 108
 
org.eclipse.core.internal.resources.Workspace.addResourceChangeListener(org.eclipse.core.resources.IResourceChangeListener)
line: 260
                org.topbraidcomposer.core.io.TBCFileRegistry.init()
line: 280
 
org.topbraidcomposer.live.server.TBCMEPersonality(org.topbraid.core.TBPersonality).init()
line: 283
 
org.topbraidcomposer.live.server.TBCMEPersonality(org.topbraidcomposer.editors.utils.AbstractTBCPersonality).init()
line: 44
                org.topbraid.core.TB.<clinit>() line:
116
 
org.topbraidcomposer.core.session.DisplayLabelsUpdater.get() line:
37
 
org.topbraidcomposer.navigation.subclassestree.SubClassesTreeView(org.topbraidcomposer.navigation.AbstractPredicateTreeView).<init>(com.hp.hpl.jena.rdf.model.Property)
line: 89
 
org.topbraidcomposer.navigation.subclassestree.SubClassesTreeView.<init>()
line: 114
 
sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.lang.reflect.Constructor,
java.lang.Object[]) line: not available [native method]
 
sun.reflect.NativeConstructorAccessorImpl.newInstance(java.lang.Object[])
line: 39
 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(java.lang.Object[])
line: 27
 
java.lang.reflect.Constructor<T>.newInstance(java.lang.Object...)
line: 513
                java.lang.Class<T>.newInstance0() line: 355
                java.lang.Class<T>.newInstance() line: 308
 
org.eclipse.core.internal.registry.osgi.EquinoxRegistryStrategy(org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI).createExecutableExtension(org.eclipse.core.runtime.spi.RegistryContributor,
java.lang.String, java.lang.String) line: 170
 
org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(org.eclipse.core.runtime.spi.RegistryContributor,
java.lang.String, java.lang.String) line: 874
 
org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(java.lang.String)
line: 243
 
org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(java.lang.String)
line: 51
                org.eclipse.ui.internal.WorkbenchPlugin$1.run() line:
267
 
org.eclipse.swt.custom.BusyIndicator.showWhile(org.eclipse.swt.widgets.Display,
java.lang.Runnable) line: 70
 
org.eclipse.ui.internal.WorkbenchPlugin.createExtension(org.eclipse.core.runtime.IConfigurationElement,
java.lang.String) line: 263
 
org.eclipse.ui.internal.registry.ViewDescriptor.createView() line:
63
 
org.eclipse.ui.internal.ViewReference.createPartHelper() line:
324
                org.eclipse.ui.internal.ViewReference.createPart()
line: 226
 
org.eclipse.ui.internal.ViewReference(org.eclipse.ui.internal.WorkbenchPartReference).getPart(boolean)
line: 595
 
org.eclipse.ui.internal.ViewPane(org.eclipse.ui.internal.PartPane).setVisible(boolean)
line: 313
                org.eclipse.ui.internal.ViewPane.setVisible(boolean)
line: 529
 
org.eclipse.ui.internal.presentations.PresentablePart.setVisible(boolean)
line: 180
 
org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(org.eclipse.ui.presentations.IPresentablePart)
line: 270
 
org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(org.eclipse.ui.presentations.IPresentablePart)
line: 65
 
org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(org.eclipse.ui.presentations.IPresentablePart)
line: 473
 
org.eclipse.ui.internal.ViewStack(org.eclipse.ui.internal.PartStack).refreshPresentationSelection()
line: 1256
 
org.eclipse.ui.internal.ViewStack(org.eclipse.ui.internal.PartStack).createControl(org.eclipse.swt.widgets.Composite,
org.eclipse.ui.presentations.StackPresentation) line:
668
 
org.eclipse.ui.internal.ViewStack(org.eclipse.ui.internal.PartStack).createControl(org.eclipse.swt.widgets.Composite)
line: 576
 
org.eclipse.ui.internal.ViewSashContainer(org.eclipse.ui.internal.PartSashContainer).createControl(org.eclipse.swt.widgets.Composite)
line: 568
 
org.eclipse.ui.internal.PerspectiveHelper.activate(org.eclipse.swt.widgets.Composite)
line: 272
                org.eclipse.ui.internal.Perspective.onActivate() line:
982
                org.eclipse.ui.internal.WorkbenchPage.onActivate()
line: 2626
                org.eclipse.ui.internal.WorkbenchWindow$27.run() line:
2965
 
org.eclipse.swt.custom.BusyIndicator.showWhile(org.eclipse.swt.widgets.Display,
java.lang.Runnable) line: 70
 
org.eclipse.ui.internal.WorkbenchWindow.setActivePage(org.eclipse.ui.IWorkbenchPage)
line: 2946
                org.eclipse.ui.internal.WorkbenchWindow
$21.runWithException() line: 2263
                org.eclipse.ui.internal.WorkbenchWindow
$21(org.eclipse.ui.internal.StartupThreading$StartupRunnable).run()
line: 31
                org.eclipse.swt.widgets.RunnableLock.run() line:
35
 
org.eclipse.ui.internal.UISynchronizer(org.eclipse.swt.widgets.Synchronizer).runAsyncMessages(boolean)
line: 134
 
org.eclipse.swt.widgets.Display.runAsyncMessages(boolean) line:
3855
                org.eclipse.swt.widgets.Display.readAndDispatch()
line: 3476
 
org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor(org.eclipse.ui.application.WorkbenchAdvisor).openWindows()
line: 803
                org.eclipse.ui.internal.Workbench
$28.runWithException() line: 1384
                org.eclipse.ui.internal.Workbench
$28(org.eclipse.ui.internal.StartupThreading$StartupRunnable).run()
line: 31
                org.eclipse.swt.widgets.RunnableLock.run() line:
35
 
org.eclipse.ui.internal.UISynchronizer(org.eclipse.swt.widgets.Synchronizer).runAsyncMessages(boolean)
line: 134
 
org.eclipse.swt.widgets.Display.runAsyncMessages(boolean) line:
3855
                org.eclipse.swt.widgets.Display.readAndDispatch()
line: 3476
                org.eclipse.ui.internal.Workbench.runUI() line:
2316
                org.eclipse.ui.internal.Workbench.access
$4(org.eclipse.ui.internal.Workbench) line: 2221
                org.eclipse.ui.internal.Workbench$5.run() line:
500
 
org.eclipse.core.databinding.observable.Realm.runWithDefault(org.eclipse.core.databinding.observable.Realm,
java.lang.Runnable) line: 332
 
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(org.eclipse.swt.widgets.Display,
org.eclipse.ui.application.WorkbenchAdvisor) line: 493
 
org.eclipse.ui.PlatformUI.createAndRunWorkbench(org.eclipse.swt.widgets.Display,
org.eclipse.ui.application.WorkbenchAdvisor) line: 149
 
org.eclipse.ui.internal.ide.application.IDEApplication.start(org.eclipse.equinox.app.IApplicationContext)
line: 113
 
org.eclipse.equinox.internal.app.EclipseAppHandle.run(java.lang.Object)
line: 194
 
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(java.lang.Object)
line: 110
 
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(java.lang.Object)
line: 79
 
org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.Object)
line: 368
 
org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.String[],
java.lang.Runnable) line: 179
 
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method,
java.lang.Object, java.lang.Object[]) line: not available [native
method]
 
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object,
java.lang.Object[]) line: 39
 
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object,
java.lang.Object[]) line: 25
                java.lang.reflect.Method.invoke(java.lang.Object,
java.lang.Object...) line: 597
 
org.eclipse.equinox.launcher.Main.invokeFramework(java.lang.String[],
java.net.URL[]) line: 559
 
org.eclipse.equinox.launcher.Main.basicRun(java.lang.String[]) line:
514
 
org.eclipse.equinox.launcher.Main.run(java.lang.String[]) line:
1311

Then later during a project build the TBCRegistry runs as follows:

Thread [main] (Suspended (breakpoint at line 363 in
org.eclipse.jface.operation.ModalContext))
 
org.eclipse.jface.operation.ModalContext.run(org.eclipse.jface.operation.IRunnableWithProgress,
boolean, org.eclipse.core.runtime.IProgressMonitor,
org.eclipse.swt.widgets.Display) line: 363
 
org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog(org.eclipse.jface.dialogs.ProgressMonitorDialog).run(boolean,
boolean, org.eclipse.jface.operation.IRunnableWithProgress) line:
507
 
org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(boolean,
boolean, org.eclipse.jface.operation.IRunnableWithProgress) line:
275
                org.eclipse.ui.internal.progress.ProgressManager
$4.run() line: 966
 
org.eclipse.swt.custom.BusyIndicator.showWhile(org.eclipse.swt.widgets.Display,
java.lang.Runnable) line: 70
 
org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(java.lang.Runnable,
org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog) line:
1001
 
org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(org.eclipse.jface.operation.IRunnableWithProgress)
line: 976
                org.topbraidcomposer.core.io.TBCFileRegistry$6.run()
line: 380
                org.eclipse.swt.widgets.RunnableLock.run() line:
35
 
org.eclipse.ui.internal.UISynchronizer(org.eclipse.swt.widgets.Synchronizer).runAsyncMessages(boolean)
line: 134
 
org.eclipse.swt.widgets.Display.runAsyncMessages(boolean) line:
3855
                org.eclipse.swt.widgets.Display.readAndDispatch()
line: 3476
 
org.eclipse.ui.internal.Workbench.runEventLoop(org.eclipse.jface.window.Window
$IExceptionHandler, org.eclipse.swt.widgets.Display) line:
2405
                org.eclipse.ui.internal.Workbench.runUI() line:
2369
                org.eclipse.ui.internal.Workbench.access
$4(org.eclipse.ui.internal.Workbench) line: 2221
                org.eclipse.ui.internal.Workbench$5.run() line:
500
 
org.eclipse.core.databinding.observable.Realm.runWithDefault(org.eclipse.core.databinding.observable.Realm,
java.lang.Runnable) line: 332
 
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(org.eclipse.swt.widgets.Display,
org.eclipse.ui.application.WorkbenchAdvisor) line: 493
 
org.eclipse.ui.PlatformUI.createAndRunWorkbench(org.eclipse.swt.widgets.Display,
org.eclipse.ui.application.WorkbenchAdvisor) line: 149
 
org.eclipse.ui.internal.ide.application.IDEApplication.start(org.eclipse.equinox.app.IApplicationContext)
line: 113
 
org.eclipse.equinox.internal.app.EclipseAppHandle.run(java.lang.Object)
line: 194
 
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(java.lang.Object)
line: 110
 
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(java.lang.Object)
line: 79
 
org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.Object)
line: 368
 
org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.String[],
java.lang.Runnable) line: 179
 
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method,
java.lang.Object, java.lang.Object[]) line: not available [native
method]
 
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object,
java.lang.Object[]) line: 39
 
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object,
java.lang.Object[]) line: 25
                java.lang.reflect.Method.invoke(java.lang.Object,
java.lang.Object...) line: 597
 
org.eclipse.equinox.launcher.Main.invokeFramework(java.lang.String[],
java.net.URL[]) line: 559
 
org.eclipse.equinox.launcher.Main.basicRun(java.lang.String[]) line:
514
 
org.eclipse.equinox.launcher.Main.run(java.lang.String[]) line:
1311

>From the code you can see that this sets the mouse pointer is set to a
busy icon.

I don’t know what this call back does exactly but I observe that  if a
user is doing a build in the background and use the mouse to open a
menu, e.g. the Workbench File menu, then as soon as the TBCRegistry
call back happens the menu will lose focus. If the user tries to open
the menu again (or any other UI operation) the same loss of focus will
occur; as long as the build is ongoing.

The impact is that we effectively lose the ability to do builds in the
background.

Tony

-- 
You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include TopBraid Composer,
TopBraid Live, TopBraid Ensemble, SPARQLMotion and SPIN.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/topbraid-users?hl=en

Reply via email to