iMaker 3.1.0
authorhaismail <hussein.ismail@nokia.com>
Wed, 28 Apr 2010 13:50:48 +0300
changeset 11 217e69fc5beb
parent 10 2715b6594cd9
child 12 125690ea6ecd
child 14 c23b5453a747
iMaker 3.1.0
imakerplugin/com.nokia.carbide.extensions.imaker/feature.xml
imakerplugin/com.nokia.s60tools.imaker.doc.user/META-INF/MANIFEST.MF
imakerplugin/com.nokia.s60tools.imaker.doc.user/html/contexts.xml
imakerplugin/com.nokia.s60tools.imaker.doc.user/html/getting_started.html
imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/content_tab.png
imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/debug_tab.png
imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/iMakerPluginPreferences.png
imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/iMakerPluginPreferencesDetails.png
imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/iMakerPluginSaveAction.png
imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/launch_imaker.png
imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/platsim_tab.png
imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/taskPreferences.html
imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tool.html
imakerplugin/com.nokia.s60tools.imaker.doc.user/plugin.xml
imakerplugin/com.nokia.s60tools.imaker.doc.user/src/com/nokia/s60tools/imaker/help/internal/Activator.java
imakerplugin/com.nokia.s60tools.imaker.tests/META-INF/MANIFEST.MF
imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/impmodel/tests/ImpResourceLoadTests.java
imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/impmodel/tests/ImpResourceSaveTests.java
imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/model/iContent/tests/ImageContentTest.java
imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/tests/ImakerPropertiesTest.java
imakerplugin/com.nokia.s60tools.imaker/META-INF/MANIFEST.MF
imakerplugin/com.nokia.s60tools.imaker/about.properties
imakerplugin/com.nokia.s60tools.imaker/doc/Test_Summary_ iMakerPlugin_3_0_0.xls
imakerplugin/com.nokia.s60tools.imaker/doc/Test_Summary_ iMakerPlugin_3_1_0.xls
imakerplugin/com.nokia.s60tools.imaker/doc/change_log_3_0_0.txt
imakerplugin/com.nokia.s60tools.imaker/doc/change_log_3_1_0.txt
imakerplugin/com.nokia.s60tools.imaker/model/debug.ecore
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/ImageFlasherHelpContextIDs.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/dialogs/LaunchIMakerDialog.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/managers/ProjectManager.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/ImakerProperties.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/ACTION.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/IContentPackage.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/IMAGESECTION.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/IbyEntry.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/impl/IContentFactoryImpl.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/impl/IContentPackageImpl.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/impl/IbyEntryImpl.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/providers/CheckBoxEditingSupport.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/providers/ComboEditingSupport.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/DebugTab.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/IMakerTabsViewer.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/PlatsimTab.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/PreferencesTab.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/SettingsTab.java
imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/messages.properties
imakerplugin/common.properties
--- a/imakerplugin/com.nokia.carbide.extensions.imaker/feature.xml	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.carbide.extensions.imaker/feature.xml	Wed Apr 28 13:50:48 2010 +0300
@@ -2,7 +2,7 @@
 <feature
       id="com.nokia.carbide.extensions.imaker"
       label="Carbide.c++ Extensions - IMaker"
-      version="3.0.0"
+      version="3.1.0"
       provider-name="Nokia"
       plugin="com.nokia.s60tools.imaker">
 
--- a/imakerplugin/com.nokia.s60tools.imaker.doc.user/META-INF/MANIFEST.MF	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker.doc.user/META-INF/MANIFEST.MF	Wed Apr 28 13:50:48 2010 +0300
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Carbide.c++ Extensions - iMaker Help
 Bundle-SymbolicName: com.nokia.s60tools.imaker.doc.user;singleton:=true
-Bundle-Version: 3.0.0
+Bundle-Version: 3.1.0
 Bundle-Activator: com.nokia.s60tools.imaker.help.internal.HelpPlugin
 Bundle-Vendor: Nokia
 Bundle-Localization: plugin
--- a/imakerplugin/com.nokia.s60tools.imaker.doc.user/html/contexts.xml	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker.doc.user/html/contexts.xml	Wed Apr 28 13:50:48 2010 +0300
@@ -3,33 +3,51 @@
 <contexts>
 
 
-	<context id="IMAKERPLUGIN_HELP_PRODUCT">
-      	<description>Product makefiles</description>	   
+	<context id="IMAKERPLUGIN_HELP_PRODUCT" title="Product">
+      	<description>Product selection</description>	   
 		<topic label="Product makefiles" href="html/tasks/taskPreferences.html" />
 	</context>
+ <context id="IMAKERDIALOG_CONFIGURATION" title="Configurations">
+    <description>List of all files where data values are saved</description>
+    <topic href="html/tasks/taskPreferences.html#config" label="Configuration"/>
+ </context>
+   <context id="IMAKERDIALOG_CONTENTTAB" title="Add files to the image">
+      <description>Add binary or data files to the image. Refer to see also below for more information.</description>
+      <topic href="html/tasks/taskPreferences.html#fields" label="Content"/>
+   </context>
+	
+   <context id="IMAKERDIALOG_SETTINGSTAB" title="Settings">
+      <description>To modify the values of the variables of the selected product.</description>
+      <topic href="html/tasks/taskPreferences.html#settings" label="Settings tab"/>
+   </context>
+	
+   <context id="IMAKERDIALOG_PLATSIMTAB" title="Platsim">
+      <description>Settings related to PlatSim</description>
+      <topic href="html/tasks/taskPreferences.html#platsim" label="Platsim tab"/>
+   </context>
 	
 	
-	<context id="IMAKERPLUGIN_HELP_TARGETS">
+	<context id="IMAKERPLUGIN_HELP_TARGETS" title="Available Targets">
       	<description>List of available targets</description>	   
 		<topic label="Selecting target" href="html/tasks/taskPreferences.html" />
 	</context>
 	
-	<context id="IMAKERPLUGIN_HELP_SELECTED_TARGETS">
-      	<description>Target(s) for which to build an image</description>	   
+	<context id="IMAKERPLUGIN_HELP_SELECTED_TARGETS" title="Selected target">
+      	<description>Target(s) for which to build an image. Specifies what to build.</description>	   
 		<topic label="Build targets" href="html/tasks/taskPreferences.html" />
 	</context>
 	
-	<context id="IMAKERPLUGIN_HELP_IMAGE_TYPE">
-      	<description>Type of image to build</description>	   
+	<context id="IMAKERPLUGIN_HELP_IMAGE_TYPE" title="Image Type">
+      	<description>Type of image to build. Passed as TYPE=&lt;type&gt; to imaker commandline tool.</description>	   
 		<topic label="Image type" href="html/tasks/taskPreferences.html" />
 	</context>
 	
-	<context id="IMAKERPLUGIN_HELP_FLAGS">
+	<context id="IMAKERPLUGIN_HELP_FLAGS" title="Flags">
       	<description>Build flags to specify image characteristics. Symbol files will create symbolic files and verbose will cause iMaker commandline tool to print additional information</description>	   
 		<topic label="Build flags" href="html/tasks/taskPreferences.html" />
 	</context>
 	
-	<context id="IMAKERPLUGIN_HELP_ADDITIONAL_PARAMS">
+	<context id="IMAKERPLUGIN_HELP_ADDITIONAL_PARAMS" title="Additional parameters">
       	<description>Additional build parameters to insert for iMaker commandline tool</description>	   
 		<topic label="Additional parameters" href="html/tasks/taskPreferences.html" />
 	</context>
@@ -39,5 +57,10 @@
       	<description>Help for iMakerPlugin</description>	   
 		<topic label="Help for iMakerPlugin" href="html/tool.html" />
 	</context>
+
+	<context id="IMAKER_DEBUGTAB_TABLE">
+      	<description>Help for iMakerPlugin</description>	   
+		<topic label="Help for iMakerPlugin" href="html/tool.html" />
+	</context>
      		     
 </contexts>
--- a/imakerplugin/com.nokia.s60tools.imaker.doc.user/html/getting_started.html	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker.doc.user/html/getting_started.html	Wed Apr 28 13:50:48 2010 +0300
@@ -9,12 +9,11 @@
 will help you get started quickly using the basic features of iMaker.</p><p>
 Before you can create images with the iMaker, the following conditions
 must be met:</p><ul>
-<li>An active project in the Carbide.c++ workspace must exist. The project must be created
+<li>An active project in the Carbide.c++ workspace must exist. The project must be located
  on the top of a working build environment (an S60 3rd edition R&amp;D SDK or higher)</li>
 </ul><p>Build ROM images by following these steps:</p><ol>
 <li><a href="tasks/taskPreferences.html">Build image via iMaker Dialog</a>.</li>
-<li><a href="tasks/build_image.html#select_prev">Use previously saved preferences</a>.</li>
-</ol>  <p>While the image is being built, a build log can be seen in an editor
-in Carbide.c++.</p>  <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.</div>
+<li><a href="tasks/build_image.html#select_prev">Build image via saved preferences</a>.</li>
+</ol>  <p>While the image is being built, a build log can be seen in the console in Carbide.c++.</p>  <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.</div>
 </body></html>
 
Binary file imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/content_tab.png has changed
Binary file imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/debug_tab.png has changed
Binary file imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/iMakerPluginPreferences.png has changed
Binary file imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/iMakerPluginPreferencesDetails.png has changed
Binary file imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/iMakerPluginSaveAction.png has changed
Binary file imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/launch_imaker.png has changed
Binary file imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/images/platsim_tab.png has changed
--- a/imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/taskPreferences.html	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tasks/taskPreferences.html	Wed Apr 28 13:50:48 2010 +0300
@@ -8,34 +8,56 @@
 <link href="../book.css" type="text/css" rel="stylesheet" />
 </head>
 <body>
-<h2>Managing preferences</h2>  
+<h2>Managing image creation preferences</h2>  
 <p>Before you can build a ROM image, you must define the preferences for a configuration. In iMaker,
-a configuration can be thought of as a container of product and other information.</p> 
+a configuration can be thought of as a container of product and other information. Follow these steps to create a ROM image with the specified settings:</p> 
 <ol>
-<li>Select the project that you want to use as the basis for image creation. </li>
-<li>Select <b>Open iMaker Dialog...</b> option from the iMaker pulldown menu on the toolbar. iMaker Extension will now start scanning the environtment to query 
+<li>Select the project that you want to use as the basis for image creation from carbide.c++ <i>Project Explorer</i> view. </li>
+<li>Select <b>Open iMaker Dialog...</b> option from the iMaker pulldown menu on the toolbar see below image. <p><img src="images/launch_imaker.png"></p> iMaker Extension will now start scanning the environtment to query 
 information from the underlying iMaker commandline tool. This may take a while, but this action occurs only once for each project.</li>
 <li>When the <b>iMaker Dialog</b> is opened, it is populated with data from the active environment. Default product is selected if one is configured, otherwise the first product is selected. 
 User can change the product using the <b>Change...</b> button. Example is shown bellow. <p><img
 src="images/iMakerPluginPreferences.png"></p></li>
 <li>Once data is filled in the fields, a flashable image can be created. Press
-the <b>Run</b> button at the bottom of the dialog. Remember to add the desired targets to the <b>selected</b> list of targets.</li>
+the <b>Run</b> button at the bottom of the dialog. Remember to add the desired targets to the <b>selected</b> list of targets. Usual targets include <i>flash</i>, <i>core</i>, <i>variant</i> etc..</li>
 </ol> 
