Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 84588 - Dummy launch should be rendered with italics
Summary: Dummy launch should be rendered with italics
Status: VERIFIED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Debug (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows XP
: P3 enhancement (vote)
Target Milestone: 3.1 M5   Edit
Assignee: Darin Wright CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-02-07 11:55 EST by Darin Wright CLA
Modified: 2005-02-09 09:03 EST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Darin Wright CLA 2005-02-07 11:55:38 EST
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".
Comment 1 Jared Burns CLA 2005-02-07 12:41:20 EST
DW, do you know how to tell a JFace viewer to use italics for an element? Do we
do this anywhere else?
Comment 2 Darin Wright CLA 2005-02-07 12:55:55 EST
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.
Comment 3 Darin Wright CLA 2005-02-07 13:03:40 EST
* 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
Comment 4 Jared Burns CLA 2005-02-08 15:01:38 EST
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.
Comment 5 Darin Wright CLA 2005-02-08 15:42:29 EST
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. "
Comment 6 Jared Burns CLA 2005-02-08 17:45:24 EST
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.
Comment 7 Darin Swanson CLA 2005-02-09 00:15:30 EST
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
Comment 8 Darin Wright CLA 2005-02-09 09:03:24 EST
Verified.