Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 49592 - [RCP] Provide an editor for building Eclipse products
Summary: [RCP] Provide an editor for building Eclipse products
Status: RESOLVED FIXED
Alias: None
Product: PDE
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows XP
: P3 enhancement with 5 votes (vote)
Target Milestone: 3.1 M5   Edit
Assignee: PDE-UI-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 71131
  Show dependency tree
 
Reported: 2004-01-06 15:08 EST by Ed Burnette CLA
Modified: 2005-03-06 20:25 EST (History)
31 users (show)

See Also:


Attachments
Product editor patch for overview page ui (13.03 KB, patch)
2005-03-06 14:02 EST, Pat McCarthy CLA
no flags Details | Diff
Product editor overview page ui image - alt format (28.79 KB, image/x-png)
2005-03-06 14:02 EST, Pat McCarthy CLA
no flags Details
Normal sized editor UI overlaid on maximized editor display (70.23 KB, image/x-png)
2005-03-06 20:20 EST, Pat McCarthy CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ed Burnette CLA 2004-01-06 15:08:30 EST
Currently the user has to go through a series of error-prone steps to create a 
stand-alone RCP application (see the manual steps at 
http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/rcp-
proposal/rcp_tutorial/tutorial1.html).

This would be a good place to have an export wizard, similar to "Deployable 
plug-ins and fragments" wizard except it would:

- copy the startup.jar
- copy all required plug-ins referenced directly or indirectly by the main 
application plug-in (list determined automatically)
- (optionally) create a batch file/shell script that would invoke java on the 
startup jar with the correct application name and classpath
Comment 1 Sebastian Davids CLA 2004-01-16 09:50:36 EST
This is a "must-have" for 3.0 in my opinion.
Comment 2 Pascal Rapicault CLA 2004-04-19 15:07:26 EDT
Wassim, it seems that pde build has all the necessary bits and pieces that you
need to do a good export tool.

The export has to be done in two steps:
1) Build all the plugins that are to be compiled (and only those, see notes below).
2) Package the app using the package script generator.

For the building phase there is a trick. If the user export a feature or a set
of plugins in which some of them are not compiled you only want to compile the
one that needs to be compiled (ie: you don't want to ask pde build to generate a
build script for them).

From a non pde-ui guy point of view, it seems to me that this could be done from
someone from the community! (what about you guys in the cc list ;-))
Comment 3 Wassim Melhem CLA 2004-04-19 15:19:04 EDT
cc Jeff because he likes to stay on top of these things.
Comment 4 Wassim Melhem CLA 2004-04-23 12:17:05 EDT
Presentation-wise, we would this wizard to be as useful as possible for its 
specific purpose.  Yet, we don't want it to duplicate the existing Plug-in 
Export wizard.

So I'm soliciting suggestions from the people who are asking for this feature 
as to what they would like the RCP export wizard to look like.