-<h3>Saving the preferences for a configuration</h3> 
-<p>To save the fields of a configuration to a file, do the following: </p><ol>
+<a name="config"></a><h3>Saving the preferences</h3> 
+<p>To save the specified data values in the dialog to a file, do the following: </p><ol>
 <li>Press the <b>Save as...</b></li>
-<li>Choose the parent folder where to save the file, it is recommended to save under the selected project. See below image.<p><img src="images/iMakerPluginSaveAction.png"></p></li>
+<li>Choose the parent folder where to save the file, it is recommended to save under the selected project. See below image.<p><img src="images/iMakerPluginSaveAction.png"></p> Specify name and press <i>finish</i></li>
 <li>All saved preferences are visible in the <b>configuration</b> combobox on the top of the dialog. Any of these saved files can be activated and used for image creation.</li>
 
-<a name="management"></a><h3>Settings tab</h3> <p>To modify the values
+<a name="settings"></a><h3>Settings tab</h3> <p>To modify the values
 of the variables of the selected product (or makefile), select the <b>Settings
-</b> tab in the iMaker dialog. See the following example: </p><p><img src="images/iMakerPluginPreferencesDetails.png"> Through this tab user can override the default variable values in the iMaker core. Any modified parameter will be passed to iMaker cmd throuht execution command.</p> 
+</b> tab in the iMaker dialog. See the following example: </p><p><img src="images/iMakerPluginPreferencesDetails.png"> </p> Through this tab user can override the default variable values in the iMaker core. Any modified parameter will be passed to iMaker cmd through execution command. 
 
-<a name="debug"></a><h3>Debug tab</h3>
-<p>The debug tab allows user to add binary and data files to the image. These files can be added to different sections of the image. The binary files can be easy changed to debug versions. Currently CORE and ROFS sections are supported. 
-Files cannot be added to UDA for example through this tab.<br>
-<img src="images/debug_tab.png"></p>
-
+<a name="debug"></a><h3>Content tab</h3>
+<p>The content tab allows user to add binary and data files to the image. These files can be added to different sections of the image. Currently CORE and ROFS sections are supported. Files can also be removed, hidden or changes to udeb/urel version. The <b>Action</b>s column provides the list of available actions.  
+Files cannot be added to UDA through this tab.<br>
+<img src="images/content_tab.png"></p>
+<p><a name="fields"></a>Table fields:
+<ul>
+<li><b>Enable</b>: Enablement, only enabled items are saved or taken to the image</li>
+<li><b>File</b>: Component source location. The source file must exist in the file system.</li>
+<li><b>Target</b>: Component target location in the device.</li>
+<li><b>Location</b>: Image section. Possible values: <ul><li><i>core</i> - core section of the image</li><li><i>rofs2</i> - rofs2 section of the image</li><li><i>rofs3</i> - rofs3 or customer section of the image</li></ul></li>
+<li><b>Action</b>: Action to perform with the component. Possible values: <ul><li><i>udeb</i> - take udeb version of the component to the image</li><li><i>udeb-add</i> - take udeb version of the component, add the component to the specified image section if it is not already there</li>
+<li><i>urel</i> - take urel version of the component to the image</li><li><i>urel-add</i> - take urel version of the component, add the component to the specified image section if it is not already there</li>
+<li><i>remove</i> - remove the component from the specified image section</li>
+<li><i>hide</i> - hide the component in the specified image section</li>
+<li><i>replace</i> - replace the component in the image section specified, if the component does not exist then do nothing</li>
+<li><i>replace-add</i> - Replace the component in the image section specified, if the component does not exist then add it as a new component</li>
+</ul></li>
+</ul>
+</p>
+<p><a name="buttons"></a>Right buttons:
+<ul>
+<li><b>Add</b>: Add a new component to the list, causes a dialog to pop-up</li>
+<li><b>Remove</b>: Remove selected component from the list</li>
+<li><b>Duplicate</b>: Duplicate the selected component e.g. add a new entry with same <i>File</i> and <i>Target</i> as the selected one. The entry is added below the selected entry</li>
+<li><b>Populate</b>: Add the binaries and any resource-type files generated by all mmp files in the selected project</li>
+</ul>
+</p>
 <a name="platsim"></a><h3>Platsim tab</h3>
 <p>The contents of the platsim tab will be enabled, when you select a valid platsim configuration from the main tab. The platsim configuration must define USE_PLATSIM variable, in order it to be 
 consider as valid. This variable must be non-empty. Users can edit the platsim configuration makefile and add USE_PLATSIM=1 then restart carbide.c++. Currently only all target is supported. All 
--- a/imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tool.html	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker.doc.user/html/tool.html	Wed Apr 28 13:50:48 2010 +0300
@@ -22,7 +22,7 @@
 <ul>
 <li><a href="tasks/taskPreferences.html#create">Managing preferences</a></li>
 <li><a href="tasks/build_image.html#select_prev">Use previously saved preferences</a></li>
-<li><a href="tasks/build_image.html#build">Build previously built ROM image</a></li>
+<li><a href="tasks/build_image.html#build">Rebuilding previous ROM image</a></li>
 </ul></p>
 <a href="legal.html">Legal</a>
 <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.</div>
--- a/imakerplugin/com.nokia.s60tools.imaker.doc.user/plugin.xml	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker.doc.user/plugin.xml	Wed Apr 28 13:50:48 2010 +0300
@@ -50,7 +50,7 @@
  <extension point="org.eclipse.help.contexts">
  	<contexts
        file="html/contexts.xml"
-       plugin="com.nokia.s60tools.imakerplugin.help"/>
+       plugin="com.nokia.s60tools.imaker.doc.user"/>
  </extension>
 
 	
--- a/imakerplugin/com.nokia.s60tools.imaker.doc.user/src/com/nokia/s60tools/imaker/help/internal/Activator.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker.doc.user/src/com/nokia/s60tools/imaker/help/internal/Activator.java	Wed Apr 28 13:50:48 2010 +0300
@@ -25,7 +25,7 @@
 public class Activator extends AbstractUIPlugin {
 
 	// The plug-in ID
-	public static final String PLUGIN_ID = "com.nokia.s60tools.imakerplugin.help";
+	public static final String PLUGIN_ID = "com.nokia.s60tools.imaker.doc.user";
 
 	// The shared instance
 	private static Activator plugin;
--- a/imakerplugin/com.nokia.s60tools.imaker.tests/META-INF/MANIFEST.MF	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker.tests/META-INF/MANIFEST.MF	Wed Apr 28 13:50:48 2010 +0300
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Tests
 Bundle-SymbolicName: com.nokia.s60tools.imaker.tests
-Bundle-Version: 3.0.0
+Bundle-Version: 3.1.0
 Bundle-Activator: com.nokia.s60tools.imaker.internal.tests.Activator
 Bundle-Vendor: NOKIA
 Bundle-Localization: plugin
--- a/imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/impmodel/tests/ImpResourceLoadTests.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/impmodel/tests/ImpResourceLoadTests.java	Wed Apr 28 13:50:48 2010 +0300
@@ -133,7 +133,7 @@
 		String content = "#comment1\nvar1 = foo\n" +
 		"define IMAGE_ORIDECONF\n" +
 		"\tekern.exe udeb core\n" +
-		"\tAbout.r01 hie rofs2\n" +
+		"\tAbout.r01 hide rofs2\n" +
 		"endef";
 		
 		populateTestFile(content);
@@ -158,7 +158,7 @@
 				"#trace configurations\n" +
 				"define IMAGE_ORIDECONF\n" +
 				"\tekern.exe udeb core\n" +
-				"\tAbout.r01 hie rofs2\n" +
+				"\tAbout.r01 hide rofs2\n" +
 				"endef";
 
 		populateTestFile(content);
@@ -196,7 +196,7 @@
 		"#trace configurations\n" +
 		"define IMAGE_ORIDECONF\n" +
 		"\tekern.exe udeb core\n" +
-		"\tAbout.r01 hie rofs2\n" +
+		"\tAbout.r01 hide rofs2\n" +
 		"endef";
 		
 		populateTestFile(content);
--- a/imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/impmodel/tests/ImpResourceSaveTests.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/impmodel/tests/ImpResourceSaveTests.java	Wed Apr 28 13:50:48 2010 +0300
@@ -82,7 +82,7 @@
 		assertEquals(comment.getComment(), cm.getComment());
 	}
 
