This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
Summary: | No indication of why Call Stack isn't displayed | ||
---|---|---|---|
Product: | debugger | Reporter: | ivan <ivan> |
Component: | Code | Assignee: | issues@debugger <issues> |
Status: | VERIFIED FIXED | ||
Severity: | blocker | CC: | dsimonek, gordonp, lhasik, ttran |
Priority: | P1 | Keywords: | UI |
Version: | 3.x | ||
Hardware: | Sun | ||
OS: | Solaris | ||
Issue Type: | DEFECT | Exception Reporter: | |
Attachments: | demostrate how to use glass pane in debugger view (patch BeakpointsView) |
Description
ivan
2003-04-12 03:20:43 UTC
I agree. Jano, can you look at it, please? It looks like we should have some "information area" in some debugger views. I think we have a solution for this problem. It was specified for 3.4 debugger. Please look at the images in the document: http://ui.netbeans.org/docs/hi/debugger3.4/tables/index.html It is about a general debugger table behavior and I think it is what were looking for. If a view itself makes sense in the current debugger engine, but there is nothing to display at that moment in a view, the message should notify the user why is that. I hope that would work. OK. Looks like requirement on TreeTableView => openide. At the request of Arseniy I've removed the RAINIER_EA keyword from this issue. We'll take this one post-EA. Jan & Jano, what are these requirements on TreeTableView? Could you be more specific and give me example of how you think communication between TTV and your code should look like? I expect that you want API method like void setMessageForEmpty (String msg); is that enough? Thx. Eval: UI spec. for debugger views specify that an user will be notified when there is nothing to display. But it isn't consistent with other views in openide, no view provides a message if no node is displayed. I think the debugger view built on the top of TreeTableView(TTV) should handle this situation itself rather to change TTV API. I can subclass TTV, ask tree.getRootPane() and set new glass pane with any message, it should be solved in debugger code I suppose. I assign back to debugger. I made a post on nbdev a few days ago titled Nodes, DOs beans, and property types (see http://www.netbeans.org/servlets/ReadMsg?msgId=555956&listName=nbdev) where I brought up the issue of a TTV cell renderer sometimes wanting to show not a value but the absence of value, the inability to get the value and so on. You can generalize the same argument to TTV's as a whole which is what this issue is about. While all the examples are from the debugging domain I don't see why that should be prior restraint. The concept of a "value" not being available seems completely general to me and any "view" element should be able to handle this at all levels. Created attachment 11256 [details]
demostrate how to use glass pane in debugger view (patch BeakpointsView)
I attached the patch with demonstrate how to use a writeable glass pane in a debugger view. More details can provide on demand. Debugger code can handle asked functionality itself => reassign back to debugger authors. I added two new public methods to the TreeTableExplorerViewSupport class, which is a base class for all debugger treetable views. These methods are setNodesUnavailable(String reason) and setNodesAvailable (). With these, one can control what (if any) message should be displayed if there is no node in the tree view. I also modified the Breakpoints and Watches views to display a customized message. Let me know if this functionality is sufficient for the rainier release. Ok, I assume it is sufficient for the rainier release. We found that the current default messages were a bit jarring (unexpected). My original intent was to put messages when there's some unusual situation like some sever error. So can we make the default message be nothing and add them judiciously? Also no-one has rebutted why this feature isn't of general applicability to the rest of the ide. Any TV can have no nodes available. The glass pane solution doesn't work very well. If you adjust the heights of the debugger TV's so that they are very short, the middle of the glass pane ends up being over the column names window and it looks really ugly. You probably want to make the glass pane overlap only the white cell area; start from just below the grey column name subwin. I removed the default "information unavailable" text and adjusted clip bounds so that the text does not paint above other controls (header, scrollbar) I"ve finally gotten around to using this and it almost works for me. There's one glitch though. setNodes[Un]Available( just sets a field and depends on paint() to update the view. I don't always end up with a paint though! How do you force the paint? Any debugger view is a Component, so calling repaint() should refresh the display. CallStack view and Threads view works properly in current build. Closing. Ummm, except that because of modelview debugger clients don't have access to the TTV directly anymore, so the modelview package needs to delegate setNodesUnavailable(). There is actually no setNodesUnavailable method in debugger modules any more. You're free to provide any node you like before the computation is done and refresh afterwards. This is actually necessary to do in JPDA debugger models to solve issues #59463 and #59465. Resolving as fixed again, since it seems to be fixed in the past. Now the described solution is available... > There is actually no setNodesUnavailable method
That's my _point_.
I don't want to provide a dummy node, I want to declare that there are no
nodes and have the debugger view put out text in a plain canvas as
opposed to a dummy node in a table.
IZ's #59463 and #59465 seem to complain about his feature having vanished.
and the "fixed" comments in those IZ's don't say how it got fixed.
I'm reopening because I"m not happy with the described solution, and
I doubt that the filers of #59463 and #59465 would be either.
Actually no. Issues #59463 and #59465 were submitted for build #200505311800. The informative nodes were broken a while before #200505311800 and since I've seen it (in 4.1) it displayed just an informative *node*. This is a P1 *defect* and was fixed in the past. I have no idea what has happened with the fix afterwards, but apparently things are done differently now. The change had to be done for some reason, which needs to be found before we can do any conclusion. If you do not like the current behavior, submit an enhancement. But now, there *is* an indication of why Call Stack isn't displayed, therefore in my point of view there can not be an open P1 defect for that. So closing again ;-) I'll search the history to see what was done in the past... If there is a requirement for a text in the canvas (BTW: I agree that it will look better), we can submit an enhancement for that. It looks like the setNodesUnavailable method was removed during the debugger redesign. So if you need that behavior, please submit an enhancement and we'll have to prepare and API change... Perhaps issue #36586 can be used to track the implementation of the description... Nothing is displayed when call stack is not available. Verified in development build #200607271800 of NetBeans 6.0. |