What plug-ins should show up in the viewer (workspace or all)?
Should there be quick selection buttons (e.g. "Select Main RCP 
Plugins", "Select Optional RCP Plug-ins" etc.)

Considering the time left in 3.0, please provide feedback ASAP, so that the 
wizard would be most useful to you.
Comment 5 Sebastian Davids CLA 2004-04-23 13:16:50 EDT
What comes to my mind for 3.0:

Present all (non-binary) plug-in projects in workspace -- similar to the
plug-in/frament export right now.

One selects the ones belonging to the RCP app, i.e. "ones own code"; option to
only export the binary or binary & source.

An option to export all dependent plug-ins (e.g. necessary org.eclipse.***
plug-ins) -- this is enabled by default.

An option to export startup.jar -- also enabled by default.

One selects the platforms for which a startup script will be generated
(multi-select); for all scripts one selects the "main" class, i.e. the one for
the -application parameter; the name could be configurable -- by default a
script for the development platform will be generated; implementation note:
maybe only one UNIX and one Windows script are necessary for all platforms.

The script will be similar to this (below is a bare-bones script for Win 98):

@@@@

echo off
start javaw -cp startup.jar org.eclipse.core.launcher.Main -application
org.example.RcpApplication %* 

@@@@

One has the option to either export to a directory structure, e.g.

/rcp_app
/rcp_app/plugins/<all selected and dependent plugins>
/rcp_app/startup.jar
/rcp_app/run.bat (<= generated startup-script for Windows)
/rcp_app/run.sh (<= generated startup-script for UNIX's)

Or a ZIP containing the directory structure above.

@@@@

Post 3.0 there could be an application builder instead of a startup-script--e.g.
an *.exe will be generated.
Comment 6 Sebastian Davids CLA 2004-04-23 13:19:05 EDT
Clarification for the above:

>>for all scripts one selects the "main" class

One selects the "main" class once and will be applied to all scripts.
Comment 7 Wassim Melhem CLA 2004-04-23 13:55:29 EDT
Thanks Sebastian. 
As for how to launch the RCP app, we plan to do it the right way in 3.0.  i.e. 
with eclipse.exe, config.ini and the rest of it.  No special scripts would be 
needed.

Also one thing that the wizard will include is a "Validate" button that will 
be used to validate the set of plug-ins that the user selects to make sure 
they will actually make up a valid product before they export.  For this, PDE 
will use the Core Resolver to make sure all requirements for the plug-ins have 
been met for the product to function properly.

This is always necessary/useful when users are in charge of hand-picking plug-
ins.
Comment 8 Ed Burnette CLA 2004-04-23 14:16:24 EDT
I was envisioning right clicking on the project, selecting Export > RCP 
Application, and getting something similar to the Plug-ins page for a run-time 
workbench launch configuration when you've selected Choose plug-ins and 
fragments to launch from the list. You select one (or more) plug-ins that you 
want to definitely include (some from the Workspace and some from the External 
Plug-ins list), click Add Required Plug-ins to have it figure out which 
additional ones are needed for dependencies, and then click Finish and it 
copies all those to the deployment directory/zip file/self-extracting exe/etc..

This is a very plug-in centric view though. If you're going to use eclipse.exe 
and config.ini then you're probably going to want to have it be feature-based 
instead of plug-in based. As long as it doesn't complicate the initial RCP 
developer experience that's ok.

Ideally I'd like to be able to create a sample RCP application and deploy it 
to my local machine using all the default options and run it within a minute 
or less. For non-default options, the wizards should let you easily change all 
the commonly customized things like the splash bitmap, window icon, about box 
text, and help page start.
Comment 9 Wassim Melhem CLA 2004-04-23 14:23:55 EDT
>If you're going to use eclipse.exe and config.ini then you're probably going 
>to want to have it be feature-based instead of plug-in based. As long as it 
>doesn't complicate the initial RCP developer experience that's ok.
Actually, the runtime is feature-agnostic.  Feature is a Platform/Update 
concept, and not needed in this story.  As long as PDE creates a config.ini 
file containing the list of plug-ins and their start levels, the runtime would 
be happy.
Comment 10 Ed Burnette CLA 2004-04-23 14:43:21 EDT
You don't need a primary feature any more for branding?
Comment 11 Pascal Rapicault CLA 2004-04-23 14:48:43 EDT
Branding can now be done declaratively thanks to the 
org.eclipse.core.runtime.products extension point.
There are some examples of this in the platform or equinox newsgroup.
Comment 12 Jeff McAffer CLA 2004-04-23 15:22:03 EDT
The "export" or "deploy" RCP app wizard is nice.  There are two scenarios:
1) update in the target: in this case you really need to be producing a set of 
features in the target.

2) update not in the target: in this case you are choosing plugins

I believe this function is powerful for the ongoing development (e.g., 
iterative develop/test cycles).  Of course, the regular (and amazing) PDE self-
hosting style test cycle should also be enabled.  

There is also a need for basic getting started wizard (e..,g New RCP app).  
This would ask people questions like 
- do you want a plugin
- do you want an app
- define the product
  - do you want a splash (where is it)
  - do you want branding (page that allows you to ste the window image, text 
etc etc)
    - if yes, gen an extension with all the right stuff
- "components" to include 
   - eg.., base, help, update, etc  We do not have features for these 
     but you can see there are reasonable groupings.  People should be 
     able to refine the groups but start easily by choosing whole groups
