Summary: | Support problems with multiple source locations. | ||||||
---|---|---|---|---|---|---|---|
Product: | [Tools] AJDT | Reporter: | Andrew Clement <aclement> | ||||
Component: | UI | Assignee: | Matt Chapman <mpchapman> | ||||
Status: | RESOLVED FIXED | QA Contact: | |||||
Severity: | enhancement | ||||||
Priority: | P3 | CC: | mik.kersten | ||||
Version: | 1.1.11 | ||||||
Target Milestone: | --- | ||||||
Hardware: | PC | ||||||
OS: | Windows XP | ||||||
Whiteboard: | |||||||
Attachments: |
|
Description
Andrew Clement
2004-07-29 05:21:33 EDT
I agree. I'd suggested this on an earlier report, but had trouble finding it and am guessing that it was set to resolved once the compiler supported this (in the future I will link this stuffo on the UI design page). In that report I noted that this is not just an AspectJ-specific issue, but related to any problems message that involves a relationship rather than a location (e.g. consider a "must implement" error message on a sub-type--you might need to go to the super type and add a parameter to the signature there). In general I think that adding a view should be avoided unless there is a big benefit. I suggest this alternative: 1. Provide a context menu item, in addition to the existing "Go to" called "Go to additional location". This is the least invasive, scales (since that menu could fan out) and is well-integrated with JDT behavior. 2. If we decide that this makes it too hidden, also add another column to the Problems list, showing the additional source location info. I add my own columns in another plugin by sublassing ProblemView, but it could be done less invasively by manipulating the existing problems view. I just realized that there is another JDT analogy that could work well for this: Quick Fix. The UI is: - A different error icon on the message, which indicates that it supports the "Quick Fix" action (with a lightbulb). - The "Quick Fix" action is available anywhere that the marker shows up (gutter, problems list). We could use the same UI, and use Markers to store the additional source information. Note that we might need a subclass of error marker that understands the extra source location attributes and renders the different "Multiple source location" error/warning message icon. For the record here is an example that results in an error with multiple locations (thanks Andy): public class Game { public static void main(String[] args) { if ( args.length == 0 ) new Game("1").run(); new Game(args[0]).run(); } public Game(String mode) {} public void run() {} } public aspect Display { pointcut pc(String mode) : call(Game+.new(String)) && (args(mode) || args(mode)); after(String mode) returning(Game game) : pc(mode) { } } Created attachment 13726 [details]
screenshot of prototype
The attachment shows my prototype in action. It is basically Mik's first
suggestion, of adding an entry to the context menu for the marker, with a
submenu for all of the additional locations. I propose we try that for now, and
if we need to do something more obvious later, we can consider adding another
view, or altering the problems view. I don't think using the quick fix entry is
quite right as we are not offering any form of fix. Let me know what you think.
Excellent. Yes, I agree that it belongs in it's current context menu path and not in quick fix. This is already helpful to release as is. The additional thing that would help is to make the errors with multiple source locations have a different icon. However, I think that the best way of doing that for now is to have the declare error/warning icons have the same icon in the problems list that they have in the gutter. That way users can expect this additional menu on those problems. Note that I described this in the older bug 41708. Note that this report also states that we need to navigate to multiple locations, which is resolved by Matt's latest prototype. |