Diary: scrapping recent thoughts on GUI.
[jgit/graphgui.git] / diary.txt
blob569e8d90b7f08c74b2ad44ac9066cf4e9b6708ab
1 June 15
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
6 mouse click.
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.
14 June 16
15 Life happened all at once...again.
17 June 17
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.
23 June 18
24 - Added a gradient to commit renderings.
25 - Separated out drawing code and graph panel as separate classes.
27 June 19
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
33     column to center).
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
38     RevCommit.
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
44   gitk.
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.
66 June 23
67 - Scrapping previous comments because locking in to a complete graph read
68   is unacceptable slow.
69 - Commencing with RevSort.TOPO for now, but with an eye to breaking from it
70   later so we can read-and-render.