| <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
| <meta name="GENERATOR" content="Mozilla/4.5 [en] (Win98; I) [Netscape]"> |
| <meta name="Author" content="Greg Adams"> |
| <title>Creating product branding</title> |
| <link rel="stylesheet" href="../default_style.css"> |
| </head> |
| <body> |
| |
| <div align=right><font face="Times New Roman, Times, serif"><font size=-1>Copyright |
| © 2001 Object Technology International, Inc.</font></font></div> |
| <div ALIGN=right><table BORDER=0 CELLSPACING=0 CELLPADDING=2 WIDTH="100%" > |
| <tr> |
| <td ALIGN=LEFT VALIGN=TOP COLSPAN="2" BGCOLOR="#0080C0"><b><font face="Arial,Helvetica"><font color="#FFFFFF"> Eclipse |
| Corner Article</font></font></b></td> |
| </tr> |
| </table></div> |
| |
| <h1> |
| <img SRC="idea.jpg" height=86 width=120></h1> |
| |
| <center> |
| <h1> |
| Creating product branding</h1></center> |
| |
| <blockquote><b>Summary</b> <br> |
| In this document we will look at the steps needed to create a product. Before |
| we get too excited hoping the magic of product building will be revealed, |
| we should first confess that we will focus only on those aspects of the platform |
| which you will need to modify in order to give your product some branding. |
| This will include such items as the splash screen, about dialog, the program |
| executable and so forth. |
| <p><b>By Greg Adams, OTI</b> <br> |
| <font size=-1>November 27, 2001</font> |
| <p>Editor's note: This article describes Eclipse release 1.0. All aspects of |
| product branding were completely revamped for Eclipse release 2.0; an updated |
| version of this article is in preparation. |
| </blockquote> |
| <hr WIDTH="100%"> |
| |
| <h2>The high level picture</h2> |
| <p>You have written all the code and now it is time to bundle up your code with |
| the platform and change the identity to have your product brand. Before diving |
| into the details of each step let's take a sneak peak at the big picture and |
| get a flavor for the kinds of things we'll be doing. The high level steps are |
| as follows:</p> |
| <ol> |
| <li>Replace the product level graphics (e.g. splash screen)</li> |
| <li>Create graphics for the executable</li> |
| <li>Create a new executable</li> |
| <li>Create a product configuration </li> |
| <li>Create a product plug-in corresponding to the configuration</li> |
| <li>Update the install information to use your new configuration.</li> |
| <li>Remove any existing license information</li> |
| </ol> |
| <p>As you work through the steps you may notice the occasional <b><img src="TryIt.gif" width="61" height="13"></b>. |
| These indicate points at which you may want to test out the work you have done |
| thus far. Once you have completed the test be sure to delete the <i>eclipse/workspace</i> |
| directory thus ensuring that the next test starts with a fresh state. Once you |
| have mastered the steps you should do a final run through the steps (starting |
| with a clean install) but be sure to skip the "try it" steps. These |
| steps require you to run the platform and consequently will cause information |
| to be cached. Your actual product production process should not run the platform |
| runtime.</p> |
| <p>The steps in this document assume that you have the <i>runtime</i> build of |
| the platform installed on your machine. In some cases you will require access |
| to the SDK build but it is important to note that we will be working with and |
| modifying the platform build. In the remaining sections we assume that you have |
| a working knowledge of plug-ins.</p> |
| <p>Before continuing make sure that you have installed a platform runtime build |
| and installed into it all of your own plug-ins. You should not consider branding/productization |
| unless you are also including your own plug-ins.</p> |
| <p>This article is intended to be a guide to help you produce a release. You need |
| to ensure that you comply with any terms and conditions of the license under |
| which you received the platform runtime.</p> |
| <p> </p> |
| <h2>Replacing the splash screen</h2> |
| <p>The splash screen (shown while the program starts) is contained in two files |
| found in the <i>eclipse/splash</i> directory. You must replace both of these |
| files with your product splash screens. The file <i>splash_basic</i> and <i>splash_full</i> |
| correspond to low color and high color versions of the splash screen. The low |
| color splash screen is used only when the display (color) depth is less than |
| or equal to eight. Typically most displays have sufficient color depth support |
| to allow the high color splash to be used. </p> |
| <p><img src="win_only.gif" width="51" height="13"> On Windows® replace the following |
| two files (in eclipse/splash) with your splash screen files: </p> |
| <ul> |
| <li>splash_basic.bmp </li> |
| <li>splash_full.bmp </li> |
| </ul> |
| <p><img src="linux_only.gif" width="51" height="13"> On Linux replace the following |
| two files (in eclipse/splash) with your splash screen files:</p> |
| <ul> |
| <li>splash_basic.xpm</li> |
| <li>splash_full.xpm</li> |
| </ul> |
| <p> </p> |
| <p><b><img src="TryIt.gif" width="61" height="13"> </b>Start the program and confirm |
| that your splash screen is shown. Exit the program. Don't forget to delete the |
| <i>eclipse/workspace </i>directory thus ensuring things are in a completely |
| fresh state for our next test.</p> |
| <p> </p> |
| <h2>Creating the graphics for our executable</h2> |
| <p>The executable is located in the <i>eclipse/ </i>root directory and the process |
| for replacing it is platform specific. Start by extracting the file <i>eclipse/launchersrc.zip |
| </i>found in the SDK and opening the resulting <i>library </i>subdirectory<i>. |
| </i>In the following sections, we will work with the <i>library/</i> directory |
| and once we are finished we will copy the resulting executable back to the runtime |
| platform build. This is the only time you will require access to files found |
| in the SDK.</p> |
| <p><b><img src="win_only.gif" width="51" height="13"> </b>On Windows executable |
| programs can have an associated icon(s). To create our icon we first need to |
| replace several .BMP graphics located in the <i>library </i>directory<i>. </i>These |
| graphics represent 16x16, 32x32 and 48x48 pixel versions of both low color and |
| high color graphics. In the <i>library/ </i>directory replace the following |
| files:</p> |
| <ul> |
| <li>icon16_basic.bmp</li> |
| <li>icon16_full.bmp</li> |
| <li>icon32_basic.bmp</li> |
| <li>icon32_full.bmp</li> |
| <li>icon48_basic.bmp</li> |
| <li>icon48_full.bmp</li> |
| </ul> |
| <p>Using an appropriate graphics tool (e.g. ICONPRO provided in the MSDN) of your |
| choice, combine these graphics into a single .ICO (icon) file called<i> eclipse.ico</i> |
| and replace <i>library/eclipse.ico</i> with your new eclipse.ico file. The <i>eclipse.ico</i> |
| is referenced by the file<i> library/eclipse.rc</i> which is automatically used |
| when the executable build script is run. Once the build script has finished |
| we will have a new program executable with an associated icon.</p> |
| <p><img src="linux_only.gif" width="51" height="13"> Linux does not directly associate |
| an icon with an executable program however we can include an icon that users |
| can use when associating a shortcut with the program. Create yourself an xpm |
| graphic (representing your program icon) using your favorite graphics editor |
| and place it into <i>library/icon.xpm. </i>Once we have built the executable |
| we will copy both the executable and the <i>.xpm </i>file to the <i>eclipse/</i> |
| root directory of the platform runtime build.</p> |
| <h2> </h2> |
| <h2>Creating a new executable program</h2> |
| <p>Executable icon in hand, it's time to make the executable. We will continue |
| to work with the <i>library/ </i>directory and once we have created our executable |
| we will copy it to the <i>eclipse/</i> root directory of the runtime platform |
| build. The process for creating the program executable is different for each |
| platform however the <i>library/</i> directory includes build scripts to help |
| make the process easier.</p> |
| <h3><b>Preparing the build script</b></h3> |
| <p><img src="win_only.gif" width="51" height="13"> In the <i>library/</i> directory |
| you will find the build script <i>build.bat</i>. We will need to edit this build |
| file to point it to the location of your compiler. To do this, simply uncomment |
| the following lines (by removing <i>rem</i>) and modify <i>MSVC_HOME </i>to |
| point to the root directory of your compiler installation.</p> |
| <blockquote> |
| <pre>rem IF NOT "%MSVC_HOME%"=="" GOTO MAKE |
| rem set MSVC_HOME=k:\dev\products\msvc60\vc98 |
| rem call %MSVC_HOME%\bin\vcvars32.bat</pre> |
| </blockquote> |
| <p>This script has been tested with Microsoft® Visual C/C++ Compiler 6.0 however |
| it is possible that you may need to make additional modifications for your compiler. |
| If you are using Windows 98 you will also need to remove the line<i> rem Usage: |
| build <PROGRAM_OUTPUT> <PROGRAM_NAME></i> to work around a known |
| problem.</p> |
| <p><img src="linux_only.gif" width="51" height="13"> On Linux, the build script |
| (<i>build.csh)</i> has been tested against GNU C and C++ Compiler. You typically |
| should not need to make any changes to the Linux build script.</p> |
| <p> </p> |
| <h3><b>Running the build script</b></h3> |
| <p>The build script takes two arguments, the filename of the executable file to |
| create and the title (name) of your program. If the program name has spaces |
| in it (as in the example below) you will need to put double-quotes around it. |
| </p> |
| <p>In the example below the program name <i>Cool Stuff </i>will be shown |
| in the task bar while the program is starting. As we will soon learn the icon |
| shown in the top left corner of each Workbench window is set separately and |
| is unrelated to the icons specified for the executable.</p> |
| <p><img src="win_only.gif" width="51" height="13"> On Windows you can run the |
| build script (<i>build.bat)</i> as shown below. Prior to running the build script |
| you should delete any <i>.res</i> files from the <i>library</i> directory. These |
| files will typically only be present if you have run the build script previously. |
| This example will create an executable file named <i>cool.exe</i> with the icon |
| we created above.</p> |
| <blockquote> |
| <pre>build cool.exe "Cool Stuff"</pre> |
| </blockquote> |
| <p><img src="linux_only.gif" width="51" height="13"> On Linux you can run the |
| build script (<i>build.csh)</i> as shown below. This example will create an |
| executable file named <i>cool</i>. On Linux an icon is not automatically associated |
| with the executable.</p> |
| <blockquote> |
| <pre>csh build.csh cool "Cool Stuff"</pre> |
| </blockquote> |
| <p> </p> |
| <h3><b>Replacing the existing executable</b> </h3> |
| <p>Now that you have your own executable, you can copy it to the <i>eclipse/</i> |
| root directory of the runtime platform build. Next, delete the current executable |
| from the <i>eclipse/ </i>root directory. If you forget to delete the existing |
| executable a user will not know which executable to run so its important not |
| to forget this little step.</p> |
| <p><img src="linux_only.gif" width="51" height="13"> On Linux we also need to |
| copy the <i>icon.xpm </i>(we created above) to the <i>eclipse/ </i>root replacing |
| the one already found there. </p> |
| <p> </p> |
| <p><b><img src="TryIt.gif" width="61" height="13"> </b>Let's give it a whirl! |
| Go to the<i> eclipse/</i> root directory of the runtime platform build and start |
| the program by running your executable. Confirm that your executable properly |
| starts, that your icons and program name are shown in the appropriate places |
| and that your splash screen is still shown. Don't worry about the icon or title |
| in the resulting Workbench window we'll fix those in a later section. Exit the |
| program. Don't forget to delete the <i>eclipse/workspace </i>directory thus |
| ensuring things are in a completely fresh state for our next test.</p> |
| <p> </p> |
| <h2>Create a product configuration</h2> |
| <p>A product configuration and its corresponding plug-in define several key product |
| attributes including the icon and title shown in each window, the welcome page, |
| about dialog information and much more. Product configurations are defined in |
| the <i>eclipse/install/configurations </i>directory. If you take a glance at |
| this directory you will likely observe more than one product configuration. |
| Which one defines the product? The answer lies in the file <i>eclipse/install/install.properties |
| </i> that specifies which configuration is the <i>dominant</i> configuration. |
| At any given time only one configuration is the dominant configuration. Each |
| configuration also has a corresponding plug-in directory. We will start by finding |
| the dominant configuration and then proceed to create a new product configuration |
| and corresponding plug-in. Finally we will update the <i>install.properties</i> |
| file to point to the new configuration. </p> |
| <h3><b>Discovering the dominant configuration</b> </h3> |
| <p>Open the file <i>eclipse/install/install.properties</i> and go to the line |
| with <b>application.configuration = .</b> The information appearing on the right |
| hand side is the name (id and version) of the current <i>dominant</i> configuration. |
| Typically the <b>application.configuration</b> has the form <i>xyz_version</i>. |
| For example <i>xyz_1.0.0</i> indicates the configuration id is <i>xyz</i> and |
| the version level is <i>1.0.0</i>. </p> |
| <p>Now that we know the name (id and version) of the dominant configuration take |
| another look at the <i>eclipse/install/configurations </i>directory<i>. </i>You |
| should see a subdirectory with the same name as the dominant configuration name. |
| For example if <i>install.properties </i>had the line <b>application.configuration |
| = xyz_1.0.0 </b>then we should expect to see a directory <i>xyz_1.0.0</i>. In |
| addition you should find a plug-in (in <i>eclipse/plugins</i>) with the exact |
| same name as the configuration directory. </p> |
| <p>Make a note of the dominant configuration name (id and version) because we'll |
| want to copy both the configuration and the plug-in directories in the following |
| sections.</p> |
| <h3><b>Choosing a name for our configuration</b></h3> |
| <p>You may recall (from the section on creating the executable) that the name |
| of our program is "Cool Stuff". To make things easier to follow let's |
| assume the id we want to give to our configuration and plug-in is <i>org.cool.stuff</i> |
| and the version number is <i>1.0.0</i>. Consequently our configuration and plug-in |
| directories will have the name <i>org.cool.stuff_1.0.0</i> and ultimately we |
| will edit the <i>install.properties</i> file to have application.configuration |
| <b>= </b>org.cool.stuff_1.0.0. </p> |
| <h3><b></b> <b>Creating the configuration</b> </h3> |
| <p>Open the <i>eclipse/install/configurations </i>directory and copy the current |
| dominant configuration (recall we recorded its name above) to a directory of |
| your own naming. For our example we need to copy the dominant configuration |
| to a directory named to <i>eclipse/install/configurations/<b>org.cool.stuff_1.0.0</b></i>. |
| It is important that you copy the directory, you must not simply rename the |
| existing dominant configuration directory. </p> |
| <p>Next edit the file <i>install.xml</i> found in the new configuration directory. |
| You will need to edit the fields (lines) as follows:</p> |
| <table width="80%" border="1" cellspacing="0" cellpadding="0"> |
| <tr bgcolor="#CCCCCC"> |
| <td width="30%"><b>Field</b></td> |
| <td width="80%"><b>Editing Instructions</b></td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td width="20%"><b>label</b></td> |
| <td width="70%">Change this to be the name of your product (e.g. Cool Stuff)</td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td width="20%"><b>id</b></td> |
| <td width="80%">Change this to match the unique name of your configuration |
| (e.g. org.cool.stuff)</td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td width="20%"><b>version</b></td> |
| <td width="80%">Change this to the appropriate version number of your configuration |
| (e.g. 1.0). Note that 1.0 can be used in place of 1.0.0.</td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td width="20%"><b>provider-name</b></td> |
| <td width="80%">Change this to be the name of your company.</td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td width="20%"><b>description</b></td> |
| <td width="80%">Change this to be a description of the configuration.</td> |
| </tr> |
| </table> |
| <p>The following example shows what the<i> install.xml </i>file would look like |
| for the Cool example. </p> |
| <blockquote> |
| <pre><?xml version="1.0" encoding="UTF-8" ?> |
| <configuration |
| label="Cool Stuff" |
| id="org.cool.stuff" |
| version="1.0" |
| provider-name="Cool Stuff Company"></pre> |
| <pre> <description> |
| The Cool Stuff Configuration |
| </description><br></configuration></pre> |
| </blockquote> |
| <p> </p> |
| <h2><b>Create a plug-in</b> corresponding to the configuration</h2> |
| <p>Every configuration has a corresponding plug-in. The name of the plug-in directory |
| is identical to the name of the configuration directory. Since our configuration |
| directory was named org.cool.stuff_1.0.0 we will create a plug-in with the same |
| name. </p> |
| <p>Open the <i>eclipse/plugins </i>directory and copy the plug-in corresponding |
| to current dominant configuration (see above) to a directory matching the name |
| of your configuration (e.g. <i>org.cool.stuff_1.0.0</i>). It is important that |
| you copy the directory, you must not simply rename the existing dominant configuration |
| plug-in directory. </p> |
| <p>Your new plug-in directory should contain the following files. If you do not |
| see all of these files, you may have copied a regular plug-in directory instead |
| of the plug-in directory corresponding to the dominant configuration.</p> |
| <ol> |
| <ol> |
| <li>plugin.xml</li> |
| <li>plugin.properties</li> |
| <li>about.html</li> |
| <li>product.ini</li> |
| <li>product.properties</li> |
| <li>about_prod.gif</li> |
| <li>about_prod_basic.gif</li> |
| <li>prod.gif</li> |
| <li>prod_basic.gif</li> |
| <li>welcome.xml</li> |
| <li>platform.ini</li> |
| <li>platform.properties</li> |
| </ol> |
| </ol> |
| <p>Files 1-3 you might recognize because they appear in most other plugins. Files |
| 4-10 are unique to plug-ins corresponding to configurations. These represent |
| product attribution information including icon and title for Workbench windows, |
| graphics and text for the about dialog, and the text of the welcome page. Files |
| 11-12 (<i>platform.ini</i> and <i>platform.properties</i>) are also unique however |
| these <b>must not</b> be edited.</p> |
| <h3>Editing the standard files plug-in</h3> |
| <p>Let's start by modifying files 1-3 which are the three standard files <i>(plugin.xml, |
| plugin.properties and about.html) </i>found in most plug-ins.</p> |
| <p><b>plugin.xml</b></p> |
| <p>Edit the fields of plugin.xml as follows:</p> |
| <table width="80%" border="1" cellspacing="0" cellpadding="0"> |
| <tr bgcolor="#CCCCCC"> |
| <td width="30%"><b>Field</b></td> |
| <td width="70%"><b>Editing Instructions</b></td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td width="20%"><b>id</b></td> |
| <td width="80%">Change this to match the id of your configuration (e.g. <i>org.cool.stuff</i>). |
| Do not include the version number of your configuration.</td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td width="20%"><b>version</b></td> |
| <td width="80%">Change this to match the version number of your configuration |
| (e.g. 1.0). Note that 1.0 can be used in place of 1.0.0.</td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td width="20%"><b>Provider-name</b></td> |
| <td width="80%">Change this to be the name of your company.</td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td width="20%"><b>name</b></td> |
| <td width="80%">Do not edit this field. It has been externalized and will |
| edit the plugin.properties file next.</td> |
| </tr> |
| </table> |
| <p>The <i>plugin.xml</i> file for our Cool example should appear as follows:</p> |
| <blockquote> |
| <pre><?xml version="1.0" encoding="UTF-8"?> |
| <plugin |
| id="org.cool.stuff" |
| name="%pluginName" |
| version="1.0" |
| provider-name="Cool Stuff Company"> |
| </plugin></pre> |
| </blockquote> |
| <p><b>plugin.properties</b></p> |
| <p>Notice that while editing the <i>plugin.xml</i> file we did not modify the |
| <b>name</b> field. This is because the name field has been externalized into |
| <i>plugin.properties</i>. Open <i>plugin.properties</i> and edit the <b>pluginName</b> |
| field. Our Cool example's <i>plugin.properties</i> file is as follows:</p> |
| <blockquote> |
| <pre>pluginName = Cool Stuff Plug-In</pre> |
| </blockquote> |
| <p><b>about.html</b></p> |
| <p> The last file commonly found in most plug-ins is <i>about.html</i>. This HTML |
| file allows you to provide any arbitrary information about your plug-in or company. |
| Some plug-in suppliers opt to include links to their company sites. A user can |
| view a plug-in's about.html by opening the About dialog from the Workbench's |
| Help menu and clicking "Plugin Info..." to open a dialog listing all |
| of the installed plug-ins. Selecting a plug-in and clicking "More Info..." |
| displays the plug-in's about.html.</p> |
| <p>Edit the about.html file to include any interesting information about your |
| plug-in.</p> |
| <p><b><img src="TryIt.gif" width="61" height="13"> </b>We have created a configuration |
| and its corresponding plug-in. We haven't wired in our configuration but we |
| can do a quick test to see that our plug-in and its about.html show up correctly |
| in the Workbench's About dialog. Start the platform and open the About dialog |
| (from the Workbench's Help menu). Click on the "Plugin Info..." button |
| and confirm the plug-in name, provider and version number are correct for your |
| plug-in (i.e. correspond to the values you entered above). Next select the plug-in |
| and choose "More Info..". and confirm the contents of your about.html |
| are properly displayed. Exit the program. Don't forget to delete the <i>eclipse/workspace |
| </i>directory thus ensuring things are in a completely fresh state for our next |
| test.</p> |
| <h3><b>Editing the plug-in product files</b></h3> |
| <p>Plug-in's corresponding to configurations contain two special files, <i>product.ini</i> |
| and <i>product.properties</i>. These files provide product level information. |
| The latter of these (<i>product.properties</i>) contains strings externalized |
| from the <i>product.ini</i>. The configuration plug-in also contains two other |
| files, <i>platform.ini</i> and <i>platform.properties</i>, these files <b>must |
| not </b>be modified. These files are reserved for the platform itself.</p> |
| <p><b>product.ini</b></p> |
| <p>Although you are allowed to edit any field in product.ini it is strongly recommended |
| that you follow the advice provided below. There are several fields which are |
| either unnecessary to modify, or have potentially serious implications if you |
| modify them (e.g. <b>application</b>). Some fields have been externalized from |
| <i>product.ini</i> consequently we will edit them by modifying <i>product.properties</i>. |
| Fields referencing graphics (e.g. product icon, about graphic) do not need to |
| be altered, because we will replace their corresponding graphic files in subsequent |
| sections. </p> |
| <table width="100%" border="1" cellspacing="0" cellpadding="0"> |
| <tr bgcolor="#CCCCCC"> |
| <td><b>Field</b></td> |
| <td><b>Editing Instructions</b></td> |
| <td><b>Where is it shown</b></td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td><b>name</b></td> |
| <td>Change this to match the name of your product (e.g. Cool Stuff). If your |
| product name is lengthy you may want to use a shorter version of it for |
| this field. The value of this field is shown in the title of Workbench windows.</td> |
| <td>Workbench windows</td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td>detailedName</td> |
| <td>Do not edit this field since it has been externalized. We will edit it |
| by changing <i>product.properties</i>. Typically this field is the same |
| as the <i>name</i> field however if your product name is lengthy you may |
| opt to use the <i>name</i> field for a shorter version of the product name.</td> |
| <td>About dialog</td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td>image</td> |
| <td>Do not edit this field. We will replace prod.gif with our product graphic.</td> |
| <td>Workbench windows (icon in top left corner of window)</td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td>image_basic</td> |
| <td>Do not edit this field. We will replace prod_basic.gif with our product |
| graphic.</td> |
| <td>Workbench windows (icon in top left corner of window). This image is only |
| shown for low color displays.</td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td><b>Version</b></td> |
| <td>Change this to match the version number of your product. This string is |
| a "pretty" name (e.g. R1.0, Beta-1) that will appear in the Workbench's |
| about dialog. It does not have to match the configuration version number |
| or plug-in version number. </td> |
| <td>About dialog</td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td>application</td> |
| <td>Do not edit this field. There are very small set of cases under which |
| this needs to be edited (e.g. headless product). Before attempting to edit |
| this field you should thoroughly read the Platform Plug-in Developer Guide. |
| In addition, modifying this attribute may prevent other third party plug-ins |
| from running. </td> |
| <td>N/A</td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td><b>productURL</b></td> |
| <td>Change this to be your company or product URL (e.g. http://www.cool-stuff.org)</td> |
| <td>Currently this field is not automatically shown. Consequently many product |
| teams include a URL in their copyright text (see product.properties below). |
| </td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td>aboutImage</td> |
| <td>Do not edit this field. We will replace about_prod.gif with our about |
| graphic.</td> |
| <td>About dialog (large graphic in top left corner)</td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td>aboutImage_basic</td> |
| <td>Do not edit this field. We will replace about_prod_basic.gif with our |
| graphic.</td> |
| <td>About dialog (large graphic in top left corner). This image is only shown |
| for low color displays.</td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td>welcomePage</td> |
| <td>Do not edit this field. We will replace welcome.xml with our own welcome |
| page.</td> |
| <td>Shown in the welcome page.</td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td><b>baseInfosets</b></td> |
| <td>This field identifies the id's of infosets (documentation books) and the |
| order they should be shown in the Workbench's help system. You can edit |
| this list to include the books appropriate to your product, and alter the |
| order as necessary.</td> |
| <td>Help perspective and associated views.</td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td><b>defaultPerspectiveId</b></td> |
| <td>Change this field to be the perspective the Workbench should initially |
| show. By default the Resources perspective is shown.</td> |
| <td>N/A</td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td>copyright</td> |
| <td>Do not edit this field since it has been externalized. We will change |
| it by editing <i>product.properties</i>.</td> |
| <td>About dialog.</td> |
| </tr> |
| <tr valign="top" align="left"> |
| <td><b>buildID</b></td> |
| <td>Change this field to describe the build number of your product build (e.g. |
| 2.100). The build version is shown in the Workbench's About dialog. </td> |
| <td>About dialog.</td> |
| </tr> |
| </table> |
| <p>Following is the product.ini file for our Cool example. The fields we have |
| changed for the purpose of the example have been marked in bold. For the sake |
| of illustration the PDE infoset has been moved to be the first infoset listed |
| in <i>baseInfosets. </i>The default perspective has been left unchanged.</p> |
| <blockquote> |
| <pre> <b>name</b> = Cool Stuff |
| detailedName = %detailedName |
| image = prod.gif |
| image_basic = prod_basic.gif |
| <b>version</b> = R1.0 Sneak Peak |
| application = org.eclipse.ui.workbench |
| <b>productURL</b> = http://www.cool-and-neat-stuff.org |
| aboutImage = about_prod.gif |
| aboutImage_basic = about_prod_basic.gif |
| welcomePage = welcome.xml |
| <b>baseInfosets</b> = org.eclipse.pde.doc.user.infoset_Guide,\ |
| org.eclipse.platform.doc.user.infoset_Guide,\ |
| org.eclipse.jdt.doc.user.infoset_Guide,\ |
| org.eclipse.platform.doc.isv.infoset_Guide,\ |
| org.eclipse.jdt.doc.isv.infoset_Guide |
| defaultPerspectiveId = org.eclipse.ui.resourcePerspective |
| copyright = %copyright |
| <b>buildID</b> = 2.345</pre> |
| </blockquote> |
| <p><b>product.properties</b></p> |
| <p>While we were editing the above product.ini file there were several fields |
| we skipped over because they had been externalized. The time has come to edit |
| those fields by editing them in the file <i>product.properties</i> as follows:<br> |
| </p> |
| <table width="100%" border="1" cellspacing="0" cellpadding="0"> |
| <tr bgcolor="#CCCCCC"> |
| <td width="20%"><b>Field</b></td> |
| <td width="80%"><b>Editing Instructions</b></td> |
| <td width="80%"><b>Where is it shown</b></td> |
| </tr> |
| <tr> |
| <td width="20%">detailedName</td> |
| <td width="80%">Change this to match the name of your product (e.g. Cool Stuff). |
| </td> |
| <td width="80%">About dialog</td> |
| </tr> |
| <tr> |
| <td width="20%">copyright</td> |
| <td width="80%">Change this to be the copyright text for your application. |
| You can use \n and \ (line continuation) for lengthy copyright messages. |
| You may also want to include a URL in your copyright text.</td> |
| <td width="80%">About dialog</td> |
| </tr> |
| </table> |
| <p>The <i>product.properties</i> file for our Cool example might look something |
| like this. <br> |
| </p> |
| <blockquote> |
| <pre> |
| copyright = (c) Copyright Cool and Neat Stuff\n\ |
| \n\ |
| Visit the website at http://www.cool-and-neat-stuff.org\n\ |
| detailedName = Cool Stuff for Developers </pre> |
| </blockquote> |
| <h3>Editing the welcome page</h3> |
| <p>The next plug-in file we need to edit is <i>welcome.xml. </i>When the Workbench |
| first opens you may recall seeing a Welcome page displayed. This page is defined |
| by the file <i>welcome.xml</i> found in the dominant configuration's corresponding |
| plug-in. The purpose of the Welcome page is to provide initial introductory |
| information to help a user get started. Here is the <i>welcome.xml</i> for our |
| Cool example. For additional information on the types of things you can include |
| in the <i>welcome.xml</i> consult the Platform Plug-in Develop Guide.</p> |
| <blockquote> |
| <pre><?xml version="1.0" encoding="UTF-8" ?> |
| <welcomePage |
| title="Welcome to Cool Stuff"> |
| <intro>This page will help familiarize you with many fun things. |
| To get started, read the section below and click on the related links. </intro></pre> |
| <pre><item><b>Create your first cool thing </b> |
| To begin doing cool things you need to start by creating a cool project |
| and then creating several cool files. |
| </item> |
| </welcomePage></pre> |
| </blockquote> |
| <p> </p> |
| <h3><b>Updating some more graphics</b></h3> |
| <p>The last thing we need to do with our plug-in is to replace several of the |
| graphics files. The graphics we are replacing are those referenced from the |
| <i>product.ini</i> by the fields: image, image_basic, aboutImage and aboutImage_basic. |
| Files with the suffix "basic" represent low color graphics.</p> |
| <p>Replace the following graphic files that are used to provide the icon for the |
| top left corner of every window.</p> |
| <ul> |
| <li>prod.gif</li> |
| <li>prod_basic.gif</li> |
| </ul> |
| <p></p> |
| <p></p> |
| <p>Replace the following graphic files that are used for the large graphic in |
| the top left corner of the about dialog.</p> |
| <ul> |
| <li>about_prod.gif</li> |
| <li>about_prod_basic.gif</li> |
| </ul> |
| <p></p> |
| <h2> </h2> |
| <h2><b>Updating the install.properties to use our configuration</b></h2> |
| <p>We have our configuration and after a number of edits and file replacements |
| we hopefully have a corresponding plug-in. Now comes the moment of truth as |
| we edit the<i> install.properties</i> file to point to our new configuration. |
| Edit <i>eclipse/install/install.properties </i>and change the <b>application.configuration |
| </b>line to point to the new configuration. You may recall (from above) the |
| <b>application.configuration</b> has the form <i>xyz_version</i>. For example |
| <i>xyz_1.0.0</i> indicates the configuration name is <i>xyz</i> and the version |
| level is <i>1.0.0</i>. For our Cool example the line will need to be:</p> |
| <blockquote> |
| <pre>application.configuration=org.cool.stuff_1.0.0</pre> |
| </blockquote> |
| <p>Remove any other lines that may exist in <i>install.properties</i>. If you |
| have done any of the earlier "try it" tests, you may have additional |
| lines in <i>install.properties </i>representing cached information. In addition, |
| if there is a cached file<i> update.cfg</i> you should delete this. There may |
| be additional files in this directory (also cached by the platform) but you |
| do not need to worry about them.</p> |
| <h2> </h2> |
| <h2>License and notice</h2> |
| <p>You should check legal notices such as: license.html, notice.html, cpl-v05.html |
| and the about.html files in the root directory and plugin subdirectories to |
| make sure they are appropriate for your distribution and that you comply with |
| them or their terms. We can't tell you what to do here, you need to get your |
| own legal advice.</p> |
| <p> </p> |
| <h2>Wrapping it up</h2> |
| <p>Now that all the pieces are in place we can run our program executable one |
| more time. Our Cool example should look something like the screen snapshot below. |
| </p> |
| <p align="center"><img src="final.jpg" width="800" height="602"></p> |
| <p> </p> |
| <p>Before celebrating the branding of your product you should take a moment to |
| confirm the following:</p> |
| <ul> |
| <li>welcome page is correct</li> |
| <li>the icon and title shown in the window title bar is correct</li> |
| <li>the Help pulldown properly indicate the name of the about dialog (e.g. About |
| Cool Stuff)</li> |
| <li>the about dialog properly include your graphic, copyright text, version |
| and build numbers</li> |
| <li>the about dialog properly includes the platform version information in the |
| lower half of the dialog</li> |
| </ul> |
| Now that you have mastered the steps you should do a final run through the steps |
| (starting with a clean install) but be sure to skip the "try it" steps. |
| These steps require you to run the platform and consequently will cause information |
| to be cached. Your actual product production process should not run the platform |
| runtime. |
| <h2> </h2> |
| <h2>A brief word on NL enablement</h2> |
| <p>In the previous sections we did not discuss NL (National Language) support |
| for your product branding. There are two important parts to localizing the product |
| branding:</p> |
| <ul> |
| <li>localizing the configuration's plug-in</li> |
| <li>localizing the splash screen</li> |
| </ul> |
| <p>Configuration plug-ins are localized in a manner similar to the many other |
| plug-ins you have probably seen. That means creating one or more NL plug-in |
| fragments to contain the localized information. </p> |
| <p>To localize the splash screen you will need to create locale subdirectories |
| under <i>eclipse/splash.</i> The names of these directories follow the standard |
| Java™ locale naming conventions. For example the platform looks up the splash |
| screen for USA english locale (en_US) as follow:</p> |
| <ol> |
| <li>eclipse\splash\en_US\<image file></li> |
| <li>eclipse\splash\en\<image file></li> |
| <li>eclipse\splash\<image file></li> |
| </ol> |
| <p>where <image file> is the name of the splash file (e.g. splash_full.bmp |
| or splash_full.xpm).</p> |
| <p>For additional information on localizing plug-ins consult the Platform Plug-in |
| Developer Guide.</p> |
| <p> </p> |
| <h2>Product directory</h2> |
| <p>In the previous sections we have been working in the <i>eclipse/</i> directory. |
| You are probably asking yourself whether or not you should rename the <i>eclipse</i> |
| directory. The answer is no. Doing so may prevent future fixes and updates from |
| installing. The correct approach is to include the <i>eclipse/</i> directory |
| inside your own product directory. For example our Cool product would look as |
| follows:</p> |
| <blockquote> |
| <p>\cool<br> |
| \cool\<b>eclipse<br> |
| </b>\cool\<b>eclipse\cool.exe</b><br> |
| \cool\product-readme<br> |
| \cool\.... </p> |
| </blockquote> |
| It is also worth noting that the steps we have gone through describe the complete |
| set of steps you need to follow in order to productize/brand your work. Other |
| than adding more of your own plug-ins you should not make other modifications |
| in the <i>eclipse/</i> directory. |
| <h2>Summary</h2> |
| <p>We have covered the tasks required to add branding to a product based on the |
| platform. The process involves rebuilding the executable, replacing a number |
| of graphics and creating a product configuration and corresponding plug-in. |
| Once you have mastered the steps you should do a final run through the steps |
| but be sure to skip the "try it" steps. These steps require you to |
| run the platform and consequently will cause information to be cached. Your |
| actual product production process should not run the platform runtime. Here |
| is a quick checklist (ignoring NL issues) to help refresh your memory on what |
| we modified.</p> |
| <table width="80%" border="1" cellspacing="0" cellpadding="0"> |
| <tr bgcolor="#CCCCCC"> |
| <td width="20%"><b>Item</b></td> |
| <td width="40%"><b>Windows</b></td> |
| <td width="40%"><b>Linux</b></td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td>Splash</td> |
| <td> |
| <p>Replace the following:</p> |
| <ul> |
| <li>eclipse/splash/splash_basic.bmp</li> |
| <li>eclipse/splash/splash_full.bmp</li> |
| </ul> |
| </td> |
| <td> |
| <p>Replace the following: </p> |
| <ul> |
| <li>eclipse/splash/splash_basic.xpm</li> |
| <li>eclipse/splash/splash_full.xpm</li> |
| </ul> |
| </td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td>Executable graphics</td> |
| <td> |
| <p>Replace the following in <i>library/</i> (obtained from the SDK)</p> |
| <ul> |
| <li>icon16_basic.bmp</li> |
| <li>icon16_full.bmp</li> |
| <li>icon32_basic.bmp</li> |
| <li>icon32_full.bmp</li> |
| <li>icon48_basic.bmp</li> |
| <li>icon48_full.bmp</li> |
| </ul> |
| <p>and build them into single ICO file by replacing:</p> |
| <ul> |
| <li>library/eclipse.ico</li> |
| </ul> |
| </td> |
| <td> |
| <p>Replace the following:</p> |
| <ul> |
| <li>eclipse/icon.xpm</li> |
| </ul> |
| </td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td>Executable</td> |
| <td colspan="2"> |
| <p>Remove existing executable from eclipse/ and replace with your product's |
| executable program built using the build scripts in <i>library/ </i>of |
| the SDK<i> </i>. </p> |
| </td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td>Product configuration</td> |
| <td colspan="2"> |
| <p>Copy the dominant configuration directory to eclipse/install/configurations/<i>your_configuration_id_and_version</i></p> |
| <p>Modify the following files in the new configuration directory</p> |
| <ul> |
| <li>install.xml</li> |
| </ul> |
| </td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td>Product plug-in</td> |
| <td colspan="2">Copy the dominant configuration plug-in directory to eclipse/plugins/<i>your_configuration_id_and_version</i></td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td>Standard plug-in files </td> |
| <td colspan="2"> |
| <p>Modify the following files in eclipse/plugins/<i>your_configuration_id_and_version</i></p> |
| <ul> |
| <li>plugin.xml</li> |
| <li>plugin.properties</li> |
| <li>about.html</li> |
| </ul> |
| </td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td>Plug-in product files</td> |
| <td colspan="2"> |
| <p>Modify the following product files in eclipse/plugins/<i>your_configuration_id_and_version. |
| </i>These provide product naming, About dialog text and the welcome page.</p> |
| <ul> |
| <li>product.ini</li> |
| <li>product.properties</li> |
| <li>welcome.xml</li> |
| </ul> |
| </td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td>Plug-in product graphics</td> |
| <td colspan="2"> |
| <p>Replace the following product graphics files in eclipse/plugins/<i>your_configuration_id_and_version</i>. |
| These represent the about dialog and the icon shown in the top left corner |
| of all windows:</p> |
| <ul> |
| <li>about_prod.gif</li> |
| <li>about_prod_basic.gif</li> |
| <li>prod.gif</li> |
| <li>prod_basic.gif</li> |
| </ul> |
| </td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td>Installation </td> |
| <td colspan="2">Update eclipse/install/install.properties to reference <i>your_configuration_id_and_version</i></td> |
| </tr> |
| <tr align="left" valign="top"> |
| <td>License</td> |
| <td colspan="2">You should check legal notices such as: license.html, notice.html, |
| cpl-v05.html and the about.html files in the root directory and plugin subdirectories |
| to make sure they are appropriate for your distribution and that you comply |
| with them or their terms. We can't tell you what to do here, you need to |
| get your own legal advice.</td> |
| </tr> |
| </table> |
| |
| <p><small>Java and all Java-based trademarks and logos are trademarks or registered |
| trademarks of Sun Microsystems, Inc. in the United States, other countries, or |
| both.</small></p> |
| <p><small>Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.</small></p> |
| </body> |
| </html> |