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