-	public void testSavingDocumentWithVariabless() throws Exception {
+	public void testSavingDocumentWithVariables() throws Exception {
 		String name = "foo";
 		String value = "bar";
 		
--- a/imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/model/iContent/tests/ImageContentTest.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/model/iContent/tests/ImageContentTest.java	Wed Apr 28 13:50:48 2010 +0300
@@ -19,6 +19,7 @@
 
 import junit.framework.TestCase;
 
+import com.nokia.s60tools.imaker.internal.model.iContent.ACTION;
 import com.nokia.s60tools.imaker.internal.model.iContent.IContentFactory;
 import com.nokia.s60tools.imaker.internal.model.iContent.IMAGESECTION;
 import com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry;
@@ -42,7 +43,7 @@
 		assertTrue(content.getEntries().size()==0);
 		IbyEntry ie = IContentFactory.eINSTANCE.createIbyEntry();
 
-		ie.setDebug(true);
+		ie.setAction(ACTION.HIDE);
 		ie.setEnabled(false);
 		String file = "huuhaa.exe";
 		ie.setFile(file);
--- a/imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/tests/ImakerPropertiesTest.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/tests/ImakerPropertiesTest.java	Wed Apr 28 13:50:48 2010 +0300
@@ -40,6 +40,7 @@
 import com.nokia.s60tools.imaker.internal.impmodel.Variable;
 import com.nokia.s60tools.imaker.internal.impmodel.util.ImpResourceFactoryImpl;
 import com.nokia.s60tools.imaker.internal.model.ImakerProperties;
+import com.nokia.s60tools.imaker.internal.model.iContent.ACTION;
 import com.nokia.s60tools.imaker.internal.model.iContent.IContentFactory;
 import com.nokia.s60tools.imaker.internal.model.iContent.IMAGESECTION;
 import com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry;
@@ -125,7 +126,7 @@
 		assertEquals(true, iby.isEnabled());
 		assertEquals("\\epoc32\\release\\ARMV5\\UDEB\\HelloConsole1.exe", iby.getFile());
 		assertEquals("\\sys\\bin\\HelloConsole1.exe", iby.getTarget());
-		assertEquals("CORE", iby.getLocation().getLiteral());
+		assertEquals("core", iby.getLocation().getLiteral());
 	}
     
     public void testSavingToFileMainTab() throws Exception {
@@ -173,7 +174,7 @@
     	
     	IbyEntry entry = IContentFactory.eINSTANCE.createIbyEntry();
     	entry.setEnabled(true);
-    	entry.setDebug(true);
+    	entry.setAction(ACTION.HIDE);
 		entry.setFile("file1");
     	entry.setLocation(IMAGESECTION.CORE);
 		entry.setTarget("target1");
@@ -181,7 +182,7 @@
 
 		entry = IContentFactory.eINSTANCE.createIbyEntry();
 		entry.setEnabled(false);
-		entry.setDebug(true);
+		entry.setAction(ACTION.REMOVE);
 		entry.setFile("file2");
 		entry.setLocation(IMAGESECTION.ROFS3);
 		entry.setTarget("target2");
@@ -189,7 +190,7 @@
 
 		entry = IContentFactory.eINSTANCE.createIbyEntry();
 		entry.setEnabled(true);
-		entry.setDebug(true);
+		entry.setAction(ACTION.REPLACE);
 		entry.setFile("file3");
 		entry.setLocation(IMAGESECTION.ROFS3);
 		entry.setTarget("target3");
--- a/imakerplugin/com.nokia.s60tools.imaker/META-INF/MANIFEST.MF	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/META-INF/MANIFEST.MF	Wed Apr 28 13:50:48 2010 +0300
@@ -3,7 +3,7 @@
 Bundle-Name: %plugin.Name
 Bundle-SymbolicName: com.nokia.s60tools.imaker;singleton:=true
 Bundle-ToolName: iMaker - Carbide.c++ extension
-Bundle-Version: 3.0.0
+Bundle-Version: 3.1.0
 Bundle-Date: 01-10-2009
 Bundle-RepositoryVersion: n/a
 Bundle-Activator: com.nokia.s60tools.imaker.IMakerPlugin
--- a/imakerplugin/com.nokia.s60tools.imaker/about.properties	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/about.properties	Wed Apr 28 13:50:48 2010 +0300
@@ -22,7 +22,7 @@
 
 productBlurb=Carbide.c++ Extensions - iMaker \n\
 \n\
-Version: 3.0.0\n\
+Version: 3.1.0\n\
 Build id: {0}\n\
 \n\
 \n\
Binary file imakerplugin/com.nokia.s60tools.imaker/doc/Test_Summary_ iMakerPlugin_3_0_0.xls has changed
Binary file imakerplugin/com.nokia.s60tools.imaker/doc/Test_Summary_ iMakerPlugin_3_1_0.xls has changed
--- a/imakerplugin/com.nokia.s60tools.imaker/doc/change_log_3_0_0.txt	Wed Apr 21 11:49:56 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-Product Description:
-====================
-The iMaker extension for Carbide.c++ is a tool for building ROM images. Its core functionality is implemented in a command line executable called imaker.cmd. 
-The iMaker offers a Carbide.c++ integration that provides a graphical user interface for the imaker.cmd command line tool. The iMaker enables you to set and 
-modify the build parameters that are used by iMaker.
-
-Image building process is started by launching iMaker dialog by choosing the Open iMaker Dialog... menu item from iMaker pulldown menu (hammer with 'i') on the Carbide.c++ toolbar.
-The ROM image is built using the preferences configured in this dialog. Although not necessary, these preferences can be saved for future use for image building if needed. 
-Once preferences are configured, an image can be built by clicking the Run button in the dialog.
-
-Version 3.0.0
-===========================================
-New Features
-Ticket #1136: As a iMaker plugin user I don't want to load all the product configurations when starting the plugin (takes too long)
-Ticket #1188: As a Carbide.c++ user I want to modify my .IMP file using iMaker plugin
-Ticket #1137: Rename debug tab in iMaker plugin to something else
-Ticket #1055: As a SW developer I don't want to have temporary files in my Carbide.c++ workspace
-Ticket #1245: Update target selection required to avoid yellow warnings on content tab
-Ticket #1135: As a iMaker plugin user i want to reload available configurations (reload the current configuration)
-Ticket #1099: As a developer I want to enable/disable selected files so that I don't need to manually select each one separately
-
-Enhancements
-License changed from SFL to EPL
-Total number of unit tests almost doubled
-
-Error fixes
-Fixed invalid imp file selection problem
-
-Version 2.2.4
-===========================================
-New Features
-Ticket #1052: As a SW developer I don't want to have pop-up suggesting to add generated makefile to bld.inf because I consider that as a temporary file
-Ui changes to debug tab related to Ticket #1053. Ability to remember environment specific previous run. Only enabled entries in the debug tab are included to the images.
-Ticket #1053: As a SW developer I want to add automatically all build files to debug dialog so that my manual work is minimized
-Ticket #1115: As a Carbide.c++ developer I want to use iMaker plugin API to create images with .imp file
-
-Enhancements
-iMaker plugin code separated to internal and public API
-
-Error fixes
-iMaker plugin to show appropriate error message if iMaker Core execution fails
-
-Version 2.2.0
-===========================================
-New Features
-- New simplified UI
-- Automatic environment recognition based on Carbide.c++ workspace/project
-- Automatic selection of default product and variant of the environment (needs AMPI configuration in iMaker makefiles)
-- Summary for the created images in console window
-- Platsim integration
-- Support for adding binaries to image in urel/udeb mode.
-- Possibility to cancel fetching on configurations
-
-Enhancements
-- Handling of imp files
-
-Error fixes
-
-Version 2.1.2
-===========================================
-New Features
-
-Enhancements
-- Help updated
-- code cleaned
-- copy right headers updated
-
-Error fixes
-- two error fixed relating to the interface with iMaker core 
-
-Version 2.1.1
-===========================================
-New Features
-#365 The imaker plugin should be able to notice the success/failure of imaker image creation
-#630 Better integration to S60 Configuration Tool
-
-Enhancements
-
-Error fixes
-Fixed to work with iMaker 08.4x.xx interface changes
- 
-Version 2.1.0
-===========================================
-New Features:
-- The structure and implementation has been changed. 
-- The preferences pages are no longer used. 
-- An independent dialog has been implemented for the iMaker extension. 
-- New way of managing preferences files have been implemented. 
-- A list has been added which displays prefereneces files and which allows deletation and creatation of new file. 
-- Renaming of preferences files has been added. 
-- The detailed settings page has been made editable. 
-- Better integration with S60 Configuration Tool has been implemented. 
-
-Enhancements:
-- Querying of configuration from the environment has been enhanced. 
-- Editing and saving has been enhanced.
-- Querying of targets and variables from one product. 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imakerplugin/com.nokia.s60tools.imaker/doc/change_log_3_1_0.txt	Wed Apr 28 13:50:48 2010 +0300
@@ -0,0 +1,111 @@
+Product Description:
+====================
+The iMaker extension for Carbide.c++ is a tool for building ROM images. Its core functionality is implemented in a command line executable called imaker.cmd. 
+The iMaker offers a Carbide.c++ integration that provides a graphical user interface for the imaker.cmd command line tool. The iMaker enables you to set and 
+modify the build parameters that are used by iMaker.
+
+Image building process is started by launching iMaker dialog by choosing the Open iMaker Dialog... menu item from iMaker pulldown menu (hammer with 'i') on the Carbide.c++ toolbar.
+The ROM image is built using the preferences configured in this dialog. Although not necessary, these preferences can be saved for future use for image building if needed. 
+Once preferences are configured, an image can be built by clicking the Run button in the dialog.
+
+Version 3.1.0
+===========================================
+New Features
+Ticket #1255: As iMaker plugin user I want to hide/remove binaries from rom or with rofs section so that I can populate debug binaries via Trk or User disk
+
+Enhancements
+Small improvements to the UI (e.g. made dialog resizable)
+Help updated
+Better support of .imp file format
+
+Error fixes
+Reload button functionality
+Populate button functionality
+
+Version 3.0.0
+===========================================
+New Features
+Ticket #1136: As a iMaker plugin user I don't want to load all the product configurations when starting the plugin (takes too long)
+Ticket #1188: As a Carbide.c++ user I want to modify my .IMP file using iMaker plugin
+Ticket #1137: Rename debug tab in iMaker plugin to something else
+Ticket #1055: As a SW developer I don't want to have temporary files in my Carbide.c++ workspace
+Ticket #1245: Update target selection required to avoid yellow warnings on content tab
+Ticket #1135: As a iMaker plugin user i want to reload available configurations (reload the current configuration)
+Ticket #1099: As a developer I want to enable/disable selected files so that I don't need to manually select each one separately
+
+Enhancements
+License changed from SFL to EPL
+Total number of unit tests almost doubled
+
+Error fixes
+Fixed invalid imp file selection problem
+
+Version 2.2.4
+===========================================
+New Features
+Ticket #1052: As a SW developer I don't want to have pop-up suggesting to add generated makefile to bld.inf because I consider that as a temporary file
+Ui changes to debug tab related to Ticket #1053. Ability to remember environment specific previous run. Only enabled entries in the debug tab are included to the images.
+Ticket #1053: As a SW developer I want to add automatically all build files to debug dialog so that my manual work is minimized
+Ticket #1115: As a Carbide.c++ developer I want to use iMaker plugin API to create images with .imp file
+
+Enhancements
+iMaker plugin code separated to internal and public API
+
+Error fixes
+iMaker plugin to show appropriate error message if iMaker Core execution fails
+
+Version 2.2.0
+===========================================
+New Features
+- New simplified UI
+- Automatic environment recognition based on Carbide.c++ workspace/project
+- Automatic selection of default product and variant of the environment (needs AMPI configuration in iMaker makefiles)
+- Summary for the created images in console window
+- Platsim integration
+- Support for adding binaries to image in urel/udeb mode.
+- Possibility to cancel fetching on configurations
+
+Enhancements
+- Handling of imp files
+
+Error fixes
+
+Version 2.1.2
+===========================================
+New Features
+
+Enhancements
+- Help updated
+- code cleaned
+- copy right headers updated
+
+Error fixes
+- two error fixed relating to the interface with iMaker core 
+
+Version 2.1.1
+===========================================
+New Features
+#365 The imaker plugin should be able to notice the success/failure of imaker image creation
+#630 Better integration to S60 Configuration Tool
+
+Enhancements
+
+Error fixes
+Fixed to work with iMaker 08.4x.xx interface changes
+ 
+Version 2.1.0
+===========================================
+New Features:
+- The structure and implementation has been changed. 
+- The preferences pages are no longer used. 
+- An independent dialog has been implemented for the iMaker extension. 
+- New way of managing preferences files have been implemented. 
+- A list has been added which displays prefereneces files and which allows deletation and creatation of new file. 
+- Renaming of preferences files has been added. 
+- The detailed settings page has been made editable. 
+- Better integration with S60 Configuration Tool has been implemented. 
+
+Enhancements:
+- Querying of configuration from the environment has been enhanced. 
+- Editing and saving has been enhanced.
+- Querying of targets and variables from one product. 
\ No newline at end of file
--- a/imakerplugin/com.nokia.s60tools.imaker/model/debug.ecore	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/model/debug.ecore	Wed Apr 28 13:50:48 2010 +0300
@@ -11,13 +11,24 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="file" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="location" eType="#//IMAGESECTION"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="debug" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="action" eType="#//ACTION"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="enabled" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="statusMessage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EEnum" name="IMAGESECTION">
-    <eLiterals name="CORE"/>
-    <eLiterals name="ROFS2" value="1"/>
-    <eLiterals name="ROFS3" value="2"/>
+    <eLiterals name="CORE" literal="core"/>
+    <eLiterals name="ROFS2" value="1" literal="rofs2"/>
+    <eLiterals name="ROFS3" value="2" literal="rofs3"/>
+    <eLiterals name="ANY" value="3" literal="*"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="ACTION">
+    <eLiterals name="UDEB" literal="udeb"/>
+    <eLiterals name="REMOVE" value="1" literal="remove"/>
+    <eLiterals name="HIDE" value="2" literal="hide"/>
+    <eLiterals name="UDEB_ADD" value="3" literal="udeb-add"/>
+    <eLiterals name="UREL" value="4" literal="urel"/>
+    <eLiterals name="UREL_ADD" value="5" literal="urel-add"/>
+    <eLiterals name="REPLACE" value="6" literal="replace"/>
+    <eLiterals name="REPLACE_ADD" value="7" literal="replace-add"/>
   </eClassifiers>
 </ecore:EPackage>
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/ImageFlasherHelpContextIDs.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/ImageFlasherHelpContextIDs.java	Wed Apr 28 13:50:48 2010 +0300
@@ -28,17 +28,20 @@
      * to here to avoid runtime dependency to help project 
      */	 
     private static final String IMAKERPLUGIN_HELP_PROJECT_PLUGIN_ID = 
-                                        "com.nokia.s60tools.imaker.help";
+                                        "com.nokia.s60tools.imaker.doc.user";
 	
+    public static final String IMAKERDIALOG_CONFIGURATION = 
+    	IMAKERPLUGIN_HELP_PROJECT_PLUGIN_ID +".IMAKERDIALOG_CONFIGURATION";
+
     public static final String IMAKERPLUGIN_HELP_PRODUCT = 
     	IMAKERPLUGIN_HELP_PROJECT_PLUGIN_ID +".IMAKERPLUGIN_HELP_PRODUCT";
-
+    
 
     public static final String IMAKERPLUGIN_HELP_TARGETS = 
     	IMAKERPLUGIN_HELP_PROJECT_PLUGIN_ID +".IMAKERPLUGIN_HELP_TARGETS";
     
     public static final String IMAKERPLUGIN_HELP_SELECTED_TARGETS = 
-    	IMAKERPLUGIN_HELP_PROJECT_PLUGIN_ID +".IMAKERPLUGIN_HELP_TARGET_LIST";
+    	IMAKERPLUGIN_HELP_PROJECT_PLUGIN_ID +".IMAKERPLUGIN_HELP_SELECTED_TARGETS";
     
     public static final String IMAKERPLUGIN_HELP_IMAGE_TYPE = 
     	IMAKERPLUGIN_HELP_PROJECT_PLUGIN_ID +".IMAKERPLUGIN_HELP_IMAGE_TYPE";
@@ -54,5 +57,17 @@
     
     public static final String IMAKERPLUGIN_HELP = 
     	IMAKERPLUGIN_HELP_PROJECT_PLUGIN_ID +".IMAKERPLUGIN_HELP";
+
+    public static final String IMAKER_DEBUGTAB_TABLE = 
+    	IMAKERPLUGIN_HELP_PROJECT_PLUGIN_ID + ".IMAKER_DEBUGTAB_TABLE";
+
+    public static final String IMAKERDIALOG_CONTENTTAB = 
+    	IMAKERPLUGIN_HELP_PROJECT_PLUGIN_ID + ".IMAKERDIALOG_CONTENTTAB";
+    
+    public static final String IMAKERDIALOG_SETTINGSTAB = 
+    	IMAKERPLUGIN_HELP_PROJECT_PLUGIN_ID + ".IMAKERDIALOG_SETTINGSTAB";
+    
+    public static final String IMAKERDIALOG_PLATSIMTAB = 
+    	IMAKERPLUGIN_HELP_PROJECT_PLUGIN_ID + ".IMAKERDIALOG_PLATSIMTAB";
     
 }
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/dialogs/LaunchIMakerDialog.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/dialogs/LaunchIMakerDialog.java	Wed Apr 28 13:50:48 2010 +0300
@@ -209,7 +209,6 @@
 			setFilePath(imakerTabsViewer.handleRunPressed());
 			okPressed();
 		} else if (buttonId == ID_CLOSE_BUTTON) {
-//			imakerTabsViewer.handleRunPressed();
 			cancelPressed();
 		} else {
 			super.buttonPressed(buttonId);
@@ -221,6 +220,12 @@
 		return DEFAULT_INITIAL_DIALOG_SIZE;
 	}
 
