When implementing the dynamic filtering of time graph views (activated by keystroke /), we added properties where we can hide or dim time events (intervals as you call it). I’m wondering if you could
try to use the property IFilterProperty.EXCLUDE to achieve your goal. So, to hide time events, just do “timeEvent.setProperty(IFilterProperty.EXCLUDE, true)”. This will hide the time event and if the whole row becomes empty it will remove the whole row. Do
this instead of the StateItem way that you implemented.
Please let me know how it goes.
From: tracecompass-dev-bounces@xxxxxxxxxxx <tracecompass-dev-bounces@xxxxxxxxxxx>
On Behalf Of David Wootton
Sent: January-03-19 4:35 PM
To: tracecompass developer discussions <tracecompass-dev@xxxxxxxxxxx>
Subject: [tracecompass-dev] Using StateItem and interval colors to present multiple views of same trace
When I updated my plugin to work with Trace Compass 4.1 it occurred to me that I could reduce storage utilization and improve performance for one type of my traces.
For one type of trace, the primary trace view displays all of the intervals in the trace. I have two secondary traces that display subsets of the intervals in that trace.
Originally, I implemented this by implementing individual analysis modules and state systems for each of the trace views, then switching between those state systems.
In my Trace Compass 4.1 changes, I thought I could manage this by using StateItem objects, including the StateItem table index INVISIBLE, which I used to hide an interval in my subset views. I accomplished this by keeping a separate
map of event names and an event class that interval represented. My subset trace views then returned INVISIBLE for intervals which did not match the event class for my subset trace view.
I originally thought this worked, but after working with it more, I think I have made bad assumptions and that this will not work
The problem I have is that the display behaves erratically, where I have not been able to identify a pattern. If I switch from my main view to a subset view, that seems to work correctly If I switch between subset views or zoom
in and out, then intervals randomly disappear, maybe because my code is incorrectly setting StateItem index to INVISIBLE.
If I select an interval from the trace table view, then that interval appears in the trace view.
I think part of this may be du to intervals which contain multtiple intervals within them, because I'm zoomed out far enough that a single pixel represents a duration spanning multiple intervals. I'm seeing the tooltip text for
these intervals displaying 'MULTIPLE' instead of an event name.
The other thing I'm seeing is that if I hover the mouse over the space where an interval marked as INVISIBLE exists, then I get tooltip text for that interval, meaning it's in the view, but I just can't see it.
Have I made some bad assumptions and done something I shouldn't have?