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