+	@Override
+	protected boolean isResizable() {
+		return true;
+	}
+
+	
 	/**
 	 * Sets the viewer used to display the tabs for a launch configuration.
 	 * 
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/managers/ProjectManager.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/managers/ProjectManager.java	Wed Apr 28 13:50:48 2010 +0300
@@ -238,7 +238,7 @@
 			ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
 			String filename = null;
 			
-			boolean debug = "udeb".equalsIgnoreCase(buildConfig.getTargetString());
+//			boolean debug = "udeb".equalsIgnoreCase(buildConfig.getTargetString());
 			// add the binaries and any resource-type files generated by all mmp files in the project
 			for (IPath mmp : EpocEngineHelper.getMMPFilesForBuildConfiguration(buildConfig)) {
 				IPath hp = EpocEngineHelper.getHostPathForExecutable(buildConfig, mmp);
@@ -248,14 +248,14 @@
 				
 				// add component executable
 				if (hp != null) {
-					addEntry(ic, debug, hp.toOSString(), tp.toOSString(), filename);
+					addEntry(ic, hp.toOSString(), tp.toOSString(), filename);
 				}
 
 				HashMap<String, String> hostTargetRSRCMap = EpocEngineHelper.getHostAndTargetResources(buildConfig, mmp);
 				// Add resource files...
 				for (String key : hostTargetRSRCMap.keySet()) {
 					filename = new File(key).getName();
-					addEntry(ic, false, key, hostTargetRSRCMap.get(key),filename);
+					addEntry(ic, key, hostTargetRSRCMap.get(key),filename);
 				}
 			}
 
@@ -263,12 +263,12 @@
 			HashMap<String, String> hostTargetImagesMap = EpocEngineHelper.getHostAndTargetImages(buildConfig);
 			for (String key : hostTargetImagesMap.keySet()) {
 				filename = new File(key).getName();				
-				addEntry(ic, false, key, hostTargetImagesMap.get(key), filename);
+				addEntry(ic, key, hostTargetImagesMap.get(key), filename);
 			}
 		}	
 	}
 
-	private void addEntry(ImageContent ic, boolean debug,
+	private void addEntry(ImageContent ic,
 			String hp, String tp, String filename) {
 		IbyEntry entry = IContentFactory.eINSTANCE.createIbyEntry();
 		if(hp.length()>2) {
@@ -287,7 +287,6 @@
 			tp = tp.substring(2);			
 		}
 		entry.setTarget(tp);
-		entry.setDebug(debug);
 		boolean contains = false;
 		for (IbyEntry e : ic.getEntries()) {
 			if(e.equals(entry)) {
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/ImakerProperties.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/ImakerProperties.java	Wed Apr 28 13:50:48 2010 +0300
@@ -26,8 +26,6 @@
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.URI;
@@ -50,6 +48,7 @@
 import com.nokia.s60tools.imaker.internal.impmodel.util.BasicTokenizer;
 import com.nokia.s60tools.imaker.internal.impmodel.util.ImpResourceImpl;
 import com.nokia.s60tools.imaker.internal.managers.ProjectManager;
+import com.nokia.s60tools.imaker.internal.model.iContent.ACTION;
 import com.nokia.s60tools.imaker.internal.model.iContent.IContentFactory;
 import com.nokia.s60tools.imaker.internal.model.iContent.IMAGESECTION;
 import com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry;
@@ -123,13 +122,17 @@
 				for (int i = 0; i < entries.size(); i++) {
 					FileListEntry fEntry = entries.get(i);
 					EList<ConfigEntry> actions = fEntry.getActions();
-					if (!actions.isEmpty()) {
-						ConfigEntry action = actions.get(0);
+					for (ConfigEntry action : actions) {
 						IbyEntry iby = IContentFactory.eINSTANCE.createIbyEntry();
 						iby.setEnabled(true);
 						iby.setFile(fEntry.getSource());
 						iby.setTarget(fEntry.getTarget());
-						iby.setLocation(IMAGESECTION.get(action.getLocation()));
+						if(action.getLocation().equals(IMAGESECTION.ANY.getLiteral())) {
+							iby.setLocation(IMAGESECTION.ANY);							
+						} else {
+							iby.setLocation(IMAGESECTION.get(action.getLocation()));														
+						}
+						iby.setAction(ACTION.get(action.getAction()));
 						ibyEntries.add(iby);
 					}
 				}
@@ -212,6 +215,7 @@
 			List<IbyEntry> entries = (List<IbyEntry>) oEntries;
 			OverrideFiles files = factory.createOverrideFiles();
 			OverrideConfiguration confs = factory.createOverrideConfiguration();
+			
 			for (IbyEntry ibyEntry : entries) {
 				if(!ibyEntry.isEnabled()) {
 					continue; //Notice skipping disabled entries
@@ -220,17 +224,20 @@
 				ConfigEntry configEntry = factory.createConfigEntry();
 				fileEntry.setSource(ibyEntry.getFile());
 				fileEntry.setTarget(ibyEntry.getTarget());
-				files.getEntries().add(fileEntry);
+				if(!containsComponentEntry(files,fileEntry)) {
+					files.getEntries().add(fileEntry);					
+				}
 				
 				//
 				configEntry.setTarget(ibyEntry.getTarget());
-				configEntry.setAction("replace-add");
-				configEntry.setLocation(ibyEntry.getLocation().getName().toLowerCase());
+				configEntry.setAction(ibyEntry.getAction().getLiteral());
+				configEntry.setLocation(ibyEntry.getLocation().getLiteral());
 				confs.getEntries().add(configEntry);
 			}
+			
 			if(!files.getEntries().isEmpty()) {
+				doc.getOrideConfs().add(confs);
 				doc.getOrideFiles().add(files);
-				doc.getOrideConfs().add(confs);
 			}
 		}
 		
@@ -238,6 +245,18 @@
 		return doc;
 	}
 
+	private boolean containsComponentEntry(OverrideFiles files,
+			FileListEntry fileEntry) {
+		boolean found = false;
+		for (FileListEntry entry : files.getEntries()) {
+			if (entry.getSource().equals(fileEntry.getSource())
+					&& entry.getTarget().equals(fileEntry.getTarget())) {
+				found = true;
+			}
+		}
+		return found;
+	}
+
 	private void addPlatsimVariables(Properties clone, ImpDocument doc,
 			ImpmodelFactory factory) {
 		addVariable(doc, factory, ImpConstants.PLATSIM_INSTANCE, (String) clone
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/ACTION.java	Wed Apr 28 13:50:48 2010 +0300
@@ -0,0 +1,380 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+package com.nokia.s60tools.imaker.internal.model.iContent;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>ACTION</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see com.nokia.s60tools.imaker.internal.model.iContent.IContentPackage#getACTION()
+ * @model
+ * @generated
+ */
+public enum ACTION implements Enumerator {
+	/**
+	 * The '<em><b>UDEB</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UDEB_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UDEB(0, "UDEB", "udeb"), /**
+	 * The '<em><b>REMOVE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #REMOVE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	REMOVE(1, "REMOVE", "remove"), /**
+	 * The '<em><b>HIDE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #HIDE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	HIDE(2, "HIDE", "hide"),
+
+	/**
+	 * The '<em><b>UDEB ADD</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UDEB_ADD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UDEB_ADD(3, "UDEB_ADD", "udeb-add"),
+
+	/**
+	 * The '<em><b>UREL</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UREL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UREL(4, "UREL", "urel"),
+
+	/**
+	 * The '<em><b>UREL ADD</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UREL_ADD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UREL_ADD(5, "UREL_ADD", "urel-add"),
+
+	/**
+	 * The '<em><b>REPLACE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #REPLACE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	REPLACE(6, "REPLACE", "replace"),
+
+	/**
+	 * The '<em><b>REPLACE ADD</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #REPLACE_ADD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	REPLACE_ADD(7, "REPLACE_ADD", "replace-add");
+
+	/**
+	 * The '<em><b>UDEB</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>UDEB</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UDEB
+	 * @model literal="udeb"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UDEB_VALUE = 0;
+
+	/**
+	 * The '<em><b>REMOVE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>REMOVE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #REMOVE
+	 * @model literal="remove"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int REMOVE_VALUE = 1;
+
+	/**
+	 * The '<em><b>HIDE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>HIDE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #HIDE
+	 * @model literal="hide"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int HIDE_VALUE = 2;
+
+	/**
+	 * The '<em><b>UDEB ADD</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>UDEB ADD</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UDEB_ADD
+	 * @model literal="udeb-add"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UDEB_ADD_VALUE = 3;
+
+	/**
+	 * The '<em><b>UREL</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>UREL</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UREL
+	 * @model literal="urel"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UREL_VALUE = 4;
+
+	/**
+	 * The '<em><b>UREL ADD</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>UREL ADD</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UREL_ADD
+	 * @model literal="urel-add"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UREL_ADD_VALUE = 5;
+
+	/**
+	 * The '<em><b>REPLACE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>REPLACE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #REPLACE
+	 * @model literal="replace"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int REPLACE_VALUE = 6;
+
+	/**
+	 * The '<em><b>REPLACE ADD</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>REPLACE ADD</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #REPLACE_ADD
+	 * @model literal="replace-add"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int REPLACE_ADD_VALUE = 7;
+
+	/**
+	 * An array of all the '<em><b>ACTION</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final ACTION[] VALUES_ARRAY =
+		new ACTION[] {
+			UDEB,
+			REMOVE,
+			HIDE,
+			UDEB_ADD,
+			UREL,
+			UREL_ADD,
+			REPLACE,
+			REPLACE_ADD,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>ACTION</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<ACTION> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>ACTION</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ACTION get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ACTION result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>ACTION</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ACTION getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ACTION result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>ACTION</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ACTION get(int value) {
+		switch (value) {
+			case UDEB_VALUE: return UDEB;
+			case REMOVE_VALUE: return REMOVE;
+			case HIDE_VALUE: return HIDE;
+			case UDEB_ADD_VALUE: return UDEB_ADD;
+			case UREL_VALUE: return UREL;
+			case UREL_ADD_VALUE: return UREL_ADD;
+			case REPLACE_VALUE: return REPLACE;
+			case REPLACE_ADD_VALUE: return REPLACE_ADD;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private ACTION(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //ACTION
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/IContentPackage.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/IContentPackage.java	Wed Apr 28 13:50:48 2010 +0300
@@ -136,13 +136,13 @@
 	int IBY_ENTRY__LOCATION = 2;
 
 	/**
-	 * The feature id for the '<em><b>Debug</b></em>' attribute.
+	 * The feature id for the '<em><b>Action</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int IBY_ENTRY__DEBUG = 3;
+	int IBY_ENTRY__ACTION = 3;
 
 	/**
 	 * The feature id for the '<em><b>Enabled</b></em>' attribute.
@@ -184,6 +184,17 @@
 
 
 	/**
+	 * The meta object id for the '{@link com.nokia.s60tools.imaker.internal.model.iContent.ACTION <em>ACTION</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see com.nokia.s60tools.imaker.internal.model.iContent.ACTION
+	 * @see com.nokia.s60tools.imaker.internal.model.iContent.impl.IContentPackageImpl#getACTION()
+	 * @generated
+	 */
+	int ACTION = 3;
+
+
+	/**
 	 * Returns the meta object for class '{@link com.nokia.s60tools.imaker.internal.model.iContent.ImageContent <em>Image Content</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -248,15 +259,15 @@
 	EAttribute getIbyEntry_Location();
 
 	/**
-	 * Returns the meta object for the attribute '{@link com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#isDebug <em>Debug</em>}'.
+	 * Returns the meta object for the attribute '{@link com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#getAction <em>Action</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Debug</em>'.
-	 * @see com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#isDebug()
+	 * @return the meta object for the attribute '<em>Action</em>'.
+	 * @see com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#getAction()
 	 * @see #getIbyEntry()
 	 * @generated
 	 */
-	EAttribute getIbyEntry_Debug();
+	EAttribute getIbyEntry_Action();
 
 	/**
 	 * Returns the meta object for the attribute '{@link com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#isEnabled <em>Enabled</em>}'.
@@ -291,6 +302,16 @@
 	EEnum getIMAGESECTION();
 
 	/**
+	 * Returns the meta object for enum '{@link com.nokia.s60tools.imaker.internal.model.iContent.ACTION <em>ACTION</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>ACTION</em>'.
+	 * @see com.nokia.s60tools.imaker.internal.model.iContent.ACTION
+	 * @generated
+	 */
+	EEnum getACTION();
+
+	/**
 	 * Returns the factory that creates the instances of the model.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -365,12 +386,12 @@
 		EAttribute IBY_ENTRY__LOCATION = eINSTANCE.getIbyEntry_Location();
 
 		/**
-		 * The meta object literal for the '<em><b>Debug</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Action</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute IBY_ENTRY__DEBUG = eINSTANCE.getIbyEntry_Debug();
+		EAttribute IBY_ENTRY__ACTION = eINSTANCE.getIbyEntry_Action();
 
 		/**
 		 * The meta object literal for the '<em><b>Enabled</b></em>' attribute feature.
@@ -398,6 +419,16 @@
 		 */
 		EEnum IMAGESECTION = eINSTANCE.getIMAGESECTION();
 
+		/**
+		 * The meta object literal for the '{@link com.nokia.s60tools.imaker.internal.model.iContent.ACTION <em>ACTION</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see com.nokia.s60tools.imaker.internal.model.iContent.ACTION
+		 * @see com.nokia.s60tools.imaker.internal.model.iContent.impl.IContentPackageImpl#getACTION()
+		 * @generated
+		 */
+		EEnum ACTION = eINSTANCE.getACTION();
+
 	}
 
 } //IContentPackage
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/IMAGESECTION.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/IMAGESECTION.java	Wed Apr 28 13:50:48 2010 +0300
@@ -40,7 +40,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	CORE(0, "CORE", "CORE"),
+	CORE(0, "CORE", "core"),
 
 	/**
 	 * The '<em><b>ROFS2</b></em>' literal object.
@@ -50,7 +50,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	ROFS2(1, "ROFS2", "ROFS2"),
+	ROFS2(1, "ROFS2", "rofs2"),
 
 	/**
 	 * The '<em><b>ROFS3</b></em>' literal object.
@@ -60,7 +60,15 @@
 	 * @generated
 	 * @ordered
 	 */
