Team:Berkeley Software/RichardNotebook/Journal

Back to Richard's Notebook

Week One - 6/1
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 - 6/8
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 - 6/15
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 - 6/22
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 - 6/29
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 - 7/6
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.

Thursday: There isn't much new with my part of Spectacles today. I've started planning out the implementation for right-click menus for the workspace widgets. I did clean up the code for the mouse handlers to get more consistent behavior out of the GUI, but who knows how many more bugs will crop up with the new menus...

Friday: Today we met with Cesar Rodriguez from Stanford. Adam and Lesia presented Eugene, and Joanna and I presented Spectacles. We discussed development plans for Eugene, Spectacles, and the various flavors of BOL. The canvas section of BioBrick Studio will be very much like the interface for Spectacles; the demo that Cesar showed us is almost like what I originally envisioned for Spectacles. The overall design should turn out something like Mike's Lego CAD, with a parts selection interface on the left and a workspace/information interface on the right. We'll be meeting again at Stanford next Friday after more work has been done on Spectacles.

Week Seven - 7/13
Back to random weekly updates... over the weekend I added code for context menus in the workspace. I plan on making the context menus the same as the Edit menu on the main menu bar; right now the context menus only appear when right-clicking on widgets in the workspace.

Friday: We're at Stanford today! I'll add Spectacles updates and a breakdown of today's doings, but first: Spectacles!

Week Eight - 7/20
...Oops. Stuff that belongs under the previous header: we presented Spectacles and Eugene to Professor Drew Endy, Cesar Rodriguez, and some other folks at Stanford. The Spectacles demo we showed isn't fully functional; there are problems when modifying a Eugene file imported into the workspace with that build. Most of the properties are editable, although changing the names of certain parts will cause problems. I'll put up a newer build towards the end of this week. Back to the trip- partway through our presentation, Drew showed us an example of how complicated a DNA sequence can be with respect to creating a clean and clear abstraction. He repeatedly stressed the importance of abstracting the system from devices from parts from the actual sequence, with emphasis on abstracting the sequence. As it is now, Spectacles is intended for use with parts and devices, and not so much with parts and sequences. After the presentation we sat in for a talk held by some graduate students presenting their projects, and then we went out for Italian food and gelato. I didn't get home until well after 11pm, but it was fun.

Ok, on to this week's stuff -

Monday/Tuesday: Spectacles now has a combo box that lets you drop parts by their text representations. Imports now get tabs with device names, and rearranging parts in a Eugene file works fine.

Wednesday: Spectacles now nags you about unsaved changes! An asterisk shows up in the title to indicate unsaved changes, and disappears after you save a file or export a device. We're close to allowing device renaming and deletion (adding new devices already works) as well as clearing out the workspace (this should be easy once we get device deletion done).

The rest of the week: I don't have much new stuff to say about Spectacles, as I've been working to get Spectacles bulletproofed for demo use. The most annoying part is opening and closing devices; I have to keep track of the visual resources that go with each device, and then open a new tab if that device doesn't already have an open tab.

Week Nine - 7/27
Monday: Devices now have their own placeholder image (just a big black box), instead of the 'No Image' placeholder.

Late update: According to my notes for this week, device tabs can be closed and re-opened, and a few bugs were fixed (like labels properly updating after a name change).

Week Ten - 8/3
Late update: Somehow, I forgot to update for an entire week! My notes say that I added a Save As option to the Notepad editor and Cut/Copy/Paste to the workspace. I also added an image output function that spits out the part images on one line. We also got Spectacles hooked up to Clotho (Spectacles can send sequence data to the Sequence View and part names to the Algorithm manager). The image paths got quite screwy when we converted Spectacles into a Clotho tool, so I spent most of the week fixing that.

Week Eleven - 8/10
Updating this has gotten rather annoying. This week I'm working on rules enforcement and user preferences.

Update - 9/15
Somehow I forgot to update this page. The fall semester has started, and Spectacles still lacks Eugene rules enforcement. User preferences are now available though, along with user-definable part "palettes". --Legor17 08:34, 16 September 2009 (UTC)

Update - 9/28
Time sure flies by- it's already been two weeks since my last update! Lazy rule checking support for Eugene is now ready, and property-based highlighting will be coming soon. Spectacles is close to completion...

Back to Richard's Notebook