Some comments on the latest projects build
Tim Boudreau <[email protected]> Sat, 20 Sep 2003 01:04:12 +0200
| Newsgroups | gmane.comp.java.netbeans.modules.projects.devel |
|---|---|
| Message-ID | <[email protected]> |
I just downloaded the newest build, and thought I would give some
feedback as I try it out:
Creating a new project:
Set home directory
- Use a different dir name than $HOME/Projects - it's not terribly
unusual for a person to organize their own work in a directory called
Projects in their home dir - I know I've done that in the past. So to
simply avoid such collisions, maybe something less likely, like
"nbprojects" or such.
- When I created a new Basic Java App project, the home directory
field was empty, and the chooser opened on
Filesystems\This Computer\C:\downloaded\netbeans\bin. Probably
not the right place, and it would be good to provide a reasonable
default (this may be a bug, it did provide a reasonable default
the first time).
- The file chooser UI (actually my area of responsibility,
DataObjectEditior) has some problems - ones I don't know that we'll ever
be able to get rid of if we want the UI to be the look and feel's file
chooser UI. Internally it uses an implementation of java.io.File which
wraps a Node which wraps a DataObject - all in all pretty wildly complex
and fragile. Some of the issues here:
- Either *nothing* is displayed in the "look in" pulldown, or
"Filesystems" is displayed. Either one is pretty meaningless.
- The home button goes to "This computer", whatever that is.
- Creating a new folder in "This computer" looks like it works but
does nothing
For a bunch of this stuff, there's no easy fix because JFileChooser
completely (and I mean *completely*) encapsulates the components that
are part of the UI - we could do some hacks to try to find the right
components and fiddle with them, but the odds of that working across
look and feels or JDK revisions are slim to none.
Add source directories, Add dialog:
- 0 pixel margin on various labels in the the Add... dialog. Needs a
bit of UI tuning to align the Create button over the Cancel button,
things like that.
- What is "Places" and will it ever contain anything more than This
Computer? Seems like two semi-artificial abstractions here and I'm not
sure either one helps.
- Very poor performance expanding a folder with lots of subfolders.
Probably a result of DataSystems, definitely something that should be
looked at wrt FS Extension.
- The New Directory field and label should probably be a button or
something, more like a file chooser. Most of the time this will not be
the option used (particularly since the task is to add *existing*
sources at this point in the wizard). Also it is not clear where the
directory will be created
- The Add dialog forgets the last place I added sources from - I have to
drill through Places/This Computer/etc. again. Two suggestions here:
1. Open on the parent of the last added dir if there is one
2. Provide a drop-down of previously used "recent folders" - this is
fantastically useful in other applications, we should do it to (for
file choosers as well, really)
I end up with paths in the wizard like:
"This ComputerC:/space/nb_all/openide/src"
Surely the "This Computer" part shouldn't be there, or at least it
should have a trailing /.
Add resources:
Why the word "resource"? It sounds like an implementation detail here -
at least for Java, are there any resources that are not class libraries?
Either allow the project nature (if I understand the nomenclature here)
to provide the description here, or just call it libraries.
Select Output directory:
- Delimiter problem -
C:/Documents and Settings/Administrator/Projects/openide\out
looks a little weird.
Aha, my project home dir can also be in "Places". Cool, I think.
But I can't actually set the output dir to be the path described above -
I can't drill down through the openide project to the "out" dir. And if
I select the project, OK is disabled - so what's the point of it being
here?
And at the end of the wizard...
java.lang.ArrayIndexOutOfBoundsException: 0
at
org.netbeans.modules.java.project.wizards.OutputPanel$4.acceptNodes(OutputPanel.java:190)
at
org.netbeans.core.windows.FileSelector.propertyChange(FileSelector.java:229)
at
java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:252)
[catch] at
org.openide.explorer.ExplorerManager$1.run(ExplorerManager.java:235)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
Using the project...
Too many nesting levels!
- Sources/Packages - does the Sources node really need to be here?
- Output/Compiled Classes - when is the output *not* compiled classes?
Am I really ever going to have more than one output directory in a project?
Though not wildly scalable, you could do something like allowing the
nodes for Output/Sources/etc to check if they only have one child, and
if so, provide the children of the one child, hiding the intervening
node. This might allow you to make some improvement in a fairly generic
way.
What does "opening" a project mean? It seems to just expand a tree node
in the Projects pane. I happen to know that there can even multiple
projects opened at the same time.
When I close a project (which one am I closing when I choose Close
Project from the menu, anyway?), its node disappears from the list.
Maybe I shouldn't be able to open a project that's already open - it
would be more discoverable what this means that way.
Creating a new class:
I right click Test/Sources/Packages and choose new File/Folder, use the
Main template, and get to Target location. Some issues here:
- Project combo is pointing to the "openide" project I created earlier,
but I clicked on the Packages node for project Test.
- Project combo is very slow to open the first time
- What is the "browse" button that is always disabled?
- What is the difference between Package Folder and Package? Why
is the Package Folder drop-down enabled, but contains only one
item? (maybe just change the text "Package Folder" to something
more meaningful that distinguishes it from "Package").
- It is not clear that I need to tab out of the Package field to
trigger the "Folder does not exist - create?" dialog - it just
looks like I must have forgotten something because Next is disabled.
Then when I do tab out, I get the surprise of the dialog popping
up. Better solution: Display some error text at the bottom of
the wizard panel to describe what the situation is, and provide a
"create" button that is enabled if the folder doesn't exist.
- If I create a package, then cancel the wizard, the package folders
are still there.
Now I come to "Set Up Run Profile" - what is this? I see a bunch
of disabled fields and one checkbox saying "create a new run profile
using TestMe class". Issues:
- Text should be "using *the* TestMe class"
- What happens if I do nothing on this screen and click Finish? It
seems very mysterious, and I feel like I should create a new
run profile or my project won't run.
- What does Make profile public via VCS do? It sounds like it will
publish something somewhere, which probably isn't really what it
will do.
- What is the scope of "Set as default run profile"? The project?
Global?
BTW, cancelling the add dialog a second time produces
java.lang.IllegalArgumentException: Called DataObject.find on null
at org.openide.loaders.DataObject.find(DataObject.java:434)
at org.openide.loaders.DataFolder.findFolder(DataFolder.java:510)
at
org.netbeans.modules.java.ui.wizard.TargetChooserPanel$TCPanel.storeSettings(TargetChooserPanel.java:572)
at org.openide.WizardDescriptor.resetWizard(WizardDescriptor.java:821)
at org.openide.WizardDescriptor.access$800(WizardDescriptor.java:55)
at
org.openide.WizardDescriptor$Listener.actionPerformed(WizardDescriptor.java:1155)
Okay, I have my class. Let's try to run it. I didn't create a new
"run profile" in the wizard. I add System.out.println("Hello world");
to my main() method and press F6...
- An output tab called "DefaultExecutor" appears
- The execution window briefly appears
- No output ever shows up in the output window - maybe it's not being
run?
Okay, so I look on Run|Edit Run Profiles. I see there is something
called DefaultExecutor. It points to a class examples.Main. I change
it to point to my test class. Fine, it works.
What is Execution Platform? There is a drop-down with one item -
"default platform" - and no indication what this is or how (if?) I could
create another one.
Runtime classpath tab - should I really be able to remove the directory
the project compiles into from the classpath?
Platform tab - this tab is completely empty
Trivial thing: Is it really useful to be able to rename class files
output by compilation?
Right click Sources node and choose Customize.
- The text "Current Sources Node Contents" should be changed - Nodes
are an implementation detail.
- Checkbox: "Hide Sources that are not under organizers" - this is the
first mention of Organizers I have seen, I have no idea what this will
do.
- The dialog is a tabbed pane - with only one tab. Hide the tab in
this case.
Click Add in sources dialog. I add the source dir for the treefs module.
- What does "Add to sources node only" do? It's a little mysterious.
- Rewrite the text to not mention nodes (also the description of
"Scan for Java Package Roots")
Expanding folders in the source tree in explorer is extremely slow.
Why the property Hide Sources Roots on Sources? Seems like wiggling out
of a UI design problem by providing a setting.
What is the combo box in the toolbar "ReleaseConfig"? (the other option
is DebugConfig - I guess it's exe profiles of some kind). How often do
we really expect users to want to change this? It probably doesn't
deserve toolbar space.
Project view submenu of context menu for a project:
- Some of these views are non-orthagonal - they seem more like they
should be checkbox options.
- What I really want is packages directly under the project node,
without the intervening "Packages" node. That would be more useful
than the current "Show Packages Only" view.
- Couldn't the project views be named based on what they do rather
than what they hide? The current list makes it seem like we just
couldn't decide what to do.
Customize Project dialog:
- Wouldn't "Configure" be a better name than "customize"?
- Lots of combo boxes with only 2 items. Radio buttons would
be nicer.
- Build/Run tab - "Startup Profiles for [combo - Execution or Debug]" -
what is a startup profile? I haven't heard of this before.
Customize Packages dialog:
- Surely we can come up with a better title than "Customizer Dialog"
- Same "This ComputerC:/" node names as mentioned above
- Isn't this dialog really an Add to Project dialog? That seems
to be what it does.
So, general thoughts:
- Projects looks better than the last time I tried it - things work
that didn't work before.
- The list of terms used in the UI is pretty large and many
(organizers, startup profiles, places) are not terribly intuitive.
The real problem comes when you suddenly encounter an unfamiliar
term casually mentioned in some dialog elsewhere, like
organizers mentioned in a checkbox caption, or the "Places"
node in an Add dialog. Any place we can eliminate a new term
we're making users learn, it's probably a win.
- I feel like I need to see some kind of dependancy graph to figure
out how the various profiles, configurations, etc. inter-relate.
- It feels like we're punting on some of the harder UI questions
regarding handling of trees, etc.
- Lots of dialogs seem to be optimized for the case where there is
more than one of something most users will only see one of (such
as Compiled Classes dirs, exe profiles, etc). Better general
handling of situations where something that there could be 20
of but usually aren't would be good. This isn't that hard to
do - for example, an editor that will use radio buttons for a
few items or a combo box for more is doable.
- Too many configuration options! I've seen a bunch of posts on
various mailing lists that one thing a lot of users dislike about
Eclipse is the enigmatic "project" concept, and having to configure
your project. We should aim to do better - after all, configuring
their project is something nobody *wants* to spend time on.
Anyway, I hope the feedback is useful,
Tim