This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 28568 - UI and framework for compound dialogs
Summary: UI and framework for compound dialogs
Status: CLOSED FIXED
Alias: None
Product: projects
Classification: Unclassified
Component: Generic Projects UI (show other bugs)
Version: 3.x
Hardware: PC Windows 3.1/NT
: P3 blocker (vote)
Assignee: Dirk Ruiz
URL:
Keywords: API
Depends on: 28935
Blocks: 28559
  Show dependency tree
 
Reported: 2002-11-07 16:24 UTC by Pavel Buzek
Modified: 2003-12-11 14:25 UTC (History)
4 users (show)

See Also:
Issue Type: TASK
Exception Reporter:


Attachments
Binary patch providing tabbed ui for the wizards. (30.83 KB, application/octet-stream)
2002-11-18 15:18 UTC, jrojcek
Details
Diff of the WizardDescriptor providing tabbed ui for the wizards. (12.85 KB, patch)
2002-11-18 15:19 UTC, jrojcek
Details | Diff
Patch containing CustomizerWizard and form files of customizer panels. (104.43 KB, patch)
2002-11-25 14:55 UTC, jrojcek
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Pavel Buzek 2002-11-07 16:24:43 UTC
Implement a framework to allow module extend dialogs of projects system. This will be used 
mainly for customizers in projects system. The UI is described in the UI spec.
Comment 1 jrojcek 2002-11-18 15:14:55 UTC
The API for extensible customizer is the current wizard framework. It
means that the customizer tabs would be composed from
WizardDescriptor.Iterator. One tab per one step. Clicking on
particular tab would simulate pressing next/previous button
corresponding times. This can lead to a problem if iterator
dynamically changes sequence of steps or the steps in the content do
not corresponds to actual iterator steps. Another problem can be with
marking a wizard step as invalid. The implementation again tries to
simulate a wizard and disables tabs that follow after the current tab.
This does not fit into the tabbed pane metaphor and should be avoided
too. So, the following rule have to be fulfilled:
* "WizardPanel_contentData" property contains the same steps (names
and number) as the WizardDescriptor.Iterator
* Steps and content property does not change during the
wizard/customizer lifetime
* Each step should stay valid. It means that the user should not be
allowed to enter invalid data.

I will attach patch which turns on tabbed wizard in the IDE. It works
well with the Setup wizard as it satisfies above mentioned rules. Just
put the patch into lib/patches directory.

I will attach also implementation, which is written directly to
WizardDescriptor as it seems safest (in terms of not breaking the
current wizard framework). Please review the patch.

Finally, the customizer would simply turn off the content panel,
content label and provide the Done button (what can be achieved by
hacking the Finish button), so it doesn't look like the wizard.
Comment 2 jrojcek 2002-11-18 15:18:24 UTC
Created attachment 7973 [details]
Binary patch providing tabbed ui for the wizards.
Comment 3 jrojcek 2002-11-18 15:19:40 UTC
Created attachment 7974 [details]
Diff of the WizardDescriptor providing tabbed ui for the wizards.
Comment 4 jrojcek 2002-11-25 14:52:43 UTC
I will attach a patch containing following changes:

* CustomizerWizard extends WizardDescriptor and changes Finish
button's name to Done.

* Five form files and iterators for three custmizers:
4.2.2 Project Customizer, 5.1.1 Sources Customizer, 7.2.1 Build Output
Customizer. It doesn't contain any data access logic, just the code
necessary for displaying the dialogs.

* Some testing code in the layer.xml (folder containing customizers)
and code-nature.xml (attribute pointing to the customizer folder)

* A fix of CompoundWizardIterator. Without it the tabbed ui in the
wizard doesn't work.
Comment 5 jrojcek 2002-11-25 14:55:15 UTC
Created attachment 8043 [details]
Patch containing CustomizerWizard and form files of customizer panels.
Comment 6 David Konecny 2002-11-25 16:35:37 UTC
Thanx! I'm going to try it.
Comment 7 jrojcek 2002-11-26 16:53:02 UTC
Well, it seems that the tabbed wizard has not been accepted by the
community. I have started to work on a different tasks so reassigning
to an owner of the subcomponent.
Comment 8 David Konecny 2002-11-26 17:26:11 UTC
Jano,

too strong words. There is not any problem with tabbed UI - the guys
just get scared when they tried your patch and saw template wizard
with numbered steps on the left, next/prev button on the bottom and
tabs at the top. I showed Dafe the customizer which is basically
regular tab dialog and he liked it.

The only remaing problem is with where the option will be and at the
moment it was not decided yet. I would like to ask a question: would
it be possible to move your implementation from WD into
CustomizerWizard which is in projects? That's the easiest solution. If
there are some problems we can copy _whole_ WD and store it in
projects as CustomizerWizard (this is a bit messy, but also possible
solution). 

Anyway, thanx for the good job. It works really nice! The discussions
about additions into OpenAPIs are always painful.

Thanx Jano! 
Comment 9 jrojcek 2002-11-27 08:35:37 UTC
I am sorry for my previous attitude.

To answer your question, it is not possible to add a tabbed ui by
subclassing current WizardDescriptor. That is because there is nothing
to override except updateState() method, which when overridden
actually suppresses all functionality of WizardDescriptor, thus
nothing of the functionality would be reused. So, I would subclass
DialogDescriptor, maybe copy tabbed ui from the patch, but writing it
from the scratch should be better, and make it work only with
CompoundWizardIterator. CompoundWizardIterator should be either
enhanced by providing content of the iterator by a method call, or
getting content list from a client properties could be copied from
WizardDescriptor.

Hmm, now I think, I should have done it this way.

It can take few days of work, so copying whole WizardDescriptor with
my patch could be taken as quick solution.

Once again, sorry for not completing my work.
Comment 10 Vitezslav Stejskal 2002-11-27 10:33:30 UTC
Jano, your help was great. The important thing is that you wrote the
code, now we have to find some place where to put it ;-). Thanks again.
Comment 11 David Konecny 2002-11-27 12:01:57 UTC
Closing as fixed. The scope of this issue for M4 was implemented. The
remaning tasks are filed in issue 29050.
Comment 12 Pavel Buzek 2003-07-02 14:07:38 UTC
i've verified all these issues
Comment 13 Pavel Buzek 2003-07-02 14:18:37 UTC
closing all my verified issues