-	ROFS3(2, "ROFS3", "ROFS3");
+	ROFS3(2, "ROFS3", "rofs3"), /**
+	 * The '<em><b>ANY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ANY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ANY(3, "ANY", "*");
 
 	/**
 	 * The '<em><b>CORE</b></em>' literal value.
@@ -71,7 +79,7 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @see #CORE
-	 * @model
+	 * @model literal="core"
 	 * @generated
 	 * @ordered
 	 */
@@ -86,7 +94,7 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @see #ROFS2
-	 * @model
+	 * @model literal="rofs2"
 	 * @generated
 	 * @ordered
 	 */
@@ -101,13 +109,28 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @see #ROFS3
-	 * @model
+	 * @model literal="rofs3"
 	 * @generated
 	 * @ordered
 	 */
 	public static final int ROFS3_VALUE = 2;
 
 	/**
+	 * The '<em><b>ANY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ANY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ANY
+	 * @model literal="*"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ANY_VALUE = 3;
+
+	/**
 	 * An array of all the '<em><b>IMAGESECTION</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -118,6 +141,7 @@
 			CORE,
 			ROFS2,
 			ROFS3,
+			ANY,
 		};
 
 	/**
@@ -171,6 +195,7 @@
 			case CORE_VALUE: return CORE;
 			case ROFS2_VALUE: return ROFS2;
 			case ROFS3_VALUE: return ROFS3;
+			case ANY_VALUE: return ANY;
 		}
 		return null;
 	}
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/IbyEntry.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/IbyEntry.java	Wed Apr 28 13:50:48 2010 +0300
@@ -29,7 +29,7 @@
  *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#getFile <em>File</em>}</li>
  *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#getTarget <em>Target</em>}</li>
  *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#getLocation <em>Location</em>}</li>
- *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#isDebug <em>Debug</em>}</li>
+ *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#getAction <em>Action</em>}</li>
  *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#isEnabled <em>Enabled</em>}</li>
  *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#getStatusMessage <em>Status Message</em>}</li>
  * </ul>
@@ -122,30 +122,33 @@
 	void setLocation(IMAGESECTION value);
 
 	/**
-	 * Returns the value of the '<em><b>Debug</b></em>' attribute.
+	 * Returns the value of the '<em><b>Action</b></em>' attribute.
+	 * The literals are from the enumeration {@link com.nokia.s60tools.imaker.internal.model.iContent.ACTION}.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Debug</em>' attribute isn't clear,
+	 * If the meaning of the '<em>Action</em>' attribute isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Debug</em>' attribute.
-	 * @see #setDebug(boolean)
-	 * @see com.nokia.s60tools.imaker.internal.model.iContent.IContentPackage#getIbyEntry_Debug()
+	 * @return the value of the '<em>Action</em>' attribute.
+	 * @see com.nokia.s60tools.imaker.internal.model.iContent.ACTION
+	 * @see #setAction(ACTION)
+	 * @see com.nokia.s60tools.imaker.internal.model.iContent.IContentPackage#getIbyEntry_Action()
 	 * @model
 	 * @generated
 	 */
-	boolean isDebug();
+	ACTION getAction();
 
 	/**
-	 * Sets the value of the '{@link com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#isDebug <em>Debug</em>}' attribute.
+	 * Sets the value of the '{@link com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry#getAction <em>Action</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Debug</em>' attribute.
-	 * @see #isDebug()
+	 * @param value the new value of the '<em>Action</em>' attribute.
+	 * @see com.nokia.s60tools.imaker.internal.model.iContent.ACTION
+	 * @see #getAction()
 	 * @generated
 	 */
-	void setDebug(boolean value);
+	void setAction(ACTION value);
 
 	/**
 	 * Returns the value of the '<em><b>Enabled</b></em>' attribute.
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/impl/IContentFactoryImpl.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/impl/IContentFactoryImpl.java	Wed Apr 28 13:50:48 2010 +0300
@@ -16,6 +16,7 @@
 */
 package com.nokia.s60tools.imaker.internal.model.iContent.impl;
 
+import com.nokia.s60tools.imaker.internal.model.iContent.*;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EDataType;
 import org.eclipse.emf.ecore.EObject;
@@ -91,6 +92,8 @@
 		switch (eDataType.getClassifierID()) {
 			case IContentPackage.IMAGESECTION:
 				return createIMAGESECTIONFromString(eDataType, initialValue);
+			case IContentPackage.ACTION:
+				return createACTIONFromString(eDataType, initialValue);
 			default:
 				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
 		}
@@ -106,6 +109,8 @@
 		switch (eDataType.getClassifierID()) {
 			case IContentPackage.IMAGESECTION:
 				return convertIMAGESECTIONToString(eDataType, instanceValue);
+			case IContentPackage.ACTION:
+				return convertACTIONToString(eDataType, instanceValue);
 			default:
 				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
 		}