- do you want update in the target
   - if yes, gen a feature with all the right stuff

these are the basics.  Going on from here there could be more things that allow 
one to setup the UI in the app etc.
Comment 13 Ed Burnette CLA 2004-04-23 15:31:52 EDT
Sounds like you need two RCP export wizards then, one for deployable plug-ins 
and one for deployable features (including their plug-ins), because automatic 
update is something a number of RCP app developers will be interested in. I 
think this is a likely scenario: when getting started a new RCP developer 
won't use features, but then when they get the program working somebody will 
say 'ok, now make it updatable'.
Comment 14 Sebastian Davids CLA 2004-04-23 15:35:37 EDT
>Branding can now be done declaratively thanks to the 
>org.eclipse.core.runtime.products extension point.

Cool!
Comment 15 Jeff McAffer CLA 2004-04-23 15:37:14 EDT
I agree that having update in there is an important scenario but feel we need 
to ensure it is not locked in (either acutally or by omission of tooling)

perhaps you just end up running the same wizard twice.  The first time you 
don't select update and happily develop along.  Then you go to ship and really 
wish you had update.  So run the wizard again and this time say yes to update.  
Then you have an opportunity to either id the features you want or have the 
wizard create a feature after you have defined the plugins you want.

Comment 16 Nick Edgar CLA 2004-04-29 16:45:52 EDT
When I've seen people trying to package their own RCP app, the most difficulty
they have is with determining the set of required plugins, and in debugging this
when they inevitably get it wrong (the log output we get when plugins are
missing is hard to follow).  So I think having something like the launch config
page where it lets you choose the main plugins and their prerequisites is
essential.  

There's also often confusion as to which other files are required, how to
configure product branding (product name, splash screen, window icon, about
dialog text and image, etc.).  Having some support for generating these would be
a great help.

I agree that Update will be a common optional component, and even if the app
isn't using the update manager, they may want to allow plugins to be layed down
manually and be picked up by the app, so it would be nice if it was easy to have
org.eclipse.update.configurator as an optional component (with or without the
update manager).  One problem we face with Update is that it contributes some UI
that is specific to the IDE (the actions in the Help menu).  But that's a
separate issue.

I also think it's important that this not be just a one-off wizard.  It will be
an iterative process over the development of the app, and developers will want
to keep (re)generating their app.  They shouldn't have to re-enter info each
time.  There should be support for multiple simultaneous apps (i.e. it's not
sufficient to just remember the last entered values in a wizard).  Again, the
launch configs dialog is a good example to follow.

Comment 17 Wassim Melhem CLA 2004-04-29 18:27:58 EDT
I would like to thank everybody who made suggestions.  They are all along the 
same vision, which makes me comfortable that we are all on the same page, 
especially considering the time constraint.

One thing that I do NOT see happening is a two-wizard solution: one that is 
feature-driven and one that is plug-in driven.  Two wizards that are doing 
almost the same thing is not the answer.  Before you know it, Eclipse would 
have as many wizards as WSAD.  One wizard would be sufficient: you can build 
the product and have the option (checkbox) to wrap plug-ins in a feature or 
not.  

As for Nick's very last suggestion, I definitely did not see that one coming.
"There should be support for multiple simultaneous apps (i.e. it's not
sufficient to just remember the last entered values in a wizard).  Again, the
launch configs dialog is a good example to follow."
How many wizards in Eclipse do that? 0
I'm not sure the launch config dialog should/could be used as an example for 
how an RCP export wizard should be implemented.  The LCD is not even a 
wizard.  It is not a preference page either.  In fact, I don't even know what 
is.  A hybrid of some sort<g>
The task at hand is to create a wizard.  We would like to remain consistent of 
what the definition of a wizard is.  I guess I'm missing the link how the 
concept of an export wizard and the concept of an LCD meet.
Comment 18 Nick Edgar CLA 2004-04-30 10:00:56 EDT
Whether you call the LCD a wizard or dialog isn't really important.  The
important aspect of it is that it lets you create multiple objects (launch
configs) that capture the interesting state so the user doesn't have to reenter
it each time.

It might be worth evaluating some of the other IDEs out there to see how they do
deploy.  Although I agree time is short.

