2 Set short-term todo list:
3 1. Use a JPanel to custom paint a vertical string of elipses connected by lines.
4 2. Make a JPanel subclass to implement a basic floating info window containing
5 some static text. Instantiate in #1 and make it jump to the location of a
7 3. Incorporate Dscho's kd-tree code to locate with elipse (if any) was clicked.
8 Attach the floating window from #2 to the clicked commit.
9 4. Use JGit to get commit info on just a few commits. Draw commits as a
10 vertical sequence without regard to branching. Populate the floating box
11 with some basic commit info.
12 5. Start working on a "correct" layout.
15 Life happened all at once...again.
18 - Accomplished #1 as a couple commits.
19 - Noticed JGit has been forked. I'm cloned to egit/graphgui.git, but will
20 add a remote "jgit" in my local clone to stay in sync with the new JGit
21 repository on repo.or.cz.
24 - Added a gradient to commit renderings.
25 - Separated out drawing code and graph panel as separate classes.
28 - Discussed layout approach with Dscho.
29 - Using RevWalk, when a parent is found, update its vertical position
30 based on that of the current RevCommit.
31 - For horizontal position, track the horizontal locations of the children
32 of a commit, and attempt to center under them (place in nearest
34 - Spearce says use RevCommits, as they are lighter-weight.
35 - RevCommit meant to be subclassed, rather than put into an external
36 Map<RevCommit, MyInfo>
37 - Subclass RevWalk in order to produce your own custom subclasses of
39 - To lookup a previous commit, use RevWalk's lookupCommit() or parseCommit()
40 - Need to create make_gui.sh and gui.sh scripts.
41 - Need to package/organize properly as part of that process.
43 - Got to thinking about a comprehensive approach to layout, similar to that of
45 - Talked to Ilari and spearce about behavior of RevWalk. Was curious to know
46 if you could preview parents with RevCommit.getParents() in the same order
47 in which RevWalk will eventually return them.
48 -- Not sure if this is actually necessary or relevant to what I want to do.
49 I need to think some more about it.
50 -- spearce says that it doesn't work that way, and that ordering mostly
51 depends on commit time.
52 -- spearce says (jokingly?) to accomplish it "modify StartGenerator to use a
53 different type of AbstractRevQueue to get the order you want."
54 -- Ilari said "The exact description of FIFO ordering (with no uninteresting
55 commits): Mark all commits as UNSEEN. Push all starting points into
56 queue. Until queue is empty, pop commit from queue. Show that commit and
57 mark it SHOWN. In order, add parents of that commit in order that are
58 still marked as UNSEEN to queue, marking them as QUEUED. Go back to
59 extracting commit from queue.
60 -- Also, spearce said Dscho probably doesn't want us to use RevSort.TOPO
61 because it must spin the whole graph first.
62 --- On further thought, the plan I'm thinking of may be able to work with
63 that by just "pushing" a parent further down, leaving an "arrow"
64 behind in its channel.
67 - Scrapping previous comments because locking in to a complete graph read
69 - Commencing with RevSort.TOPO for now, but with an eye to breaking from it
70 later so we can read-and-render.