@@ -156,6 +161,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public ACTION createACTIONFromString(EDataType eDataType, String initialValue) {
+		ACTION result = ACTION.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertACTIONToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public IContentPackage getIContentPackage() {
 		return (IContentPackage)getEPackage();
 	}
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/impl/IContentPackageImpl.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/impl/IContentPackageImpl.java	Wed Apr 28 13:50:48 2010 +0300
@@ -58,6 +58,13 @@
 	private EEnum imagesectionEEnum = null;
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum actionEEnum = null;
+
+	/**
 	 * Creates an instance of the model <b>Package</b>, registered with
 	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
 	 * package URI value.
@@ -177,7 +184,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getIbyEntry_Debug() {
+	public EAttribute getIbyEntry_Action() {
 		return (EAttribute)ibyEntryEClass.getEStructuralFeatures().get(3);
 	}
 
@@ -213,6 +220,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EEnum getACTION() {
+		return actionEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public IContentFactory getIContentFactory() {
 		return (IContentFactory)getEFactoryInstance();
 	}
@@ -243,12 +259,13 @@
 		createEAttribute(ibyEntryEClass, IBY_ENTRY__FILE);
 		createEAttribute(ibyEntryEClass, IBY_ENTRY__TARGET);
 		createEAttribute(ibyEntryEClass, IBY_ENTRY__LOCATION);
-		createEAttribute(ibyEntryEClass, IBY_ENTRY__DEBUG);
+		createEAttribute(ibyEntryEClass, IBY_ENTRY__ACTION);
 		createEAttribute(ibyEntryEClass, IBY_ENTRY__ENABLED);
 		createEAttribute(ibyEntryEClass, IBY_ENTRY__STATUS_MESSAGE);
 
 		// Create enums
 		imagesectionEEnum = createEEnum(IMAGESECTION);
+		actionEEnum = createEEnum(ACTION);
 	}
 
 	/**
@@ -288,7 +305,7 @@
 		initEAttribute(getIbyEntry_File(), ecorePackage.getEString(), "file", null, 0, 1, IbyEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getIbyEntry_Target(), ecorePackage.getEString(), "target", null, 0, 1, IbyEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getIbyEntry_Location(), this.getIMAGESECTION(), "location", null, 0, 1, IbyEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getIbyEntry_Debug(), ecorePackage.getEBoolean(), "debug", null, 0, 1, IbyEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getIbyEntry_Action(), this.getACTION(), "action", null, 0, 1, IbyEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getIbyEntry_Enabled(), ecorePackage.getEBoolean(), "enabled", null, 0, 1, IbyEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getIbyEntry_StatusMessage(), ecorePackage.getEString(), "statusMessage", null, 0, 1, IbyEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
@@ -297,6 +314,17 @@
 		addEEnumLiteral(imagesectionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.IMAGESECTION.CORE);
 		addEEnumLiteral(imagesectionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.IMAGESECTION.ROFS2);
 		addEEnumLiteral(imagesectionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.IMAGESECTION.ROFS3);
+		addEEnumLiteral(imagesectionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.IMAGESECTION.ANY);
+
+		initEEnum(actionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.ACTION.class, "ACTION");
+		addEEnumLiteral(actionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.ACTION.UDEB);
+		addEEnumLiteral(actionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.ACTION.REMOVE);
+		addEEnumLiteral(actionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.ACTION.HIDE);
+		addEEnumLiteral(actionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.ACTION.UDEB_ADD);
+		addEEnumLiteral(actionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.ACTION.UREL);
+		addEEnumLiteral(actionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.ACTION.UREL_ADD);
+		addEEnumLiteral(actionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.ACTION.REPLACE);
+		addEEnumLiteral(actionEEnum, com.nokia.s60tools.imaker.internal.model.iContent.ACTION.REPLACE_ADD);
 
 		// Create resource
 		createResource(eNS_URI);
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/impl/IbyEntryImpl.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/iContent/impl/IbyEntryImpl.java	Wed Apr 28 13:50:48 2010 +0300
@@ -16,6 +16,7 @@
 */
 package com.nokia.s60tools.imaker.internal.model.iContent.impl;
 
+import com.nokia.s60tools.imaker.internal.model.iContent.ACTION;
 import com.nokia.s60tools.imaker.internal.model.iContent.IContentPackage;
 import com.nokia.s60tools.imaker.internal.model.iContent.IMAGESECTION;
 import com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry;
@@ -37,7 +38,7 @@
  *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.impl.IbyEntryImpl#getFile <em>File</em>}</li>
  *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.impl.IbyEntryImpl#getTarget <em>Target</em>}</li>
  *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.impl.IbyEntryImpl#getLocation <em>Location</em>}</li>
- *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.impl.IbyEntryImpl#isDebug <em>Debug</em>}</li>
+ *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.impl.IbyEntryImpl#getAction <em>Action</em>}</li>
  *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.impl.IbyEntryImpl#isEnabled <em>Enabled</em>}</li>
  *   <li>{@link com.nokia.s60tools.imaker.internal.model.iContent.impl.IbyEntryImpl#getStatusMessage <em>Status Message</em>}</li>
  * </ul>
@@ -107,24 +108,24 @@
 	protected IMAGESECTION location = LOCATION_EDEFAULT;
 
 	/**
-	 * The default value of the '{@link #isDebug() <em>Debug</em>}' attribute.
+	 * The default value of the '{@link #getAction() <em>Action</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #isDebug()
+	 * @see #getAction()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final boolean DEBUG_EDEFAULT = false;
+	protected static final ACTION ACTION_EDEFAULT = ACTION.UDEB;
 
 	/**
-	 * The cached value of the '{@link #isDebug() <em>Debug</em>}' attribute.
+	 * The cached value of the '{@link #getAction() <em>Action</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #isDebug()
+	 * @see #getAction()
 	 * @generated
 	 * @ordered
 	 */
-	protected boolean debug = DEBUG_EDEFAULT;
+	protected ACTION action = ACTION_EDEFAULT;
 
 	/**
 	 * The default value of the '{@link #isEnabled() <em>Enabled</em>}' attribute.
@@ -253,8 +254,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean isDebug() {
-		return debug;
+	public ACTION getAction() {
+		return action;
 	}
 
 	/**
@@ -262,11 +263,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setDebug(boolean newDebug) {
-		boolean oldDebug = debug;
-		debug = newDebug;
+	public void setAction(ACTION newAction) {
+		ACTION oldAction = action;
+		action = newAction == null ? ACTION_EDEFAULT : newAction;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, IContentPackage.IBY_ENTRY__DEBUG, oldDebug, debug));
+			eNotify(new ENotificationImpl(this, Notification.SET, IContentPackage.IBY_ENTRY__ACTION, oldAction, action));
 	}
 
 	/**
@@ -325,8 +326,8 @@
 				return getTarget();
 			case IContentPackage.IBY_ENTRY__LOCATION:
 				return getLocation();
-			case IContentPackage.IBY_ENTRY__DEBUG:
-				return isDebug();
+			case IContentPackage.IBY_ENTRY__ACTION:
+				return getAction();
 			case IContentPackage.IBY_ENTRY__ENABLED:
 				return isEnabled();
 			case IContentPackage.IBY_ENTRY__STATUS_MESSAGE:
@@ -352,8 +353,8 @@
 			case IContentPackage.IBY_ENTRY__LOCATION:
 				setLocation((IMAGESECTION)newValue);
 				return;
-			case IContentPackage.IBY_ENTRY__DEBUG:
-				setDebug((Boolean)newValue);
+			case IContentPackage.IBY_ENTRY__ACTION:
+				setAction((ACTION)newValue);
 				return;
 			case IContentPackage.IBY_ENTRY__ENABLED:
 				setEnabled((Boolean)newValue);
@@ -382,8 +383,8 @@
 			case IContentPackage.IBY_ENTRY__LOCATION:
 				setLocation(LOCATION_EDEFAULT);
 				return;
-			case IContentPackage.IBY_ENTRY__DEBUG:
-				setDebug(DEBUG_EDEFAULT);
+			case IContentPackage.IBY_ENTRY__ACTION:
+				setAction(ACTION_EDEFAULT);
 				return;
 			case IContentPackage.IBY_ENTRY__ENABLED:
 				setEnabled(ENABLED_EDEFAULT);
@@ -409,8 +410,8 @@
 				return TARGET_EDEFAULT == null ? target != null : !TARGET_EDEFAULT.equals(target);
 			case IContentPackage.IBY_ENTRY__LOCATION:
 				return location != LOCATION_EDEFAULT;
-			case IContentPackage.IBY_ENTRY__DEBUG:
-				return debug != DEBUG_EDEFAULT;
+			case IContentPackage.IBY_ENTRY__ACTION:
+				return action != ACTION_EDEFAULT;
 			case IContentPackage.IBY_ENTRY__ENABLED:
 				return enabled != ENABLED_EDEFAULT;
 			case IContentPackage.IBY_ENTRY__STATUS_MESSAGE:
@@ -439,7 +440,7 @@
 	public void append(StringBuffer sb) {
 		sb.append(isEnabled());
 		sb.append(";");
-		sb.append(isDebug());
+		sb.append(getAction().getLiteral());
 		sb.append(";");
 		sb.append(getFile());
 		sb.append(";");
@@ -448,9 +449,13 @@
 		sb.append(getLocation());
 	}
 
+	/*
 	public boolean equals(Object obj) {
 		if(obj instanceof IbyEntry) {
 			IbyEntry other = (IbyEntry) obj;
+			if (super.equals(obj)==false) {
+				return false;
+			}
 			String f = getFile();
 			String t = getTarget();
 			if(f!=null&&t!=null&&f.equals(other.getFile())&&t.equals(other.getTarget())) {
@@ -467,4 +472,5 @@
 		}
 		return false;
 	}
+	*/
 } //IbyEntryImpl
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/providers/CheckBoxEditingSupport.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/providers/CheckBoxEditingSupport.java	Wed Apr 28 13:50:48 2010 +0300
@@ -18,16 +18,12 @@
 
 package com.nokia.s60tools.imaker.internal.providers;
 
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.CheckboxCellEditor;
 import org.eclipse.jface.viewers.ColumnViewer;
 import org.eclipse.jface.viewers.TableViewer;
 
 import com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry;
-import com.nokia.s60tools.imaker.internal.viewers.DebugTab;
 
 public class CheckBoxEditingSupport extends IbyEntryEditingSupport {
 	private final static int ENABLE_COLUMN_ID = 1;
@@ -49,50 +45,14 @@
 
 	@Override
 	protected Object getValue(Object element) {
-		Boolean ret = (column==ENABLE_COLUMN_ID)?new Boolean(getEntry(element).isEnabled()):new Boolean(getEntry(element).isDebug());
-		return ret;
+		return new Boolean(getEntry(element).isEnabled());
 	}
 
 	@Override
 	protected void setValue(Object element, Object value) {
 		Boolean newValue = (Boolean)value;
 		IbyEntry entry = getEntry(element);
-		if(column==ENABLE_COLUMN_ID) {
-			entry.setEnabled(newValue);
-		} else {
-			String dPath = getDebugVersion(entry.getFile(),newValue);
-			if(!dPath.equals(entry.getFile())) {
-				entry.setFile(dPath);
-				entry.setDebug(newValue);
-			} else {
-				return;
-			}
-		}
-		updateWarning(element);
+		entry.setEnabled(newValue);
 		getViewer().update(element, null);
 	}
-
-	private String getDebugVersion(String path, Boolean value) {
-		String pattern;
-		if(value) {
-			pattern = DebugTab.REL_PATTERN;
-		} else {
-			pattern = DebugTab.DEBUG_PATTERN;			
-		}
-		Pattern p = Pattern.compile(pattern);
-		Matcher matcher = p.matcher(path);
-		if (matcher.find()) {
-			int start = matcher.start(1);
-			int end = matcher.end(1);
-			String newPath;
-			if(value) {
-				newPath = path.substring(0, start) + "udeb" + path.substring(end);
-			} else {
-				newPath = path.substring(0, start) + "urel" + path.substring(end);
-			}
-			return newPath;
-		} else {
-			return path;
-		}
-	}
 }
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/providers/ComboEditingSupport.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/providers/ComboEditingSupport.java	Wed Apr 28 13:50:48 2010 +0300
@@ -22,6 +22,7 @@
 import org.eclipse.jface.viewers.ComboBoxCellEditor;
 import org.eclipse.jface.viewers.TableViewer;
 
+import com.nokia.s60tools.imaker.internal.model.iContent.ACTION;
 import com.nokia.s60tools.imaker.internal.model.iContent.IMAGESECTION;
 import com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry;
 
@@ -37,30 +38,68 @@
 
 	@Override
 	protected CellEditor getCellEditor(Object element) {
-		IMAGESECTION[] values = IMAGESECTION.values();
-		String[] entries = new String[values.length];
-		for (int i = 0; i < values.length; i++) {
-			entries[i]=values[i].getLiteral();
+		TableViewer tv = (TableViewer) getViewer();
+		switch (column) {
+		case 4:
+			IMAGESECTION[] values = IMAGESECTION.values();
+			String[] entries = new String[values.length];
+			for (int i = 0; i < values.length; i++) {
+				entries[i]=values[i].getLiteral();
+			}
+			ComboBoxCellEditor cellEditor = new ComboBoxCellEditor(tv.getTable(), entries);
+			return cellEditor;
+		case 5:
+			ACTION[] actions = ACTION.values();
+			entries = new String[actions.length];
+			for (int i = 0; i < actions.length; i++) {
+				entries[i]=actions[i].getLiteral();
+			}
+			cellEditor = new ComboBoxCellEditor(tv.getTable(), entries);
+			return cellEditor;
+
+		default:
+			break;
 		}
-		TableViewer tv = (TableViewer) getViewer();
-		ComboBoxCellEditor cellEditor = new ComboBoxCellEditor(tv.getTable(), entries);
-		return cellEditor;
+		return null;
 	}
 
 	@Override
 	protected Object getValue(Object element) {
 		IbyEntry ie = getEntry(element);
-		Integer value = new Integer(ie.getLocation().getValue());
-		return value;
+		switch (column) {
+		case 4:
+			Integer value = new Integer(ie.getLocation().getValue());
+			return value;
+		case 5:
+			value = new Integer(ie.getAction().getValue());
+			return value;
+		default:
+			break;
+		}
+		return null;
 	}
 
 	@Override
 	protected void setValue(Object element, Object value) {
 		IbyEntry ie = getEntry(element);
-		int oldValue = ie.getLocation().getValue();
-		int newValue = ((Integer)value).intValue();
-		if(oldValue!=newValue) {
-			ie.setLocation(IMAGESECTION.get(newValue));
+		switch (column) {
+		case 4:
+			int oldValue = ie.getLocation().getValue();
+			int newValue = ((Integer)value).intValue();
+			if(oldValue!=newValue) {
+				ie.setLocation(IMAGESECTION.get(newValue));
+			}			
+			break;
+		case 5:
+			oldValue = ie.getAction().getValue();
+			newValue = ((Integer)value).intValue();
+			if(oldValue!=newValue) {
+				ie.setAction(ACTION.get(newValue));
+			}
+			break;
+
+		default:
+			break;
 		}
 		getViewer().update(element, null);
 	}
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/DebugTab.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/DebugTab.java	Wed Apr 28 13:50:48 2010 +0300
@@ -21,9 +21,9 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-import java.util.regex.Pattern;
 
 import org.eclipse.emf.common.util.EList;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.jface.viewers.ISelection;
@@ -48,9 +48,11 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Table;
+import org.eclipse.ui.PlatformUI;
 
 import com.nokia.s60tools.imaker.IMakerKeyConstants;
 import com.nokia.s60tools.imaker.IMakerPlugin;
+import com.nokia.s60tools.imaker.ImageFlasherHelpContextIDs;
 import com.nokia.s60tools.imaker.Messages;
 import com.nokia.s60tools.imaker.UIConfiguration;
 import com.nokia.s60tools.imaker.UITarget;
@@ -58,6 +60,7 @@
 import com.nokia.s60tools.imaker.internal.model.FileToImage;
 import com.nokia.s60tools.imaker.internal.model.ImakerProperties;
 import com.nokia.s60tools.imaker.internal.model.iContent.IContentFactory;
+import com.nokia.s60tools.imaker.internal.model.iContent.IMAGESECTION;
 import com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry;
 import com.nokia.s60tools.imaker.internal.model.iContent.ImageContent;
 import com.nokia.s60tools.imaker.internal.providers.CheckBoxEditingSupport;
@@ -79,6 +82,7 @@
 	private ProjectManager projectManager;
 	private TableViewer tableViewer;
 	private PreferencesTab mainTab;
+	private IContentFactory factory;
 	
 	static {
 		String iconPath = "icons/"; 
@@ -105,9 +109,27 @@
 		this.tabsViewer = viewer;
 		this.projectManager = tabsViewer.getProjectManager();
 		setControl(createControl(parent));
-		this.mainTab = main;		
+		this.mainTab = main;
+		this.factory = IContentFactory.eINSTANCE;
 	}
 	
+	private void duplicateSelection() {
+		ISelection selection = tableViewer.getSelection();
+		if(selection!=null) {
+			IStructuredSelection ss = (IStructuredSelection) selection;
+			IbyEntry item = (IbyEntry) ss.getFirstElement();
+			IbyEntry copy = factory.createIbyEntry();
+			copy.setAction(item.getAction());
+			copy.setEnabled(item.isEnabled());
+			copy.setFile(item.getFile());
+			copy.setTarget(item.getTarget());
+			copy.setLocation(item.getLocation());
+			ImageContent ic = getInput();
+			int index = ic.getEntries().indexOf(item);
+			ic.getEntries().add(index+1, copy);
+			tableViewer.refresh();
+		}
+	}
 	private void deleteSelection() {
 		ISelection selection = tableViewer.getSelection();
 		if(selection!=null) {
@@ -126,6 +148,7 @@
 		Composite top = new Composite(parent,SWT.NONE);
 		top.setLayout(new GridLayout(2,false));
 		top.setLayoutData(new GridData(GridData.FILL_BOTH));
+		setHelpForControl(top, ImageFlasherHelpContextIDs.IMAKERDIALOG_CONTENTTAB);
 		
 		// create table
 		Composite tableComp = getNewComposite(top);
@@ -158,9 +181,8 @@
 		button.setToolTipText(Messages.getString("DebugTab.3"));
 		button.addSelectionListener(new SelectionListener() {
 			
-//			@Override
 			public void widgetSelected(SelectionEvent e) {
-				IbyEntry entry = IContentFactory.eINSTANCE.createIbyEntry();
+				IbyEntry entry = factory.createIbyEntry();
 				ImageContent input = getInput();
 				FileToImage file = new FileToImage();
 				AddEditFileToTransferDialog dialog= new AddEditFileToTransferDialog(getControl().getShell(), file);
@@ -171,17 +193,11 @@
 				entry.setEnabled(file.getEnabled());
 				entry.setFile(file.getHostPath().substring(2));
 				entry.setTarget(file.getTargetPath());
-				entry.setDebug(isDebug(entry.getFile()));
 				input.getEntries().add(entry);
 				tableViewer.refresh();
 			}
 			
-			private boolean isDebug(String file) {
-				Pattern p = Pattern.compile(DEBUG_PATTERN);
-				return p.matcher(file).find();
-			}
 
-//			@Override
 			public void widgetDefaultSelected(SelectionEvent e) {
 				widgetSelected(e);
 			}
@@ -193,12 +209,25 @@
 		button.setToolTipText(Messages.getString("DebugTab.5"));
 		button.addSelectionListener(new SelectionListener() {
 			
-//			@Override
 			public void widgetSelected(SelectionEvent e) {
 				deleteSelection();
 			}
 			
-//			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {
+				widgetSelected(e);
+			}
+		});
+		
+		button = new Button(controls,SWT.PUSH|SWT.LEFT);
+		button.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		button.setText(Messages.getString("DebugTab.24"));
+		button.setToolTipText(Messages.getString("DebugTab.25"));
+		button.addSelectionListener(new SelectionListener() {
+			
+			public void widgetSelected(SelectionEvent e) {
+				duplicateSelection();
+			}
+			
 			public void widgetDefaultSelected(SelectionEvent e) {
 				widgetSelected(e);
 			}
@@ -210,16 +239,25 @@
 		button.setToolTipText(Messages.getString("DebugTab.7"));
 		button.addSelectionListener(new SelectionListener() {
 			
-//			@Override
 			public void widgetSelected(SelectionEvent e) {
 				ImageContent input = getInput();
 				if(input!=null) {
+					
+					if (!input.getEntries().isEmpty()) {
+						boolean confirm = MessageDialog
+								.openQuestion(
+										getControl().getShell(),
+										"Remove Entries",
+										"Clear the list before adding new entries, if any?");
+						if (confirm) {
+							input.getEntries().clear();							
+						}
+					}
 					projectManager.populate(input);
 					tableViewer.refresh();
 				}
 			}
 			
-//			@Override
 			public void widgetDefaultSelected(SelectionEvent e) {
 				widgetSelected(e);
 			}
@@ -298,6 +336,9 @@
 		return top;	
 	}
 
+	private void setHelpForControl(Control container, String id) {
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(container, id);
+	}
 	private Object getDefaultInput() {
 		IContentFactory factory = IContentFactory.eINSTANCE;
 		ImageContent ic = factory.createImageContent();
@@ -317,10 +358,11 @@
 	}
 
 	private void createColumns(TableViewer viewer) {
-		int columnSizes[] = {20,50,130,130,60,50};
+		int columnSizes[] = {20,50,130,130,60,60};
 		
 		TableViewerColumn column = new TableViewerColumn(viewer,SWT.NONE);
-		column.getColumn().setText("!");
+		column.getColumn().setText(Messages.getString("DebugTab.12"));
+		column.getColumn().setToolTipText(Messages.getString("DebugTab.13"));
 		column.getColumn().setWidth(columnSizes[0]);
 		column.setLabelProvider(new ColumnLabelProvider() {	
 			
@@ -354,7 +396,9 @@
 						}
 					}
 				}
-				mainTab.addTarget(entry.getLocation().getName());
+				if(entry.getLocation()!=IMAGESECTION.ANY) {
+					mainTab.addTarget(entry.getLocation().getName());					
+				}
 				return false;
 			}
 
@@ -380,10 +424,11 @@
 			}
 			
 		});
-		column.setEditingSupport(new CheckBoxEditingSupport(viewer, 0));
+//		column.setEditingSupport(new CheckBoxEditingSupport(viewer, 0));
 		
 		column = new TableViewerColumn(viewer,SWT.CENTER);
-		column.getColumn().setText("Enable");
+		column.getColumn().setText(Messages.getString("DebugTab.14"));
+		column.getColumn().setToolTipText(Messages.getString("DebugTab.15"));
 		column.getColumn().setWidth(columnSizes[1]);
 		column.setLabelProvider( new ColumnLabelProvider() {	
 			
@@ -402,7 +447,8 @@
 		column.setEditingSupport(new CheckBoxEditingSupport(viewer, 1));
 		
 		column = new TableViewerColumn(viewer,SWT.NONE);
-		column.getColumn().setText("File");
+		column.getColumn().setText(Messages.getString("DebugTab.16"));
+		column.getColumn().setToolTipText(Messages.getString("DebugTab.17"));
 		column.getColumn().setWidth(columnSizes[2]);
 		column.setLabelProvider(new ColumnLabelProvider() {
 			@Override
@@ -415,7 +461,8 @@
 
 		
 		column = new TableViewerColumn(viewer,SWT.NONE);
-		column.getColumn().setText("Target");
+		column.getColumn().setText(Messages.getString("DebugTab.18"));
+		column.getColumn().setToolTipText(Messages.getString("DebugTab.19"));
 		column.getColumn().setWidth(columnSizes[3]);
 		column.setLabelProvider(new ColumnLabelProvider() {
 			@Override
@@ -427,7 +474,8 @@
 		column.setEditingSupport(new TextEditingSupport(viewer,3));
 		
 		column = new TableViewerColumn(viewer,SWT.NONE);
-		column.getColumn().setText("Location");
+		column.getColumn().setText(Messages.getString("DebugTab.20"));
+		column.getColumn().setToolTipText(Messages.getString("DebugTab.21"));
 		column.getColumn().setWidth(columnSizes[4]);
 		column.setLabelProvider(new ColumnLabelProvider() {
 			@Override
@@ -438,42 +486,31 @@
 		});
 		column.setEditingSupport(new ComboEditingSupport(viewer,4));
 		
-		column = new TableViewerColumn(viewer,SWT.CENTER);
-		column.getColumn().setText("Debug");
+		column = new TableViewerColumn(viewer,SWT.LEFT);
+		column.getColumn().setText(Messages.getString("DebugTab.22"));
+		column.getColumn().setToolTipText(Messages.getString("DebugTab.23"));
 		column.getColumn().setWidth(columnSizes[5]);
 		column.setLabelProvider( new ColumnLabelProvider() {
-					
-			@Override
-			public Image getImage(Object element) {
-				IbyEntry ie = (IbyEntry) element;
-				String key = ie.isDebug() ? CHECKED_IMAGE : UNCHECKED_IMAGE;
-				return imageRegistry.get(key);
-			}
-
 			@Override
 			public String getText(Object element) {
-				return "";
+				IbyEntry e = (IbyEntry) element;
+				return e.getAction().getLiteral();
 			}
 		});
-		column.setEditingSupport(new CheckBoxEditingSupport(viewer, 5));		
+		column.setEditingSupport(new ComboEditingSupport(viewer,5));		
 	}
 	
 	
 	private class DebugContentProvider  implements IStructuredContentProvider {
 
-//		@Override
 		public Object[] getElements(Object inputElement) {
 			ImageContent ic = (ImageContent) inputElement;
 			return ic.getEntries().toArray();
 		}
 
-//		@Override
-		public void dispose() {
-		}
+		public void dispose() {}
 
-//		@Override
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		}
+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
 	}
 
 	/* (non-Javadoc)
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/IMakerTabsViewer.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/IMakerTabsViewer.java	Wed Apr 28 13:50:48 2010 +0300
@@ -47,6 +47,7 @@
 
 import com.nokia.s60tools.imaker.IEnvironmentManager;
 import com.nokia.s60tools.imaker.IMakerPlugin;
+import com.nokia.s60tools.imaker.ImageFlasherHelpContextIDs;
 import com.nokia.s60tools.imaker.Messages;
 import com.nokia.s60tools.imaker.SWTFactory;
 import com.nokia.s60tools.imaker.internal.dialogs.LaunchIMakerDialog;
@@ -138,9 +139,18 @@
 				fConfigWidget.select(i+1);
 			}		
 		}
+		enabaleReload(selection);
 	}
 
 
+	private void enabaleReload(String selection) {
+		if (ProjectManager.NEW_ITEM.equals(selection)) {
+			fReloadButton.setEnabled(true);
+		} else {
+			fReloadButton.setEnabled(false);						
+		}
+	}
+
 	public IEnvironmentManager getEnvironmentManager() {
 		return environmentManager;
 	}
@@ -223,20 +233,21 @@
         fConfigWidget.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
         fConfigWidget.addSelectionListener(new SelectionListener() {
 			
-//			@Override
 			public void widgetSelected(SelectionEvent se) {
 				try {
-					tabPreferences.loadImakerFile(getSelectedItem());
+					String item = getSelectedItem();
+					enabaleReload(item);
+					tabPreferences.loadImakerFile(item);
 				} catch (InvocationTargetException e) {
 					e.printStackTrace();
 				}
 			}
 			
-//			@Override
 			public void widgetDefaultSelected(SelectionEvent se) {
 				widgetSelected(se);
 			}
 		});
+        PlatformUI.getWorkbench().getHelpSystem().setHelp(fConfigWidget, ImageFlasherHelpContextIDs.IMAKERDIALOG_CONFIGURATION);
         
         fConfigWidget.setToolTipText(Messages.getString("IMakerTabsViewer.2"));
         deleteButton = new Button(comboComp, SWT.PUSH);
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/PlatsimTab.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/PlatsimTab.java	Wed Apr 28 13:50:48 2010 +0300
@@ -33,10 +33,12 @@
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
 
 import com.nokia.s60tools.imaker.IEnvironment;
 import com.nokia.s60tools.imaker.IEnvironmentManager;
 import com.nokia.s60tools.imaker.IMakerKeyConstants;
+import com.nokia.s60tools.imaker.ImageFlasherHelpContextIDs;
 import com.nokia.s60tools.imaker.Messages;
 import com.nokia.s60tools.imaker.internal.managers.EnvironmentManager;
 import com.nokia.s60tools.imaker.internal.model.ImakerProperties;
@@ -66,6 +68,7 @@
 	
 	private Control createControl(CTabFolder parent) {
 		Composite top = new Composite(parent,SWT.FLAT);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(top, ImageFlasherHelpContextIDs.IMAKERDIALOG_PLATSIMTAB);
 		GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
 		top.setLayoutData(layoutData);
 		top.setLayout(new GridLayout(1,false));
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/PreferencesTab.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/PreferencesTab.java	Wed Apr 28 13:50:48 2010 +0300
@@ -171,7 +171,6 @@
 			setHelpForControl(buttonVerbose, ImageFlasherHelpContextIDs.IMAKERPLUGIN_HELP_FLAGS);
 			setHelpForControl(textUserDefinedParameters, ImageFlasherHelpContextIDs.IMAKERPLUGIN_HELP_ADDITIONAL_PARAMS);
 		} catch( Exception e ) {
-			//Creating preferences dialog caused an exception
 			e.printStackTrace();
 		}
 		return container;
@@ -580,6 +579,11 @@
 		}
 		settingsTab.setInput(product);
 		textProduct.setToolTipText(product.getFilePath());
+		activatePlatsimTab(product);
+	}
+
+
+	private void activatePlatsimTab(UIConfiguration product) {
 		platsimTab.activate(product.isPlatsimConfiguration());
 	}
 
@@ -788,7 +792,10 @@
 			if(text!=null) {
 				text = text.trim();
 				if(!"".equals(text)) {
-					text = text +" " + getVariableString(modVariable);
+					String varString = getVariableString(modVariable);
+					if (text.indexOf(varString)==-1) {
+						text = text +" " + varString;
+					}
 				} else {
 					text = getVariableString(modVariable);
 				}
@@ -797,6 +804,7 @@
 			}
 			textUserDefinedParameters.setText(text);
 		}
+		activatePlatsimTab(activeEnvironment.getCurrentProduct());
 	}
 
 	private String getVariableString(UIVariable variable) {
@@ -924,7 +932,7 @@
 				}
 				if (!prop.containsKey(IMakerKeyConstants.TYPE))
 				{
-					StatusHandler.handle(IStatus.ERROR,"Unable to load image type from file "+file.getName()+". Invalid or corrupted IMP file.",null);	
+					StatusHandler.handle(IStatus.ERROR,"Unable to load image type from file "+file.getName()+". Invalid or corrupted IMP file. TYPE not given",null);	
 					tabsViewer.restoreSelection();
 					loadImakerFile(ProjectManager.NEW_ITEM);
 					return;
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/SettingsTab.java	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/SettingsTab.java	Wed Apr 28 13:50:48 2010 +0300
@@ -26,9 +26,11 @@
 import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.PlatformUI;
 
 import com.nokia.s60tools.imaker.IMakerKeyConstants;
 import com.nokia.s60tools.imaker.IMakerUtils;
+import com.nokia.s60tools.imaker.ImageFlasherHelpContextIDs;
 import com.nokia.s60tools.imaker.UIConfiguration;
 import com.nokia.s60tools.imaker.UIVariable;
 import com.nokia.s60tools.imaker.internal.model.ImakerProperties;
@@ -44,6 +46,7 @@
 
 	private Control createControl(CTabFolder parent) {
 		Composite top = new Composite(parent,SWT.NONE);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(top, ImageFlasherHelpContextIDs.IMAKERDIALOG_SETTINGSTAB);
 		settingsViewer = new SettingsViewer(top);
 		return top;
 	}
--- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/messages.properties	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/messages.properties	Wed Apr 28 13:50:48 2010 +0300
@@ -142,16 +142,30 @@
 FileTransferTab.8=Add File to Image
 DebugTab.0=Selected location (xxx) may not be in the selected targets on the main tab.
 DebugTab.1=Source file (xxx) doesn't exist!
-DebugTab.2=Add
+DebugTab.2=Add   
 DebugTab.3=Add new entry to the list
-DebugTab.4=Remove
+DebugTab.4=Remove 
 DebugTab.5=Remove selected item(s) 
-DebugTab.6=Populate
+DebugTab.6=Populate 
 DebugTab.7=Populate from the selected project
 DebugTab.8=Enable All
 DebugTab.9=Enable All items in the table
 DebugTab.10=Disable All
 DebugTab.11=Disable All items in the table
+DebugTab.12=!
+DebugTab.13=Problems
+DebugTab.14=Enable
+DebugTab.15=Enable selected component 
+DebugTab.16=File
+DebugTab.17=The source location of the component
+DebugTab.18=Target
+DebugTab.19=The target location on the device
+DebugTab.20=Location
+DebugTab.21=The image section
+DebugTab.22=Action
+DebugTab.23=The action to perform press F1 for more information
+DebugTab.24=Duplicate 
+DebugTab.25=Duplicate the selected component
 Error.0=iMaker Core was not found.
 Error.1=An error has occured while executing iMaker Core. Make sure that imaker.cmd can be run without problems.
 Error.2=Commandline tool imaker.cmd not found. Make sure that imaker.cmd is in the path environment variable.
--- a/imakerplugin/common.properties	Wed Apr 21 11:49:56 2010 +0300
+++ b/imakerplugin/common.properties	Wed Apr 28 13:50:48 2010 +0300
@@ -3,7 +3,7 @@
  *
  ****************************************************************************-->
 
-plugin.version       = 2.2.4
+plugin.version       = 3.1.0
 eclipse.home         = E:/APPS/Carbide.c_SYMSEE_layout_2.4.0_test
 plugin.lib           = lib
 plugin.dist.dir      = install