If this is not feasible in the time remaining, and we can only support deploying
a single app, then the wizard should at least remember the last values entered
so that the user doesn't have to enter them each time.  This will definitely be
an iterative process.

Comment 19 Sebastian Davids CLA 2004-05-01 05:57:10 EDT
A different approach to remember values would be building an ANT-Skript ... like
several other wizards do.
Comment 20 Sermet Yucel CLA 2004-05-06 13:35:59 EDT
I would like to add a user perspective here. Some my points are probably 
duplicate.

I am building an application on top of Eclipse M8. What I wanted but could no 
achive yet:

1- Create a plugin of my own with its own perpective/views
2- Create a primary feature for branding (Splash Screen, Appication Icon and 
Name, etc)
3- Deploy my product
4- Have a launcher included in the deployment that starts the Eclipse with my 
product with its perpective. It will nice to pick an name and icon for the 
launcher.

It will be great if I can achive all of this with a single wizard. So far I 
have not seen a working example and documentation on how to do this. Eclipse 
M8 still has the feature project. I am not sure is this by design. It seems 
that there is no use for it.

Comment 21 Olivier Crameri CLA 2004-05-10 15:24:44 EDT
By the way, would it be possible that this export/deploy wizard creates Mac OSX application bundle ?

It would be even greater if the generated application bundle could include all of eclipse's stuffs (instead 
of having separates directories for plugins and features as it is now in the current Mac distribution of 
Eclipse), but I don't know to what extent it is possible with the current architecture of RCP.
Comment 22 Jeff McAffer CLA 2004-05-10 21:14:40 EDT
Olivier, it would be great if you could contribute some code in this area.  We 
don't know much about Mac application bundles and what is involved in making 
them.  I mean, we know hoave to make the standard Eclipse ones but once you 
open the box and try making random user defined ones I suspect it gets more 
complicated.
Comment 23 Wassim Melhem CLA 2004-05-10 23:45:43 EDT
Much to the disappointment and heartbreak of everybody on the cc list, this 
item is going to be deferred to 3.1.

Coming up with a product-quality wizard that addresses all the requests and 
points made above simply and realistically cannot be done in the time 
remaining in the M9 cycle.  We are already past feature-freeze and it cannot 
be done in 2 or 3 days.  It would take 2-3 weeks.

Since there is life after 3.0, we look forward to providing such a great 
feature in 3.1.
Comment 24 Olivier Crameri CLA 2004-05-11 03:39:17 EDT
I am not such an expert in this area, however I have to find a solution for my own RCP app which is 
intended to primarily run on Mac OSX.

