While there is some documentation on Code Bubbles, we are always looking for more. Note that some of this documentation might be out of date in that Code Bubbles tends to evolve much faster than the documentation does.
Using Code Bubbles takes a little getting used to. While it is designed so that migrating from Eclipse to Code Bubbles should be straight-forward, the bubble manipulation and navigation facilities are unique. Code editors in Bubbles use the same editing key bindings as Eclipse (to the best of our knowledge), with some extra capabilities thrown in as well. The left mouse button is used for selection. The right mouse button is used for moving bubbles (or groups of bubbles or the bubble area) around and, when clicked, for obtaining a pull-down menu of context-sensitive options. The middle mouse button removes bubbles (as does ESC and ^W).
The function keys F3 and F4 provide direct navigation. When the focus is over an identifier, F3 will go to the bubble containing the definition of the identifier, while F4 will go to the uses of that identifier. When there are multiple instances (multiple definitions dues to overloading or multiple uses), a "bubble stack" will appear instead of an individual bubble. Here you can click on the different instances to expand then, and can either edit them in place or drag them out of the stack to be individual bubbles. These navigation functions try to be intelligent and not duplicate the original bubble.
Another way of navigating is to use the package explorer. (It should come up initially on the right, but can be moved wherever you want it or removed completely. Right clicking on the bubble are (outside of a bubble) will bring up a local package explorer along with a top-level menu. If the package explorer isn't present, a button on this menu will bring it back.) Typing in to the package explorer text box (at the top) will restrict the displayed elements to those whose names contain the word(s) typed. This should make it easy to find code you are looking for. Shift-return in the package explorer brings up a text search on the text you typed, providing another means of navigation.
Other useful key sequences are menu-shift-B (menu is either control on Mac or meta on Linux/Windows) which expands all ellisions in the current window and grows the window to include the text (up to a reasonable limit; menu-shift-Q which adds a block commen; menu-shift-J which adds a JavaDoc comment; menu-shift-P which tries to fix the errors in the selected code; alt-C (ctrl-C on Mac) which creates a separate bubble for the method containing the cursor; and alt-X which is similar but cleans the original bubble.
In addition to the right-click menu when clicking in the bubble area (main display), there are other more specialized menus. Try right clicking on the bar along the top of the display -- it includes useful features like removing all bubbles or all visible bubbles. Try clicking on items in the package explorer. This provides options for creating new classes, etc. Right clicking on text in an editor also provides a context-sensitive menu.
Leaving the cursor in one place will bring up context sensitive help options. The "Tell me" choice for these will do a demonstation with voice of the chosen feature. This information is also available on a web page. Additional help is available from the help button on the top right. This includes key bindings.
At one point we developed a simple tutorial to help the user understand how Code Bubbles could be used and what it could do. This includes an Eclipse project to be installed on the user's machine. Although Code Bubbles has been updated a bit since then (and hence the images might look slightly different), when last tried, the tutorial still worked. (This is probably more dependent on the version of Eclipse and Java than Code Bubbles itself.) Please report any problems and we can attempt to fix them.
In addition, a number of videos show the system in action. One is an early help video. Another shows the task visualization tool. A third shows Code Bubbles being used as a front end for code search. One on continuous execution (live programming) is also available.
We are currently working on a user manual that details many of the capabilities of Code Bubbles and how it can be used effectively. It is currently in a very preliminary state, but some people might find it useful. If you have any comments or suggestions for this manual, please contact us.
There is also an outdated simple user guide that might be helpful.
"Code Bubbles: A Working Set-based Interface for Code Understanding and Maintenance", by Andrew Bragdon, Robert Zeleznik, Steven Reiss, Suman Karumuri, William Chang, Joshua Kaplan, Christopher Coleman, Ferdi Adeputra, and Joseph LaViola, Jr. (CHI 2010)
"Code Bubbles: Rethinking the User Interface Paradigm of Integrated Development Environments", by Andrew Bragdon, Steven Reiss, Robert Zeleznik, Suman Karumuri, William Chang, Joshua Kaplan, Christopher Coleman, Ferdi Adeputra, and Joseph LaViola, Jr (ICSE 2010)
"Integrating S6 Code Search and Code Bubbles", by Steven Reiss (TOPI 2013)
Plugging in and into Code Bubbles: The Code Bubbles Architecture, by Steven Reiss, Jared Bott, and Joseph J. La Viola (SP&E 2013).
"Tool Demonstration: The Visualizations of Code Bubbles", by Steven Reiss (VISSOFT 2013).
"Tool Demonstration: Browsing Software Repositories", by Steven Reiss (ICSM 2014)
"A Framework for a Programmer's Minion" Extended Abstract, by Steven Reiss and Qi Xin (ICSE 2017)
"The Challenge of Helping the Programmer During Debugging" by Steven Reiss (VISSOFT 2014).
"SEEDE: simultaneous execution and editing in a development environment" by Steven Reiss, Qi Xin, and Jeff Huang, (ASE 2018).
"Designing Collaborative Development Tools" by Steven Reiss and Alexander Tarvo (2013)
"Automatic Visualization of Program Tasks in Code Bubbles" by Steven Reiss and Alexander Tarvo (2014).
"Learning program component order" by Steven Reiss and Qi Xin (2017).
"Continuous flow analysis to detect security problems", by Steven Reiss (2019).
Copyright © 2021 · All Rights Reserved · Steven Reiss