Community
Participate
Working Groups
It would be more consistent to render the dummy launch in italics (similar to launch and CVS views) to show that the launch is "in progress".
DW, do you know how to tell a JFace viewer to use italics for an element? Do we do this anywhere else?
an IDebugModelPresentation can optionally implement IFontProvider to provide the font for an element. We also support color color in the debug view - via IColorProvider - for example, for deadlocked threads. You'll likley need to add something to the default label provider for debug elements.
* launch workbench * switch to Java persepctive * start a long build (clean all) * launch last, in debug mode * switch to debug persepctive (manually) > nothing in debug view, but progress view shows launch is pending on build
Implemented with changes to: LaunchView - Refactored to create a label provider class that implements IFontProvider and renders the dummy launch with italic font. DebugUIPlugin - Refactored to create an inner class for the dummy launch node so the launch view's label provider can do an instanceof check. LaunchViewer - At first the italics weren't being rendered even after implementing IFontProvider. It was a lot of fun before I realized that our subclass of TreeViewer was overriding doUpdate(...) and failing to honor font providers. :-/ Please verify, DW.
The font should be cached and disposed rather than recreated all the time. See javadoc for Font: "Constructs a new font given a device and an array of font data which describes the desired font's appearance. You must dispose the font when it is no longer required. "
Boy, fonts are kind of messy in SWT. :-/ After experimenting with being clever to update the cached italics font when the system font is changed and talking to some of the guys on IRC, it turns out that the best we can really do is just keep using the same cached font. SWT doesn't fire events when the system font changes nor does it update the font style bits on controls (so even if we do refresh, we can't detect changes). Implemented simple caching/disposing of the font. Please verify, DW.
Cleaned up in LaunchView for: Thread [main] (Suspended (exception NullPointerException)) LaunchView$LaunchViewLabelProvider.dispose() line: 242 LaunchViewer(ContentViewer).handleDispose(DisposeEvent) line: 153 ContentViewer$2.widgetDisposed(DisposeEvent) line: 188 TypedListener.handleEvent(Event) line: 100 EventTable.sendEvent(Event) line: 82 Tree(Widget).sendEvent(Event) line: 842 Tree(Widget).sendEvent(int, Event, boolean) line: 866 Tree(Widget).sendEvent(int) line: 847 Tree(Widget).releaseWidget() line: 754 Tree(Control).releaseWidget() line: 1571 Tree(Scrollable).releaseWidget() line: 195 Tree(Composite).releaseWidget() line: 588 Tree.releaseWidget() line: 1427 Tree(Widget).releaseResources() line: 719 PageBook(Composite).releaseChildren() line: 582 PageBook(Composite).releaseWidget() line: 587 PageBook(Widget).releaseResources() line: 719 Composite.releaseChildren() line: 582 Composite.releaseWidget() line: 587 Composite(Widget).releaseResources() line: 719 Composite.releaseChildren() line: 582 Composite.releaseWidget() line: 587 Composite(Widget).dispose() line: 380 ViewPane(PartPane).dispose() line: 242 ViewPane.dispose() line: 272 ViewFactory.destroyView(IViewPart) line: 472 ViewFactory.releaseView(IViewReference) line: 556 Perspective.dispose() line: 250 WorkbenchPage.dispose() line: 1343 WorkbenchWindow.closeAllPages() line: 654 WorkbenchWindow.hardClose() line: 1304 WorkbenchWindow.busyClose() line: 537 WorkbenchWindow.access$0(WorkbenchWindow) line: 518 WorkbenchWindow$1.run() line: 619 BusyIndicator.showWhile(Display, Runnable) line: 69 WorkbenchWindow.close() line: 617 WindowManager.close() line: 108 Workbench$12.run() line: 519 InternalPlatform.run(ISafeRunnable) line: 1058 Platform.run(ISafeRunnable) line: 757 Workbench.busyClose(boolean) line: 515 Workbench.access$8(Workbench, boolean) line: 450 Workbench$14.run() line: 637 BusyIndicator.showWhile(Display, Runnable) line: 69 Workbench.close(int, boolean) line: 635 Workbench.close() line: 610 QuitAction.run() line: 57 QuitAction(Action).runWithEvent(Event) line: 1003 ActionContributionItem.handleWidgetSelection(Event, boolean) line: 557 ActionContributionItem.access$2(ActionContributionItem, Event, boolean) line: 507 ActionContributionItem$6.handleEvent(Event) line: 421 EventTable.sendEvent(Event) line: 82 MenuItem(Widget).sendEvent(Event) line: 842 Display.runDeferredEvents() line: 2878 Display.readAndDispatch() line: 2516 Workbench.runEventLoop(Window$IExceptionHandler, Display) line: 1622 Workbench.runUI() line: 1588 Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 299 PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 144 IDEApplication.run(Object) line: 102 PlatformActivator$1.run(Object) line: 227 EclipseStarter.run(Object) line: 281 EclipseStarter.run(String[], Runnable) line: 131 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 Method.invoke(Object, Object[]) line: 324 Main.basicRun(String[]) line: 261 Main.run(String[]) line: 817 Main.main(String[]) line: 801
Verified.