I see that this item is deferred to 3.1 so I'll perhaps have some extra time to find out how to do it. In 
that case I'll surely contribute my code.
Comment 25 Ed Burnette CLA 2004-05-11 11:09:48 EDT
This is indeed disappointing news but maybe it's an opportunity too. May I 
suggest starting a mini-project like we did with 
org.eclipse.ui.internal.r21presentation for an RCP export wizard that several 
people can contribute to? Although it wouldn't necessarily be an officially 
supported part of 3.0 it would be available in the same time frame and be 
targeted for inclusion at the next release opportunity. I know you'll need to 
get PMC approval and all that, but what do you think?
Comment 26 Dejan Glozic CLA 2004-05-11 11:32:38 EDT
The feature must not cause us to delay R3.0 ship date. On the other hand, if 
it is created outside of the official build (as an optional download perhaps) 
and worked on beyond the R3.0 date (i.e. over summer months), it will provide 
desired function for people who need it and incremental improvement based on 
feedback. 
Comment 27 Ed Burnette CLA 2004-05-11 11:58:27 EDT
That what I had in mind; can you or Wassim champion this with the PMC? I will 
contribute (code, feedback) to such a project if created and I'm sure there 
are a few others that can do the same. Kevin H set up a couple people as 
temporary committers on the r21presentation project and I thought that worked 
out pretty well, maybe you could get him to do the same for this. Then you or 
Wassim or someone else on the team could seed the project with some kind of 
skeleton wizard (that sounds kind of creepy doesn't it) and we could have at 
it.
Comment 28 Nick Edgar CLA 2004-05-11 14:06:01 EDT
I'm also in favour of making this a "sanctioned" skunkworks project.

In the meantime, if we can pull together a list of manual steps needed to deploy
an RCP app, that would be good.  I would like to add such an entry to the RCP FAQ.
Wassimm, do you have the cycles to sketch out such a list?


Comment 29 Wassim Melhem CLA 2004-05-11 14:17:10 EDT
Not at this time.
Comment 30 Pat McCarthy CLA 2004-06-25 14:48:15 EDT
Got some reading to do to catch up here...
Comment 31 Pascal Rapicault CLA 2004-06-25 14:55:51 EDT
I'm putting together a document that explains how to leverage the functions 
provided by pde to export RCP apps.

You can find it at: 
http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/pde-build-
home/articles/export%20rcp%20apps/article.html?rev=HEAD&content-type=text/html

All comments are welcome.
Comment 32 Nick Edgar CLA 2004-06-25 15:17:49 EDT
Pascal's article is also linked to from the RCP FAQ, available off of the RCP
home page:
http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/rcp/index.html
Comment 33 Wassim Melhem CLA 2004-09-14 01:25:12 EDT
Resurrecting for 3.1

After some recent discussions, we decided to have an LCD-like dialog for all the
deployment activities in Eclipse, so that users can save multiple configurations
of each export type.

The plug-in/feature export wizards will go away and will move in there.
The new RCP app export will be done there in two flavors (feature-based and
plugin -based).
Also, the dialog will house JDT-related exports (e.g Application export on Mac).
Comment 34 Ed Burnette CLA 2004-09-14 12:21:45 EDT
Another use case would be deploying a program that is based on SWT or 
SWT/JFace. This would be without plug-ins, just copying the swt jars and 
dlls/sos and hooking everything up.

A future enhancement needed for RCP exports, which I'm not requesting yet but 
I'd like to keep in mind, is the ability to generate a native launch program 
with the right icon and title. Changing the icon/title is a laborious process 
at least on Windows involving editing resources and rebuilding a C program.
Comment 35 Wassim Melhem CLA 2004-09-14 15:20:31 EDT
The SWT/JFace request is also included in this effort and will be addressed by 
the JDT team, I believe.
Comment 36 Wassim Melhem CLA 2004-09-14 15:43:48 EDT
cc Andre as he might be interested in this discussion.
Comment 37 Ed Burnette CLA 2004-11-11 13:10:56 EST
Any update on this? Do you need a prototype or something to get things started?
Comment 38 Wassim Melhem CLA 2004-11-11 17:05:20 EST
Thanks.  I have a good enough idea of what people want to get things started.  
I am waiting for PMC feedback on a couple of issues.
Comment 39 Alex Fitzpatrick CLA 2004-11-16 14:51:51 EST
Added myself to cc list
Comment 40 Wassim Melhem CLA 2004-12-03 02:44:50 EST
An update:
I will be working on a prototype during the post-3.1M4 part of December (ie. 
during the lame duck session of Eclipse development :-)

It will be available for public viewing in early January.

Thanks for everybody's input.  It will all be taken into account in the 
solution we are coming up with.
Comment 41 Frank Gerhardt CLA 2005-01-30 12:18:01 EST
Wassim, any news?
Comment 42 Wassim Melhem CLA 2005-01-30 14:58:08 EST
It will be in 3.1M5
Comment 43 Alex Fitzpatrick CLA 2005-01-30 15:41:12 EST
Will it generate an Ant script? 
Comment 44 Chris Wege CLA 2005-01-31 05:08:53 EST
For a fully automatic build and test cycle we would need an ant task similar to
 pde.exportfeatures (e.g. pde.exportrcpapplication).
This task should be able to run synchronously, since we want to perform some
tasks after the export. This was already submitted for pde.exportfeatures and
pde.exportplugins at https://bugs.eclipse.org/bugs/show_bug.cgi?id=58413
Comment 45 Wassim Melhem CLA 2005-01-31 11:40:48 EST
For all the ant task related issues, please open a separate feature request, 
as this bug report will not encompass it.
Comment 46 Ed Burnette CLA 2005-01-31 12:35:53 EST
Added bug 84065 for ant support.
Comment 47 Wassim Melhem CLA 2005-01-31 15:27:10 EST
Modifying the summary to reflect the actual scope, solution and implementation.

A wizard would be insufficient for many reasons listed above.
Therefore, we are providing a fancy editor that will allow you to compose your 
product and define all aspects (eg. branding, content, config.ini) etc.
From within the editor, you will be able to do a one-click export.
Comment 48 Wassim Melhem CLA 2005-02-08 05:00:14 EST
and now for the four most beautiful words ever uttered: "The editor is 
ready".  And if I may say so, it's a nice piece of work ;-)

It will be in previews starting with today's I-build.
Please take a look at it, especially if you or someone you know are doing an 
RCP-related activity (tutorial/talk/BOF) at EclipseCon.


The entire RCP product export story is based around a *.product file.

Use the Product Configuration wizard (bug 73818) to create the file.

In the file itself, you can manage all aspects of your product from the basic 
definition to the content to branding.

You have the option to build a feature-based or a plugin-based product.

The overview page also serves as launching points to test and package the 
product.

Will keep the bug report open for the next few days as we will be adding a 
couple of advanced enhancements and some polishing.

Some time in the next week or so, I'll whip up a document to be posted on the 
PDE/UI home page detailing an end-to-end scenario of how to 
create/test/package a product.
Comment 49 Wassim Melhem CLA 2005-02-14 13:07:43 EST
Added a new section to allow users to specify program/vm arguments for the 
<launcher>.ini file.

Fixed wrapping layout issues.

For more enhancements, please open separate bug reports to be considered 
individually.

Marking as fixed.
Comment 50 Pat McCarthy CLA 2005-03-06 14:02:11 EST
Created attachment 18477 [details]
Product editor patch for overview page ui
Comment 51 Pat McCarthy CLA 2005-03-06 14:02:46 EST
Created attachment 18478 [details]
Product editor overview page ui image - alt format
Comment 52 Pat McCarthy CLA 2005-03-06 14:03:13 EST
Not sure of the protocol here but here goes...

I've played with the RCP product editor a bit, and have made it do what it 
wants to do; at the same time I've not been happy with the UI.

So, while on the plane back from EclipseCon, and in need of some practical UI 
Forms experience, I fiddled the product editor UI, specifically the Overview 
page.  I tried ColumnLayout a bit, to get the four defs (product id, name, 
appl id, and config) to bounce from two to one column, but it was painful to 
watch at times.  Settled on a 2 column grid with layout control that makes the 
fields a bit wider for better data entry/visual display.

Also made the test/launch section a twistie - as I think long term most will 
migrate to the launch dialog once a launch config as been created.

Patch and image of same attached.  The patch was based on the v20050301 tagged 
version of the pde.ui plug-in.
Comment 53 Wassim Melhem CLA 2005-03-06 14:18:49 EST
>at the same time I've not been happy with the UI.
From your screenshot, I am assuming you are referring to the field where you 
enter the zip file name.
I don't like it either, however this will go away soon.
All this build info will be taken out of the editor shortly into a wizard as 
we are planning to add more export options etc. (bug 85153)

With that problem out of the way, I think the current layout is more 
esthetically pleasing than the alternative suggested in comment 51.
Comment 54 Pat McCarthy CLA 2005-03-06 20:20:18 EST
Created attachment 18480 [details]
Normal sized editor UI overlaid on maximized editor display

Yes, the Browse button was one issue; that and half the time when I clicked on
the export link it just scrolled right.

But the other big problem I had with the rest of the UI was that I could not
see the full value of the product id or application id in the dropdown list. 
They were always smaller than the id, and seemed to start part way through the
value.

Even when I maximized the editor they did not show the values, they were still
starting several chars in and I had to touch each one (and then press home) to
get the full id visible in the dropdown.

See attachment where the maximized size and then the standard size are shown.
The standard size is shown in the Java perspective after a reset (and workbench
window is full screen).

So... I think there is a need to tweak something to get the dropdown values
legible.
Comment 55 Wassim Melhem CLA 2005-03-06 20:25:49 EST
this is a problem with SWT's CCombo (bug 55074).