Hello,
I'd like to explore what can be done in a reasonable amount of time. My goal is to have something that is usable and functional and once everyone is confident that it is heading in the right direction, features can be added/refined. Here are some points:
~~~~~~~~
RELEASE
~~~~~~~~
It would be nice to have it in a release but if not, it can be handled through http://www.vastgoodies.com/. However, whatever is uploaded to http://www.vastgoodies.com/, I'd like it to be correct.
~~~~
GUI
~~~~
All of this is mainly about the GUI. Talking to different folks has resulted in the whole gamut, from a MED type browser, to one like Pharo, to 'it should be done in Seaside'. So, here are some basics (from a Windows perspective. Unix isn't forgotten since a signicant amount of work is being done but it isn't ready yet):
1. The browser will be done as a GUI, not in Seaside.
2. The widgets available are 'WIN95' widgets. I use that designation because the MS SDK header files use it in a '#define'. This means there won't be fancy widgets because the ST product uses what is available from the OS, not third party libraries.
~~~~~~~~~~~
SCENARIOS
~~~~~~~~~~~
A user opens a browser, on the left side is what is available in the image. On the right side are apps/classes/methods from either the image or the repository. The goal is to merge code from several different methods on the right side into a selected method on the left.
Issue: How to present the classes and methods. Other environments have an easier time because it requires two list boxes, a 'Change Set' list and what classes are in the change set. With Envy, for the repo, six list boxes are required, 'App/Edition' -> 'Class/Edition' -> 'Method/Edition'.
Possible Solution: Use a list box or table that expands, the expansion would be:
. . . but any one of those should be expandable to all its editions. The app would have its editions under it, the same for the class, etc.
The user would select the 'App', expand it, select 'Version 1', expand it, select 'version 2' of the class, expand the methods, select 'edition 3' of the method. The asterisks indicate what is released. The above list would be in a hierarchical table or list.
The left side of the screen would be a little easier since it represents what is currently in the image. The hierarchy would still be there but not all the editions and versions as shown above. The reason is code can only be moved into classes and methods loaded in the image.
The above could be split into two list boxes. The topmost box has the apps and classes and the hierarchical box underneath has the method hierarchy. Underneath that is the text pane.
~~~~~~~~~~~~~~~~~~~~~~~~~~
HIGHLIGHTING DIFFERENCES
~~~~~~~~~~~~~~~~~~~~~~~~~~
This is a tough one, because for the initial release, I won't be trying for graphics, i.e. draw a box around text on the left side (or an underline) and expand it out to a large shaded paren going to the text on the right like Apple's XCode browser. I'm looking for suggestions on that.
~~~~~~~~~~~~~~~~~
OTHER SCENARIOS
~~~~~~~~~~~~~~~~~
- Both sides of the window show what is in the image.
- Both sides show what is in the repo. No code can be moved though.
- If 'image' components are being shown, switch to showing classes/methods only, no apps.
Suggestions welcome.
Thanks.
--tc