Team:Berkeley Software/RichardNotebook/Journal

From 2009.igem.org

(Difference between revisions)
(Week Six)
(Week Six)
Line 45: Line 45:
'''Tuesday:''' Spectacles now has tabbing! Of course, for every new item added to the interface, a slew of failure points washes over the code. I spent most of today fixing bugs- there were problems with the keyboard listener, the mouse handler, and the interaction between the thumbnail pane and the workspace panes. I also made some progress in implementing drop-and-insert, but my current stumbling block for that feature is obtaining the mouse's location relative to the workspace pane from a click-and-drag event from the thumbnail pane.
'''Tuesday:''' Spectacles now has tabbing! Of course, for every new item added to the interface, a slew of failure points washes over the code. I spent most of today fixing bugs- there were problems with the keyboard listener, the mouse handler, and the interaction between the thumbnail pane and the workspace panes. I also made some progress in implementing drop-and-insert, but my current stumbling block for that feature is obtaining the mouse's location relative to the workspace pane from a click-and-drag event from the thumbnail pane.
 +
 +
'''Wednesday:''' I managed to pull the mouse pointer's location from java.awt.MouseInfo and manually convert it to a scene coordinate, so drop-and-insert now works in Spectacles. The solution's a bit sketchy, but a ghost widget shows up and shadows the mouse like a normal workspace widget until the left mouse button is released. The problem now is keeping the code as modular as possible. It's so easy to create a bunch of inter-dependencies between the GUI frame and the scene code that will break once the front and back ends are separated. For example, the drop-and-insert functionality that I added today relies on the thumbnail scene explicitly calling on methods specific to the workspace scene, instead of the generic GraphScene class from which both classes are derived. Aside from that, adding new functionality mostly consists of defining new action handlers and putting them into the target widget's action chain.
[[Team:Berkeley Software/RichardNotebook|Back to Richard's Notebook]]
[[Team:Berkeley Software/RichardNotebook|Back to Richard's Notebook]]

Revision as of 07:01, 9 July 2009

Back to Richard's Notebook

Contents

Week One

This week's been crazy busy. I've been looking for bugs in Clotho, fixing up my Cartoonist plugin, and making the Clotho plugin tutorial. On Monday we had an introductory meeting and safety training so we can go into the lab. Doug helped us set up Clotho and handed out some tasks for the week. On Tuesday we discussed and chose our projects for the summer and started work on identifying bugs and cleaning up documentation. I'll be working primarily on a visualization piece with Joanna.

The rest of the week I've been hammering out a plugin tutorial for Clotho. On Wednesday I set up a plugins project in NetBeans and wrote up a preliminary draft of the tutorial. On Thursday and Friday I cleaned up the tutorial a bit and made a sample plugin XML file. I also tried out my tutorial to look for unclear instructions and potential problem points that I would need to point out in the tutorial. Lastly, sacrificing most of my weekend, I added helpful screenshots to the wiki page and cleaned up the tutorial some more. Unfortunately, the last section of the tutorial is still incomplete; I will have to finish it on Monday.

--Legor17 07:59, 8 June 2009 (UTC)

Week Two

Monday The tutorial is done! Late post (from my daily notes) As for the rest of the week, I continued to look into BioJADE and ProMoT as starting points for Clotho's new visualization tool. The source code wasn't very useful or readable, so we decided to try using JavaFX. And that's where the rest of my week went- JavaFX looks great and runs fast, BUT YOU CAN'T CALL IT FROM JAVA. At least not directly, but the hacks I've found so far don't work with the latest version of the SDK, which came out just a couple weeks ago. I do have a working standalone demo that apparently calls JavaFX code as a script, but so far I can't make it work with Clotho. --Legor17 06:07, 16 June 2009 (UTC)

Week Three

Monday Half of the comp team did presentations on their projects; Joanna and I were up today for Clotho's visualization tool. We'll have something like a drag-and-drop toolbox/sandbox setup, with the workspace in the middle and a palette of parts as a side panel.

Integrating the JavaFX demo into Clotho has been a major headache. It completely breaks Clotho when we use Substance 4.1 (a pretty GUI skinning library), and while the latest Substance release doesn't crash, the JavaFX demo plugin crashes.

Thursday The past few days of working on a JavaFX solution are now moot. We did get a decent mockup of the GUI on Wednesday, so it wasn't all for naught. Today I did some more digging for a Swing solution, and I stumbled across an article that shows how to use the NetBeans Visual Library API outside of a NetBeans Module. It irks me that I didn't find it until now, as that would've saved me a lot of time banging my head against a wall over JavaFX. On the bright side, we now have a working drag and drop JScrollPane as a Clotho plugin, and we may soon be able to borrow some components (namely the thumbnail panel and the drag 'n' drop to the workspace feature of blueMarine.

--Legor17 00:40, 19 June 2009 (UTC)

Week Four

VisualWorkspace v1.PNG

Quick recap of the weekend: we're still working on getting the new ClothoPlugin class to play nice. I'm fiddling with the Visual Library's MoveStrategy interface to make a snap-able grid for widgets. I still need to figure out what I need to do to handle what happens after a widget is re-arranged or dropped on the grid. I did manage to solve the resizing issue with the JScrollPane; the trick was to set the GraphScene's LayerWidget's size to the JScrollPane and to account for the JScrollPane's insets.

Update: As you can see from the screenshot to the right, the prototype for the visualization piece is ready (for the most part). Joanna got the thumbnail widget to tell the workspace widget to create a movable version of whichever icon you click on in the thumbnail pane. The workspace icons can be re-ordered by dragging them around, and the icons rearrange themselves when you resize the window. The hardest part about getting the workspace widget working was figuring out how to get the desired behavior with the tools in the Visual Library API. The documentation is so-so; some of the methods don't have any *real* documentation at all. Luckily, you can look through the sources with their Mercurial repository browser; it's a huge help for figuring out how some of the methods work. As such, I'm finding myself creating a lot of custom classes, to the point where I've written my own factory class to house all of the extra handlers I made.

Now that the core of the visualization piece is almost done, all we have to do is hook it up to the language that Lesia and Adam are developing, and polish up the interface. In particular, I need to improve the drag and drop behavior, and add more features (summary info pane at the bottom, menu/toolbar at the top, and a better parts browser in place of the thumbnail pane).

--Legor17 05:40, 29 June 2009 (UTC)

Week Five

Another week, another (late) entry. Spectacles (the working name for what I called the Visual Workspace last week) is starting to come together nicely now. I've fixed most of the bugs so far in the workspace, and Joanna is working on hooking up Spectacles with Eugene. The drag and drop in the workspace is a bit more user-friendly now. Before, the icons would stick to their grid positions and not follow the mouse; now the icons follow the mouse most of the way before snapping to their grid positions.

We still need to add tabbed workspaces for better interaction with Eugene, as well as a right-click menu and properties editor. The hardest part about adding tabbing is the management overhead- Spectacles has to keep track of and clean up after all open workspaces. The workspace scene code will have to change significantly to make tab management easier.

--Legor17 06:11, 7 July 2009 (UTC)

Week Six

Monday: I'm going to try and update every day this week for a change. Dealing with the LayerWidget's ordering of its children has gotten too troublesome, so I'm keeping a separate ArrayList to track the sequence ordering. Question is, is there a better variable-size list-type data structure?

Tuesday: Spectacles now has tabbing! Of course, for every new item added to the interface, a slew of failure points washes over the code. I spent most of today fixing bugs- there were problems with the keyboard listener, the mouse handler, and the interaction between the thumbnail pane and the workspace panes. I also made some progress in implementing drop-and-insert, but my current stumbling block for that feature is obtaining the mouse's location relative to the workspace pane from a click-and-drag event from the thumbnail pane.

Wednesday: I managed to pull the mouse pointer's location from java.awt.MouseInfo and manually convert it to a scene coordinate, so drop-and-insert now works in Spectacles. The solution's a bit sketchy, but a ghost widget shows up and shadows the mouse like a normal workspace widget until the left mouse button is released. The problem now is keeping the code as modular as possible. It's so easy to create a bunch of inter-dependencies between the GUI frame and the scene code that will break once the front and back ends are separated. For example, the drop-and-insert functionality that I added today relies on the thumbnail scene explicitly calling on methods specific to the workspace scene, instead of the generic GraphScene class from which both classes are derived. Aside from that, adding new functionality mostly consists of defining new action handlers and putting them into the target widget's action chain.

Back to Richard's Notebook