amharrison / jactr-eclipse

jACT-R Eclipse Integration
GNU General Public License v3.0
3 stars 3 forks source link

Implement river view of buffer activity #11

Open monochromata opened 9 years ago

monochromata commented 9 years ago

As proposed by Anthony, this view will show a Gantt-like chart of buffer activity (vertically) over time (horizontally).

I could use http://jaret.de/timebars/documentation/timebars.html that I have used before. I is GPL'ed but has a linking exception for Eclipse Public License 1.0 (EPL), Common Public License 1.0 (CPL), GNU Library or "Lesser" General Public License (LGPL) 2.0/2.1, Apache License 2.0, Common Development and Distribution License (CDDL) (http://jaret.de/timebars/documentation/timebars.html#d4e894)

amharrison commented 9 years ago

Nice, I'd looked at that component before for this purpose - but couldn't invest the time.

All of the core - eclipse IDE code should be GPL (LGPL for jACT-R & CR), but that does not prevent other individuals from using their preferred license model.

IDE tools and visualizations can be broadly categorized into three groups: static, streamed, streamed w/ query. Static tools rely upon analyzing the source code (outline, associative viewer) - and can ignore the runtime data entirely. Streamed w/ query is what most of the IDE tools use (log, buffer, production), and needs to be able to do random access in addition to support streaming. Streamed tools can just consume the runtime data directly w/out random access (visicon does this, it always represents the current state).

The river view, since it is a summary of past activity, should just support streaming and build up its representation as it goes. There is no need to support queries.

org.jactr.eclipse.runtime.buffer2 shows how you can use an IRuntimeTraceListener to catch BulkBufferEvent(s), which contain an AST (see ASTSupport) describing the state and contents of the buffers at each time.

I wouldn't recommend querying BufferData (as it uses the stream/query model), but instead hook into the RuntimeTraceManager in the same way, listening to the same data as it comes in; rendering the buffer based on its status slots (buffer, state).

Perhaps a tooltip display showing the buffer contents? [that might be a place where you would use query the BufferData structure]

You might be inclined to look at the visicon viewer, since it is closest in terms of function, however it's implementation is using the original version of runtime data propagation which had horrible memory behavior. It's update is already in the tracker.

amharrison commented 9 years ago

It may be best to start building this explicitly for the e4 platform in Eclipse. The current IDE is based on the older Eclipse 3.x application model, which will be deprecated by the next major revision.