Merge branch 'master' of git://git.eclipse.org/gitroot/mylyn/org.eclipse.mylyn.reviews
diff --git a/org.eclipse.mylyn.reviews.frame.core/.classpath b/org.eclipse.mylyn.reviews.frame.core/.classpath
index 0215967..64c5e31 100644
--- a/org.eclipse.mylyn.reviews.frame.core/.classpath
+++ b/org.eclipse.mylyn.reviews.frame.core/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<classpath>

-	<classpathentry kind="src" path="src"/>

-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>

-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

-	<classpathentry kind="output" path="bin"/>

-</classpath>

+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.mylyn.reviews.frame.core/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.reviews.frame.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..4fa3936
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.frame.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Tue Feb 15 13:54:53 PST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/org.eclipse.mylyn.reviews.frame.core/META-INF/MANIFEST.MF b/org.eclipse.mylyn.reviews.frame.core/META-INF/MANIFEST.MF
index 61ad2c2..75db36f 100644
--- a/org.eclipse.mylyn.reviews.frame.core/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.reviews.frame.core/META-INF/MANIFEST.MF
@@ -7,10 +7,10 @@
 Bundle-Vendor: %providerName

 Bundle-Localization: plugin

 Bundle-RequiredExecutionEnvironment: J2SE-1.5

-Export-Package: org.eclipse.mylyn.reviews.frame.core.model,

- org.eclipse.mylyn.reviews.frame.core.model.impl,

- org.eclipse.mylyn.reviews.frame.core.model.util,

- org.eclipse.mylyn.reviews.frame.core.utils

+Export-Package: org.eclipse.mylyn.reviews.frame.core.model;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.frame.core.model.impl;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.frame.core.model.util;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.frame.core.utils;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.ui, org.eclipse.mylyn.reviews.r4e.core.tests"

 Require-Bundle: 

  org.eclipse.core.runtime;bundle-version="3.5.0",

  org.eclipse.emf.ecore;bundle-version="2.5.0"

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/.classpath b/org.eclipse.mylyn.reviews.r4e.core.tests/.classpath
index 617fb64..d7c742e 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/.classpath
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/.classpath
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<classpath>

-	<classpathentry kind="src" path="src"/>

-	<classpathentry kind="src" path="stubs"/>

-	<classpathentry kind="src" path="egitImport"/>

-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

-	<classpathentry kind="output" path="bin"/>

-</classpath>

+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="stubs"/>
+	<classpathentry kind="src" path="egitImport"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.reviews.r4e.core.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..08611d3
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Tue Feb 15 13:31:31 PST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/META-INF/MANIFEST.MF b/org.eclipse.mylyn.reviews.r4e.core.tests/META-INF/MANIFEST.MF
index 258ed9b..a2b6180 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/META-INF/MANIFEST.MF
@@ -7,12 +7,19 @@
 Bundle-Vendor: %providerName

 Bundle-Localization: plugin

 Bundle-RequiredExecutionEnvironment: J2SE-1.5

-Export-Package: org.eclipse.mylyn.reviews.r4e.core.model.tests

+Export-Package: org.eclipse.egit.core.test;x-internal:=true,

+ org.eclipse.mylyn.reviews.r4e.core;x-internal:=true,

+ org.eclipse.mylyn.reviews.r4e.core.model.impl;x-internal:=true,

+ org.eclipse.mylyn.reviews.r4e.core.model.serial;x-internal:=true,

+ org.eclipse.mylyn.reviews.r4e.core.model.serial.impl;x-internal:=true,

+ org.eclipse.mylyn.reviews.r4e.core.model.tests;x-internal:=true,

+ org.eclipse.mylyn.reviews.r4e.core.rfs;x-internal:=true,

+ org.eclipse.mylyn.reviews.r4e.core.utils.filePermission;x-internal:=true

 Require-Bundle: org.eclipse.core.runtime,

- org.eclipse.mylyn.reviews.r4e.core;visibility:=reexport,

- org.eclipse.mylyn.reviews.frame.core;visibility:=reexport,

- org.eclipse.emf.ecore.xmi;visibility:=reexport,

- org.junit4;visibility:=reexport,

+ org.eclipse.mylyn.reviews.r4e.core,

+ org.eclipse.mylyn.reviews.frame.core,

+ org.eclipse.emf.ecore.xmi,

+ org.junit4,

  org.apache.commons.io;bundle-version="1.4.0",

  org.eclipse.egit.core;bundle-version="0.10.1",

  org.eclipse.jgit;bundle-version="0.10.1",

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/egitImport/org/eclipse/egit/core/test/AdaptableFileTreeIteratorTest.java b/org.eclipse.mylyn.reviews.r4e.core.tests/egitImport/org/eclipse/egit/core/test/AdaptableFileTreeIteratorTest.java
index c4355a2..bc8a277 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/egitImport/org/eclipse/egit/core/test/AdaptableFileTreeIteratorTest.java
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/egitImport/org/eclipse/egit/core/test/AdaptableFileTreeIteratorTest.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (C) 2009, Tor Arne Vestbø <torarnv@gmail.com>
+ * Copyright (C) 2009, Tor Arne Vestbø <torarnv@gmail.com>
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/egitImport/org/eclipse/jgit/junit/MockSystemReader.java b/org.eclipse.mylyn.reviews.r4e.core.tests/egitImport/org/eclipse/jgit/junit/MockSystemReader.java
index 5c2e77f..b53dce2 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/egitImport/org/eclipse/jgit/junit/MockSystemReader.java
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/egitImport/org/eclipse/jgit/junit/MockSystemReader.java
@@ -45,39 +45,50 @@
 
 package org.eclipse.jgit.junit;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.TimeZone;
 
 import org.eclipse.jgit.errors.ConfigInvalidException;
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.storage.file.FileBasedConfig;
 import org.eclipse.jgit.util.FS;
 import org.eclipse.jgit.util.SystemReader;
 
 public class MockSystemReader extends SystemReader {
+	private final class MockConfig extends FileBasedConfig {
+		private MockConfig(File cfgLocation, FS fs) {
+			super(cfgLocation, fs);
+		}
+
+		@Override
+		public void load() throws IOException, ConfigInvalidException {
+			// Do nothing
+		}
+
+		@Override
+		public boolean isOutdated() {
+			return false;
+		}
+	}
+
 	final Map<String, String> values = new HashMap<String, String>();
 
 	FileBasedConfig userGitConfig;
 
+	FileBasedConfig systemGitConfig;
+
 	public MockSystemReader() {
 		init(Constants.OS_USER_NAME_KEY);
 		init(Constants.GIT_AUTHOR_NAME_KEY);
 		init(Constants.GIT_AUTHOR_EMAIL_KEY);
 		init(Constants.GIT_COMMITTER_NAME_KEY);
 		init(Constants.GIT_COMMITTER_EMAIL_KEY);
-		userGitConfig = new FileBasedConfig(null, null) {
-			@Override
-			public void load() throws IOException, ConfigInvalidException {
-				// Do nothing
-			}
-
-			@Override
-			public boolean isOutdated() {
-				return false;
-			}
-		};
+		userGitConfig = new MockConfig(null, null);
+		systemGitConfig = new MockConfig(null, null);
 	}
 
 	private void init(final String n) {
@@ -103,11 +114,18 @@
 	}
 
 	@Override
-	public FileBasedConfig openUserConfig(FS fs) {
+	public FileBasedConfig openUserConfig(Config parent, FS fs) {
+		assert parent == null || parent == systemGitConfig;
 		return userGitConfig;
 	}
 
 	@Override
+	public FileBasedConfig openSystemConfig(Config parent, FS fs) {
+		assert parent == null;
+		return systemGitConfig;
+	}
+
+	@Override
 	public String getHostname() {
 		return "fake.host.example.com";
 	}
@@ -121,4 +139,5 @@
 	public int getTimezone(long when) {
 		return TimeZone.getTimeZone("GMT-03:30").getOffset(when) / (60 * 1000);
 	}
+
 }
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/TstGeneral.java b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/TstGeneral.java
index a3de29b..896a5ec 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/TstGeneral.java
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/TstGeneral.java
@@ -28,8 +28,15 @@
 	public static final String	GROUP_PATH_STR			= "outGroupX";

 	public static final String	GOLDEN_GROUP_DIR_STR	= "stubs_model/" + GROUP_PATH_STR;

 	public static final String	GOLDEN_GROUP_FILE_STR	= GOLDEN_GROUP_DIR_STR + "/Golden_Group_group_root.xrer";

-

+	

+	//Windows specific

+	public static final String	GROUP_PATH_STRW			= "outGroupW";

+	public static final String	GOLDEN_GROUP_DIR_STRW	= "stubs_model/" + GROUP_PATH_STRW;

+	public static final String	GOLDEN_GROUP_FILE_STRW	= GOLDEN_GROUP_DIR_STRW + "/Golden_Group_group_root.xrer";

+	

+	

 	public static final URI		GOLDEN_GROUP_DIR		= URI.createFileURI(GOLDEN_GROUP_DIR_STR);

+	public static final URI		GOLDEN_GROUP_DIRW		= URI.createFileURI(GOLDEN_GROUP_DIR_STRW);

 	public static final URI		GOLDEN_GROUP_FILE		= URI.createFileURI(GOLDEN_GROUP_FILE_STR);

 

 	// ------------------------------------------------------------------------

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/serial/PersistenceTest.java b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/serial/PersistenceTest.java
index a6e34fe..5529556 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/serial/PersistenceTest.java
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/serial/PersistenceTest.java
@@ -70,14 +70,19 @@
 	 */

 	@Before

 	public void setUp() throws Exception {

-		fRootTestDir = new File(System.getProperty("java.io.tmpdir") + "r4eTst");

+		String base = System.getProperty("java.io.tmpdir");

+		if (!base.endsWith(File.separator)) {

+			base = base + File.separator;

+		}

+		

+		fRootTestDir = new File(base + "r4eTst");

 

 		// Resolve golden group storage dir

 		String rootFile = fGoldenGroup.lastSegment();

 		File goldenDir = new File(fGoldenGroup.trimSegments(1).devicePath());

 

 		// Take the directory name to be used as copy destination

-		String testDir = fRootTestDir.toString() + fSep + "OutL1" + fSep + "OutL2" + fSep + goldenDir.getName();

+		String testDir = fRootTestDir.toString() + "OutL1" + fSep + "OutL2" + fSep + goldenDir.getName();

 		fTestDir = new File(testDir);

 

 		// Determine the location of the group file in the destination folder

@@ -176,7 +181,7 @@
 	 * Testing writing permissions

 	 */

 	public void testReadWritePermissions() {

-		String dirName = fRootTestDir.toString() + fSep + "tFolder";

+		String dirName = fRootTestDir.toString() + "tFolder";

 		File tfolder = new File(dirName);

 		tfolder.mkdir();

 

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/serial/impl/CommonTest.java b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/serial/impl/CommonTest.java
index c7d3ab8..8012550 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/serial/impl/CommonTest.java
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/serial/impl/CommonTest.java
@@ -52,6 +52,9 @@
 		super(name);

 		fTmpDir = System.getProperty("java.io.tmpdir");

 		fSep = File.separator;

+		if (!fTmpDir.endsWith(File.separator)) {

+			fTmpDir = fTmpDir + fSep;

+		}

 	}

 

 	/**

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/tests/GoldenStubHandler.java b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/tests/GoldenStubHandler.java
index 0e335c0..7d77327 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/tests/GoldenStubHandler.java
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/tests/GoldenStubHandler.java
@@ -42,9 +42,8 @@
 	 */

 	protected R4EReviewGroup				fixture		= null;

 	private static final RModelFactoryExt	fFactory	= SerializeFactory.getModelExtension();

-	private static File						fGroupDir	= new File(System.getProperty("java.io.tmpdir")

-																+ TstGeneral.GROUP_PATH_STR + File.separator);

-	private static URI						fGroupPath	= URI.createFileURI(fGroupDir.getAbsolutePath());

+	private static File						fGroupDir	= null;

+	private static URI						fGroupPath	= null;

 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

@@ -89,9 +88,22 @@
 	 */

 	@Override

 	protected void setUp() throws Exception {

-		TstGeneral.activateTracer();

+		init();

 	}

 

+	private static  void init() {

+		TstGeneral.activateTracer();

+		//get a base temporary directory ending with file separator e.g. /tmp/

+		String basePath = System.getProperty("java.io.tmpdir");

+		if (!basePath.endsWith(File.separator)) {

+			//e.g. Linux

+			basePath = basePath + File.separator;

+		}

+		fGroupDir	= new File(basePath

+				+ TstGeneral.GROUP_PATH_STR + File.separator);

+		fGroupPath	= URI.createFileURI(fGroupDir.getAbsolutePath());		

+	}

+	

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

 	 * 

@@ -123,7 +135,11 @@
 		// NOTE: No Clean up, for creation of golden test stub

 	}

 

+

 	public static R4EReviewGroup serializeStub() throws ResourceHandlingException {

+		if (fGroupPath == null) {

+			init();

+		}

 		String groupPath = fGroupPath.devicePath();

 		String groupName = "Golden Group";

 

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/tests/R4EReviewGroupTest.java b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/tests/R4EReviewGroupTest.java
index d2e2b6a..d5e0f69 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/tests/R4EReviewGroupTest.java
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/model/tests/R4EReviewGroupTest.java
@@ -45,6 +45,7 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.R4EWriter;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.SerializeFactory;

+import org.eclipse.mylyn.reviews.r4e.core.utils.sys.OSPLATFORM;

 

 /**

  * <!-- begin-user-doc --> A test case for the model object '<em><b>R4E Review Group</b></em>'. <!-- end-user-doc -->

@@ -120,6 +121,9 @@
 	protected void setUp() throws Exception {

 		TstGeneral.activateTracer();

 		String baseDir = System.getProperty("java.io.tmpdir");

+		if (!baseDir.endsWith(File.separator)) {

+			baseDir = baseDir + File.separator;

+		}

 		fRootTestDir = new File(baseDir + fGroupPathStr + File.separator);

 		fGroupPath = URI.createFileURI(fRootTestDir.getAbsolutePath());

 	}

@@ -251,10 +255,16 @@
 		assertEquals(3, loadedGroup.getReviewsMap().size());

 		assertEquals(3, loadedGroup.getUserReviews().size());

 

+		//Select the golden file as per operating system

+		URI goldenDir = TstGeneral.GOLDEN_GROUP_DIR;

+		if (OSPLATFORM.TYPE.isWindowsOS()) {

+			goldenDir = TstGeneral.GOLDEN_GROUP_DIRW;

+		}

+		

 		// This check is done comparing the size only. to eliminate the changes from Id values e.g. equal size per id.

 		// good enough for the time being.

 		boolean same = TstGeneral.compareDirectories(new File(fGroupPath.devicePath()), new File(

-				TstGeneral.GOLDEN_GROUP_DIR.devicePath()));

+				goldenDir.devicePath()));

 

 		assertTrue("Contents differ from base directory", same);

 

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/rfs/ReviewsRepoTest.java b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/rfs/ReviewsRepoTest.java
new file mode 100644
index 0000000..cc4839f
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/rfs/ReviewsRepoTest.java
@@ -0,0 +1,115 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * Contributors:

+ *   Alvaro Sanchez-Leon - Initial Implementation

+ *******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.core.rfs;

+

+import static org.junit.Assert.fail;

+

+import java.io.File;

+import java.io.IOException;

+import java.io.InputStream;

+

+import junit.framework.TestCase;

+

+import org.apache.commons.io.FileUtils;

+import org.apache.commons.io.IOUtils;

+import org.eclipse.jgit.lib.ObjectId;

+import org.junit.After;

+import org.junit.Before;

+import org.junit.Test;

+

+public class ReviewsRepoTest {

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

+	String		fRootDir	= null;

+	ReviewsRFSProxy	fRepoProx		= null;

+

+	// ------------------------------------------------------------------------

+	// setUp and tearDown

+	// ------------------------------------------------------------------------

+	@Before

+	public void setUp() throws Exception {

+		fRootDir = System.getProperty("java.io.tmpdir");

+		if (!fRootDir.endsWith(File.separator)) {

+			fRootDir += File.separator;

+		}

+

+		// point to location

+		fRepoProx = new ReviewsRFSProxy(new File(fRootDir), true);

+	}

+

+	@After

+	public void tearDown() throws Exception {

+		// Remove repository

+		if (fRepoProx != null) {

+			File repoDir = fRepoProx.getRepository().getDirectory();

+			FileUtils.deleteDirectory(repoDir);

+			fRepoProx.close();

+		}

+	}

+

+	// ------------------------------------------------------------------------

+	// Test methods

+	// ------------------------------------------------------------------------

+	@Test

+	public void testRegisterReviewBlobByteArray() {

+		String strContent = new String("The Content");

+		byte[] content = strContent.getBytes();

+		ObjectId id = null;

+		InputStream is = null;

+		try {

+			id = fRepoProx.registerReviewBlob(content);

+			fRepoProx.registerReviewBlob(new String("The Content 2").getBytes());

+			is = fRepoProx.getBlobContent(null, id);

+		} catch (Exception e) {

+			e.printStackTrace();

+			fail("Exception");

+		}

+

+		TestCase.assertNotNull("blob stream is null", is);

+		try {

+			TestCase.assertEquals(strContent, IOUtils.toString(is));

+		} catch (IOException e) {

+			e.printStackTrace();

+			fail("Exception");

+		}

+	}

+

+	@Test

+	public void testGetRepoRegistry() {

+

+	}

+

+	@Test

+	public void testSwitchRepoRegistries() {

+

+	}

+

+	@Test

+	public void testGetRepoRegistryException() {

+

+	}

+

+	@Test

+	public void testGetBlobFromPackedRepo() {

+		fail("Not yet implemented");

+	}

+

+	@Test

+	public void testWrittePermissionSetting() {

+		fail("Not yet implemented");

+	}

+

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/versions/ReviewsVersionsIFTst.java b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/rfs/ReviewsVersionsIFTst.java
similarity index 91%
rename from org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/versions/ReviewsVersionsIFTst.java
rename to org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/rfs/ReviewsVersionsIFTst.java
index 39d3e76..a34cd56 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/versions/ReviewsVersionsIFTst.java
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/rfs/ReviewsVersionsIFTst.java
@@ -12,10 +12,7 @@
  *   Alvaro Sanchez-Leon - Initial Implementation

  *******************************************************************************/

 

-/**

- * 

- */

-package org.eclipse.mylyn.reviews.r4e.core.versions;

+package org.eclipse.mylyn.reviews.r4e.core.rfs;

 

 import static org.junit.Assert.fail;

 

@@ -42,8 +39,11 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.R4EItem;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EUser;

 import org.eclipse.mylyn.reviews.r4e.core.model.RModelFactory;

+import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewVersionsException;

+import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewsVersionsIF;

 import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewsVersionsIF.CommitDescriptor;

 import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewsVersionsIF.FileVersionInfo;

+import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewsVersionsIFFactory;

 import org.junit.After;

 import org.junit.Before;

 import org.junit.Test;

@@ -53,7 +53,9 @@
  * 

  */

 public class ReviewsVersionsIFTst extends GitTestCase {

-

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

 	private IProject			fIProject		= null;

 	private TestRepository		testRepo		= null;

 	private Repository			repo			= null;

@@ -63,6 +65,9 @@
 

 	private IFile				ifileB			= null;

 

+	// ------------------------------------------------------------------------

+	// Setup and Teardown

+	// ------------------------------------------------------------------------

 	/**

 	 * @throws java.lang.Exception

 	 */

@@ -105,6 +110,9 @@
 		super.tearDown();

 	}

 

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

 	/**

 	 * Test method for

 	 * {@link org.eclipse.mylyn.reviews.r4e.core.versions.impl.ReviewsVersionsIF#isProviderSupported(org.eclipse.core.resources.IProject)}

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/versions/TstGIT.java b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/rfs/TstGIT.java
similarity index 98%
rename from org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/versions/TstGIT.java
rename to org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/rfs/TstGIT.java
index 2c8a205..ff5cf39 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/versions/TstGIT.java
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/rfs/TstGIT.java
@@ -12,7 +12,7 @@
  *   Alvaro Sanchez-Leon - Initial Implementation

  *******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.core.versions;

+package org.eclipse.mylyn.reviews.r4e.core.rfs;

 

 

 import static org.eclipse.jgit.lib.Constants.HEAD;

@@ -250,6 +250,21 @@
 		System.out.println("Resource resolved: " + genURI.toString());

 	}

 

+	@Test

+	public void createRepository() {

+

+	}

+

+	@Test

+	public void insertObject() {

+

+	}

+

+	@Test

+	public void retrieveObject() {

+

+	}

+

 	// ------------------------------------------------------------------------

 	// Private methods

 	// ------------------------------------------------------------------------

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/utils/filePermission/OSPermissionTest.java b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/utils/filePermission/OSPermissionTest.java
index 7ab4693..de51f2c 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/utils/filePermission/OSPermissionTest.java
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/src/org/eclipse/mylyn/reviews/r4e/core/utils/filePermission/OSPermissionTest.java
@@ -20,6 +20,7 @@
 import junit.framework.TestCase;

 

 import org.apache.commons.io.FileUtils;

+import org.eclipse.mylyn.reviews.r4e.core.Activator;

 import org.eclipse.mylyn.reviews.r4e.core.TstGeneral;

 

 /**

@@ -41,7 +42,7 @@
 	 *

 	 * @see org.eclipse.mylyn.reviews.r4e.core.utils.filePermission.WindowPermission

 	 */

-	private WindowPermission winPerm = new WindowPermission();

+	private IFileSupportCommand perm = FileSupportCommandFactory.getInstance();

 

 	/**

 	 * Construct new test instance

@@ -80,13 +81,17 @@
 	 * Run the boolean changePermission(String) method test

 	 */

 	public void testChangePermission() {

-		// add test code here

-		String dirStr = System.getProperty("java.io.tmpdir") + "PermDirTest" + File.separator;

+		String base = System.getProperty("java.io.tmpdir");

+		if (!base.endsWith(File.separator)) {

+			base = base + File.separator;

+		}

+		

+		String dirStr = base + "PermDirTest" + File.separator;

 		File dir = new File(dirStr);

 		dir.mkdir();

 

 		try {

-			assertTrue(winPerm.grantWritePermission(dirStr));

+			assertTrue(perm.grantWritePermission(dirStr));

 		} catch (IOException e) {

 			e.printStackTrace();

 			fail("Exception");

@@ -99,6 +104,50 @@
 			fail("Exception");

 		}

 	}

+	

+	/**

+	 * Run the boolean changePermission(String) method test

+	 */

+	public void testChangePermissionFailed() {

+		// add test code here

+		String base =  System.getProperty("java.io.tmpdir");

+		if (!base.endsWith(File.separator)) {

+			base = base + File.separator;

+		}

+		String dirStr = base + "PermDirTest" + File.separator;

+		File dir = new File(dirStr);

+		dir.mkdir();

+

+		try {

+			assertFalse(perm.grantWritePermission(dirStr + "1"));

+		} catch (IOException e) {

+			Activator.fTracer.traceDebug("IOException received as expected, the directory does not exist");

+		}

+

+		try {

+			FileUtils.deleteDirectory(dir);

+		} catch (IOException e) {

+			e.printStackTrace();

+			fail("Exception");

+		}

+	}

+

+	// /**

+	// * File exist but not allowed to change it

+	// */

+	// public void testChangePermissionFailed2() {

+	// String dirStr = "Y:" + File.separator + "solaris";

+	//

+	// try {

+	// // pointing to a read only file/folder, permission denied

+	// assertFalse(perm.grantWritePermission(dirStr));

+	// // assertTrue(perm.grantWritePermission(dirStr));

+	// } catch (IOException e) {

+	// // no exception expected

+	// e.printStackTrace();

+	// fail("Exception");

+	// }

+	// }

 }

 

 /*$CPS$ This comment was generated by CodePro. Do not edit it.

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs/org/eclipse/mylyn/reviews/r4e/core/model/impl/GroupSampl.java b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs/org/eclipse/mylyn/reviews/r4e/core/model/impl/GroupSampl.java
index c332981..6594823 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs/org/eclipse/mylyn/reviews/r4e/core/model/impl/GroupSampl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs/org/eclipse/mylyn/reviews/r4e/core/model/impl/GroupSampl.java
@@ -119,7 +119,6 @@
 			Date startDate = indCal.getTime();

 			// 2 days after

 			Date endDate = new Date(startDate.getTime() + 2 * 24 * 60 * 60 * 1000);

-			review1.setCreationDate(startDate);

 			review1.setStartDate(startDate);

 			review1.setEndDate(endDate);

 		} catch (ResourceHandlingException e) {

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs/org/eclipse/mylyn/reviews/r4e/core/model/impl/ReviewSampl.java b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs/org/eclipse/mylyn/reviews/r4e/core/model/impl/ReviewSampl.java
index ee6305b..672c73a 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs/org/eclipse/mylyn/reviews/r4e/core/model/impl/ReviewSampl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs/org/eclipse/mylyn/reviews/r4e/core/model/impl/ReviewSampl.java
@@ -19,16 +19,19 @@
 

 import java.util.ArrayList;

 import java.util.Calendar;

+import java.util.Collection;

 import java.util.Date;

 import java.util.GregorianCalendar;

+import java.util.Iterator;

 import java.util.List;

 

 import org.eclipse.emf.common.util.EList;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyTextPosition;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EComment;

-import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentType;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EDecision;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EDelta;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext;

@@ -85,7 +88,6 @@
 		Date startDate = indCal.getTime();

 		// 2 days after

 		Date endDate = new Date(startDate.getTime() + 2 * 24 * 60 * 60 * 1000);

-		fReview.setCreationDate(startDate);

 		fReview.setStartDate(startDate);

 		fReview.setEndDate(endDate);

 

@@ -113,12 +115,19 @@
 		} catch (ResourceHandlingException e3) {

 			e3.printStackTrace();

 		}

-		participant.setSpentTime(60);

+		participant.getTimeLog().put(startDate, 30);

+		participant.getTimeLog().put(endDate, 30);

+

 		participant.setFocusArea("Performance");

 		participant.setIsPartOfDecision(true);

 		participant.getGroupPaths().add("c:/users/test/group1/");

 		participant.getGroupPaths().add("c:/users/test/group2/");

-		value += participant.getSpentTime();

+

+		Collection<Integer> userTimes = participant.getTimeLog().values();

+		for (Iterator<Integer> iterator = userTimes.iterator(); iterator.hasNext();) {

+			Integer time = iterator.next();

+			value += time;

+		}

 

 		R4EParticipant participant2 = null;

 		try {

@@ -126,13 +135,19 @@
 		} catch (ResourceHandlingException e2) {

 			e2.printStackTrace();

 		}

-		participant2.setSpentTime(60);

+		participant2.getTimeLog().put(startDate, 30);

+		participant2.getTimeLog().put(endDate, 30);

 		participant2.setFocusArea("Feature");

 		participant2.setIsPartOfDecision(true);

 		participant2.getGroupPaths().add("c:/group1/");

 		participant2.getGroupPaths().add("c:/group2/");

-		value += participant2.getSpentTime();

 		

+		userTimes = participant2.getTimeLog().values();

+		for (Iterator<Integer> iterator = userTimes.iterator(); iterator.hasNext();) {

+			Integer time = iterator.next();

+			value += time;

+		}

+

 		// Anomaly

 		R4EAnomaly anomalyP1 = createAnomalies(participant);

 		R4EAnomaly anomalyP2 = createAnomalies(participant2);

@@ -209,7 +224,7 @@
 		// Additional comments from two users on the same anomaly

 		// Comments

 		R4ECommentType commType = RModelFactory.eINSTANCE.createR4ECommentType();

-		commType.setType(R4ECommentEnum.R4E_COMMENT_BASE);

+		commType.setType(R4ECommentClass.R4E_CLASS_ERRONEOUS);

 		

 		// comment1

 		R4EComment comment1 = null;

@@ -243,25 +258,35 @@
 				participant.getId() + "-Item to review 22" };

 

 		R4EItem item;

+

+		Calendar indCal = new GregorianCalendar(1867, Calendar.JULY, 1);

+		Date submittedDate = indCal.getTime();

+

 		for (int i = 0; i < itemDescriptions.length; i++) {

 			try {

 				item = fResFactory.createR4EItem(participant);

 				item.setDescription(itemDescriptions[i]);

 				item.setRepositoryRef("repository ref.." + i);

 				item.getProjectURIs().add("platform:resource/projX" + i);

+				item.setAuthorRep("changeAuthor_" + i);

+				item.setSubmitted(submittedDate);

+

 				R4EFileContext context = fResFactory.createR4EFileContext(item);

+				context.setType(R4EContextType.R4E_ADDED);

 

 				R4EFileVersion fvBase = fResFactory.createR4EBaseFileVersion(context);

 				fvBase.setName("file_" + i);

 				fvBase.setRepositoryPath("root/folder_" + i);

 				fvBase.setPlatformURI("platform:/resource/proj/src/dir3/dir4/file.xxx");

 				fvBase.setVersionID(Integer.toString(itemDescriptions[i].hashCode()));

+				fvBase.setLocalVersionID("locIdB_1234_" + i);

 

 				R4EFileVersion fvTarget = fResFactory.createR4ETargetFileVersion(context);

 				fvTarget.setName("file_" + i);

 				fvTarget.setRepositoryPath("root/folder_" + i);

 				fvTarget.setPlatformURI("platform:/resource/proj/src/dir6/dir7/file.yyy");

 				fvTarget.setVersionID(Integer.toString(itemDescriptions[i].hashCode() + 1));

+				fvTarget.setLocalVersionID("locIdT_1234_" + i);

 

 				R4EDelta delta = fResFactory.createR4EDelta(context);

 

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Golden_Group_group_root.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Golden_Group_group_root.xrer
new file mode 100644
index 0000000..3a1311a
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Golden_Group_group_root.xrer
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="ASCII"?>

+<r4ecore:R4EReviewGroup xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_xxzSQERCEeC2DrmWDHmN2w" description="This is sample description - Group level" name="Golden Group" defaultEntryCriteria="-Entry Criteria" xmlVersion="1.0">

+  <reviewGroupTask xsi:type="r4ecore:R4ETaskReference" xmi:id="_x0s1QERCEeC2DrmWDHmN2w" taskId="324327" repositoryURL="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324327"/>

+  <availableProjects>P1</availableProjects>

+  <availableProjects>P2</availableProjects>

+  <availableProjects>P3</availableProjects>

+  <availableComponents>Component1</availableComponents>

+  <availableComponents>Component2</availableComponents>

+  <availableComponents>Component3</availableComponents>

+  <designRuleLocations xsi:nil="true"/>

+  <availableAnomalyTypes xmi:id="_x0uqcERCEeC2DrmWDHmN2w" type="Erroneous"/>

+  <availableAnomalyTypes xmi:id="_x0uqckRCEeC2DrmWDHmN2w" type="Superflous"/>

+  <availableAnomalyTypes xmi:id="_x0uqdERCEeC2DrmWDHmN2w" type="Improvement"/>

+  <availableAnomalyTypes xmi:id="_x0uqdkRCEeC2DrmWDHmN2w" type="Question"/>

+</r4ecore:R4EReviewGroup>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Jerry20_group_reviews.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Jerry20_group_reviews.xrer
new file mode 100644
index 0000000..ab5a188
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Jerry20_group_reviews.xrer
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="ASCII"?>

+<r4ecore:R4EUserReviews xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_x6UVEkRCEeC2DrmWDHmN2w" name="Jerry20">

+  <invitedToMap xmi:id="_x6UVFERCEeC2DrmWDHmN2w" key="ReviewSampl">

+    <value href="ReviewSampl/ReviewSampl_review.xrer#_x22KUERCEeC2DrmWDHmN2w"/>

+  </invitedToMap>

+  <invitedToMap xmi:id="_yD1dc0RCEeC2DrmWDHmN2w" key="ReviewTwo">

+    <value href="ReviewTwo/ReviewTwo_review.xrer#_yC9Ts0RCEeC2DrmWDHmN2w"/>

+  </invitedToMap>

+  <group href="Golden_Group_group_root.xrer#_xxzSQERCEeC2DrmWDHmN2w"/>

+</r4ecore:R4EUserReviews>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Review1/Review1_review.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Review1/Review1_review.xrer
new file mode 100644
index 0000000..70587c2
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Review1/Review1_review.xrer
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="ASCII"?>

+<r4ecore:R4EReview xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_x0yU0ERCEeC2DrmWDHmN2w" name="Review1" startDate="1867-07-01T00:00:00.000-0500" endDate="1867-07-03T00:00:00.000-0500">

+  <state xsi:type="r4ecore:R4EReviewState" xmi:id="_x2N4MERCEeC2DrmWDHmN2w"/>

+  <createdBy href="lmcalvs_comments.xrer#_x02mQURCEeC2DrmWDHmN2w"/>

+</r4ecore:R4EReview>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Review1/lmcalvs_comments.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Review1/lmcalvs_comments.xrer
new file mode 100644
index 0000000..177e1cf
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Review1/lmcalvs_comments.xrer
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="ASCII"?>

+<r4ecore:R4EParticipant xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_x02mQURCEeC2DrmWDHmN2w" id="lmcalvs" reviewCreatedByMe="true">

+  <reviewInstance href="Review1_review.xrer#_x0yU0ERCEeC2DrmWDHmN2w"/>

+  <roles>R4E_ROLE_ORGANIZER</roles>

+</r4ecore:R4EParticipant>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/Jerry20_comments.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/Jerry20_comments.xrer
new file mode 100644
index 0000000..788b580
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/Jerry20_comments.xrer
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ASCII"?>

+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

+  <r4ecore:R4EParticipant xmi:id="_x6UVEURCEeC2DrmWDHmN2w" id="Jerry20" sequenceIDCounter="15" focusArea="Feature" isPartOfDecision="true">

+    <addedComments href="#_x78swERCEeC2DrmWDHmN2w"/>

+    <addedComments href="#_x8TSEERCEeC2DrmWDHmN2w"/>

+    <addedComments href="#_x8YKkURCEeC2DrmWDHmN2w"/>

+    <addedItems href="Jerry20_items.xrer#_yAWroERCEeC2DrmWDHmN2w"/>

+    <addedItems href="Jerry20_items.xrer#_yA9voURCEeC2DrmWDHmN2w"/>

+    <addedItems href="Jerry20_items.xrer#_yBmo0URCEeC2DrmWDHmN2w"/>

+    <addedItems href="Jerry20_items.xrer#_yCRXMERCEeC2DrmWDHmN2w"/>

+    <reviewInstance href="ReviewSampl_review.xrer#_x22KUERCEeC2DrmWDHmN2w"/>

+    <roles>R4E_ROLE_LEAD</roles>

+    <timeLog xmi:id="_x7ahQERCEeC2DrmWDHmN2w" key="1867-07-01T00:00:00.000-0500" value="30"/>

+    <timeLog xmi:id="_x7bIUERCEeC2DrmWDHmN2w" key="1867-07-03T00:00:00.000-0500" value="30"/>

+  </r4ecore:R4EParticipant>

+  <r4ecore:R4EAnomaly xmi:id="_x78swERCEeC2DrmWDHmN2w" user="_x6UVEURCEeC2DrmWDHmN2w" description="Jerry20- Anomaly text here ....." title="This is sample Title - Anomaly" createdOn="1867-07-11T00:00:00.000-0500">

+    <location xsi:type="r4ecore:R4ETextContent" href="#_x7-h8ERCEeC2DrmWDHmN2w"/>

+    <id xmi:id="_x78swURCEeC2DrmWDHmN2w" sequenceID="1" userID="Jerry20"/>

+  </r4ecore:R4EAnomaly>

+  <r4ecore:R4ETextContent xmi:id="_x7-h8ERCEeC2DrmWDHmN2w" info="Write any information here">

+    <location href="#_x8DacERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4EAnomalyTextPosition xmi:id="_x8DacERCEeC2DrmWDHmN2w" startPosition="1230" length="40" startLine="50" endLine="100">

+    <file href="#_x8HE0ERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EAnomalyTextPosition>

+  <r4ecore:R4EFileVersion xmi:id="_x8HE0ERCEeC2DrmWDHmN2w" platformURI="platform:/resource/projName/src/dir1/dir2" versionID="8" repositoryPath="/Dir1/Dir2" name="R4ETestFile"/>

+  <r4ecore:R4EComment xmi:id="_x8TSEERCEeC2DrmWDHmN2w" user="_x6UVEURCEeC2DrmWDHmN2w" description="This is test comment number 1" createdOn="2011-03-01T15:30:43.121-0500">

+    <id xmi:id="_x8T5IERCEeC2DrmWDHmN2w" sequenceID="2" userID="Jerry20"/>

+    <anomaly href="Tom10_comments.xrer#_x7h2AERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EComment>

+  <r4ecore:R4EComment xmi:id="_x8YKkURCEeC2DrmWDHmN2w" user="_x6UVEURCEeC2DrmWDHmN2w" description="This is test comment number 2" createdOn="2011-03-01T15:30:43.129-0500">

+    <type xsi:type="r4ecore:R4ECommentType" xmi:id="_x8YKkERCEeC2DrmWDHmN2w"/>

+    <id xmi:id="_x8YKkkRCEeC2DrmWDHmN2w" sequenceID="3" userID="Jerry20"/>

+    <anomaly href="Tom10_comments.xrer#_x7h2AERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EComment>

+</xmi:XMI>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/Jerry20_items.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/Jerry20_items.xrer
new file mode 100644
index 0000000..be92dab
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/Jerry20_items.xrer
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="ASCII"?>

+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

+  <r4ecore:R4EItem xmi:id="_yAWroERCEeC2DrmWDHmN2w" description="Jerry20-Item to review 11" addedById="Jerry20" repositoryRef="repository ref..0" authorRep="changeAuthor_0" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_yAWroURCEeC2DrmWDHmN2w" sequenceID="4" userID="Jerry20"/>

+    <addedBy href="Jerry20_comments.xrer#_x6UVEURCEeC2DrmWDHmN2w"/>

+    <review href="ReviewSampl_review.xrer#_x22KUERCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_yArbwERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX0</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_yArbwERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_yArbwURCEeC2DrmWDHmN2w" sequenceID="5" userID="Jerry20"/>

+    <deltas href="#_yAw7UURCEeC2DrmWDHmN2w"/>

+    <base href="#_yAt4AERCEeC2DrmWDHmN2w"/>

+    <target href="#_yAvtMERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_yAt4AERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019327" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdB_1234_0"/>

+  <r4ecore:R4EFileVersion xmi:id="_yAvtMERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019328" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdT_1234_0"/>

+  <r4ecore:R4EDelta xmi:id="_yAw7UURCEeC2DrmWDHmN2w">

+    <id xmi:id="_yAw7UkRCEeC2DrmWDHmN2w" sequenceID="6" userID="Jerry20"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_yAywgERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_yA43IERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_yAywgERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_yA0lsERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yA0lsERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_yA43IERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yA6sUERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yA6sUERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+  <r4ecore:R4EItem xmi:id="_yA9voURCEeC2DrmWDHmN2w" description="Jerry20-Item to review 12" addedById="Jerry20" repositoryRef="repository ref..1" authorRep="changeAuthor_1" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_yA9vokRCEeC2DrmWDHmN2w" sequenceID="7" userID="Jerry20"/>

+    <addedBy href="Jerry20_comments.xrer#_x6UVEURCEeC2DrmWDHmN2w"/>

+    <review href="ReviewSampl_review.xrer#_x22KUERCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_yBIHsERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX1</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_yBIHsERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_yBIHsURCEeC2DrmWDHmN2w" sequenceID="8" userID="Jerry20"/>

+    <deltas href="#_yBTG0URCEeC2DrmWDHmN2w"/>

+    <base href="#_yBLyEERCEeC2DrmWDHmN2w"/>

+    <target href="#_yBQqkERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_yBLyEERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019328" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdB_1234_1"/>

+  <r4ecore:R4EFileVersion xmi:id="_yBQqkERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019329" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdT_1234_1"/>

+  <r4ecore:R4EDelta xmi:id="_yBTG0URCEeC2DrmWDHmN2w">

+    <id xmi:id="_yBTG0kRCEeC2DrmWDHmN2w" sequenceID="9" userID="Jerry20"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_yBU8AERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_yBbCoERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_yBU8AERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_yBXYQERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yBXYQERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_yBbCoERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yBjlgERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yBjlgERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+  <r4ecore:R4EItem xmi:id="_yBmo0URCEeC2DrmWDHmN2w" description="Jerry20-Item to review 21" addedById="Jerry20" repositoryRef="repository ref..2" authorRep="changeAuthor_2" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_yBmo0kRCEeC2DrmWDHmN2w" sequenceID="10" userID="Jerry20"/>

+    <addedBy href="Jerry20_comments.xrer#_x6UVEURCEeC2DrmWDHmN2w"/>

+    <review href="ReviewSampl_review.xrer#_x22KUERCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_yBsvcERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX2</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_yBsvcERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_yBtWgERCEeC2DrmWDHmN2w" sequenceID="11" userID="Jerry20"/>

+    <deltas href="#_yB7Y8URCEeC2DrmWDHmN2w"/>

+    <base href="#_yBvLsERCEeC2DrmWDHmN2w"/>

+    <target href="#_yBzdIERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_yBvLsERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019358" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdB_1234_2"/>

+  <r4ecore:R4EFileVersion xmi:id="_yBzdIERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019359" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdT_1234_2"/>

+  <r4ecore:R4EDelta xmi:id="_yB7Y8URCEeC2DrmWDHmN2w">

+    <id xmi:id="_yB7Y8kRCEeC2DrmWDHmN2w" sequenceID="12" userID="Jerry20"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_yCFJ8ERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_yCL3oERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_yCFJ8ERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_yCHmMERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yCHmMERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_yCL3oERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yCOT4ERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yCOT4ERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+  <r4ecore:R4EItem xmi:id="_yCRXMERCEeC2DrmWDHmN2w" description="Jerry20-Item to review 22" addedById="Jerry20" repositoryRef="repository ref..3" authorRep="changeAuthor_3" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_yCRXMURCEeC2DrmWDHmN2w" sequenceID="13" userID="Jerry20"/>

+    <addedBy href="Jerry20_comments.xrer#_x6UVEURCEeC2DrmWDHmN2w"/>

+    <review href="ReviewSampl_review.xrer#_x22KUERCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_yCW2wERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX3</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_yCW2wERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_yCXd0ERCEeC2DrmWDHmN2w" sequenceID="14" userID="Jerry20"/>

+    <deltas href="#_yCic8URCEeC2DrmWDHmN2w"/>

+    <base href="#_yCZ6EERCEeC2DrmWDHmN2w"/>

+    <target href="#_yCeLgERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_yCZ6EERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019359" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdB_1234_3"/>

+  <r4ecore:R4EFileVersion xmi:id="_yCeLgERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019360" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdT_1234_3"/>

+  <r4ecore:R4EDelta xmi:id="_yCic8URCEeC2DrmWDHmN2w">

+    <id xmi:id="_yCic8kRCEeC2DrmWDHmN2w" sequenceID="15" userID="Jerry20"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_yCqYwERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_yCxtgERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_yCqYwERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_yCtcEERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yCtcEERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_yCxtgERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yC3NEERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yC3NEERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+</xmi:XMI>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/ReviewSampl_review.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/ReviewSampl_review.xrer
new file mode 100644
index 0000000..6c82db6
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/ReviewSampl_review.xrer
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ASCII"?>

+<r4ecore:R4EReview xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_x22KUERCEeC2DrmWDHmN2w" name="ReviewSampl" project="P1" entryCriteria="Sample Entry Cryteria" extraNotes="Sample extra notes" objectives="Sample Objectives" referenceMaterial="sample reference material" startDate="1867-07-01T00:00:00.000-0500" endDate="1867-07-03T00:00:00.000-0500" type="R4E_REVIEW_TYPE_INFORMAL">

+  <reviewTask xsi:type="r4ecore:R4ETaskReference" xmi:id="_yC9TskRCEeC2DrmWDHmN2w" taskId="324328" repositoryURL="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324328"/>

+  <state xsi:type="r4ecore:R4EReviewState" xmi:id="_yC9TsURCEeC2DrmWDHmN2w" state="R4E_REVIEW_PHASE_PREPARATION"/>

+  <components>Component1</components>

+  <decision xmi:id="_yC9TsERCEeC2DrmWDHmN2w" spentTime="120" value="R4E_REVIEW_DECISION_ACCEPTED"/>

+  <createdBy href="Tom10_comments.xrer#_x22xYERCEeC2DrmWDHmN2w"/>

+</r4ecore:R4EReview>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/Tom10_comments.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/Tom10_comments.xrer
new file mode 100644
index 0000000..3fdcbea
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/Tom10_comments.xrer
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ASCII"?>

+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

+  <r4ecore:R4EParticipant xmi:id="_x22xYERCEeC2DrmWDHmN2w" id="Tom10" sequenceIDCounter="15" reviewCreatedByMe="true" focusArea="Performance" isPartOfDecision="true">

+    <addedComments href="#_x7h2AERCEeC2DrmWDHmN2w"/>

+    <addedComments href="#_x8LWQERCEeC2DrmWDHmN2w"/>

+    <addedComments href="#_x8PAoURCEeC2DrmWDHmN2w"/>

+    <addedItems href="Tom10_items.xrer#_x8jwwURCEeC2DrmWDHmN2w"/>

+    <addedItems href="Tom10_items.xrer#_x9pV4URCEeC2DrmWDHmN2w"/>

+    <addedItems href="Tom10_items.xrer#_x-QZ4URCEeC2DrmWDHmN2w"/>

+    <addedItems href="Tom10_items.xrer#_x_RtkURCEeC2DrmWDHmN2w"/>

+    <reviewInstance href="ReviewSampl_review.xrer#_x22KUERCEeC2DrmWDHmN2w"/>

+    <roles>R4E_ROLE_ORGANIZER</roles>

+    <roles>R4E_ROLE_LEAD</roles>

+    <timeLog xmi:id="_x6Sf4ERCEeC2DrmWDHmN2w" key="1867-07-01T00:00:00.000-0500" value="30"/>

+    <timeLog xmi:id="_x6Sf4URCEeC2DrmWDHmN2w" key="1867-07-03T00:00:00.000-0500" value="30"/>

+  </r4ecore:R4EParticipant>

+  <r4ecore:R4EAnomaly xmi:id="_x7h2AERCEeC2DrmWDHmN2w" user="_x22xYERCEeC2DrmWDHmN2w" description="Tom10- Anomaly text here ....." title="This is sample Title - Anomaly" createdOn="1867-07-11T00:00:00.000-0500">

+    <location xsi:type="r4ecore:R4ETextContent" href="#_x7s1IERCEeC2DrmWDHmN2w"/>

+    <id xmi:id="_x7k5UERCEeC2DrmWDHmN2w" sequenceID="1" userID="Tom10"/>

+  </r4ecore:R4EAnomaly>

+  <r4ecore:R4ETextContent xmi:id="_x7s1IERCEeC2DrmWDHmN2w" info="Write any information here">

+    <location href="#_x7yUsERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4EAnomalyTextPosition xmi:id="_x7yUsERCEeC2DrmWDHmN2w" startPosition="1230" length="40" startLine="50" endLine="100">

+    <file href="#_x74bUERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EAnomalyTextPosition>

+  <r4ecore:R4EFileVersion xmi:id="_x74bUERCEeC2DrmWDHmN2w" platformURI="platform:/resource/projName/src/dir1/dir2" versionID="8" repositoryPath="/Dir1/Dir2" name="R4ETestFile"/>

+  <r4ecore:R4EComment xmi:id="_x8LWQERCEeC2DrmWDHmN2w" user="_x22xYERCEeC2DrmWDHmN2w" description="This is test comment number 1" createdOn="2011-03-01T15:30:43.108-0500">

+    <id xmi:id="_x8L9UERCEeC2DrmWDHmN2w" sequenceID="2" userID="Tom10"/>

+    <anomaly href="Jerry20_comments.xrer#_x78swERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EComment>

+  <r4ecore:R4EComment xmi:id="_x8PAoURCEeC2DrmWDHmN2w" user="_x22xYERCEeC2DrmWDHmN2w" description="This is test comment number 2" createdOn="2011-03-01T15:30:43.114-0500">

+    <type xsi:type="r4ecore:R4ECommentType" xmi:id="_x8PAoERCEeC2DrmWDHmN2w"/>

+    <id xmi:id="_x8PAokRCEeC2DrmWDHmN2w" sequenceID="3" userID="Tom10"/>

+    <anomaly href="Jerry20_comments.xrer#_x78swERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EComment>

+</xmi:XMI>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/Tom10_items.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/Tom10_items.xrer
new file mode 100644
index 0000000..3d95d8e
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewSampl/Tom10_items.xrer
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="ASCII"?>

+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

+  <r4ecore:R4EItem xmi:id="_x8jwwURCEeC2DrmWDHmN2w" description="Tom10-Item to review 11" addedById="Tom10" repositoryRef="repository ref..0" authorRep="changeAuthor_0" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_x8jwwkRCEeC2DrmWDHmN2w" sequenceID="4" userID="Tom10"/>

+    <addedBy href="Tom10_comments.xrer#_x22xYERCEeC2DrmWDHmN2w"/>

+    <review href="ReviewSampl_review.xrer#_x22KUERCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_x9BDwERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX0</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_x9BDwERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_x9Bq0ERCEeC2DrmWDHmN2w" sequenceID="5" userID="Tom10"/>

+    <deltas href="#_x9Lb0URCEeC2DrmWDHmN2w"/>

+    <base href="#_x9DgAERCEeC2DrmWDHmN2w"/>

+    <target href="#_x9GjUERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_x9DgAERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978412" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdB_1234_0"/>

+  <r4ecore:R4EFileVersion xmi:id="_x9GjUERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978411" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdT_1234_0"/>

+  <r4ecore:R4EDelta xmi:id="_x9Lb0URCEeC2DrmWDHmN2w">

+    <id xmi:id="_x9Lb0kRCEeC2DrmWDHmN2w" sequenceID="6" userID="Tom10"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_x9Vz4ERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_x9j2UERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_x9Vz4ERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_x9haEERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_x9haEERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_x9j2UERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_x9lrgERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_x9lrgERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+  <r4ecore:R4EItem xmi:id="_x9pV4URCEeC2DrmWDHmN2w" description="Tom10-Item to review 12" addedById="Tom10" repositoryRef="repository ref..1" authorRep="changeAuthor_1" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_x9pV4kRCEeC2DrmWDHmN2w" sequenceID="7" userID="Tom10"/>

+    <addedBy href="Tom10_comments.xrer#_x22xYERCEeC2DrmWDHmN2w"/>

+    <review href="ReviewSampl_review.xrer#_x22KUERCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_x91jIERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX1</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_x91jIERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_x91jIURCEeC2DrmWDHmN2w" sequenceID="8" userID="Tom10"/>

+    <deltas href="#_x9-GAURCEeC2DrmWDHmN2w"/>

+    <base href="#_x950kERCEeC2DrmWDHmN2w"/>

+    <target href="#_x97pwERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_x950kERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978411" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdB_1234_1"/>

+  <r4ecore:R4EFileVersion xmi:id="_x97pwERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978410" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdT_1234_1"/>

+  <r4ecore:R4EDelta xmi:id="_x9-GAURCEeC2DrmWDHmN2w">

+    <id xmi:id="_x9-GAkRCEeC2DrmWDHmN2w" sequenceID="9" userID="Tom10"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_x-BwYERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_x-JsMERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_x-BwYERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_x-GB0ERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_x-GB0ERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_x-JsMERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_x-MvgERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_x-MvgERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+  <r4ecore:R4EItem xmi:id="_x-QZ4URCEeC2DrmWDHmN2w" description="Tom10-Item to review 21" addedById="Tom10" repositoryRef="repository ref..2" authorRep="changeAuthor_2" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_x-QZ4kRCEeC2DrmWDHmN2w" sequenceID="10" userID="Tom10"/>

+    <addedBy href="Tom10_comments.xrer#_x22xYERCEeC2DrmWDHmN2w"/>

+    <review href="ReviewSampl_review.xrer#_x22KUERCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_x-V5cERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX2</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_x-V5cERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_x-V5cURCEeC2DrmWDHmN2w" sequenceID="11" userID="Tom10"/>

+    <deltas href="#_x-u7AURCEeC2DrmWDHmN2w"/>

+    <base href="#_x-Zj0ERCEeC2DrmWDHmN2w"/>

+    <target href="#_x-ecUERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_x-Zj0ERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978381" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdB_1234_2"/>

+  <r4ecore:R4EFileVersion xmi:id="_x-ecUERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978380" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdT_1234_2"/>

+  <r4ecore:R4EDelta xmi:id="_x-u7AURCEeC2DrmWDHmN2w">

+    <id xmi:id="_x-u7AkRCEeC2DrmWDHmN2w" sequenceID="12" userID="Tom10"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_x-0akERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_x_E5QERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_x-0akERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_x--yoERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_x--yoERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_x_E5QERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_x_H8kERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_x_H8kERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+  <r4ecore:R4EItem xmi:id="_x_RtkURCEeC2DrmWDHmN2w" description="Tom10-Item to review 22" addedById="Tom10" repositoryRef="repository ref..3" authorRep="changeAuthor_3" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_x_RtkkRCEeC2DrmWDHmN2w" sequenceID="13" userID="Tom10"/>

+    <addedBy href="Tom10_comments.xrer#_x22xYERCEeC2DrmWDHmN2w"/>

+    <review href="ReviewSampl_review.xrer#_x22KUERCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_x_XNIERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX3</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_x_XNIERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_x_XNIURCEeC2DrmWDHmN2w" sequenceID="14" userID="Tom10"/>

+    <deltas href="#_x_kBcURCEeC2DrmWDHmN2w"/>

+    <base href="#_x_cssERCEeC2DrmWDHmN2w"/>

+    <target href="#_x_fwAERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_x_cssERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978380" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdB_1234_3"/>

+  <r4ecore:R4EFileVersion xmi:id="_x_fwAERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978379" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdT_1234_3"/>

+  <r4ecore:R4EDelta xmi:id="_x_kBcURCEeC2DrmWDHmN2w">

+    <id xmi:id="_x_kBckRCEeC2DrmWDHmN2w" sequenceID="15" userID="Tom10"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_x_mdsERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_x_5_sERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_x_mdsERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_x_uZgERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_x_uZgERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_x_5_sERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yAOv0ERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yAOv0ERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+</xmi:XMI>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/Jerry20_comments.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/Jerry20_comments.xrer
new file mode 100644
index 0000000..14b8487
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/Jerry20_comments.xrer
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ASCII"?>

+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

+  <r4ecore:R4EParticipant xmi:id="_yD1dckRCEeC2DrmWDHmN2w" id="Jerry20" sequenceIDCounter="15" focusArea="Feature" isPartOfDecision="true">

+    <addedComments href="#_yEoHoERCEeC2DrmWDHmN2w"/>

+    <addedComments href="#_yFC-YERCEeC2DrmWDHmN2w"/>

+    <addedComments href="#_yFGBsURCEeC2DrmWDHmN2w"/>

+    <addedItems href="Jerry20_items.xrer#_yH-9oURCEeC2DrmWDHmN2w"/>

+    <addedItems href="Jerry20_items.xrer#_yIod4URCEeC2DrmWDHmN2w"/>

+    <addedItems href="Jerry20_items.xrer#_yI5joURCEeC2DrmWDHmN2w"/>

+    <addedItems href="Jerry20_items.xrer#_yJW2oERCEeC2DrmWDHmN2w"/>

+    <reviewInstance href="ReviewTwo_review.xrer#_yC9Ts0RCEeC2DrmWDHmN2w"/>

+    <roles>R4E_ROLE_LEAD</roles>

+    <timeLog xmi:id="_yEe9sERCEeC2DrmWDHmN2w" key="1867-07-01T00:00:00.000-0500" value="30"/>

+    <timeLog xmi:id="_yEe9sURCEeC2DrmWDHmN2w" key="1867-07-03T00:00:00.000-0500" value="30"/>

+  </r4ecore:R4EParticipant>

+  <r4ecore:R4EAnomaly xmi:id="_yEoHoERCEeC2DrmWDHmN2w" user="_yD1dckRCEeC2DrmWDHmN2w" description="Jerry20- Anomaly text here ....." title="This is sample Title - Anomaly" createdOn="1867-07-11T00:00:00.000-0500">

+    <location xsi:type="r4ecore:R4ETextContent" href="#_yEp80ERCEeC2DrmWDHmN2w"/>

+    <id xmi:id="_yEoHoURCEeC2DrmWDHmN2w" sequenceID="1" userID="Jerry20"/>

+  </r4ecore:R4EAnomaly>

+  <r4ecore:R4ETextContent xmi:id="_yEp80ERCEeC2DrmWDHmN2w" info="Write any information here">

+    <location href="#_yEuOQERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4EAnomalyTextPosition xmi:id="_yEuOQERCEeC2DrmWDHmN2w" startPosition="1230" length="40" startLine="50" endLine="100">

+    <file href="#_yE0U4ERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EAnomalyTextPosition>

+  <r4ecore:R4EFileVersion xmi:id="_yE0U4ERCEeC2DrmWDHmN2w" platformURI="platform:/resource/projName/src/dir1/dir2" versionID="8" repositoryPath="/Dir1/Dir2" name="R4ETestFile"/>

+  <r4ecore:R4EComment xmi:id="_yFC-YERCEeC2DrmWDHmN2w" user="_yD1dckRCEeC2DrmWDHmN2w" description="This is test comment number 1" createdOn="2011-03-01T15:30:44.038-0500">

+    <id xmi:id="_yFC-YURCEeC2DrmWDHmN2w" sequenceID="2" userID="Jerry20"/>

+    <anomaly href="Tom10_comments.xrer#_yEe9skRCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EComment>

+  <r4ecore:R4EComment xmi:id="_yFGBsURCEeC2DrmWDHmN2w" user="_yD1dckRCEeC2DrmWDHmN2w" description="This is test comment number 2" createdOn="2011-03-01T15:30:44.043-0500">

+    <type xsi:type="r4ecore:R4ECommentType" xmi:id="_yFGBsERCEeC2DrmWDHmN2w"/>

+    <id xmi:id="_yFGBskRCEeC2DrmWDHmN2w" sequenceID="3" userID="Jerry20"/>

+    <anomaly href="Tom10_comments.xrer#_yEe9skRCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EComment>

+</xmi:XMI>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/Jerry20_items.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/Jerry20_items.xrer
new file mode 100644
index 0000000..307de7f
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/Jerry20_items.xrer
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="ASCII"?>

+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

+  <r4ecore:R4EItem xmi:id="_yH-9oURCEeC2DrmWDHmN2w" description="Jerry20-Item to review 11" addedById="Jerry20" repositoryRef="repository ref..0" authorRep="changeAuthor_0" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_yH-9okRCEeC2DrmWDHmN2w" sequenceID="4" userID="Jerry20"/>

+    <addedBy href="Jerry20_comments.xrer#_yD1dckRCEeC2DrmWDHmN2w"/>

+    <review href="ReviewTwo_review.xrer#_yC9Ts0RCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_yIabcERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX0</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_yIabcERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_yIabcURCEeC2DrmWDHmN2w" sequenceID="5" userID="Jerry20"/>

+    <deltas href="#_yIes4URCEeC2DrmWDHmN2w"/>

+    <base href="#_yIbpkERCEeC2DrmWDHmN2w"/>

+    <target href="#_yIdewERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_yIbpkERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019327" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdB_1234_0"/>

+  <r4ecore:R4EFileVersion xmi:id="_yIdewERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019328" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdT_1234_0"/>

+  <r4ecore:R4EDelta xmi:id="_yIes4URCEeC2DrmWDHmN2w">

+    <id xmi:id="_yIes4kRCEeC2DrmWDHmN2w" sequenceID="6" userID="Jerry20"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_yIhJIERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_yIkzgERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_yIhJIERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_yIi-UERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yIi-UERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_yIkzgERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yImosERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yImosERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+  <r4ecore:R4EItem xmi:id="_yIod4URCEeC2DrmWDHmN2w" description="Jerry20-Item to review 12" addedById="Jerry20" repositoryRef="repository ref..1" authorRep="changeAuthor_1" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_yIod4kRCEeC2DrmWDHmN2w" sequenceID="7" userID="Jerry20"/>

+    <addedBy href="Jerry20_comments.xrer#_yD1dckRCEeC2DrmWDHmN2w"/>

+    <review href="ReviewTwo_review.xrer#_yC9Ts0RCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_yIsIQERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX1</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_yIsIQERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_yIsIQURCEeC2DrmWDHmN2w" sequenceID="8" userID="Jerry20"/>

+    <deltas href="#_yIxAwURCEeC2DrmWDHmN2w"/>

+    <base href="#_yIt9cERCEeC2DrmWDHmN2w"/>

+    <target href="#_yIvLkERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_yIt9cERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019328" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdB_1234_1"/>

+  <r4ecore:R4EFileVersion xmi:id="_yIvLkERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019329" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdT_1234_1"/>

+  <r4ecore:R4EDelta xmi:id="_yIxAwURCEeC2DrmWDHmN2w">

+    <id xmi:id="_yIxAwkRCEeC2DrmWDHmN2w" sequenceID="9" userID="Jerry20"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_yIy18ERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_yI15QERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_yIy18ERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_yI0rIERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yI0rIERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_yI15QERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yI4VgERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yI4VgERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+  <r4ecore:R4EItem xmi:id="_yI5joURCEeC2DrmWDHmN2w" description="Jerry20-Item to review 21" addedById="Jerry20" repositoryRef="repository ref..2" authorRep="changeAuthor_2" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_yI5jokRCEeC2DrmWDHmN2w" sequenceID="10" userID="Jerry20"/>

+    <addedBy href="Jerry20_comments.xrer#_yD1dckRCEeC2DrmWDHmN2w"/>

+    <review href="ReviewTwo_review.xrer#_yC9Ts0RCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_yI9OAERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX2</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_yI9OAERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_yI9OAURCEeC2DrmWDHmN2w" sequenceID="11" userID="Jerry20"/>

+    <deltas href="#_yJEiwURCEeC2DrmWDHmN2w"/>

+    <base href="#_yI_qQERCEeC2DrmWDHmN2w"/>

+    <target href="#_yJCGgERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_yI_qQERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019358" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdB_1234_2"/>

+  <r4ecore:R4EFileVersion xmi:id="_yJCGgERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019359" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdT_1234_2"/>

+  <r4ecore:R4EDelta xmi:id="_yJEiwURCEeC2DrmWDHmN2w">

+    <id xmi:id="_yJEiwkRCEeC2DrmWDHmN2w" sequenceID="12" userID="Jerry20"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_yJG_AERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_yJMekERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_yJG_AERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_yJKCUERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yJKCUERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_yJMekERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yJR-IERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yJR-IERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+  <r4ecore:R4EItem xmi:id="_yJW2oERCEeC2DrmWDHmN2w" description="Jerry20-Item to review 22" addedById="Jerry20" repositoryRef="repository ref..3" authorRep="changeAuthor_3" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_yJW2oURCEeC2DrmWDHmN2w" sequenceID="13" userID="Jerry20"/>

+    <addedBy href="Jerry20_comments.xrer#_yD1dckRCEeC2DrmWDHmN2w"/>

+    <review href="ReviewTwo_review.xrer#_yC9Ts0RCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_yJcWMERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX3</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_yJcWMERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_yJc9QERCEeC2DrmWDHmN2w" sequenceID="14" userID="Jerry20"/>

+    <deltas href="#_yJqYoURCEeC2DrmWDHmN2w"/>

+    <base href="#_yJgnoERCEeC2DrmWDHmN2w"/>

+    <target href="#_yJjq8ERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_yJgnoERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019359" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdB_1234_3"/>

+  <r4ecore:R4EFileVersion xmi:id="_yJjq8ERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019360" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdT_1234_3"/>

+  <r4ecore:R4EDelta xmi:id="_yJqYoURCEeC2DrmWDHmN2w">

+    <id xmi:id="_yJqYokRCEeC2DrmWDHmN2w" sequenceID="15" userID="Jerry20"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_yJuqEERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_yJ1-0ERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_yJuqEERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_yJyUcERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yJyUcERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_yJ1-0ERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yJ5pMERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yJ5pMERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+</xmi:XMI>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/ReviewTwo_review.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/ReviewTwo_review.xrer
new file mode 100644
index 0000000..3f6d18d
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/ReviewTwo_review.xrer
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ASCII"?>

+<r4ecore:R4EReview xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_yC9Ts0RCEeC2DrmWDHmN2w" name="ReviewTwo" project="P1" entryCriteria="Sample Entry Cryteria" extraNotes="Sample extra notes" objectives="Sample Objectives" referenceMaterial="sample reference material" startDate="1867-07-01T00:00:00.000-0500" endDate="1867-07-03T00:00:00.000-0500" type="R4E_REVIEW_TYPE_INFORMAL">

+  <reviewTask xsi:type="r4ecore:R4ETaskReference" xmi:id="_yKAW4kRCEeC2DrmWDHmN2w" taskId="324328" repositoryURL="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324328"/>

+  <state xsi:type="r4ecore:R4EReviewState" xmi:id="_yKAW4URCEeC2DrmWDHmN2w" state="R4E_REVIEW_PHASE_PREPARATION"/>

+  <components>Component1</components>

+  <decision xmi:id="_yKAW4ERCEeC2DrmWDHmN2w" spentTime="120" value="R4E_REVIEW_DECISION_ACCEPTED"/>

+  <createdBy href="Tom10_comments.xrer#_yC96wURCEeC2DrmWDHmN2w"/>

+</r4ecore:R4EReview>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/Tom10_comments.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/Tom10_comments.xrer
new file mode 100644
index 0000000..cdf9d55
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/Tom10_comments.xrer
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ASCII"?>

+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

+  <r4ecore:R4EParticipant xmi:id="_yC96wURCEeC2DrmWDHmN2w" id="Tom10" sequenceIDCounter="15" reviewCreatedByMe="true" focusArea="Performance" isPartOfDecision="true">

+    <addedComments href="#_yEe9skRCEeC2DrmWDHmN2w"/>

+    <addedComments href="#_yE5NYERCEeC2DrmWDHmN2w"/>

+    <addedComments href="#_yE_UAURCEeC2DrmWDHmN2w"/>

+    <addedItems href="Tom10_items.xrer#_yFJFAURCEeC2DrmWDHmN2w"/>

+    <addedItems href="Tom10_items.xrer#_yF8WQURCEeC2DrmWDHmN2w"/>

+    <addedItems href="Tom10_items.xrer#_yGxcsURCEeC2DrmWDHmN2w"/>

+    <addedItems href="Tom10_items.xrer#_yHaV4URCEeC2DrmWDHmN2w"/>

+    <reviewInstance href="ReviewTwo_review.xrer#_yC9Ts0RCEeC2DrmWDHmN2w"/>

+    <roles>R4E_ROLE_ORGANIZER</roles>

+    <roles>R4E_ROLE_LEAD</roles>

+    <timeLog xmi:id="_yD02YERCEeC2DrmWDHmN2w" key="1867-07-01T00:00:00.000-0500" value="30"/>

+    <timeLog xmi:id="_yD1dcERCEeC2DrmWDHmN2w" key="1867-07-03T00:00:00.000-0500" value="30"/>

+  </r4ecore:R4EParticipant>

+  <r4ecore:R4EAnomaly xmi:id="_yEe9skRCEeC2DrmWDHmN2w" user="_yC96wURCEeC2DrmWDHmN2w" description="Tom10- Anomaly text here ....." title="This is sample Title - Anomaly" createdOn="1867-07-11T00:00:00.000-0500">

+    <location xsi:type="r4ecore:R4ETextContent" href="#_yEjPIERCEeC2DrmWDHmN2w"/>

+    <id xmi:id="_yEe9s0RCEeC2DrmWDHmN2w" sequenceID="1" userID="Tom10"/>

+  </r4ecore:R4EAnomaly>

+  <r4ecore:R4ETextContent xmi:id="_yEjPIERCEeC2DrmWDHmN2w" info="Write any information here">

+    <location href="#_yElEUERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4EAnomalyTextPosition xmi:id="_yElEUERCEeC2DrmWDHmN2w" startPosition="1230" length="40" startLine="50" endLine="100">

+    <file href="#_yEm5gERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EAnomalyTextPosition>

+  <r4ecore:R4EFileVersion xmi:id="_yEm5gERCEeC2DrmWDHmN2w" platformURI="platform:/resource/projName/src/dir1/dir2" versionID="8" repositoryPath="/Dir1/Dir2" name="R4ETestFile"/>

+  <r4ecore:R4EComment xmi:id="_yE5NYERCEeC2DrmWDHmN2w" user="_yC96wURCEeC2DrmWDHmN2w" description="This is test comment number 1" createdOn="2011-03-01T15:30:44.022-0500">

+    <id xmi:id="_yE5NYURCEeC2DrmWDHmN2w" sequenceID="2" userID="Tom10"/>

+    <anomaly href="Jerry20_comments.xrer#_yEoHoERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EComment>

+  <r4ecore:R4EComment xmi:id="_yE_UAURCEeC2DrmWDHmN2w" user="_yC96wURCEeC2DrmWDHmN2w" description="This is test comment number 2" createdOn="2011-03-01T15:30:44.032-0500">

+    <type xsi:type="r4ecore:R4ECommentType" xmi:id="_yE_UAERCEeC2DrmWDHmN2w"/>

+    <id xmi:id="_yE_7EERCEeC2DrmWDHmN2w" sequenceID="3" userID="Tom10"/>

+    <anomaly href="Jerry20_comments.xrer#_yEoHoERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EComment>

+</xmi:XMI>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/Tom10_items.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/Tom10_items.xrer
new file mode 100644
index 0000000..82e9df1
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/ReviewTwo/Tom10_items.xrer
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="ASCII"?>

+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

+  <r4ecore:R4EItem xmi:id="_yFJFAURCEeC2DrmWDHmN2w" description="Tom10-Item to review 11" addedById="Tom10" repositoryRef="repository ref..0" authorRep="changeAuthor_0" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_yFJFAkRCEeC2DrmWDHmN2w" sequenceID="4" userID="Tom10"/>

+    <addedBy href="Tom10_comments.xrer#_yC96wURCEeC2DrmWDHmN2w"/>

+    <review href="ReviewTwo_review.xrer#_yC9Ts0RCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_yFhfgERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX0</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_yFhfgERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_yFhfgURCEeC2DrmWDHmN2w" sequenceID="5" userID="Tom10"/>

+    <deltas href="#_yFm_EURCEeC2DrmWDHmN2w"/>

+    <base href="#_yFjUsERCEeC2DrmWDHmN2w"/>

+    <target href="#_yFlJ4ERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_yFjUsERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978412" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdB_1234_0"/>

+  <r4ecore:R4EFileVersion xmi:id="_yFlJ4ERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978411" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdT_1234_0"/>

+  <r4ecore:R4EDelta xmi:id="_yFm_EURCEeC2DrmWDHmN2w">

+    <id xmi:id="_yFnmIERCEeC2DrmWDHmN2w" sequenceID="6" userID="Tom10"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_yFqCYERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_yFwwEERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_yFqCYERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_yFu64ERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yFu64ERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_yFwwEERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yF2PoERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yF2PoERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+  <r4ecore:R4EItem xmi:id="_yF8WQURCEeC2DrmWDHmN2w" description="Tom10-Item to review 12" addedById="Tom10" repositoryRef="repository ref..1" authorRep="changeAuthor_1" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_yF8WQkRCEeC2DrmWDHmN2w" sequenceID="7" userID="Tom10"/>

+    <addedBy href="Tom10_comments.xrer#_yC96wURCEeC2DrmWDHmN2w"/>

+    <review href="ReviewTwo_review.xrer#_yC9Ts0RCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_yGDrAERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX1</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_yGDrAERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_yGDrAURCEeC2DrmWDHmN2w" sequenceID="8" userID="Tom10"/>

+    <deltas href="#_yGPRMURCEeC2DrmWDHmN2w"/>

+    <base href="#_yGIjgERCEeC2DrmWDHmN2w"/>

+    <target href="#_yGLm0ERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_yGIjgERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978411" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdB_1234_1"/>

+  <r4ecore:R4EFileVersion xmi:id="_yGLm0ERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978410" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdT_1234_1"/>

+  <r4ecore:R4EDelta xmi:id="_yGPRMURCEeC2DrmWDHmN2w">

+    <id xmi:id="_yGPRMkRCEeC2DrmWDHmN2w" sequenceID="9" userID="Tom10"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_yGRGYERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_yGrWEERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_yGRGYERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_yGl2gERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yGl2gERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_yGrWEERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yGtLQERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yGtLQERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+  <r4ecore:R4EItem xmi:id="_yGxcsURCEeC2DrmWDHmN2w" description="Tom10-Item to review 21" addedById="Tom10" repositoryRef="repository ref..2" authorRep="changeAuthor_2" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_yGxcskRCEeC2DrmWDHmN2w" sequenceID="10" userID="Tom10"/>

+    <addedBy href="Tom10_comments.xrer#_yC96wURCEeC2DrmWDHmN2w"/>

+    <review href="ReviewTwo_review.xrer#_yC9Ts0RCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_yG2VMERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX2</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_yG2VMERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_yG2VMURCEeC2DrmWDHmN2w" sequenceID="11" userID="Tom10"/>

+    <deltas href="#_yHMTcURCEeC2DrmWDHmN2w"/>

+    <base href="#_yG-RAERCEeC2DrmWDHmN2w"/>

+    <target href="#_yHGM0ERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_yG-RAERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978381" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdB_1234_2"/>

+  <r4ecore:R4EFileVersion xmi:id="_yHGM0ERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978380" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdT_1234_2"/>

+  <r4ecore:R4EDelta xmi:id="_yHMTcURCEeC2DrmWDHmN2w">

+    <id xmi:id="_yHMTckRCEeC2DrmWDHmN2w" sequenceID="12" userID="Tom10"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_yHPWwERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_yHWEcERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_yHPWwERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_yHRzAERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yHRzAERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_yHWEcERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yHYgsERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yHYgsERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+  <r4ecore:R4EItem xmi:id="_yHaV4URCEeC2DrmWDHmN2w" description="Tom10-Item to review 22" addedById="Tom10" repositoryRef="repository ref..3" authorRep="changeAuthor_3" submitted="1867-07-01T00:00:00.000-0500">

+    <id xmi:id="_yHaV4kRCEeC2DrmWDHmN2w" sequenceID="13" userID="Tom10"/>

+    <addedBy href="Tom10_comments.xrer#_yC96wURCEeC2DrmWDHmN2w"/>

+    <review href="ReviewTwo_review.xrer#_yC9Ts0RCEeC2DrmWDHmN2w"/>

+    <fileContextList href="#_yHhDkERCEeC2DrmWDHmN2w"/>

+    <ProjectURIs>platform:resource/projX3</ProjectURIs>

+  </r4ecore:R4EItem>

+  <r4ecore:R4EFileContext xmi:id="_yHhDkERCEeC2DrmWDHmN2w" type="R4E_ADDED">

+    <id xmi:id="_yHhDkURCEeC2DrmWDHmN2w" sequenceID="14" userID="Tom10"/>

+    <deltas href="#_yHqNgURCEeC2DrmWDHmN2w"/>

+    <base href="#_yHlVAERCEeC2DrmWDHmN2w"/>

+    <target href="#_yHnxQERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EFileContext>

+  <r4ecore:R4EFileVersion xmi:id="_yHlVAERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978380" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdB_1234_3"/>

+  <r4ecore:R4EFileVersion xmi:id="_yHnxQERCEeC2DrmWDHmN2w" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978379" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdT_1234_3"/>

+  <r4ecore:R4EDelta xmi:id="_yHqNgURCEeC2DrmWDHmN2w">

+    <id xmi:id="_yHqNgkRCEeC2DrmWDHmN2w" sequenceID="15" userID="Tom10"/>

+    <base xsi:type="r4ecore:R4ETextContent" href="#_yHue8ERCEeC2DrmWDHmN2w"/>

+    <target xsi:type="r4ecore:R4ETextContent" href="#_yH6FIERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4EDelta>

+  <r4ecore:R4ETextContent xmi:id="_yHue8ERCEeC2DrmWDHmN2w" info="information for base content" content="base content">

+    <location href="#_yHw7MERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yHw7MERCEeC2DrmWDHmN2w" startPosition="200" length="50" startLine="10" endLine="20"/>

+  <r4ecore:R4ETextContent xmi:id="_yH6FIERCEeC2DrmWDHmN2w" info="information for target content" content="target content">

+    <location href="#_yH8hYERCEeC2DrmWDHmN2w"/>

+  </r4ecore:R4ETextContent>

+  <r4ecore:R4ETextPosition xmi:id="_yH8hYERCEeC2DrmWDHmN2w" startPosition="300" length="100" startLine="30" endLine="40"/>

+</xmi:XMI>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Tom10_group_reviews.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Tom10_group_reviews.xrer
new file mode 100644
index 0000000..a6b7642
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/Tom10_group_reviews.xrer
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="ASCII"?>

+<r4ecore:R4EUserReviews xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_x22xYURCEeC2DrmWDHmN2w" name="Tom10">

+  <invitedToMap xmi:id="_x22xY0RCEeC2DrmWDHmN2w" key="ReviewSampl">

+    <value href="ReviewSampl/ReviewSampl_review.xrer#_x22KUERCEeC2DrmWDHmN2w"/>

+  </invitedToMap>

+  <invitedToMap xmi:id="_yC96wkRCEeC2DrmWDHmN2w" key="ReviewTwo">

+    <value href="ReviewTwo/ReviewTwo_review.xrer#_yC9Ts0RCEeC2DrmWDHmN2w"/>

+  </invitedToMap>

+  <group href="Golden_Group_group_root.xrer#_xxzSQERCEeC2DrmWDHmN2w"/>

+  <createdReviews>ReviewSampl</createdReviews>

+  <createdReviews>ReviewTwo</createdReviews>

+</r4ecore:R4EUserReviews>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/lmcalvs_group_reviews.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/lmcalvs_group_reviews.xrer
new file mode 100644
index 0000000..9a5ab0f
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupW/lmcalvs_group_reviews.xrer
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ASCII"?>

+<r4ecore:R4EUserReviews xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_x030YERCEeC2DrmWDHmN2w" name="lmcalvs">

+  <invitedToMap xmi:id="_x04bcURCEeC2DrmWDHmN2w" key="Review1">

+    <value href="Review1/Review1_review.xrer#_x0yU0ERCEeC2DrmWDHmN2w"/>

+  </invitedToMap>

+  <group href="Golden_Group_group_root.xrer#_xxzSQERCEeC2DrmWDHmN2w"/>

+  <createdReviews>Review1</createdReviews>

+</r4ecore:R4EUserReviews>

diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Golden_Group_group_root.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Golden_Group_group_root.xrer
index 32c3cb6..67834af 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Golden_Group_group_root.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Golden_Group_group_root.xrer
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="ASCII"?>

-<r4ecore:R4EReviewGroup xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_lYvKYS52EeCvo9WHavBoFQ" description="This is sample description - Group level" name="Golden Group" defaultEntryCriteria="-Entry Criteria" xmlVersion="1.0">

-  <reviewGroupTask xsi:type="r4ecore:R4ETaskReference" xmi:id="_lc4qkC52EeCvo9WHavBoFQ" taskId="324327" repositoryURL="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324327"/>

-  <availableProjects>P1</availableProjects>

-  <availableProjects>P2</availableProjects>

-  <availableProjects>P3</availableProjects>

-  <availableComponents>Component1</availableComponents>

-  <availableComponents>Component2</availableComponents>

-  <availableComponents>Component3</availableComponents>

-  <designRuleLocations xsi:nil="true"/>

-  <availableAnomalyTypes xmi:id="_lc7t4C52EeCvo9WHavBoFQ" type="Erroneous"/>

-  <availableAnomalyTypes xmi:id="_lc8U8S52EeCvo9WHavBoFQ" type="Superflous"/>

-  <availableAnomalyTypes xmi:id="_lc8U8y52EeCvo9WHavBoFQ" type="Improvement"/>

-  <availableAnomalyTypes xmi:id="_lc8U9S52EeCvo9WHavBoFQ" type="Question"/>

-</r4ecore:R4EReviewGroup>

+<?xml version="1.0" encoding="ASCII"?>
+<r4ecore:R4EReviewGroup xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_UQxKYERPEeC0spkCnDexvg" description="This is sample description - Group level" name="Golden Group" defaultEntryCriteria="-Entry Criteria" xmlVersion="1.0">
+  <reviewGroupTask xsi:type="r4ecore:R4ETaskReference" xmi:id="_ozavEERPEeC0spkCnDexvg" taskId="324327" repositoryURL="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324327"/>
+  <availableProjects>P1</availableProjects>
+  <availableProjects>P2</availableProjects>
+  <availableProjects>P3</availableProjects>
+  <availableComponents>Component1</availableComponents>
+  <availableComponents>Component2</availableComponents>
+  <availableComponents>Component3</availableComponents>
+  <designRuleLocations xsi:nil="true"/>
+  <availableAnomalyTypes xmi:id="_ozj5AERPEeC0spkCnDexvg" type="Erroneous"/>
+  <availableAnomalyTypes xmi:id="_ozlHIURPEeC0spkCnDexvg" type="Superflous"/>
+  <availableAnomalyTypes xmi:id="_ozlHI0RPEeC0spkCnDexvg" type="Improvement"/>
+  <availableAnomalyTypes xmi:id="_ozlHJURPEeC0spkCnDexvg" type="Question"/>
+</r4ecore:R4EReviewGroup>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Jerry20_group_reviews.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Jerry20_group_reviews.xrer
index 26d256c..03cc06b 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Jerry20_group_reviews.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Jerry20_group_reviews.xrer
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="ASCII"?>

-<r4ecore:R4EUserReviews xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_lfWvwi52EeCvo9WHavBoFQ" name="Jerry20">

-  <invitedToMap xmi:id="_lfWvxC52EeCvo9WHavBoFQ" key="ReviewSampl">

-    <value href="ReviewSampl/ReviewSampl_review.xrer#_leUN8C52EeCvo9WHavBoFQ"/>

-  </invitedToMap>

-  <invitedToMap xmi:id="_lpGhoS52EeCvo9WHavBoFQ" key="ReviewTwo">

-    <value href="ReviewTwo/ReviewTwo_review.xrer#_loVFky52EeCvo9WHavBoFQ"/>

-  </invitedToMap>

-  <group href="Golden_Group_group_root.xrer#_lYvKYS52EeCvo9WHavBoFQ"/>

-</r4ecore:R4EUserReviews>

+<?xml version="1.0" encoding="ASCII"?>
+<r4ecore:R4EUserReviews xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_o_mw8kRPEeC0spkCnDexvg" name="Jerry20">
+  <invitedToMap xmi:id="_o_mw9ERPEeC0spkCnDexvg" key="ReviewSampl">
+    <value href="ReviewSampl/ReviewSampl_review.xrer#_o6x7UERPEeC0spkCnDexvg"/>
+  </invitedToMap>
+  <invitedToMap xmi:id="_pLWG5ERPEeC0spkCnDexvg" key="ReviewTwo">
+    <value href="ReviewTwo/ReviewTwo_review.xrer#_pI3aoERPEeC0spkCnDexvg"/>
+  </invitedToMap>
+  <group href="Golden_Group_group_root.xrer#_UQxKYERPEeC0spkCnDexvg"/>
+</r4ecore:R4EUserReviews>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Review1/Review1_review.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Review1/Review1_review.xrer
index 575c165..ddd7031 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Review1/Review1_review.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Review1/Review1_review.xrer
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="ASCII"?>

-<r4ecore:R4EReview xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_lc_YQC52EeCvo9WHavBoFQ" name="Review1" creationDate="1867-07-01T00:00:00.000-0500" startDate="1867-07-01T00:00:00.000-0500" endDate="1867-07-03T00:00:00.000-0500">

-  <state xsi:type="r4ecore:R4EReviewState" xmi:id="_ldpfkC52EeCvo9WHavBoFQ"/>

-  <createdBy href="lmcalvs_comments.xrer#_ldEQwS52EeCvo9WHavBoFQ"/>

-</r4ecore:R4EReview>

+<?xml version="1.0" encoding="ASCII"?>
+<r4ecore:R4EReview xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_ozvfMERPEeC0spkCnDexvg" name="Review1" startDate="1867-07-01T00:00:00.000-0500" endDate="1867-07-03T00:00:00.000-0500">
+  <state xsi:type="r4ecore:R4EReviewState" xmi:id="_o3kPQERPEeC0spkCnDexvg"/>
+  <createdBy href="lmcalvs_comments.xrer#_oz8TgURPEeC0spkCnDexvg"/>
+</r4ecore:R4EReview>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Review1/lmcalvs_comments.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Review1/lmcalvs_comments.xrer
index 1b5e828..4ccafe8 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Review1/lmcalvs_comments.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Review1/lmcalvs_comments.xrer
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="ASCII"?>

-<r4ecore:R4EParticipant xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_ldEQwS52EeCvo9WHavBoFQ" id="lmcalvs" reviewCreatedByMe="true">

-  <reviewInstance href="Review1_review.xrer#_lc_YQC52EeCvo9WHavBoFQ"/>

-  <roles>R4E_ROLE_ORGANIZER</roles>

-</r4ecore:R4EParticipant>

+<?xml version="1.0" encoding="ASCII"?>
+<r4ecore:R4EParticipant xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_oz8TgURPEeC0spkCnDexvg" id="lmcalvs" reviewCreatedByMe="true">
+  <reviewInstance href="Review1_review.xrer#_ozvfMERPEeC0spkCnDexvg"/>
+  <roles>R4E_ROLE_ORGANIZER</roles>
+</r4ecore:R4EParticipant>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Jerry20_comments.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Jerry20_comments.xrer
index 263edfb..2045b50 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Jerry20_comments.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Jerry20_comments.xrer
@@ -1,34 +1,36 @@
-<?xml version="1.0" encoding="ASCII"?>

-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

-  <r4ecore:R4EParticipant xmi:id="_lfWvwS52EeCvo9WHavBoFQ" id="Jerry20" sequenceIDCounter="15" spentTime="60" focusArea="Feature" isPartOfDecision="true">

-    <addedComments href="#_lgdjAC52EeCvo9WHavBoFQ"/>

-    <addedComments href="#_lg62AC52EeCvo9WHavBoFQ"/>

-    <addedComments href="#_lg95US52EeCvo9WHavBoFQ"/>

-    <addedItems href="Jerry20_items.xrer#_lk5-IS52EeCvo9WHavBoFQ"/>

-    <addedItems href="Jerry20_items.xrer#_ll41kS52EeCvo9WHavBoFQ"/>

-    <addedItems href="Jerry20_items.xrer#_lm3tAS52EeCvo9WHavBoFQ"/>

-    <addedItems href="Jerry20_items.xrer#_lnn68S52EeCvo9WHavBoFQ"/>

-    <reviewInstance href="ReviewSampl_review.xrer#_leUN8C52EeCvo9WHavBoFQ"/>

-    <roles>R4E_ROLE_LEAD</roles>

-  </r4ecore:R4EParticipant>

-  <r4ecore:R4EAnomaly xmi:id="_lgdjAC52EeCvo9WHavBoFQ" user="_lfWvwS52EeCvo9WHavBoFQ" description="Jerry20- Anomaly text here ....." title="This is sample Title - Anomaly" createdOn="1867-07-11T00:00:00.000-0500">

-    <location xsi:type="r4ecore:R4ETextContent" href="#_lgh0cC52EeCvo9WHavBoFQ"/>

-    <id xmi:id="_lgdjAS52EeCvo9WHavBoFQ" sequenceID="1" userID="Jerry20"/>

-  </r4ecore:R4EAnomaly>

-  <r4ecore:R4ETextContent xmi:id="_lgh0cC52EeCvo9WHavBoFQ" info="Write any information here">

-    <location href="#_lgmF4C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4EAnomalyTextPosition xmi:id="_lgmF4C52EeCvo9WHavBoFQ" startPosition="1230" length="40" startLine="50" endLine="100">

-    <file href="#_lgpwQC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EAnomalyTextPosition>

-  <r4ecore:R4EFileVersion xmi:id="_lgpwQC52EeCvo9WHavBoFQ" platformURI="platform:/resource/projName/src/dir1/dir2" versionID="8" repositoryPath="/Dir1/Dir2" name="R4ETestFile"/>

-  <r4ecore:R4EComment xmi:id="_lg62AC52EeCvo9WHavBoFQ" user="_lfWvwS52EeCvo9WHavBoFQ" description="This is test comment number 1" createdOn="2011-02-01T21:46:07.968-0500">

-    <id xmi:id="_lg62AS52EeCvo9WHavBoFQ" sequenceID="2" userID="Jerry20"/>

-    <anomaly href="Tom10_comments.xrer#_lgHkwC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EComment>

-  <r4ecore:R4EComment xmi:id="_lg95US52EeCvo9WHavBoFQ" user="_lfWvwS52EeCvo9WHavBoFQ" description="This is test comment number 2" createdOn="2011-02-01T21:46:07.973-0500">

-    <type xsi:type="r4ecore:R4ECommentType" xmi:id="_lg95UC52EeCvo9WHavBoFQ"/>

-    <id xmi:id="_lg95Ui52EeCvo9WHavBoFQ" sequenceID="3" userID="Jerry20"/>

-    <anomaly href="Tom10_comments.xrer#_lgHkwC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EComment>

-</xmi:XMI>

+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">
+  <r4ecore:R4EParticipant xmi:id="_o_mw8URPEeC0spkCnDexvg" id="Jerry20" sequenceIDCounter="15" focusArea="Feature" isPartOfDecision="true">
+    <addedComments href="#_pDNekERPEeC0spkCnDexvg"/>
+    <addedComments href="#_pDekUERPEeC0spkCnDexvg"/>
+    <addedComments href="#_pDgZgURPEeC0spkCnDexvg"/>
+    <addedItems href="Jerry20_items.xrer#_pF_s0URPEeC0spkCnDexvg"/>
+    <addedItems href="Jerry20_items.xrer#_pH6YYURPEeC0spkCnDexvg"/>
+    <addedItems href="Jerry20_items.xrer#_pIEJYURPEeC0spkCnDexvg"/>
+    <addedItems href="Jerry20_items.xrer#_pIausERPEeC0spkCnDexvg"/>
+    <reviewInstance href="ReviewSampl_review.xrer#_o6x7UERPEeC0spkCnDexvg"/>
+    <roles>R4E_ROLE_LEAD</roles>
+    <timeLog xmi:id="_pCTfoERPEeC0spkCnDexvg" key="1867-07-01T00:00:00.000-0500" value="30"/>
+    <timeLog xmi:id="_pCTfoURPEeC0spkCnDexvg" key="1867-07-03T00:00:00.000-0500" value="30"/>
+  </r4ecore:R4EParticipant>
+  <r4ecore:R4EAnomaly xmi:id="_pDNekERPEeC0spkCnDexvg" user="_o_mw8URPEeC0spkCnDexvg" description="Jerry20- Anomaly text here ....." title="This is sample Title - Anomaly" createdOn="1867-07-11T00:00:00.000-0500">
+    <location xsi:type="r4ecore:R4ETextContent" href="#_pDOssERPEeC0spkCnDexvg"/>
+    <id xmi:id="_pDNekURPEeC0spkCnDexvg" sequenceID="1" userID="Jerry20"/>
+  </r4ecore:R4EAnomaly>
+  <r4ecore:R4ETextContent xmi:id="_pDOssERPEeC0spkCnDexvg" info="Write any information here">
+    <location href="#_pDPTwERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4EAnomalyTextPosition xmi:id="_pDPTwERPEeC0spkCnDexvg" startPosition="1230" length="40" startLine="50" endLine="100">
+    <file href="#_pDP60ERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EAnomalyTextPosition>
+  <r4ecore:R4EFileVersion xmi:id="_pDP60ERPEeC0spkCnDexvg" platformURI="platform:/resource/projName/src/dir1/dir2" versionID="8" repositoryPath="/Dir1/Dir2" name="R4ETestFile"/>
+  <r4ecore:R4EComment xmi:id="_pDekUERPEeC0spkCnDexvg" user="_o_mw8URPEeC0spkCnDexvg" description="This is test comment number 1" createdOn="2011-03-01T17:02:46.933-0500">
+    <id xmi:id="_pDekUURPEeC0spkCnDexvg" sequenceID="2" userID="Jerry20"/>
+    <anomaly href="Tom10_comments.xrer#_pCpd4ERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EComment>
+  <r4ecore:R4EComment xmi:id="_pDgZgURPEeC0spkCnDexvg" user="_o_mw8URPEeC0spkCnDexvg" description="This is test comment number 2" createdOn="2011-03-01T17:02:46.936-0500">
+    <type xsi:type="r4ecore:R4ECommentType" xmi:id="_pDgZgERPEeC0spkCnDexvg"/>
+    <id xmi:id="_pDgZgkRPEeC0spkCnDexvg" sequenceID="3" userID="Jerry20"/>
+    <anomaly href="Tom10_comments.xrer#_pCpd4ERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EComment>
+</xmi:XMI>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Jerry20_items.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Jerry20_items.xrer
index 99b8e25..1c8ab0c 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Jerry20_items.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Jerry20_items.xrer
@@ -1,115 +1,115 @@
-<?xml version="1.0" encoding="ASCII"?>

-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

-  <r4ecore:R4EItem xmi:id="_lk5-IS52EeCvo9WHavBoFQ" description="Jerry20-Item to review 11" addedById="Jerry20" repositoryRef="repository ref..0">

-    <id xmi:id="_lk5-Ii52EeCvo9WHavBoFQ" sequenceID="4" userID="Jerry20"/>

-    <addedBy href="Jerry20_comments.xrer#_lfWvwS52EeCvo9WHavBoFQ"/>

-    <review href="ReviewSampl_review.xrer#_leUN8C52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_llS_sC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX0</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_llS_sC52EeCvo9WHavBoFQ">

-    <id xmi:id="_llS_sS52EeCvo9WHavBoFQ" sequenceID="5" userID="Jerry20"/>

-    <deltas href="#_llfM8S52EeCvo9WHavBoFQ"/>

-    <base href="#_llWqEC52EeCvo9WHavBoFQ"/>

-    <target href="#_lla7gC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_llWqEC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019327" repositoryPath="root/folder_0" name="file_0"/>

-  <r4ecore:R4EFileVersion xmi:id="_lla7gC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019328" repositoryPath="root/folder_0" name="file_0"/>

-  <r4ecore:R4EDelta xmi:id="_llfM8S52EeCvo9WHavBoFQ">

-    <id xmi:id="_llfM8i52EeCvo9WHavBoFQ" sequenceID="6" userID="Jerry20"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_lll6oC52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_llvEkC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_lll6oC52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_llqMEC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_llqMEC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_llvEkC52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_ll0kIC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_ll0kIC52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-  <r4ecore:R4EItem xmi:id="_ll41kS52EeCvo9WHavBoFQ" description="Jerry20-Item to review 12" addedById="Jerry20" repositoryRef="repository ref..1">

-    <id xmi:id="_ll41ki52EeCvo9WHavBoFQ" sequenceID="7" userID="Jerry20"/>

-    <addedBy href="Jerry20_comments.xrer#_lfWvwS52EeCvo9WHavBoFQ"/>

-    <review href="ReviewSampl_review.xrer#_leUN8C52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_lmSeMC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX1</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_lmSeMC52EeCvo9WHavBoFQ">

-    <id xmi:id="_lmSeMS52EeCvo9WHavBoFQ" sequenceID="8" userID="Jerry20"/>

-    <deltas href="#_lmlZIS52EeCvo9WHavBoFQ"/>

-    <base href="#_lmc2QC52EeCvo9WHavBoFQ"/>

-    <target href="#_lmhuwC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_lmc2QC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019328" repositoryPath="root/folder_1" name="file_1"/>

-  <r4ecore:R4EFileVersion xmi:id="_lmhuwC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019329" repositoryPath="root/folder_1" name="file_1"/>

-  <r4ecore:R4EDelta xmi:id="_lmlZIS52EeCvo9WHavBoFQ">

-    <id xmi:id="_lmlZIi52EeCvo9WHavBoFQ" sequenceID="9" userID="Jerry20"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_lmpqkC52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_lmwYQC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_lmpqkC52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_lmst4C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lmst4C52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_lmwYQC52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_lm0CoC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lm0CoC52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-  <r4ecore:R4EItem xmi:id="_lm3tAS52EeCvo9WHavBoFQ" description="Jerry20-Item to review 21" addedById="Jerry20" repositoryRef="repository ref..2">

-    <id xmi:id="_lm3tAi52EeCvo9WHavBoFQ" sequenceID="10" userID="Jerry20"/>

-    <addedBy href="Jerry20_comments.xrer#_lfWvwS52EeCvo9WHavBoFQ"/>

-    <review href="ReviewSampl_review.xrer#_leUN8C52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_lm-asC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX2</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_lm-asC52EeCvo9WHavBoFQ">

-    <id xmi:id="_lm-asS52EeCvo9WHavBoFQ" sequenceID="11" userID="Jerry20"/>

-    <deltas href="#_lnPgcS52EeCvo9WHavBoFQ"/>

-    <base href="#_lnCFEC52EeCvo9WHavBoFQ"/>

-    <target href="#_lnLPAC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_lnCFEC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019358" repositoryPath="root/folder_2" name="file_2"/>

-  <r4ecore:R4EFileVersion xmi:id="_lnLPAC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019359" repositoryPath="root/folder_2" name="file_2"/>

-  <r4ecore:R4EDelta xmi:id="_lnPgcS52EeCvo9WHavBoFQ">

-    <id xmi:id="_lnPgci52EeCvo9WHavBoFQ" sequenceID="12" userID="Jerry20"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_lnTx4C52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_lngmMC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_lnTx4C52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_lnafkC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lnafkC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_lngmMC52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_lnkQkC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lnkQkC52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-  <r4ecore:R4EItem xmi:id="_lnn68S52EeCvo9WHavBoFQ" description="Jerry20-Item to review 22" addedById="Jerry20" repositoryRef="repository ref..3">

-    <id xmi:id="_lnn68i52EeCvo9WHavBoFQ" sequenceID="13" userID="Jerry20"/>

-    <addedBy href="Jerry20_comments.xrer#_lfWvwS52EeCvo9WHavBoFQ"/>

-    <review href="ReviewSampl_review.xrer#_leUN8C52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_lnv2wC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX3</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_lnv2wC52EeCvo9WHavBoFQ">

-    <id xmi:id="_lnv2wS52EeCvo9WHavBoFQ" sequenceID="14" userID="Jerry20"/>

-    <deltas href="#_ln95MS52EeCvo9WHavBoFQ"/>

-    <base href="#_ln0IMC52EeCvo9WHavBoFQ"/>

-    <target href="#_ln4ZoC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_ln0IMC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019359" repositoryPath="root/folder_3" name="file_3"/>

-  <r4ecore:R4EFileVersion xmi:id="_ln4ZoC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019360" repositoryPath="root/folder_3" name="file_3"/>

-  <r4ecore:R4EDelta xmi:id="_ln95MS52EeCvo9WHavBoFQ">

-    <id xmi:id="_ln95Mi52EeCvo9WHavBoFQ" sequenceID="15" userID="Jerry20"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_loF1AC52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_loMisC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_loF1AC52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_loI4UC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_loI4UC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_loMisC52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_loQNEC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_loQNEC52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-</xmi:XMI>

+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">
+  <r4ecore:R4EItem xmi:id="_pF_s0URPEeC0spkCnDexvg" description="Jerry20-Item to review 11" addedById="Jerry20" repositoryRef="repository ref..0" authorRep="changeAuthor_0" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pF_s0kRPEeC0spkCnDexvg" sequenceID="4" userID="Jerry20"/>
+    <addedBy href="Jerry20_comments.xrer#_o_mw8URPEeC0spkCnDexvg"/>
+    <review href="ReviewSampl_review.xrer#_o6x7UERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pH0RwERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX0</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pH0RwERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pH0RwURPEeC0spkCnDexvg" sequenceID="5" userID="Jerry20"/>
+    <deltas href="#_pH3VEkRPEeC0spkCnDexvg"/>
+    <base href="#_pH040ERPEeC0spkCnDexvg"/>
+    <target href="#_pH3VEERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pH040ERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019327" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdB_1234_0"/>
+  <r4ecore:R4EFileVersion xmi:id="_pH3VEERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019328" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdT_1234_0"/>
+  <r4ecore:R4EDelta xmi:id="_pH3VEkRPEeC0spkCnDexvg">
+    <id xmi:id="_pH3VE0RPEeC0spkCnDexvg" sequenceID="6" userID="Jerry20"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pH4jMERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pH5xUERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pH4jMERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pH5KQERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pH5KQERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pH5xUERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pH5xUURPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pH5xUURPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+  <r4ecore:R4EItem xmi:id="_pH6YYURPEeC0spkCnDexvg" description="Jerry20-Item to review 12" addedById="Jerry20" repositoryRef="repository ref..1" authorRep="changeAuthor_1" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pH6YYkRPEeC0spkCnDexvg" sequenceID="7" userID="Jerry20"/>
+    <addedBy href="Jerry20_comments.xrer#_o_mw8URPEeC0spkCnDexvg"/>
+    <review href="ReviewSampl_review.xrer#_o6x7UERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pH-CwERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX1</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pH-CwERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pH-CwURPEeC0spkCnDexvg" sequenceID="8" userID="Jerry20"/>
+    <deltas href="#_pH_38URPEeC0spkCnDexvg"/>
+    <base href="#_pH-p0ERPEeC0spkCnDexvg"/>
+    <target href="#_pH_Q4ERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pH-p0ERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019328" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdB_1234_1"/>
+  <r4ecore:R4EFileVersion xmi:id="_pH_Q4ERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019329" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdT_1234_1"/>
+  <r4ecore:R4EDelta xmi:id="_pH_38URPEeC0spkCnDexvg">
+    <id xmi:id="_pH_38kRPEeC0spkCnDexvg" sequenceID="9" userID="Jerry20"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pIBGEERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pIC7QERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pIBGEERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pIBtIERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pIBtIERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pIC7QERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pIDiUERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pIDiUERPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+  <r4ecore:R4EItem xmi:id="_pIEJYURPEeC0spkCnDexvg" description="Jerry20-Item to review 21" addedById="Jerry20" repositoryRef="repository ref..2" authorRep="changeAuthor_2" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pIEJYkRPEeC0spkCnDexvg" sequenceID="10" userID="Jerry20"/>
+    <addedBy href="Jerry20_comments.xrer#_o_mw8URPEeC0spkCnDexvg"/>
+    <review href="ReviewSampl_review.xrer#_o6x7UERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pIHzwERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX2</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pIHzwERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pIHzwURPEeC0spkCnDexvg" sequenceID="11" userID="Jerry20"/>
+    <deltas href="#_pIJo8URPEeC0spkCnDexvg"/>
+    <base href="#_pIIa0ERPEeC0spkCnDexvg"/>
+    <target href="#_pIJB4ERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pIIa0ERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019358" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdB_1234_2"/>
+  <r4ecore:R4EFileVersion xmi:id="_pIJB4ERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019359" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdT_1234_2"/>
+  <r4ecore:R4EDelta xmi:id="_pIJo8URPEeC0spkCnDexvg">
+    <id xmi:id="_pIJo8kRPEeC0spkCnDexvg" sequenceID="12" userID="Jerry20"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pIPvkERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pIV2MERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pIPvkERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pIQ9sERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pIQ9sERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pIV2MERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pIY5gERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pIY5gERPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+  <r4ecore:R4EItem xmi:id="_pIausERPEeC0spkCnDexvg" description="Jerry20-Item to review 22" addedById="Jerry20" repositoryRef="repository ref..3" authorRep="changeAuthor_3" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pIausURPEeC0spkCnDexvg" sequenceID="13" userID="Jerry20"/>
+    <addedBy href="Jerry20_comments.xrer#_o_mw8URPEeC0spkCnDexvg"/>
+    <review href="ReviewSampl_review.xrer#_o6x7UERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pIdK8ERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX3</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pIdK8ERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pIdK8URPEeC0spkCnDexvg" sequenceID="14" userID="Jerry20"/>
+    <deltas href="#_pIlt0URPEeC0spkCnDexvg"/>
+    <base href="#_pIiqgERPEeC0spkCnDexvg"/>
+    <target href="#_pIkfsERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pIiqgERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019359" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdB_1234_3"/>
+  <r4ecore:R4EFileVersion xmi:id="_pIkfsERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019360" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdT_1234_3"/>
+  <r4ecore:R4EDelta xmi:id="_pIlt0URPEeC0spkCnDexvg">
+    <id xmi:id="_pIlt0kRPEeC0spkCnDexvg" sequenceID="15" userID="Jerry20"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pImU4ERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pI0-YERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pImU4ERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pIzJMERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pIzJMERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pI0-YERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pI0-YURPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pI0-YURPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+</xmi:XMI>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/ReviewSampl_review.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/ReviewSampl_review.xrer
index 84a1cf8..6565ad5 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/ReviewSampl_review.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/ReviewSampl_review.xrer
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ASCII"?>

-<r4ecore:R4EReview xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_leUN8C52EeCvo9WHavBoFQ" name="ReviewSampl" creationDate="1867-07-01T00:00:00.000-0500" project="P1" entryCriteria="Sample Entry Cryteria" extraNotes="Sample extra notes" objectives="Sample Objectives" referenceMaterial="sample reference material" startDate="1867-07-01T00:00:00.000-0500" endDate="1867-07-03T00:00:00.000-0500" type="R4E_REVIEW_TYPE_INFORMAL">

-  <reviewTask xsi:type="r4ecore:R4ETaskReference" xmi:id="_loVFki52EeCvo9WHavBoFQ" taskId="324328" repositoryURL="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324328"/>

-  <state xsi:type="r4ecore:R4EReviewState" xmi:id="_loVFkS52EeCvo9WHavBoFQ" state="R4E_REVIEW_PHASE_PREPARATION"/>

-  <components>Component1</components>

-  <decision xmi:id="_loVFkC52EeCvo9WHavBoFQ" spentTime="120" value="R4E_REVIEW_DECISION_ACCEPTED"/>

-  <createdBy href="Tom10_comments.xrer#_leUN8y52EeCvo9WHavBoFQ"/>

-</r4ecore:R4EReview>

+<?xml version="1.0" encoding="ASCII"?>
+<r4ecore:R4EReview xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_o6x7UERPEeC0spkCnDexvg" name="ReviewSampl" project="P1" entryCriteria="Sample Entry Cryteria" extraNotes="Sample extra notes" objectives="Sample Objectives" referenceMaterial="sample reference material" startDate="1867-07-01T00:00:00.000-0500" endDate="1867-07-03T00:00:00.000-0500" type="R4E_REVIEW_TYPE_INFORMAL">
+  <reviewTask xsi:type="r4ecore:R4ETaskReference" xmi:id="_pI2zkkRPEeC0spkCnDexvg" taskId="324328" repositoryURL="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324328"/>
+  <state xsi:type="r4ecore:R4EReviewState" xmi:id="_pI2zkURPEeC0spkCnDexvg" state="R4E_REVIEW_PHASE_PREPARATION"/>
+  <components>Component1</components>
+  <decision xmi:id="_pI2zkERPEeC0spkCnDexvg" spentTime="120" value="R4E_REVIEW_DECISION_ACCEPTED"/>
+  <createdBy href="Tom10_comments.xrer#_o6yiYkRPEeC0spkCnDexvg"/>
+</r4ecore:R4EReview>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Tom10_comments.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Tom10_comments.xrer
index 19da6b4..2dda2d8 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Tom10_comments.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Tom10_comments.xrer
@@ -1,35 +1,37 @@
-<?xml version="1.0" encoding="ASCII"?>

-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

-  <r4ecore:R4EParticipant xmi:id="_leUN8y52EeCvo9WHavBoFQ" id="Tom10" sequenceIDCounter="15" reviewCreatedByMe="true" spentTime="60" focusArea="Performance" isPartOfDecision="true">

-    <addedComments href="#_lgHkwC52EeCvo9WHavBoFQ"/>

-    <addedComments href="#_lgy6MC52EeCvo9WHavBoFQ"/>

-    <addedComments href="#_lg2kkS52EeCvo9WHavBoFQ"/>

-    <addedItems href="Tom10_items.xrer#_lhFOES52EeCvo9WHavBoFQ"/>

-    <addedItems href="Tom10_items.xrer#_liNPcS52EeCvo9WHavBoFQ"/>

-    <addedItems href="Tom10_items.xrer#_li7oMS52EeCvo9WHavBoFQ"/>

-    <addedItems href="Tom10_items.xrer#_lj7twS52EeCvo9WHavBoFQ"/>

-    <reviewInstance href="ReviewSampl_review.xrer#_leUN8C52EeCvo9WHavBoFQ"/>

-    <roles>R4E_ROLE_ORGANIZER</roles>

-    <roles>R4E_ROLE_LEAD</roles>

-  </r4ecore:R4EParticipant>

-  <r4ecore:R4EAnomaly xmi:id="_lgHkwC52EeCvo9WHavBoFQ" user="_leUN8y52EeCvo9WHavBoFQ" description="Tom10- Anomaly text here ....." title="This is sample Title - Anomaly" createdOn="1867-07-11T00:00:00.000-0500">

-    <location xsi:type="r4ecore:R4ETextContent" href="#_lgO5gC52EeCvo9WHavBoFQ"/>

-    <id xmi:id="_lgIy4C52EeCvo9WHavBoFQ" sequenceID="1" userID="Tom10"/>

-  </r4ecore:R4EAnomaly>

-  <r4ecore:R4ETextContent xmi:id="_lgO5gC52EeCvo9WHavBoFQ" info="Write any information here">

-    <location href="#_lgVAIC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4EAnomalyTextPosition xmi:id="_lgVAIC52EeCvo9WHavBoFQ" startPosition="1230" length="40" startLine="50" endLine="100">

-    <file href="#_lgZRkC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EAnomalyTextPosition>

-  <r4ecore:R4EFileVersion xmi:id="_lgZRkC52EeCvo9WHavBoFQ" platformURI="platform:/resource/projName/src/dir1/dir2" versionID="8" repositoryPath="/Dir1/Dir2" name="R4ETestFile"/>

-  <r4ecore:R4EComment xmi:id="_lgy6MC52EeCvo9WHavBoFQ" user="_leUN8y52EeCvo9WHavBoFQ" description="This is test comment number 1" createdOn="2011-02-01T21:46:07.955-0500">

-    <id xmi:id="_lgy6MS52EeCvo9WHavBoFQ" sequenceID="2" userID="Tom10"/>

-    <anomaly href="Jerry20_comments.xrer#_lgdjAC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EComment>

-  <r4ecore:R4EComment xmi:id="_lg2kkS52EeCvo9WHavBoFQ" user="_leUN8y52EeCvo9WHavBoFQ" description="This is test comment number 2" createdOn="2011-02-01T21:46:07.961-0500">

-    <type xsi:type="r4ecore:R4ECommentType" xmi:id="_lg2kkC52EeCvo9WHavBoFQ"/>

-    <id xmi:id="_lg2kki52EeCvo9WHavBoFQ" sequenceID="3" userID="Tom10"/>

-    <anomaly href="Jerry20_comments.xrer#_lgdjAC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EComment>

-</xmi:XMI>

+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">
+  <r4ecore:R4EParticipant xmi:id="_o6yiYkRPEeC0spkCnDexvg" id="Tom10" sequenceIDCounter="15" reviewCreatedByMe="true" focusArea="Performance" isPartOfDecision="true">
+    <addedComments href="#_pCpd4ERPEeC0spkCnDexvg"/>
+    <addedComments href="#_pDbhAERPEeC0spkCnDexvg"/>
+    <addedComments href="#_pDcvIURPEeC0spkCnDexvg"/>
+    <addedItems href="Tom10_items.xrer#_pDrYoERPEeC0spkCnDexvg"/>
+    <addedItems href="Tom10_items.xrer#_pFBccURPEeC0spkCnDexvg"/>
+    <addedItems href="Tom10_items.xrer#_pFZ28URPEeC0spkCnDexvg"/>
+    <addedItems href="Tom10_items.xrer#_pFsx4URPEeC0spkCnDexvg"/>
+    <reviewInstance href="ReviewSampl_review.xrer#_o6x7UERPEeC0spkCnDexvg"/>
+    <roles>R4E_ROLE_ORGANIZER</roles>
+    <roles>R4E_ROLE_LEAD</roles>
+    <timeLog xmi:id="_o_li0ERPEeC0spkCnDexvg" key="1867-07-01T00:00:00.000-0500" value="30"/>
+    <timeLog xmi:id="_o_li0URPEeC0spkCnDexvg" key="1867-07-03T00:00:00.000-0500" value="30"/>
+  </r4ecore:R4EParticipant>
+  <r4ecore:R4EAnomaly xmi:id="_pCpd4ERPEeC0spkCnDexvg" user="_o6yiYkRPEeC0spkCnDexvg" description="Tom10- Anomaly text here ....." title="This is sample Title - Anomaly" createdOn="1867-07-11T00:00:00.000-0500">
+    <location xsi:type="r4ecore:R4ETextContent" href="#_pC4HYERPEeC0spkCnDexvg"/>
+    <id xmi:id="_pCshMERPEeC0spkCnDexvg" sequenceID="1" userID="Tom10"/>
+  </r4ecore:R4EAnomaly>
+  <r4ecore:R4ETextContent xmi:id="_pC4HYERPEeC0spkCnDexvg" info="Write any information here">
+    <location href="#_pDH_AERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4EAnomalyTextPosition xmi:id="_pDH_AERPEeC0spkCnDexvg" startPosition="1230" length="40" startLine="50" endLine="100">
+    <file href="#_pDMQcERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EAnomalyTextPosition>
+  <r4ecore:R4EFileVersion xmi:id="_pDMQcERPEeC0spkCnDexvg" platformURI="platform:/resource/projName/src/dir1/dir2" versionID="8" repositoryPath="/Dir1/Dir2" name="R4ETestFile"/>
+  <r4ecore:R4EComment xmi:id="_pDbhAERPEeC0spkCnDexvg" user="_o6yiYkRPEeC0spkCnDexvg" description="This is test comment number 1" createdOn="2011-03-01T17:02:46.928-0500">
+    <id xmi:id="_pDbhAURPEeC0spkCnDexvg" sequenceID="2" userID="Tom10"/>
+    <anomaly href="Jerry20_comments.xrer#_pDNekERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EComment>
+  <r4ecore:R4EComment xmi:id="_pDcvIURPEeC0spkCnDexvg" user="_o6yiYkRPEeC0spkCnDexvg" description="This is test comment number 2" createdOn="2011-03-01T17:02:46.930-0500">
+    <type xsi:type="r4ecore:R4ECommentType" xmi:id="_pDcvIERPEeC0spkCnDexvg"/>
+    <id xmi:id="_pDcvIkRPEeC0spkCnDexvg" sequenceID="3" userID="Tom10"/>
+    <anomaly href="Jerry20_comments.xrer#_pDNekERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EComment>
+</xmi:XMI>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Tom10_items.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Tom10_items.xrer
index d238b16..4003331 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Tom10_items.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewSampl/Tom10_items.xrer
@@ -1,115 +1,115 @@
-<?xml version="1.0" encoding="ASCII"?>

-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

-  <r4ecore:R4EItem xmi:id="_lhFOES52EeCvo9WHavBoFQ" description="Tom10-Item to review 11" addedById="Tom10" repositoryRef="repository ref..0">

-    <id xmi:id="_lhFOEi52EeCvo9WHavBoFQ" sequenceID="4" userID="Tom10"/>

-    <addedBy href="Tom10_comments.xrer#_leUN8y52EeCvo9WHavBoFQ"/>

-    <review href="ReviewSampl_review.xrer#_leUN8C52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_lhp10C52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX0</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_lhp10C52EeCvo9WHavBoFQ">

-    <id xmi:id="_lhp10S52EeCvo9WHavBoFQ" sequenceID="5" userID="Tom10"/>

-    <deltas href="#_lh2DES52EeCvo9WHavBoFQ"/>

-    <base href="#_lhs5IC52EeCvo9WHavBoFQ"/>

-    <target href="#_lhwjgC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_lhs5IC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978412" repositoryPath="root/folder_0" name="file_0"/>

-  <r4ecore:R4EFileVersion xmi:id="_lhwjgC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978411" repositoryPath="root/folder_0" name="file_0"/>

-  <r4ecore:R4EDelta xmi:id="_lh2DES52EeCvo9WHavBoFQ">

-    <id xmi:id="_lh2DEi52EeCvo9WHavBoFQ" sequenceID="6" userID="Tom10"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_lh5GYC52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_liAbIC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_lh5GYC52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_lh8wwC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lh8wwC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_liAbIC52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_liHI0C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_liHI0C52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-  <r4ecore:R4EItem xmi:id="_liNPcS52EeCvo9WHavBoFQ" description="Tom10-Item to review 12" addedById="Tom10" repositoryRef="repository ref..1">

-    <id xmi:id="_liNPci52EeCvo9WHavBoFQ" sequenceID="7" userID="Tom10"/>

-    <addedBy href="Tom10_comments.xrer#_leUN8y52EeCvo9WHavBoFQ"/>

-    <review href="ReviewSampl_review.xrer#_leUN8C52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_liUkMC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX1</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_liUkMC52EeCvo9WHavBoFQ">

-    <id xmi:id="_liUkMS52EeCvo9WHavBoFQ" sequenceID="8" userID="Tom10"/>

-    <deltas href="#_ligxcS52EeCvo9WHavBoFQ"/>

-    <base href="#_liYOkC52EeCvo9WHavBoFQ"/>

-    <target href="#_lib48C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_liYOkC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978411" repositoryPath="root/folder_1" name="file_1"/>

-  <r4ecore:R4EFileVersion xmi:id="_lib48C52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978410" repositoryPath="root/folder_1" name="file_1"/>

-  <r4ecore:R4EDelta xmi:id="_ligxcS52EeCvo9WHavBoFQ">

-    <id xmi:id="_ligxci52EeCvo9WHavBoFQ" sequenceID="9" userID="Tom10"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_likb0C52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_liuM0C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_likb0C52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_linfIC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_linfIC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_liuM0C52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_li06gC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_li06gC52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-  <r4ecore:R4EItem xmi:id="_li7oMS52EeCvo9WHavBoFQ" description="Tom10-Item to review 21" addedById="Tom10" repositoryRef="repository ref..2">

-    <id xmi:id="_li8PQC52EeCvo9WHavBoFQ" sequenceID="10" userID="Tom10"/>

-    <addedBy href="Tom10_comments.xrer#_leUN8y52EeCvo9WHavBoFQ"/>

-    <review href="ReviewSampl_review.xrer#_leUN8C52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_ljJqoC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX2</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_ljJqoC52EeCvo9WHavBoFQ">

-    <id xmi:id="_ljJqoS52EeCvo9WHavBoFQ" sequenceID="11" userID="Tom10"/>

-    <deltas href="#_ljbXcC52EeCvo9WHavBoFQ"/>

-    <base href="#_ljPKMC52EeCvo9WHavBoFQ"/>

-    <target href="#_ljV34C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_ljPKMC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978381" repositoryPath="root/folder_2" name="file_2"/>

-  <r4ecore:R4EFileVersion xmi:id="_ljV34C52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978380" repositoryPath="root/folder_2" name="file_2"/>

-  <r4ecore:R4EDelta xmi:id="_ljbXcC52EeCvo9WHavBoFQ">

-    <id xmi:id="_ljbXcS52EeCvo9WHavBoFQ" sequenceID="12" userID="Tom10"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_ljgP8C52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_ljtEQC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_ljgP8C52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_ljm9oC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_ljm9oC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_ljtEQC52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_ljzK4C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_ljzK4C52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-  <r4ecore:R4EItem xmi:id="_lj7twS52EeCvo9WHavBoFQ" description="Tom10-Item to review 22" addedById="Tom10" repositoryRef="repository ref..3">

-    <id xmi:id="_lj7twi52EeCvo9WHavBoFQ" sequenceID="13" userID="Tom10"/>

-    <addedBy href="Tom10_comments.xrer#_leUN8y52EeCvo9WHavBoFQ"/>

-    <review href="ReviewSampl_review.xrer#_leUN8C52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_lkH7AC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX3</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_lkH7AC52EeCvo9WHavBoFQ">

-    <id xmi:id="_lkH7AS52EeCvo9WHavBoFQ" sequenceID="14" userID="Tom10"/>

-    <deltas href="#_lkbdAS52EeCvo9WHavBoFQ"/>

-    <base href="#_lkNakC52EeCvo9WHavBoFQ"/>

-    <target href="#_lkUvUC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_lkNakC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978380" repositoryPath="root/folder_3" name="file_3"/>

-  <r4ecore:R4EFileVersion xmi:id="_lkUvUC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978379" repositoryPath="root/folder_3" name="file_3"/>

-  <r4ecore:R4EDelta xmi:id="_lkbdAS52EeCvo9WHavBoFQ">

-    <id xmi:id="_lkbdAi52EeCvo9WHavBoFQ" sequenceID="15" userID="Tom10"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_lkg8kC52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_lktJ0C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_lkg8kC52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_lkmcIC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lkmcIC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_lktJ0C52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_lk0ekC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lk0ekC52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-</xmi:XMI>

+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">
+  <r4ecore:R4EItem xmi:id="_pDrYoERPEeC0spkCnDexvg" description="Tom10-Item to review 11" addedById="Tom10" repositoryRef="repository ref..0" authorRep="changeAuthor_0" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pDrYoURPEeC0spkCnDexvg" sequenceID="4" userID="Tom10"/>
+    <addedBy href="Tom10_comments.xrer#_o6yiYkRPEeC0spkCnDexvg"/>
+    <review href="ReviewSampl_review.xrer#_o6x7UERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pEt6cERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX0</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pEt6cERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pEt6cURPEeC0spkCnDexvg" sequenceID="5" userID="Tom10"/>
+    <deltas href="#_pE3EYURPEeC0spkCnDexvg"/>
+    <base href="#_pEuhgERPEeC0spkCnDexvg"/>
+    <target href="#_pEvIkERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pEuhgERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978412" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdB_1234_0"/>
+  <r4ecore:R4EFileVersion xmi:id="_pEvIkERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978411" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdT_1234_0"/>
+  <r4ecore:R4EDelta xmi:id="_pE3EYURPEeC0spkCnDexvg">
+    <id xmi:id="_pE3EYkRPEeC0spkCnDexvg" sequenceID="6" userID="Tom10"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pE4SgERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pE_nQERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pE4SgERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pE5goERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pE5goERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pE_nQERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pFAOUERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pFAOUERPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+  <r4ecore:R4EItem xmi:id="_pFBccURPEeC0spkCnDexvg" description="Tom10-Item to review 12" addedById="Tom10" repositoryRef="repository ref..1" authorRep="changeAuthor_1" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pFBcckRPEeC0spkCnDexvg" sequenceID="7" userID="Tom10"/>
+    <addedBy href="Tom10_comments.xrer#_o6yiYkRPEeC0spkCnDexvg"/>
+    <review href="ReviewSampl_review.xrer#_o6x7UERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pFIKIERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX1</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pFIKIERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pFIKIURPEeC0spkCnDexvg" sequenceID="8" userID="Tom10"/>
+    <deltas href="#_pFL0gURPEeC0spkCnDexvg"/>
+    <base href="#_pFJ_UERPEeC0spkCnDexvg"/>
+    <target href="#_pFKmYERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pFJ_UERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978411" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdB_1234_1"/>
+  <r4ecore:R4EFileVersion xmi:id="_pFKmYERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978410" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdT_1234_1"/>
+  <r4ecore:R4EDelta xmi:id="_pFL0gURPEeC0spkCnDexvg">
+    <id xmi:id="_pFL0gkRPEeC0spkCnDexvg" sequenceID="9" userID="Tom10"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pFMbkERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pFU-cERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pFMbkERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pFNCoERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pFNCoERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pFU-cERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pFWMkERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pFWMkERPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+  <r4ecore:R4EItem xmi:id="_pFZ28URPEeC0spkCnDexvg" description="Tom10-Item to review 21" addedById="Tom10" repositoryRef="repository ref..2" authorRep="changeAuthor_2" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pFZ28kRPEeC0spkCnDexvg" sequenceID="10" userID="Tom10"/>
+    <addedBy href="Tom10_comments.xrer#_o6yiYkRPEeC0spkCnDexvg"/>
+    <review href="ReviewSampl_review.xrer#_o6x7UERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pFbsIERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX2</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pFbsIERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pFbsIURPEeC0spkCnDexvg" sequenceID="11" userID="Tom10"/>
+    <deltas href="#_pFhLsURPEeC0spkCnDexvg"/>
+    <base href="#_pFfWgERPEeC0spkCnDexvg"/>
+    <target href="#_pFf9kERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pFfWgERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978381" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdB_1234_2"/>
+  <r4ecore:R4EFileVersion xmi:id="_pFf9kERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978380" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdT_1234_2"/>
+  <r4ecore:R4EDelta xmi:id="_pFhLsURPEeC0spkCnDexvg">
+    <id xmi:id="_pFhLskRPEeC0spkCnDexvg" sequenceID="12" userID="Tom10"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pFjA4ERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pFldIERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pFjA4ERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pFkPAERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pFkPAERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pFldIERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pFrjwERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pFrjwERPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+  <r4ecore:R4EItem xmi:id="_pFsx4URPEeC0spkCnDexvg" description="Tom10-Item to review 22" addedById="Tom10" repositoryRef="repository ref..3" authorRep="changeAuthor_3" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pFsx4kRPEeC0spkCnDexvg" sequenceID="13" userID="Tom10"/>
+    <addedBy href="Tom10_comments.xrer#_o6yiYkRPEeC0spkCnDexvg"/>
+    <review href="ReviewSampl_review.xrer#_o6x7UERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pFv1MERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX3</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pFv1MERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pFv1MURPEeC0spkCnDexvg" sequenceID="14" userID="Tom10"/>
+    <deltas href="#_pF1UwURPEeC0spkCnDexvg"/>
+    <base href="#_pFxDUERPEeC0spkCnDexvg"/>
+    <target href="#_pFxqYERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pFxDUERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978380" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdB_1234_3"/>
+  <r4ecore:R4EFileVersion xmi:id="_pFxqYERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978379" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdT_1234_3"/>
+  <r4ecore:R4EDelta xmi:id="_pF1UwURPEeC0spkCnDexvg">
+    <id xmi:id="_pF1UwkRPEeC0spkCnDexvg" sequenceID="15" userID="Tom10"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pF2i4ERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pF4YEERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pF2i4ERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pF3xAERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pF3xAERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pF4YEERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pF5mMERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pF5mMERPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+</xmi:XMI>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Jerry20_comments.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Jerry20_comments.xrer
index 79d0384..5cb11de 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Jerry20_comments.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Jerry20_comments.xrer
@@ -1,34 +1,36 @@
-<?xml version="1.0" encoding="ASCII"?>

-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

-  <r4ecore:R4EParticipant xmi:id="_lpGhoC52EeCvo9WHavBoFQ" id="Jerry20" sequenceIDCounter="15" spentTime="60" focusArea="Feature" isPartOfDecision="true">

-    <addedComments href="#_lpxQAC52EeCvo9WHavBoFQ"/>

-    <addedComments href="#_lqDj4C52EeCvo9WHavBoFQ"/>

-    <addedComments href="#_lqHOQS52EeCvo9WHavBoFQ"/>

-    <addedItems href="Jerry20_items.xrer#_ls0kAi52EeCvo9WHavBoFQ"/>

-    <addedItems href="Jerry20_items.xrer#_lterUS52EeCvo9WHavBoFQ"/>

-    <addedItems href="Jerry20_items.xrer#_luIyoC52EeCvo9WHavBoFQ"/>

-    <addedItems href="Jerry20_items.xrer#_lvAVUS52EeCvo9WHavBoFQ"/>

-    <reviewInstance href="ReviewTwo_review.xrer#_loVFky52EeCvo9WHavBoFQ"/>

-    <roles>R4E_ROLE_LEAD</roles>

-  </r4ecore:R4EParticipant>

-  <r4ecore:R4EAnomaly xmi:id="_lpxQAC52EeCvo9WHavBoFQ" user="_lpGhoC52EeCvo9WHavBoFQ" description="Jerry20- Anomaly text here ....." title="This is sample Title - Anomaly" createdOn="1867-07-11T00:00:00.000-0500">

-    <location xsi:type="r4ecore:R4ETextContent" href="#_lp0TUC52EeCvo9WHavBoFQ"/>

-    <id xmi:id="_lpxQAS52EeCvo9WHavBoFQ" sequenceID="1" userID="Jerry20"/>

-  </r4ecore:R4EAnomaly>

-  <r4ecore:R4ETextContent xmi:id="_lp0TUC52EeCvo9WHavBoFQ" info="Write any information here">

-    <location href="#_lp3WoC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4EAnomalyTextPosition xmi:id="_lp3WoC52EeCvo9WHavBoFQ" startPosition="1230" length="40" startLine="50" endLine="100">

-    <file href="#_lp6Z8C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EAnomalyTextPosition>

-  <r4ecore:R4EFileVersion xmi:id="_lp6Z8C52EeCvo9WHavBoFQ" platformURI="platform:/resource/projName/src/dir1/dir2" versionID="8" repositoryPath="/Dir1/Dir2" name="R4ETestFile"/>

-  <r4ecore:R4EComment xmi:id="_lqDj4C52EeCvo9WHavBoFQ" user="_lpGhoC52EeCvo9WHavBoFQ" description="This is test comment number 1" createdOn="2011-02-01T21:46:08.926-0500">

-    <id xmi:id="_lqDj4S52EeCvo9WHavBoFQ" sequenceID="2" userID="Jerry20"/>

-    <anomaly href="Tom10_comments.xrer#_lpjNkC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EComment>

-  <r4ecore:R4EComment xmi:id="_lqHOQS52EeCvo9WHavBoFQ" user="_lpGhoC52EeCvo9WHavBoFQ" description="This is test comment number 2" createdOn="2011-02-01T21:46:08.932-0500">

-    <type xsi:type="r4ecore:R4ECommentType" xmi:id="_lqHOQC52EeCvo9WHavBoFQ"/>

-    <id xmi:id="_lqHOQi52EeCvo9WHavBoFQ" sequenceID="3" userID="Jerry20"/>

-    <anomaly href="Tom10_comments.xrer#_lpjNkC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EComment>

-</xmi:XMI>

+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">
+  <r4ecore:R4EParticipant xmi:id="_pLWG40RPEeC0spkCnDexvg" id="Jerry20" sequenceIDCounter="15" focusArea="Feature" isPartOfDecision="true">
+    <addedComments href="#_pNATwERPEeC0spkCnDexvg"/>
+    <addedComments href="#_pNDXEERPEeC0spkCnDexvg"/>
+    <addedComments href="#_pNGaYERPEeC0spkCnDexvg"/>
+    <addedItems href="Jerry20_items.xrer#_pOp5kERPEeC0spkCnDexvg"/>
+    <addedItems href="Jerry20_items.xrer#_pQQcEURPEeC0spkCnDexvg"/>
+    <addedItems href="Jerry20_items.xrer#_pQXw0URPEeC0spkCnDexvg"/>
+    <addedItems href="Jerry20_items.xrer#_pQhh0URPEeC0spkCnDexvg"/>
+    <reviewInstance href="ReviewTwo_review.xrer#_pI3aoERPEeC0spkCnDexvg"/>
+    <roles>R4E_ROLE_LEAD</roles>
+    <timeLog xmi:id="_pM60MERPEeC0spkCnDexvg" key="1867-07-01T00:00:00.000-0500" value="30"/>
+    <timeLog xmi:id="_pM60MURPEeC0spkCnDexvg" key="1867-07-03T00:00:00.000-0500" value="30"/>
+  </r4ecore:R4EParticipant>
+  <r4ecore:R4EAnomaly xmi:id="_pNATwERPEeC0spkCnDexvg" user="_pLWG40RPEeC0spkCnDexvg" description="Jerry20- Anomaly text here ....." title="This is sample Title - Anomaly" createdOn="1867-07-11T00:00:00.000-0500">
+    <location xsi:type="r4ecore:R4ETextContent" href="#_pNA60ERPEeC0spkCnDexvg"/>
+    <id xmi:id="_pNATwURPEeC0spkCnDexvg" sequenceID="1" userID="Jerry20"/>
+  </r4ecore:R4EAnomaly>
+  <r4ecore:R4ETextContent xmi:id="_pNA60ERPEeC0spkCnDexvg" info="Write any information here">
+    <location href="#_pNBh4ERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4EAnomalyTextPosition xmi:id="_pNBh4ERPEeC0spkCnDexvg" startPosition="1230" length="40" startLine="50" endLine="100">
+    <file href="#_pNBh4URPEeC0spkCnDexvg"/>
+  </r4ecore:R4EAnomalyTextPosition>
+  <r4ecore:R4EFileVersion xmi:id="_pNBh4URPEeC0spkCnDexvg" platformURI="platform:/resource/projName/src/dir1/dir2" versionID="8" repositoryPath="/Dir1/Dir2" name="R4ETestFile"/>
+  <r4ecore:R4EComment xmi:id="_pNDXEERPEeC0spkCnDexvg" user="_pLWG40RPEeC0spkCnDexvg" description="This is test comment number 1" createdOn="2011-03-01T17:02:47.937-0500">
+    <id xmi:id="_pNDXEURPEeC0spkCnDexvg" sequenceID="2" userID="Jerry20"/>
+    <anomaly href="Tom10_comments.xrer#_pM7bQERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EComment>
+  <r4ecore:R4EComment xmi:id="_pNGaYERPEeC0spkCnDexvg" user="_pLWG40RPEeC0spkCnDexvg" description="This is test comment number 2" createdOn="2011-03-01T17:02:47.942-0500">
+    <type xsi:type="r4ecore:R4ECommentType" xmi:id="_pNElMERPEeC0spkCnDexvg"/>
+    <id xmi:id="_pNGaYURPEeC0spkCnDexvg" sequenceID="3" userID="Jerry20"/>
+    <anomaly href="Tom10_comments.xrer#_pM7bQERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EComment>
+</xmi:XMI>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Jerry20_items.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Jerry20_items.xrer
index 1a3b926..1a63c1b 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Jerry20_items.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Jerry20_items.xrer
@@ -1,115 +1,115 @@
-<?xml version="1.0" encoding="ASCII"?>

-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

-  <r4ecore:R4EItem xmi:id="_ls0kAi52EeCvo9WHavBoFQ" description="Jerry20-Item to review 11" addedById="Jerry20" repositoryRef="repository ref..0">

-    <id xmi:id="_ls0kAy52EeCvo9WHavBoFQ" sequenceID="4" userID="Jerry20"/>

-    <addedBy href="Jerry20_comments.xrer#_lpGhoC52EeCvo9WHavBoFQ"/>

-    <review href="ReviewTwo_review.xrer#_loVFky52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_ltD0kC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX0</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_ltD0kC52EeCvo9WHavBoFQ">

-    <id xmi:id="_ltD0kS52EeCvo9WHavBoFQ" sequenceID="5" userID="Jerry20"/>

-    <deltas href="#_ltLwYS52EeCvo9WHavBoFQ"/>

-    <base href="#_ltGQ0C52EeCvo9WHavBoFQ"/>

-    <target href="#_ltItEC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_ltGQ0C52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019327" repositoryPath="root/folder_0" name="file_0"/>

-  <r4ecore:R4EFileVersion xmi:id="_ltItEC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019328" repositoryPath="root/folder_0" name="file_0"/>

-  <r4ecore:R4EDelta xmi:id="_ltLwYS52EeCvo9WHavBoFQ">

-    <id xmi:id="_ltLwYi52EeCvo9WHavBoFQ" sequenceID="6" userID="Jerry20"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_ltPawC52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_ltWvgC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_ltPawC52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_ltTFIC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_ltTFIC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_ltWvgC52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_ltaZ4C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_ltaZ4C52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-  <r4ecore:R4EItem xmi:id="_lterUS52EeCvo9WHavBoFQ" description="Jerry20-Item to review 12" addedById="Jerry20" repositoryRef="repository ref..1">

-    <id xmi:id="_lterUi52EeCvo9WHavBoFQ" sequenceID="7" userID="Jerry20"/>

-    <addedBy href="Jerry20_comments.xrer#_lpGhoC52EeCvo9WHavBoFQ"/>

-    <review href="ReviewTwo_review.xrer#_loVFky52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_ltnOMC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX1</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_ltnOMC52EeCvo9WHavBoFQ">

-    <id xmi:id="_ltn1QC52EeCvo9WHavBoFQ" sequenceID="8" userID="Jerry20"/>

-    <deltas href="#_ltzbcS52EeCvo9WHavBoFQ"/>

-    <base href="#_ltrfoC52EeCvo9WHavBoFQ"/>

-    <target href="#_ltvKAC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_ltrfoC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019328" repositoryPath="root/folder_1" name="file_1"/>

-  <r4ecore:R4EFileVersion xmi:id="_ltvKAC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019329" repositoryPath="root/folder_1" name="file_1"/>

-  <r4ecore:R4EDelta xmi:id="_ltzbcS52EeCvo9WHavBoFQ">

-    <id xmi:id="_ltzbci52EeCvo9WHavBoFQ" sequenceID="9" userID="Jerry20"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_lt3s4C52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_luA20C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_lt3s4C52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_lt7XQC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lt7XQC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_luA20C52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_luEhMC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_luEhMC52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-  <r4ecore:R4EItem xmi:id="_luIyoC52EeCvo9WHavBoFQ" description="Jerry20-Item to review 21" addedById="Jerry20" repositoryRef="repository ref..2">

-    <id xmi:id="_luIyoS52EeCvo9WHavBoFQ" sequenceID="10" userID="Jerry20"/>

-    <addedBy href="Jerry20_comments.xrer#_lpGhoC52EeCvo9WHavBoFQ"/>

-    <review href="ReviewTwo_review.xrer#_loVFky52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_luRVgC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX2</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_luRVgC52EeCvo9WHavBoFQ">

-    <id xmi:id="_luRVgS52EeCvo9WHavBoFQ" sequenceID="11" userID="Jerry20"/>

-    <deltas href="#_luqXES52EeCvo9WHavBoFQ"/>

-    <base href="#_luVm8C52EeCvo9WHavBoFQ"/>

-    <target href="#_lulekC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_luVm8C52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019358" repositoryPath="root/folder_2" name="file_2"/>

-  <r4ecore:R4EFileVersion xmi:id="_lulekC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019359" repositoryPath="root/folder_2" name="file_2"/>

-  <r4ecore:R4EDelta xmi:id="_luqXES52EeCvo9WHavBoFQ">

-    <id xmi:id="_luqXEi52EeCvo9WHavBoFQ" sequenceID="12" userID="Jerry20"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_luuogC52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_lu3LYC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_luuogC52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_luzhAC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_luzhAC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_lu3LYC52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_lu8D4C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lu8D4C52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-  <r4ecore:R4EItem xmi:id="_lvAVUS52EeCvo9WHavBoFQ" description="Jerry20-Item to review 22" addedById="Jerry20" repositoryRef="repository ref..3">

-    <id xmi:id="_lvAVUi52EeCvo9WHavBoFQ" sequenceID="13" userID="Jerry20"/>

-    <addedBy href="Jerry20_comments.xrer#_lpGhoC52EeCvo9WHavBoFQ"/>

-    <review href="ReviewTwo_review.xrer#_loVFky52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_lvHDAC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX3</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_lvHDAC52EeCvo9WHavBoFQ">

-    <id xmi:id="_lvHDAS52EeCvo9WHavBoFQ" sequenceID="14" userID="Jerry20"/>

-    <deltas href="#_lvSCIS52EeCvo9WHavBoFQ"/>

-    <base href="#_lvKtYC52EeCvo9WHavBoFQ"/>

-    <target href="#_lvOXwC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_lvKtYC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019359" repositoryPath="root/folder_3" name="file_3"/>

-  <r4ecore:R4EFileVersion xmi:id="_lvOXwC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019360" repositoryPath="root/folder_3" name="file_3"/>

-  <r4ecore:R4EDelta xmi:id="_lvSCIS52EeCvo9WHavBoFQ">

-    <id xmi:id="_lvSCIi52EeCvo9WHavBoFQ" sequenceID="15" userID="Jerry20"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_lvW6oC52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_lvpOgC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_lvW6oC52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_lvkWAC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lvkWAC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_lvpOgC52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_lvs44C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lvs44C52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-</xmi:XMI>

+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">
+  <r4ecore:R4EItem xmi:id="_pOp5kERPEeC0spkCnDexvg" description="Jerry20-Item to review 11" addedById="Jerry20" repositoryRef="repository ref..0" authorRep="changeAuthor_0" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pOp5kURPEeC0spkCnDexvg" sequenceID="4" userID="Jerry20"/>
+    <addedBy href="Jerry20_comments.xrer#_pLWG40RPEeC0spkCnDexvg"/>
+    <review href="ReviewTwo_review.xrer#_pI3aoERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pQNYwERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX0</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pQNYwERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pQNYwURPEeC0spkCnDexvg" sequenceID="5" userID="Jerry20"/>
+    <deltas href="#_pQOm4URPEeC0spkCnDexvg"/>
+    <base href="#_pQN_0ERPEeC0spkCnDexvg"/>
+    <target href="#_pQN_0URPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pQN_0ERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019327" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdB_1234_0"/>
+  <r4ecore:R4EFileVersion xmi:id="_pQN_0URPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019328" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdT_1234_0"/>
+  <r4ecore:R4EDelta xmi:id="_pQOm4URPEeC0spkCnDexvg">
+    <id xmi:id="_pQOm4kRPEeC0spkCnDexvg" sequenceID="6" userID="Jerry20"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pQPN8ERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pQP1AERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pQPN8ERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pQPN8URPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pQPN8URPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pQP1AERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pQP1AURPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pQP1AURPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+  <r4ecore:R4EItem xmi:id="_pQQcEURPEeC0spkCnDexvg" description="Jerry20-Item to review 12" addedById="Jerry20" repositoryRef="repository ref..1" authorRep="changeAuthor_1" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pQQcEkRPEeC0spkCnDexvg" sequenceID="7" userID="Jerry20"/>
+    <addedBy href="Jerry20_comments.xrer#_pLWG40RPEeC0spkCnDexvg"/>
+    <review href="ReviewTwo_review.xrer#_pI3aoERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pQS4UERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX1</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pQS4UERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pQS4UURPEeC0spkCnDexvg" sequenceID="8" userID="Jerry20"/>
+    <deltas href="#_pQUtgERPEeC0spkCnDexvg"/>
+    <base href="#_pQTfYERPEeC0spkCnDexvg"/>
+    <target href="#_pQUGcERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pQTfYERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019328" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdB_1234_1"/>
+  <r4ecore:R4EFileVersion xmi:id="_pQUGcERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019329" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdT_1234_1"/>
+  <r4ecore:R4EDelta xmi:id="_pQUtgERPEeC0spkCnDexvg">
+    <id xmi:id="_pQUtgURPEeC0spkCnDexvg" sequenceID="9" userID="Jerry20"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pQUtgkRPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pQV7oERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pQUtgkRPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pQVUkERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pQVUkERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pQV7oERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pQV7oURPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pQV7oURPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+  <r4ecore:R4EItem xmi:id="_pQXw0URPEeC0spkCnDexvg" description="Jerry20-Item to review 21" addedById="Jerry20" repositoryRef="repository ref..2" authorRep="changeAuthor_2" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pQXw0kRPEeC0spkCnDexvg" sequenceID="10" userID="Jerry20"/>
+    <addedBy href="Jerry20_comments.xrer#_pLWG40RPEeC0spkCnDexvg"/>
+    <review href="ReviewTwo_review.xrer#_pI3aoERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pQY-8ERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX2</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pQY-8ERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pQY-8URPEeC0spkCnDexvg" sequenceID="11" userID="Jerry20"/>
+    <deltas href="#_pQaNEkRPEeC0spkCnDexvg"/>
+    <base href="#_pQZmAERPEeC0spkCnDexvg"/>
+    <target href="#_pQaNEERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pQZmAERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019358" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdB_1234_2"/>
+  <r4ecore:R4EFileVersion xmi:id="_pQaNEERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019359" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdT_1234_2"/>
+  <r4ecore:R4EDelta xmi:id="_pQaNEkRPEeC0spkCnDexvg">
+    <id xmi:id="_pQaNE0RPEeC0spkCnDexvg" sequenceID="12" userID="Jerry20"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pQfFkERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pQgTsERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pQfFkERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pQfsoERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pQfsoERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pQgTsERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pQg6wERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pQg6wERPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+  <r4ecore:R4EItem xmi:id="_pQhh0URPEeC0spkCnDexvg" description="Jerry20-Item to review 22" addedById="Jerry20" repositoryRef="repository ref..3" authorRep="changeAuthor_3" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pQhh0kRPEeC0spkCnDexvg" sequenceID="13" userID="Jerry20"/>
+    <addedBy href="Jerry20_comments.xrer#_pLWG40RPEeC0spkCnDexvg"/>
+    <review href="ReviewTwo_review.xrer#_pI3aoERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pQiv8ERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX3</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pQiv8ERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pQiv8URPEeC0spkCnDexvg" sequenceID="14" userID="Jerry20"/>
+    <deltas href="#_pQklIERPEeC0spkCnDexvg"/>
+    <base href="#_pQjXAERPEeC0spkCnDexvg"/>
+    <target href="#_pQj-EERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pQjXAERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="1004019359" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdB_1234_3"/>
+  <r4ecore:R4EFileVersion xmi:id="_pQj-EERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="1004019360" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdT_1234_3"/>
+  <r4ecore:R4EDelta xmi:id="_pQklIERPEeC0spkCnDexvg">
+    <id xmi:id="_pQklIURPEeC0spkCnDexvg" sequenceID="15" userID="Jerry20"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pQklIkRPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pQnocERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pQklIkRPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pQnBYERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pQnBYERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pQnocERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pQoPgERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pQoPgERPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+</xmi:XMI>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/ReviewTwo_review.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/ReviewTwo_review.xrer
index 2093ef7..174f42f 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/ReviewTwo_review.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/ReviewTwo_review.xrer
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ASCII"?>

-<r4ecore:R4EReview xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_loVFky52EeCvo9WHavBoFQ" name="ReviewTwo" creationDate="1867-07-01T00:00:00.000-0500" project="P1" entryCriteria="Sample Entry Cryteria" extraNotes="Sample extra notes" objectives="Sample Objectives" referenceMaterial="sample reference material" startDate="1867-07-01T00:00:00.000-0500" endDate="1867-07-03T00:00:00.000-0500" type="R4E_REVIEW_TYPE_INFORMAL">

-  <reviewTask xsi:type="r4ecore:R4ETaskReference" xmi:id="_lvwjQi52EeCvo9WHavBoFQ" taskId="324328" repositoryURL="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324328"/>

-  <state xsi:type="r4ecore:R4EReviewState" xmi:id="_lvwjQS52EeCvo9WHavBoFQ" state="R4E_REVIEW_PHASE_PREPARATION"/>

-  <components>Component1</components>

-  <decision xmi:id="_lvwjQC52EeCvo9WHavBoFQ" spentTime="120" value="R4E_REVIEW_DECISION_ACCEPTED"/>

-  <createdBy href="Tom10_comments.xrer#_loVFli52EeCvo9WHavBoFQ"/>

-</r4ecore:R4EReview>

+<?xml version="1.0" encoding="ASCII"?>
+<r4ecore:R4EReview xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_pI3aoERPEeC0spkCnDexvg" name="ReviewTwo" project="P1" entryCriteria="Sample Entry Cryteria" extraNotes="Sample extra notes" objectives="Sample Objectives" referenceMaterial="sample reference material" startDate="1867-07-01T00:00:00.000-0500" endDate="1867-07-03T00:00:00.000-0500" type="R4E_REVIEW_TYPE_INFORMAL">
+  <reviewTask xsi:type="r4ecore:R4ETaskReference" xmi:id="_pQo2kkRPEeC0spkCnDexvg" taskId="324328" repositoryURL="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324328"/>
+  <state xsi:type="r4ecore:R4EReviewState" xmi:id="_pQo2kURPEeC0spkCnDexvg" state="R4E_REVIEW_PHASE_PREPARATION"/>
+  <components>Component1</components>
+  <decision xmi:id="_pQo2kERPEeC0spkCnDexvg" spentTime="120" value="R4E_REVIEW_DECISION_ACCEPTED"/>
+  <createdBy href="Tom10_comments.xrer#_pI3ao0RPEeC0spkCnDexvg"/>
+</r4ecore:R4EReview>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Tom10_comments.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Tom10_comments.xrer
index 9646d90..3e166c7 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Tom10_comments.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Tom10_comments.xrer
@@ -1,35 +1,37 @@
-<?xml version="1.0" encoding="ASCII"?>

-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

-  <r4ecore:R4EParticipant xmi:id="_loVFli52EeCvo9WHavBoFQ" id="Tom10" sequenceIDCounter="15" reviewCreatedByMe="true" spentTime="60" focusArea="Performance" isPartOfDecision="true">

-    <addedComments href="#_lpjNkC52EeCvo9WHavBoFQ"/>

-    <addedComments href="#_lp9dQC52EeCvo9WHavBoFQ"/>

-    <addedComments href="#_lqAgkC52EeCvo9WHavBoFQ"/>

-    <addedItems href="Tom10_items.xrer#_lqK4oC52EeCvo9WHavBoFQ"/>

-    <addedItems href="Tom10_items.xrer#_lrAmIS52EeCvo9WHavBoFQ"/>

-    <addedItems href="Tom10_items.xrer#_lrhjgS52EeCvo9WHavBoFQ"/>

-    <addedItems href="Tom10_items.xrer#_lsDvAS52EeCvo9WHavBoFQ"/>

-    <reviewInstance href="ReviewTwo_review.xrer#_loVFky52EeCvo9WHavBoFQ"/>

-    <roles>R4E_ROLE_ORGANIZER</roles>

-    <roles>R4E_ROLE_LEAD</roles>

-  </r4ecore:R4EParticipant>

-  <r4ecore:R4EAnomaly xmi:id="_lpjNkC52EeCvo9WHavBoFQ" user="_loVFli52EeCvo9WHavBoFQ" description="Tom10- Anomaly text here ....." title="This is sample Title - Anomaly" createdOn="1867-07-11T00:00:00.000-0500">

-    <location xsi:type="r4ecore:R4ETextContent" href="#_lpoGEC52EeCvo9WHavBoFQ"/>

-    <id xmi:id="_lpj0oC52EeCvo9WHavBoFQ" sequenceID="1" userID="Tom10"/>

-  </r4ecore:R4EAnomaly>

-  <r4ecore:R4ETextContent xmi:id="_lpoGEC52EeCvo9WHavBoFQ" info="Write any information here">

-    <location href="#_lprJYC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4EAnomalyTextPosition xmi:id="_lprJYC52EeCvo9WHavBoFQ" startPosition="1230" length="40" startLine="50" endLine="100">

-    <file href="#_lpuMsC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EAnomalyTextPosition>

-  <r4ecore:R4EFileVersion xmi:id="_lpuMsC52EeCvo9WHavBoFQ" platformURI="platform:/resource/projName/src/dir1/dir2" versionID="8" repositoryPath="/Dir1/Dir2" name="R4ETestFile"/>

-  <r4ecore:R4EComment xmi:id="_lp9dQC52EeCvo9WHavBoFQ" user="_loVFli52EeCvo9WHavBoFQ" description="This is test comment number 1" createdOn="2011-02-01T21:46:08.916-0500">

-    <id xmi:id="_lp9dQS52EeCvo9WHavBoFQ" sequenceID="2" userID="Tom10"/>

-    <anomaly href="Jerry20_comments.xrer#_lpxQAC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EComment>

-  <r4ecore:R4EComment xmi:id="_lqAgkC52EeCvo9WHavBoFQ" user="_loVFli52EeCvo9WHavBoFQ" description="This is test comment number 2" createdOn="2011-02-01T21:46:08.921-0500">

-    <type xsi:type="r4ecore:R4ECommentType" xmi:id="_lp_5gC52EeCvo9WHavBoFQ"/>

-    <id xmi:id="_lqAgkS52EeCvo9WHavBoFQ" sequenceID="3" userID="Tom10"/>

-    <anomaly href="Jerry20_comments.xrer#_lpxQAC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EComment>

-</xmi:XMI>

+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">
+  <r4ecore:R4EParticipant xmi:id="_pI3ao0RPEeC0spkCnDexvg" id="Tom10" sequenceIDCounter="15" reviewCreatedByMe="true" focusArea="Performance" isPartOfDecision="true">
+    <addedComments href="#_pM7bQERPEeC0spkCnDexvg"/>
+    <addedComments href="#_pNCI8ERPEeC0spkCnDexvg"/>
+    <addedComments href="#_pNCwAURPEeC0spkCnDexvg"/>
+    <addedItems href="Tom10_items.xrer#_pNHogURPEeC0spkCnDexvg"/>
+    <addedItems href="Tom10_items.xrer#_pOObwURPEeC0spkCnDexvg"/>
+    <addedItems href="Tom10_items.xrer#_pOUiYURPEeC0spkCnDexvg"/>
+    <addedItems href="Tom10_items.xrer#_pObQEURPEeC0spkCnDexvg"/>
+    <reviewInstance href="ReviewTwo_review.xrer#_pI3aoERPEeC0spkCnDexvg"/>
+    <roles>R4E_ROLE_ORGANIZER</roles>
+    <roles>R4E_ROLE_LEAD</roles>
+    <timeLog xmi:id="_pLWG4ERPEeC0spkCnDexvg" key="1867-07-01T00:00:00.000-0500" value="30"/>
+    <timeLog xmi:id="_pLWG4URPEeC0spkCnDexvg" key="1867-07-03T00:00:00.000-0500" value="30"/>
+  </r4ecore:R4EParticipant>
+  <r4ecore:R4EAnomaly xmi:id="_pM7bQERPEeC0spkCnDexvg" user="_pI3ao0RPEeC0spkCnDexvg" description="Tom10- Anomaly text here ....." title="This is sample Title - Anomaly" createdOn="1867-07-11T00:00:00.000-0500">
+    <location xsi:type="r4ecore:R4ETextContent" href="#_pM93gERPEeC0spkCnDexvg"/>
+    <id xmi:id="_pM7bQURPEeC0spkCnDexvg" sequenceID="1" userID="Tom10"/>
+  </r4ecore:R4EAnomaly>
+  <r4ecore:R4ETextContent xmi:id="_pM93gERPEeC0spkCnDexvg" info="Write any information here">
+    <location href="#_pM-ekERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4EAnomalyTextPosition xmi:id="_pM-ekERPEeC0spkCnDexvg" startPosition="1230" length="40" startLine="50" endLine="100">
+    <file href="#_pM_ssERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EAnomalyTextPosition>
+  <r4ecore:R4EFileVersion xmi:id="_pM_ssERPEeC0spkCnDexvg" platformURI="platform:/resource/projName/src/dir1/dir2" versionID="8" repositoryPath="/Dir1/Dir2" name="R4ETestFile"/>
+  <r4ecore:R4EComment xmi:id="_pNCI8ERPEeC0spkCnDexvg" user="_pI3ao0RPEeC0spkCnDexvg" description="This is test comment number 1" createdOn="2011-03-01T17:02:47.935-0500">
+    <id xmi:id="_pNCI8URPEeC0spkCnDexvg" sequenceID="2" userID="Tom10"/>
+    <anomaly href="Jerry20_comments.xrer#_pNATwERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EComment>
+  <r4ecore:R4EComment xmi:id="_pNCwAURPEeC0spkCnDexvg" user="_pI3ao0RPEeC0spkCnDexvg" description="This is test comment number 2" createdOn="2011-03-01T17:02:47.936-0500">
+    <type xsi:type="r4ecore:R4ECommentType" xmi:id="_pNCwAERPEeC0spkCnDexvg"/>
+    <id xmi:id="_pNCwAkRPEeC0spkCnDexvg" sequenceID="3" userID="Tom10"/>
+    <anomaly href="Jerry20_comments.xrer#_pNATwERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EComment>
+</xmi:XMI>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Tom10_items.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Tom10_items.xrer
index b245318..b655053 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Tom10_items.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/ReviewTwo/Tom10_items.xrer
@@ -1,115 +1,115 @@
-<?xml version="1.0" encoding="ASCII"?>

-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">

-  <r4ecore:R4EItem xmi:id="_lqK4oC52EeCvo9WHavBoFQ" description="Tom10-Item to review 11" addedById="Tom10" repositoryRef="repository ref..0">

-    <id xmi:id="_lqK4oS52EeCvo9WHavBoFQ" sequenceID="4" userID="Tom10"/>

-    <addedBy href="Tom10_comments.xrer#_loVFli52EeCvo9WHavBoFQ"/>

-    <review href="ReviewTwo_review.xrer#_loVFky52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_lqqA0C52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX0</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_lqqA0C52EeCvo9WHavBoFQ">

-    <id xmi:id="_lqqA0S52EeCvo9WHavBoFQ" sequenceID="5" userID="Tom10"/>

-    <deltas href="#_lqyjsS52EeCvo9WHavBoFQ"/>

-    <base href="#_lqtEIC52EeCvo9WHavBoFQ"/>

-    <target href="#_lqvgYC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_lqtEIC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978412" repositoryPath="root/folder_0" name="file_0"/>

-  <r4ecore:R4EFileVersion xmi:id="_lqvgYC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978411" repositoryPath="root/folder_0" name="file_0"/>

-  <r4ecore:R4EDelta xmi:id="_lqyjsS52EeCvo9WHavBoFQ">

-    <id xmi:id="_lqyjsi52EeCvo9WHavBoFQ" sequenceID="6" userID="Tom10"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_lq1nAC52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_lq7GkC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_lq1nAC52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_lq4DQC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lq4DQC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_lq7GkC52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_lq9i0C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lq9i0C52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-  <r4ecore:R4EItem xmi:id="_lrAmIS52EeCvo9WHavBoFQ" description="Tom10-Item to review 12" addedById="Tom10" repositoryRef="repository ref..1">

-    <id xmi:id="_lrAmIi52EeCvo9WHavBoFQ" sequenceID="7" userID="Tom10"/>

-    <addedBy href="Tom10_comments.xrer#_loVFli52EeCvo9WHavBoFQ"/>

-    <review href="ReviewTwo_review.xrer#_loVFky52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_lrGswC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX1</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_lrGswC52EeCvo9WHavBoFQ">

-    <id xmi:id="_lrGswS52EeCvo9WHavBoFQ" sequenceID="8" userID="Tom10"/>

-    <deltas href="#_lrRE0S52EeCvo9WHavBoFQ"/>

-    <base href="#_lrJwEC52EeCvo9WHavBoFQ"/>

-    <target href="#_lrNacC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_lrJwEC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978411" repositoryPath="root/folder_1" name="file_1"/>

-  <r4ecore:R4EFileVersion xmi:id="_lrNacC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978410" repositoryPath="root/folder_1" name="file_1"/>

-  <r4ecore:R4EDelta xmi:id="_lrRE0S52EeCvo9WHavBoFQ">

-    <id xmi:id="_lrRE0i52EeCvo9WHavBoFQ" sequenceID="9" userID="Tom10"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_lrUIIC52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_lra10C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_lrUIIC52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_lrXLcC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lrXLcC52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_lra10C52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_lrd5IC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lrd5IC52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-  <r4ecore:R4EItem xmi:id="_lrhjgS52EeCvo9WHavBoFQ" description="Tom10-Item to review 21" addedById="Tom10" repositoryRef="repository ref..2">

-    <id xmi:id="_lrhjgi52EeCvo9WHavBoFQ" sequenceID="10" userID="Tom10"/>

-    <addedBy href="Tom10_comments.xrer#_loVFli52EeCvo9WHavBoFQ"/>

-    <review href="ReviewTwo_review.xrer#_loVFky52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_lrnqIC52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX2</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_lrnqIC52EeCvo9WHavBoFQ">

-    <id xmi:id="_lrnqIS52EeCvo9WHavBoFQ" sequenceID="11" userID="Tom10"/>

-    <deltas href="#_lrypQS52EeCvo9WHavBoFQ"/>

-    <base href="#_lrrUgC52EeCvo9WHavBoFQ"/>

-    <target href="#_lru-4C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_lrrUgC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978381" repositoryPath="root/folder_2" name="file_2"/>

-  <r4ecore:R4EFileVersion xmi:id="_lru-4C52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978380" repositoryPath="root/folder_2" name="file_2"/>

-  <r4ecore:R4EDelta xmi:id="_lrypQS52EeCvo9WHavBoFQ">

-    <id xmi:id="_lrypQi52EeCvo9WHavBoFQ" sequenceID="12" userID="Tom10"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_lr1skC52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_lr8aQC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_lr1skC52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_lr5W8C52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lr5W8C52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_lr8aQC52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_lr_dkC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lr_dkC52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-  <r4ecore:R4EItem xmi:id="_lsDvAS52EeCvo9WHavBoFQ" description="Tom10-Item to review 22" addedById="Tom10" repositoryRef="repository ref..3">

-    <id xmi:id="_lsDvAi52EeCvo9WHavBoFQ" sequenceID="13" userID="Tom10"/>

-    <addedBy href="Tom10_comments.xrer#_loVFli52EeCvo9WHavBoFQ"/>

-    <review href="ReviewTwo_review.xrer#_loVFky52EeCvo9WHavBoFQ"/>

-    <fileContextList href="#_lsLq0C52EeCvo9WHavBoFQ"/>

-    <ProjectURIs>platform:resource/projX3</ProjectURIs>

-  </r4ecore:R4EItem>

-  <r4ecore:R4EFileContext xmi:id="_lsLq0C52EeCvo9WHavBoFQ">

-    <id xmi:id="_lsLq0S52EeCvo9WHavBoFQ" sequenceID="14" userID="Tom10"/>

-    <deltas href="#_lsX4ES52EeCvo9WHavBoFQ"/>

-    <base href="#_lsOuIC52EeCvo9WHavBoFQ"/>

-    <target href="#_lsUNsC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EFileContext>

-  <r4ecore:R4EFileVersion xmi:id="_lsOuIC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978380" repositoryPath="root/folder_3" name="file_3"/>

-  <r4ecore:R4EFileVersion xmi:id="_lsUNsC52EeCvo9WHavBoFQ" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978379" repositoryPath="root/folder_3" name="file_3"/>

-  <r4ecore:R4EDelta xmi:id="_lsX4ES52EeCvo9WHavBoFQ">

-    <id xmi:id="_lsX4Ei52EeCvo9WHavBoFQ" sequenceID="15" userID="Tom10"/>

-    <base xsi:type="r4ecore:R4ETextContent" href="#_lsqzAC52EeCvo9WHavBoFQ"/>

-    <target xsi:type="r4ecore:R4ETextContent" href="#_lsqzAi52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4EDelta>

-  <r4ecore:R4ETextContent xmi:id="_lsqzAC52EeCvo9WHavBoFQ" info="information for base content" content="base content">

-    <location href="#_lsqzAS52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_lsqzAS52EeCvo9WHavBoFQ" startPosition="200" length="50" startLine="10" endLine="20"/>

-  <r4ecore:R4ETextContent xmi:id="_lsqzAi52EeCvo9WHavBoFQ" info="information for target content" content="target content">

-    <location href="#_ls0kAC52EeCvo9WHavBoFQ"/>

-  </r4ecore:R4ETextContent>

-  <r4ecore:R4ETextPosition xmi:id="_ls0kAC52EeCvo9WHavBoFQ" startPosition="300" length="100" startLine="30" endLine="40"/>

-</xmi:XMI>

+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/">
+  <r4ecore:R4EItem xmi:id="_pNHogURPEeC0spkCnDexvg" description="Tom10-Item to review 11" addedById="Tom10" repositoryRef="repository ref..0" authorRep="changeAuthor_0" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pNIPkERPEeC0spkCnDexvg" sequenceID="4" userID="Tom10"/>
+    <addedBy href="Tom10_comments.xrer#_pI3ao0RPEeC0spkCnDexvg"/>
+    <review href="ReviewTwo_review.xrer#_pI3aoERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pOLYcERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX0</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pOLYcERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pOLYcURPEeC0spkCnDexvg" sequenceID="5" userID="Tom10"/>
+    <deltas href="#_pOMmkURPEeC0spkCnDexvg"/>
+    <base href="#_pOL_gERPEeC0spkCnDexvg"/>
+    <target href="#_pOL_gURPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pOL_gERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978412" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdB_1234_0"/>
+  <r4ecore:R4EFileVersion xmi:id="_pOL_gURPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978411" repositoryPath="root/folder_0" name="file_0" localVersionID="locIdT_1234_0"/>
+  <r4ecore:R4EDelta xmi:id="_pOMmkURPEeC0spkCnDexvg">
+    <id xmi:id="_pOMmkkRPEeC0spkCnDexvg" sequenceID="6" userID="Tom10"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pOMmk0RPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pON0sERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pOMmk0RPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pONNoERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pONNoERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pON0sERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pON0sURPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pON0sURPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+  <r4ecore:R4EItem xmi:id="_pOObwURPEeC0spkCnDexvg" description="Tom10-Item to review 12" addedById="Tom10" repositoryRef="repository ref..1" authorRep="changeAuthor_1" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pOObwkRPEeC0spkCnDexvg" sequenceID="7" userID="Tom10"/>
+    <addedBy href="Tom10_comments.xrer#_pI3ao0RPEeC0spkCnDexvg"/>
+    <review href="ReviewTwo_review.xrer#_pI3aoERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pOPC0ERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX1</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pOPC0ERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pOPC0URPEeC0spkCnDexvg" sequenceID="8" userID="Tom10"/>
+    <deltas href="#_pOQQ8kRPEeC0spkCnDexvg"/>
+    <base href="#_pOPp4ERPEeC0spkCnDexvg"/>
+    <target href="#_pOQQ8ERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pOPp4ERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978411" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdB_1234_1"/>
+  <r4ecore:R4EFileVersion xmi:id="_pOQQ8ERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978410" repositoryPath="root/folder_1" name="file_1" localVersionID="locIdT_1234_1"/>
+  <r4ecore:R4EDelta xmi:id="_pOQQ8kRPEeC0spkCnDexvg">
+    <id xmi:id="_pOQQ80RPEeC0spkCnDexvg" sequenceID="9" userID="Tom10"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pOQ4AERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pOTUQERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pOQ4AERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pOSGIERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pOSGIERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pOTUQERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pOT7UERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pOT7UERPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+  <r4ecore:R4EItem xmi:id="_pOUiYURPEeC0spkCnDexvg" description="Tom10-Item to review 21" addedById="Tom10" repositoryRef="repository ref..2" authorRep="changeAuthor_2" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pOUiYkRPEeC0spkCnDexvg" sequenceID="10" userID="Tom10"/>
+    <addedBy href="Tom10_comments.xrer#_pI3ao0RPEeC0spkCnDexvg"/>
+    <review href="ReviewTwo_review.xrer#_pI3aoERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pOVwgERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX2</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pOVwgERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pOVwgURPEeC0spkCnDexvg" sequenceID="11" userID="Tom10"/>
+    <deltas href="#_pOXlsERPEeC0spkCnDexvg"/>
+    <base href="#_pOWXkERPEeC0spkCnDexvg"/>
+    <target href="#_pOW-oERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pOWXkERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978381" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdB_1234_2"/>
+  <r4ecore:R4EFileVersion xmi:id="_pOW-oERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978380" repositoryPath="root/folder_2" name="file_2" localVersionID="locIdT_1234_2"/>
+  <r4ecore:R4EDelta xmi:id="_pOXlsERPEeC0spkCnDexvg">
+    <id xmi:id="_pOXlsURPEeC0spkCnDexvg" sequenceID="12" userID="Tom10"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pOYz0ERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pOaB8ERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pOYz0ERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pOZa4ERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pOZa4ERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pOaB8ERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pOapAERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pOapAERPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+  <r4ecore:R4EItem xmi:id="_pObQEURPEeC0spkCnDexvg" description="Tom10-Item to review 22" addedById="Tom10" repositoryRef="repository ref..3" authorRep="changeAuthor_3" submitted="1867-07-01T00:00:00.000-0500">
+    <id xmi:id="_pObQEkRPEeC0spkCnDexvg" sequenceID="13" userID="Tom10"/>
+    <addedBy href="Tom10_comments.xrer#_pI3ao0RPEeC0spkCnDexvg"/>
+    <review href="ReviewTwo_review.xrer#_pI3aoERPEeC0spkCnDexvg"/>
+    <fileContextList href="#_pOceMERPEeC0spkCnDexvg"/>
+    <ProjectURIs>platform:resource/projX3</ProjectURIs>
+  </r4ecore:R4EItem>
+  <r4ecore:R4EFileContext xmi:id="_pOceMERPEeC0spkCnDexvg" type="R4E_ADDED">
+    <id xmi:id="_pOceMURPEeC0spkCnDexvg" sequenceID="14" userID="Tom10"/>
+    <deltas href="#_pOlBEURPEeC0spkCnDexvg"/>
+    <base href="#_pOeTYERPEeC0spkCnDexvg"/>
+    <target href="#_pOh9wERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EFileContext>
+  <r4ecore:R4EFileVersion xmi:id="_pOeTYERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir3/dir4/file.xxx" versionID="-719978380" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdB_1234_3"/>
+  <r4ecore:R4EFileVersion xmi:id="_pOh9wERPEeC0spkCnDexvg" platformURI="platform:/resource/proj/src/dir6/dir7/file.yyy" versionID="-719978379" repositoryPath="root/folder_3" name="file_3" localVersionID="locIdT_1234_3"/>
+  <r4ecore:R4EDelta xmi:id="_pOlBEURPEeC0spkCnDexvg">
+    <id xmi:id="_pOlBEkRPEeC0spkCnDexvg" sequenceID="15" userID="Tom10"/>
+    <base xsi:type="r4ecore:R4ETextContent" href="#_pOmPMERPEeC0spkCnDexvg"/>
+    <target xsi:type="r4ecore:R4ETextContent" href="#_pOndUERPEeC0spkCnDexvg"/>
+  </r4ecore:R4EDelta>
+  <r4ecore:R4ETextContent xmi:id="_pOmPMERPEeC0spkCnDexvg" info="information for base content" content="base content">
+    <location href="#_pOm2QERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pOm2QERPEeC0spkCnDexvg" startPosition="200" length="50" startLine="10" endLine="20"/>
+  <r4ecore:R4ETextContent xmi:id="_pOndUERPEeC0spkCnDexvg" info="information for target content" content="target content">
+    <location href="#_pOorcERPEeC0spkCnDexvg"/>
+  </r4ecore:R4ETextContent>
+  <r4ecore:R4ETextPosition xmi:id="_pOorcERPEeC0spkCnDexvg" startPosition="300" length="100" startLine="30" endLine="40"/>
+</xmi:XMI>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Tom10_group_reviews.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Tom10_group_reviews.xrer
index d1df857..0e4eba4 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Tom10_group_reviews.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/Tom10_group_reviews.xrer
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="ASCII"?>

-<r4ecore:R4EUserReviews xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_leUN9C52EeCvo9WHavBoFQ" name="Tom10">

-  <invitedToMap xmi:id="_leU1AC52EeCvo9WHavBoFQ" key="ReviewSampl">

-    <value href="ReviewSampl/ReviewSampl_review.xrer#_leUN8C52EeCvo9WHavBoFQ"/>

-  </invitedToMap>

-  <invitedToMap xmi:id="_loVFly52EeCvo9WHavBoFQ" key="ReviewTwo">

-    <value href="ReviewTwo/ReviewTwo_review.xrer#_loVFky52EeCvo9WHavBoFQ"/>

-  </invitedToMap>

-  <group href="Golden_Group_group_root.xrer#_lYvKYS52EeCvo9WHavBoFQ"/>

-  <createdReviews>ReviewSampl</createdReviews>

-  <createdReviews>ReviewTwo</createdReviews>

-</r4ecore:R4EUserReviews>

+<?xml version="1.0" encoding="ASCII"?>
+<r4ecore:R4EUserReviews xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_o6yiY0RPEeC0spkCnDexvg" name="Tom10">
+  <invitedToMap xmi:id="_o6yiZURPEeC0spkCnDexvg" key="ReviewSampl">
+    <value href="ReviewSampl/ReviewSampl_review.xrer#_o6x7UERPEeC0spkCnDexvg"/>
+  </invitedToMap>
+  <invitedToMap xmi:id="_pI3apERPEeC0spkCnDexvg" key="ReviewTwo">
+    <value href="ReviewTwo/ReviewTwo_review.xrer#_pI3aoERPEeC0spkCnDexvg"/>
+  </invitedToMap>
+  <group href="Golden_Group_group_root.xrer#_UQxKYERPEeC0spkCnDexvg"/>
+  <createdReviews>ReviewSampl</createdReviews>
+  <createdReviews>ReviewTwo</createdReviews>
+</r4ecore:R4EUserReviews>
diff --git a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/lmcalvs_group_reviews.xrer b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/lmcalvs_group_reviews.xrer
index 1a7c921..22580ba 100644
--- a/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/lmcalvs_group_reviews.xrer
+++ b/org.eclipse.mylyn.reviews.r4e.core.tests/stubs_model/outGroupX/lmcalvs_group_reviews.xrer
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="ASCII"?>

-<r4ecore:R4EUserReviews xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_ldFe4C52EeCvo9WHavBoFQ" name="lmcalvs">

-  <invitedToMap xmi:id="_ldGF8S52EeCvo9WHavBoFQ" key="Review1">

-    <value href="Review1/Review1_review.xrer#_lc_YQC52EeCvo9WHavBoFQ"/>

-  </invitedToMap>

-  <group href="Golden_Group_group_root.xrer#_lYvKYS52EeCvo9WHavBoFQ"/>

-  <createdReviews>Review1</createdReviews>

-</r4ecore:R4EUserReviews>

+<?xml version="1.0" encoding="ASCII"?>
+<r4ecore:R4EUserReviews xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:r4ecore="http://org.eclipse.mylyn.reviews.r4e.core.model/" xmi:id="_o0CaIERPEeC0spkCnDexvg" name="lmcalvs">
+  <invitedToMap xmi:id="_o0DBMERPEeC0spkCnDexvg" key="Review1">
+    <value href="Review1/Review1_review.xrer#_ozvfMERPEeC0spkCnDexvg"/>
+  </invitedToMap>
+  <group href="Golden_Group_group_root.xrer#_UQxKYERPEeC0spkCnDexvg"/>
+  <createdReviews>Review1</createdReviews>
+</r4ecore:R4EUserReviews>
diff --git a/org.eclipse.mylyn.reviews.r4e.core/.classpath b/org.eclipse.mylyn.reviews.r4e.core/.classpath
index ed2bc12..45f024e 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/.classpath
+++ b/org.eclipse.mylyn.reviews.r4e.core/.classpath
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <classpath>

 	<classpathentry kind="src" path="src"/>

-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

 	<classpathentry kind="output" path="bin"/>

 </classpath>

diff --git a/org.eclipse.mylyn.reviews.r4e.core/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.reviews.r4e.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2d4b0c1
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Tue Feb 15 13:31:42 PST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/org.eclipse.mylyn.reviews.r4e.core/META-INF/MANIFEST.MF b/org.eclipse.mylyn.reviews.r4e.core/META-INF/MANIFEST.MF
index 471b5e1..ff6dc92 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.reviews.r4e.core/META-INF/MANIFEST.MF
@@ -8,23 +8,28 @@
 Bundle-Localization: plugin

 Bundle-RequiredExecutionEnvironment: J2SE-1.5

 Export-Package: 

- org.eclipse.mylyn.reviews.r4e.core,

- org.eclipse.mylyn.reviews.r4e.core.model,

- org.eclipse.mylyn.reviews.r4e.core.model.drules,

- org.eclipse.mylyn.reviews.r4e.core.model.drules.impl,

- org.eclipse.mylyn.reviews.r4e.core.model.drules.util,

- org.eclipse.mylyn.reviews.r4e.core.model.impl,

- org.eclipse.mylyn.reviews.r4e.core.model.serial,

- org.eclipse.mylyn.reviews.r4e.core.model.serial.impl,

- org.eclipse.mylyn.reviews.r4e.core.model.util,

- org.eclipse.mylyn.reviews.r4e.core.utils,

- org.eclipse.mylyn.reviews.r4e.core.utils.filePermission,

- org.eclipse.mylyn.reviews.r4e.core.versions,

- org.eclipse.mylyn.reviews.r4e.core.versions.git.diff

+ org.eclipse.mylyn.reviews.r4e.core;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.model;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.model.drules;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.model.drules.impl;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.model.drules.util;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.model.impl;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.model.serial;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.model.serial.impl;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.model.util;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.rfs;x-friends:="org.eclipse.mylyn.reviews.r4e.core.tests",

+ org.eclipse.mylyn.reviews.r4e.core.rfs.spi;x-friends:="org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.utils;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.utils.cmd;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.utils.filePermission;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.utils.sys;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.versions;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.versions.git;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.versions.git.diff;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.versions.git.diff.internal;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui",

+ org.eclipse.mylyn.reviews.r4e.core.versions.impl;x-friends:="org.eclipse.mylyn.reviews.r4e.core,org.eclipse.mylyn.reviews.r4e.core.tests,org.eclipse.mylyn.reviews.r4e.ui"

 Require-Bundle: org.eclipse.core.runtime,

- org.eclipse.emf.ecore;visibility:=reexport,

- org.eclipse.emf.ecore.xmi;visibility:=reexport,

- org.eclipse.mylyn.reviews.frame.core;visibility:=reexport,

+ org.eclipse.mylyn.reviews.frame.core,

  org.eclipse.mylyn.tasks.core;bundle-version="3.5.0",

  org.eclipse.core.resources;bundle-version="3.5.0",

  org.eclipse.jgit;bundle-version="0.9.1",

@@ -33,6 +38,8 @@
  org.eclipse.egit.core;bundle-version="0.9.1",

  org.eclipse.egit.ui;bundle-version="0.9.1",

  org.eclipse.ui;bundle-version="3.5.0",

- org.eclipse.team.core;bundle-version="3.5.0"

+ org.eclipse.team.core;bundle-version="3.5.0",

+ org.eclipse.emf.ecore;bundle-version="2.5.0",

+ org.eclipse.emf.ecore.xmi;bundle-version="2.5.0"

 Bundle-ActivationPolicy: lazy

 Bundle-Activator: org.eclipse.mylyn.reviews.r4e.core.Activator

diff --git a/org.eclipse.mylyn.reviews.r4e.core/model/org.eclipse.mylyn.reviews.r4e.core.model.ecore b/org.eclipse.mylyn.reviews.r4e.core/model/org.eclipse.mylyn.reviews.r4e.core.model.ecore
index 5cc37eb..a5c8aec 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/model/org.eclipse.mylyn.reviews.r4e.core.model.ecore
+++ b/org.eclipse.mylyn.reviews.r4e.core/model/org.eclipse.mylyn.reviews.r4e.core.model.ecore
@@ -31,7 +31,6 @@
   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="R4EReview" eSuperTypes="../../org.eclipse.mylyn.reviews.frame.core/model/org.eclipse.mylyn.reviews.frame.core.model.ecore#//Review #//R4EReviewComponent">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="creationDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="project" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="components" upperBound="-1"

         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

@@ -76,7 +75,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="fixedInVersion" eType="#//R4EFileVersion"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="ruleID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="decidedByID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fiexeByID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fixedByID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="followUpByID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EEnum" name="R4EAnomalyState">

@@ -86,8 +85,8 @@
     <eLiterals name="R4E_ANOMALY_STATE_FIXED" value="7"/>

     <eLiterals name="R4E_ANOMALY_STATE_DUPLICATED" value="1"/>

     <eLiterals name="R4E_ANOMALY_STATE_REJECTED" value="2"/>

-    <eLiterals name="R4E_ANOMALY_STATE_POSTPONED" value="3"/>

-    <eLiterals name="R4E_ANOMALY_SATE_VERIFIED" value="6"/>

+    <eLiterals name="R4E_ANOMALY_STATE_DEFERRED" value="3" literal="R4E_ANOMALY_STATE_DEFERRED"/>

+    <eLiterals name="R4E_ANOMALY_STATE_VERIFIED" value="6"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EEnum" name="R4EAnomalyRank">

     <eLiterals name="R4E_ANOMALY_RANK_NONE"/>

@@ -131,7 +130,7 @@
     <eLiterals name="R4E_REVIEW_DECISION_ACCEPTED_FOLLOWUP" value="2"/>

     <eLiterals name="R4E_REVIEW_DECISION_REJECTED" value="3"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="R4EUser" eSuperTypes="../../org.eclipse.mylyn.reviews.frame.core/model/org.eclipse.mylyn.reviews.frame.core.model.ecore#//User">

+  <eClassifiers xsi:type="ecore:EClass" name="R4EUser" eSuperTypes="../../org.eclipse.mylyn.reviews.frame.core/model/org.eclipse.mylyn.reviews.frame.core.model.ecore#//User #//R4EReviewComponent">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="groupPaths" upperBound="-1"

         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" transient="true"

         derived="true"/>

@@ -151,11 +150,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="R4EParticipant" eSuperTypes="#//R4EUser">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="roles" upperBound="-1"

         eType="#//R4EUserRole"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="spentTime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="focusArea" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isPartOfDecision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>

     <eStructuralFeatures xsi:type="ecore:EReference" name="reviewedContent" upperBound="-1"

         eType="#//R4EID"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="timeLog" upperBound="-1"

+        eType="#//MapDateToDuration" containment="true"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="R4EItem" eSuperTypes="#//R4EIDComponent ../../org.eclipse.mylyn.reviews.frame.core/model/org.eclipse.mylyn.reviews.frame.core.model.ecore#//Item">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="xmlVersion" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

@@ -167,6 +167,10 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="repositoryRef" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="ProjectURIs" upperBound="-1"

         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="authorRep" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="submitted" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="infoAtt" upperBound="-1"

+        eType="#//MapKeyToInfoAttributes" containment="true"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="R4ETextContent" eSuperTypes="#//R4EContent">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

@@ -202,6 +206,9 @@
         containment="true"/>

     <eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"

         eType="#//R4EFileVersion" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//R4EContextType"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="infoAtt" upperBound="-1"

+        eType="#//MapKeyToInfoAttributes" containment="true"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="R4EDelta" eSuperTypes="#//R4EIDComponent">

     <eStructuralFeatures xsi:type="ecore:EReference" name="base" eType="#//R4EContent"

@@ -209,11 +216,14 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"

         eType="#//R4EContent" containment="true"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EEnum" name="R4ECommentEnum">

-    <eLiterals name="R4E_COMMENT_BASE"/>

+  <eClassifiers xsi:type="ecore:EEnum" name="R4ECommentClass">

+    <eLiterals name="R4E_CLASS_ERRONEOUS"/>

+    <eLiterals name="R4E_CLASS_SUPERFLUOUS" value="1"/>

+    <eLiterals name="R4E_CLASS_IMPROVEMENT" value="2"/>

+    <eLiterals name="R4E_CLASS_QUESTION" value="3"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="R4ECommentType" eSuperTypes="../../org.eclipse.mylyn.reviews.frame.core/model/org.eclipse.mylyn.reviews.frame.core.model.ecore#//CommentType">

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//R4ECommentEnum"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//R4ECommentClass"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="MapToAnomalyType" instanceClassName="java.util.Map$Entry">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

@@ -232,6 +242,10 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="resource" eType="#//IResource"

         transient="true" derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="localVersionID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fileRevision" eType="#//IFileRevision"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="infoAtt" upperBound="-1"

+        eType="#//MapKeyToInfoAttributes" containment="true"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EDataType" name="MylynTask" instanceClassName="org.eclipse.mylyn.tasks.core.ITask"/>

   <eClassifiers xsi:type="ecore:EDataType" name="IResource" instanceClassName="org.eclipse.core.resources.IResource"/>

@@ -270,4 +284,20 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="file" eType="#//R4EFileVersion"

         containment="true"/>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EEnum" name="R4EContextType">

+    <eLiterals name="R4E_UNDEFINED" value="4"/>

+    <eLiterals name="R4E_ADDED"/>

+    <eLiterals name="R4E_DELETED" value="1"/>

+    <eLiterals name="R4E_MODIFIED" value="2"/>

+    <eLiterals name="R4E_REPLACED" value="3"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EDataType" name="IFileRevision" instanceClassName="org.eclipse.team.core.history.IFileRevision"/>

+  <eClassifiers xsi:type="ecore:EClass" name="MapDateToDuration" instanceClassName="java.util.Map$Entry">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="MapKeyToInfoAttributes" instanceClassName="java.util.Map$Entry">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+  </eClassifiers>

 </ecore:EPackage>

diff --git a/org.eclipse.mylyn.reviews.r4e.core/model/org.eclipse.mylyn.reviews.r4e.core.model.ecorediag b/org.eclipse.mylyn.reviews.r4e.core/model/org.eclipse.mylyn.reviews.r4e.core.model.ecorediag
index c01b3f5..5df319f 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/model/org.eclipse.mylyn.reviews.r4e.core.model.ecorediag
+++ b/org.eclipse.mylyn.reviews.r4e.core/model/org.eclipse.mylyn.reviews.r4e.core.model.ecorediag
@@ -55,10 +55,6 @@
         <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReview/name"/>

         <layoutConstraint xmi:type="notation:Location" xmi:id="_e5eipbX-Ed-Xj-3H8XK7WQ"/>

       </children>

-      <children xmi:type="notation:Node" xmi:id="_e5eiprX-Ed-Xj-3H8XK7WQ" type="2001">

-        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReview/creationDate"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_e5fJsLX-Ed-Xj-3H8XK7WQ"/>

-      </children>

       <children xmi:type="notation:Node" xmi:id="_e5fJsbX-Ed-Xj-3H8XK7WQ" type="2001">

         <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReview/project"/>

         <layoutConstraint xmi:type="notation:Location" xmi:id="_e5fJsrX-Ed-Xj-3H8XK7WQ"/>

@@ -142,7 +138,7 @@
         <layoutConstraint xmi:type="notation:Location" xmi:id="_Pxop0cWhEd-OHt4UvkWdIw"/>

       </children>

       <children xmi:type="notation:Node" xmi:id="_X3f9sMWhEd-OHt4UvkWdIw" type="2001">

-        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomaly/fiexeByID"/>

+        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomaly/fixedByID"/>

         <layoutConstraint xmi:type="notation:Location" xmi:id="_X3f9scWhEd-OHt4UvkWdIw"/>

       </children>

       <children xmi:type="notation:Node" xmi:id="_cBvJgMWhEd-OHt4UvkWdIw" type="2001">

@@ -190,11 +186,11 @@
         <layoutConstraint xmi:type="notation:Location" xmi:id="_VkFI5bqFEd-6aOwQ22t3_g"/>

       </children>

       <children xmi:type="notation:Node" xmi:id="_VkFI5rqFEd-6aOwQ22t3_g" type="2006">

-        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyState/R4E_ANOMALY_STATE_POSTPONED"/>

+        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyState/R4E_ANOMALY_STATE_DEFERRED"/>

         <layoutConstraint xmi:type="notation:Location" xmi:id="_VkFI57qFEd-6aOwQ22t3_g"/>

       </children>

       <children xmi:type="notation:Node" xmi:id="_oXUI8LqGEd-6aOwQ22t3_g" type="2006">

-        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyState/R4E_ANOMALY_SATE_VERIFIED"/>

+        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyState/R4E_ANOMALY_STATE_VERIFIED"/>

         <layoutConstraint xmi:type="notation:Location" xmi:id="_oXUI8bqGEd-6aOwQ22t3_g"/>

       </children>

       <styles xmi:type="notation:DrawerStyle" xmi:id="_e5nFgrX-Ed-Xj-3H8XK7WQ"/>

@@ -271,7 +267,7 @@
     </children>

     <styles xmi:type="notation:ShapeStyle" xmi:id="_e5tMIbX-Ed-Xj-3H8XK7WQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

     <element xmi:type="ecore:EEnum" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReviewPhase"/>

-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e5tMIrX-Ed-Xj-3H8XK7WQ" x="300" y="912" width="255" height="135"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e5tMIrX-Ed-Xj-3H8XK7WQ" x="300" y="912" width="255" height="147"/>

   </children>

   <children xmi:type="notation:Node" xmi:id="_e5vBVLX-Ed-Xj-3H8XK7WQ" type="1001">

     <children xmi:type="notation:Node" xmi:id="_e5voYLX-Ed-Xj-3H8XK7WQ" type="4001"/>

@@ -367,7 +363,7 @@
     </children>

     <styles xmi:type="notation:ShapeStyle" xmi:id="_D8Gj8bYDEd-Xj-3H8XK7WQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

     <element xmi:type="ecore:EEnum" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EDecision"/>

-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D8Gj8rYDEd-Xj-3H8XK7WQ" x="792" y="936" width="315" height="123"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D8Gj8rYDEd-Xj-3H8XK7WQ" x="792" y="948" width="315" height="135"/>

   </children>

   <children xmi:type="notation:Node" xmi:id="_xJ9a4LbDEd-HcNahxkfV5A" type="1001">

     <children xmi:type="notation:Node" xmi:id="_xJ_QELbDEd-HcNahxkfV5A" type="4001"/>

@@ -418,10 +414,6 @@
         <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EParticipant/roles"/>

         <layoutConstraint xmi:type="notation:Location" xmi:id="_sr3bsbeDEd-lI8UEEXo2gw"/>

       </children>

-      <children xmi:type="notation:Node" xmi:id="_yW_1sLeHEd-lI8UEEXo2gw" type="2001">

-        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EParticipant/spentTime"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_yW_1sbeHEd-lI8UEEXo2gw"/>

-      </children>

       <children xmi:type="notation:Node" xmi:id="_8gktwLeHEd-lI8UEEXo2gw" type="2001">

         <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EParticipant/focusArea"/>

         <layoutConstraint xmi:type="notation:Location" xmi:id="_8gktwbeHEd-lI8UEEXo2gw"/>

@@ -466,6 +458,14 @@
         <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EItem/ProjectURIs"/>

         <layoutConstraint xmi:type="notation:Location" xmi:id="_BGyrcQbbEeCvc-HZOPcedA"/>

       </children>

+      <children xmi:type="notation:Node" xmi:id="_ZLHLgD4PEeCMwZzAYLFqBw" type="2001">

+        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EItem/authorRep"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZLHLgT4PEeCMwZzAYLFqBw"/>

+      </children>

+      <children xmi:type="notation:Node" xmi:id="_9ddGwD4QEeCMwZzAYLFqBw" type="2001">

+        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EItem/submitted"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_9ddGwT4QEeCMwZzAYLFqBw"/>

+      </children>

       <styles xmi:type="notation:DrawerStyle" xmi:id="_NjunVbqqEd-6aOwQ22t3_g"/>

       <styles xmi:type="notation:SortingStyle" xmi:id="_NjunVrqqEd-6aOwQ22t3_g"/>

       <styles xmi:type="notation:FilteringStyle" xmi:id="_NjunV7qqEd-6aOwQ22t3_g"/>

@@ -521,7 +521,7 @@
     </children>

     <styles xmi:type="notation:ShapeStyle" xmi:id="_9Esdcbt3Ed-VvI-hm1I52A" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

     <element xmi:type="ecore:EClass" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EID"/>

-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Esdcrt3Ed-VvI-hm1I52A" x="132" y="816"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Esdcrt3Ed-VvI-hm1I52A" x="132" y="840"/>

   </children>

   <children xmi:type="notation:Node" xmi:id="_Q94zUb0WEd-TWJIwocUqhw" type="1005">

     <children xmi:type="notation:Node" xmi:id="_Q97PkL0WEd-TWJIwocUqhw" type="4010"/>

@@ -544,7 +544,7 @@
     </children>

     <styles xmi:type="notation:ShapeStyle" xmi:id="_Q94zUr0WEd-TWJIwocUqhw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

     <element xmi:type="ecore:EEnum" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReviewType"/>

-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q94zU70WEd-TWJIwocUqhw" x="300" y="1056" width="219" height="99"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q94zU70WEd-TWJIwocUqhw" x="300" y="1068" width="219" height="99"/>

   </children>

   <children xmi:type="notation:Node" xmi:id="_zSKCYMWpEd-OHt4UvkWdIw" type="1001">

     <children xmi:type="notation:Node" xmi:id="_zSKpcMWpEd-OHt4UvkWdIw" type="4001"/>

@@ -645,6 +645,10 @@
   <children xmi:type="notation:Node" xmi:id="_gMAywMW7Ed-OHt4UvkWdIw" type="1001">

     <children xmi:type="notation:Node" xmi:id="_gMAyw8W7Ed-OHt4UvkWdIw" type="4001"/>

     <children xmi:type="notation:Node" xmi:id="_gMAyxMW7Ed-OHt4UvkWdIw" type="5001">

+      <children xmi:type="notation:Node" xmi:id="_4DNPID4REeCMwZzAYLFqBw" type="2001">

+        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileContext/type"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DNPIT4REeCMwZzAYLFqBw"/>

+      </children>

       <styles xmi:type="notation:DrawerStyle" xmi:id="_gMAyxcW7Ed-OHt4UvkWdIw"/>

       <styles xmi:type="notation:SortingStyle" xmi:id="_gMAyxsW7Ed-OHt4UvkWdIw"/>

       <styles xmi:type="notation:FilteringStyle" xmi:id="_gMAyx8W7Ed-OHt4UvkWdIw"/>

@@ -656,7 +660,7 @@
     </children>

     <styles xmi:type="notation:ShapeStyle" xmi:id="_gMAywcW7Ed-OHt4UvkWdIw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

     <element xmi:type="ecore:EClass" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileContext"/>

-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gMAywsW7Ed-OHt4UvkWdIw" x="1200" y="432"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gMAywsW7Ed-OHt4UvkWdIw" x="1176" y="480"/>

   </children>

   <children xmi:type="notation:Node" xmi:id="_PMT68MW8Ed-OHt4UvkWdIw" type="1001">

     <children xmi:type="notation:Node" xmi:id="_PMT688W8Ed-OHt4UvkWdIw" type="4001"/>

@@ -672,22 +676,34 @@
     </children>

     <styles xmi:type="notation:ShapeStyle" xmi:id="_PMT68cW8Ed-OHt4UvkWdIw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

     <element xmi:type="ecore:EClass" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EDelta"/>

-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PMT68sW8Ed-OHt4UvkWdIw" x="1284" y="576"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PMT68sW8Ed-OHt4UvkWdIw" x="1284" y="600"/>

   </children>

   <children xmi:type="notation:Node" xmi:id="_qi6NMMoxEd-GnoJBk9E8XQ" type="1005">

     <children xmi:type="notation:Node" xmi:id="_qi9QgMoxEd-GnoJBk9E8XQ" type="4010"/>

     <children xmi:type="notation:Node" xmi:id="_qi93kMoxEd-GnoJBk9E8XQ" type="5008">

       <children xmi:type="notation:Node" xmi:id="_theQEMoxEd-GnoJBk9E8XQ" type="2006">

-        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentEnum/R4E_COMMENT_BASE"/>

+        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentClass/R4E_CLASS_ERRONEOUS"/>

         <layoutConstraint xmi:type="notation:Location" xmi:id="_theQEcoxEd-GnoJBk9E8XQ"/>

       </children>

+      <children xmi:type="notation:Node" xmi:id="__VgDkUUNEeCdooscN54lQg" type="2006">

+        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentClass/R4E_CLASS_SUPERFLUOUS"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="__VgDkkUNEeCdooscN54lQg"/>

+      </children>

+      <children xmi:type="notation:Node" xmi:id="_Ck5-0EUOEeCdooscN54lQg" type="2006">

+        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentClass/R4E_CLASS_IMPROVEMENT"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Ck5-0UUOEeCdooscN54lQg"/>

+      </children>

+      <children xmi:type="notation:Node" xmi:id="_Eig7AEUOEeCdooscN54lQg" type="2006">

+        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentClass/R4E_CLASS_QUESTION"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Eig7AUUOEeCdooscN54lQg"/>

+      </children>

       <styles xmi:type="notation:DrawerStyle" xmi:id="_qi-eoMoxEd-GnoJBk9E8XQ"/>

       <styles xmi:type="notation:SortingStyle" xmi:id="_qi-eocoxEd-GnoJBk9E8XQ"/>

       <styles xmi:type="notation:FilteringStyle" xmi:id="_qi-eosoxEd-GnoJBk9E8XQ"/>

     </children>

     <styles xmi:type="notation:ShapeStyle" xmi:id="_qi6NMcoxEd-GnoJBk9E8XQ" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

-    <element xmi:type="ecore:EEnum" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentEnum"/>

-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qi6NMsoxEd-GnoJBk9E8XQ" x="48" y="1104" width="176" height="75"/>

+    <element xmi:type="ecore:EEnum" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentClass"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qi6NMsoxEd-GnoJBk9E8XQ" x="48" y="1104" width="231" height="123"/>

   </children>

   <children xmi:type="notation:Node" xmi:id="_O8-9kMoyEd-GnoJBk9E8XQ" type="1001">

     <children xmi:type="notation:Node" xmi:id="_O9AywMoyEd-GnoJBk9E8XQ" type="4001"/>

@@ -788,6 +804,14 @@
         <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileVersion/resource"/>

         <layoutConstraint xmi:type="notation:Location" xmi:id="_uapPoeHeEd-yzYXzzLJ5Xg"/>

       </children>

+      <children xmi:type="notation:Node" xmi:id="_k2iJcD4SEeCMwZzAYLFqBw" type="2001">

+        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileVersion/localVersionID"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_k2iJcT4SEeCMwZzAYLFqBw"/>

+      </children>

+      <children xmi:type="notation:Node" xmi:id="_qB0r4D69EeCqhrBOB88LTg" type="2001">

+        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileVersion/fileRevision"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_qB0r4T69EeCqhrBOB88LTg"/>

+      </children>

       <styles xmi:type="notation:DrawerStyle" xmi:id="_jePMceHeEd-yzYXzzLJ5Xg"/>

       <styles xmi:type="notation:SortingStyle" xmi:id="_jePMcuHeEd-yzYXzzLJ5Xg"/>

       <styles xmi:type="notation:FilteringStyle" xmi:id="_jePMc-HeEd-yzYXzzLJ5Xg"/>

@@ -799,23 +823,23 @@
     </children>

     <styles xmi:type="notation:ShapeStyle" xmi:id="_jeN-UeHeEd-yzYXzzLJ5Xg" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

     <element xmi:type="ecore:EClass" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileVersion"/>

-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jeN-UuHeEd-yzYXzzLJ5Xg" x="1056" y="576"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jeN-UuHeEd-yzYXzzLJ5Xg" x="1056" y="600"/>

   </children>

   <children xmi:type="notation:Node" xmi:id="_FokSUOHgEd-yzYXzzLJ5Xg" type="1004">

     <children xmi:type="notation:Node" xmi:id="_FomukOHgEd-yzYXzzLJ5Xg" type="4008"/>

     <children xmi:type="notation:Node" xmi:id="_FonVoOHgEd-yzYXzzLJ5Xg" type="4009"/>

     <styles xmi:type="notation:ShapeStyle" xmi:id="_FokSUeHgEd-yzYXzzLJ5Xg" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

     <element xmi:type="ecore:EDataType" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MylynTask"/>

-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FokSUuHgEd-yzYXzzLJ5Xg" x="792" y="1140" width="314" height="71"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FokSUuHgEd-yzYXzzLJ5Xg" x="792" y="1164" width="314" height="71"/>

   </children>

   <children xmi:type="notation:Node" xmi:id="_SFBL8OHgEd-yzYXzzLJ5Xg" type="1004">

     <children xmi:type="notation:Node" xmi:id="_SFBzAOHgEd-yzYXzzLJ5Xg" type="4008"/>

     <children xmi:type="notation:Node" xmi:id="_SFBzAeHgEd-yzYXzzLJ5Xg" type="4009"/>

     <styles xmi:type="notation:ShapeStyle" xmi:id="_SFBL8eHgEd-yzYXzzLJ5Xg" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

     <element xmi:type="ecore:EDataType" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//IResource"/>

-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SFBL8uHgEd-yzYXzzLJ5Xg" x="792" y="1068" width="315"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SFBL8uHgEd-yzYXzzLJ5Xg" x="792" y="1092" width="315"/>

   </children>

-  <children xmi:type="notation:Shape" xmi:id="_MFkgEOHiEd-yzYXzzLJ5Xg" type="Note" fontName="Segoe UI" description="R4EREviewComponent extended by: R4EDelta, R4EFileContext, R4EReviewGroup, R4EReview, R4ETaskReference, R4EComment, R4EAnomaly and R4EItem" fillColor="13369343" transparency="0" lineColor="6737151" lineWidth="1">

+  <children xmi:type="notation:Shape" xmi:id="_MFkgEOHiEd-yzYXzzLJ5Xg" type="Note" fontName="Segoe UI" description="R4EREviewComponent extended by: R4EDelta, R4EFileContext, R4EReviewGroup, R4EReview, R4ETaskReference, R4EComment, R4EAnomaly, R4EItem, R4EUser" fillColor="13369343" transparency="0" lineColor="6737151" lineWidth="1">

     <children xmi:type="notation:BasicDecorationNode" xmi:id="_MFp_oOHiEd-yzYXzzLJ5Xg" type="DiagramName">

       <element xsi:nil="true"/>

     </children>

@@ -970,6 +994,94 @@
     <element xmi:type="ecore:EClass" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyTextPosition"/>

     <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ruqP4vfqEd-WaLZjXTHHFA" x="852" y="852" width="172" height="53"/>

   </children>

+  <children xmi:type="notation:Node" xmi:id="_T5cysD4REeCMwZzAYLFqBw" type="1005">

+    <children xmi:type="notation:Node" xmi:id="_T5eA0D4REeCMwZzAYLFqBw" type="4010"/>

+    <children xmi:type="notation:Node" xmi:id="_T5fO8D4REeCMwZzAYLFqBw" type="5008">

+      <children xmi:type="notation:Node" xmi:id="_ZddYYD4SEeCMwZzAYLFqBw" type="2006">

+        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EContextType/R4E_UNDEFINED"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZddYYT4SEeCMwZzAYLFqBw"/>

+      </children>

+      <children xmi:type="notation:Node" xmi:id="_nPk54D4REeCMwZzAYLFqBw" type="2006">

+        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EContextType/R4E_ADDED"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_nPk54T4REeCMwZzAYLFqBw"/>

+      </children>

+      <children xmi:type="notation:Node" xmi:id="_rMuE4D4REeCMwZzAYLFqBw" type="2006">

+        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EContextType/R4E_DELETED"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rMuE4T4REeCMwZzAYLFqBw"/>

+      </children>

+      <children xmi:type="notation:Node" xmi:id="_tCX-8D4REeCMwZzAYLFqBw" type="2006">

+        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EContextType/R4E_MODIFIED"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_tCX-8T4REeCMwZzAYLFqBw"/>

+      </children>

+      <children xmi:type="notation:Node" xmi:id="_uupTgD4REeCMwZzAYLFqBw" type="2006">

+        <element xmi:type="ecore:EEnumLiteral" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EContextType/R4E_REPLACED"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uupTgT4REeCMwZzAYLFqBw"/>

+      </children>

+      <styles xmi:type="notation:DrawerStyle" xmi:id="_T5fO8T4REeCMwZzAYLFqBw"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_T5fO8j4REeCMwZzAYLFqBw"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_T5fO8z4REeCMwZzAYLFqBw"/>

+    </children>

+    <styles xmi:type="notation:ShapeStyle" xmi:id="_T5cysT4REeCMwZzAYLFqBw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

+    <element xmi:type="ecore:EEnum" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EContextType"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T5cysj4REeCMwZzAYLFqBw" x="1140" y="960" width="149"/>

+  </children>

+  <children xmi:type="notation:Node" xmi:id="_LsYYsD4TEeCMwZzAYLFqBw" type="1004">

+    <children xmi:type="notation:Node" xmi:id="_LsaN4D4TEeCMwZzAYLFqBw" type="4008"/>

+    <children xmi:type="notation:Node" xmi:id="_Lsa08D4TEeCMwZzAYLFqBw" type="4009"/>

+    <styles xmi:type="notation:ShapeStyle" xmi:id="_LsY_wD4TEeCMwZzAYLFqBw" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

+    <element xmi:type="ecore:EDataType" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//IFileRevision"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LsY_wT4TEeCMwZzAYLFqBw" x="1140" y="1117" height="62"/>

+  </children>

+  <children xmi:type="notation:Node" xmi:id="_PZB20EQ4EeCXbIx_qEv2wA" type="1001">

+    <children xmi:type="notation:Node" xmi:id="_PZETEEQ4EeCXbIx_qEv2wA" type="4001"/>

+    <children xmi:type="notation:Node" xmi:id="_PZETEUQ4EeCXbIx_qEv2wA" type="5001">

+      <children xmi:type="notation:Node" xmi:id="_c-cjoEQ4EeCXbIx_qEv2wA" type="2001">

+        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapDateToDuration/key"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_c-cjoUQ4EeCXbIx_qEv2wA"/>

+      </children>

+      <children xmi:type="notation:Node" xmi:id="_hYtIcEQ4EeCXbIx_qEv2wA" type="2001">

+        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapDateToDuration/value"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hYtIcUQ4EeCXbIx_qEv2wA"/>

+      </children>

+      <styles xmi:type="notation:DrawerStyle" xmi:id="_PZETEkQ4EeCXbIx_qEv2wA"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_PZETE0Q4EeCXbIx_qEv2wA"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_PZETFEQ4EeCXbIx_qEv2wA"/>

+      <layoutConstraint xmi:type="notation:Ratio" xmi:id="_CNDWAEQ-EeCXbIx_qEv2wA" value="0.5877192982456141"/>

+    </children>

+    <children xmi:type="notation:Node" xmi:id="_PZE6IEQ4EeCXbIx_qEv2wA" type="5002">

+      <styles xmi:type="notation:DrawerStyle" xmi:id="_PZE6IUQ4EeCXbIx_qEv2wA"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_PZE6IkQ4EeCXbIx_qEv2wA"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_PZE6I0Q4EeCXbIx_qEv2wA"/>

+      <layoutConstraint xmi:type="notation:Ratio" xmi:id="_CND9EEQ-EeCXbIx_qEv2wA" value="0.2631578947368421"/>

+    </children>

+    <styles xmi:type="notation:ShapeStyle" xmi:id="_PZB20UQ4EeCXbIx_qEv2wA" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

+    <element xmi:type="ecore:EClass" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapDateToDuration"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PZB20kQ4EeCXbIx_qEv2wA" x="-24" y="684" width="171" height="123"/>

+  </children>

+  <children xmi:type="notation:Node" xmi:id="_N2lFQEQ7EeCXbIx_qEv2wA" type="1001">

+    <children xmi:type="notation:Node" xmi:id="_N2lsUEQ7EeCXbIx_qEv2wA" type="4001"/>

+    <children xmi:type="notation:Node" xmi:id="_N2lsUUQ7EeCXbIx_qEv2wA" type="5001">

+      <children xmi:type="notation:Node" xmi:id="_ZC5MsEQ7EeCXbIx_qEv2wA" type="2001">

+        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapKeyToInfoAttributes/key"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZC5MsUQ7EeCXbIx_qEv2wA"/>

+      </children>

+      <children xmi:type="notation:Node" xmi:id="_bRIl4EQ7EeCXbIx_qEv2wA" type="2001">

+        <element xmi:type="ecore:EAttribute" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapKeyToInfoAttributes/value"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bRIl4UQ7EeCXbIx_qEv2wA"/>

+      </children>

+      <styles xmi:type="notation:DrawerStyle" xmi:id="_N2lsUkQ7EeCXbIx_qEv2wA"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_N2lsU0Q7EeCXbIx_qEv2wA"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_N2lsVEQ7EeCXbIx_qEv2wA"/>

+    </children>

+    <children xmi:type="notation:Node" xmi:id="_N2lsVUQ7EeCXbIx_qEv2wA" type="5002">

+      <styles xmi:type="notation:DrawerStyle" xmi:id="_N2lsVkQ7EeCXbIx_qEv2wA"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_N2lsV0Q7EeCXbIx_qEv2wA"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_N2lsWEQ7EeCXbIx_qEv2wA"/>

+    </children>

+    <styles xmi:type="notation:ShapeStyle" xmi:id="_N2lFQUQ7EeCXbIx_qEv2wA" fontColor="4210752" fontName="Segoe UI" fontHeight="10" fillColor="13761016" lineColor="8421504"/>

+    <element xmi:type="ecore:EClass" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapKeyToInfoAttributes"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N2lFQkQ7EeCXbIx_qEv2wA" x="1416" y="360" width="171"/>

+  </children>

   <styles xmi:type="notation:DiagramStyle" xmi:id="_e47JAbX-Ed-Xj-3H8XK7WQ"/>

   <element xmi:type="ecore:EPackage" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#/"/>

   <edges xmi:type="notation:Edge" xmi:id="_e529JLX-Ed-Xj-3H8XK7WQ" type="3003" source="_e5phwLX-Ed-Xj-3H8XK7WQ" target="_e5dUgrX-Ed-Xj-3H8XK7WQ">

@@ -1004,7 +1116,7 @@
     <styles xmi:type="notation:ConnectorStyle" xmi:id="_oVDoALbJEd-HcNahxkfV5A" lineColor="4210752"/>

     <styles xmi:type="notation:FontStyle" xmi:id="_oVDoAbbJEd-HcNahxkfV5A" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>

     <element xmi:type="ecore:EReference" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFormalReview/phaseOwner"/>

-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_oVDoArbJEd-HcNahxkfV5A" points="[0, 1, 235, -779]$[6, 384, 241, -396]$[-150, 528, 85, -252]$[-221, 739, 14, -41]"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_oVDoArbJEd-HcNahxkfV5A" points="[0, 1, 235, -779]$[6, 384, 241, -396]$[-174, 432, 61, -348]$[-221, 701, 14, -79]"/>

     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oVHSYLbJEd-HcNahxkfV5A" id="(0.9082125603864735,0.990990990990991)"/>

     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oVHSYbbJEd-HcNahxkfV5A" id="(0.9323671497584541,0.7967479674796748)"/>

   </edges>

@@ -1082,9 +1194,9 @@
     <styles xmi:type="notation:ConnectorStyle" xmi:id="_fJiHUcTlEd-et90B0t7vvA" lineColor="4210752"/>

     <styles xmi:type="notation:FontStyle" xmi:id="_fJiHUsTlEd-et90B0t7vvA" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>

     <element xmi:type="ecore:EReference" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EParticipant/reviewedContent"/>

-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fJiHU8TlEd-et90B0t7vvA" points="[11, -15, -50, 72]$[62, -81, 1, 6]"/>

-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fJnm4MTlEd-et90B0t7vvA" id="(0.00966183574879227,0.8536585365853658)"/>

-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fJnm4cTlEd-et90B0t7vvA" id="(0.9083969465648855,0.16176470588235295)"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fJiHU8TlEd-et90B0t7vvA" points="[-35, 7, 384, -9]$[-80, 16, 339, 0]$[-407, 16, 12, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fJnm4MTlEd-et90B0t7vvA" id="(0.22705314009661837,0.9512195121951219)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fJnm4cTlEd-et90B0t7vvA" id="(0.9847328244274809,0.2647058823529412)"/>

   </edges>

   <edges xmi:type="notation:Edge" xmi:id="_r9uWAMWqEd-OHt4UvkWdIw" type="3002" source="_e5Wm0LX-Ed-Xj-3H8XK7WQ" target="_zSKCYMWpEd-OHt4UvkWdIw">

     <children xmi:type="notation:Node" xmi:id="_r9u9EMWqEd-OHt4UvkWdIw" type="4011">

@@ -1129,7 +1241,7 @@
   </edges>

   <edges xmi:type="notation:Edge" xmi:id="_Nn9EYOHYEd-yzYXzzLJ5Xg" type="3002" source="_NjunULqqEd-6aOwQ22t3_g" target="_gMAywMW7Ed-OHt4UvkWdIw">

     <children xmi:type="notation:Node" xmi:id="_Nn9rcOHYEd-yzYXzzLJ5Xg" type="4011">

-      <layoutConstraint xmi:type="notation:Location" xmi:id="_Nn9rceHYEd-yzYXzzLJ5Xg" x="-18" y="-58"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_Nn9rceHYEd-yzYXzzLJ5Xg" x="-12" y="-53"/>

     </children>

     <children xmi:type="notation:Node" xmi:id="_Nn9rcuHYEd-yzYXzzLJ5Xg" type="4012">

       <layoutConstraint xmi:type="notation:Location" xmi:id="_Nn9rc-HYEd-yzYXzzLJ5Xg" x="-1" y="-23"/>

@@ -1313,7 +1425,7 @@
     <styles xmi:type="notation:FontStyle" xmi:id="_A0LGUukfEd--FZQPkuXOdg" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>

     <element xmi:type="ecore:EReference" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EUser/addedItems"/>

     <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_A0LGU-kfEd--FZQPkuXOdg" points="[49, -1, -775, 346]$[606, -9, -218, 338]$[798, -306, -26, 41]"/>

-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A0U3VOkfEd--FZQPkuXOdg" id="(0.7231638418079096,0.14705882352941177)"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A0U3VOkfEd--FZQPkuXOdg" id="(0.9634703196347032,0.3401360544217687)"/>

     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A0U3VekfEd--FZQPkuXOdg" id="(0.033783783783783786,0.49411764705882355)"/>

   </edges>

   <edges xmi:type="notation:Edge" xmi:id="_chtOQOkoEd--FZQPkuXOdg" type="3002" source="_e5Wm0LX-Ed-Xj-3H8XK7WQ" target="_OTjUAekIEd--FZQPkuXOdg">

@@ -1363,7 +1475,7 @@
     <styles xmi:type="notation:ConnectorStyle" xmi:id="_w5YNYempEd-9SopSv7VwjA" routing="Rectilinear" lineColor="4210752"/>

     <styles xmi:type="notation:FontStyle" xmi:id="_w5YNYumpEd-9SopSv7VwjA" fontName="Segoe UI"/>

     <element xsi:nil="true"/>

-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w5YNY-mpEd-9SopSv7VwjA" points="[6, -7, 299, 311]$[6, -319, 299, -1]$[-160, -319, 133, -1]$[-160, -312, 133, 6]$[-290, -312, 3, 6]"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w5YNY-mpEd-9SopSv7VwjA" points="[8, -7, 301, 359]$[8, -355, 301, 11]$[-290, -355, 3, 11]"/>

     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w5ce0OmpEd-9SopSv7VwjA" id="(0.6470588235294118,0.18604651162790697)"/>

     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0k-8cOmpEd-9SopSv7VwjA" id="(0.9758064516129032,0.046511627906976744)"/>

   </edges>

@@ -1376,7 +1488,7 @@
   </edges>

   <edges xmi:type="notation:Edge" xmi:id="_nk2RgOmqEd-9SopSv7VwjA" type="3002" source="_jr4t0OmoEd-9SopSv7VwjA" target="_9EsdcLt3Ed-VvI-hm1I52A">

     <children xmi:type="notation:Node" xmi:id="_nk24kOmqEd-9SopSv7VwjA" type="4011">

-      <layoutConstraint xmi:type="notation:Location" xmi:id="_nk24kemqEd-9SopSv7VwjA" x="145" y="16"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_nk24kemqEd-9SopSv7VwjA" x="145" y="9"/>

     </children>

     <children xmi:type="notation:Node" xmi:id="_nk24kumqEd-9SopSv7VwjA" type="4012">

       <layoutConstraint xmi:type="notation:Location" xmi:id="_nk24k-mqEd-9SopSv7VwjA" x="176" y="16"/>

@@ -1384,7 +1496,7 @@
     <styles xmi:type="notation:ConnectorStyle" xmi:id="_nk2RgemqEd-9SopSv7VwjA" lineColor="4210752"/>

     <styles xmi:type="notation:FontStyle" xmi:id="_nk2RgumqEd-9SopSv7VwjA" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>

     <element xmi:type="ecore:EReference" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EIDComponent/id"/>

-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nk2Rg-mqEd-9SopSv7VwjA" points="[0, 10, 756, -578]$[0, 377, 756, -211]$[-286, 588, 470, 0]$[-745, 588, 11, 0]"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nk2Rg-mqEd-9SopSv7VwjA" points="[0, 10, 756, -578]$[-10, 353, 746, -235]$[-286, 588, 470, 0]$[-745, 588, 11, 0]"/>

     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nk6i8OmqEd-9SopSv7VwjA" id="(0.5806451612903226,0.7674418604651163)"/>

     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nk6i8emqEd-9SopSv7VwjA" id="(0.916030534351145,0.6617647058823529)"/>

   </edges>

@@ -1427,7 +1539,7 @@
     <styles xmi:type="notation:FontStyle" xmi:id="_-yvXoumuEd-9SopSv7VwjA" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>

     <element xmi:type="ecore:EReference" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapIDToComponent/value"/>

     <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-yvXo-muEd-9SopSv7VwjA" points="[2, -8, -54, 253]$[57, -240, 1, 21]"/>

-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-y03MOmuEd-9SopSv7VwjA" id="(0.6385542168674698,0.20930232558139536)"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-y03MOmuEd-9SopSv7VwjA" id="(0.9156626506024096,0.3488372093023256)"/>

     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-y03MemuEd-9SopSv7VwjA" id="(0.13709677419354838,0.4883720930232558)"/>

   </edges>

   <edges xmi:type="notation:Edge" xmi:id="_1i6mgOm4Ed-9SopSv7VwjA" type="3002" source="_e5dUgrX-Ed-Xj-3H8XK7WQ" target="_xJ9a4LbDEd-HcNahxkfV5A">

@@ -1487,7 +1599,7 @@
   </edges>

   <edges xmi:type="notation:Edge" xmi:id="_-KQm8OtREd--H94fXRIifg" type="3002" source="_e5dUgrX-Ed-Xj-3H8XK7WQ" target="_WQ-ZIOmuEd-9SopSv7VwjA">

     <children xmi:type="notation:Node" xmi:id="_-KScIOtREd--H94fXRIifg" type="4011">

-      <layoutConstraint xmi:type="notation:Location" xmi:id="_-KScIetREd--H94fXRIifg" x="-10" y="-10"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_-KScIetREd--H94fXRIifg" x="-6" y="-6"/>

     </children>

     <children xmi:type="notation:Node" xmi:id="_-KScIutREd--H94fXRIifg" type="4012">

       <layoutConstraint xmi:type="notation:Location" xmi:id="_-KScI-tREd--H94fXRIifg" x="10" y="10"/>

@@ -1515,17 +1627,17 @@
   </edges>

   <edges xmi:type="notation:Edge" xmi:id="_qlz7IPP9Ed-0svOvi6MM0A" type="3002" source="_ruqP4PfqEd-WaLZjXTHHFA" target="_jeN-UOHeEd-yzYXzzLJ5Xg">

     <children xmi:type="notation:Node" xmi:id="_qlz7JPP9Ed-0svOvi6MM0A" type="4011">

-      <layoutConstraint xmi:type="notation:Location" xmi:id="_qlz7JfP9Ed-0svOvi6MM0A" x="-10" y="-10"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_qlz7JfP9Ed-0svOvi6MM0A" x="19" y="-28"/>

     </children>

     <children xmi:type="notation:Node" xmi:id="_qlz7JvP9Ed-0svOvi6MM0A" type="4012">

-      <layoutConstraint xmi:type="notation:Location" xmi:id="_qlz7J_P9Ed-0svOvi6MM0A" x="10" y="10"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_qlz7J_P9Ed-0svOvi6MM0A" x="-1" y="-13"/>

     </children>

     <styles xmi:type="notation:ConnectorStyle" xmi:id="_qlz7IfP9Ed-0svOvi6MM0A" lineColor="4210752"/>

     <styles xmi:type="notation:FontStyle" xmi:id="_qlz7IvP9Ed-0svOvi6MM0A" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>

     <element xmi:type="ecore:EReference" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyTextPosition/file"/>

-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qlz7I_P9Ed-0svOvi6MM0A" points="[2, -6, 1, 112]$[2, -92, 1, 26]"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qlz7I_P9Ed-0svOvi6MM0A" points="[9, -6, -179, 134]$[112, -90, -76, 50]$[137, -107, -51, 33]"/>

     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qlz7KPP9Ed-0svOvi6MM0A" id="(0.6162790697674418,0.1320754716981132)"/>

-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qlz7KfP9Ed-0svOvi6MM0A" id="(0.5,0.7815126050420168)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qlz7KfP9Ed-0svOvi6MM0A" id="(0.0449438202247191,0.6797385620915033)"/>

   </edges>

   <edges xmi:type="notation:Edge" xmi:id="_6vApoPfqEd-WaLZjXTHHFA" type="3003" source="_ruqP4PfqEd-WaLZjXTHHFA" target="_e5vBVLX-Ed-Xj-3H8XK7WQ">

     <styles xmi:type="notation:ConnectorStyle" xmi:id="_6vBQsPfqEd-WaLZjXTHHFA" routing="Rectilinear" lineColor="4210752"/>

@@ -1539,7 +1651,71 @@
     <styles xmi:type="notation:ConnectorStyle" xmi:id="_39uhoS5MEeCiNYXZ8-OQ4Q" routing="Rectilinear" lineColor="4210752"/>

     <styles xmi:type="notation:FontStyle" xmi:id="_39uhoi5MEeCiNYXZ8-OQ4Q" fontName="Segoe UI"/>

     <element xsi:nil="true"/>

-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_39uhoy5MEeCiNYXZ8-OQ4Q" points="[87, -11, 308, 184]$[126, -11, 347, 184]$[126, -194, 347, 1]$[-160, -194, 61, 1]"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_39uhoy5MEeCiNYXZ8-OQ4Q" points="[131, -3, 338, 245]$[140, -3, 347, 245]$[140, -244, 347, 4]$[-146, -244, 61, 4]"/>

     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_39uhpC5MEeCiNYXZ8-OQ4Q" id="(0.17757009345794392,0.5813953488372093)"/>

   </edges>

+  <edges xmi:type="notation:Edge" xmi:id="_uNgp8EQzEeCXbIx_qEv2wA" type="3003" source="_xJ9a4LbDEd-HcNahxkfV5A" target="_0EcyQMW6Ed-OHt4UvkWdIw">

+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_uNgp8UQzEeCXbIx_qEv2wA" routing="Rectilinear" lineColor="4210752"/>

+    <styles xmi:type="notation:FontStyle" xmi:id="_uNgp8kQzEeCXbIx_qEv2wA" fontName="Segoe UI"/>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uNgp80QzEeCXbIx_qEv2wA" points="[14, 6, -508, 448]$[361, 6, -161, 448]$[361, -166, -161, 276]$[517, -166, -5, 276]$[517, -437, -5, 5]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uNkUUEQzEeCXbIx_qEv2wA" id="(0.9360730593607306,0.07482993197278912)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7-hiwEQzEeCXbIx_qEv2wA" id="(0.10526315789473684,0.8837209302325582)"/>

+  </edges>

+  <edges xmi:type="notation:Edge" xmi:id="_FFqUIEQ5EeCXbIx_qEv2wA" type="3002" source="_UghugLeCEd-lI8UEEXo2gw" target="_PZB20EQ4EeCXbIx_qEv2wA">

+    <children xmi:type="notation:Node" xmi:id="_FFriQEQ5EeCXbIx_qEv2wA" type="4011">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_FFriQUQ5EeCXbIx_qEv2wA" x="-10" y="-10"/>

+    </children>

+    <children xmi:type="notation:Node" xmi:id="_FFriQkQ5EeCXbIx_qEv2wA" type="4012">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_FFriQ0Q5EeCXbIx_qEv2wA" x="10" y="10"/>

+    </children>

+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_FFqUIUQ5EeCXbIx_qEv2wA" lineColor="4210752"/>

+    <styles xmi:type="notation:FontStyle" xmi:id="_FFqUIkQ5EeCXbIx_qEv2wA" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>

+    <element xmi:type="ecore:EReference" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EParticipant/timeLog"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FFqUI0Q5EeCXbIx_qEv2wA" points="[-5, 0, 445, 25]$[-413, 0, 37, 25]$[-444, -21, 6, 4]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FFulkEQ5EeCXbIx_qEv2wA" id="(0.028985507246376812,0.8211382113821138)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FFvMoEQ5EeCXbIx_qEv2wA" id="(0.31788079470198677,0.9411764705882353)"/>

+  </edges>

+  <edges xmi:type="notation:Edge" xmi:id="_1ddI0EQ7EeCXbIx_qEv2wA" type="3002" source="_NjunULqqEd-6aOwQ22t3_g" target="_N2lFQEQ7EeCXbIx_qEv2wA">

+    <children xmi:type="notation:Node" xmi:id="_1deW8EQ7EeCXbIx_qEv2wA" type="4011">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_1deW8UQ7EeCXbIx_qEv2wA" x="44" y="-35"/>

+    </children>

+    <children xmi:type="notation:Node" xmi:id="_1deW8kQ7EeCXbIx_qEv2wA" type="4012">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_1deW80Q7EeCXbIx_qEv2wA" x="15" y="-16"/>

+    </children>

+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_1ddI0UQ7EeCXbIx_qEv2wA" lineColor="4210752"/>

+    <styles xmi:type="notation:FontStyle" xmi:id="_1ddI0kQ7EeCXbIx_qEv2wA" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>

+    <element xmi:type="ecore:EReference" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EItem/infoAtt"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1ddI00Q7EeCXbIx_qEv2wA" points="[16, 1, -111, -6]$[128, -14, 1, -21]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1dhaQEQ7EeCXbIx_qEv2wA" id="(0.9012345679012346,0.09803921568627451)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1diBUEQ7EeCXbIx_qEv2wA" id="(0.1871345029239766,0.3235294117647059)"/>

+  </edges>

+  <edges xmi:type="notation:Edge" xmi:id="_EOQDoEQ8EeCXbIx_qEv2wA" type="3002" source="_gMAywMW7Ed-OHt4UvkWdIw" target="_N2lFQEQ7EeCXbIx_qEv2wA">

+    <children xmi:type="notation:Node" xmi:id="_EOQqsEQ8EeCXbIx_qEv2wA" type="4011">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_EOQqsUQ8EeCXbIx_qEv2wA" x="-50" y="-30"/>

+    </children>

+    <children xmi:type="notation:Node" xmi:id="_EORRwEQ8EeCXbIx_qEv2wA" type="4012">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_EORRwUQ8EeCXbIx_qEv2wA" x="-31" y="-8"/>

+    </children>

+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_EOQDoUQ8EeCXbIx_qEv2wA" lineColor="4210752"/>

+    <styles xmi:type="notation:FontStyle" xmi:id="_EOQDokQ8EeCXbIx_qEv2wA" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>

+    <element xmi:type="ecore:EReference" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileContext/infoAtt"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EOQDo0Q8EeCXbIx_qEv2wA" points="[13, -6, -148, 69]$[106, -48, -55, 27]$[143, -66, -18, 9]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EOUVEEQ8EeCXbIx_qEv2wA" id="(0.9192546583850931,0.2549019607843137)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EOUVEUQ8EeCXbIx_qEv2wA" id="(0.39766081871345027,0.8676470588235294)"/>

+  </edges>

+  <edges xmi:type="notation:Edge" xmi:id="_QAxPcEQ8EeCXbIx_qEv2wA" type="3002" source="_jeN-UOHeEd-yzYXzzLJ5Xg" target="_N2lFQEQ7EeCXbIx_qEv2wA">

+    <children xmi:type="notation:Node" xmi:id="_QAxPdEQ8EeCXbIx_qEv2wA" type="4011">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_QAxPdUQ8EeCXbIx_qEv2wA" x="-16" y="-8"/>

+    </children>

+    <children xmi:type="notation:Node" xmi:id="_QAxPdkQ8EeCXbIx_qEv2wA" type="4012">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_QAxPd0Q8EeCXbIx_qEv2wA" x="12" y="-5"/>

+    </children>

+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_QAxPcUQ8EeCXbIx_qEv2wA" lineColor="4210752"/>

+    <styles xmi:type="notation:FontStyle" xmi:id="_QAxPckQ8EeCXbIx_qEv2wA" fontColor="4210752" fontName="Segoe UI" fontHeight="10"/>

+    <element xmi:type="ecore:EReference" href="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileVersion/infoAtt"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QAxPc0Q8EeCXbIx_qEv2wA" points="[21, -11, -310, 178]$[333, -185, 2, 4]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QAxPeEQ8EeCXbIx_qEv2wA" id="(0.8820224719101124,0.0784313725490196)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QAxPeUQ8EeCXbIx_qEv2wA" id="(0.7485380116959064,0.9411764705882353)"/>

+  </edges>

 </notation:Diagram>

diff --git a/org.eclipse.mylyn.reviews.r4e.core/model/r4e.genmodel b/org.eclipse.mylyn.reviews.r4e.core/model/r4e.genmodel
index cd136d2..7269af9 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/model/r4e.genmodel
+++ b/org.eclipse.mylyn.reviews.r4e.core/model/r4e.genmodel
@@ -16,8 +16,8 @@
       <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyState/R4E_ANOMALY_STATE_FIXED"/>

       <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyState/R4E_ANOMALY_STATE_DUPLICATED"/>

       <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyState/R4E_ANOMALY_STATE_REJECTED"/>

-      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyState/R4E_ANOMALY_STATE_POSTPONED"/>

-      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyState/R4E_ANOMALY_SATE_VERIFIED"/>

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyState/R4E_ANOMALY_STATE_DEFERRED"/>

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyState/R4E_ANOMALY_STATE_VERIFIED"/>

     </genEnums>

     <genEnums typeSafeEnumCompatible="false" ecoreEnum="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyRank">

       <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyRank/R4E_ANOMALY_RANK_NONE"/>

@@ -48,12 +48,23 @@
       <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReviewType/R4E_REVIEW_TYPE_INFORMAL"/>

       <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReviewType/R4E_REVIEW_TYPE_FORMAL"/>

     </genEnums>

-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentEnum">

-      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentEnum/R4E_COMMENT_BASE"/>

+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentClass">

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentClass/R4E_CLASS_ERRONEOUS"/>

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentClass/R4E_CLASS_SUPERFLUOUS"/>

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentClass/R4E_CLASS_IMPROVEMENT"/>

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ECommentClass/R4E_CLASS_QUESTION"/>

+    </genEnums>

+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EContextType">

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EContextType/R4E_UNDEFINED"/>

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EContextType/R4E_ADDED"/>

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EContextType/R4E_DELETED"/>

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EContextType/R4E_MODIFIED"/>

+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EContextType/R4E_REPLACED"/>

     </genEnums>

     <genDataTypes ecoreDataType="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MylynTask"/>

     <genDataTypes ecoreDataType="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//IResource"/>

     <genDataTypes ecoreDataType="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//URI"/>

+    <genDataTypes ecoreDataType="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//IFileRevision"/>

     <genClasses ecoreClass="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReviewGroup">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReviewGroup/name"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReviewGroup/folder"/>

@@ -69,7 +80,6 @@
     </genClasses>

     <genClasses ecoreClass="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReview">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReview/name"/>

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReview/creationDate"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReview/project"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReview/components"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EReview/entryCriteria"/>

@@ -102,7 +112,7 @@
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomaly/fixedInVersion"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomaly/ruleID"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomaly/decidedByID"/>

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomaly/fiexeByID"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomaly/fixedByID"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomaly/followUpByID"/>

     </genClasses>

     <genClasses ecoreClass="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFormalReview">

@@ -135,10 +145,10 @@
     </genClasses>

     <genClasses ecoreClass="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EParticipant">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EParticipant/roles"/>

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EParticipant/spentTime"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EParticipant/focusArea"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EParticipant/isPartOfDecision"/>

       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EParticipant/reviewedContent"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EParticipant/timeLog"/>

     </genClasses>

     <genClasses ecoreClass="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EItem">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EItem/xmlVersion"/>

@@ -147,6 +157,9 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EItem/fileContextList"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EItem/repositoryRef"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EItem/ProjectURIs"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EItem/authorRep"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EItem/submitted"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EItem/infoAtt"/>

     </genClasses>

     <genClasses ecoreClass="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ETextContent">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4ETextContent/content"/>

@@ -173,6 +186,8 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileContext/deltas"/>

       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileContext/base"/>

       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileContext/target"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileContext/type"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileContext/infoAtt"/>

     </genClasses>

     <genClasses ecoreClass="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EDelta">

       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EDelta/base"/>

@@ -196,6 +211,9 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileVersion/repositoryPath"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileVersion/name"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileVersion/resource"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileVersion/localVersionID"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileVersion/fileRevision"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EFileVersion/infoAtt"/>

     </genClasses>

     <genClasses ecoreClass="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapNameToReview">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapNameToReview/key"/>

@@ -226,5 +244,13 @@
     <genClasses ecoreClass="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyTextPosition">

       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.mylyn.reviews.r4e.core.model.ecore#//R4EAnomalyTextPosition/file"/>

     </genClasses>

+    <genClasses ecoreClass="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapDateToDuration">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapDateToDuration/key"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapDateToDuration/value"/>

+    </genClasses>

+    <genClasses ecoreClass="org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapKeyToInfoAttributes">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapKeyToInfoAttributes/key"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.mylyn.reviews.r4e.core.model.ecore#//MapKeyToInfoAttributes/value"/>

+    </genClasses>

   </genPackages>

 </genmodel:GenModel>

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EAnomaly.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EAnomaly.java
index 76b3909..ba4674a 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EAnomaly.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EAnomaly.java
@@ -43,7 +43,7 @@
  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getFixedInVersion <em>Fixed In Version</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getRuleID <em>Rule ID</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getDecidedByID <em>Decided By ID</em>}</li>

- *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getFiexeByID <em>Fiexe By ID</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getFixedByID <em>Fixed By ID</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getFollowUpByID <em>Follow Up By ID</em>}</li>

  * </ul>

  * </p>

@@ -450,30 +450,30 @@
 	void setDecidedByID(String value);

 

 	/**

-	 * Returns the value of the '<em><b>Fiexe By ID</b></em>' attribute.

+	 * Returns the value of the '<em><b>Fixed By ID</b></em>' attribute.

 	 * <!-- begin-user-doc -->

 	 * <p>

-	 * If the meaning of the '<em>Fiexe By ID</em>' attribute isn't clear,

+	 * If the meaning of the '<em>Fixed By ID</em>' attribute isn't clear,

 	 * there really should be more of a description here...

 	 * </p>

 	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Fiexe By ID</em>' attribute.

-	 * @see #setFiexeByID(String)

-	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EAnomaly_FiexeByID()

+	 * @return the value of the '<em>Fixed By ID</em>' attribute.

+	 * @see #setFixedByID(String)

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EAnomaly_FixedByID()

 	 * @model

 	 * @generated

 	 */

-	String getFiexeByID();

+	String getFixedByID();

 

 	/**

-	 * Sets the value of the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getFiexeByID <em>Fiexe By ID</em>}' attribute.

+	 * Sets the value of the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getFixedByID <em>Fixed By ID</em>}' attribute.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Fiexe By ID</em>' attribute.

-	 * @see #getFiexeByID()

+	 * @param value the new value of the '<em>Fixed By ID</em>' attribute.

+	 * @see #getFixedByID()

 	 * @generated

 	 */

-	void setFiexeByID(String value);

+	void setFixedByID(String value);

 

 	/**

 	 * Returns the value of the '<em><b>Follow Up By ID</b></em>' attribute.

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EAnomalyState.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EAnomalyState.java
index 0f5f4a4..cfebe47 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EAnomalyState.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EAnomalyState.java
@@ -91,24 +91,22 @@
 	R4E_ANOMALY_STATE_REJECTED(2, "R4E_ANOMALY_STATE_REJECTED", "R4E_ANOMALY_STATE_REJECTED"),

 

 	/**

-	 * The '<em><b>R4E ANOMALY STATE POSTPONED</b></em>' literal object.

+	 * The '<em><b>R4E ANOMALY STATE DEFERRED</b></em>' literal object.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

-	 * @see #R4E_ANOMALY_STATE_POSTPONED_VALUE

+	 * @see #R4E_ANOMALY_STATE_DEFERRED_VALUE

 	 * @generated

 	 * @ordered

 	 */

-	R4E_ANOMALY_STATE_POSTPONED(3, "R4E_ANOMALY_STATE_POSTPONED", "R4E_ANOMALY_STATE_POSTPONED"),

-

-	/**

-	 * The '<em><b>R4E ANOMALY SATE VERIFIED</b></em>' literal object.

+	R4E_ANOMALY_STATE_DEFERRED(3, "R4E_ANOMALY_STATE_DEFERRED", "R4E_ANOMALY_STATE_DEFERRED"), /**

+	 * The '<em><b>R4E ANOMALY STATE VERIFIED</b></em>' literal object.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

-	 * @see #R4E_ANOMALY_SATE_VERIFIED_VALUE

+	 * @see #R4E_ANOMALY_STATE_VERIFIED_VALUE

 	 * @generated

 	 * @ordered

 	 */

-	R4E_ANOMALY_SATE_VERIFIED(6, "R4E_ANOMALY_SATE_VERIFIED", "R4E_ANOMALY_SATE_VERIFIED");

+	R4E_ANOMALY_STATE_VERIFIED(6, "R4E_ANOMALY_STATE_VERIFIED", "R4E_ANOMALY_STATE_VERIFIED");

 

 	/**

 	 * The '<em><b>R4E ANOMALY STATE CREATED</b></em>' literal value.

@@ -201,34 +199,34 @@
 	public static final int R4E_ANOMALY_STATE_REJECTED_VALUE = 2;

 

 	/**

-	 * The '<em><b>R4E ANOMALY STATE POSTPONED</b></em>' literal value.

+	 * The '<em><b>R4E ANOMALY STATE DEFERRED</b></em>' literal value.

 	 * <!-- begin-user-doc -->

 	 * <p>

-	 * If the meaning of '<em><b>R4E ANOMALY STATE POSTPONED</b></em>' literal object isn't clear,

+	 * If the meaning of '<em><b>R4E ANOMALY STATE DEFERRED</b></em>' literal object isn't clear,

 	 * there really should be more of a description here...

 	 * </p>

 	 * <!-- end-user-doc -->

-	 * @see #R4E_ANOMALY_STATE_POSTPONED

+	 * @see #R4E_ANOMALY_STATE_DEFERRED

 	 * @model

 	 * @generated

 	 * @ordered

 	 */

-	public static final int R4E_ANOMALY_STATE_POSTPONED_VALUE = 3;

+	public static final int R4E_ANOMALY_STATE_DEFERRED_VALUE = 3;

 

 	/**

-	 * The '<em><b>R4E ANOMALY SATE VERIFIED</b></em>' literal value.

+	 * The '<em><b>R4E ANOMALY STATE VERIFIED</b></em>' literal value.

 	 * <!-- begin-user-doc -->

 	 * <p>

-	 * If the meaning of '<em><b>R4E ANOMALY SATE VERIFIED</b></em>' literal object isn't clear,

+	 * If the meaning of '<em><b>R4E ANOMALY STATE VERIFIED</b></em>' literal object isn't clear,

 	 * there really should be more of a description here...

 	 * </p>

 	 * <!-- end-user-doc -->

-	 * @see #R4E_ANOMALY_SATE_VERIFIED

+	 * @see #R4E_ANOMALY_STATE_VERIFIED

 	 * @model

 	 * @generated

 	 * @ordered

 	 */

-	public static final int R4E_ANOMALY_SATE_VERIFIED_VALUE = 6;

+	public static final int R4E_ANOMALY_STATE_VERIFIED_VALUE = 6;

 

 	/**

 	 * An array of all the '<em><b>R4E Anomaly State</b></em>' enumerators.

@@ -244,8 +242,8 @@
 			R4E_ANOMALY_STATE_FIXED,

 			R4E_ANOMALY_STATE_DUPLICATED,

 			R4E_ANOMALY_STATE_REJECTED,

-			R4E_ANOMALY_STATE_POSTPONED,

-			R4E_ANOMALY_SATE_VERIFIED,

+			R4E_ANOMALY_STATE_DEFERRED,

+			R4E_ANOMALY_STATE_VERIFIED,

 		};

 

 	/**

@@ -302,8 +300,8 @@
 			case R4E_ANOMALY_STATE_FIXED_VALUE: return R4E_ANOMALY_STATE_FIXED;

 			case R4E_ANOMALY_STATE_DUPLICATED_VALUE: return R4E_ANOMALY_STATE_DUPLICATED;

 			case R4E_ANOMALY_STATE_REJECTED_VALUE: return R4E_ANOMALY_STATE_REJECTED;

-			case R4E_ANOMALY_STATE_POSTPONED_VALUE: return R4E_ANOMALY_STATE_POSTPONED;

-			case R4E_ANOMALY_SATE_VERIFIED_VALUE: return R4E_ANOMALY_SATE_VERIFIED;

+			case R4E_ANOMALY_STATE_DEFERRED_VALUE: return R4E_ANOMALY_STATE_DEFERRED;

+			case R4E_ANOMALY_STATE_VERIFIED_VALUE: return R4E_ANOMALY_STATE_VERIFIED;

 		}

 		return null;

 	}

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4ECommentClass.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4ECommentClass.java
new file mode 100644
index 0000000..84f45ee
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4ECommentClass.java
@@ -0,0 +1,274 @@
+/**

+ * Copyright (c) 2010 Ericsson

+ *  

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * Contributors:

+ * Alvaro Sanchez-Leon  - Initial API and implementation

+ * 

+ */

+package org.eclipse.mylyn.reviews.r4e.core.model;

+

+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>R4E Comment Class</b></em>',

+ * and utility methods for working with them.

+ * <!-- end-user-doc -->

+ * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4ECommentClass()

+ * @model

+ * @generated

+ */

+public enum R4ECommentClass implements Enumerator {

+	/**

+	 * The '<em><b>R4E CLASS ERRONEOUS</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #R4E_CLASS_ERRONEOUS_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	R4E_CLASS_ERRONEOUS(0, "R4E_CLASS_ERRONEOUS", "R4E_CLASS_ERRONEOUS"),

+

+	/**

+	 * The '<em><b>R4E CLASS SUPERFLUOUS</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #R4E_CLASS_SUPERFLUOUS_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	R4E_CLASS_SUPERFLUOUS(1, "R4E_CLASS_SUPERFLUOUS", "R4E_CLASS_SUPERFLUOUS"),

+

+	/**

+	 * The '<em><b>R4E CLASS IMPROVEMENT</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #R4E_CLASS_IMPROVEMENT_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	R4E_CLASS_IMPROVEMENT(2, "R4E_CLASS_IMPROVEMENT", "R4E_CLASS_IMPROVEMENT"),

+

+	/**

+	 * The '<em><b>R4E CLASS QUESTION</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #R4E_CLASS_QUESTION_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	R4E_CLASS_QUESTION(3, "R4E_CLASS_QUESTION", "R4E_CLASS_QUESTION");

+

+	/**

+	 * The '<em><b>R4E CLASS ERRONEOUS</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>R4E CLASS ERRONEOUS</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #R4E_CLASS_ERRONEOUS

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int R4E_CLASS_ERRONEOUS_VALUE = 0;

+

+	/**

+	 * The '<em><b>R4E CLASS SUPERFLUOUS</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>R4E CLASS SUPERFLUOUS</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #R4E_CLASS_SUPERFLUOUS

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int R4E_CLASS_SUPERFLUOUS_VALUE = 1;

+

+	/**

+	 * The '<em><b>R4E CLASS IMPROVEMENT</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>R4E CLASS IMPROVEMENT</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #R4E_CLASS_IMPROVEMENT

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int R4E_CLASS_IMPROVEMENT_VALUE = 2;

+

+	/**

+	 * The '<em><b>R4E CLASS QUESTION</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>R4E CLASS QUESTION</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #R4E_CLASS_QUESTION

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int R4E_CLASS_QUESTION_VALUE = 3;

+

+	/**

+	 * An array of all the '<em><b>R4E Comment Class</b></em>' enumerators.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private static final R4ECommentClass[] VALUES_ARRAY =

+		new R4ECommentClass[] {

+			R4E_CLASS_ERRONEOUS,

+			R4E_CLASS_SUPERFLUOUS,

+			R4E_CLASS_IMPROVEMENT,

+			R4E_CLASS_QUESTION,

+		};

+

+	/**

+	 * A public read-only list of all the '<em><b>R4E Comment Class</b></em>' enumerators.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static final List<R4ECommentClass> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));

+

+	/**

+	 * Returns the '<em><b>R4E Comment Class</b></em>' literal with the specified literal value.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static R4ECommentClass get(String literal) {

+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {

+			R4ECommentClass result = VALUES_ARRAY[i];

+			if (result.toString().equals(literal)) {

+				return result;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Returns the '<em><b>R4E Comment Class</b></em>' literal with the specified name.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static R4ECommentClass getByName(String name) {

+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {

+			R4ECommentClass result = VALUES_ARRAY[i];

+			if (result.getName().equals(name)) {

+				return result;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Returns the '<em><b>R4E Comment Class</b></em>' literal with the specified integer value.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static R4ECommentClass get(int value) {

+		switch (value) {

+			case R4E_CLASS_ERRONEOUS_VALUE: return R4E_CLASS_ERRONEOUS;

+			case R4E_CLASS_SUPERFLUOUS_VALUE: return R4E_CLASS_SUPERFLUOUS;

+			case R4E_CLASS_IMPROVEMENT_VALUE: return R4E_CLASS_IMPROVEMENT;

+			case R4E_CLASS_QUESTION_VALUE: return R4E_CLASS_QUESTION;

+		}

+		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 R4ECommentClass(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;

+	}

+	

+} //R4ECommentClass

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4ECommentEnum.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4ECommentEnum.java
deleted file mode 100644
index 7696cf6..0000000
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4ECommentEnum.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/**

- * Copyright (c) 2010 Ericsson

- *  

- * All rights reserved. This program and the accompanying materials are

- * made available under the terms of the Eclipse Public License v1.0 which

- * accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Description:

- * 

- * Contributors:

- * Alvaro Sanchez-Leon  - Initial API and implementation

- * 

- */

-package org.eclipse.mylyn.reviews.r4e.core.model;

-

-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>R4E Comment Enum</b></em>',

- * and utility methods for working with them.

- * <!-- end-user-doc -->

- * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4ECommentEnum()

- * @model

- * @generated

- */

-public enum R4ECommentEnum implements Enumerator {

-	/**

-	 * The '<em><b>R4E COMMENT BASE</b></em>' literal object.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #R4E_COMMENT_BASE_VALUE

-	 * @generated

-	 * @ordered

-	 */

-	R4E_COMMENT_BASE(0, "R4E_COMMENT_BASE", "R4E_COMMENT_BASE");

-

-	/**

-	 * The '<em><b>R4E COMMENT BASE</b></em>' literal value.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of '<em><b>R4E COMMENT BASE</b></em>' literal object isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @see #R4E_COMMENT_BASE

-	 * @model

-	 * @generated

-	 * @ordered

-	 */

-	public static final int R4E_COMMENT_BASE_VALUE = 0;

-

-	/**

-	 * An array of all the '<em><b>R4E Comment Enum</b></em>' enumerators.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	private static final R4ECommentEnum[] VALUES_ARRAY =

-		new R4ECommentEnum[] {

-			R4E_COMMENT_BASE,

-		};

-

-	/**

-	 * A public read-only list of all the '<em><b>R4E Comment Enum</b></em>' enumerators.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public static final List<R4ECommentEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));

-

-	/**

-	 * Returns the '<em><b>R4E Comment Enum</b></em>' literal with the specified literal value.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public static R4ECommentEnum get(String literal) {

-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {

-			R4ECommentEnum result = VALUES_ARRAY[i];

-			if (result.toString().equals(literal)) {

-				return result;

-			}

-		}

-		return null;

-	}

-

-	/**

-	 * Returns the '<em><b>R4E Comment Enum</b></em>' literal with the specified name.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public static R4ECommentEnum getByName(String name) {

-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {

-			R4ECommentEnum result = VALUES_ARRAY[i];

-			if (result.getName().equals(name)) {

-				return result;

-			}

-		}

-		return null;

-	}

-

-	/**

-	 * Returns the '<em><b>R4E Comment Enum</b></em>' literal with the specified integer value.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public static R4ECommentEnum get(int value) {

-		switch (value) {

-			case R4E_COMMENT_BASE_VALUE: return R4E_COMMENT_BASE;

-		}

-		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 R4ECommentEnum(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;

-	}

-	

-} //R4ECommentEnum

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4ECommentType.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4ECommentType.java
index 5226f1e..72cdcef 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4ECommentType.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4ECommentType.java
@@ -35,7 +35,7 @@
 public interface R4ECommentType extends CommentType {

 	/**

 	 * Returns the value of the '<em><b>Type</b></em>' attribute.

-	 * The literals are from the enumeration {@link org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum}.

+	 * The literals are from the enumeration {@link org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass}.

 	 * <!-- begin-user-doc -->

 	 * <p>

 	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

@@ -43,23 +43,23 @@
 	 * </p>

 	 * <!-- end-user-doc -->

 	 * @return the value of the '<em>Type</em>' attribute.

-	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum

-	 * @see #setType(R4ECommentEnum)

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass

+	 * @see #setType(R4ECommentClass)

 	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4ECommentType_Type()

 	 * @model

 	 * @generated

 	 */

-	R4ECommentEnum getType();

+	R4ECommentClass getType();

 

 	/**

 	 * Sets the value of the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentType#getType <em>Type</em>}' attribute.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @param value the new value of the '<em>Type</em>' attribute.

-	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass

 	 * @see #getType()

 	 * @generated

 	 */

-	void setType(R4ECommentEnum value);

+	void setType(R4ECommentClass value);

 

 } // R4ECommentType

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EContextType.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EContextType.java
new file mode 100644
index 0000000..2aff5b6
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EContextType.java
@@ -0,0 +1,301 @@
+/**

+ * Copyright (c) 2010 Ericsson

+ *  

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * Contributors:

+ * Alvaro Sanchez-Leon  - Initial API and implementation

+ * 

+ */

+package org.eclipse.mylyn.reviews.r4e.core.model;

+

+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>R4E Context Type</b></em>',

+ * and utility methods for working with them.

+ * <!-- end-user-doc -->

+ * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EContextType()

+ * @model

+ * @generated

+ */

+public enum R4EContextType implements Enumerator {

+	/**

+	 * The '<em><b>R4E UNDEFINED</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #R4E_UNDEFINED_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	R4E_UNDEFINED(4, "R4E_UNDEFINED", "R4E_UNDEFINED"),

+

+	/**

+	 * The '<em><b>R4E ADDED</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #R4E_ADDED_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	R4E_ADDED(0, "R4E_ADDED", "R4E_ADDED"),

+

+	/**

+	 * The '<em><b>R4E DELETED</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #R4E_DELETED_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	R4E_DELETED(1, "R4E_DELETED", "R4E_DELETED"),

+

+	/**

+	 * The '<em><b>R4E MODIFIED</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #R4E_MODIFIED_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	R4E_MODIFIED(2, "R4E_MODIFIED", "R4E_MODIFIED"),

+

+	/**

+	 * The '<em><b>R4E REPLACED</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #R4E_REPLACED_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	R4E_REPLACED(3, "R4E_REPLACED", "R4E_REPLACED");

+

+	/**

+	 * The '<em><b>R4E UNDEFINED</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>R4E UNDEFINED</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #R4E_UNDEFINED

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int R4E_UNDEFINED_VALUE = 4;

+

+	/**

+	 * The '<em><b>R4E ADDED</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>R4E ADDED</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #R4E_ADDED

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int R4E_ADDED_VALUE = 0;

+

+	/**

+	 * The '<em><b>R4E DELETED</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>R4E DELETED</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #R4E_DELETED

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int R4E_DELETED_VALUE = 1;

+

+	/**

+	 * The '<em><b>R4E MODIFIED</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>R4E MODIFIED</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #R4E_MODIFIED

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int R4E_MODIFIED_VALUE = 2;

+

+	/**

+	 * The '<em><b>R4E REPLACED</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>R4E REPLACED</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #R4E_REPLACED

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int R4E_REPLACED_VALUE = 3;

+

+	/**

+	 * An array of all the '<em><b>R4E Context Type</b></em>' enumerators.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private static final R4EContextType[] VALUES_ARRAY =

+		new R4EContextType[] {

+			R4E_UNDEFINED,

+			R4E_ADDED,

+			R4E_DELETED,

+			R4E_MODIFIED,

+			R4E_REPLACED,

+		};

+

+	/**

+	 * A public read-only list of all the '<em><b>R4E Context Type</b></em>' enumerators.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static final List<R4EContextType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));

+

+	/**

+	 * Returns the '<em><b>R4E Context Type</b></em>' literal with the specified literal value.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static R4EContextType get(String literal) {

+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {

+			R4EContextType result = VALUES_ARRAY[i];

+			if (result.toString().equals(literal)) {

+				return result;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Returns the '<em><b>R4E Context Type</b></em>' literal with the specified name.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static R4EContextType getByName(String name) {

+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {

+			R4EContextType result = VALUES_ARRAY[i];

+			if (result.getName().equals(name)) {

+				return result;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Returns the '<em><b>R4E Context Type</b></em>' literal with the specified integer value.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static R4EContextType get(int value) {

+		switch (value) {

+			case R4E_UNDEFINED_VALUE: return R4E_UNDEFINED;

+			case R4E_ADDED_VALUE: return R4E_ADDED;

+			case R4E_DELETED_VALUE: return R4E_DELETED;

+			case R4E_MODIFIED_VALUE: return R4E_MODIFIED;

+			case R4E_REPLACED_VALUE: return R4E_REPLACED;

+		}

+		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 R4EContextType(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;

+	}

+	

+} //R4EContextType

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EFileContext.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EFileContext.java
index 3851b53..fc899da 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EFileContext.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EFileContext.java
@@ -15,6 +15,7 @@
 package org.eclipse.mylyn.reviews.r4e.core.model;

 

 import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.common.util.EMap;

 

 /**

  * <!-- begin-user-doc -->

@@ -27,6 +28,8 @@
  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext#getDeltas <em>Deltas</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext#getBase <em>Base</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext#getTarget <em>Target</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext#getType <em>Type</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext#getInfoAtt <em>Info Att</em>}</li>

  * </ul>

  * </p>

  *

@@ -103,4 +106,50 @@
 	 * @generated

 	 */

 	void setTarget(R4EFileVersion value);

+

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * The literals are from the enumeration {@link org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType

+	 * @see #setType(R4EContextType)

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EFileContext_Type()

+	 * @model

+	 * @generated

+	 */

+	R4EContextType getType();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext#getType <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Type</em>' attribute.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType

+	 * @see #getType()

+	 * @generated

+	 */

+	void setType(R4EContextType value);

+

+	/**

+	 * Returns the value of the '<em><b>Info Att</b></em>' map.

+	 * The key is of type {@link java.lang.String},

+	 * and the value is of type {@link java.lang.String},

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Info Att</em>' map isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Info Att</em>' map.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EFileContext_InfoAtt()

+	 * @model mapType="org.eclipse.mylyn.reviews.r4e.core.model.MapKeyToInfoAttributes<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString>"

+	 * @generated

+	 */

+	EMap<String, String> getInfoAtt();

 } // R4EFileContext

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EFileVersion.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EFileVersion.java
index 7cfee57..35bec11 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EFileVersion.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EFileVersion.java
@@ -15,8 +15,12 @@
 package org.eclipse.mylyn.reviews.r4e.core.model;

 

 import org.eclipse.core.resources.IResource;

+

+import org.eclipse.emf.common.util.EMap;

 import org.eclipse.emf.ecore.EObject;

 

+import org.eclipse.team.core.history.IFileRevision;

+

 /**

  * <!-- begin-user-doc -->

  * A representation of the model object '<em><b>R4E File Version</b></em>'.

@@ -30,6 +34,9 @@
  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getRepositoryPath <em>Repository Path</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getName <em>Name</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getResource <em>Resource</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getLocalVersionID <em>Local Version ID</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getFileRevision <em>File Revision</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getInfoAtt <em>Info Att</em>}</li>

  * </ul>

  * </p>

  *

@@ -38,7 +45,6 @@
  * @generated

  */

 public interface R4EFileVersion extends EObject {

-

 	/**

 	 * Returns the value of the '<em><b>Platform URI</b></em>' attribute.

 	 * <!-- begin-user-doc -->

@@ -168,4 +174,74 @@
 	 * @generated

 	 */

 	void setResource(IResource value);

+

+	/**

+	 * Returns the value of the '<em><b>Local Version ID</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Local Version ID</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Local Version ID</em>' attribute.

+	 * @see #setLocalVersionID(String)

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EFileVersion_LocalVersionID()

+	 * @model

+	 * @generated

+	 */

+	String getLocalVersionID();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getLocalVersionID <em>Local Version ID</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Local Version ID</em>' attribute.

+	 * @see #getLocalVersionID()

+	 * @generated

+	 */

+	void setLocalVersionID(String value);

+

+	/**

+	 * Returns the value of the '<em><b>File Revision</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>File Revision</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>File Revision</em>' attribute.

+	 * @see #setFileRevision(IFileRevision)

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EFileVersion_FileRevision()

+	 * @model dataType="org.eclipse.mylyn.reviews.r4e.core.model.IFileRevision"

+	 * @generated

+	 */

+	IFileRevision getFileRevision();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getFileRevision <em>File Revision</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>File Revision</em>' attribute.

+	 * @see #getFileRevision()

+	 * @generated

+	 */

+	void setFileRevision(IFileRevision value);

+

+	/**

+	 * Returns the value of the '<em><b>Info Att</b></em>' map.

+	 * The key is of type {@link java.lang.String},

+	 * and the value is of type {@link java.lang.String},

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Info Att</em>' map isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Info Att</em>' map.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EFileVersion_InfoAtt()

+	 * @model mapType="org.eclipse.mylyn.reviews.r4e.core.model.MapKeyToInfoAttributes<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString>"

+	 * @generated

+	 */

+	EMap<String, String> getInfoAtt();

+

 } // R4EFileVersion

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EItem.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EItem.java
index 1d51e9a..0f1c588 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EItem.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EItem.java
@@ -14,8 +14,10 @@
  */

 package org.eclipse.mylyn.reviews.r4e.core.model;

 

+import java.util.Date;

 import org.eclipse.emf.common.util.EList;

 

+import org.eclipse.emf.common.util.EMap;

 import org.eclipse.mylyn.reviews.frame.core.model.Item;

 

 /**

@@ -32,6 +34,9 @@
  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getFileContextList <em>File Context List</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getRepositoryRef <em>Repository Ref</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getProjectURIs <em>Project UR Is</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getAuthorRep <em>Author Rep</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getSubmitted <em>Submitted</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getInfoAtt <em>Info Att</em>}</li>

  * </ul>

  * </p>

  *

@@ -177,4 +182,73 @@
 	 */

 	EList<String> getProjectURIs();

 

+	/**

+	 * Returns the value of the '<em><b>Author Rep</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Author Rep</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Author Rep</em>' attribute.

+	 * @see #setAuthorRep(String)

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EItem_AuthorRep()

+	 * @model

+	 * @generated

+	 */

+	String getAuthorRep();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getAuthorRep <em>Author Rep</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Author Rep</em>' attribute.

+	 * @see #getAuthorRep()

+	 * @generated

+	 */

+	void setAuthorRep(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Submitted</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Submitted</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Submitted</em>' attribute.

+	 * @see #setSubmitted(Date)

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EItem_Submitted()

+	 * @model

+	 * @generated

+	 */

+	Date getSubmitted();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getSubmitted <em>Submitted</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Submitted</em>' attribute.

+	 * @see #getSubmitted()

+	 * @generated

+	 */

+	void setSubmitted(Date value);

+

+	/**

+	 * Returns the value of the '<em><b>Info Att</b></em>' map.

+	 * The key is of type {@link java.lang.String},

+	 * and the value is of type {@link java.lang.String},

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Info Att</em>' map isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Info Att</em>' map.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EItem_InfoAtt()

+	 * @model mapType="org.eclipse.mylyn.reviews.r4e.core.model.MapKeyToInfoAttributes<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString>"

+	 * @generated

+	 */

+	EMap<String, String> getInfoAtt();

+

 } // R4EItem

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EParticipant.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EParticipant.java
index 67c5d85..0d60140 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EParticipant.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EParticipant.java
@@ -14,7 +14,9 @@
  */

 package org.eclipse.mylyn.reviews.r4e.core.model;

 

+import java.util.Date;

 import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.common.util.EMap;

 

 /**

  * <!-- begin-user-doc -->

@@ -25,10 +27,10 @@
  * The following features are supported:

  * <ul>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant#getRoles <em>Roles</em>}</li>

- *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant#getSpentTime <em>Spent Time</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant#getFocusArea <em>Focus Area</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant#isIsPartOfDecision <em>Is Part Of Decision</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant#getReviewedContent <em>Reviewed Content</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant#getTimeLog <em>Time Log</em>}</li>

  * </ul>

  * </p>

  *

@@ -56,32 +58,6 @@
 	EList<R4EUserRole> getRoles();

 

 	/**

-	 * Returns the value of the '<em><b>Spent Time</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Spent Time</em>' attribute isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Spent Time</em>' attribute.

-	 * @see #setSpentTime(int)

-	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EParticipant_SpentTime()

-	 * @model

-	 * @generated

-	 */

-	int getSpentTime();

-

-	/**

-	 * Sets the value of the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant#getSpentTime <em>Spent Time</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Spent Time</em>' attribute.

-	 * @see #getSpentTime()

-	 * @generated

-	 */

-	void setSpentTime(int value);

-

-	/**

 	 * Returns the value of the '<em><b>Focus Area</b></em>' attribute.

 	 * <!-- begin-user-doc -->

 	 * <p>

@@ -149,4 +125,21 @@
 	 */

 	EList<R4EID> getReviewedContent();

 

+	/**

+	 * Returns the value of the '<em><b>Time Log</b></em>' map.

+	 * The key is of type {@link java.util.Date},

+	 * and the value is of type {@link java.lang.Integer},

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Time Log</em>' map isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Time Log</em>' map.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EParticipant_TimeLog()

+	 * @model mapType="org.eclipse.mylyn.reviews.r4e.core.model.MapDateToDuration<org.eclipse.emf.ecore.EDate, org.eclipse.emf.ecore.EIntegerObject>"

+	 * @generated

+	 */

+	EMap<Date, Integer> getTimeLog();

+

 } // R4EParticipant

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EReview.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EReview.java
index a778794..9a3765e 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EReview.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EReview.java
@@ -29,7 +29,6 @@
  * The following features are supported:

  * <ul>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EReview#getName <em>Name</em>}</li>

- *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EReview#getCreationDate <em>Creation Date</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EReview#getProject <em>Project</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EReview#getComponents <em>Components</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EReview#getEntryCriteria <em>Entry Criteria</em>}</li>

@@ -80,32 +79,6 @@
 	void setName(String value);

 

 	/**

-	 * Returns the value of the '<em><b>Creation Date</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <p>

-	 * If the meaning of the '<em>Creation Date</em>' attribute isn't clear,

-	 * there really should be more of a description here...

-	 * </p>

-	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Creation Date</em>' attribute.

-	 * @see #setCreationDate(Date)

-	 * @see org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage#getR4EReview_CreationDate()

-	 * @model

-	 * @generated

-	 */

-	Date getCreationDate();

-

-	/**

-	 * Sets the value of the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EReview#getCreationDate <em>Creation Date</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Creation Date</em>' attribute.

-	 * @see #getCreationDate()

-	 * @generated

-	 */

-	void setCreationDate(Date value);

-

-	/**

 	 * Returns the value of the '<em><b>Project</b></em>' attribute.

 	 * <!-- begin-user-doc -->

 	 * <p>

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EUser.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EUser.java
index 60834c7..a051255 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EUser.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/R4EUser.java
@@ -41,7 +41,7 @@
  * @model

  * @generated

  */

-public interface R4EUser extends User {

+public interface R4EUser extends User, R4EReviewComponent {

 	/**

 	 * Returns the value of the '<em><b>Group Paths</b></em>' attribute list.

 	 * The list contents are of type {@link java.lang.String}.

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/RModelFactory.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/RModelFactory.java
index ef05b45..334d58d 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/RModelFactory.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/RModelFactory.java
@@ -18,6 +18,7 @@
 import org.eclipse.emf.ecore.EFactory;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.Persistence;

 import org.eclipse.mylyn.tasks.core.ITask;

+import org.eclipse.team.core.history.IFileRevision;

 

 /**

  * <!-- begin-user-doc -->

@@ -374,24 +375,44 @@
 	String convertR4EReviewType(R4EReviewType instanceValue);

 

 	/**

-	 * Returns an instance of data type '<em>R4E Comment Enum</em>' corresponding the given literal.

+	 * Returns an instance of data type '<em>R4E Comment Class</em>' corresponding the given literal.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @param literal a literal of the data type.

 	 * @return a new instance value of the data type.

 	 * @generated

 	 */

-	R4ECommentEnum createR4ECommentEnum(String literal);

+	R4ECommentClass createR4ECommentClass(String literal);

 

 	/**

-	 * Returns a literal representation of an instance of data type '<em>R4E Comment Enum</em>'.

+	 * Returns a literal representation of an instance of data type '<em>R4E Comment Class</em>'.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @param instanceValue an instance value of the data type.

 	 * @return a literal representation of the instance value.

 	 * @generated

 	 */

-	String convertR4ECommentEnum(R4ECommentEnum instanceValue);

+	String convertR4ECommentClass(R4ECommentClass instanceValue);

+

+	/**

+	 * Returns an instance of data type '<em>R4E Context Type</em>' corresponding the given literal.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param literal a literal of the data type.

+	 * @return a new instance value of the data type.

+	 * @generated

+	 */

+	R4EContextType createR4EContextType(String literal);

+

+	/**

+	 * Returns a literal representation of an instance of data type '<em>R4E Context Type</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param instanceValue an instance value of the data type.

+	 * @return a literal representation of the instance value.

+	 * @generated

+	 */

+	String convertR4EContextType(R4EContextType instanceValue);

 

 	/**

 	 * Returns an instance of data type '<em>Mylyn Task</em>' corresponding the given literal.

@@ -434,6 +455,26 @@
 	String convertIResource(IResource instanceValue);

 

 	/**

+	 * Returns an instance of data type '<em>IFile Revision</em>' corresponding the given literal.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param literal a literal of the data type.

+	 * @return a new instance value of the data type.

+	 * @generated

+	 */

+	IFileRevision createIFileRevision(String literal);

+

+	/**

+	 * Returns a literal representation of an instance of data type '<em>IFile Revision</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param instanceValue an instance value of the data type.

+	 * @return a literal representation of the instance value.

+	 * @generated

+	 */

+	String convertIFileRevision(IFileRevision instanceValue);

+

+	/**

 	 * Returns the package supported by this factory.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/RModelPackage.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/RModelPackage.java
index 9defc39..fe6d9ad 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/RModelPackage.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/RModelPackage.java
@@ -289,22 +289,13 @@
 	int R4E_REVIEW__NAME = ModelPackage.REVIEW_FEATURE_COUNT + 0;

 

 	/**

-	 * The feature id for the '<em><b>Creation Date</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int R4E_REVIEW__CREATION_DATE = ModelPackage.REVIEW_FEATURE_COUNT + 1;

-

-	/**

 	 * The feature id for the '<em><b>Project</b></em>' attribute.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__PROJECT = ModelPackage.REVIEW_FEATURE_COUNT + 2;

+	int R4E_REVIEW__PROJECT = ModelPackage.REVIEW_FEATURE_COUNT + 1;

 

 	/**

 	 * The feature id for the '<em><b>Components</b></em>' attribute list.

@@ -313,7 +304,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__COMPONENTS = ModelPackage.REVIEW_FEATURE_COUNT + 3;

+	int R4E_REVIEW__COMPONENTS = ModelPackage.REVIEW_FEATURE_COUNT + 2;

 

 	/**

 	 * The feature id for the '<em><b>Entry Criteria</b></em>' attribute.

@@ -322,7 +313,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__ENTRY_CRITERIA = ModelPackage.REVIEW_FEATURE_COUNT + 4;

+	int R4E_REVIEW__ENTRY_CRITERIA = ModelPackage.REVIEW_FEATURE_COUNT + 3;

 

 	/**

 	 * The feature id for the '<em><b>Extra Notes</b></em>' attribute.

@@ -331,7 +322,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__EXTRA_NOTES = ModelPackage.REVIEW_FEATURE_COUNT + 5;

+	int R4E_REVIEW__EXTRA_NOTES = ModelPackage.REVIEW_FEATURE_COUNT + 4;

 

 	/**

 	 * The feature id for the '<em><b>Objectives</b></em>' attribute.

@@ -340,7 +331,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__OBJECTIVES = ModelPackage.REVIEW_FEATURE_COUNT + 6;

+	int R4E_REVIEW__OBJECTIVES = ModelPackage.REVIEW_FEATURE_COUNT + 5;

 

 	/**

 	 * The feature id for the '<em><b>Reference Material</b></em>' attribute.

@@ -349,7 +340,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__REFERENCE_MATERIAL = ModelPackage.REVIEW_FEATURE_COUNT + 7;

+	int R4E_REVIEW__REFERENCE_MATERIAL = ModelPackage.REVIEW_FEATURE_COUNT + 6;

 

 	/**

 	 * The feature id for the '<em><b>Decision</b></em>' containment reference.

@@ -358,7 +349,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__DECISION = ModelPackage.REVIEW_FEATURE_COUNT + 8;

+	int R4E_REVIEW__DECISION = ModelPackage.REVIEW_FEATURE_COUNT + 7;

 

 	/**

 	 * The feature id for the '<em><b>Start Date</b></em>' attribute.

@@ -367,7 +358,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__START_DATE = ModelPackage.REVIEW_FEATURE_COUNT + 9;

+	int R4E_REVIEW__START_DATE = ModelPackage.REVIEW_FEATURE_COUNT + 8;

 

 	/**

 	 * The feature id for the '<em><b>End Date</b></em>' attribute.

@@ -376,7 +367,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__END_DATE = ModelPackage.REVIEW_FEATURE_COUNT + 10;

+	int R4E_REVIEW__END_DATE = ModelPackage.REVIEW_FEATURE_COUNT + 9;

 

 	/**

 	 * The feature id for the '<em><b>Xml Version</b></em>' attribute.

@@ -385,7 +376,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__XML_VERSION = ModelPackage.REVIEW_FEATURE_COUNT + 11;

+	int R4E_REVIEW__XML_VERSION = ModelPackage.REVIEW_FEATURE_COUNT + 10;

 

 	/**

 	 * The feature id for the '<em><b>Anomaly Template</b></em>' containment reference.

@@ -394,7 +385,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__ANOMALY_TEMPLATE = ModelPackage.REVIEW_FEATURE_COUNT + 12;

+	int R4E_REVIEW__ANOMALY_TEMPLATE = ModelPackage.REVIEW_FEATURE_COUNT + 11;

 

 	/**

 	 * The feature id for the '<em><b>Type</b></em>' attribute.

@@ -403,7 +394,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__TYPE = ModelPackage.REVIEW_FEATURE_COUNT + 13;

+	int R4E_REVIEW__TYPE = ModelPackage.REVIEW_FEATURE_COUNT + 12;

 

 	/**

 	 * The feature id for the '<em><b>Users Map</b></em>' map.

@@ -412,7 +403,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__USERS_MAP = ModelPackage.REVIEW_FEATURE_COUNT + 14;

+	int R4E_REVIEW__USERS_MAP = ModelPackage.REVIEW_FEATURE_COUNT + 13;

 

 	/**

 	 * The feature id for the '<em><b>Created By</b></em>' reference.

@@ -421,7 +412,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__CREATED_BY = ModelPackage.REVIEW_FEATURE_COUNT + 15;

+	int R4E_REVIEW__CREATED_BY = ModelPackage.REVIEW_FEATURE_COUNT + 14;

 

 	/**

 	 * The feature id for the '<em><b>Ids Map</b></em>' map.

@@ -430,7 +421,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW__IDS_MAP = ModelPackage.REVIEW_FEATURE_COUNT + 16;

+	int R4E_REVIEW__IDS_MAP = ModelPackage.REVIEW_FEATURE_COUNT + 15;

 

 	/**

 	 * The number of structural features of the '<em>R4E Review</em>' class.

@@ -439,7 +430,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_REVIEW_FEATURE_COUNT = ModelPackage.REVIEW_FEATURE_COUNT + 17;

+	int R4E_REVIEW_FEATURE_COUNT = ModelPackage.REVIEW_FEATURE_COUNT + 16;

 

 	/**

 	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EAnomalyImpl <em>R4E Anomaly</em>}' class.

@@ -695,13 +686,13 @@
 	int R4E_ANOMALY__DECIDED_BY_ID = ModelPackage.TOPIC_FEATURE_COUNT + 17;

 

 	/**

-	 * The feature id for the '<em><b>Fiexe By ID</b></em>' attribute.

+	 * The feature id for the '<em><b>Fixed By ID</b></em>' attribute.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @generated

 	 * @ordered

 	 */

-	int R4E_ANOMALY__FIEXE_BY_ID = ModelPackage.TOPIC_FEATURE_COUNT + 18;

+	int R4E_ANOMALY__FIXED_BY_ID = ModelPackage.TOPIC_FEATURE_COUNT + 18;

 

 	/**

 	 * The feature id for the '<em><b>Follow Up By ID</b></em>' attribute.

@@ -786,15 +777,6 @@
 	int R4E_FORMAL_REVIEW__NAME = R4E_REVIEW__NAME;

 

 	/**

-	 * The feature id for the '<em><b>Creation Date</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int R4E_FORMAL_REVIEW__CREATION_DATE = R4E_REVIEW__CREATION_DATE;

-

-	/**

 	 * The feature id for the '<em><b>Project</b></em>' attribute.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -1114,13 +1096,22 @@
 	int R4E_USER__ID = ModelPackage.USER__ID;

 

 	/**

+	 * The feature id for the '<em><b>Enabled</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int R4E_USER__ENABLED = ModelPackage.USER_FEATURE_COUNT + 0;

+

+	/**

 	 * The feature id for the '<em><b>Group Paths</b></em>' attribute list.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @generated

 	 * @ordered

 	 */

-	int R4E_USER__GROUP_PATHS = ModelPackage.USER_FEATURE_COUNT + 0;

+	int R4E_USER__GROUP_PATHS = ModelPackage.USER_FEATURE_COUNT + 1;

 

 	/**

 	 * The feature id for the '<em><b>Sequence ID Counter</b></em>' attribute.

@@ -1129,7 +1120,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_USER__SEQUENCE_ID_COUNTER = ModelPackage.USER_FEATURE_COUNT + 1;

+	int R4E_USER__SEQUENCE_ID_COUNTER = ModelPackage.USER_FEATURE_COUNT + 2;

 

 	/**

 	 * The feature id for the '<em><b>Added Comments</b></em>' containment reference list.

@@ -1138,7 +1129,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_USER__ADDED_COMMENTS = ModelPackage.USER_FEATURE_COUNT + 2;

+	int R4E_USER__ADDED_COMMENTS = ModelPackage.USER_FEATURE_COUNT + 3;

 

 	/**

 	 * The feature id for the '<em><b>Added Items</b></em>' containment reference list.

@@ -1147,7 +1138,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_USER__ADDED_ITEMS = ModelPackage.USER_FEATURE_COUNT + 3;

+	int R4E_USER__ADDED_ITEMS = ModelPackage.USER_FEATURE_COUNT + 4;

 

 	/**

 	 * The feature id for the '<em><b>Review Created By Me</b></em>' attribute.

@@ -1156,7 +1147,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_USER__REVIEW_CREATED_BY_ME = ModelPackage.USER_FEATURE_COUNT + 4;

+	int R4E_USER__REVIEW_CREATED_BY_ME = ModelPackage.USER_FEATURE_COUNT + 5;

 

 	/**

 	 * The feature id for the '<em><b>Review Instance</b></em>' reference.

@@ -1165,7 +1156,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_USER__REVIEW_INSTANCE = ModelPackage.USER_FEATURE_COUNT + 5;

+	int R4E_USER__REVIEW_INSTANCE = ModelPackage.USER_FEATURE_COUNT + 6;

 

 	/**

 	 * The feature id for the '<em><b>Xml Version</b></em>' attribute.

@@ -1174,7 +1165,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_USER__XML_VERSION = ModelPackage.USER_FEATURE_COUNT + 6;

+	int R4E_USER__XML_VERSION = ModelPackage.USER_FEATURE_COUNT + 7;

 

 	/**

 	 * The feature id for the '<em><b>Review Completed</b></em>' attribute.

@@ -1183,7 +1174,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_USER__REVIEW_COMPLETED = ModelPackage.USER_FEATURE_COUNT + 7;

+	int R4E_USER__REVIEW_COMPLETED = ModelPackage.USER_FEATURE_COUNT + 8;

 

 	/**

 	 * The feature id for the '<em><b>Review Completed Code</b></em>' attribute.

@@ -1192,7 +1183,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_USER__REVIEW_COMPLETED_CODE = ModelPackage.USER_FEATURE_COUNT + 8;

+	int R4E_USER__REVIEW_COMPLETED_CODE = ModelPackage.USER_FEATURE_COUNT + 9;

 

 	/**

 	 * The number of structural features of the '<em>R4E User</em>' class.

@@ -1201,7 +1192,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_USER_FEATURE_COUNT = ModelPackage.USER_FEATURE_COUNT + 9;

+	int R4E_USER_FEATURE_COUNT = ModelPackage.USER_FEATURE_COUNT + 10;

 

 	/**

 	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EParticipantImpl <em>R4E Participant</em>}' class.

@@ -1223,6 +1214,15 @@
 	int R4E_PARTICIPANT__ID = R4E_USER__ID;

 

 	/**

+	 * The feature id for the '<em><b>Enabled</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int R4E_PARTICIPANT__ENABLED = R4E_USER__ENABLED;

+

+	/**

 	 * The feature id for the '<em><b>Group Paths</b></em>' attribute list.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -1313,22 +1313,13 @@
 	int R4E_PARTICIPANT__ROLES = R4E_USER_FEATURE_COUNT + 0;

 

 	/**

-	 * The feature id for the '<em><b>Spent Time</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int R4E_PARTICIPANT__SPENT_TIME = R4E_USER_FEATURE_COUNT + 1;

-

-	/**

 	 * The feature id for the '<em><b>Focus Area</b></em>' attribute.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @generated

 	 * @ordered

 	 */

-	int R4E_PARTICIPANT__FOCUS_AREA = R4E_USER_FEATURE_COUNT + 2;

+	int R4E_PARTICIPANT__FOCUS_AREA = R4E_USER_FEATURE_COUNT + 1;

 

 	/**

 	 * The feature id for the '<em><b>Is Part Of Decision</b></em>' attribute.

@@ -1337,7 +1328,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_PARTICIPANT__IS_PART_OF_DECISION = R4E_USER_FEATURE_COUNT + 3;

+	int R4E_PARTICIPANT__IS_PART_OF_DECISION = R4E_USER_FEATURE_COUNT + 2;

 

 	/**

 	 * The feature id for the '<em><b>Reviewed Content</b></em>' reference list.

@@ -1346,7 +1337,16 @@
 	 * @generated

 	 * @ordered

 	 */

-	int R4E_PARTICIPANT__REVIEWED_CONTENT = R4E_USER_FEATURE_COUNT + 4;

+	int R4E_PARTICIPANT__REVIEWED_CONTENT = R4E_USER_FEATURE_COUNT + 3;

+

+	/**

+	 * The feature id for the '<em><b>Time Log</b></em>' map.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int R4E_PARTICIPANT__TIME_LOG = R4E_USER_FEATURE_COUNT + 4;

 

 	/**

 	 * The number of structural features of the '<em>R4E Participant</em>' class.

@@ -1593,13 +1593,40 @@
 	int R4E_ITEM__PROJECT_UR_IS = R4EID_COMPONENT_FEATURE_COUNT + 7;

 

 	/**

+	 * The feature id for the '<em><b>Author Rep</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int R4E_ITEM__AUTHOR_REP = R4EID_COMPONENT_FEATURE_COUNT + 8;

+

+	/**

+	 * The feature id for the '<em><b>Submitted</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int R4E_ITEM__SUBMITTED = R4EID_COMPONENT_FEATURE_COUNT + 9;

+

+	/**

+	 * The feature id for the '<em><b>Info Att</b></em>' map.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int R4E_ITEM__INFO_ATT = R4EID_COMPONENT_FEATURE_COUNT + 10;

+

+	/**

 	 * The number of structural features of the '<em>R4E Item</em>' class.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @generated

 	 * @ordered

 	 */

-	int R4E_ITEM_FEATURE_COUNT = R4EID_COMPONENT_FEATURE_COUNT + 8;

+	int R4E_ITEM_FEATURE_COUNT = R4EID_COMPONENT_FEATURE_COUNT + 11;

 

 	/**

 	 * The feature id for the '<em><b>Location</b></em>' containment reference.

@@ -1909,13 +1936,31 @@
 	int R4E_FILE_CONTEXT__TARGET = R4EID_COMPONENT_FEATURE_COUNT + 2;

 

 	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int R4E_FILE_CONTEXT__TYPE = R4EID_COMPONENT_FEATURE_COUNT + 3;

+

+	/**

+	 * The feature id for the '<em><b>Info Att</b></em>' map.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int R4E_FILE_CONTEXT__INFO_ATT = R4EID_COMPONENT_FEATURE_COUNT + 4;

+

+	/**

 	 * The number of structural features of the '<em>R4E File Context</em>' class.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @generated

 	 * @ordered

 	 */

-	int R4E_FILE_CONTEXT_FEATURE_COUNT = R4EID_COMPONENT_FEATURE_COUNT + 3;

+	int R4E_FILE_CONTEXT_FEATURE_COUNT = R4EID_COMPONENT_FEATURE_COUNT + 5;

 

 	/**

 	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EDeltaImpl <em>R4E Delta</em>}' class.

@@ -2093,13 +2138,40 @@
 	int R4E_FILE_VERSION__RESOURCE = 4;

 

 	/**

+	 * The feature id for the '<em><b>Local Version ID</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int R4E_FILE_VERSION__LOCAL_VERSION_ID = 5;

+

+	/**

+	 * The feature id for the '<em><b>File Revision</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int R4E_FILE_VERSION__FILE_REVISION = 6;

+

+	/**

+	 * The feature id for the '<em><b>Info Att</b></em>' map.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int R4E_FILE_VERSION__INFO_ATT = 7;

+

+	/**

 	 * The number of structural features of the '<em>R4E File Version</em>' class.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @generated

 	 * @ordered

 	 */

-	int R4E_FILE_VERSION_FEATURE_COUNT = 5;

+	int R4E_FILE_VERSION_FEATURE_COUNT = 8;

 

 	/**

 	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.MapNameToReviewImpl <em>Map Name To Review</em>}' class.

@@ -2378,6 +2450,80 @@
 	int R4E_ANOMALY_TEXT_POSITION_FEATURE_COUNT = R4E_TEXT_POSITION_FEATURE_COUNT + 1;

 

 	/**

+	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.MapDateToDurationImpl <em>Map Date To Duration</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.MapDateToDurationImpl

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getMapDateToDuration()

+	 * @generated

+	 */

+	int MAP_DATE_TO_DURATION = 30;

+

+	/**

+	 * The feature id for the '<em><b>Key</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MAP_DATE_TO_DURATION__KEY = 0;

+

+	/**

+	 * The feature id for the '<em><b>Value</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MAP_DATE_TO_DURATION__VALUE = 1;

+

+	/**

+	 * The number of structural features of the '<em>Map Date To Duration</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MAP_DATE_TO_DURATION_FEATURE_COUNT = 2;

+

+	/**

+	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.MapKeyToInfoAttributesImpl <em>Map Key To Info Attributes</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.MapKeyToInfoAttributesImpl

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getMapKeyToInfoAttributes()

+	 * @generated

+	 */

+	int MAP_KEY_TO_INFO_ATTRIBUTES = 31;

+

+	/**

+	 * The feature id for the '<em><b>Key</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MAP_KEY_TO_INFO_ATTRIBUTES__KEY = 0;

+

+	/**

+	 * The feature id for the '<em><b>Value</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MAP_KEY_TO_INFO_ATTRIBUTES__VALUE = 1;

+

+	/**

+	 * The number of structural features of the '<em>Map Key To Info Attributes</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MAP_KEY_TO_INFO_ATTRIBUTES_FEATURE_COUNT = 2;

+

+	/**

 	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyState <em>R4E Anomaly State</em>}' enum.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -2385,7 +2531,7 @@
 	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getR4EAnomalyState()

 	 * @generated

 	 */

-	int R4E_ANOMALY_STATE = 30;

+	int R4E_ANOMALY_STATE = 32;

 

 	/**

 	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyRank <em>R4E Anomaly Rank</em>}' enum.

@@ -2395,7 +2541,7 @@
 	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getR4EAnomalyRank()

 	 * @generated

 	 */

-	int R4E_ANOMALY_RANK = 31;

+	int R4E_ANOMALY_RANK = 33;

 

 	/**

 	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewPhase <em>R4E Review Phase</em>}' enum.

@@ -2405,7 +2551,7 @@
 	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getR4EReviewPhase()

 	 * @generated

 	 */

-	int R4E_REVIEW_PHASE = 32;

+	int R4E_REVIEW_PHASE = 34;

 

 	/**

 	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EUserRole <em>R4E User Role</em>}' enum.

@@ -2415,7 +2561,7 @@
 	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getR4EUserRole()

 	 * @generated

 	 */

-	int R4E_USER_ROLE = 33;

+	int R4E_USER_ROLE = 35;

 

 	/**

 	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EDecision <em>R4E Decision</em>}' enum.

@@ -2425,7 +2571,7 @@
 	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getR4EDecision()

 	 * @generated

 	 */

-	int R4E_DECISION = 34;

+	int R4E_DECISION = 36;

 

 	/**

 	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewType <em>R4E Review Type</em>}' enum.

@@ -2435,17 +2581,27 @@
 	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getR4EReviewType()

 	 * @generated

 	 */

-	int R4E_REVIEW_TYPE = 35;

+	int R4E_REVIEW_TYPE = 37;

 

 	/**

-	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum <em>R4E Comment Enum</em>}' enum.

+	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass <em>R4E Comment Class</em>}' enum.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

-	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum

-	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getR4ECommentEnum()

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getR4ECommentClass()

 	 * @generated

 	 */

-	int R4E_COMMENT_ENUM = 36;

+	int R4E_COMMENT_CLASS = 38;

+

+	/**

+	 * The meta object id for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType <em>R4E Context Type</em>}' enum.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getR4EContextType()

+	 * @generated

+	 */

+	int R4E_CONTEXT_TYPE = 39;

 

 	/**

 	 * The meta object id for the '<em>Mylyn Task</em>' data type.

@@ -2455,7 +2611,7 @@
 	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getMylynTask()

 	 * @generated

 	 */

-	int MYLYN_TASK = 37;

+	int MYLYN_TASK = 40;

 

 	/**

 	 * The meta object id for the '<em>IResource</em>' data type.

@@ -2465,7 +2621,7 @@
 	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getIResource()

 	 * @generated

 	 */

-	int IRESOURCE = 38;

+	int IRESOURCE = 41;

 

 

 	/**

@@ -2476,10 +2632,20 @@
 	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getURI()

 	 * @generated

 	 */

-	int URI = 39;

+	int URI = 42;

 

 

 	/**

+	 * The meta object id for the '<em>IFile Revision</em>' data type.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see org.eclipse.team.core.history.IFileRevision

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getIFileRevision()

+	 * @generated

+	 */

+	int IFILE_REVISION = 43;

+

+	/**

 	 * Returns the meta object for class '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewGroup <em>R4E Review Group</em>}'.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -2632,17 +2798,6 @@
 	EAttribute getR4EReview_Name();

 

 	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EReview#getCreationDate <em>Creation Date</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Creation Date</em>'.

-	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EReview#getCreationDate()

-	 * @see #getR4EReview()

-	 * @generated

-	 */

-	EAttribute getR4EReview_CreationDate();

-

-	/**

 	 * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EReview#getProject <em>Project</em>}'.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -2983,15 +3138,15 @@
 	EAttribute getR4EAnomaly_DecidedByID();

 

 	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getFiexeByID <em>Fiexe By ID</em>}'.

+	 * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getFixedByID <em>Fixed By ID</em>}'.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Fiexe By ID</em>'.

-	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getFiexeByID()

+	 * @return the meta object for the attribute '<em>Fixed By ID</em>'.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getFixedByID()

 	 * @see #getR4EAnomaly()

 	 * @generated

 	 */

-	EAttribute getR4EAnomaly_FiexeByID();

+	EAttribute getR4EAnomaly_FixedByID();

 

 	/**

 	 * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly#getFollowUpByID <em>Follow Up By ID</em>}'.

@@ -3286,17 +3441,6 @@
 	EAttribute getR4EParticipant_Roles();

 

 	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant#getSpentTime <em>Spent Time</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Spent Time</em>'.

-	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant#getSpentTime()

-	 * @see #getR4EParticipant()

-	 * @generated

-	 */

-	EAttribute getR4EParticipant_SpentTime();

-

-	/**

 	 * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant#getFocusArea <em>Focus Area</em>}'.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -3330,6 +3474,17 @@
 	EReference getR4EParticipant_ReviewedContent();

 

 	/**

+	 * Returns the meta object for the map '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant#getTimeLog <em>Time Log</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the map '<em>Time Log</em>'.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant#getTimeLog()

+	 * @see #getR4EParticipant()

+	 * @generated

+	 */

+	EReference getR4EParticipant_TimeLog();

+

+	/**

 	 * Returns the meta object for class '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EItem <em>R4E Item</em>}'.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -3406,6 +3561,39 @@
 	EAttribute getR4EItem_ProjectURIs();

 

 	/**

+	 * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getAuthorRep <em>Author Rep</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Author Rep</em>'.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getAuthorRep()

+	 * @see #getR4EItem()

+	 * @generated

+	 */

+	EAttribute getR4EItem_AuthorRep();

+

+	/**

+	 * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getSubmitted <em>Submitted</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Submitted</em>'.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getSubmitted()

+	 * @see #getR4EItem()

+	 * @generated

+	 */

+	EAttribute getR4EItem_Submitted();

+

+	/**

+	 * Returns the meta object for the map '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getInfoAtt <em>Info Att</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the map '<em>Info Att</em>'.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EItem#getInfoAtt()

+	 * @see #getR4EItem()

+	 * @generated

+	 */

+	EReference getR4EItem_InfoAtt();

+

+	/**

 	 * Returns the meta object for class '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4ETextContent <em>R4E Text Content</em>}'.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -3607,6 +3795,28 @@
 	EReference getR4EFileContext_Target();

 

 	/**

+	 * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext#getType()

+	 * @see #getR4EFileContext()

+	 * @generated

+	 */

+	EAttribute getR4EFileContext_Type();

+

+	/**

+	 * Returns the meta object for the map '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext#getInfoAtt <em>Info Att</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the map '<em>Info Att</em>'.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext#getInfoAtt()

+	 * @see #getR4EFileContext()

+	 * @generated

+	 */

+	EReference getR4EFileContext_InfoAtt();

+

+	/**

 	 * Returns the meta object for class '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EDelta <em>R4E Delta</em>}'.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -3801,6 +4011,39 @@
 	EAttribute getR4EFileVersion_Resource();

 

 	/**

+	 * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getLocalVersionID <em>Local Version ID</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Local Version ID</em>'.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getLocalVersionID()

+	 * @see #getR4EFileVersion()

+	 * @generated

+	 */

+	EAttribute getR4EFileVersion_LocalVersionID();

+

+	/**

+	 * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getFileRevision <em>File Revision</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>File Revision</em>'.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getFileRevision()

+	 * @see #getR4EFileVersion()

+	 * @generated

+	 */

+	EAttribute getR4EFileVersion_FileRevision();

+

+	/**

+	 * Returns the meta object for the map '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getInfoAtt <em>Info Att</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the map '<em>Info Att</em>'.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion#getInfoAtt()

+	 * @see #getR4EFileVersion()

+	 * @generated

+	 */

+	EReference getR4EFileVersion_InfoAtt();

+

+	/**

 	 * Returns the meta object for class '{@link java.util.Map.Entry <em>Map Name To Review</em>}'.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -4044,6 +4287,74 @@
 	EReference getR4EAnomalyTextPosition_File();

 

 	/**

+	 * Returns the meta object for class '{@link java.util.Map.Entry <em>Map Date To Duration</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Map Date To Duration</em>'.

+	 * @see java.util.Map.Entry

+	 * @model keyDataType="org.eclipse.emf.ecore.EDate"

+	 *        valueDataType="org.eclipse.emf.ecore.EIntegerObject"

+	 * @generated

+	 */

+	EClass getMapDateToDuration();

+

+	/**

+	 * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Key</em>'.

+	 * @see java.util.Map.Entry

+	 * @see #getMapDateToDuration()

+	 * @generated

+	 */

+	EAttribute getMapDateToDuration_Key();

+

+	/**

+	 * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Value</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Value</em>'.

+	 * @see java.util.Map.Entry

+	 * @see #getMapDateToDuration()

+	 * @generated

+	 */

+	EAttribute getMapDateToDuration_Value();

+

+	/**

+	 * Returns the meta object for class '{@link java.util.Map.Entry <em>Map Key To Info Attributes</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Map Key To Info Attributes</em>'.

+	 * @see java.util.Map.Entry

+	 * @model keyDataType="org.eclipse.emf.ecore.EString"

+	 *        valueDataType="org.eclipse.emf.ecore.EString"

+	 * @generated

+	 */

+	EClass getMapKeyToInfoAttributes();

+

+	/**

+	 * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Key</em>'.

+	 * @see java.util.Map.Entry

+	 * @see #getMapKeyToInfoAttributes()

+	 * @generated

+	 */

+	EAttribute getMapKeyToInfoAttributes_Key();

+

+	/**

+	 * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Value</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Value</em>'.

+	 * @see java.util.Map.Entry

+	 * @see #getMapKeyToInfoAttributes()

+	 * @generated

+	 */

+	EAttribute getMapKeyToInfoAttributes_Value();

+

+	/**

 	 * Returns the meta object for enum '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyState <em>R4E Anomaly State</em>}'.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -4104,14 +4415,24 @@
 	EEnum getR4EReviewType();

 

 	/**

-	 * Returns the meta object for enum '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum <em>R4E Comment Enum</em>}'.

+	 * Returns the meta object for enum '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass <em>R4E Comment Class</em>}'.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

-	 * @return the meta object for enum '<em>R4E Comment Enum</em>'.

-	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum

+	 * @return the meta object for enum '<em>R4E Comment Class</em>'.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass

 	 * @generated

 	 */

-	EEnum getR4ECommentEnum();

+	EEnum getR4ECommentClass();

+

+	/**

+	 * Returns the meta object for enum '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType <em>R4E Context Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for enum '<em>R4E Context Type</em>'.

+	 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType

+	 * @generated

+	 */

+	EEnum getR4EContextType();

 

 	/**

 	 * Returns the meta object for data type '{@link org.eclipse.mylyn.tasks.core.ITask <em>Mylyn Task</em>}'.

@@ -4147,6 +4468,17 @@
 	EDataType getURI();

 

 	/**

+	 * Returns the meta object for data type '{@link org.eclipse.team.core.history.IFileRevision <em>IFile Revision</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for data type '<em>IFile Revision</em>'.

+	 * @see org.eclipse.team.core.history.IFileRevision

+	 * @model instanceClass="org.eclipse.team.core.history.IFileRevision"

+	 * @generated

+	 */

+	EDataType getIFileRevision();

+

+	/**

 	 * Returns the factory that creates the instances of the model.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -4285,14 +4617,6 @@
 		EAttribute R4E_REVIEW__NAME = eINSTANCE.getR4EReview_Name();

 

 		/**

-		 * The meta object literal for the '<em><b>Creation Date</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute R4E_REVIEW__CREATION_DATE = eINSTANCE.getR4EReview_CreationDate();

-

-		/**

 		 * The meta object literal for the '<em><b>Project</b></em>' attribute feature.

 		 * <!-- begin-user-doc -->

 		 * <!-- end-user-doc -->

@@ -4543,12 +4867,12 @@
 		EAttribute R4E_ANOMALY__DECIDED_BY_ID = eINSTANCE.getR4EAnomaly_DecidedByID();

 

 		/**

-		 * The meta object literal for the '<em><b>Fiexe By ID</b></em>' attribute feature.

+		 * The meta object literal for the '<em><b>Fixed By ID</b></em>' attribute feature.

 		 * <!-- begin-user-doc -->

 		 * <!-- end-user-doc -->

 		 * @generated

 		 */

-		EAttribute R4E_ANOMALY__FIEXE_BY_ID = eINSTANCE.getR4EAnomaly_FiexeByID();

+		EAttribute R4E_ANOMALY__FIXED_BY_ID = eINSTANCE.getR4EAnomaly_FixedByID();

 

 		/**

 		 * The meta object literal for the '<em><b>Follow Up By ID</b></em>' attribute feature.

@@ -4777,14 +5101,6 @@
 		EAttribute R4E_PARTICIPANT__ROLES = eINSTANCE.getR4EParticipant_Roles();

 

 		/**

-		 * The meta object literal for the '<em><b>Spent Time</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute R4E_PARTICIPANT__SPENT_TIME = eINSTANCE.getR4EParticipant_SpentTime();

-

-		/**

 		 * The meta object literal for the '<em><b>Focus Area</b></em>' attribute feature.

 		 * <!-- begin-user-doc -->

 		 * <!-- end-user-doc -->

@@ -4809,6 +5125,14 @@
 		EReference R4E_PARTICIPANT__REVIEWED_CONTENT = eINSTANCE.getR4EParticipant_ReviewedContent();

 

 		/**

+		 * The meta object literal for the '<em><b>Time Log</b></em>' map feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference R4E_PARTICIPANT__TIME_LOG = eINSTANCE.getR4EParticipant_TimeLog();

+

+		/**

 		 * The meta object literal for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EItemImpl <em>R4E Item</em>}' class.

 		 * <!-- begin-user-doc -->

 		 * <!-- end-user-doc -->

@@ -4867,6 +5191,30 @@
 		EAttribute R4E_ITEM__PROJECT_UR_IS = eINSTANCE.getR4EItem_ProjectURIs();

 

 		/**

+		 * The meta object literal for the '<em><b>Author Rep</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute R4E_ITEM__AUTHOR_REP = eINSTANCE.getR4EItem_AuthorRep();

+

+		/**

+		 * The meta object literal for the '<em><b>Submitted</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute R4E_ITEM__SUBMITTED = eINSTANCE.getR4EItem_Submitted();

+

+		/**

+		 * The meta object literal for the '<em><b>Info Att</b></em>' map feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference R4E_ITEM__INFO_ATT = eINSTANCE.getR4EItem_InfoAtt();

+

+		/**

 		 * The meta object literal for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4ETextContentImpl <em>R4E Text Content</em>}' class.

 		 * <!-- begin-user-doc -->

 		 * <!-- end-user-doc -->

@@ -5035,6 +5383,22 @@
 		EReference R4E_FILE_CONTEXT__TARGET = eINSTANCE.getR4EFileContext_Target();

 

 		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute R4E_FILE_CONTEXT__TYPE = eINSTANCE.getR4EFileContext_Type();

+

+		/**

+		 * The meta object literal for the '<em><b>Info Att</b></em>' map feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference R4E_FILE_CONTEXT__INFO_ATT = eINSTANCE.getR4EFileContext_InfoAtt();

+

+		/**

 		 * The meta object literal for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EDeltaImpl <em>R4E Delta</em>}' class.

 		 * <!-- begin-user-doc -->

 		 * <!-- end-user-doc -->

@@ -5191,6 +5555,30 @@
 		EAttribute R4E_FILE_VERSION__RESOURCE = eINSTANCE.getR4EFileVersion_Resource();

 

 		/**

+		 * The meta object literal for the '<em><b>Local Version ID</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute R4E_FILE_VERSION__LOCAL_VERSION_ID = eINSTANCE.getR4EFileVersion_LocalVersionID();

+

+		/**

+		 * The meta object literal for the '<em><b>File Revision</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute R4E_FILE_VERSION__FILE_REVISION = eINSTANCE.getR4EFileVersion_FileRevision();

+

+		/**

+		 * The meta object literal for the '<em><b>Info Att</b></em>' map feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference R4E_FILE_VERSION__INFO_ATT = eINSTANCE.getR4EFileVersion_InfoAtt();

+

+		/**

 		 * The meta object literal for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.MapNameToReviewImpl <em>Map Name To Review</em>}' class.

 		 * <!-- begin-user-doc -->

 		 * <!-- end-user-doc -->

@@ -5381,6 +5769,58 @@
 		EReference R4E_ANOMALY_TEXT_POSITION__FILE = eINSTANCE.getR4EAnomalyTextPosition_File();

 

 		/**

+		 * The meta object literal for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.MapDateToDurationImpl <em>Map Date To Duration</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.MapDateToDurationImpl

+		 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getMapDateToDuration()

+		 * @generated

+		 */

+		EClass MAP_DATE_TO_DURATION = eINSTANCE.getMapDateToDuration();

+

+		/**

+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute MAP_DATE_TO_DURATION__KEY = eINSTANCE.getMapDateToDuration_Key();

+

+		/**

+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute MAP_DATE_TO_DURATION__VALUE = eINSTANCE.getMapDateToDuration_Value();

+

+		/**

+		 * The meta object literal for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.MapKeyToInfoAttributesImpl <em>Map Key To Info Attributes</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.MapKeyToInfoAttributesImpl

+		 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getMapKeyToInfoAttributes()

+		 * @generated

+		 */

+		EClass MAP_KEY_TO_INFO_ATTRIBUTES = eINSTANCE.getMapKeyToInfoAttributes();

+

+		/**

+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute MAP_KEY_TO_INFO_ATTRIBUTES__KEY = eINSTANCE.getMapKeyToInfoAttributes_Key();

+

+		/**

+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute MAP_KEY_TO_INFO_ATTRIBUTES__VALUE = eINSTANCE.getMapKeyToInfoAttributes_Value();

+

+		/**

 		 * The meta object literal for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyState <em>R4E Anomaly State</em>}' enum.

 		 * <!-- begin-user-doc -->

 		 * <!-- end-user-doc -->

@@ -5441,14 +5881,24 @@
 		EEnum R4E_REVIEW_TYPE = eINSTANCE.getR4EReviewType();

 

 		/**

-		 * The meta object literal for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum <em>R4E Comment Enum</em>}' enum.

+		 * The meta object literal for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass <em>R4E Comment Class</em>}' enum.

 		 * <!-- begin-user-doc -->

 		 * <!-- end-user-doc -->

-		 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum

-		 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getR4ECommentEnum()

+		 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass

+		 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getR4ECommentClass()

 		 * @generated

 		 */

-		EEnum R4E_COMMENT_ENUM = eINSTANCE.getR4ECommentEnum();

+		EEnum R4E_COMMENT_CLASS = eINSTANCE.getR4ECommentClass();

+

+		/**

+		 * The meta object literal for the '{@link org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType <em>R4E Context Type</em>}' enum.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType

+		 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getR4EContextType()

+		 * @generated

+		 */

+		EEnum R4E_CONTEXT_TYPE = eINSTANCE.getR4EContextType();

 

 		/**

 		 * The meta object literal for the '<em>Mylyn Task</em>' data type.

@@ -5480,6 +5930,16 @@
 		 */

 		EDataType URI = eINSTANCE.getURI();

 

+		/**

+		 * The meta object literal for the '<em>IFile Revision</em>' data type.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see org.eclipse.team.core.history.IFileRevision

+		 * @see org.eclipse.mylyn.reviews.r4e.core.model.impl.RModelPackageImpl#getIFileRevision()

+		 * @generated

+		 */

+		EDataType IFILE_REVISION = eINSTANCE.getIFileRevision();

+

 	}

 

 } //RModelPackage

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/MapDateToDurationImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/MapDateToDurationImpl.java
new file mode 100644
index 0000000..a5d1e92
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/MapDateToDurationImpl.java
@@ -0,0 +1,312 @@
+/**

+ * Copyright (c) 2010 Ericsson

+ *  

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * Contributors:

+ * Alvaro Sanchez-Leon  - Initial API and implementation

+ * 

+ */

+package org.eclipse.mylyn.reviews.r4e.core.model.impl;

+

+import java.util.Date;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.common.util.BasicEMap;

+import org.eclipse.emf.common.util.EMap;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.EObjectImpl;

+

+import org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Map Date To Duration</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.MapDateToDurationImpl#getTypedKey <em>Key</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.MapDateToDurationImpl#getTypedValue <em>Value</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class MapDateToDurationImpl extends EObjectImpl implements BasicEMap.Entry<Date,Integer> {

+	/**

+	 * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getTypedKey()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final Date KEY_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getTypedKey()

+	 * @generated

+	 * @ordered

+	 */

+	protected Date key = KEY_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getTypedValue() <em>Value</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getTypedValue()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final Integer VALUE_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getTypedValue() <em>Value</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getTypedValue()

+	 * @generated

+	 * @ordered

+	 */

+	protected Integer value = VALUE_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MapDateToDurationImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return RModelPackage.Literals.MAP_DATE_TO_DURATION;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Date getTypedKey() {

+		return key;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setTypedKey(Date newKey) {

+		Date oldKey = key;

+		key = newKey;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.MAP_DATE_TO_DURATION__KEY, oldKey, key));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Integer getTypedValue() {

+		return value;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setTypedValue(Integer newValue) {

+		Integer oldValue = value;

+		value = newValue;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.MAP_DATE_TO_DURATION__VALUE, oldValue, value));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case RModelPackage.MAP_DATE_TO_DURATION__KEY:

+				return getTypedKey();

+			case RModelPackage.MAP_DATE_TO_DURATION__VALUE:

+				return getTypedValue();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case RModelPackage.MAP_DATE_TO_DURATION__KEY:

+				setTypedKey((Date)newValue);

+				return;

+			case RModelPackage.MAP_DATE_TO_DURATION__VALUE:

+				setTypedValue((Integer)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case RModelPackage.MAP_DATE_TO_DURATION__KEY:

+				setTypedKey(KEY_EDEFAULT);

+				return;

+			case RModelPackage.MAP_DATE_TO_DURATION__VALUE:

+				setTypedValue(VALUE_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case RModelPackage.MAP_DATE_TO_DURATION__KEY:

+				return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);

+			case RModelPackage.MAP_DATE_TO_DURATION__VALUE:

+				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (key: ");

+		result.append(key);

+		result.append(", value: ");

+		result.append(value);

+		result.append(')');

+		return result.toString();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected int hash = -1;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public int getHash() {

+		if (hash == -1) {

+			Object theKey = getKey();

+			hash = (theKey == null ? 0 : theKey.hashCode());

+		}

+		return hash;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setHash(int hash) {

+		this.hash = hash;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Date getKey() {

+		return getTypedKey();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setKey(Date key) {

+		setTypedKey(key);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Integer getValue() {

+		return getTypedValue();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Integer setValue(Integer value) {

+		Integer oldValue = getValue();

+		setTypedValue(value);

+		return oldValue;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@SuppressWarnings("unchecked")

+	public EMap<Date, Integer> getEMap() {

+		EObject container = eContainer();

+		return container == null ? null : (EMap<Date, Integer>)container.eGet(eContainmentFeature());

+	}

+

+} //MapDateToDurationImpl

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/MapKeyToInfoAttributesImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/MapKeyToInfoAttributesImpl.java
new file mode 100644
index 0000000..38193c7
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/MapKeyToInfoAttributesImpl.java
@@ -0,0 +1,310 @@
+/**

+ * Copyright (c) 2010 Ericsson

+ *  

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * Contributors:

+ * Alvaro Sanchez-Leon  - Initial API and implementation

+ * 

+ */

+package org.eclipse.mylyn.reviews.r4e.core.model.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.common.util.BasicEMap;

+import org.eclipse.emf.common.util.EMap;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.EObjectImpl;

+

+import org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Map Key To Info Attributes</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.MapKeyToInfoAttributesImpl#getTypedKey <em>Key</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.MapKeyToInfoAttributesImpl#getTypedValue <em>Value</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class MapKeyToInfoAttributesImpl extends EObjectImpl implements BasicEMap.Entry<String,String> {

+	/**

+	 * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getTypedKey()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String KEY_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getTypedKey()

+	 * @generated

+	 * @ordered

+	 */

+	protected String key = KEY_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getTypedValue() <em>Value</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getTypedValue()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String VALUE_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getTypedValue() <em>Value</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getTypedValue()

+	 * @generated

+	 * @ordered

+	 */

+	protected String value = VALUE_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MapKeyToInfoAttributesImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return RModelPackage.Literals.MAP_KEY_TO_INFO_ATTRIBUTES;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getTypedKey() {

+		return key;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setTypedKey(String newKey) {

+		String oldKey = key;

+		key = newKey;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.MAP_KEY_TO_INFO_ATTRIBUTES__KEY, oldKey, key));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getTypedValue() {

+		return value;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setTypedValue(String newValue) {

+		String oldValue = value;

+		value = newValue;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.MAP_KEY_TO_INFO_ATTRIBUTES__VALUE, oldValue, value));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case RModelPackage.MAP_KEY_TO_INFO_ATTRIBUTES__KEY:

+				return getTypedKey();

+			case RModelPackage.MAP_KEY_TO_INFO_ATTRIBUTES__VALUE:

+				return getTypedValue();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case RModelPackage.MAP_KEY_TO_INFO_ATTRIBUTES__KEY:

+				setTypedKey((String)newValue);

+				return;

+			case RModelPackage.MAP_KEY_TO_INFO_ATTRIBUTES__VALUE:

+				setTypedValue((String)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case RModelPackage.MAP_KEY_TO_INFO_ATTRIBUTES__KEY:

+				setTypedKey(KEY_EDEFAULT);

+				return;

+			case RModelPackage.MAP_KEY_TO_INFO_ATTRIBUTES__VALUE:

+				setTypedValue(VALUE_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case RModelPackage.MAP_KEY_TO_INFO_ATTRIBUTES__KEY:

+				return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);

+			case RModelPackage.MAP_KEY_TO_INFO_ATTRIBUTES__VALUE:

+				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (key: ");

+		result.append(key);

+		result.append(", value: ");

+		result.append(value);

+		result.append(')');

+		return result.toString();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected int hash = -1;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public int getHash() {

+		if (hash == -1) {

+			Object theKey = getKey();

+			hash = (theKey == null ? 0 : theKey.hashCode());

+		}

+		return hash;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setHash(int hash) {

+		this.hash = hash;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getKey() {

+		return getTypedKey();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setKey(String key) {

+		setTypedKey(key);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getValue() {

+		return getTypedValue();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String setValue(String value) {

+		String oldValue = getValue();

+		setTypedValue(value);

+		return oldValue;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@SuppressWarnings("unchecked")

+	public EMap<String, String> getEMap() {

+		EObject container = eContainer();

+		return container == null ? null : (EMap<String, String>)container.eGet(eContainmentFeature());

+	}

+

+} //MapKeyToInfoAttributesImpl

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EAnomalyImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EAnomalyImpl.java
index 2bd0e76..bab87c0 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EAnomalyImpl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EAnomalyImpl.java
@@ -60,7 +60,7 @@
  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EAnomalyImpl#getFixedInVersion <em>Fixed In Version</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EAnomalyImpl#getRuleID <em>Rule ID</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EAnomalyImpl#getDecidedByID <em>Decided By ID</em>}</li>

- *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EAnomalyImpl#getFiexeByID <em>Fiexe By ID</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EAnomalyImpl#getFixedByID <em>Fixed By ID</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EAnomalyImpl#getFollowUpByID <em>Follow Up By ID</em>}</li>

  * </ul>

  * </p>

@@ -329,24 +329,24 @@
 	protected String decidedByID = DECIDED_BY_ID_EDEFAULT;

 

 	/**

-	 * The default value of the '{@link #getFiexeByID() <em>Fiexe By ID</em>}' attribute.

+	 * The default value of the '{@link #getFixedByID() <em>Fixed By ID</em>}' attribute.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

-	 * @see #getFiexeByID()

+	 * @see #getFixedByID()

 	 * @generated

 	 * @ordered

 	 */

-	protected static final String FIEXE_BY_ID_EDEFAULT = null;

+	protected static final String FIXED_BY_ID_EDEFAULT = null;

 

 	/**

-	 * The cached value of the '{@link #getFiexeByID() <em>Fiexe By ID</em>}' attribute.

+	 * The cached value of the '{@link #getFixedByID() <em>Fixed By ID</em>}' attribute.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

-	 * @see #getFiexeByID()

+	 * @see #getFixedByID()

 	 * @generated

 	 * @ordered

 	 */

-	protected String fiexeByID = FIEXE_BY_ID_EDEFAULT;

+	protected String fixedByID = FIXED_BY_ID_EDEFAULT;

 

 	/**

 	 * The default value of the '{@link #getFollowUpByID() <em>Follow Up By ID</em>}' attribute.

@@ -902,8 +902,8 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public String getFiexeByID() {

-		return fiexeByID;

+	public String getFixedByID() {

+		return fixedByID;

 	}

 

 	/**

@@ -911,11 +911,11 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public void setFiexeByID(String newFiexeByID) {

-		String oldFiexeByID = fiexeByID;

-		fiexeByID = newFiexeByID;

+	public void setFixedByID(String newFixedByID) {

+		String oldFixedByID = fixedByID;

+		fixedByID = newFixedByID;

 		if (eNotificationRequired())

-			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.R4E_ANOMALY__FIEXE_BY_ID, oldFiexeByID, fiexeByID));

+			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.R4E_ANOMALY__FIXED_BY_ID, oldFixedByID, fixedByID));

 	}

 

 	/**

@@ -1073,8 +1073,8 @@
 				return getRuleID();

 			case RModelPackage.R4E_ANOMALY__DECIDED_BY_ID:

 				return getDecidedByID();

-			case RModelPackage.R4E_ANOMALY__FIEXE_BY_ID:

-				return getFiexeByID();

+			case RModelPackage.R4E_ANOMALY__FIXED_BY_ID:

+				return getFixedByID();

 			case RModelPackage.R4E_ANOMALY__FOLLOW_UP_BY_ID:

 				return getFollowUpByID();

 		}

@@ -1143,8 +1143,8 @@
 			case RModelPackage.R4E_ANOMALY__DECIDED_BY_ID:

 				setDecidedByID((String)newValue);

 				return;

-			case RModelPackage.R4E_ANOMALY__FIEXE_BY_ID:

-				setFiexeByID((String)newValue);

+			case RModelPackage.R4E_ANOMALY__FIXED_BY_ID:

+				setFixedByID((String)newValue);

 				return;

 			case RModelPackage.R4E_ANOMALY__FOLLOW_UP_BY_ID:

 				setFollowUpByID((String)newValue);

@@ -1215,8 +1215,8 @@
 			case RModelPackage.R4E_ANOMALY__DECIDED_BY_ID:

 				setDecidedByID(DECIDED_BY_ID_EDEFAULT);

 				return;

-			case RModelPackage.R4E_ANOMALY__FIEXE_BY_ID:

-				setFiexeByID(FIEXE_BY_ID_EDEFAULT);

+			case RModelPackage.R4E_ANOMALY__FIXED_BY_ID:

+				setFixedByID(FIXED_BY_ID_EDEFAULT);

 				return;

 			case RModelPackage.R4E_ANOMALY__FOLLOW_UP_BY_ID:

 				setFollowUpByID(FOLLOW_UP_BY_ID_EDEFAULT);

@@ -1269,8 +1269,8 @@
 				return RULE_ID_EDEFAULT == null ? ruleID != null : !RULE_ID_EDEFAULT.equals(ruleID);

 			case RModelPackage.R4E_ANOMALY__DECIDED_BY_ID:

 				return DECIDED_BY_ID_EDEFAULT == null ? decidedByID != null : !DECIDED_BY_ID_EDEFAULT.equals(decidedByID);

-			case RModelPackage.R4E_ANOMALY__FIEXE_BY_ID:

-				return FIEXE_BY_ID_EDEFAULT == null ? fiexeByID != null : !FIEXE_BY_ID_EDEFAULT.equals(fiexeByID);

+			case RModelPackage.R4E_ANOMALY__FIXED_BY_ID:

+				return FIXED_BY_ID_EDEFAULT == null ? fixedByID != null : !FIXED_BY_ID_EDEFAULT.equals(fixedByID);

 			case RModelPackage.R4E_ANOMALY__FOLLOW_UP_BY_ID:

 				return FOLLOW_UP_BY_ID_EDEFAULT == null ? followUpByID != null : !FOLLOW_UP_BY_ID_EDEFAULT.equals(followUpByID);

 		}

@@ -1359,8 +1359,8 @@
 		result.append(ruleID);

 		result.append(", decidedByID: ");

 		result.append(decidedByID);

-		result.append(", fiexeByID: ");

-		result.append(fiexeByID);

+		result.append(", fixedByID: ");

+		result.append(fixedByID);

 		result.append(", followUpByID: ");

 		result.append(followUpByID);

 		result.append(')');

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4ECommentTypeImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4ECommentTypeImpl.java
index 0effc19..ea7f411 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4ECommentTypeImpl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4ECommentTypeImpl.java
@@ -19,7 +19,7 @@
 import org.eclipse.emf.ecore.EClass;

 import org.eclipse.emf.ecore.impl.ENotificationImpl;

 import org.eclipse.mylyn.reviews.frame.core.model.impl.CommentTypeImpl;

-import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentType;

 import org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage;

 

@@ -45,7 +45,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	protected static final R4ECommentEnum TYPE_EDEFAULT = R4ECommentEnum.R4E_COMMENT_BASE;

+	protected static final R4ECommentClass TYPE_EDEFAULT = R4ECommentClass.R4E_CLASS_ERRONEOUS;

 

 	/**

 	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

@@ -55,7 +55,7 @@
 	 * @generated

 	 * @ordered

 	 */

-	protected R4ECommentEnum type = TYPE_EDEFAULT;

+	protected R4ECommentClass type = TYPE_EDEFAULT;

 

 	/**

 	 * <!-- begin-user-doc -->

@@ -81,7 +81,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public R4ECommentEnum getType() {

+	public R4ECommentClass getType() {

 		return type;

 	}

 

@@ -90,8 +90,8 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public void setType(R4ECommentEnum newType) {

-		R4ECommentEnum oldType = type;

+	public void setType(R4ECommentClass newType) {

+		R4ECommentClass oldType = type;

 		type = newType == null ? TYPE_EDEFAULT : newType;

 		if (eNotificationRequired())

 			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.R4E_COMMENT_TYPE__TYPE, oldType, type));

@@ -120,7 +120,7 @@
 	public void eSet(int featureID, Object newValue) {

 		switch (featureID) {

 			case RModelPackage.R4E_COMMENT_TYPE__TYPE:

-				setType((R4ECommentEnum)newValue);

+				setType((R4ECommentClass)newValue);

 				return;

 		}

 		super.eSet(featureID, newValue);

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EFileContextImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EFileContextImpl.java
index 19432a8..93854da 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EFileContextImpl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EFileContextImpl.java
@@ -20,11 +20,15 @@
 import org.eclipse.emf.common.notify.Notification;

 import org.eclipse.emf.common.notify.NotificationChain;

 import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.common.util.EMap;

 import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EStructuralFeature;

 import org.eclipse.emf.ecore.InternalEObject;

 import org.eclipse.emf.ecore.impl.ENotificationImpl;

 import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.EcoreEMap;

 import org.eclipse.emf.ecore.util.InternalEList;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EDelta;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion;

@@ -40,6 +44,8 @@
  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EFileContextImpl#getDeltas <em>Deltas</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EFileContextImpl#getBase <em>Base</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EFileContextImpl#getTarget <em>Target</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EFileContextImpl#getType <em>Type</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EFileContextImpl#getInfoAtt <em>Info Att</em>}</li>

  * </ul>

  * </p>

  *

@@ -74,6 +80,33 @@
 	 */

 	protected R4EFileVersion target;

 	/**

+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final R4EContextType TYPE_EDEFAULT = R4EContextType.R4E_UNDEFINED;

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected R4EContextType type = TYPE_EDEFAULT;

+	/**

+	 * The cached value of the '{@link #getInfoAtt() <em>Info Att</em>}' map.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInfoAtt()

+	 * @generated

+	 * @ordered

+	 */

+	protected EMap<String, String> infoAtt;

+	/**

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @generated

@@ -241,6 +274,39 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	public R4EContextType getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setType(R4EContextType newType) {

+		R4EContextType oldType = type;

+		type = newType == null ? TYPE_EDEFAULT : newType;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.R4E_FILE_CONTEXT__TYPE, oldType, type));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EMap<String, String> getInfoAtt() {

+		if (infoAtt == null) {

+			infoAtt = new EcoreEMap<String,String>(RModelPackage.Literals.MAP_KEY_TO_INFO_ATTRIBUTES, MapKeyToInfoAttributesImpl.class, this, RModelPackage.R4E_FILE_CONTEXT__INFO_ATT);

+		}

+		return infoAtt;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	@Override

 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

 		switch (featureID) {

@@ -250,6 +316,8 @@
 				return basicSetBase(null, msgs);

 			case RModelPackage.R4E_FILE_CONTEXT__TARGET:

 				return basicSetTarget(null, msgs);

+			case RModelPackage.R4E_FILE_CONTEXT__INFO_ATT:

+				return ((InternalEList<?>)getInfoAtt()).basicRemove(otherEnd, msgs);

 		}

 		return super.eInverseRemove(otherEnd, featureID, msgs);

 	}

@@ -270,6 +338,11 @@
 			case RModelPackage.R4E_FILE_CONTEXT__TARGET:

 				if (resolve) return getTarget();

 				return basicGetTarget();

+			case RModelPackage.R4E_FILE_CONTEXT__TYPE:

+				return getType();

+			case RModelPackage.R4E_FILE_CONTEXT__INFO_ATT:

+				if (coreType) return getInfoAtt();

+				else return getInfoAtt().map();

 		}

 		return super.eGet(featureID, resolve, coreType);

 	}

@@ -293,6 +366,12 @@
 			case RModelPackage.R4E_FILE_CONTEXT__TARGET:

 				setTarget((R4EFileVersion)newValue);

 				return;

+			case RModelPackage.R4E_FILE_CONTEXT__TYPE:

+				setType((R4EContextType)newValue);

+				return;

+			case RModelPackage.R4E_FILE_CONTEXT__INFO_ATT:

+				((EStructuralFeature.Setting)getInfoAtt()).set(newValue);

+				return;

 		}

 		super.eSet(featureID, newValue);

 	}

@@ -314,6 +393,12 @@
 			case RModelPackage.R4E_FILE_CONTEXT__TARGET:

 				setTarget((R4EFileVersion)null);

 				return;

+			case RModelPackage.R4E_FILE_CONTEXT__TYPE:

+				setType(TYPE_EDEFAULT);

+				return;

+			case RModelPackage.R4E_FILE_CONTEXT__INFO_ATT:

+				getInfoAtt().clear();

+				return;

 		}

 		super.eUnset(featureID);

 	}

@@ -332,8 +417,28 @@
 				return base != null;

 			case RModelPackage.R4E_FILE_CONTEXT__TARGET:

 				return target != null;

+			case RModelPackage.R4E_FILE_CONTEXT__TYPE:

+				return type != TYPE_EDEFAULT;

+			case RModelPackage.R4E_FILE_CONTEXT__INFO_ATT:

+				return infoAtt != null && !infoAtt.isEmpty();

 		}

 		return super.eIsSet(featureID);

 	}

 

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (type: ");

+		result.append(type);

+		result.append(')');

+		return result.toString();

+	}

+

 } //R4EFileContextImpl

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EFileVersionImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EFileVersionImpl.java
index 369c641..5ec9ce9 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EFileVersionImpl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EFileVersionImpl.java
@@ -1,5 +1,4 @@
 /**

-/**

  * Copyright (c) 2010 Ericsson

  *  

  * All rights reserved. This program and the accompanying materials are

@@ -16,13 +15,25 @@
 package org.eclipse.mylyn.reviews.r4e.core.model.impl;

 

 import org.eclipse.core.resources.IResource;

+

 import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.common.notify.NotificationChain;

+import org.eclipse.emf.common.util.EMap;

 import org.eclipse.emf.ecore.EClass;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.emf.ecore.InternalEObject;

 import org.eclipse.emf.ecore.impl.ENotificationImpl;

 import org.eclipse.emf.ecore.impl.EObjectImpl;

+

+import org.eclipse.emf.ecore.util.EcoreEMap;

+import org.eclipse.emf.ecore.util.InternalEList;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion;

 import org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage;

 

+import org.eclipse.team.core.history.IFileRevision;

+

 /**

  * <!-- begin-user-doc -->

  * An implementation of the model object '<em><b>R4E File Version</b></em>'.

@@ -35,6 +46,9 @@
  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EFileVersionImpl#getRepositoryPath <em>Repository Path</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EFileVersionImpl#getName <em>Name</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EFileVersionImpl#getResource <em>Resource</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EFileVersionImpl#getLocalVersionID <em>Local Version ID</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EFileVersionImpl#getFileRevision <em>File Revision</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EFileVersionImpl#getInfoAtt <em>Info Att</em>}</li>

  * </ul>

  * </p>

  *

@@ -50,6 +64,7 @@
 	 * @ordered

 	 */

 	protected static final String PLATFORM_URI_EDEFAULT = null;

+

 	/**

 	 * The cached value of the '{@link #getPlatformURI() <em>Platform URI</em>}' attribute.

 	 * <!-- begin-user-doc -->

@@ -59,6 +74,7 @@
 	 * @ordered

 	 */

 	protected String platformURI = PLATFORM_URI_EDEFAULT;

+

 	/**

 	 * The default value of the '{@link #getVersionID() <em>Version ID</em>}' attribute.

 	 * <!-- begin-user-doc -->

@@ -68,6 +84,7 @@
 	 * @ordered

 	 */

 	protected static final String VERSION_ID_EDEFAULT = null;

+

 	/**

 	 * The cached value of the '{@link #getVersionID() <em>Version ID</em>}' attribute.

 	 * <!-- begin-user-doc -->

@@ -77,6 +94,7 @@
 	 * @ordered

 	 */

 	protected String versionID = VERSION_ID_EDEFAULT;

+

 	/**

 	 * The default value of the '{@link #getRepositoryPath() <em>Repository Path</em>}' attribute.

 	 * <!-- begin-user-doc -->

@@ -86,6 +104,7 @@
 	 * @ordered

 	 */

 	protected static final String REPOSITORY_PATH_EDEFAULT = null;

+

 	/**

 	 * The cached value of the '{@link #getRepositoryPath() <em>Repository Path</em>}' attribute.

 	 * <!-- begin-user-doc -->

@@ -95,6 +114,7 @@
 	 * @ordered

 	 */

 	protected String repositoryPath = REPOSITORY_PATH_EDEFAULT;

+

 	/**

 	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.

 	 * <!-- begin-user-doc -->

@@ -104,6 +124,7 @@
 	 * @ordered

 	 */

 	protected static final String NAME_EDEFAULT = null;

+

 	/**

 	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.

 	 * <!-- begin-user-doc -->

@@ -113,6 +134,7 @@
 	 * @ordered

 	 */

 	protected String name = NAME_EDEFAULT;

+

 	/**

 	 * The default value of the '{@link #getResource() <em>Resource</em>}' attribute.

 	 * <!-- begin-user-doc -->

@@ -122,6 +144,7 @@
 	 * @ordered

 	 */

 	protected static final IResource RESOURCE_EDEFAULT = null;

+

 	/**

 	 * The cached value of the '{@link #getResource() <em>Resource</em>}' attribute.

 	 * <!-- begin-user-doc -->

@@ -131,6 +154,57 @@
 	 * @ordered

 	 */

 	protected IResource resource = RESOURCE_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getLocalVersionID() <em>Local Version ID</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLocalVersionID()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String LOCAL_VERSION_ID_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getLocalVersionID() <em>Local Version ID</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLocalVersionID()

+	 * @generated

+	 * @ordered

+	 */

+	protected String localVersionID = LOCAL_VERSION_ID_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getFileRevision() <em>File Revision</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getFileRevision()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final IFileRevision FILE_REVISION_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getFileRevision() <em>File Revision</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getFileRevision()

+	 * @generated

+	 * @ordered

+	 */

+	protected IFileRevision fileRevision = FILE_REVISION_EDEFAULT;

+

+	/**

+	 * The cached value of the '{@link #getInfoAtt() <em>Info Att</em>}' map.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInfoAtt()

+	 * @generated

+	 * @ordered

+	 */

+	protected EMap<String, String> infoAtt;

+

 	/**

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -260,6 +334,74 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	public String getLocalVersionID() {

+		return localVersionID;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setLocalVersionID(String newLocalVersionID) {

+		String oldLocalVersionID = localVersionID;

+		localVersionID = newLocalVersionID;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.R4E_FILE_VERSION__LOCAL_VERSION_ID, oldLocalVersionID, localVersionID));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public IFileRevision getFileRevision() {

+		return fileRevision;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setFileRevision(IFileRevision newFileRevision) {

+		IFileRevision oldFileRevision = fileRevision;

+		fileRevision = newFileRevision;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.R4E_FILE_VERSION__FILE_REVISION, oldFileRevision, fileRevision));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EMap<String, String> getInfoAtt() {

+		if (infoAtt == null) {

+			infoAtt = new EcoreEMap<String,String>(RModelPackage.Literals.MAP_KEY_TO_INFO_ATTRIBUTES, MapKeyToInfoAttributesImpl.class, this, RModelPackage.R4E_FILE_VERSION__INFO_ATT);

+		}

+		return infoAtt;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case RModelPackage.R4E_FILE_VERSION__INFO_ATT:

+				return ((InternalEList<?>)getInfoAtt()).basicRemove(otherEnd, msgs);

+		}

+		return super.eInverseRemove(otherEnd, featureID, msgs);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	@Override

 	public Object eGet(int featureID, boolean resolve, boolean coreType) {

 		switch (featureID) {

@@ -273,6 +415,13 @@
 				return getName();

 			case RModelPackage.R4E_FILE_VERSION__RESOURCE:

 				return getResource();

+			case RModelPackage.R4E_FILE_VERSION__LOCAL_VERSION_ID:

+				return getLocalVersionID();

+			case RModelPackage.R4E_FILE_VERSION__FILE_REVISION:

+				return getFileRevision();

+			case RModelPackage.R4E_FILE_VERSION__INFO_ATT:

+				if (coreType) return getInfoAtt();

+				else return getInfoAtt().map();

 		}

 		return super.eGet(featureID, resolve, coreType);

 	}

@@ -300,6 +449,15 @@
 			case RModelPackage.R4E_FILE_VERSION__RESOURCE:

 				setResource((IResource)newValue);

 				return;

+			case RModelPackage.R4E_FILE_VERSION__LOCAL_VERSION_ID:

+				setLocalVersionID((String)newValue);

+				return;

+			case RModelPackage.R4E_FILE_VERSION__FILE_REVISION:

+				setFileRevision((IFileRevision)newValue);

+				return;

+			case RModelPackage.R4E_FILE_VERSION__INFO_ATT:

+				((EStructuralFeature.Setting)getInfoAtt()).set(newValue);

+				return;

 		}

 		super.eSet(featureID, newValue);

 	}

@@ -327,6 +485,15 @@
 			case RModelPackage.R4E_FILE_VERSION__RESOURCE:

 				setResource(RESOURCE_EDEFAULT);

 				return;

+			case RModelPackage.R4E_FILE_VERSION__LOCAL_VERSION_ID:

+				setLocalVersionID(LOCAL_VERSION_ID_EDEFAULT);

+				return;

+			case RModelPackage.R4E_FILE_VERSION__FILE_REVISION:

+				setFileRevision(FILE_REVISION_EDEFAULT);

+				return;

+			case RModelPackage.R4E_FILE_VERSION__INFO_ATT:

+				getInfoAtt().clear();

+				return;

 		}

 		super.eUnset(featureID);

 	}

@@ -349,6 +516,12 @@
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);

 			case RModelPackage.R4E_FILE_VERSION__RESOURCE:

 				return RESOURCE_EDEFAULT == null ? resource != null : !RESOURCE_EDEFAULT.equals(resource);

+			case RModelPackage.R4E_FILE_VERSION__LOCAL_VERSION_ID:

+				return LOCAL_VERSION_ID_EDEFAULT == null ? localVersionID != null : !LOCAL_VERSION_ID_EDEFAULT.equals(localVersionID);

+			case RModelPackage.R4E_FILE_VERSION__FILE_REVISION:

+				return FILE_REVISION_EDEFAULT == null ? fileRevision != null : !FILE_REVISION_EDEFAULT.equals(fileRevision);

+			case RModelPackage.R4E_FILE_VERSION__INFO_ATT:

+				return infoAtt != null && !infoAtt.isEmpty();

 		}

 		return super.eIsSet(featureID);

 	}

@@ -373,6 +546,10 @@
 		result.append(name);

 		result.append(", resource: ");

 		result.append(resource);

+		result.append(", localVersionID: ");

+		result.append(localVersionID);

+		result.append(", fileRevision: ");

+		result.append(fileRevision);

 		result.append(')');

 		return result.toString();

 	}

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EItemImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EItemImpl.java
index 02c8478..bf0ccb9 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EItemImpl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EItemImpl.java
@@ -16,14 +16,18 @@
 

 import java.util.Collection;

 

+import java.util.Date;

 import org.eclipse.emf.common.notify.Notification;

 import org.eclipse.emf.common.notify.NotificationChain;

 import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.common.util.EMap;

 import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EStructuralFeature;

 import org.eclipse.emf.ecore.InternalEObject;

 import org.eclipse.emf.ecore.impl.ENotificationImpl;

 import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;

 import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.EcoreEMap;

 import org.eclipse.emf.ecore.util.InternalEList;

 import org.eclipse.mylyn.reviews.frame.core.model.Item;

 import org.eclipse.mylyn.reviews.frame.core.model.ModelPackage;

@@ -48,6 +52,9 @@
  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EItemImpl#getFileContextList <em>File Context List</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EItemImpl#getRepositoryRef <em>Repository Ref</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EItemImpl#getProjectURIs <em>Project UR Is</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EItemImpl#getAuthorRep <em>Author Rep</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EItemImpl#getSubmitted <em>Submitted</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EItemImpl#getInfoAtt <em>Info Att</em>}</li>

  * </ul>

  * </p>

  *

@@ -175,6 +182,56 @@
 	protected EList<String> projectURIs;

 

 	/**

+	 * The default value of the '{@link #getAuthorRep() <em>Author Rep</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getAuthorRep()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String AUTHOR_REP_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getAuthorRep() <em>Author Rep</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getAuthorRep()

+	 * @generated

+	 * @ordered

+	 */

+	protected String authorRep = AUTHOR_REP_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getSubmitted() <em>Submitted</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSubmitted()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final Date SUBMITTED_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getSubmitted() <em>Submitted</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSubmitted()

+	 * @generated

+	 * @ordered

+	 */

+	protected Date submitted = SUBMITTED_EDEFAULT;

+

+	/**

+	 * The cached value of the '{@link #getInfoAtt() <em>Info Att</em>}' map.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInfoAtt()

+	 * @generated

+	 * @ordered

+	 */

+	protected EMap<String, String> infoAtt;

+

+	/**

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @generated

@@ -382,11 +439,67 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	public String getAuthorRep() {

+		return authorRep;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setAuthorRep(String newAuthorRep) {

+		String oldAuthorRep = authorRep;

+		authorRep = newAuthorRep;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.R4E_ITEM__AUTHOR_REP, oldAuthorRep, authorRep));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Date getSubmitted() {

+		return submitted;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setSubmitted(Date newSubmitted) {

+		Date oldSubmitted = submitted;

+		submitted = newSubmitted;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.R4E_ITEM__SUBMITTED, oldSubmitted, submitted));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EMap<String, String> getInfoAtt() {

+		if (infoAtt == null) {

+			infoAtt = new EcoreEMap<String,String>(RModelPackage.Literals.MAP_KEY_TO_INFO_ATTRIBUTES, MapKeyToInfoAttributesImpl.class, this, RModelPackage.R4E_ITEM__INFO_ATT);

+		}

+		return infoAtt;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	@Override

 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

 		switch (featureID) {

 			case RModelPackage.R4E_ITEM__FILE_CONTEXT_LIST:

 				return ((InternalEList<?>)getFileContextList()).basicRemove(otherEnd, msgs);

+			case RModelPackage.R4E_ITEM__INFO_ATT:

+				return ((InternalEList<?>)getInfoAtt()).basicRemove(otherEnd, msgs);

 		}

 		return super.eInverseRemove(otherEnd, featureID, msgs);

 	}

@@ -417,6 +530,13 @@
 				return getRepositoryRef();

 			case RModelPackage.R4E_ITEM__PROJECT_UR_IS:

 				return getProjectURIs();

+			case RModelPackage.R4E_ITEM__AUTHOR_REP:

+				return getAuthorRep();

+			case RModelPackage.R4E_ITEM__SUBMITTED:

+				return getSubmitted();

+			case RModelPackage.R4E_ITEM__INFO_ATT:

+				if (coreType) return getInfoAtt();

+				else return getInfoAtt().map();

 		}

 		return super.eGet(featureID, resolve, coreType);

 	}

@@ -456,6 +576,15 @@
 				getProjectURIs().clear();

 				getProjectURIs().addAll((Collection<? extends String>)newValue);

 				return;

+			case RModelPackage.R4E_ITEM__AUTHOR_REP:

+				setAuthorRep((String)newValue);

+				return;

+			case RModelPackage.R4E_ITEM__SUBMITTED:

+				setSubmitted((Date)newValue);

+				return;

+			case RModelPackage.R4E_ITEM__INFO_ATT:

+				((EStructuralFeature.Setting)getInfoAtt()).set(newValue);

+				return;

 		}

 		super.eSet(featureID, newValue);

 	}

@@ -492,6 +621,15 @@
 			case RModelPackage.R4E_ITEM__PROJECT_UR_IS:

 				getProjectURIs().clear();

 				return;

+			case RModelPackage.R4E_ITEM__AUTHOR_REP:

+				setAuthorRep(AUTHOR_REP_EDEFAULT);

+				return;

+			case RModelPackage.R4E_ITEM__SUBMITTED:

+				setSubmitted(SUBMITTED_EDEFAULT);

+				return;

+			case RModelPackage.R4E_ITEM__INFO_ATT:

+				getInfoAtt().clear();

+				return;

 		}

 		super.eUnset(featureID);

 	}

@@ -520,6 +658,12 @@
 				return REPOSITORY_REF_EDEFAULT == null ? repositoryRef != null : !REPOSITORY_REF_EDEFAULT.equals(repositoryRef);

 			case RModelPackage.R4E_ITEM__PROJECT_UR_IS:

 				return projectURIs != null && !projectURIs.isEmpty();

+			case RModelPackage.R4E_ITEM__AUTHOR_REP:

+				return AUTHOR_REP_EDEFAULT == null ? authorRep != null : !AUTHOR_REP_EDEFAULT.equals(authorRep);

+			case RModelPackage.R4E_ITEM__SUBMITTED:

+				return SUBMITTED_EDEFAULT == null ? submitted != null : !SUBMITTED_EDEFAULT.equals(submitted);

+			case RModelPackage.R4E_ITEM__INFO_ATT:

+				return infoAtt != null && !infoAtt.isEmpty();

 		}

 		return super.eIsSet(featureID);

 	}

@@ -578,6 +722,10 @@
 		result.append(repositoryRef);

 		result.append(", ProjectURIs: ");

 		result.append(projectURIs);

+		result.append(", authorRep: ");

+		result.append(authorRep);

+		result.append(", submitted: ");

+		result.append(submitted);

 		result.append(')');

 		return result.toString();

 	}

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EParticipantImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EParticipantImpl.java
index 8b3d6ba..1d90b98 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EParticipantImpl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EParticipantImpl.java
@@ -17,12 +17,19 @@
 

 import java.util.Collection;

 

+import java.util.Date;

 import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

 import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.common.util.EMap;

 import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.emf.ecore.InternalEObject;

 import org.eclipse.emf.ecore.impl.ENotificationImpl;

 import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;

 import org.eclipse.emf.ecore.util.EObjectResolvingEList;

+import org.eclipse.emf.ecore.util.EcoreEMap;

+import org.eclipse.emf.ecore.util.InternalEList;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EID;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EUserRole;

@@ -36,10 +43,10 @@
  * The following features are implemented:

  * <ul>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EParticipantImpl#getRoles <em>Roles</em>}</li>

- *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EParticipantImpl#getSpentTime <em>Spent Time</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EParticipantImpl#getFocusArea <em>Focus Area</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EParticipantImpl#isIsPartOfDecision <em>Is Part Of Decision</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EParticipantImpl#getReviewedContent <em>Reviewed Content</em>}</li>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EParticipantImpl#getTimeLog <em>Time Log</em>}</li>

  * </ul>

  * </p>

  *

@@ -57,26 +64,6 @@
 	protected EList<R4EUserRole> roles;

 

 	/**

-	 * The default value of the '{@link #getSpentTime() <em>Spent Time</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getSpentTime()

-	 * @generated

-	 * @ordered

-	 */

-	protected static final int SPENT_TIME_EDEFAULT = 0;

-

-	/**

-	 * The cached value of the '{@link #getSpentTime() <em>Spent Time</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getSpentTime()

-	 * @generated

-	 * @ordered

-	 */

-	protected int spentTime = SPENT_TIME_EDEFAULT;

-

-	/**

 	 * The default value of the '{@link #getFocusArea() <em>Focus Area</em>}' attribute.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -127,6 +114,16 @@
 	protected EList<R4EID> reviewedContent;

 

 	/**

+	 * The cached value of the '{@link #getTimeLog() <em>Time Log</em>}' map.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getTimeLog()

+	 * @generated

+	 * @ordered

+	 */

+	protected EMap<Date, Integer> timeLog;

+

+	/**

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

 	 * @generated

@@ -162,27 +159,6 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public int getSpentTime() {

-		return spentTime;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void setSpentTime(int newSpentTime) {

-		int oldSpentTime = spentTime;

-		spentTime = newSpentTime;

-		if (eNotificationRequired())

-			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.R4E_PARTICIPANT__SPENT_TIME, oldSpentTime, spentTime));

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

 	public String getFocusArea() {

 		return focusArea;

 	}

@@ -237,19 +213,46 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	public EMap<Date, Integer> getTimeLog() {

+		if (timeLog == null) {

+			timeLog = new EcoreEMap<Date,Integer>(RModelPackage.Literals.MAP_DATE_TO_DURATION, MapDateToDurationImpl.class, this, RModelPackage.R4E_PARTICIPANT__TIME_LOG);

+		}

+		return timeLog;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case RModelPackage.R4E_PARTICIPANT__TIME_LOG:

+				return ((InternalEList<?>)getTimeLog()).basicRemove(otherEnd, msgs);

+		}

+		return super.eInverseRemove(otherEnd, featureID, msgs);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	@Override

 	public Object eGet(int featureID, boolean resolve, boolean coreType) {

 		switch (featureID) {

 			case RModelPackage.R4E_PARTICIPANT__ROLES:

 				return getRoles();

-			case RModelPackage.R4E_PARTICIPANT__SPENT_TIME:

-				return getSpentTime();

 			case RModelPackage.R4E_PARTICIPANT__FOCUS_AREA:

 				return getFocusArea();

 			case RModelPackage.R4E_PARTICIPANT__IS_PART_OF_DECISION:

 				return isIsPartOfDecision();

 			case RModelPackage.R4E_PARTICIPANT__REVIEWED_CONTENT:

 				return getReviewedContent();

+			case RModelPackage.R4E_PARTICIPANT__TIME_LOG:

+				if (coreType) return getTimeLog();

+				else return getTimeLog().map();

 		}

 		return super.eGet(featureID, resolve, coreType);

 	}

@@ -267,9 +270,6 @@
 				getRoles().clear();

 				getRoles().addAll((Collection<? extends R4EUserRole>)newValue);

 				return;

-			case RModelPackage.R4E_PARTICIPANT__SPENT_TIME:

-				setSpentTime((Integer)newValue);

-				return;

 			case RModelPackage.R4E_PARTICIPANT__FOCUS_AREA:

 				setFocusArea((String)newValue);

 				return;

@@ -280,6 +280,9 @@
 				getReviewedContent().clear();

 				getReviewedContent().addAll((Collection<? extends R4EID>)newValue);

 				return;

+			case RModelPackage.R4E_PARTICIPANT__TIME_LOG:

+				((EStructuralFeature.Setting)getTimeLog()).set(newValue);

+				return;

 		}

 		super.eSet(featureID, newValue);

 	}

@@ -295,9 +298,6 @@
 			case RModelPackage.R4E_PARTICIPANT__ROLES:

 				getRoles().clear();

 				return;

-			case RModelPackage.R4E_PARTICIPANT__SPENT_TIME:

-				setSpentTime(SPENT_TIME_EDEFAULT);

-				return;

 			case RModelPackage.R4E_PARTICIPANT__FOCUS_AREA:

 				setFocusArea(FOCUS_AREA_EDEFAULT);

 				return;

@@ -307,6 +307,9 @@
 			case RModelPackage.R4E_PARTICIPANT__REVIEWED_CONTENT:

 				getReviewedContent().clear();

 				return;

+			case RModelPackage.R4E_PARTICIPANT__TIME_LOG:

+				getTimeLog().clear();

+				return;

 		}

 		super.eUnset(featureID);

 	}

@@ -321,14 +324,14 @@
 		switch (featureID) {

 			case RModelPackage.R4E_PARTICIPANT__ROLES:

 				return roles != null && !roles.isEmpty();

-			case RModelPackage.R4E_PARTICIPANT__SPENT_TIME:

-				return spentTime != SPENT_TIME_EDEFAULT;

 			case RModelPackage.R4E_PARTICIPANT__FOCUS_AREA:

 				return FOCUS_AREA_EDEFAULT == null ? focusArea != null : !FOCUS_AREA_EDEFAULT.equals(focusArea);

 			case RModelPackage.R4E_PARTICIPANT__IS_PART_OF_DECISION:

 				return isPartOfDecision != IS_PART_OF_DECISION_EDEFAULT;

 			case RModelPackage.R4E_PARTICIPANT__REVIEWED_CONTENT:

 				return reviewedContent != null && !reviewedContent.isEmpty();

+			case RModelPackage.R4E_PARTICIPANT__TIME_LOG:

+				return timeLog != null && !timeLog.isEmpty();

 		}

 		return super.eIsSet(featureID);

 	}

@@ -345,8 +348,6 @@
 		StringBuffer result = new StringBuffer(super.toString());

 		result.append(" (roles: ");

 		result.append(roles);

-		result.append(", spentTime: ");

-		result.append(spentTime);

 		result.append(", focusArea: ");

 		result.append(focusArea);

 		result.append(", isPartOfDecision: ");

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EReviewImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EReviewImpl.java
index 349760e..6bdcdb0 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EReviewImpl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EReviewImpl.java
@@ -47,7 +47,6 @@
  * The following features are implemented:

  * <ul>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EReviewImpl#getName <em>Name</em>}</li>

- *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EReviewImpl#getCreationDate <em>Creation Date</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EReviewImpl#getProject <em>Project</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EReviewImpl#getComponents <em>Components</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EReviewImpl#getEntryCriteria <em>Entry Criteria</em>}</li>

@@ -90,26 +89,6 @@
 	protected String name = NAME_EDEFAULT;

 

 	/**

-	 * The default value of the '{@link #getCreationDate() <em>Creation Date</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getCreationDate()

-	 * @generated

-	 * @ordered

-	 */

-	protected static final Date CREATION_DATE_EDEFAULT = null;

-

-	/**

-	 * The cached value of the '{@link #getCreationDate() <em>Creation Date</em>}' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see #getCreationDate()

-	 * @generated

-	 * @ordered

-	 */

-	protected Date creationDate = CREATION_DATE_EDEFAULT;

-

-	/**

 	 * The default value of the '{@link #getProject() <em>Project</em>}' attribute.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -394,27 +373,6 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public Date getCreationDate() {

-		return creationDate;

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	public void setCreationDate(Date newCreationDate) {

-		Date oldCreationDate = creationDate;

-		creationDate = newCreationDate;

-		if (eNotificationRequired())

-			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.R4E_REVIEW__CREATION_DATE, oldCreationDate, creationDate));

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

 	public String getProject() {

 		return project;

 	}

@@ -835,8 +793,6 @@
 		switch (featureID) {

 			case RModelPackage.R4E_REVIEW__NAME:

 				return getName();

-			case RModelPackage.R4E_REVIEW__CREATION_DATE:

-				return getCreationDate();

 			case RModelPackage.R4E_REVIEW__PROJECT:

 				return getProject();

 			case RModelPackage.R4E_REVIEW__COMPONENTS:

@@ -888,9 +844,6 @@
 			case RModelPackage.R4E_REVIEW__NAME:

 				setName((String)newValue);

 				return;

-			case RModelPackage.R4E_REVIEW__CREATION_DATE:

-				setCreationDate((Date)newValue);

-				return;

 			case RModelPackage.R4E_REVIEW__PROJECT:

 				setProject((String)newValue);

 				return;

@@ -952,9 +905,6 @@
 			case RModelPackage.R4E_REVIEW__NAME:

 				setName(NAME_EDEFAULT);

 				return;

-			case RModelPackage.R4E_REVIEW__CREATION_DATE:

-				setCreationDate(CREATION_DATE_EDEFAULT);

-				return;

 			case RModelPackage.R4E_REVIEW__PROJECT:

 				setProject(PROJECT_EDEFAULT);

 				return;

@@ -1014,8 +964,6 @@
 		switch (featureID) {

 			case RModelPackage.R4E_REVIEW__NAME:

 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);

-			case RModelPackage.R4E_REVIEW__CREATION_DATE:

-				return CREATION_DATE_EDEFAULT == null ? creationDate != null : !CREATION_DATE_EDEFAULT.equals(creationDate);

 			case RModelPackage.R4E_REVIEW__PROJECT:

 				return PROJECT_EDEFAULT == null ? project != null : !PROJECT_EDEFAULT.equals(project);

 			case RModelPackage.R4E_REVIEW__COMPONENTS:

@@ -1062,8 +1010,6 @@
 		StringBuffer result = new StringBuffer(super.toString());

 		result.append(" (name: ");

 		result.append(name);

-		result.append(", creationDate: ");

-		result.append(creationDate);

 		result.append(", project: ");

 		result.append(project);

 		result.append(", components: ");

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EUserImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EUserImpl.java
index 9dc0f97..565b738 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EUserImpl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/R4EUserImpl.java
@@ -26,10 +26,13 @@
 import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;

 import org.eclipse.emf.ecore.util.EObjectContainmentEList;

 import org.eclipse.emf.ecore.util.InternalEList;

+import org.eclipse.mylyn.reviews.frame.core.model.ModelPackage;

+import org.eclipse.mylyn.reviews.frame.core.model.ReviewComponent;

 import org.eclipse.mylyn.reviews.frame.core.model.impl.UserImpl;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EComment;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EItem;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EReview;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewComponent;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EUser;

 import org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage;

 

@@ -40,6 +43,7 @@
  * <p>

  * The following features are implemented:

  * <ul>

+ *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EUserImpl#isEnabled <em>Enabled</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EUserImpl#getGroupPaths <em>Group Paths</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EUserImpl#getSequenceIDCounter <em>Sequence ID Counter</em>}</li>

  *   <li>{@link org.eclipse.mylyn.reviews.r4e.core.model.impl.R4EUserImpl#getAddedComments <em>Added Comments</em>}</li>

@@ -56,6 +60,26 @@
  */

 public class R4EUserImpl extends UserImpl implements R4EUser {

 	/**

+	 * The default value of the '{@link #isEnabled() <em>Enabled</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isEnabled()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final boolean ENABLED_EDEFAULT = true;

+

+	/**

+	 * The cached value of the '{@link #isEnabled() <em>Enabled</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isEnabled()

+	 * @generated

+	 * @ordered

+	 */

+	protected boolean enabled = ENABLED_EDEFAULT;

+

+	/**

 	 * The cached value of the '{@link #getGroupPaths() <em>Group Paths</em>}' attribute list.

 	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

@@ -218,6 +242,27 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	public boolean isEnabled() {

+		return enabled;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setEnabled(boolean newEnabled) {

+		boolean oldEnabled = enabled;

+		enabled = newEnabled;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, RModelPackage.R4E_USER__ENABLED, oldEnabled, enabled));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	public EList<String> getGroupPaths() {

 		if (groupPaths == null) {

 			groupPaths = new EDataTypeUniqueEList<String>(String.class, this, RModelPackage.R4E_USER__GROUP_PATHS);

@@ -427,6 +472,8 @@
 	@Override

 	public Object eGet(int featureID, boolean resolve, boolean coreType) {

 		switch (featureID) {

+			case RModelPackage.R4E_USER__ENABLED:

+				return isEnabled();

 			case RModelPackage.R4E_USER__GROUP_PATHS:

 				return getGroupPaths();

 			case RModelPackage.R4E_USER__SEQUENCE_ID_COUNTER:

@@ -459,6 +506,9 @@
 	@Override

 	public void eSet(int featureID, Object newValue) {

 		switch (featureID) {

+			case RModelPackage.R4E_USER__ENABLED:

+				setEnabled((Boolean)newValue);

+				return;

 			case RModelPackage.R4E_USER__GROUP_PATHS:

 				getGroupPaths().clear();

 				getGroupPaths().addAll((Collection<? extends String>)newValue);

@@ -501,6 +551,9 @@
 	@Override

 	public void eUnset(int featureID) {

 		switch (featureID) {

+			case RModelPackage.R4E_USER__ENABLED:

+				setEnabled(ENABLED_EDEFAULT);

+				return;

 			case RModelPackage.R4E_USER__GROUP_PATHS:

 				getGroupPaths().clear();

 				return;

@@ -540,6 +593,8 @@
 	@Override

 	public boolean eIsSet(int featureID) {

 		switch (featureID) {

+			case RModelPackage.R4E_USER__ENABLED:

+				return enabled != ENABLED_EDEFAULT;

 			case RModelPackage.R4E_USER__GROUP_PATHS:

 				return groupPaths != null && !groupPaths.isEmpty();

 			case RModelPackage.R4E_USER__SEQUENCE_ID_COUNTER:

@@ -568,11 +623,55 @@
 	 * @generated

 	 */

 	@Override

+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {

+		if (baseClass == ReviewComponent.class) {

+			switch (derivedFeatureID) {

+				case RModelPackage.R4E_USER__ENABLED: return ModelPackage.REVIEW_COMPONENT__ENABLED;

+				default: return -1;

+			}

+		}

+		if (baseClass == R4EReviewComponent.class) {

+			switch (derivedFeatureID) {

+				default: return -1;

+			}

+		}

+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {

+		if (baseClass == ReviewComponent.class) {

+			switch (baseFeatureID) {

+				case ModelPackage.REVIEW_COMPONENT__ENABLED: return RModelPackage.R4E_USER__ENABLED;

+				default: return -1;

+			}

+		}

+		if (baseClass == R4EReviewComponent.class) {

+			switch (baseFeatureID) {

+				default: return -1;

+			}

+		}

+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

 	public String toString() {

 		if (eIsProxy()) return super.toString();

 

 		StringBuffer result = new StringBuffer(super.toString());

-		result.append(" (groupPaths: ");

+		result.append(" (enabled: ");

+		result.append(enabled);

+		result.append(", groupPaths: ");

 		result.append(groupPaths);

 		result.append(", sequenceIDCounter: ");

 		result.append(sequenceIDCounter);

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/RModelFactoryImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/RModelFactoryImpl.java
index 6b974f9..12d66ec 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/RModelFactoryImpl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/RModelFactoryImpl.java
@@ -14,6 +14,7 @@
  */

 package org.eclipse.mylyn.reviews.r4e.core.model.impl;

 

+import java.util.Date;

 import java.util.List;

 import java.util.Map;

 

@@ -32,9 +33,10 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyTextPosition;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyType;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EComment;

-import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentType;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EContent;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EDecision;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EDelta;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext;

@@ -64,6 +66,7 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.SerializeFactory;

 import org.eclipse.mylyn.tasks.core.ITask;

+import org.eclipse.team.core.history.IFileRevision;

 

 /**

  * <!-- begin-user-doc -->

@@ -139,6 +142,8 @@
 			case RModelPackage.MAP_ID_TO_COMPONENT: return (EObject)createMapIDToComponent();

 			case RModelPackage.MAP_USER_ID_TO_USER_REVIEWS: return (EObject)createMapUserIDToUserReviews();

 			case RModelPackage.R4E_ANOMALY_TEXT_POSITION: return createR4EAnomalyTextPosition();

+			case RModelPackage.MAP_DATE_TO_DURATION: return (EObject)createMapDateToDuration();

+			case RModelPackage.MAP_KEY_TO_INFO_ATTRIBUTES: return (EObject)createMapKeyToInfoAttributes();

 			default:

 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");

 		}

@@ -164,12 +169,16 @@
 				return createR4EDecisionFromString(eDataType, initialValue);

 			case RModelPackage.R4E_REVIEW_TYPE:

 				return createR4EReviewTypeFromString(eDataType, initialValue);

-			case RModelPackage.R4E_COMMENT_ENUM:

-				return createR4ECommentEnumFromString(eDataType, initialValue);

+			case RModelPackage.R4E_COMMENT_CLASS:

+				return createR4ECommentClassFromString(eDataType, initialValue);

+			case RModelPackage.R4E_CONTEXT_TYPE:

+				return createR4EContextTypeFromString(eDataType, initialValue);

 			case RModelPackage.MYLYN_TASK:

 				return createMylynTaskFromString(eDataType, initialValue);

 			case RModelPackage.IRESOURCE:

 				return createIResourceFromString(eDataType, initialValue);

+			case RModelPackage.IFILE_REVISION:

+				return createIFileRevisionFromString(eDataType, initialValue);

 			default:

 				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");

 		}

@@ -195,12 +204,16 @@
 				return convertR4EDecisionToString(eDataType, instanceValue);

 			case RModelPackage.R4E_REVIEW_TYPE:

 				return convertR4EReviewTypeToString(eDataType, instanceValue);

-			case RModelPackage.R4E_COMMENT_ENUM:

-				return convertR4ECommentEnumToString(eDataType, instanceValue);

+			case RModelPackage.R4E_COMMENT_CLASS:

+				return convertR4ECommentClassToString(eDataType, instanceValue);

+			case RModelPackage.R4E_CONTEXT_TYPE:

+				return convertR4EContextTypeToString(eDataType, instanceValue);

 			case RModelPackage.MYLYN_TASK:

 				return convertMylynTaskToString(eDataType, instanceValue);

 			case RModelPackage.IRESOURCE:

 				return convertIResourceToString(eDataType, instanceValue);

+			case RModelPackage.IFILE_REVISION:

+				return convertIFileRevisionToString(eDataType, instanceValue);

 			default:

 				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");

 		}

@@ -471,6 +484,26 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	public Map.Entry<Date, Integer> createMapDateToDuration() {

+		MapDateToDurationImpl mapDateToDuration = new MapDateToDurationImpl();

+		return mapDateToDuration;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Map.Entry<String, String> createMapKeyToInfoAttributes() {

+		MapKeyToInfoAttributesImpl mapKeyToInfoAttributes = new MapKeyToInfoAttributesImpl();

+		return mapKeyToInfoAttributes;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	public R4ECommentType createR4ECommentType() {

 		R4ECommentTypeImpl r4ECommentType = new R4ECommentTypeImpl();

 		return r4ECommentType;

@@ -729,9 +762,9 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public R4ECommentEnum createR4ECommentEnum(String literal) {

-		R4ECommentEnum result = R4ECommentEnum.get(literal);

-		if (result == null) throw new IllegalArgumentException("The value '" + literal + "' is not a valid enumerator of '" + RModelPackage.Literals.R4E_COMMENT_ENUM.getName() + "'");

+	public R4ECommentClass createR4ECommentClass(String literal) {

+		R4ECommentClass result = R4ECommentClass.get(literal);

+		if (result == null) throw new IllegalArgumentException("The value '" + literal + "' is not a valid enumerator of '" + RModelPackage.Literals.R4E_COMMENT_CLASS.getName() + "'");

 		return result;

 	}

 

@@ -740,8 +773,8 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public R4ECommentEnum createR4ECommentEnumFromString(EDataType eDataType, String initialValue) {

-		return createR4ECommentEnum(initialValue);

+	public R4ECommentClass createR4ECommentClassFromString(EDataType eDataType, String initialValue) {

+		return createR4ECommentClass(initialValue);

 	}

 

 	/**

@@ -749,7 +782,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public String convertR4ECommentEnum(R4ECommentEnum instanceValue) {

+	public String convertR4ECommentClass(R4ECommentClass instanceValue) {

 		return instanceValue == null ? null : instanceValue.toString();

 	}

 

@@ -758,7 +791,45 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public String convertR4ECommentEnumToString(EDataType eDataType, Object instanceValue) {

+	public String convertR4ECommentClassToString(EDataType eDataType, Object instanceValue) {

+		return instanceValue == null ? null : instanceValue.toString();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public R4EContextType createR4EContextType(String literal) {

+		R4EContextType result = R4EContextType.get(literal);

+		if (result == null) throw new IllegalArgumentException("The value '" + literal + "' is not a valid enumerator of '" + RModelPackage.Literals.R4E_CONTEXT_TYPE.getName() + "'");

+		return result;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public R4EContextType createR4EContextTypeFromString(EDataType eDataType, String initialValue) {

+		return createR4EContextType(initialValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String convertR4EContextType(R4EContextType instanceValue) {

+		return instanceValue == null ? null : instanceValue.toString();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String convertR4EContextTypeToString(EDataType eDataType, Object instanceValue) {

 		return instanceValue == null ? null : instanceValue.toString();

 	}

 

@@ -839,6 +910,42 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	public IFileRevision createIFileRevision(String literal) {

+		return (IFileRevision)super.createFromString(RModelPackage.Literals.IFILE_REVISION, literal);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public IFileRevision createIFileRevisionFromString(EDataType eDataType, String initialValue) {

+		return (IFileRevision)super.createFromString(eDataType, initialValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String convertIFileRevision(IFileRevision instanceValue) {

+		return super.convertToString(RModelPackage.Literals.IFILE_REVISION, instanceValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String convertIFileRevisionToString(EDataType eDataType, Object instanceValue) {

+		return super.convertToString(eDataType, instanceValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	public RModelPackage getRModelPackage() {

 		return (RModelPackage)getEPackage();

 	}

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/RModelPackageImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/RModelPackageImpl.java
index 7472134..743e83f 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/RModelPackageImpl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/impl/RModelPackageImpl.java
@@ -31,9 +31,10 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyTextPosition;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyType;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EComment;

-import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentEnum;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentType;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EContent;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EContextType;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EDecision;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EDelta;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext;

@@ -60,6 +61,7 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.RModelPackage;

 import org.eclipse.mylyn.reviews.r4e.core.model.drules.DRModelPackage;

 import org.eclipse.mylyn.tasks.core.ITask;

+import org.eclipse.team.core.history.IFileRevision;

 

 /**

  * <!-- begin-user-doc -->

@@ -283,6 +285,20 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	private EClass mapDateToDurationEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass mapKeyToInfoAttributesEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	private EEnum r4EAnomalyStateEEnum = null;

 

 	/**

@@ -325,7 +341,14 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	private EEnum r4ECommentEnumEEnum = null;

+	private EEnum r4ECommentClassEEnum = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EEnum r4EContextTypeEEnum = null;

 

 	/**

 	 * <!-- begin-user-doc -->

@@ -349,6 +372,13 @@
 	private EDataType uriEDataType = null;

 

 	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EDataType iFileRevisionEDataType = 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.

@@ -544,7 +574,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EAttribute getR4EReview_CreationDate() {

+	public EAttribute getR4EReview_Project() {

 		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(1);

 	}

 

@@ -553,7 +583,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EAttribute getR4EReview_Project() {

+	public EAttribute getR4EReview_Components() {

 		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(2);

 	}

 

@@ -562,7 +592,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EAttribute getR4EReview_Components() {

+	public EAttribute getR4EReview_EntryCriteria() {

 		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(3);

 	}

 

@@ -571,7 +601,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EAttribute getR4EReview_EntryCriteria() {

+	public EAttribute getR4EReview_ExtraNotes() {

 		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(4);

 	}

 

@@ -580,7 +610,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EAttribute getR4EReview_ExtraNotes() {

+	public EAttribute getR4EReview_Objectives() {

 		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(5);

 	}

 

@@ -589,7 +619,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EAttribute getR4EReview_Objectives() {

+	public EAttribute getR4EReview_ReferenceMaterial() {

 		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(6);

 	}

 

@@ -598,17 +628,8 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EAttribute getR4EReview_ReferenceMaterial() {

-		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(7);

-	}

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

 	public EReference getR4EReview_Decision() {

-		return (EReference)r4EReviewEClass.getEStructuralFeatures().get(8);

+		return (EReference)r4EReviewEClass.getEStructuralFeatures().get(7);

 	}

 

 	/**

@@ -617,7 +638,7 @@
 	 * @generated

 	 */

 	public EAttribute getR4EReview_StartDate() {

-		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(9);

+		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(8);

 	}

 

 	/**

@@ -626,7 +647,7 @@
 	 * @generated

 	 */

 	public EAttribute getR4EReview_EndDate() {

-		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(10);

+		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(9);

 	}

 

 	/**

@@ -635,7 +656,7 @@
 	 * @generated

 	 */

 	public EAttribute getR4EReview_XmlVersion() {

-		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(11);

+		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(10);

 	}

 

 	/**

@@ -644,7 +665,7 @@
 	 * @generated

 	 */

 	public EReference getR4EReview_AnomalyTemplate() {

-		return (EReference)r4EReviewEClass.getEStructuralFeatures().get(12);

+		return (EReference)r4EReviewEClass.getEStructuralFeatures().get(11);

 	}

 

 	/**

@@ -653,7 +674,7 @@
 	 * @generated

 	 */

 	public EAttribute getR4EReview_Type() {

-		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(13);

+		return (EAttribute)r4EReviewEClass.getEStructuralFeatures().get(12);

 	}

 

 	/**

@@ -662,7 +683,7 @@
 	 * @generated

 	 */

 	public EReference getR4EReview_UsersMap() {

-		return (EReference)r4EReviewEClass.getEStructuralFeatures().get(14);

+		return (EReference)r4EReviewEClass.getEStructuralFeatures().get(13);

 	}

 

 	/**

@@ -671,7 +692,7 @@
 	 * @generated

 	 */

 	public EReference getR4EReview_IdsMap() {

-		return (EReference)r4EReviewEClass.getEStructuralFeatures().get(16);

+		return (EReference)r4EReviewEClass.getEStructuralFeatures().get(15);

 	}

 

 	/**

@@ -680,7 +701,7 @@
 	 * @generated

 	 */

 	public EReference getR4EReview_CreatedBy() {

-		return (EReference)r4EReviewEClass.getEStructuralFeatures().get(15);

+		return (EReference)r4EReviewEClass.getEStructuralFeatures().get(14);

 	}

 

 	/**

@@ -832,7 +853,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EAttribute getR4EAnomaly_FiexeByID() {

+	public EAttribute getR4EAnomaly_FixedByID() {

 		return (EAttribute)r4EAnomalyEClass.getEStructuralFeatures().get(15);

 	}

 

@@ -1084,7 +1105,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EAttribute getR4EParticipant_SpentTime() {

+	public EAttribute getR4EParticipant_FocusArea() {

 		return (EAttribute)r4EParticipantEClass.getEStructuralFeatures().get(1);

 	}

 

@@ -1093,7 +1114,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EAttribute getR4EParticipant_FocusArea() {

+	public EAttribute getR4EParticipant_IsPartOfDecision() {

 		return (EAttribute)r4EParticipantEClass.getEStructuralFeatures().get(2);

 	}

 

@@ -1102,8 +1123,8 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EAttribute getR4EParticipant_IsPartOfDecision() {

-		return (EAttribute)r4EParticipantEClass.getEStructuralFeatures().get(3);

+	public EReference getR4EParticipant_ReviewedContent() {

+		return (EReference)r4EParticipantEClass.getEStructuralFeatures().get(3);

 	}

 

 	/**

@@ -1111,7 +1132,7 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EReference getR4EParticipant_ReviewedContent() {

+	public EReference getR4EParticipant_TimeLog() {

 		return (EReference)r4EParticipantEClass.getEStructuralFeatures().get(4);

 	}

 

@@ -1183,6 +1204,33 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	public EAttribute getR4EItem_AuthorRep() {

+		return (EAttribute)r4EItemEClass.getEStructuralFeatures().get(6);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getR4EItem_Submitted() {

+		return (EAttribute)r4EItemEClass.getEStructuralFeatures().get(7);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getR4EItem_InfoAtt() {

+		return (EReference)r4EItemEClass.getEStructuralFeatures().get(8);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	public EClass getR4ETextContent() {

 		return r4ETextContentEClass;

 	}

@@ -1354,6 +1402,24 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	public EAttribute getR4EFileContext_Type() {

+		return (EAttribute)r4EFileContextEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getR4EFileContext_InfoAtt() {

+		return (EReference)r4EFileContextEClass.getEStructuralFeatures().get(4);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	public EClass getR4EDelta() {

 		return r4EDeltaEClass;

 	}

@@ -1516,6 +1582,33 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	public EAttribute getR4EFileVersion_LocalVersionID() {

+		return (EAttribute)r4EFileVersionEClass.getEStructuralFeatures().get(5);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getR4EFileVersion_FileRevision() {

+		return (EAttribute)r4EFileVersionEClass.getEStructuralFeatures().get(6);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getR4EFileVersion_InfoAtt() {

+		return (EReference)r4EFileVersionEClass.getEStructuralFeatures().get(7);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	public EClass getMapNameToReview() {

 		return mapNameToReviewEClass;

 	}

@@ -1714,6 +1807,60 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	public EClass getMapDateToDuration() {

+		return mapDateToDurationEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getMapDateToDuration_Key() {

+		return (EAttribute)mapDateToDurationEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getMapDateToDuration_Value() {

+		return (EAttribute)mapDateToDurationEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getMapKeyToInfoAttributes() {

+		return mapKeyToInfoAttributesEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getMapKeyToInfoAttributes_Key() {

+		return (EAttribute)mapKeyToInfoAttributesEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getMapKeyToInfoAttributes_Value() {

+		return (EAttribute)mapKeyToInfoAttributesEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	public EEnum getR4EAnomalyState() {

 		return r4EAnomalyStateEEnum;

 	}

@@ -1768,8 +1915,17 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

-	public EEnum getR4ECommentEnum() {

-		return r4ECommentEnumEEnum;

+	public EEnum getR4ECommentClass() {

+		return r4ECommentClassEEnum;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EEnum getR4EContextType() {

+		return r4EContextTypeEEnum;

 	}

 

 	/**

@@ -1804,6 +1960,15 @@
 	 * <!-- end-user-doc -->

 	 * @generated

 	 */

+	public EDataType getIFileRevision() {

+		return iFileRevisionEDataType;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

 	public RModelFactory getRModelFactory() {

 		return (RModelFactory)getEFactoryInstance();

 	}

@@ -1842,7 +2007,6 @@
 

 		r4EReviewEClass = createEClass(R4E_REVIEW);

 		createEAttribute(r4EReviewEClass, R4E_REVIEW__NAME);

-		createEAttribute(r4EReviewEClass, R4E_REVIEW__CREATION_DATE);

 		createEAttribute(r4EReviewEClass, R4E_REVIEW__PROJECT);

 		createEAttribute(r4EReviewEClass, R4E_REVIEW__COMPONENTS);

 		createEAttribute(r4EReviewEClass, R4E_REVIEW__ENTRY_CRITERIA);

@@ -1875,7 +2039,7 @@
 		createEReference(r4EAnomalyEClass, R4E_ANOMALY__FIXED_IN_VERSION);

 		createEAttribute(r4EAnomalyEClass, R4E_ANOMALY__RULE_ID);

 		createEAttribute(r4EAnomalyEClass, R4E_ANOMALY__DECIDED_BY_ID);

-		createEAttribute(r4EAnomalyEClass, R4E_ANOMALY__FIEXE_BY_ID);

+		createEAttribute(r4EAnomalyEClass, R4E_ANOMALY__FIXED_BY_ID);

 		createEAttribute(r4EAnomalyEClass, R4E_ANOMALY__FOLLOW_UP_BY_ID);

 

 		r4EFormalReviewEClass = createEClass(R4E_FORMAL_REVIEW);

@@ -1908,10 +2072,10 @@
 

 		r4EParticipantEClass = createEClass(R4E_PARTICIPANT);

 		createEAttribute(r4EParticipantEClass, R4E_PARTICIPANT__ROLES);

-		createEAttribute(r4EParticipantEClass, R4E_PARTICIPANT__SPENT_TIME);

 		createEAttribute(r4EParticipantEClass, R4E_PARTICIPANT__FOCUS_AREA);

 		createEAttribute(r4EParticipantEClass, R4E_PARTICIPANT__IS_PART_OF_DECISION);

 		createEReference(r4EParticipantEClass, R4E_PARTICIPANT__REVIEWED_CONTENT);

+		createEReference(r4EParticipantEClass, R4E_PARTICIPANT__TIME_LOG);

 

 		r4EItemEClass = createEClass(R4E_ITEM);

 		createEAttribute(r4EItemEClass, R4E_ITEM__XML_VERSION);

@@ -1920,6 +2084,9 @@
 		createEReference(r4EItemEClass, R4E_ITEM__FILE_CONTEXT_LIST);

 		createEAttribute(r4EItemEClass, R4E_ITEM__REPOSITORY_REF);

 		createEAttribute(r4EItemEClass, R4E_ITEM__PROJECT_UR_IS);

+		createEAttribute(r4EItemEClass, R4E_ITEM__AUTHOR_REP);

+		createEAttribute(r4EItemEClass, R4E_ITEM__SUBMITTED);

+		createEReference(r4EItemEClass, R4E_ITEM__INFO_ATT);

 

 		r4ETextContentEClass = createEClass(R4E_TEXT_CONTENT);

 		createEAttribute(r4ETextContentEClass, R4E_TEXT_CONTENT__CONTENT);

@@ -1947,6 +2114,8 @@
 		createEReference(r4EFileContextEClass, R4E_FILE_CONTEXT__DELTAS);

 		createEReference(r4EFileContextEClass, R4E_FILE_CONTEXT__BASE);

 		createEReference(r4EFileContextEClass, R4E_FILE_CONTEXT__TARGET);

+		createEAttribute(r4EFileContextEClass, R4E_FILE_CONTEXT__TYPE);

+		createEReference(r4EFileContextEClass, R4E_FILE_CONTEXT__INFO_ATT);

 

 		r4EDeltaEClass = createEClass(R4E_DELTA);

 		createEReference(r4EDeltaEClass, R4E_DELTA__BASE);

@@ -1971,6 +2140,9 @@
 		createEAttribute(r4EFileVersionEClass, R4E_FILE_VERSION__REPOSITORY_PATH);

 		createEAttribute(r4EFileVersionEClass, R4E_FILE_VERSION__NAME);

 		createEAttribute(r4EFileVersionEClass, R4E_FILE_VERSION__RESOURCE);

+		createEAttribute(r4EFileVersionEClass, R4E_FILE_VERSION__LOCAL_VERSION_ID);

+		createEAttribute(r4EFileVersionEClass, R4E_FILE_VERSION__FILE_REVISION);

+		createEReference(r4EFileVersionEClass, R4E_FILE_VERSION__INFO_ATT);

 

 		mapNameToReviewEClass = createEClass(MAP_NAME_TO_REVIEW);

 		createEAttribute(mapNameToReviewEClass, MAP_NAME_TO_REVIEW__KEY);

@@ -2001,6 +2173,14 @@
 		r4EAnomalyTextPositionEClass = createEClass(R4E_ANOMALY_TEXT_POSITION);

 		createEReference(r4EAnomalyTextPositionEClass, R4E_ANOMALY_TEXT_POSITION__FILE);

 

+		mapDateToDurationEClass = createEClass(MAP_DATE_TO_DURATION);

+		createEAttribute(mapDateToDurationEClass, MAP_DATE_TO_DURATION__KEY);

+		createEAttribute(mapDateToDurationEClass, MAP_DATE_TO_DURATION__VALUE);

+

+		mapKeyToInfoAttributesEClass = createEClass(MAP_KEY_TO_INFO_ATTRIBUTES);

+		createEAttribute(mapKeyToInfoAttributesEClass, MAP_KEY_TO_INFO_ATTRIBUTES__KEY);

+		createEAttribute(mapKeyToInfoAttributesEClass, MAP_KEY_TO_INFO_ATTRIBUTES__VALUE);

+

 		// Create enums

 		r4EAnomalyStateEEnum = createEEnum(R4E_ANOMALY_STATE);

 		r4EAnomalyRankEEnum = createEEnum(R4E_ANOMALY_RANK);

@@ -2008,12 +2188,14 @@
 		r4EUserRoleEEnum = createEEnum(R4E_USER_ROLE);

 		r4EDecisionEEnum = createEEnum(R4E_DECISION);

 		r4EReviewTypeEEnum = createEEnum(R4E_REVIEW_TYPE);

-		r4ECommentEnumEEnum = createEEnum(R4E_COMMENT_ENUM);

+		r4ECommentClassEEnum = createEEnum(R4E_COMMENT_CLASS);

+		r4EContextTypeEEnum = createEEnum(R4E_CONTEXT_TYPE);

 

 		// Create data types

 		mylynTaskEDataType = createEDataType(MYLYN_TASK);

 		iResourceEDataType = createEDataType(IRESOURCE);

 		uriEDataType = createEDataType(URI);

+		iFileRevisionEDataType = createEDataType(IFILE_REVISION);

 	}

 

 	/**

@@ -2058,6 +2240,7 @@
 		r4EFormalReviewEClass.getESuperTypes().add(this.getR4EReview());

 		r4ETextPositionEClass.getESuperTypes().add(this.getR4EPosition());

 		r4EUserEClass.getESuperTypes().add(theModelPackage.getUser());

+		r4EUserEClass.getESuperTypes().add(this.getR4EReviewComponent());

 		r4EParticipantEClass.getESuperTypes().add(this.getR4EUser());

 		r4EItemEClass.getESuperTypes().add(this.getR4EIDComponent());

 		r4EItemEClass.getESuperTypes().add(theModelPackage.getItem());

@@ -2093,7 +2276,6 @@
 

 		initEClass(r4EReviewEClass, R4EReview.class, "R4EReview", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

 		initEAttribute(getR4EReview_Name(), ecorePackage.getEString(), "name", null, 0, 1, R4EReview.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-		initEAttribute(getR4EReview_CreationDate(), ecorePackage.getEDate(), "creationDate", null, 0, 1, R4EReview.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEAttribute(getR4EReview_Project(), ecorePackage.getEString(), "project", null, 0, 1, R4EReview.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEAttribute(getR4EReview_Components(), ecorePackage.getEString(), "components", null, 0, -1, R4EReview.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEAttribute(getR4EReview_EntryCriteria(), ecorePackage.getEString(), "entryCriteria", null, 0, 1, R4EReview.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

@@ -2126,7 +2308,7 @@
 		initEReference(getR4EAnomaly_FixedInVersion(), this.getR4EFileVersion(), null, "fixedInVersion", null, 0, 1, R4EAnomaly.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEAttribute(getR4EAnomaly_RuleID(), ecorePackage.getEString(), "ruleID", null, 0, 1, R4EAnomaly.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEAttribute(getR4EAnomaly_DecidedByID(), ecorePackage.getEString(), "decidedByID", null, 0, 1, R4EAnomaly.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-		initEAttribute(getR4EAnomaly_FiexeByID(), ecorePackage.getEString(), "fiexeByID", null, 0, 1, R4EAnomaly.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getR4EAnomaly_FixedByID(), ecorePackage.getEString(), "fixedByID", null, 0, 1, R4EAnomaly.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEAttribute(getR4EAnomaly_FollowUpByID(), ecorePackage.getEString(), "followUpByID", null, 0, 1, R4EAnomaly.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 

 		initEClass(r4EFormalReviewEClass, R4EFormalReview.class, "R4EFormalReview", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

@@ -2159,10 +2341,10 @@
 

 		initEClass(r4EParticipantEClass, R4EParticipant.class, "R4EParticipant", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

 		initEAttribute(getR4EParticipant_Roles(), this.getR4EUserRole(), "roles", null, 0, -1, R4EParticipant.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

-		initEAttribute(getR4EParticipant_SpentTime(), ecorePackage.getEInt(), "spentTime", null, 0, 1, R4EParticipant.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEAttribute(getR4EParticipant_FocusArea(), ecorePackage.getEString(), "focusArea", null, 0, 1, R4EParticipant.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEAttribute(getR4EParticipant_IsPartOfDecision(), ecorePackage.getEBoolean(), "isPartOfDecision", null, 0, 1, R4EParticipant.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEReference(getR4EParticipant_ReviewedContent(), this.getR4EID(), null, "reviewedContent", null, 0, -1, R4EParticipant.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getR4EParticipant_TimeLog(), this.getMapDateToDuration(), null, "timeLog", null, 0, -1, R4EParticipant.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 

 		initEClass(r4EItemEClass, R4EItem.class, "R4EItem", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

 		initEAttribute(getR4EItem_XmlVersion(), ecorePackage.getEString(), "xmlVersion", "1.0.0", 0, 1, R4EItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

@@ -2171,6 +2353,9 @@
 		initEReference(getR4EItem_FileContextList(), this.getR4EFileContext(), null, "fileContextList", null, 0, -1, R4EItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEAttribute(getR4EItem_RepositoryRef(), ecorePackage.getEString(), "repositoryRef", null, 0, 1, R4EItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEAttribute(getR4EItem_ProjectURIs(), ecorePackage.getEString(), "ProjectURIs", null, 0, -1, R4EItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getR4EItem_AuthorRep(), ecorePackage.getEString(), "authorRep", null, 0, 1, R4EItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getR4EItem_Submitted(), ecorePackage.getEDate(), "submitted", null, 0, 1, R4EItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getR4EItem_InfoAtt(), this.getMapKeyToInfoAttributes(), null, "infoAtt", null, 0, -1, R4EItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 

 		initEClass(r4ETextContentEClass, R4ETextContent.class, "R4ETextContent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

 		initEAttribute(getR4ETextContent_Content(), ecorePackage.getEString(), "content", null, 0, 1, R4ETextContent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

@@ -2198,13 +2383,15 @@
 		initEReference(getR4EFileContext_Deltas(), this.getR4EDelta(), null, "deltas", null, 0, -1, R4EFileContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEReference(getR4EFileContext_Base(), this.getR4EFileVersion(), null, "base", null, 0, 1, R4EFileContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEReference(getR4EFileContext_Target(), this.getR4EFileVersion(), null, "target", null, 1, 1, R4EFileContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getR4EFileContext_Type(), this.getR4EContextType(), "type", null, 0, 1, R4EFileContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getR4EFileContext_InfoAtt(), this.getMapKeyToInfoAttributes(), null, "infoAtt", null, 0, -1, R4EFileContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 

 		initEClass(r4EDeltaEClass, R4EDelta.class, "R4EDelta", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

 		initEReference(getR4EDelta_Base(), this.getR4EContent(), null, "base", null, 0, 1, R4EDelta.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEReference(getR4EDelta_Target(), this.getR4EContent(), null, "target", null, 1, 1, R4EDelta.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 

 		initEClass(r4ECommentTypeEClass, R4ECommentType.class, "R4ECommentType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

-		initEAttribute(getR4ECommentType_Type(), this.getR4ECommentEnum(), "type", null, 0, 1, R4ECommentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getR4ECommentType_Type(), this.getR4ECommentClass(), "type", null, 0, 1, R4ECommentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 

 		initEClass(mapToAnomalyTypeEClass, Map.Entry.class, "MapToAnomalyType", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);

 		initEAttribute(getMapToAnomalyType_Key(), ecorePackage.getEString(), "key", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

@@ -2222,6 +2409,9 @@
 		initEAttribute(getR4EFileVersion_RepositoryPath(), ecorePackage.getEString(), "repositoryPath", null, 0, 1, R4EFileVersion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEAttribute(getR4EFileVersion_Name(), ecorePackage.getEString(), "name", null, 0, 1, R4EFileVersion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 		initEAttribute(getR4EFileVersion_Resource(), this.getIResource(), "resource", null, 0, 1, R4EFileVersion.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);

+		initEAttribute(getR4EFileVersion_LocalVersionID(), ecorePackage.getEString(), "localVersionID", null, 0, 1, R4EFileVersion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getR4EFileVersion_FileRevision(), this.getIFileRevision(), "fileRevision", null, 0, 1, R4EFileVersion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getR4EFileVersion_InfoAtt(), this.getMapKeyToInfoAttributes(), null, "infoAtt", null, 0, -1, R4EFileVersion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 

 		initEClass(mapNameToReviewEClass, Map.Entry.class, "MapNameToReview", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);

 		initEAttribute(getMapNameToReview_Key(), ecorePackage.getEString(), "key", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

@@ -2252,6 +2442,14 @@
 		initEClass(r4EAnomalyTextPositionEClass, R4EAnomalyTextPosition.class, "R4EAnomalyTextPosition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

 		initEReference(getR4EAnomalyTextPosition_File(), this.getR4EFileVersion(), null, "file", null, 0, 1, R4EAnomalyTextPosition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

 

+		initEClass(mapDateToDurationEClass, Map.Entry.class, "MapDateToDuration", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getMapDateToDuration_Key(), ecorePackage.getEDate(), "key", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getMapDateToDuration_Value(), ecorePackage.getEIntegerObject(), "value", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(mapKeyToInfoAttributesEClass, Map.Entry.class, "MapKeyToInfoAttributes", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getMapKeyToInfoAttributes_Key(), ecorePackage.getEString(), "key", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getMapKeyToInfoAttributes_Value(), ecorePackage.getEString(), "value", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

 		// Initialize enums and add enum literals

 		initEEnum(r4EAnomalyStateEEnum, R4EAnomalyState.class, "R4EAnomalyState");

 		addEEnumLiteral(r4EAnomalyStateEEnum, R4EAnomalyState.R4E_ANOMALY_STATE_CREATED);

@@ -2260,8 +2458,8 @@
 		addEEnumLiteral(r4EAnomalyStateEEnum, R4EAnomalyState.R4E_ANOMALY_STATE_FIXED);

 		addEEnumLiteral(r4EAnomalyStateEEnum, R4EAnomalyState.R4E_ANOMALY_STATE_DUPLICATED);

 		addEEnumLiteral(r4EAnomalyStateEEnum, R4EAnomalyState.R4E_ANOMALY_STATE_REJECTED);

-		addEEnumLiteral(r4EAnomalyStateEEnum, R4EAnomalyState.R4E_ANOMALY_STATE_POSTPONED);

-		addEEnumLiteral(r4EAnomalyStateEEnum, R4EAnomalyState.R4E_ANOMALY_SATE_VERIFIED);

+		addEEnumLiteral(r4EAnomalyStateEEnum, R4EAnomalyState.R4E_ANOMALY_STATE_DEFERRED);

+		addEEnumLiteral(r4EAnomalyStateEEnum, R4EAnomalyState.R4E_ANOMALY_STATE_VERIFIED);

 

 		initEEnum(r4EAnomalyRankEEnum, R4EAnomalyRank.class, "R4EAnomalyRank");

 		addEEnumLiteral(r4EAnomalyRankEEnum, R4EAnomalyRank.R4E_ANOMALY_RANK_NONE);

@@ -2292,13 +2490,24 @@
 		addEEnumLiteral(r4EReviewTypeEEnum, R4EReviewType.R4E_REVIEW_TYPE_INFORMAL);

 		addEEnumLiteral(r4EReviewTypeEEnum, R4EReviewType.R4E_REVIEW_TYPE_FORMAL);

 

-		initEEnum(r4ECommentEnumEEnum, R4ECommentEnum.class, "R4ECommentEnum");

-		addEEnumLiteral(r4ECommentEnumEEnum, R4ECommentEnum.R4E_COMMENT_BASE);

+		initEEnum(r4ECommentClassEEnum, R4ECommentClass.class, "R4ECommentClass");

+		addEEnumLiteral(r4ECommentClassEEnum, R4ECommentClass.R4E_CLASS_ERRONEOUS);

+		addEEnumLiteral(r4ECommentClassEEnum, R4ECommentClass.R4E_CLASS_SUPERFLUOUS);

+		addEEnumLiteral(r4ECommentClassEEnum, R4ECommentClass.R4E_CLASS_IMPROVEMENT);

+		addEEnumLiteral(r4ECommentClassEEnum, R4ECommentClass.R4E_CLASS_QUESTION);

+

+		initEEnum(r4EContextTypeEEnum, R4EContextType.class, "R4EContextType");

+		addEEnumLiteral(r4EContextTypeEEnum, R4EContextType.R4E_UNDEFINED);

+		addEEnumLiteral(r4EContextTypeEEnum, R4EContextType.R4E_ADDED);

+		addEEnumLiteral(r4EContextTypeEEnum, R4EContextType.R4E_DELETED);

+		addEEnumLiteral(r4EContextTypeEEnum, R4EContextType.R4E_MODIFIED);

+		addEEnumLiteral(r4EContextTypeEEnum, R4EContextType.R4E_REPLACED);

 

 		// Initialize data types

 		initEDataType(mylynTaskEDataType, ITask.class, "MylynTask", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);

 		initEDataType(iResourceEDataType, IResource.class, "IResource", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);

 		initEDataType(uriEDataType, org.eclipse.emf.common.util.URI.class, "URI", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);

+		initEDataType(iFileRevisionEDataType, IFileRevision.class, "IFileRevision", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);

 

 		// Create resource

 		createResource(eNS_URI);

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/serial/impl/RModelFactoryExtImpl.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/serial/impl/RModelFactoryExtImpl.java
index 84f0a82..8efb3f8 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/serial/impl/RModelFactoryExtImpl.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/serial/impl/RModelFactoryExtImpl.java
@@ -235,7 +235,6 @@
 		R4EReviewState state = RModelFactory.eINSTANCE.createR4EReviewState();

 		state.setState(R4EReviewPhase.R4E_REVIEW_PHASE_STARTED);

 		review.setCreatedBy(participant);

-		review.setCreationDate(now);

 		review.setStartDate(now);

 		review.getUsersMap().put(participant.getId(), participant);

 		review.setState(state);

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/util/RModelAdapterFactory.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/util/RModelAdapterFactory.java
index 6ba4a25..f019ba7 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/util/RModelAdapterFactory.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/util/RModelAdapterFactory.java
@@ -14,6 +14,7 @@
  */

 package org.eclipse.mylyn.reviews.r4e.core.model.util;

 

+import java.util.Date;

 import java.util.Map;

 

 import org.eclipse.emf.common.notify.Adapter;

@@ -235,6 +236,14 @@
 				return createR4EAnomalyTextPositionAdapter();

 			}

 			@Override

+			public Adapter caseMapDateToDuration(Map.Entry<Date, Integer> object) {

+				return createMapDateToDurationAdapter();

+			}

+			@Override

+			public Adapter caseMapKeyToInfoAttributes(Map.Entry<String, String> object) {

+				return createMapKeyToInfoAttributesAdapter();

+			}

+			@Override

 			public Adapter caseReviewComponent(ReviewComponent object) {

 				return createReviewComponentAdapter();

 			}

@@ -719,6 +728,34 @@
 	}

 

 	/**

+	 * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>Map Date To Duration</em>}'.

+	 * <!-- begin-user-doc -->

+	 * This default implementation returns null so that we can easily ignore cases;

+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.

+	 * <!-- end-user-doc -->

+	 * @return the new adapter.

+	 * @see java.util.Map.Entry

+	 * @generated

+	 */

+	public Adapter createMapDateToDurationAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>Map Key To Info Attributes</em>}'.

+	 * <!-- begin-user-doc -->

+	 * This default implementation returns null so that we can easily ignore cases;

+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.

+	 * <!-- end-user-doc -->

+	 * @return the new adapter.

+	 * @see java.util.Map.Entry

+	 * @generated

+	 */

+	public Adapter createMapKeyToInfoAttributesAdapter() {

+		return null;

+	}

+

+	/**

 	 * Creates a new adapter for an object of class '{@link org.eclipse.mylyn.reviews.frame.core.model.ReviewComponent <em>Review Component</em>}'.

 	 * <!-- begin-user-doc -->

 	 * This default implementation returns null so that we can easily ignore cases;

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/util/RModelSwitch.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/util/RModelSwitch.java
index 58fb063..7427dd2 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/util/RModelSwitch.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/model/util/RModelSwitch.java
@@ -14,6 +14,7 @@
  */

 package org.eclipse.mylyn.reviews.r4e.core.model.util;

 

+import java.util.Date;

 import java.util.List;

 import java.util.Map;

 

@@ -188,6 +189,8 @@
 				R4EUser r4EUser = (R4EUser)theEObject;

 				T result = caseR4EUser(r4EUser);

 				if (result == null) result = caseUser(r4EUser);

+				if (result == null) result = caseR4EReviewComponent(r4EUser);

+				if (result == null) result = caseReviewComponent(r4EUser);

 				if (result == null) result = defaultCase(theEObject);

 				return result;

 			}

@@ -196,6 +199,8 @@
 				T result = caseR4EParticipant(r4EParticipant);

 				if (result == null) result = caseR4EUser(r4EParticipant);

 				if (result == null) result = caseUser(r4EParticipant);

+				if (result == null) result = caseR4EReviewComponent(r4EParticipant);

+				if (result == null) result = caseReviewComponent(r4EParticipant);

 				if (result == null) result = defaultCase(theEObject);

 				return result;

 			}

@@ -360,6 +365,18 @@
 				if (result == null) result = defaultCase(theEObject);

 				return result;

 			}

+			case RModelPackage.MAP_DATE_TO_DURATION: {

+				@SuppressWarnings("unchecked") Map.Entry<Date, Integer> mapDateToDuration = (Map.Entry<Date, Integer>)theEObject;

+				T result = caseMapDateToDuration(mapDateToDuration);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case RModelPackage.MAP_KEY_TO_INFO_ATTRIBUTES: {

+				@SuppressWarnings("unchecked") Map.Entry<String, String> mapKeyToInfoAttributes = (Map.Entry<String, String>)theEObject;

+				T result = caseMapKeyToInfoAttributes(mapKeyToInfoAttributes);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

 			default: return defaultCase(theEObject);

 		}

 	}

@@ -815,6 +832,36 @@
 	}

 

 	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Map Date To Duration</em>'.

+	 * <!-- begin-user-doc -->

+	 * This implementation returns null;

+	 * returning a non-null result will terminate the switch.

+	 * <!-- end-user-doc -->

+	 * @param object the target of the switch.

+	 * @return the result of interpreting the object as an instance of '<em>Map Date To Duration</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseMapDateToDuration(Map.Entry<Date, Integer> object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Map Key To Info Attributes</em>'.

+	 * <!-- begin-user-doc -->

+	 * This implementation returns null;

+	 * returning a non-null result will terminate the switch.

+	 * <!-- end-user-doc -->

+	 * @param object the target of the switch.

+	 * @return the result of interpreting the object as an instance of '<em>Map Key To Info Attributes</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseMapKeyToInfoAttributes(Map.Entry<String, String> object) {

+		return null;

+	}

+

+	/**

 	 * Returns the result of interpreting the object as an instance of '<em>Review Component</em>'.

 	 * <!-- begin-user-doc -->

 	 * This implementation returns null;

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/rfs/ReviewsRFSProxy.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/rfs/ReviewsRFSProxy.java
new file mode 100644
index 0000000..0d41e2e
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/rfs/ReviewsRFSProxy.java
@@ -0,0 +1,183 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * Contributors:

+ *   Alvaro Sanchez-Leon - Initial API

+ *******************************************************************************/

+package org.eclipse.mylyn.reviews.r4e.core.rfs;

+

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.FileNotFoundException;

+import java.io.IOException;

+import java.io.InputStream;

+

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.jgit.lib.Constants;

+import org.eclipse.jgit.lib.ObjectId;

+import org.eclipse.jgit.lib.ObjectInserter;

+import org.eclipse.jgit.lib.Repository;

+import org.eclipse.jgit.lib.RepositoryCache.FileKey;

+import org.eclipse.jgit.storage.file.FileRepository;

+import org.eclipse.jgit.util.FS;

+import org.eclipse.mylyn.reviews.r4e.core.Activator;

+import org.eclipse.mylyn.reviews.r4e.core.rfs.spi.IRFSRegistry;

+import org.eclipse.mylyn.reviews.r4e.core.rfs.spi.ReviewsFileStorageException;

+import org.eclipse.mylyn.reviews.r4e.core.utils.filePermission.FileSupportCommandFactory;

+import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewVersionsException;

+

+/**

+ * @author lmcalvs

+ *

+ */

+public class ReviewsRFSProxy implements IRFSRegistry {

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

+

+	private static final String	repoName	= "R4EBareRepo.git";

+	private ObjectInserter		fInserter	= null;

+	private Repository			fRepository	= null;

+

+	// ------------------------------------------------------------------------

+	// Constructors

+	// ------------------------------------------------------------------------

+	/**

+	 * @param aParentDir

+	 * @throws IOException

+	 */

+	public ReviewsRFSProxy(File aReviewGroupDir, boolean create) throws ReviewsFileStorageException {

+		File repoLoc = new File(aReviewGroupDir, repoName);

+		if (create) {

+			fRepository = initializeRepo(repoLoc);

+		} else {

+			fRepository = openRepository(repoLoc);

+		}

+

+		fInserter = fRepository.newObjectInserter();

+	}

+

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+

+	/**

+	 * @param aReviewGroupDir

+	 * @return

+	 * @throws ReviewVersionsException

+	 */

+	private Repository initializeRepo(File aReviewGroupDir) throws ReviewsFileStorageException {

+		try {

+			Repository newRepo = new FileRepository(aReviewGroupDir);

+			newRepo.create(true);

+			newRepo.getConfig().setString("core", null, "sharedrepository", "0666");

+			newRepo.getConfig().save();

+

+			return newRepo;

+		} catch (IOException e) {

+			throw new ReviewsFileStorageException(e);

+		}

+	}

+

+	/**

+	 * @param aReviewGroupDir

+	 * @return

+	 * @throws ReviewVersionsException

+	 */

+	private Repository openRepository(File aReviewGroupDir) throws ReviewsFileStorageException {

+		Repository r;

+		try {

+			r = FileKey.exact(aReviewGroupDir, FS.DETECTED).open(true);

+		} catch (IOException e) {

+			throw new ReviewsFileStorageException(e);

+		}

+		return r;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.mylyn.reviews.r4e.core.rrepo.IBlobRegistry#registerReviewBlob(byte[])

+	 */

+	public ObjectId registerReviewBlob(final byte[] content) throws Exception {

+		ObjectId id;

+

+		try {

+			id = fInserter.insert(Constants.OBJ_BLOB, content);

+			fInserter.flush();

+			FileSupportCommandFactory.getInstance().grantWritePermission(fRepository.getDirectory().getAbsolutePath());

+		} finally {

+			fInserter.release();

+		}

+

+		return id;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.mylyn.reviews.r4e.core.rrepo.IBlobRegistry#registerReviewBlob(java.io.File)

+	 */

+	public ObjectId registerReviewBlob(final File aFromFile) throws ReviewsFileStorageException {

+		InputStream stream = null;

+		try {

+			stream = new FileInputStream(aFromFile);

+		} catch (FileNotFoundException e) {

+			throw new ReviewsFileStorageException(e);

+		}

+

+		ObjectId id;

+		try {

+			id = fInserter.insert(Constants.OBJ_BLOB, aFromFile.length(), stream);

+			fInserter.flush();

+			FileSupportCommandFactory.getInstance().grantWritePermission(fRepository.getDirectory().getAbsolutePath());

+		} catch (IOException e) {

+			throw new ReviewsFileStorageException(e);

+		} finally {

+			fInserter.release();

+			if (stream != null) {

+				try {

+					stream.close();

+				} catch (IOException e) {

+					StringBuilder sb = new StringBuilder("Exception: " + e.getMessage());

+					Activator.fTracer.traceDebug(sb.toString());

+				}

+			}

+		}

+

+		return id;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.mylyn.reviews.r4e.core.rrepo.IBlobRegistry#getBlobContent(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.jgit.lib.ObjectId)

+	 */

+	public InputStream getBlobContent(IProgressMonitor monitor, ObjectId id) throws ReviewsFileStorageException {

+		InputStream resStream = null;

+

+		try {

+			resStream = fRepository.open(id, Constants.OBJ_BLOB).openStream();

+		} catch (Exception e) {

+			throw new ReviewsFileStorageException(e);

+		}

+

+		return resStream;

+	}

+

+	/**

+	 * @return

+	 */

+	public Repository getRepository() {

+		return fRepository;

+	}

+

+	/**

+	 * Convenience method to close the repository data base

+	 */

+	public void close() {

+		fRepository.close();

+	}

+

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/rfs/spi/IRFSRegistry.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/rfs/spi/IRFSRegistry.java
new file mode 100644
index 0000000..d932a62
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/rfs/spi/IRFSRegistry.java
@@ -0,0 +1,38 @@
+package org.eclipse.mylyn.reviews.r4e.core.rfs.spi;

+

+import java.io.File;

+import java.io.InputStream;

+

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.jgit.lib.ObjectId;

+import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewVersionsException;

+

+public interface IRFSRegistry {

+

+	/**

+	 * @param content

+	 * @return

+	 * @throws Exception

+	 */

+	public abstract ObjectId registerReviewBlob(final byte[] content) throws Exception;

+

+	/**

+	 * Register a blob by copying existing file content

+	 * 

+	 * @param aFromFile

+	 * @return

+	 * @throws ReviewVersionsException

+	 */

+	public abstract ObjectId registerReviewBlob(final File aFromFile) throws ReviewsFileStorageException;

+

+	/**

+	 * @param monitor

+	 * @param id

+	 *            - Blob type is expected

+	 * @return - The stream shall be closed by the receiver

+	 * @throws ReviewVersionsException

+	 */

+	public abstract InputStream getBlobContent(IProgressMonitor monitor, ObjectId id)

+			throws ReviewsFileStorageException;

+

+}
\ No newline at end of file
diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/rfs/spi/RFSRegistryFactory.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/rfs/spi/RFSRegistryFactory.java
new file mode 100644
index 0000000..238a90b
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/rfs/spi/RFSRegistryFactory.java
@@ -0,0 +1,57 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * Contributors:

+ *   Alvaro Sanchez-Leon - Initial API

+ *******************************************************************************/

+package org.eclipse.mylyn.reviews.r4e.core.rfs.spi;

+

+import java.io.File;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.Map;

+import java.util.Set;

+

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewGroup;

+import org.eclipse.mylyn.reviews.r4e.core.rfs.ReviewsRFSProxy;

+

+/**

+ * @author lmcalvs

+ *

+ */

+public class RFSRegistryFactory {

+	private static final Map<R4EReviewGroup, ReviewsRFSProxy>	fOpenStore	= new HashMap<R4EReviewGroup, ReviewsRFSProxy>();

+

+	public static IRFSRegistry getRegistry(R4EReviewGroup aGroup) throws ReviewsFileStorageException {

+		// If still using the same group, return cached instance

+		ReviewsRFSProxy cachedGroupStorage = fOpenStore.get(aGroup);

+		if (cachedGroupStorage != null) {

+			return cachedGroupStorage;

+		}

+

+		// close previous review group storage

+		Set<R4EReviewGroup> groups = fOpenStore.keySet();

+		for (Iterator<R4EReviewGroup> iterator = groups.iterator(); iterator.hasNext();) {

+			R4EReviewGroup group = iterator.next();

+			ReviewsRFSProxy rfs = fOpenStore.get(group);

+			if (rfs != null) {

+				rfs.close();

+			}

+		}

+		fOpenStore.clear();

+

+		// Create new instance and cache it

+		File groupDir = new File(aGroup.getFolder());

+		ReviewsRFSProxy fsStore = new ReviewsRFSProxy(groupDir, false);

+		fOpenStore.put(aGroup, fsStore);

+

+		return fsStore;

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/rfs/spi/ReviewsFileStorageException.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/rfs/spi/ReviewsFileStorageException.java
new file mode 100644
index 0000000..8b7a8d1
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/rfs/spi/ReviewsFileStorageException.java
@@ -0,0 +1,58 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * Contributors:

+ *   Alvaro Sanchez-Leon - Initial API

+ *******************************************************************************/

+package org.eclipse.mylyn.reviews.r4e.core.rfs.spi;

+

+/**

+ * @author lmcalvs

+ *

+ */

+public class ReviewsFileStorageException extends Exception {

+

+	/**

+	 * 

+	 */

+	private static final long	serialVersionUID	= 2039821628997910836L;

+

+	// ------------------------------------------------------------------------

+	// Constructors

+	// ------------------------------------------------------------------------

+	/**

+	 * @param aMessage

+	 */

+	public ReviewsFileStorageException(String aMessage) {

+		super(aMessage);

+	}

+

+	/**

+	 * @param aMessage

+	 * @param aChainedExc

+	 *            - Original chained Exception

+	 */

+	public ReviewsFileStorageException(String aMessage, Throwable aChainedExc) {

+		super(aMessage, aChainedExc);

+	}

+

+	/**

+	 * @param aChainedExc

+	 *            Original chained Exception

+	 */

+	public ReviewsFileStorageException(Throwable aChainedExc) {

+		super(aChainedExc);

+	}

+

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/utils/cmd/BaseSupportCommand.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/utils/cmd/BaseSupportCommand.java
index 5de4c68..60ad166 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/utils/cmd/BaseSupportCommand.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/utils/cmd/BaseSupportCommand.java
@@ -43,11 +43,6 @@
 			return new String("");

 		}

 

-		int size = results.size();

-		if (size == 0) {

-			return new String("");

-		}

-

 		// reasonable limit to 10 lines, if more lines needed, use method "execute"

 		StringBuilder result = new StringBuilder();

 		int maxLines = results.size() > 10 ? 10 : results.size();

@@ -99,7 +94,11 @@
 			}

 		}

 

-		results = outputStream.getLines();

+		if (exitValue == 0) {

+			results = outputStream.getLines();			

+		} else {

+			results = errorStream.getLines();			

+		}

 

 		// Print errors, if any

 		if (notifyIfError) {

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/utils/filePermission/UnixPermission.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/utils/filePermission/UnixPermission.java
index 2cfa9a5..bdc3001 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/utils/filePermission/UnixPermission.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/utils/filePermission/UnixPermission.java
@@ -48,9 +48,10 @@
 		String ret = executeWithStringReturned(null, command, true /* wait */,

 				false /* ignore error */);

 		Activator.fTracer.traceInfo("changePermission() ret: " + ret);

-		if (ret.length() > 0) {

+		if (ret.length() == 0) {

 			b = true;

-			Activator.fTracer.traceInfo("Return msg from changePermission: " + ret);

+		} else {

+			Activator.fTracer.traceInfo("Return msg from changePermission: " + ret);			

 		}

 

 		return b;

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/utils/filePermission/WindowPermission.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/utils/filePermission/WindowPermission.java
index 8c39d0a..b9741bb 100644
--- a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/utils/filePermission/WindowPermission.java
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/utils/filePermission/WindowPermission.java
@@ -14,6 +14,7 @@
  *******************************************************************************/

 package org.eclipse.mylyn.reviews.r4e.core.utils.filePermission;

 

+import java.io.File;

 import java.io.IOException;

 import java.util.ArrayList;

 import java.util.List;

@@ -37,6 +38,9 @@
 	 */

 	public boolean grantWritePermission(String dir) throws IOException {

 		Boolean b = false;

+		File tstFile = new File(dir);

+		boolean isDirectory = tstFile.isDirectory();

+

 		// Activator.Tracer.traceInfo("Changing permissions for dir: " + dir);

 

 		// NOTE: The permissions can be changed by the file / folder owner only, i.e. This update shall be done right

@@ -46,7 +50,9 @@
 		command.add(dir); // filename or directory to modify

 		command.add("/grant");

 		command.add("Everyone:F");

-		// command.add("/T"); // Change ACLs recursively

+		if (isDirectory) {

+			command.add("/T"); // Change ACLs recursively

+		}

 

 		String ret = executeWithStringReturned(null, command, true /* wait */,

 				true /* ignore error */);

diff --git a/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/versions/IReviewsVersions.java b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/versions/IReviewsVersions.java
new file mode 100644
index 0000000..316c31f
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.core/src/org/eclipse/mylyn/reviews/r4e/core/versions/IReviewsVersions.java
@@ -0,0 +1,136 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * Contributors:

+ *   Alvaro Sanchez-Leon - Initial API

+ *******************************************************************************/

+/**

+ * 

+ */

+package org.eclipse.mylyn.reviews.r4e.core.versions;

+

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.resources.IProject;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EItem;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EUser;

+

+/**

+ * @author lmcalvs

+ *

+ */

+public interface IReviewsVersions {

+	// ------------------------------------------------------------------------

+	// Fields

+	// ------------------------------------------------------------------------

+

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	/**

+	 * Query for the support of the team provider associated to a given project

+	 * 

+	 * @param project

+	 * @return

+	 */

+	public boolean isProviderSupported(IProject project);

+

+	/**

+	 * @param project

+	 * @return

+	 * @throws ReviewVersionsException

+	 */

+	public CommitDescriptor getLastCommitInfo(IProject project) throws ReviewVersionsException;

+

+	/**

+	 * @param project

+	 * @param commitId

+	 * @return

+	 * @throws ReviewVersionsException

+	 */

+	public CommitDescriptor getCommitInfo(IProject project, String commitId) throws ReviewVersionsException;

+

+	/**

+	 * Creates a Commit review item with the related file contexts derived from the commit NOTE: The R4EItem return is

+	 * not associated to any EMF Resources

+	 * 

+	 * @param project

+	 * @param commiId

+	 * @param reviewUser

+	 * @return

+	 * @throws ReviewVersionsException

+	 */

+	public R4EItem createCommitReviewItem(IProject project, String commiId, R4EUser reviewUser)

+			throws ReviewVersionsException;

+

+	/**

+	 * Obtain the repository information for the last commit of the given file

+	 * 

+	 * @param workspaceFile

+	 * @return

+	 * @throws ReviewVersionsException

+	 */

+	public FileVersionInfo getFileVersionInfo(IFile workspaceFile) throws ReviewVersionsException;

+

+	/**

+	 * Request a compare session to open the compare editor for the associated context

+	 * 

+	 * @param item

+	 * @return - compare session id as a string

+	 * @throws ReviewVersionsException

+	 */

+	public String openCompareSession(R4EItem item) throws ReviewVersionsException;

+

+	/**

+	 * @param session

+	 * @param context

+	 * @throws ReviewVersionsException

+	 */

+	public void openCompareEditor(String session, R4EFileContext context) throws ReviewVersionsException;

+

+	/**

+	 * @param session

+	 */

+	public void closeCompareSession(String session);

+

+	public interface CommitDescriptor {

+		public String getId();

+

+		/**

+		 * @return time, expressed as milliseconds since the epoch.

+		 */

+		public Long getCommitDate();

+

+		public String getCommitter();

+

+		public String getAuthor();

+

+		public String getTitle();

+

+		public String getMessage();

+

+		public String[] getParentIDs();

+

+		/**

+		 * Returns a list of paths to the affected elements

+		 * 

+		 * @return

+		 */

+		public String[] getChangeSet();

+	}

+	

+	public interface FileVersionInfo {

+		public String getRepositoryPath();

+

+		public String getId();

+

+		public String getName();

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.egitproxy/.classpath b/org.eclipse.mylyn.reviews.r4e.egitproxy/.classpath
index 8a8f166..64c5e31 100644
--- a/org.eclipse.mylyn.reviews.r4e.egitproxy/.classpath
+++ b/org.eclipse.mylyn.reviews.r4e.egitproxy/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<classpath>

-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

-	<classpathentry kind="src" path="src"/>

-	<classpathentry kind="output" path="bin"/>

-</classpath>

+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.mylyn.reviews.r4e.egitproxy/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.reviews.r4e.egitproxy/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c234c99
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.egitproxy/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Tue Feb 15 13:31:25 PST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/org.eclipse.mylyn.reviews.r4e.feature/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.reviews.r4e.feature/.settings/org.eclipse.jdt.core.prefs
index f1554b1..e8f28d3 100644
--- a/org.eclipse.mylyn.reviews.r4e.feature/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.mylyn.reviews.r4e.feature/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Tue May 12 20:42:43 PDT 2009
+#Wed Mar 02 16:00:04 PST 2011
 eclipse.preferences.version=1
 org.eclipse.jdt.core.codeComplete.argumentPrefixes=
 org.eclipse.jdt.core.codeComplete.argumentSuffixes=
@@ -81,6 +81,7 @@
 org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
@@ -88,9 +89,10 @@
 org.eclipse.jdt.core.formatter.alignment_for_assignment=0
 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
 org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
@@ -137,10 +139,16 @@
 org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
 org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
 org.eclipse.jdt.core.formatter.comment.line_length=120
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
 org.eclipse.jdt.core.formatter.compact_else_if=true
 org.eclipse.jdt.core.formatter.continuation_indentation=2
 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
 org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
 org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
 org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
 org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
@@ -153,9 +161,14 @@
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
 org.eclipse.jdt.core.formatter.indentation.size=4
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
@@ -338,5 +351,7 @@
 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
 org.eclipse.jdt.core.formatter.tabulation.char=tab
 org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
 org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/org.eclipse.mylyn.reviews.r4e.feature/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.mylyn.reviews.r4e.feature/.settings/org.eclipse.jdt.ui.prefs
index 8d68e73..d92dfc1 100644
--- a/org.eclipse.mylyn.reviews.r4e.feature/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.mylyn.reviews.r4e.feature/.settings/org.eclipse.jdt.ui.prefs
@@ -1,16 +1,16 @@
-#Thu Sep 11 16:27:18 PDT 2008
+#Wed Mar 02 16:00:08 PST 2011
 cleanup_settings_version=2
 eclipse.preferences.version=1
 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
 formatter_profile=_Mylyn based on Eclipse
-formatter_settings_version=11
+formatter_settings_version=12
 internal.default.compliance=default
 org.eclipse.jdt.ui.exception.name=e
 org.eclipse.jdt.ui.gettersetter.use.is=true
 org.eclipse.jdt.ui.javadoc=false
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2010 Tasktop Technologies and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\:\r\n *     Tasktop Technologies - initial API and implementation\r\n *******************************************************************************/\r\n\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ignore\r\n${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ignore</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Jsdoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated function stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) ${year} Tasktop Technologies and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\:\r\n *     Tasktop Technologies - initial API and implementation\r\n *******************************************************************************/\r\n\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ignore\r\n${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ignore</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Jsdoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated function stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/org.eclipse.mylyn.reviews.r4e.help/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.reviews.r4e.help/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3930a61
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.help/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Tue Feb 15 13:31:16 PST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/org.eclipse.mylyn.reviews.r4e.ui/.classpath b/org.eclipse.mylyn.reviews.r4e.ui/.classpath
index 8a8f166..64c5e31 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/.classpath
+++ b/org.eclipse.mylyn.reviews.r4e.ui/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<classpath>

-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

-	<classpathentry kind="src" path="src"/>

-	<classpathentry kind="output" path="bin"/>

-</classpath>

+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.mylyn.reviews.r4e.ui/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.reviews.r4e.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..5eb9a80
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Tue Feb 15 13:31:09 PST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/org.eclipse.mylyn.reviews.r4e.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.reviews.r4e.ui/META-INF/MANIFEST.MF
index 83a5241..14dcaab 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.reviews.r4e.ui/META-INF/MANIFEST.MF
@@ -16,13 +16,27 @@
  org.eclipse.jface.text;bundle-version="3.5.0",
  org.eclipse.ui.editors;bundle-version="3.5.0",
  org.eclipse.jdt.core;bundle-version="3.5.0",
- org.eclipse.cdt.core;bundle-version="5.0.0",
+ org.eclipse.cdt.core;bundle-version="5.0.0";resolution:=optional,
  org.eclipse.mylyn.reviews.frame.core;bundle-version="0.1.0",
  org.eclipse.mylyn.reviews.r4e.core;bundle-version="0.1.0",
  org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.0",
+ org.eclipse.emf.ecore;bundle-version="2.5.0",
  org.eclipse.core.expressions
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Import-Package: org.apache.commons.io;version="1.4.0",
  org.eclipse.egit.ui.internal;version="0.9.1"
 Bundle-Vendor: %providerName
+Export-Package: org.eclipse.mylyn.reviews.r4e.ui;x-internal:=true,
+ org.eclipse.mylyn.reviews.r4e.ui.commands;x-internal:=true,
+ org.eclipse.mylyn.reviews.r4e.ui.commands.filters;x-internal:=true,
+ org.eclipse.mylyn.reviews.r4e.ui.commands.sorters;x-internal:=true,
+ org.eclipse.mylyn.reviews.r4e.ui.dialogs;x-internal:=true,
+ org.eclipse.mylyn.reviews.r4e.ui.editors;x-internal:=true,
+ org.eclipse.mylyn.reviews.r4e.ui.filters;x-internal:=true,
+ org.eclipse.mylyn.reviews.r4e.ui.model;x-internal:=true,
+ org.eclipse.mylyn.reviews.r4e.ui.navigator;x-internal:=true,
+ org.eclipse.mylyn.reviews.r4e.ui.preferences;x-internal:=true,
+ org.eclipse.mylyn.reviews.r4e.ui.properties.general;x-internal:=true,
+ org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;x-internal:=true,
+ org.eclipse.mylyn.reviews.r4e.ui.utils;x-internal:=true
diff --git a/org.eclipse.mylyn.reviews.r4e.ui/plugin.xml b/org.eclipse.mylyn.reviews.r4e.ui/plugin.xml
index 0847908..4742ce9 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/plugin.xml
+++ b/org.eclipse.mylyn.reviews.r4e.ui/plugin.xml
@@ -33,7 +33,7 @@
       <view

             allowMultiple="false"

             category="org.eclipse.mylyn.reviews.r4e.ui.navigatorViewCategory"

-            class="org.eclipse.mylyn.reviews.r4e.ui.properties.R4EPropertiesView"            

+            class="org.eclipse.mylyn.reviews.r4e.ui.properties.general.R4EPropertiesView"            

             icon="icons/elcl16/lnkprop_menu.gif"

             id="org.eclipse.mylyn.reviews.r4e.ui.properties.R4EPropertiesView"

             name="R4E Properties"

@@ -165,16 +165,11 @@
             <visibleWhen

                   checkEnabled="false">

                <and>

-                  <with

-                        variable="org.eclipse.mylyn.reviews.r4e.ui.commands.review">

-                     <not>

-                        <equals

-                              value="null">

-                        </equals>

-                     </not>

-                  </with>

                   <test

-                        property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                        property="org.eclipse.mylyn.reviews.r4e.ui.commands.review.completed">

+                  </test>

+                  <test

+                        property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

                   </test>

                </and>

             </visibleWhen>

@@ -391,18 +386,21 @@
       </category>

       <command

             categoryId="org.eclipse.mylyn.reviews.r4e.ui.commands.reviewCategory"

+            defaultHandler="org.eclipse.mylyn.reviews.r4e.ui.commands.AddReviewItemHandler"

             description="Add a Review Item to the Current Review"

             id="org.eclipse.mylyn.reviews.r4e.ui.commands.AddReviewItem"

             name="Add Review Item">

       </command>

       <command

             categoryId="org.eclipse.mylyn.reviews.r4e.ui.commands.reviewCategory"

+            defaultHandler="org.eclipse.mylyn.reviews.r4e.ui.commands.AddAnomalyHandler"

             description="Add an Anomaly to the Current Review"

             id="org.eclipse.mylyn.reviews.r4e.ui.commands.AddAnomaly"

             name="Add Anomaly">

       </command>

       <command

             categoryId="org.eclipse.mylyn.reviews.r4e.ui.commands.reviewCategory"

+            defaultHandler="org.eclipse.mylyn.reviews.r4e.ui.commands.FindReviewItemsHandler"

             description="Find Review Items from a given Project in Workspace"

             id="org.eclipse.mylyn.reviews.r4e.ui.commands.FindReviewItems"

             name="Find Review Items">

@@ -607,7 +605,11 @@
       <sourceProvider

             provider="org.eclipse.mylyn.reviews.r4e.ui.commands.ReviewState">

          <variable

-               name="org.eclipse.mylyn.reviews.r4e.ui.commands.review"

+               name="org.eclipse.mylyn.reviews.r4e.ui.commands.reviewCurrent"

+               priorityLevel="workbench">

+         </variable>

+         <variable

+               name="org.eclipse.mylyn.reviews.r4e.ui.commands.reviewCompleted"

                priorityLevel="workbench">

          </variable>

       </sourceProvider>

@@ -624,68 +626,11 @@
    <extension

          point="org.eclipse.ui.handlers">

       <handler

-            class="org.eclipse.mylyn.reviews.r4e.ui.commands.AddReviewItemHandler"

-            commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.AddReviewItem">

-         <activeWhen>

-            <and>

-               <with

-                     variable="org.eclipse.mylyn.reviews.r4e.ui.commands.review">

-                  <not>

-                     <equals

-                           value="null">

-                     </equals>

-                  </not>

-               </with>

-               <test

-                     property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

-               </test>

-            </and>

-         </activeWhen>

-      </handler>

-      <handler

-            class="org.eclipse.mylyn.reviews.r4e.ui.commands.AddAnomalyHandler"

-            commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.AddAnomaly">

-         <activeWhen>

-            <and>

-               <with

-                     variable="org.eclipse.mylyn.reviews.r4e.ui.commands.review">

-                  <not>

-                     <equals

-                           value="null">

-                     </equals>

-                  </not>

-               </with>

-               <test

-                     property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

-               </test>

-            </and>

-         </activeWhen>

-      </handler>

-      <handler

-            class="org.eclipse.mylyn.reviews.r4e.ui.commands.FindReviewItemsHandler"

-            commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.FindReviewItems">

-         <activeWhen>

-            <and>

-               <with

-                     variable="org.eclipse.mylyn.reviews.r4e.ui.commands.review">

-                  <not>

-                     <equals

-                           value="null">

-                     </equals>

-                  </not>

-               </with>

-               <test

-                     property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

-               </test>

-            </and>

-         </activeWhen>

-      </handler>

-      <handler

             class="org.eclipse.mylyn.reviews.r4e.ui.commands.SelectNextHandler"

             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.SelectNext">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -694,7 +639,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.SelectPrevious">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -703,7 +648,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.Refresh">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -712,7 +657,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.ExpandAll">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -721,7 +666,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.CollapseAll">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -730,7 +675,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.LinkEditor">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -739,7 +684,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.LinkProperties">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -748,7 +693,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.filters.RemoveAll">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -757,7 +702,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.filters.CurrentReview">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -766,7 +711,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.filters.ReviewsOnly">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -775,7 +720,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.filters.Anomalies">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -784,7 +729,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.filters.ReviewedElems">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -793,7 +738,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.filters.ReviewsMy">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -802,7 +747,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.filters.ReviewsParticipant">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -811,7 +756,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.sorters.DefaultSort">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -820,7 +765,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.addLinkedAnomaly">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -829,7 +774,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.openEditor">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -838,7 +783,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.changeReviewState">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -847,7 +792,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.openElement">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -856,7 +801,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.closeElement">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -865,7 +810,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.addChildElement">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -874,7 +819,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.removeElement">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -883,7 +828,7 @@
             commandId="org.eclipse.mylyn.reviews.r4e.ui.commands.restoreElement">

          <enabledWhen>

             <test

-                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpen">

+                  property="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.dialogOpen">

             </test>

          </enabledWhen>

       </handler>

@@ -908,6 +853,12 @@
          <propertyTab

                afterTab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyDetailedTab"

                category="org.eclipse.mylyn.reviews.r4e.ui.properties.NavigatorPropertiesCategory"

+               id="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyExtraTab"

+               label="Extra">

+         </propertyTab>

+         <propertyTab

+               afterTab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyExtraTab"

+               category="org.eclipse.mylyn.reviews.r4e.ui.properties.NavigatorPropertiesCategory"

                id="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyClassicTab"

                label="All">

          </propertyTab>

@@ -918,31 +869,55 @@
       <propertySections

             contributorId="org.eclipse.mylyn.reviews.r4e.ui.navigator.ReviewNavigatorView">

          <propertySection

-               class="org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewGroupTabPropertySection"

-               id="org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewGroupSection"

+               class="org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed.ReviewGroupGeneralTabPropertySection"

+               id="org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewGroupGeneralSection"

                tab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyDetailedTab">

             <input

                   type="org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReviewGroup">

             </input>

          </propertySection>

          <propertySection

-               class="org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewTabPropertySection"

-               id="org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewSection"

+               class="org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed.ReviewGroupExtraTabPropertySection"

+               id="org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewGroupExtraSection"

+               tab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyExtraTab">

+            <input

+                  type="org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReviewGroup">

+            </input>

+         </propertySection>

+         <propertySection

+               class="org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed.ReviewGeneralTabPropertySection"

+               id="org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewGeneralSection"

                tab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyDetailedTab">

             <input

                   type="org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReview">

             </input>

          </propertySection>

          <propertySection

-               class="org.eclipse.mylyn.reviews.r4e.ui.properties.ParticipantTabPropertySection"

-               id="org.eclipse.mylyn.reviews.r4e.ui.properties.ParticipantSection"

+               class="org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed.ReviewExtraTabPropertySection"

+               id="org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewExtraSection"

+               tab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyExtraTab">

+            <input

+                  type="org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReview">

+            </input>

+         </propertySection>

+         <propertySection

+               class="org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed.ParticipantGeneralTabPropertySection"

+               id="org.eclipse.mylyn.reviews.r4e.ui.properties.ParticipantGeneralSection"

                tab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyDetailedTab">

             <input

                   type="org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIParticipant">

             </input>

          </propertySection>

          <propertySection

-               class="org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewItemTabPropertySection"

+               class="org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed.ParticipantExtraTabPropertySection"

+               id="org.eclipse.mylyn.reviews.r4e.ui.properties.ParticipantExtraSection"

+               tab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyExtraTab">

+            <input

+                  type="org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIParticipant">

+            </input>

+         </propertySection>

+         <propertySection

+               class="org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed.ReviewItemTabPropertySection"

                id="org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewItemSection"

                tab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyDetailedTab">

             <input

@@ -950,7 +925,7 @@
             </input>

          </propertySection>

          <propertySection

-               class="org.eclipse.mylyn.reviews.r4e.ui.properties.FileContextTabPropertySection"

+               class="org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed.FileContextTabPropertySection"

                id="org.eclipse.mylyn.reviews.r4e.ui.properties.FileContextSection"

                tab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyDetailedTab">

             <input

@@ -958,7 +933,7 @@
             </input>

          </propertySection>

          <propertySection

-               class="org.eclipse.mylyn.reviews.r4e.ui.properties.SelectionTabPropertySection"

+               class="org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed.SelectionTabPropertySection"

                id="org.eclipse.mylyn.reviews.r4e.ui.properties.SelectionSection"

                tab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyDetailedTab">

             <input

@@ -966,15 +941,23 @@
             </input>

          </propertySection>

          <propertySection

-               class="org.eclipse.mylyn.reviews.r4e.ui.properties.AnomalyTabPropertySection"

-               id="org.eclipse.mylyn.reviews.r4e.ui.properties.AnomalySection"

+               class="org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed.AnomalyGeneralTabPropertySection"

+               id="org.eclipse.mylyn.reviews.r4e.ui.properties.AnomalyGeneralSection"

                tab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyDetailedTab">

             <input

-                  type="org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomaly">

+                  type="org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyBasic">

             </input>

          </propertySection>

          <propertySection

-               class="org.eclipse.mylyn.reviews.r4e.ui.properties.CommentTabPropertySection"

+               class="org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed.AnomalyExtraTabPropertySection"

+               id="org.eclipse.mylyn.reviews.r4e.ui.properties.AnomalyExtraSection"

+               tab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyExtraTab">

+            <input

+                  type="org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyExtended">

+            </input>

+         </propertySection>

+         <propertySection

+               class="org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed.CommentTabPropertySection"

                id="org.eclipse.mylyn.reviews.r4e.ui.properties.CommentSection"

                tab="org.eclipse.mylyn.reviews.r4e.ui.properties.propertyDetailedTab">

             <input

@@ -995,10 +978,17 @@
          point="org.eclipse.core.expressions.propertyTesters">

       <propertyTester

             class="org.eclipse.mylyn.reviews.r4e.ui.commands.DialogPropertyTester"

-            id="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog.propertyTester"

-            namespace="org.eclipse.mylyn.reviews.r4e.ui.commands"

+            id="org.eclipse.mylyn.reviews.r4e.ui.commands.dialogOpenPropertyTester"

+            namespace="org.eclipse.mylyn.reviews.r4e.ui.commands.dialog"

             properties="dialogOpen"

             type="java.lang.Object">

       </propertyTester>

+      <propertyTester

+            class="org.eclipse.mylyn.reviews.r4e.ui.commands.CompletedPropertyTester"

+            id="org.eclipse.mylyn.reviews.r4e.ui.commands.completedPropertyTester"

+            namespace="org.eclipse.mylyn.reviews.r4e.ui.commands.review"

+            properties="completed"

+            type="java.lang.Object">

+      </propertyTester>

    </extension>

 </plugin>

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/AddAnomalyHandler.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/AddAnomalyHandler.java
index 41f33f6..cc83d2d 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/AddAnomalyHandler.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/AddAnomalyHandler.java
@@ -42,7 +42,7 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

 import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIPosition;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomaly;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyBasic;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyContainer;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIComment;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIFileContext;

@@ -205,8 +205,8 @@
 						//File already exists, check if anomaly also exists

 						R4EUIAnomalyContainer anomalyContainer = (R4EUIAnomalyContainer) file.getAnomalyContainerElement();

 						if (null != anomalyContainer) {

-							R4EUIAnomaly[] anomalies = (R4EUIAnomaly[])anomalyContainer.getChildren();

-							for (R4EUIAnomaly uiAnomaly : anomalies) {

+							R4EUIAnomalyBasic[] anomalies = (R4EUIAnomalyBasic[])anomalyContainer.getChildren();

+							for (R4EUIAnomalyBasic uiAnomaly : anomalies) {

 								if (uiAnomaly.getPosition().isSameAs(aUIPosition)) {

 									isNewAnomaly = false;		

 									addCommentToExistingAnomaly(uiAnomaly);

@@ -251,7 +251,7 @@
 	 * @throws ResourceHandlingException

 	 * @throws OutOfSyncException 

 	 */

-	private void addCommentToExistingAnomaly(R4EUIAnomaly aUIAnomaly) throws ResourceHandlingException, OutOfSyncException {

+	private void addCommentToExistingAnomaly(R4EUIAnomalyBasic aUIAnomaly) throws ResourceHandlingException, OutOfSyncException {

 		

 		final R4EUIComment uiComment = aUIAnomaly.createComment();

 		if (null != uiComment) {

@@ -272,7 +272,7 @@
 	private void addAnomalyToExistingFileContext(R4EUIAnomalyContainer aContainer, IR4EUIPosition aUIPosition) 

 		throws ResourceHandlingException, OutOfSyncException {

 

-		final R4EUIAnomaly uiAnomaly = aContainer.createAnomaly((R4EUITextPosition) aUIPosition);

+		final R4EUIAnomalyBasic uiAnomaly = aContainer.createAnomaly((R4EUITextPosition) aUIPosition);

 		if (null != uiAnomaly) {

 			//Set focus to newly created anomaly comment

 			R4EUIModelController.getNavigatorView().getTreeViewer().expandToLevel(uiAnomaly, AbstractTreeViewer.ALL_LEVELS);

@@ -306,7 +306,7 @@
 				uiFileContext, R4EUIConstants.ANOMALIES_LABEL_NAME);

 		uiFileContext.addChildren(uiAnomalyContainer);

 		

-		final R4EUIAnomaly uiAnomaly = uiAnomalyContainer.createAnomaly((R4EUITextPosition) aUIPosition);

+		final R4EUIAnomalyBasic uiAnomaly = uiAnomalyContainer.createAnomaly((R4EUITextPosition) aUIPosition);

 		if (null != uiAnomaly) {

 			//Set focus to newly created anomaly comment

 			R4EUIModelController.getNavigatorView().getTreeViewer().expandToLevel(uiAnomaly, AbstractTreeViewer.ALL_LEVELS);

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/AddLinkedAnomalyHandler.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/AddLinkedAnomalyHandler.java
index 03553c7..7f0073e 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/AddLinkedAnomalyHandler.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/AddLinkedAnomalyHandler.java
@@ -29,7 +29,7 @@
 import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewVersionsException;

 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

 import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomaly;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyBasic;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyContainer;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIFileContext;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

@@ -96,7 +96,7 @@
 			fileContext.addChildren(container);

 		}

 		

-		final R4EUIAnomaly uiAnomaly = container.createAnomaly((R4EUITextPosition) aElement.getPosition());

+		final R4EUIAnomalyBasic uiAnomaly = container.createAnomaly((R4EUITextPosition) aElement.getPosition());

 		if (null != uiAnomaly) {

 			//Set focus to newly created anomaly comment

 			R4EUIModelController.getNavigatorView().getTreeViewer().expandToLevel(uiAnomaly, AbstractTreeViewer.ALL_LEVELS);

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/ChangeReviewStateHandler.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/ChangeReviewStateHandler.java
index e8dc303..190d40a 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/ChangeReviewStateHandler.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/ChangeReviewStateHandler.java
@@ -23,11 +23,16 @@
 import org.eclipse.core.commands.AbstractHandler;

 import org.eclipse.core.commands.ExecutionEvent;

 import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.core.runtime.Status;

+import org.eclipse.jface.dialogs.ErrorDialog;

 import org.eclipse.jface.viewers.IStructuredSelection;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

 import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReview;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

 import org.eclipse.ui.handlers.HandlerUtil;

 

@@ -53,10 +58,20 @@
 		final IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);

 		if (!selection.isEmpty()) {

 			IR4EUIModelElement element = null;

+			ErrorDialog dialog = null;

 			for (final Iterator<?> iterator = selection.iterator(); iterator.hasNext();) {

 				try {

 					element = (IR4EUIModelElement) iterator.next();

 					Activator.Ftracer.traceInfo("Changing review state for element " + element.getName());

+					//We need to do a special check for R4EReviews

+					if (element instanceof R4EUIReview) {

+						if (!(((R4EUIReview)element).checkCompletionStatus())) {

+					    	dialog = new ErrorDialog(null, R4EUIConstants.REVIEW_NOT_COMPLETED_ERROR, "Review cannot be set to completed",

+					    			new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, "Some anomalies are not in the proper state to complete this review", null), IStatus.ERROR);

+					    	dialog.open();

+							return null;

+						}

+					}

 					element.setReviewed(!(element.isReviewed()));

 				} catch (ResourceHandlingException e) {

 					UIUtils.displayResourceErrorDialog(e);

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/CompletedPropertyTester.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/CompletedPropertyTester.java
new file mode 100644
index 0000000..7f4154d
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/CompletedPropertyTester.java
@@ -0,0 +1,48 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements a property testers that looks for completed elements

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.commands;

+

+import org.eclipse.core.expressions.PropertyTester;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class CompletedPropertyTester extends PropertyTester {

+

+	/**

+	 * Executes the property test determined by the parameter <code>property</code>.

+	 * 

+	 * @param receiver the receiver of the property test

+	 * @param property the property to test

+	 * @param args additional arguments to evaluate the property. If no arguments are specified in

+	 *            the <code>test</code> expression an array of length 0 is passed

+	 * @param expectedValue the expected value of the property. The value is either of type

+	 *            <code>java.lang.String</code> or a boxed base type. If no value was specified in

+	 *            the <code>test</code> expressions then <code>null</code> is passed

+	 * 

+	 * @return returns <code>true</code> if the property is equal to the expected value; otherwise

+	 *         <code>false</code> is returned

+	 * @see org.eclipse.core.expressions.IPropertyTester#test(Object receiver, String property, Object[] args, Object expectedValue)

+	 */

+	public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {

+		if (null == R4EUIModelController.getActiveReview()) return false;

+		return !R4EUIModelController.getActiveReview().isReviewed();

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/FindReviewItemsHandler.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/FindReviewItemsHandler.java
index 8fc37b0..12219ae 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/FindReviewItemsHandler.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/FindReviewItemsHandler.java
@@ -27,7 +27,7 @@
 import org.eclipse.jface.viewers.ISelection;

 import org.eclipse.jface.viewers.IStructuredSelection;

 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

-import org.eclipse.mylyn.reviews.r4e.ui.dialogs.R4EFindReviewItemsDialog;

+import org.eclipse.mylyn.reviews.r4e.ui.dialogs.FindReviewItemsDialog;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

 import org.eclipse.ui.handlers.HandlerUtil;

 

@@ -91,7 +91,7 @@
 		//Fire up the find review items dialog to get the latest commit info for the first selection

 		R4EUIModelController.setDialogOpen(true);

 

-		final R4EFindReviewItemsDialog dialog = new R4EFindReviewItemsDialog(R4EUIModelController.getNavigatorView().

+		final FindReviewItemsDialog dialog = new FindReviewItemsDialog(R4EUIModelController.getNavigatorView().

 				getSite().getWorkbenchWindow().getShell(), FIND_REVIEW_ITEMS_DIALOG_TITLE, FIND_REVIEW_ITEMS_DIALOG_VALUE, 

 				FIND_REVIEW_ITEMS_DESCRIPTION_DIALOG_VALUE, project);

     	dialog.open();

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/RemoveElementHandler.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/RemoveElementHandler.java
index 97f3fa3..ea8d30f 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/RemoveElementHandler.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/RemoveElementHandler.java
@@ -55,10 +55,11 @@
 		final IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);

 		if (!selection.isEmpty()) {

 			IR4EUIModelElement element = null;

+			MessageDialogWithToggle dialog = null;

 			for (final Iterator<?> iterator = selection.iterator(); iterator.hasNext();) {

 			    element = (IR4EUIModelElement) iterator.next();

 				Activator.Ftracer.traceInfo("Disable element " + element.getName());

-				MessageDialogWithToggle dialog = MessageDialogWithToggle.openOkCancelConfirm(null,

+				dialog = MessageDialogWithToggle.openOkCancelConfirm(null,

 						"Disable element",

 						"Do you really want to disable this element?",

 						"Also delete from file (not supported yet)",

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/ReviewState.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/ReviewState.java
index 18deacf..9bf52cf 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/ReviewState.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/ReviewState.java
@@ -38,12 +38,12 @@
 	// ------------------------------------------------------------------------

 	

 	/**

-	 * Field MY_STATE.

-	 * (value is ""org.eclipse.mylyn.reviews.r4e.ui.editors.commands.open"")

+	 * Field REVIEW_CURRENT.

+	 * (value is ""org.eclipse.mylyn.reviews.r4e.ui.commands.reviewCurrent"")

 	 */

-	public static final String MY_REVIEW_STATE = "org.eclipse.mylyn.reviews.r4e.ui.commands.review";

+	public static final String REVIEW_CURRENT = "org.eclipse.mylyn.reviews.r4e.ui.commands.reviewCurrent";

 	

-	

+

 	// ------------------------------------------------------------------------

 	// Methods

 	// ------------------------------------------------------------------------

@@ -69,7 +69,7 @@
 	 */

 	public Map<String, R4EUIReview> getCurrentState() {

 		final Map<String, R4EUIReview> map = new HashMap<String, R4EUIReview>(1, 1);

-		map.put(MY_REVIEW_STATE, R4EUIModelController.getActiveReview());

+		map.put(REVIEW_CURRENT, R4EUIModelController.getActiveReview());

 		return map;

 	}

 

@@ -79,14 +79,14 @@
 	 * @see org.eclipse.ui.ISourceProvider#getProvidedSourceNames()

 	 */

 	public String[] getProvidedSourceNames() {

-		return new String[] { MY_REVIEW_STATE };

+		return new String[] { REVIEW_CURRENT };

 	}

 	

 	/**

 	 * Method setReview.

 	 * @param aOpenReview ReviewElement

 	 */

-	public void setReview(R4EUIReview aOpenReview) {

-		fireSourceChanged(ISources.WORKBENCH, ReviewState.MY_REVIEW_STATE, aOpenReview);

+	public void setCurrentReview(R4EUIReview aOpenReview) {

+		fireSourceChanged(ISources.WORKBENCH, REVIEW_CURRENT, aOpenReview);

 	}

 }

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/SelectNextHandler.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/SelectNextHandler.java
index 4009520..948b386 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/SelectNextHandler.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/SelectNextHandler.java
@@ -27,7 +27,7 @@
 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

 import org.eclipse.mylyn.reviews.r4e.ui.editors.EditorProxy;

 import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomaly;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyBasic;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIFileContext;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUISelection;

@@ -71,7 +71,7 @@
 			    //Open the editor on FileContexts, selections amd anomalies

 				if (nextElement instanceof R4EUIFileContext ||

 						nextElement instanceof R4EUISelection ||

-						nextElement instanceof R4EUIAnomaly) {

+						nextElement instanceof R4EUIAnomalyBasic) {

 					EditorProxy.openEditor(view.getSite().getPage(), nextSelection, false);

 				}

 			}			

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/SelectPreviousHandler.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/SelectPreviousHandler.java
index cf71243..e73fe05 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/SelectPreviousHandler.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/commands/SelectPreviousHandler.java
@@ -27,7 +27,7 @@
 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

 import org.eclipse.mylyn.reviews.r4e.ui.editors.EditorProxy;

 import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomaly;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyBasic;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIFileContext;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUISelection;

@@ -71,7 +71,7 @@
 			    //Open the editor on FileContexts, selections amd anomalies

 				if (previousElement instanceof R4EUIFileContext ||

 						previousElement instanceof R4EUISelection ||

-						previousElement instanceof R4EUIAnomaly) {

+						previousElement instanceof R4EUIAnomalyBasic) {

 					EditorProxy.openEditor(view.getSite().getPage(), previousSelection, false);

 				}

 			}			

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/AnomalyInputDialog.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/AnomalyInputDialog.java
new file mode 100644
index 0000000..1188549
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/AnomalyInputDialog.java
@@ -0,0 +1,310 @@
+// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.constructorsOnlyInvokeFinalMethods, useForLoop, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.disallowReturnMutable, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, explicitThisUsage

+/*******************************************************************************

+ * Copyright (c) 2010 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the dialog used to fill-in the Anomaly element details

+ * This is a modeless-like dialog

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.dialogs;

+

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.core.runtime.Status;

+import org.eclipse.jface.dialogs.ErrorDialog;

+import org.eclipse.jface.dialogs.IDialogConstants;

+import org.eclipse.jface.dialogs.IInputValidator;

+import org.eclipse.mylyn.reviews.r4e.ui.Activator;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Display;

+import org.eclipse.swt.widgets.Label;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.forms.FormDialog;

+import org.eclipse.ui.forms.IManagedForm;

+import org.eclipse.ui.forms.events.ExpansionAdapter;

+import org.eclipse.ui.forms.events.ExpansionEvent;

+import org.eclipse.ui.forms.widgets.ExpandableComposite;

+import org.eclipse.ui.forms.widgets.FormToolkit;

+import org.eclipse.ui.forms.widgets.ScrolledForm;

+import org.eclipse.ui.forms.widgets.Section;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class AnomalyInputDialog extends FormDialog {

+

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field ADD_ANOMALY_DIALOG_TITLE.

+	 * (value is ""Enter Anomaly details"")

+	 */

+	private static final String ADD_ANOMALY_DIALOG_TITLE = "Enter Anomaly Details";

+	

+	/**

+	 * Field ADD_ANOMALY_DIALOG_VALUE.

+	 * (value is ""Enter the Anomaly title:"")

+	 */

+	private static final String ADD_ANOMALY_DIALOG_VALUE = "Anomaly Title: ";

+	

+	/**

+	 * Field ADD_COMMENT_DIALOG_VALUE.

+	 * (value is ""Enter your comments for the new Anomaly:"")

+	 */

+	private static final String ADD_DESCRIPTION_DIALOG_VALUE = "Anomaly Description: ";

+	

+	/**

+	 * Field BASIC_PARAMS_HEADER_MSG.

+	 * (value is ""Enter the mandatory basic parameters for this anomaly"")

+	 */

+	private static final String BASIC_PARAMS_HEADER_MSG = "Enter the mandatory basic parameters for this anomaly";

+	

+	

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field fAnomalyTitleValue.

+	 */

+	private String fAnomalyTitleValue = "";

+	

+	/**

+	 * Field fAnomalyTitleInputTextField.

+	 */

+	private Text fAnomalyTitleInputTextField = null;

+	

+	/**

+	 * Field fAnomalyDescriptionValue.

+	 */

+    private String fAnomalyDescriptionValue = "";

+    

+	/**

+	 * Field fAnomalyDescriptionInputTextField.

+	 */

+    private Text fAnomalyDescriptionInputTextField;

+    

+    /**

+     * The input validator, or <code>null</code> if none.

+     */

+    private final IInputValidator fValidator;

+    

+    

+	// ------------------------------------------------------------------------

+	// Constructors

+	// ------------------------------------------------------------------------

+    

+	/**

+	 * Constructor for R4EAnomalyInputDialog.

+	 * @param aParentShell Shell

+	 */

+	public AnomalyInputDialog(Shell aParentShell) {

+		super(aParentShell);

+		setBlockOnOpen(false);

+		fValidator = new R4EInputValidator();

+	}

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+    /**

+     * Method buttonPressed.

+     * @param buttonId int

+     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)

+     */

+    @Override

+	protected void buttonPressed(int buttonId) {

+        if (buttonId == IDialogConstants.OK_ID) {

+	    	this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_WAIT));

+

+        	//Validate Anomaly Title

+        	String validateResult = validateEmptyInput(fAnomalyTitleInputTextField);

+        	if (null != validateResult) {

+        		//Validation of input failed

+    			final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "No input given for Anomaly Title", 

+    					new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

+    			dialog.open();

+    			this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

+        		return;

+        	}

+        	fAnomalyTitleValue = fAnomalyTitleInputTextField.getText();

+        	

+        	//Validate Anomaly Comment

+        	validateResult = validateEmptyInput(fAnomalyDescriptionInputTextField);

+        	if (null != validateResult) {

+        		//Validation of input failed

+    			final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "No input given for Anomaly Comment",

+        				new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

+    			dialog.open();

+    			this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

+        		return;

+        	}

+        	fAnomalyDescriptionValue = fAnomalyDescriptionInputTextField.getText();

+        	

+        } else {

+        	fAnomalyTitleValue = null;

+        	fAnomalyDescriptionValue = null;

+        }

+		this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

+        super.buttonPressed(buttonId);

+    }

+    

+    /**

+     * Method configureShell.

+     * @param shell Shell

+     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)

+     */

+    @Override

+	protected void configureShell(Shell shell) {

+        super.configureShell(shell);

+        shell.setText(ADD_ANOMALY_DIALOG_TITLE);

+    }

+    

+	/**

+	 * Configures the dialog form and creates form content. Clients should

+	 * override this method.

+	 * 

+	 * @param mform

+	 *            the dialog form

+	 */

+	@Override

+	protected void createFormContent(final IManagedForm mform) {

+

+		final FormToolkit toolkit = mform.getToolkit();

+		final ScrolledForm sform = mform.getForm();

+		sform.setExpandVertical(true);

+		final Composite composite = sform.getBody();

+		final GridLayout layout = new GridLayout(4, false);

+		composite.setLayout(layout);

+        

+        //Grid data values

+        final GridData labelData = new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false);

+        final GridData textSingleData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        textSingleData.horizontalSpan = 3;

+        final GridData textMultiData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        textMultiData.horizontalSpan = 3;

+        

+		//Basic parameters section

+        final Section basicSection = toolkit.createSection(composite, Section.DESCRIPTION | ExpandableComposite.TITLE_BAR |

+        		  ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);

+        final GridData basicSectionGridData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        basicSectionGridData.horizontalSpan = 4;

+        basicSection.setLayoutData(basicSectionGridData);

+        basicSection.setText(R4EUIConstants.BASIC_PARAMS_HEADER);

+        basicSection.setDescription(BASIC_PARAMS_HEADER_MSG);

+        basicSection.addExpansionListener(new ExpansionAdapter()

+		{

+			@Override

+			public void expansionStateChanged(ExpansionEvent e){

+				getShell().setSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));

+				sform.reflow(true);

+			}

+		});

+        

+        final Composite basicSectionClient = toolkit.createComposite(basicSection);

+        basicSectionClient.setLayout(layout);

+        basicSection.setClient(basicSectionClient);

+        

+        //Anomaly Title

+        Label label = toolkit.createLabel(basicSectionClient, ADD_ANOMALY_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fAnomalyTitleInputTextField = toolkit.createText(basicSectionClient, "", SWT.SINGLE);

+        fAnomalyTitleInputTextField.setLayoutData(textSingleData);

+        

+        //Anomaly Description

+        label = toolkit.createLabel(basicSectionClient, ADD_DESCRIPTION_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fAnomalyDescriptionInputTextField = toolkit.createText(basicSectionClient, "", SWT.MULTI | SWT.V_SCROLL);

+        textMultiData.heightHint = fAnomalyTitleInputTextField.getLineHeight() * 3;

+        fAnomalyDescriptionInputTextField.setLayoutData(textMultiData);

+    }

+    

+	/**

+	 * Method isResizable.

+	 * @return boolean

+	 * @see org.eclipse.jface.dialogs.Dialog#isResizable()

+	 */

+	@Override

+	protected boolean isResizable() {

+		return true;

+	}

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the anomaly title input string

+     */

+    public String getAnomalyTitleValue() {

+        return fAnomalyTitleValue;

+    }

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the anomaly description input string

+     */

+    public String getAnomalyDescriptionValue() {

+        return fAnomalyDescriptionValue;

+    }

+    

+    /**

+     * Method validateEmptyInput.

+     * @param aText Text

+     * @return String

+     */

+    private String validateEmptyInput(Text aText) {

+        return fValidator.isValid(aText.getText());

+    }

+    

+    /**

+     * Method setShellStyle.

+     * @param newShellStyle int

+     */

+    @Override

+	protected void setShellStyle(int newShellStyle) {	

+    	int newstyle = newShellStyle & ~SWT.APPLICATION_MODAL; /* turn off APPLICATION_MODAL */

+    	newstyle |= SWT.MODELESS; /* turn on MODELESS */

+    	super.setShellStyle(newstyle); 

+    }

+    

+    /**

+     * Method open.

+     * @return int

+     */

+    @Override

+	public int open() {

+    	super.open();

+    	pumpMessages(); /* this will let the caller wait till OK, Cancel is pressed, but will let the other GUI responsive */

+    	return super.getReturnCode();

+    }

+

+    /**

+     * Method pumpMessages.

+     */

+    protected void pumpMessages() {

+    	final Shell sh = getShell();	

+    	final Display disp = sh.getDisplay(); 

+    	while( !sh.isDisposed() ) { // $codepro.audit.disable methodInvocationInLoopCondition

+    		if( !disp.readAndDispatch() ) disp.sleep();

+    	}

+    	disp.update();

+    }

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/CalendarDialog.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/CalendarDialog.java
new file mode 100644
index 0000000..2290221
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/CalendarDialog.java
@@ -0,0 +1,133 @@
+/*******************************************************************************

+ * Copyright (c) 2010 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the dialog used to display and select a date in a calendar

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.dialogs;

+

+import java.util.Date;

+import java.util.GregorianCalendar;

+

+import org.eclipse.jface.dialogs.IDialogConstants;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.DateTime;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.ui.forms.FormDialog;

+import org.eclipse.ui.forms.IManagedForm;

+import org.eclipse.ui.forms.widgets.ScrolledForm;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class CalendarDialog extends FormDialog {

+

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field ADD_CALENDAR_DIALOG_TITLE.

+	 * (value is ""Select Date"")

+	 */

+	private static final String ADD_CALENDAR_DIALOG_TITLE = "Select Date";

+	

+	

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field fCalendar.

+	 */

+	private DateTime fCalendar = null;

+	/**

+	 * Field fDate.

+	 */

+	private GregorianCalendar fDate = null;

+	

+	

+	// ------------------------------------------------------------------------

+	// Constructor

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Constructor for CalendarDialog.

+	 * @param aParentShell Shell

+	 */

+	public CalendarDialog(Shell aParentShell) {

+		super(aParentShell);

+    	setBlockOnOpen(true);

+	}

+    

+    

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+    

+    /**

+     * Method configureShell.

+     * @param shell Shell

+     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)

+     */

+    @Override

+	protected void configureShell(Shell shell) {

+        super.configureShell(shell);

+        shell.setText(ADD_CALENDAR_DIALOG_TITLE);

+    }

+    

+    /**

+     * Method buttonPressed.

+     * @param buttonId int

+     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)

+     */

+    @Override

+	protected void buttonPressed(int buttonId) {

+        if (buttonId == IDialogConstants.OK_ID) {

+        	fDate = new GregorianCalendar(fCalendar.getYear(), fCalendar.getMonth(), fCalendar.getDay());

+        }

+        super.buttonPressed(buttonId);

+    }

+    

+	/**

+	 * Configures the dialog form and creates form content. Clients should

+	 * override this method.

+	 * 

+	 * @param mform

+	 *            the dialog form

+	 */

+	@Override

+	protected void createFormContent(final IManagedForm mform) {

+

+		final ScrolledForm sform = mform.getForm();

+		sform.setExpandVertical(true);

+		final Composite composite = sform.getBody();

+		final GridLayout layout = new GridLayout();

+		composite.setLayout(layout);

+	    fCalendar = new DateTime(composite, SWT.CALENDAR | SWT.BORDER);

+	    fCalendar.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));

+	}

+    

+    /**

+     * Method getDate.

+	 * @return Date

+     */

+	public Date getDate() {

+		return fDate.getTime();

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4ECommentInputDialog.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/CommentInputDialog.java
similarity index 60%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4ECommentInputDialog.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/CommentInputDialog.java
index 4265235..79a708c 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4ECommentInputDialog.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/CommentInputDialog.java
@@ -21,7 +21,6 @@
 

 import org.eclipse.core.runtime.IStatus;

 import org.eclipse.core.runtime.Status;

-import org.eclipse.jface.dialogs.Dialog;

 import org.eclipse.jface.dialogs.ErrorDialog;

 import org.eclipse.jface.dialogs.IDialogConstants;

 import org.eclipse.jface.dialogs.IInputValidator;

@@ -29,13 +28,20 @@
 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.layout.GridData;

-import org.eclipse.swt.widgets.Button;

+import org.eclipse.swt.layout.GridLayout;

 import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Control;

 import org.eclipse.swt.widgets.Display;

 import org.eclipse.swt.widgets.Label;

 import org.eclipse.swt.widgets.Shell;

 import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.forms.FormDialog;

+import org.eclipse.ui.forms.IManagedForm;

+import org.eclipse.ui.forms.events.ExpansionAdapter;

+import org.eclipse.ui.forms.events.ExpansionEvent;

+import org.eclipse.ui.forms.widgets.ExpandableComposite;

+import org.eclipse.ui.forms.widgets.FormToolkit;

+import org.eclipse.ui.forms.widgets.ScrolledForm;

+import org.eclipse.ui.forms.widgets.Section;

 

 // ------------------------------------------------------------------------

 // Constants

@@ -45,47 +51,44 @@
  * @author lmcdubo

  * @version $Revision: 1.0 $

  */

-public class R4ECommentInputDialog extends Dialog {

+public class CommentInputDialog extends FormDialog {

 

 	// ------------------------------------------------------------------------

 	// Constants

 	// ------------------------------------------------------------------------

 	

 	/**

-	 * Field MINIMUM_DIALOG_AREA_HEIGHT.

-	 * (value is 150)

+	 * Field ADD_COMMENT_DIALOG_TITLE.

+	 * (value is ""Enter Comment details"")

 	 */

-	private static final int MINIMUM_DIALOG_AREA_HEIGHT = 150;

+	private static final String ADD_COMMENT_DIALOG_TITLE = "Enter Comment Details";

+	

+	/**

+	 * Field ADD_COMMENT_DIALOG_VALUE.

+	 * (value is ""Enter your new Comments for this Anomaly:"")

+	 */

+	private static final String ADD_COMMENT_DIALOG_VALUE = "Comments Description:";

 

+	/**

+	 * Field BASIC_PARAMS_HEADER_MSG.

+	 * (value is ""Enter the mandatory basic parameters for this comment"")

+	 */

+	private static final String BASIC_PARAMS_HEADER_MSG = "Enter the mandatory basic parameters for this comment";

+	

 	

 	// ------------------------------------------------------------------------

 	// Member variables

 	// ------------------------------------------------------------------------

-	

-    /**

-     * The title of the dialog.

-     */

-    private final String fTitle;

-

-    /**

-     * The message to display, or <code>null</code> if none.

-     */

-    private final String fCommentMessage;

     

-    /**

-     * The input value; the empty string by default.

-     */

+	/**

+	 * Field fCommentValue.

+	 */

     private String fCommentValue = "";

-    

-    /**

-     * Ok button widget.

-     */

-    private Button fOKButton;

 

-    /**

-     * Input text widget.

-     */

-    private Text fInputTextField;

+	/**

+	 * Field fCommentInputTextField.

+	 */

+    private Text fCommentInputTextField;

     

     /**

      * The input validator, or <code>null</code> if none.

@@ -100,15 +103,11 @@
 	/**

 	 * Constructor for R4ECommentInputDialog.

 	 * @param aParentShell Shell

-	 * @param aDialogTitle String

-	 * @param aCommentMessage String

 	 */

-	public R4ECommentInputDialog(Shell aParentShell, String aDialogTitle, String aCommentMessage) {

+	public CommentInputDialog(Shell aParentShell) {

 		super(aParentShell);

 		setBlockOnOpen(false);

-		fTitle = aDialogTitle;

-		fCommentMessage = aCommentMessage;

-		fValidator = new EmptyInputValidator();

+		fValidator = new R4EInputValidator();

 	}

 	

 	

@@ -126,7 +125,7 @@
         if (buttonId == IDialogConstants.OK_ID) {

 	    	this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_WAIT));

         	//Validate Name

-        	final String validateResult = validateEmptyInput(fInputTextField);

+        	final String validateResult = validateEmptyInput(fCommentInputTextField);

         	if (null != validateResult) {

         		//Validation of input failed

     			final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "No input given for Comment",

@@ -135,7 +134,7 @@
     			this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

     			return;

         	}

-        	fCommentValue = fInputTextField.getText();

+        	fCommentValue = fCommentInputTextField.getText();

         } else {

         	fCommentValue = null;

         }

@@ -151,71 +150,61 @@
     @Override

 	protected void configureShell(Shell shell) {

         super.configureShell(shell);

-        if (null != fTitle) {

-			shell.setText(fTitle);

-		}

-    }

-    

-    /**

-     * Method createDialogArea.

-     * @param parent Composite

-     * @return Control

-     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)

-     */

-    @Override

-	protected Control createDialogArea(Composite parent) {

-        // create composite

-        final Composite composite = (Composite) super.createDialogArea(parent);

-        

-        // create Comment message label

-        if (null != fCommentMessage) {

-            final Label label = new Label(composite, SWT.WRAP);

-            label.setText(fCommentMessage);

-            final GridData labelData = new GridData(GridData.FILL, GridData.FILL, true, false);

-            labelData.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);

-            label.setLayoutData(labelData);

-            label.setFont(parent.getFont());

-        }

-        

-        //create Comment input text field

-        fInputTextField = new Text(composite, getInputTextStyle() | SWT.V_SCROLL);

-        fInputTextField.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));

-        composite.getShell().setMinimumSize(convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH), 

-        		convertHorizontalDLUsToPixels(MINIMUM_DIALOG_AREA_HEIGHT));

-        applyDialogFont(composite);

-        return composite;

-    }

-    

-    /**

-     * Method createButtonsForButtonBar.

-     * @param parent Composite

-     * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)

-     */

-    @Override

-	protected void createButtonsForButtonBar(Composite parent) {

-        // create OK and Cancel buttons by default

-    	fOKButton = createButton(parent, IDialogConstants.OK_ID,

-                IDialogConstants.OK_LABEL, true);

-        createButton(parent, IDialogConstants.CANCEL_ID,

-                IDialogConstants.CANCEL_LABEL, false);

-        //do this here because setting the text will set enablement on the ok

-        // button

-        fInputTextField.setFocus();

-        if (null != fCommentValue) {

-        	fInputTextField.setText(fCommentValue);

-        	fInputTextField.selectAll();

-        }

+        shell.setText(ADD_COMMENT_DIALOG_TITLE);

     }

     

 	/**

-	 * Returns the style bits that should be used for the input text field.

-	 * Defaults to a single line entry. Subclasses may override.

-	 * @since 3.4

-	 * @return the integer style bits that should be used when creating the input text

+	 * Configures the dialog form and creates form content. Clients should

+	 * override this method.

+	 * 

+	 * @param mform

+	 *            the dialog form

 	 */

-	protected int getInputTextStyle() {

-		return SWT.MULTI | SWT.WRAP ;

-	}

+	@Override

+	protected void createFormContent(final IManagedForm mform) {

+

+		final FormToolkit toolkit = mform.getToolkit();

+		final ScrolledForm sform = mform.getForm();

+		sform.setExpandVertical(true);

+		final Composite composite = sform.getBody();

+		final GridLayout layout = new GridLayout(4, false);

+		composite.setLayout(layout);

+        

+        //Grid data values

+        final GridData labelData = new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false);

+        final GridData textSingleData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        textSingleData.horizontalSpan = 3;

+        final GridData textMultiData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        textMultiData.horizontalSpan = 3;

+        

+		//Basic parameters section

+        final Section basicSection = toolkit.createSection(composite, Section.DESCRIPTION | ExpandableComposite.TITLE_BAR |

+        		  ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);

+        final GridData basicSectionGridData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        basicSectionGridData.horizontalSpan = 4;

+        basicSection.setLayoutData(basicSectionGridData);

+        basicSection.setText(R4EUIConstants.BASIC_PARAMS_HEADER);

+        basicSection.setDescription(BASIC_PARAMS_HEADER_MSG);

+        basicSection.addExpansionListener(new ExpansionAdapter()

+		{

+			@Override

+			public void expansionStateChanged(ExpansionEvent e){

+				getShell().setSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));

+				sform.reflow(true);

+			}

+		});

+        

+        final Composite basicSectionClient = toolkit.createComposite(basicSection);

+        basicSectionClient.setLayout(layout);

+        basicSection.setClient(basicSectionClient);

+        

+        //Comment Description

+        final Label label = toolkit.createLabel(basicSectionClient, ADD_COMMENT_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fCommentInputTextField = toolkit.createText(basicSectionClient, "", SWT.MULTI | SWT.V_SCROLL);

+        textMultiData.heightHint = fCommentInputTextField.getLineHeight() * 3;

+        fCommentInputTextField.setLayoutData(textMultiData);

+    }

     

 	/**

 	 * Method isResizable.

@@ -225,22 +214,6 @@
 	protected boolean isResizable() {

 		return true;

 	}

-	

-    /**

-     * Returns the ok button.

-     * @return the ok button

-     */

-    protected Button getOkButton() {

-        return fOKButton;

-    }

-

-    /**

-     * Returns the text area.

-     * @return the comment text area

-     */

-    protected Text getCommentText() {

-        return fInputTextField;

-    }

     

     /**

      * Returns the string typed into this input dialog.

@@ -257,7 +230,7 @@
      */

     private String validateEmptyInput(Text aText) {

         if (null != fValidator) {

-            return ((EmptyInputValidator) fValidator).isValid(aText.getText());

+            return fValidator.isValid(aText.getText());

         }

         return null;

     }

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/EmptyInputValidator.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/EmptyInputValidator.java
deleted file mode 100644
index 8582200..0000000
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/EmptyInputValidator.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, packageJavadoc

-/*******************************************************************************

- * Copyright (c) 2010 Ericsson Research Canada

- * 

- * All rights reserved. This program and the accompanying materials are

- * made available under the terms of the Eclipse Public License v1.0 which

- * accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Description:

- * 

- * This class implements the dialog used to validate that a String received

- * is not null or empty

- * 

- * Contributors:

- *   Sebastien Dubois - Created for Mylyn Review R4E project

- *   

- ******************************************************************************/

-

-package org.eclipse.mylyn.reviews.r4e.ui.dialogs;

-

-import org.eclipse.jface.dialogs.IInputValidator;

-

-/**

- * @author lmcdubo

- * @version $Revision: 1.0 $

- */

-public class EmptyInputValidator implements IInputValidator {

-

-	// ------------------------------------------------------------------------

-	// Constants

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Field EMPTY_VALIDATION_ERROR_MESSAGE.

-	 * (value is ""No input given"")

-	 */

-	private static final String EMPTY_VALIDATION_ERROR_MESSAGE = "No Input given";

-	

-	

-	// ------------------------------------------------------------------------

-	// Methods

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Method isValid.

-	 * @param newText String

-	 * @return String

-	 * @see org.eclipse.jface.dialogs.IInputValidator#isValid(String)

-	 */

-	public String isValid(String newText) {

-		if (null == newText || 0 == newText.length()) return EMPTY_VALIDATION_ERROR_MESSAGE;

-		return null;

-	}

-

-}
\ No newline at end of file
diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EFindReviewItemsDialog.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/FindReviewItemsDialog.java
similarity index 99%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EFindReviewItemsDialog.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/FindReviewItemsDialog.java
index dbe28ab..f794276 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EFindReviewItemsDialog.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/FindReviewItemsDialog.java
@@ -66,7 +66,7 @@
  * @author lmcdubo

  * @version $Revision: 1.0 $

  */

-public class R4EFindReviewItemsDialog extends Dialog {

+public class FindReviewItemsDialog extends Dialog {

 

 	// ------------------------------------------------------------------------

 	// Constants

@@ -126,7 +126,7 @@
 	 * @param aItemComponentsMessage String

 	 * @param aInputProject IProject

 	 */

-	public R4EFindReviewItemsDialog(Shell aParentShell, String aDialogTitle, String aItemDetailsMessage, 

+	public FindReviewItemsDialog(Shell aParentShell, String aDialogTitle, String aItemDetailsMessage, 

 			String aItemComponentsMessage, IProject aInputProject) {

 		super(aParentShell);

     	setBlockOnOpen(true);

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/ParticipantInputDialog.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/ParticipantInputDialog.java
new file mode 100644
index 0000000..3cd9448
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/ParticipantInputDialog.java
@@ -0,0 +1,327 @@
+/*******************************************************************************

+ * Copyright (c) 2010 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the dialog used to fill-in the Participant element details.

+ *  This is a modal dialog

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.dialogs;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.core.runtime.Status;

+import org.eclipse.jface.dialogs.ErrorDialog;

+import org.eclipse.jface.dialogs.IDialogConstants;

+import org.eclipse.jface.dialogs.IInputValidator;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EUserRole;

+import org.eclipse.mylyn.reviews.r4e.ui.Activator;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.EditableListWidget;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.CCombo;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Item;

+import org.eclipse.swt.widgets.Label;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.forms.FormDialog;

+import org.eclipse.ui.forms.IManagedForm;

+import org.eclipse.ui.forms.events.ExpansionAdapter;

+import org.eclipse.ui.forms.events.ExpansionEvent;

+import org.eclipse.ui.forms.widgets.ExpandableComposite;

+import org.eclipse.ui.forms.widgets.FormToolkit;

+import org.eclipse.ui.forms.widgets.ScrolledForm;

+import org.eclipse.ui.forms.widgets.Section;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class ParticipantInputDialog extends FormDialog {

+

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field ADD_PARTICIPANT_DIALOG_TITLE.

+	 * (value is ""Enter Review details"")

+	 */

+	private static final String ADD_PARTICIPANT_DIALOG_TITLE = "Enter Participant Details";

+	

+	/**

+	 * Field ADD_PARTICIPANT_ID_DIALOG_VALUE.

+	 * (value is ""Participant Id: "")

+	 */

+	private static final String ADD_PARTICIPANT_ID_DIALOG_VALUE = "Id: ";

+	

+	/**

+	 * Field PARTICIPANT_ROLES.

+	 */

+	private static final String[] PARTICIPANT_ROLES = { R4EUIConstants.USER_ROLE_LEAD, 

+		R4EUIConstants.USER_ROLE_AUTHOR, R4EUIConstants.USER_ROLE_REVIEWER };

+	

+	

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field fParticipantIdValue.

+	 */

+    private String fParticipantIdValue = "";

+    

+	/**

+	 * Field fParticipantIdInputTextField.

+	 */

+    private Text fParticipantIdInputTextField;

+    

+	/**

+	 * Field fAvailableComponents.

+	 */

+	private EditableListWidget fRoleTypes = null;

+	

+	/**

+	 * Field fRolesValue.

+	 */

+	private List<R4EUserRole> fRolesValue = null;

+	

+	/**

+	 * Field fFocusAreaValue.

+	 */

+    private String fFocusAreaValue = "";

+    

+	/**

+	 * Field fFocusAreaTextField.

+	 */

+    private Text fFocusAreaTextField;

+    

+    /**

+     * The input validator, or <code>null</code> if none.

+     */

+    private final IInputValidator fValidator;

+    

+    

+	// ------------------------------------------------------------------------

+	// Constructors

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Constructor for ParticipantInputDialog.

+	 * @param aParentShell Shell

+	 */

+	public ParticipantInputDialog(Shell aParentShell) {

+		super(aParentShell);

+    	setBlockOnOpen(true);

+		fValidator = new R4EInputValidator();

+	}

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+    /**

+     * Method buttonPressed.

+     * @param buttonId int

+     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)

+     */

+    @Override

+	protected void buttonPressed(int buttonId) {

+        if (buttonId == IDialogConstants.OK_ID) {

+	    	this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_WAIT));

+        	

+        	//Validate Participant Id

+        	String validateResult = validateEmptyInput(fParticipantIdInputTextField);

+        	if (null != validateResult) {

+        		//Validation of input failed

+    			final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "No input given for Participant Id",

+        				new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

+    			dialog.open();

+    			this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

+    			return;

+        	}

+        	fParticipantIdValue = fParticipantIdInputTextField.getText();

+        	

+        	//Validate Roles (optional)

+        	fRolesValue = new ArrayList<R4EUserRole>();

+			for (Item item : fRoleTypes.getItems()) {

+		    	//Review type (no validation needed as this is a read-only combo box

+		        if (item.getText().equals(R4EUIConstants.USER_ROLE_LEAD)) {

+		        	fRolesValue.add(R4EUserRole.R4E_ROLE_LEAD);

+		        }

+		        else if (item.getText().equals(R4EUIConstants.USER_ROLE_AUTHOR)) {

+		        	fRolesValue.add(R4EUserRole.R4E_ROLE_AUTHOR);

+		        }

+		        else if (item.getText().equals(R4EUIConstants.USER_ROLE_REVIEWER)) {

+		        	fRolesValue.add(R4EUserRole.R4E_ROLE_REVIEWER);

+		        }

+			}

+			

+        	//Validate Focus Area (optional)

+        	validateResult = validateEmptyInput(fFocusAreaTextField);

+        	if (null == validateResult) {

+        		fFocusAreaValue = fFocusAreaTextField.getText();

+        	}

+        } else {

+        	fParticipantIdValue = null;

+        	fFocusAreaValue = null;

+        }

+		this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

+        super.buttonPressed(buttonId);

+    }

+    

+    /**

+     * Method configureShell.

+     * @param shell Shell

+     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)

+     */

+    @Override

+	protected void configureShell(Shell shell) {

+        super.configureShell(shell);

+        shell.setText(ADD_PARTICIPANT_DIALOG_TITLE);

+    }

+    

+	/**

+	 * Configures the dialog form and creates form content. Clients should

+	 * override this method.

+	 * 

+	 * @param mform

+	 *            the dialog form

+	 */

+	@Override

+	protected void createFormContent(final IManagedForm mform) {

+

+		final FormToolkit toolkit = mform.getToolkit();

+		final ScrolledForm sform = mform.getForm();

+		sform.setExpandVertical(true);

+		final Composite composite = sform.getBody();

+		final GridLayout layout = new GridLayout(4, false);

+		composite.setLayout(layout);

+		

+        //Grid data values

+        final GridData labelData = new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false);

+        final GridData textSingleData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        textSingleData.horizontalSpan = 3;

+        final GridData textMultiData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        textMultiData.horizontalSpan = 3;

+        

+		//Basic parameters section

+        final Section basicSection = toolkit.createSection(composite, Section.DESCRIPTION | ExpandableComposite.TITLE_BAR |

+        		  ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);

+        final GridData basicSectionGridData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        basicSectionGridData.horizontalSpan = 4;

+        basicSection.setLayoutData(basicSectionGridData);

+        basicSection.setText("Basic Parameters");

+        basicSection.setDescription("Enter the mandatory basic parameters for this participant");

+        basicSection.addExpansionListener(new ExpansionAdapter()

+		{

+			@Override

+			public void expansionStateChanged(ExpansionEvent e){

+				getShell().setSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));

+				sform.reflow(true);

+			}

+		});

+        

+        final Composite basicSectionClient = toolkit.createComposite(basicSection);

+        basicSectionClient.setLayout(layout);

+        basicSection.setClient(basicSectionClient);

+        

+        //Participant Id

+        Label label = toolkit.createLabel(basicSectionClient, ADD_PARTICIPANT_ID_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fParticipantIdInputTextField = toolkit.createText(basicSectionClient, "", SWT.SINGLE);

+        fParticipantIdInputTextField.setLayoutData(textSingleData);

+              

+        //Extra parameters section

+        final Section extraSection = toolkit.createSection(composite, Section.DESCRIPTION | ExpandableComposite.TITLE_BAR |

+        		  ExpandableComposite.TWISTIE);

+        final GridData extraSectionGridData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        extraSectionGridData.horizontalSpan = 4;

+        extraSection.setLayoutData(extraSectionGridData);

+        extraSection.setText("Extra Parameters");

+        extraSection.setDescription("Enter the optional extra parameters for this participant");

+        extraSection.addExpansionListener(new ExpansionAdapter()

+		{

+			@Override

+			public void expansionStateChanged(ExpansionEvent e){

+				getShell().setSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));

+				sform.reflow(true);

+			}

+		});

+        

+        final Composite extraSectionClient = toolkit.createComposite(extraSection);

+        extraSectionClient.setLayout(layout);

+        extraSection.setClient(extraSectionClient);

+

+		//Roles

+        label = toolkit.createLabel(extraSectionClient, "Roles: ");

+        label.setLayoutData(labelData);

+        fRoleTypes = new EditableListWidget(toolkit, extraSectionClient, textSingleData, null, 0, CCombo.class,

+        		PARTICIPANT_ROLES);

+

+        //Focus Area

+        label = toolkit.createLabel(extraSectionClient, "Focus Area: ");

+        label.setLayoutData(labelData);

+        fFocusAreaTextField = toolkit.createText(extraSectionClient, "", SWT.MULTI | SWT.V_SCROLL);

+        fFocusAreaTextField.setLayoutData(textMultiData);

+	}

+    

+	/**

+	 * Method isResizable.

+	 * @return boolean

+	 * @see org.eclipse.jface.dialogs.Dialog#isResizable()

+	 */

+	@Override

+	protected boolean isResizable() {

+		return true;

+	}

+    

+    /**

+     * Returns the participant role values

+     * @return the participant roles as a List

+     */

+    public List<R4EUserRole> getParticipantRolesValue() {

+    	return fRolesValue;

+    }

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the participant id input string

+     */

+    public String getParticipantIdValue() {

+        return fParticipantIdValue;

+    }

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the focus area input string

+     */

+    public String getFocusAreaValue() {

+        return fFocusAreaValue;

+    }

+

+    /**

+     * Method validateEmptyInput.

+     * @param aText Text

+     * @return String

+     */

+    private String validateEmptyInput(Text aText) {

+        return fValidator.isValid(aText.getText());

+    }

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EAnomalyInputDialog.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EAnomalyInputDialog.java
deleted file mode 100644
index b8f6307..0000000
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EAnomalyInputDialog.java
+++ /dev/null
@@ -1,355 +0,0 @@
-// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.constructorsOnlyInvokeFinalMethods, useForLoop, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.disallowReturnMutable, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, explicitThisUsage

-/*******************************************************************************

- * Copyright (c) 2010 Ericsson Research Canada

- * 

- * All rights reserved. This program and the accompanying materials are

- * made available under the terms of the Eclipse Public License v1.0 which

- * accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Description:

- * 

- * This class implements the dialog used to fill-in the Anomaly element details

- * This is a modeless-like dialog

- * 

- * Contributors:

- *   Sebastien Dubois - Created for Mylyn Review R4E project

- *   

- ******************************************************************************/

-

-package org.eclipse.mylyn.reviews.r4e.ui.dialogs;

-

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.Status;

-import org.eclipse.jface.dialogs.Dialog;

-import org.eclipse.jface.dialogs.ErrorDialog;

-import org.eclipse.jface.dialogs.IDialogConstants;

-import org.eclipse.jface.dialogs.IInputValidator;

-import org.eclipse.mylyn.reviews.r4e.ui.Activator;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.layout.GridData;

-import org.eclipse.swt.widgets.Button;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Control;

-import org.eclipse.swt.widgets.Display;

-import org.eclipse.swt.widgets.Label;

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.swt.widgets.Text;

-

-/**

- * @author lmcdubo

- * @version $Revision: 1.0 $

- */

-public class R4EAnomalyInputDialog extends Dialog {

-

-	// ------------------------------------------------------------------------

-	// Constants

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Field MINIMUM_DIALOG_AREA_HEIGHT.

-	 * (value is 150)

-	 */

-	private static final int MINIMUM_DIALOG_AREA_HEIGHT = 150;

-

-    /**

-     * The title of the dialog.

-     */

-    private final String fTitle;

-

-    /**

-     * The message to display, or <code>null</code> if none.

-     */

-    private final String fCommentMessage;

-    

-    /**

-     * The input value; the empty string by default.

-     */

-    private String fCommentValue = "";

-    

-    /**

-     * Input text widget.

-     */

-    private Text fCommentInputTextField;

-    

-	/**

-	 * Field fAnomalyMessage.

-	 */

-	private String fAnomalyMessage = null;

-	

-	/**

-	 * Field fAnomalyValue.

-	 */

-	private String fAnomalyValue = "";

-	

-	/**

-	 * Field fAnomalyInputTextField.

-	 */

-	private Text fAnomalyInputTextField = null;

-

-    /**

-     * Ok button widget.

-     */

-    private Button fOKButton;

-	

-    /**

-     * The input validator, or <code>null</code> if none.

-     */

-    private final IInputValidator fValidator;

-    

-    

-	// ------------------------------------------------------------------------

-	// Constructors

-	// ------------------------------------------------------------------------

-    

-	/**

-	 * Constructor for R4EAnomalyInputDialog.

-	 * @param aParentShell Shell

-	 * @param aDialogTitle String

-	 * @param aAnomalyMessage String

-	 * @param aCommentMessage String

-	 */

-	public R4EAnomalyInputDialog(Shell aParentShell, String aDialogTitle, String aAnomalyMessage, 

-			String aCommentMessage) {

-		super(aParentShell);

-		setBlockOnOpen(false);

-		fTitle = aDialogTitle;

-		fAnomalyMessage = aAnomalyMessage;

-		fCommentMessage = aCommentMessage;

-		fValidator = new EmptyInputValidator();

-	}

-	

-	

-	// ------------------------------------------------------------------------

-	// Methods

-	// ------------------------------------------------------------------------

-	

-    /**

-     * Method buttonPressed.

-     * @param buttonId int

-     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)

-     */

-    @Override

-	protected void buttonPressed(int buttonId) {

-        if (buttonId == IDialogConstants.OK_ID) {

-	    	this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_WAIT));

-

-        	//Validate Anomaly Title

-        	String validateResult = validateEmptyInput(fAnomalyInputTextField);

-        	if (null != validateResult) {

-        		//Validation of input failed

-    			final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "No input given for Anomaly Title", 

-    					new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

-    			dialog.open();

-    			this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

-        		return;

-        	}

-        	fAnomalyValue = fAnomalyInputTextField.getText();

-        	

-        	//Validate Anomaly Comment

-        	validateResult = validateEmptyInput(fCommentInputTextField);

-        	if (null != validateResult) {

-        		//Validation of input failed

-    			final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "No input given for Anomaly Comment",

-        				new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

-    			dialog.open();

-    			this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

-        		return;

-        	}

-        	fCommentValue = fCommentInputTextField.getText();

-        	

-        } else {

-        	fAnomalyValue = null;

-        	fCommentValue = null;

-        }

-		this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

-        super.buttonPressed(buttonId);

-    }

-    

-    /**

-     * Method configureShell.

-     * @param shell Shell

-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)

-     */

-    @Override

-	protected void configureShell(Shell shell) {

-        super.configureShell(shell);

-        if (null != fTitle) {

-			shell.setText(fTitle);

-		}

-    }

-    

-    /**

-     * Method createDialogArea.

-     * @param parent Composite

-     * @return Control

-     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)

-     */

-    @Override

-	protected Control createDialogArea(Composite parent) {

-        

-    	// create composite

-        final Composite composite = (Composite) super.createDialogArea(parent);

-        

-        // create Anomaly Title message label

-        if (null != fAnomalyMessage) {

-            final Label label = new Label(composite, SWT.WRAP);

-            label.setText(fAnomalyMessage);

-            final GridData anomalyLabelData = new GridData(GridData.FILL, GridData.FILL, true, false);

-            anomalyLabelData.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);

-            label.setLayoutData(anomalyLabelData);

-            label.setFont(parent.getFont());

-        }

-        

-        //create Anomaly Title input text field

-        fAnomalyInputTextField = new Text(composite, getInputTextStyle());

-        fAnomalyInputTextField.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));

-        

-        // create Comment message label

-        if (null != fCommentMessage) {

-            final Label label = new Label(composite, SWT.WRAP);

-            label.setText(fCommentMessage);

-            final GridData commentLabelData = new GridData(GridData.FILL, GridData.FILL, true, false);

-            commentLabelData.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);

-            label.setLayoutData(commentLabelData);

-            label.setFont(parent.getFont());

-        }

-        

-        //create Comment input text field

-        fCommentInputTextField = new Text(composite, getInputTextStyle() | SWT.V_SCROLL);

-        fCommentInputTextField.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));

-        composite.getShell().setMinimumSize(convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH), 

-        		convertHorizontalDLUsToPixels(MINIMUM_DIALOG_AREA_HEIGHT));

-        

-        applyDialogFont(composite);

-        return composite;

-    }

-

-    /**

-     * Method createButtonsForButtonBar.

-     * @param parent Composite

-     * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)

-     */

-    @Override

-	protected void createButtonsForButtonBar(Composite parent) {

-        // create OK and Cancel buttons by default

-    	fOKButton = createButton(parent, IDialogConstants.OK_ID,

-                IDialogConstants.OK_LABEL, true);

-        createButton(parent, IDialogConstants.CANCEL_ID,

-                IDialogConstants.CANCEL_LABEL, false);

-        //do this here because setting the text will set enablement on the ok button

-        fAnomalyInputTextField.setFocus();

-        if (null != fAnomalyValue) {

-        	fAnomalyInputTextField.setText(fAnomalyValue);

-        	fAnomalyInputTextField.selectAll();

-        }

-    }

-    

-	/**

-	 * Returns the style bits that should be used for the input text field.

-	 * Defaults to a single line entry. Subclasses may override.

-	 * @since 3.4

-	 * @return the integer style bits that should be used when creating the input text 

-	 */

-	protected int getInputTextStyle() {

-		return SWT.MULTI | SWT.WRAP;

-	}

-    

-	/**

-	 * Method isResizable.

-	 * @return boolean

-	 * @see org.eclipse.jface.dialogs.Dialog#isResizable()

-	 */

-	@Override

-	protected boolean isResizable() {

-		return true;

-	}

-	

-    /**

-     * Returns the ok button.

-     * @return the ok button

-     */

-    protected Button getOkButton() {

-        return fOKButton;

-    }

-    

-    /**

-     * Returns the text area.

-     * @return the anomaly title text area

-     */

-    protected Text getAnomalyText() {

-        return fAnomalyInputTextField;

-    }

-    

-    /**

-     * Returns the string typed into this input dialog.

-     * @return the anomaly title input string

-     */

-    public String getAnomalyValue() {

-        return fAnomalyValue;

-    }

-    

-    /**

-     * Returns the text area.

-     * @return the comment text area

-     */

-    protected Text getCommentText() {

-        return fCommentInputTextField;

-    }

-    

-    /**

-     * Returns the string typed into this input dialog.

-     * @return the comment input string

-     */

-    public String getCommentValue() {

-        return fCommentValue;

-    }

-    

-    /**

-     * Method validateEmptyInput.

-     * @param aText Text

-     * @return String

-     */

-    private String validateEmptyInput(Text aText) {

-        if (null != fValidator) {

-            return ((EmptyInputValidator) fValidator).isValid(aText.getText());

-        }

-        return null;

-    }

-    

-    /**

-     * Method setShellStyle.

-     * @param newShellStyle int

-     */

-    @Override

-	protected void setShellStyle(int newShellStyle) {	

-    	int newstyle = newShellStyle & ~SWT.APPLICATION_MODAL; /* turn off APPLICATION_MODAL */

-    	newstyle |= SWT.MODELESS; /* turn on MODELESS */

-    	super.setShellStyle(newstyle); 

-    }

-    

-    /**

-     * Method open.

-     * @return int

-     */

-    @Override

-	public int open() {

-    	super.open();

-    	pumpMessages(); /* this will let the caller wait till OK, Cancel is pressed, but will let the other GUI responsive */

-    	//return retVal;

-    	return super.getReturnCode();

-    }

-

-    /**

-     * Method pumpMessages.

-     */

-    protected void pumpMessages() {

-    	final Shell sh = getShell();	

-    	final Display disp = sh.getDisplay(); 

-    	while( !sh.isDisposed() ) { // $codepro.audit.disable methodInvocationInLoopCondition

-    		if( !disp.readAndDispatch() ) disp.sleep();

-    	}

-    	disp.update();

-    }

-}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/FolderInputValidator.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EInputValidator.java
similarity index 91%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/FolderInputValidator.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EInputValidator.java
index f897757..7f99c14 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/FolderInputValidator.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EInputValidator.java
@@ -28,7 +28,7 @@
  * @author lmcdubo

  * @version $Revision: 1.0 $

  */

-public class FolderInputValidator implements IInputValidator {

+public class R4EInputValidator implements IInputValidator {

 

 	// ------------------------------------------------------------------------

 	// Constants

@@ -69,7 +69,7 @@
 	 * @return String

 	 * @see org.eclipse.jface.dialogs.IInputValidator#isValid(String)

 	 */

-	public String isValid(String newText) {

+	public String isFolderValid(String newText) { // $codepro.audit.disable booleanMethodNamingConvention

 		if (null == newText || 0 == newText.length()) return FOLDER_VALIDATION_ERROR_MESSAGE;

 		final File folder = new File (newText);

 		if (folder.exists()) return null;

@@ -81,7 +81,7 @@
 	 * @param newText String

 	 * @return String

 	 */

-	public String isGroupExists(String newText) { // $codepro.audit.disable booleanMethodNamingConvention

+	public String isFileExists(String newText) { // $codepro.audit.disable booleanMethodNamingConvention

 		final File dir = new File(newText);

 		final File[] files = dir.listFiles(new WildcardFileFilter(GROUP_WILDCARD_NAME));

 		 

@@ -94,7 +94,7 @@
 	 * @param newText String

 	 * @return String

 	 */

-	public String isEmpty(String newText) { // $codepro.audit.disable booleanMethodNamingConvention

+	public String isValid(String newText) { // $codepro.audit.disable booleanMethodNamingConvention

 		if (null == newText || 0 == newText.length()) return EMPTY_VALIDATION_ERROR_MESSAGE;

 		return null;

 	}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EReviewGroupInputDialog.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EReviewGroupInputDialog.java
deleted file mode 100644
index 2ba0b55..0000000
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EReviewGroupInputDialog.java
+++ /dev/null
@@ -1,466 +0,0 @@
-// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.constructorsOnlyInvokeFinalMethods, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.disallowReturnMutable, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, explicitThisUsage

-/*******************************************************************************

- * Copyright (c) 2010 Ericsson Research Canada

- * 

- * All rights reserved. This program and the accompanying materials are

- * made available under the terms of the Eclipse Public License v1.0 which

- * accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Description:

- * 

- * This class implements the dialog used to fill-in the Review Group element 

- * details.  This is a modal dialog

- * 

- * Contributors:

- *   Sebastien Dubois - Created for Mylyn Review R4E project

- *   

- ******************************************************************************/

-

-package org.eclipse.mylyn.reviews.r4e.ui.dialogs;

-

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.Status;

-import org.eclipse.jface.dialogs.Dialog;

-import org.eclipse.jface.dialogs.ErrorDialog;

-import org.eclipse.jface.dialogs.IDialogConstants;

-import org.eclipse.jface.dialogs.IInputValidator;

-import org.eclipse.mylyn.reviews.r4e.ui.Activator;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.events.SelectionAdapter;

-import org.eclipse.swt.events.SelectionEvent;

-import org.eclipse.swt.layout.GridData;

-import org.eclipse.swt.layout.GridLayout;

-import org.eclipse.swt.widgets.Button;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Control;

-import org.eclipse.swt.widgets.DirectoryDialog;

-import org.eclipse.swt.widgets.Label;

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.swt.widgets.Text;

-import org.eclipse.ui.ISharedImages;

-import org.eclipse.ui.PlatformUI;

-

-/**

- * @author lmcdubo

- * @version $Revision: 1.0 $

- */

-public class R4EReviewGroupInputDialog extends Dialog {

-

-	// ------------------------------------------------------------------------

-	// Constants

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Field MINIMUM_DIALOG_AREA_HEIGHT.

-	 * (value is 200)

-	 */

-	private static final int MINIMUM_DIALOG_AREA_HEIGHT = 200;

-	

-	/**

-	 * Field NUM_COLUMNS_FOLDER_INPUT_COMPOSITE.

-	 * (value is 2)

-	 */

-	private static final int NUM_COLUMNS_FOLDER_INPUT_COMPOSITE = 2;

-

-	 /**

-     * The title of the dialog.

-     */

-    private final String fTitle;

-

-    /**

-     * The message to display, or <code>null</code> if none.

-     */

-    private final String fGroupNameMessage;

-    

-    /**

-     * The input value; the empty string by default.

-     */

-    private String fGroupNameValue = "";

-    

-    /**

-     * Input text widget.

-     */

-    private Text fGroupNameInputTextField;

-    

-	/**

-	 * Field fGroupFolderMessage.

-	 */

-	private String fGroupFolderMessage = null;

-	

-	/**

-	 * Field fGroupFolderValue.

-	 */

-	private String fGroupFolderValue = "";

-	

-	/**

-	 * Field fGroupFolderInputTextField.

-	 */

-	private Text fGroupFolderInputTextField = null;

-	

-	/**

-	 * Field fGroupFolderInputButton.

-	 */

-	private Button fGroupFolderInputButton = null;

-	

-	/**

-	 * Field fGroupDescriptionMessage.

-	 */

-	private String fGroupDescriptionMessage = null;

-	

-	/**

-	 * Field fGroupDescriptionValue.

-	 */

-	private String fGroupDescriptionValue = "";

-	

-	/**

-	 * Field fGroupDescriptionInputTextField.

-	 */

-	private Text fGroupDescriptionInputTextField = null;

-

-    /**

-     * Ok button widget.

-     */

-    private Button fOKButton;

-    

-    /**

-     * The input validator, or <code>null</code> if none.

-     */

-    private final IInputValidator fValidator;

-    

-    

-	// ------------------------------------------------------------------------

-	// Constructors

-	// ------------------------------------------------------------------------

-    

-	/**

-	 * Constructor for R4EReviewGroupInputDialog.

-	 * @param aParentShell Shell

-	 * @param aDialogTitle String

-	 * @param aGroupNameMessage String

-	 * @param aGroupFolderMessage String

-	 * @param aGroupDescriptionMessage String

-	 */

-	public R4EReviewGroupInputDialog(Shell aParentShell, String aDialogTitle, String aGroupNameMessage, 

-			String aGroupFolderMessage, String aGroupDescriptionMessage) {

-		super(aParentShell);

-    	setBlockOnOpen(true);

-		fTitle = aDialogTitle;

-		fGroupNameMessage = aGroupNameMessage;

-		fGroupFolderMessage = aGroupFolderMessage;

-		fGroupDescriptionMessage = aGroupDescriptionMessage;

-		fValidator = new FolderInputValidator();

-	}

-	

-	

-	// ------------------------------------------------------------------------

-	// Methods

-	// ------------------------------------------------------------------------

-	

-    /**

-     * Method buttonPressed.

-     * @param buttonId int

-     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)

-     */

-	@Override

-	protected void buttonPressed(int buttonId) {

-		if (buttonId == IDialogConstants.OK_ID) {

-			this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_WAIT));

-			//Validate Name

-			String validateResult = validateEmptyInput(fGroupNameInputTextField);

-			if (null != validateResult) {

-				//Validate of input failed

-				final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "No input given for Group Name",

-						new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

-				dialog.open();

-				this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

-				return;

-			} 

-

-			//Validate Folder

-			validateResult = validateInput(fGroupFolderInputTextField);

-			if (null != validateResult) {

-				//Validate of input failed

-				final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "Invalid input folder",

-						new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

-				dialog.open();

-				this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

-				return;

-			}

-

-			validateResult = validateGroupExists(fGroupFolderInputTextField);

-			if (null != validateResult) {

-				//Validate of input failed

-				final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "Invalid input folder",

-						new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

-				dialog.open();

-				this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

-				return;

-			} 

-

-			//Validate Description

-			validateResult = validateEmptyInput(fGroupDescriptionInputTextField);

-			if (null != validateResult) {

-				//Validate of input failed

-				final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_WARNING, "No input given for Group Description",

-						new Status(IStatus.WARNING, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.WARNING);

-				dialog.open();

-			}

-			fGroupNameValue = fGroupNameInputTextField.getText();

-			fGroupFolderValue = fGroupFolderInputTextField.getText();

-			fGroupDescriptionValue = fGroupDescriptionInputTextField.getText();

-		} else {

-			fGroupNameValue = null;

-			fGroupFolderValue = null;

-			fGroupDescriptionValue = null;

-		}

-		this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

-		super.buttonPressed(buttonId);

-	}

-

-    /**

-     * Method configureShell.

-     * @param shell Shell

-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)

-     */

-    @Override

-	protected void configureShell(Shell shell) {

-        super.configureShell(shell);

-        if (null != fTitle) {

-			shell.setText(fTitle);

-		}

-    }

-    

-    /**

-     * Method createDialogArea.

-     * @param parent Composite

-     * @return Control

-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)

-     */

-    @Override

-	protected Control createDialogArea(Composite parent) {

-        

-    	// create composite

-        final Composite composite = (Composite) super.createDialogArea(parent);

-        

-        // create Group Name message label

-        if (null != fGroupNameMessage) {

-            final Label label = new Label(composite, SWT.WRAP);

-            label.setText(fGroupNameMessage);

-            final GridData groupNameLabelData = new GridData(GridData.FILL, GridData.FILL, true, false);

-            groupNameLabelData.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);

-            label.setLayoutData(groupNameLabelData);

-            label.setFont(parent.getFont());

-        }

-        

-        //create Group Name input text field

-        fGroupNameInputTextField = new Text(composite, getInputTextStyle());

-        fGroupNameInputTextField.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));

-        

-        // create Group Folder input composite

-        final Composite folderComposite = new Composite(composite, SWT.NONE);

-		final GridLayout layout = new GridLayout(NUM_COLUMNS_FOLDER_INPUT_COMPOSITE, false);

-		folderComposite.setLayout(layout);

-		folderComposite.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));

-		

-        // create Group Folder message label

-        if (null != fGroupFolderMessage) {

-            final Label label = new Label(folderComposite, SWT.WRAP);

-            label.setText(fGroupFolderMessage);

-            final GridData reviewFolderLabelData = new GridData(GridData.FILL, GridData.END, true, false);

-            reviewFolderLabelData.horizontalSpan = NUM_COLUMNS_FOLDER_INPUT_COMPOSITE;

-            label.setLayoutData(reviewFolderLabelData);

-            label.setFont(parent.getFont());

-        }

-        

-        // create Group Folder text field and button

-        fGroupFolderInputTextField = new Text(folderComposite, getInputTextStyle());

-        fGroupFolderInputTextField.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false));

-        fGroupFolderInputButton = new Button(folderComposite, SWT.NONE);

-        fGroupFolderInputButton.setImage(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER).createImage()); // $codepro.audit.disable methodChainLength

-        fGroupFolderInputButton.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false));

-        fGroupFolderInputButton.addSelectionListener(new SelectionAdapter() { // $codepro.audit.disable com.instantiations.assist.eclipse.analysis.avoidInnerClasses

-			@SuppressWarnings("synthetic-access")

-			@Override

-			public void widgetSelected(SelectionEvent event) {

-				fGroupFolderInputTextField.setText(folderButtonPressed());

-			}

-		});

-		

-        // create Group Description message label

-        if (null != fGroupDescriptionMessage) {

-            final Label label = new Label(composite, SWT.WRAP);

-            label.setText(fGroupDescriptionMessage);

-            final GridData reviewDescriptionLabelData = new GridData(GridData.FILL, GridData.FILL, true, false);

-            reviewDescriptionLabelData.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);

-            label.setLayoutData(reviewDescriptionLabelData);

-            label.setFont(parent.getFont());

-        }

-        

-        //create Group Description input text field

-        fGroupDescriptionInputTextField = new Text(composite, getInputTextStyle() | SWT.V_SCROLL);

-        fGroupDescriptionInputTextField.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));

-        composite.getShell().setMinimumSize(convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH), 

-        		convertHorizontalDLUsToPixels(MINIMUM_DIALOG_AREA_HEIGHT));

-        

-        applyDialogFont(composite);

-        return composite;

-    }

-

-    /**

-     * Method folderButtonPressed.

-     * @return String

-     */

-    protected String folderButtonPressed() {

-    	//Open folder dialog

-        final DirectoryDialog dialog = new DirectoryDialog(getShell(), SWT.SHEET);

-        dialog.setMessage("Select Folder...");

-        String dir = dialog.open();

-        if (null != dir) {

-            dir = dir.trim();

-            if (0 == dir.length()) {

-				return null;

-			}

-        }

-        return dir;

-    }

-

-    /**

-     * Method createButtonsForButtonBar.

-     * @param parent Composite

-     * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)

-    */

-    @Override

-	protected void createButtonsForButtonBar(Composite parent) {

-        // create OK and Cancel buttons by default

-    	fOKButton = createButton(parent, IDialogConstants.OK_ID,

-                IDialogConstants.OK_LABEL, true);

-        createButton(parent, IDialogConstants.CANCEL_ID,

-                IDialogConstants.CANCEL_LABEL, false);

-        //do this here because setting the text will set enablement on the ok button

-        fGroupNameInputTextField.setFocus();

-        if (null != fGroupNameValue) {

-        	fGroupNameInputTextField.setText(fGroupNameValue);

-        	fGroupNameInputTextField.selectAll();

-        }

-    }

-    

-	/**

-	 * Returns the style bits that should be used for the input text field.

-	 * Defaults to a single line entry. Subclasses may override.

-	 * @since 3.4

-	 * @return the integer style bits that should be used when creating the input text

-	 */

-	protected int getInputTextStyle() {

-		return SWT.MULTI | SWT.WRAP ;

-	}

-    

-	/**

-	 * Method isResizable.

-	 * @return boolean

-	 * @see org.eclipse.jface.dialogs.Dialog#isResizable()

-	 */

-	@Override

-	protected boolean isResizable() {

-		return true;

-	}

-	

-    /**

-     * Returns the ok button.

-     * @return the ok button

-     */

-    protected Button getOkButton() {

-        return fOKButton;

-    }

-    

-    /**

-     * Returns the text area.

-     * @return the group name text area

-     */

-    protected Text getGroupNameText() {

-        return fGroupNameInputTextField;

-    }

-    

-    /**

-     * Returns the string typed into this input dialog.

-     * @return the group name input string

-     */

-    public String getGroupNameValue() {

-        return fGroupNameValue;

-    }

-    

-    /**

-     * Returns the text area.

-     * @return the group folder text area

-     */

-    protected Text getGroupFolderText() {

-        return fGroupNameInputTextField;

-    }

-    

-    /**

-     * Returns the string typed into this input dialog.

-     * @return the group folder input string

-     */

-    public String getGroupFolderValue() {

-        return fGroupFolderValue;

-    }

-    

-    /**

-     * Returns the text area.

-     * @return the group description text area

-     */

-    protected Text getGroupDescriptionText() {

-        return fGroupDescriptionInputTextField;

-    }

-    

-    /**

-     * Returns the string typed into this input dialog.

-     * @return the group description input string

-     */

-    public String getGroupDescriptionValue() {

-        return fGroupDescriptionValue;

-    }

-    

-    /**

-     * Validates the input.

-     * <p>

-     * The default implementation of this framework method delegates the request

-     * to the supplied input validator object; if it finds the input invalid,

-     * the error message is displayed in the dialog's message line. This hook

-     * method is called whenever the text changes in the input field.

-     * </p>

-     * @param aText Text

-     * @return String

-     */

-    protected String validateInput(Text aText) {

-        if (null != fValidator) {

-            return fValidator.isValid(aText.getText());

-        }

-        return null;

-    }

-    

-    /**

-     * Method validateGroupExists.

-     * @param aText Text

-     * @return String

-     */

-    private String validateGroupExists(Text aText) {

-        if (null != fValidator) {

-            return ((FolderInputValidator) fValidator).isGroupExists(aText.getText());

-        }

-        return null;

-    }

-    

-    /**

-     * Method validateEmptyInput.

-     * @param aText Text

-     * @return String

-     */

-    private String validateEmptyInput(Text aText) {

-        if (null != fValidator) {

-            return ((FolderInputValidator) fValidator).isEmpty(aText.getText());

-        }

-        return null;

-    }

-}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EReviewInputDialog.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EReviewInputDialog.java
deleted file mode 100644
index 1a5d4b5..0000000
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/R4EReviewInputDialog.java
+++ /dev/null
@@ -1,321 +0,0 @@
-// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.constructorsOnlyInvokeFinalMethods, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.disallowReturnMutable, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, explicitThisUsage

-/*******************************************************************************

- * Copyright (c) 2010 Ericsson Research Canada

- * 

- * All rights reserved. This program and the accompanying materials are

- * made available under the terms of the Eclipse Public License v1.0 which

- * accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Description:

- * 

- * This class implements the dialog used to fill-in the Review element details

- * This is a modal dialog

- * 

- * Contributors:

- *   Sebastien Dubois - Created for Mylyn Review R4E project

- *   

- ******************************************************************************/

-

-package org.eclipse.mylyn.reviews.r4e.ui.dialogs;

-

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.Status;

-import org.eclipse.jface.dialogs.Dialog;

-import org.eclipse.jface.dialogs.ErrorDialog;

-import org.eclipse.jface.dialogs.IDialogConstants;

-import org.eclipse.jface.dialogs.IInputValidator;

-import org.eclipse.mylyn.reviews.r4e.ui.Activator;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.layout.GridData;

-import org.eclipse.swt.widgets.Button;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Control;

-import org.eclipse.swt.widgets.Label;

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.swt.widgets.Text;

-

-/**

- * @author lmcdubo

- * @version $Revision: 1.0 $

- */

-public class R4EReviewInputDialog extends Dialog {

-

-	// ------------------------------------------------------------------------

-	// Constants

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Field MINIMUM_DIALOG_AREA_HEIGHT.

-	 * (value is 150)

-	 */

-	private static final int MINIMUM_DIALOG_AREA_HEIGHT = 150;

-

-	

-	// ------------------------------------------------------------------------

-	// Member variables

-	// ------------------------------------------------------------------------

-	

-	 /**

-     * The title of the dialog.

-     */

-    private final String fTitle;

-

-    /**

-     * The message to display, or <code>null</code> if none.

-     */

-    private final String fReviewNameMessage;

-    

-    /**

-     * The input value; the empty string by default.

-     */

-    private String fReviewNameValue = "";

-    

-    /**

-     * Input text widget.

-     */

-    private Text fReviewNameInputTextField;

-    

-	/**

-	 * Field fReviewDescriptionMessage.

-	 */

-	private String fReviewDescriptionMessage = null;

-	

-	/**

-	 * Field fReviewDescriptionValue.

-	 */

-	private String fReviewDescriptionValue = "";

-	

-	/**

-	 * Field fReviewDescriptionInputTextField.

-	 */

-	private Text fReviewDescriptionInputTextField = null;

-

-    /**

-     * Ok button widget.

-     */

-    private Button fOKButton;

-    

-    /**

-     * The input validator, or <code>null</code> if none.

-     */

-    private final IInputValidator fValidator;

-    

-    

-	// ------------------------------------------------------------------------

-	// Constructors

-	// ------------------------------------------------------------------------

-    

-	/**

-	 * Constructor for R4EReviewInputDialog.

-	 * @param aParentShell Shell

-	 * @param aDialogTitle String

-	 * @param aReviewNameMessage String

-	 * @param aReviewDescriptionMessage String

-	 */

-	public R4EReviewInputDialog(Shell aParentShell, String aDialogTitle, String aReviewNameMessage, 

-			String aReviewDescriptionMessage) {

-		super(aParentShell);

-    	setBlockOnOpen(true);

-		fTitle = aDialogTitle;

-		fReviewNameMessage = aReviewNameMessage;

-		fReviewDescriptionMessage = aReviewDescriptionMessage;

-		fValidator = new EmptyInputValidator();

-	}

-	

-	

-	// ------------------------------------------------------------------------

-	// Methods

-	// ------------------------------------------------------------------------

-	

-    /**

-     * Method buttonPressed.

-     * @param buttonId int

-     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)

-     */

-    @Override

-	protected void buttonPressed(int buttonId) {

-        if (buttonId == IDialogConstants.OK_ID) {

-	    	this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_WAIT));

-

-        	//Validate Review Name

-        	String validateResult = validateEmptyInput(fReviewNameInputTextField);

-        	if (null != validateResult) {

-        		//Validation of input failed

-    			final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "No input given for Review Name",

-        				new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

-    			dialog.open();

-    			this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

-    			return;

-        	}

-        	fReviewNameValue = fReviewNameInputTextField.getText();

-        	

-        	//Validate Review Description

-        	validateResult = validateEmptyInput(fReviewNameInputTextField);

-        	if (null != validateResult) {

-        		//Validation of input failed

-        		final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "No input given for Review Description",

-        			new Status(IStatus.WARNING, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.WARNING);

-        		dialog.open();

-        	}

-        	fReviewDescriptionValue = fReviewDescriptionInputTextField.getText();

-        } else {

-        	fReviewNameValue = null;

-        	fReviewDescriptionValue = null;

-        }

-		this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

-        super.buttonPressed(buttonId);

-    }

-    

-    /**

-     * Method configureShell.

-     * @param shell Shell

-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)

-     */

-    @Override

-	protected void configureShell(Shell shell) {

-        super.configureShell(shell);

-        if (null != fTitle) {

-			shell.setText(fTitle);

-		}

-    }

-    

-    /**

-     * Method createDialogArea.

-     * @param parent Composite

-     * @return Control

-     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)

-     */

-    @Override

-	protected Control createDialogArea(Composite parent) {

-        

-    	// create composite

-        final Composite composite = (Composite) super.createDialogArea(parent);

-        

-        // create Review Name message label

-        if (null != fReviewNameMessage) {

-            final Label label = new Label(composite, SWT.WRAP);

-            label.setText(fReviewNameMessage);

-            final GridData reviewNameLabelData = new GridData(GridData.FILL, GridData.FILL, true, false);

-            reviewNameLabelData.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);

-            label.setLayoutData(reviewNameLabelData);

-            label.setFont(parent.getFont());

-        }

-        

-        //create Review Name input text field

-        fReviewNameInputTextField = new Text(composite, getInputTextStyle());

-        fReviewNameInputTextField.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));

-        

-        // create Review Description message label

-        if (null != fReviewDescriptionMessage) {

-            final Label label = new Label(composite, SWT.WRAP);

-            label.setText(fReviewDescriptionMessage);

-            final GridData reviewDescriptionLabelData = new GridData(GridData.FILL, GridData.FILL, true, false);

-            reviewDescriptionLabelData.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);

-            label.setLayoutData(reviewDescriptionLabelData);

-            label.setFont(parent.getFont());

-        }

-        

-        //create Review Description input text field

-        fReviewDescriptionInputTextField = new Text(composite, getInputTextStyle() | SWT.V_SCROLL);

-        fReviewDescriptionInputTextField.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));

-        composite.getShell().setMinimumSize(convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH), 

-        		convertHorizontalDLUsToPixels(MINIMUM_DIALOG_AREA_HEIGHT));

-        

-        applyDialogFont(composite);

-        return composite;

-    }

-

-    /**

-     * Method createButtonsForButtonBar.

-     * @param parent Composite

-     * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)

-     */

-    @Override

-	protected void createButtonsForButtonBar(Composite parent) {

-        // create OK and Cancel buttons by default

-    	fOKButton = createButton(parent, IDialogConstants.OK_ID,

-                IDialogConstants.OK_LABEL, true);

-        createButton(parent, IDialogConstants.CANCEL_ID,

-                IDialogConstants.CANCEL_LABEL, false);

-        //do this here because setting the text will set enablement on the ok button

-        fReviewNameInputTextField.setFocus();

-        if (null != fReviewNameValue) {

-        	fReviewNameInputTextField.setText(fReviewNameValue);

-        	fReviewNameInputTextField.selectAll();

-        }

-    }

-    

-	/**

-	 * Returns the style bits that should be used for the input text field.

-	 * Defaults to a single line entry. Subclasses may override.

-	 * @since 3.4

-	 * @return the integer style bits that should be used when creating the input text

-	 */

-	protected int getInputTextStyle() {

-		return SWT.MULTI | SWT.WRAP ;

-	}

-    

-	/**

-	 * Method isResizable.

-	 * @return boolean

-	 * @see org.eclipse.jface.dialogs.Dialog#isResizable()

-	 */

-	@Override

-	protected boolean isResizable() {

-		return true;

-	}

-	

-    /**

-     * Returns the ok button.

-     * @return the ok button

-     */

-    protected Button getOkButton() {

-        return fOKButton;

-    }

-    

-    /**

-     * Returns the text area.

-     * @return the review name text area

-     */

-    protected Text getReviewNameText() {

-        return fReviewNameInputTextField;

-    }

-    

-    /**

-     * Returns the string typed into this input dialog.

-     * @return the review name input string

-     */

-    public String getReviewNameValue() {

-        return fReviewNameValue;

-    }

-    

-    /**

-     * Returns the text area.

-     * @return the review description text area

-     */

-    protected Text getReviewDescriptionText() {

-        return fReviewDescriptionInputTextField;

-    }

-    

-    /**

-     * Returns the string typed into this input dialog.

-     * @return the review description input string

-     */

-    public String getReviewDescriptionValue() {

-        return fReviewDescriptionValue;

-    }

-    

-    /**

-     * Method validateEmptyInput.

-     * @param aText Text

-     * @return String

-     */

-    private String validateEmptyInput(Text aText) {

-        if (null != fValidator) {

-            return ((EmptyInputValidator) fValidator).isValid(aText.getText());

-        }

-        return null;

-    }

-}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/ReviewGroupInputDialog.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/ReviewGroupInputDialog.java
new file mode 100644
index 0000000..c17e296
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/ReviewGroupInputDialog.java
@@ -0,0 +1,549 @@
+// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.constructorsOnlyInvokeFinalMethods, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.disallowReturnMutable, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, explicitThisUsage

+/*******************************************************************************

+ * Copyright (c) 2010 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the dialog used to fill-in the Review Group element 

+ * details.  This is a modal dialog

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.dialogs;

+

+import java.util.ArrayList;

+

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.core.runtime.Status;

+import org.eclipse.jface.dialogs.ErrorDialog;

+import org.eclipse.jface.dialogs.IDialogConstants;

+import org.eclipse.jface.dialogs.IInputValidator;

+import org.eclipse.mylyn.reviews.r4e.ui.Activator;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.EditableListWidget;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.events.SelectionAdapter;

+import org.eclipse.swt.events.SelectionEvent;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Button;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.DirectoryDialog;

+import org.eclipse.swt.widgets.Item;

+import org.eclipse.swt.widgets.Label;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.ISharedImages;

+import org.eclipse.ui.PlatformUI;

+import org.eclipse.ui.forms.FormDialog;

+import org.eclipse.ui.forms.IManagedForm;

+import org.eclipse.ui.forms.events.ExpansionAdapter;

+import org.eclipse.ui.forms.events.ExpansionEvent;

+import org.eclipse.ui.forms.widgets.ExpandableComposite;

+import org.eclipse.ui.forms.widgets.FormToolkit;

+import org.eclipse.ui.forms.widgets.ScrolledForm;

+import org.eclipse.ui.forms.widgets.Section;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class ReviewGroupInputDialog extends FormDialog {

+

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

+

+	/**

+	 * Field ADD_REVIEW_GROUP_DIALOG_TITLE.

+	 * (value is ""Enter Review Group details"")

+	 */

+	private static final String ADD_REVIEW_GROUP_DIALOG_TITLE = "Enter Review Group Details";

+	

+	/**

+	 * Field ADD_REVIEW_GROUP_NAME_DIALOG_VALUE.

+	 * (value is ""Enter the Review Group Name:"")

+	 */

+	private static final String ADD_REVIEW_GROUP_NAME_DIALOG_VALUE = "Group Name:";

+	

+	/**

+	 * Field ADD_REVIEW_GROUP_FOLDER_DIALOG_VALUE.

+	 * (value is ""Enter the Review Group Folder:"")

+	 */

+	private static final String ADD_REVIEW_GROUP_FOLDER_DIALOG_VALUE = "Group Folder:";

+	

+	/**

+	 * Field ADD_REVIEW_GROUP_DESCRIPTION_DIALOG_VALUE.

+	 * (value is ""Enter the Review Group Description:"")

+	 */

+	private static final String ADD_REVIEW_GROUP_DESCRIPTION_DIALOG_VALUE = "Group Description:";

+	

+	/**

+	 * Field ADD_REVIEW_GROUP_AVAILABLE_PROJECTS_DIALOG_VALUE.

+	 * (value is ""Available Projects:"")

+	 */

+	private static final String ADD_REVIEW_GROUP_AVAILABLE_PROJECTS_DIALOG_VALUE = "Available Projects:";

+	

+	/**

+	 * Field ADD_REVIEW_GROUP_AVAILABLE_COMPONENTS_DIALOG_VALUE.

+	 * (value is ""Available Components:"")

+	 */

+	private static final String ADD_REVIEW_GROUP_AVAILABLE_COMPONENTS_DIALOG_VALUE = "Available Components:";

+	

+	/**

+	 * Field ADD_REVIEW_GROUP_ENTRY_CRITERIA_DIALOG_VALUE.

+	 * (value is ""Default Entry Criteria:"")

+	 */

+	private static final String ADD_REVIEW_GROUP_ENTRY_CRITERIA_DIALOG_VALUE = "Default Entry Criteria:";

+	

+	/**

+	 * Field BASIC_PARAMS_HEADER_MSG.

+	 * (value is ""Enter the mandatory basic parameters for this Review Group"")

+	 */

+	private static final String BASIC_PARAMS_HEADER_MSG = "Enter the mandatory basic parameters for this Review Group";

+	

+	/**

+	 * Field EXTRA_PARAMS_HEADER_MSG.

+	 * (value is ""Enter the optional extra parameters for this Review Group"")

+	 */

+	private static final String EXTRA_PARAMS_HEADER_MSG = "Enter the optional extra parameters for this Review Group";

+	

+	

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+    

+    /**

+     * The input value; the empty string by default.

+     */

+    private String fGroupNameValue = "";

+    

+    /**

+     * Input text widget.

+     */

+    private Text fGroupNameInputTextField;

+	

+	/**

+	 * Field fGroupFolderValue.

+	 */

+	private String fGroupFolderValue = "";

+	

+	/**

+	 * Field fGroupFolderInputTextField.

+	 */

+	private Text fGroupFolderInputTextField = null;

+	

+	/**

+	 * Field fGroupDescriptionValue.

+	 */

+	private String fGroupDescriptionValue = "";

+	

+	/**

+	 * Field fGroupDescriptionInputTextField.

+	 */

+	private Text fGroupDescriptionInputTextField = null;

+

+	/**

+	 * Field fAvailableProjectsValues.

+	 */

+	private String[] fAvailableProjectsValues = null;

+	

+	/**

+	 * Field fAvailableProjects.

+	 */

+	private EditableListWidget fAvailableProjects = null;

+	

+	/**

+	 * Field fAvailableComponentsValues.

+	 */

+	private String[] fAvailableComponentsValues = null;

+	

+	/**

+	 * Field fAvailableComponents.

+	 */

+	private EditableListWidget fAvailableComponents = null;

+	

+	/**

+	 * Field fDefaultEntryCriteriaValue.

+	 */

+	private String fDefaultEntryCriteriaValue = "";

+	

+	/**

+	 * Field fDefaultEntryCriteriaTextField.

+	 */

+	private Text fDefaultEntryCriteriaTextField = null;

+    

+    /**

+     * The input validator, or <code>null</code> if none.

+     */

+    private final IInputValidator fValidator;

+    

+

+    

+	// ------------------------------------------------------------------------

+	// Constructors

+	// ------------------------------------------------------------------------

+    

+	/**

+	 * Constructor for R4EReviewGroupInputDialog.

+	 * @param aParentShell Shell

+	 */

+	public ReviewGroupInputDialog(Shell aParentShell) {

+		super(aParentShell);

+    	setBlockOnOpen(true);

+		fValidator = new R4EInputValidator();

+	}

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+    /**

+     * Method buttonPressed.

+     * @param buttonId int

+     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)

+     */

+	@Override

+	protected void buttonPressed(int buttonId) {

+		if (buttonId == IDialogConstants.OK_ID) {

+			this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_WAIT));

+			//Validate Name

+			String validateResult = validateEmptyInput(fGroupNameInputTextField);

+			if (null != validateResult) {

+				//Validate of input failed

+				final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "No input given for Group Name",

+						new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

+				dialog.open();

+				this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

+				return;

+			} 

+

+			//Validate Folder

+			validateResult = validateFolderInput(fGroupFolderInputTextField);

+			if (null != validateResult) {

+				//Validate of input failed

+				final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "Invalid input folder",

+						new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

+				dialog.open();

+				this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

+				return;

+			}

+

+			validateResult = validateGroupExists(fGroupFolderInputTextField);

+			if (null != validateResult) {

+				//Validate of input failed

+				final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "Invalid input folder",

+						new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

+				dialog.open();

+				this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

+				return;

+			} 

+

+			//Validate Description

+			validateResult = validateEmptyInput(fGroupDescriptionInputTextField);

+			if (null != validateResult) {

+				//Validate of input failed

+				final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_WARNING, "No input given for Group Description",

+						new Status(IStatus.WARNING, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.WARNING);

+				dialog.open();

+			}

+			

+        	//Validate Projects (optional)

+        	final ArrayList<String> projectsValues = new ArrayList<String>();

+			for (Item item : fAvailableProjects.getItems()) {	

+	        	validateResult = validateEmptyInput(item.getText());

+	        	if (null == validateResult) {

+	        		projectsValues.add(item.getText());

+	        	}

+			}

+        	fAvailableProjectsValues = projectsValues.toArray(new String[projectsValues.size()]);

+			

+        	//Validate Components (optional)

+        	final ArrayList<String> componentsValues = new ArrayList<String>();

+			for (Item item : fAvailableComponents.getItems()) {

+	        	validateResult = validateEmptyInput(item.getText());

+	        	if (null == validateResult) {

+	        		componentsValues.add(item.getText());

+	        	}

+			}

+        	fAvailableComponentsValues = componentsValues.toArray(new String[componentsValues.size()]);

+        	

+        	//Validate Entry Criteria (optional)

+        	validateResult = validateEmptyInput(fDefaultEntryCriteriaTextField);

+        	if (null == validateResult) {

+        		fDefaultEntryCriteriaValue = fDefaultEntryCriteriaTextField.getText();

+        	}

+        	

+			fGroupNameValue = fGroupNameInputTextField.getText();

+			fGroupFolderValue = fGroupFolderInputTextField.getText();

+			fGroupDescriptionValue = fGroupDescriptionInputTextField.getText();

+		} else {

+			fGroupNameValue = null;

+			fGroupFolderValue = null;

+			fGroupDescriptionValue = null;

+			fDefaultEntryCriteriaValue = null;

+		}

+		this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

+		super.buttonPressed(buttonId);

+	}

+

+    /**

+     * Method configureShell.

+     * @param shell Shell

+     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)

+     */

+    @Override

+	protected void configureShell(Shell shell) {

+        super.configureShell(shell);

+			shell.setText(ADD_REVIEW_GROUP_DIALOG_TITLE);

+    }

+    

+	/**

+	 * Configures the dialog form and creates form content. Clients should

+	 * override this method.

+	 * 

+	 * @param mform

+	 *            the dialog form

+	 */

+	@Override

+	protected void createFormContent(final IManagedForm mform) {

+

+		final FormToolkit toolkit = mform.getToolkit();

+		final ScrolledForm sform = mform.getForm();

+		sform.setExpandVertical(true);

+		final Composite composite = sform.getBody();

+		final GridLayout layout = new GridLayout(4, false);

+		composite.setLayout(layout);

+		

+        //Grid data values

+        final GridData labelData = new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false);

+        final GridData textSingleData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        textSingleData.horizontalSpan = 3;

+        final GridData textMultiData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        textMultiData.horizontalSpan = 3;

+        final GridData buttonData = new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false);

+        buttonData.horizontalSpan = 1;

+        

+		//Basic parameters section

+        final Section basicSection = toolkit.createSection(composite, Section.DESCRIPTION | ExpandableComposite.TITLE_BAR |

+        		  ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);

+        final GridData basicSectionGridData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        basicSectionGridData.horizontalSpan = 4;

+        basicSection.setLayoutData(basicSectionGridData);

+        basicSection.setText(R4EUIConstants.BASIC_PARAMS_HEADER);

+        basicSection.setDescription(BASIC_PARAMS_HEADER_MSG);

+        basicSection.addExpansionListener(new ExpansionAdapter()

+		{

+			@Override

+			public void expansionStateChanged(ExpansionEvent e){

+				getShell().setSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));

+				sform.reflow(true);

+			}

+		});

+        

+        final Composite basicSectionClient = toolkit.createComposite(basicSection);

+        basicSectionClient.setLayout(layout);

+        basicSection.setClient(basicSectionClient);

+        

+        //Review Group Name

+        Label label = toolkit.createLabel(basicSectionClient, ADD_REVIEW_GROUP_NAME_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fGroupNameInputTextField = toolkit.createText(basicSectionClient, "", SWT.SINGLE);

+        fGroupNameInputTextField.setLayoutData(textSingleData);

+        

+        //Group Folder

+        label = toolkit.createLabel(basicSectionClient, ADD_REVIEW_GROUP_FOLDER_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fGroupFolderInputTextField = toolkit.createText(basicSectionClient, "", SWT.SINGLE);

+        final GridData folderTextData = new GridData(GridData.FILL, GridData.BEGINNING, true, false);

+        folderTextData.horizontalSpan = 2;

+        fGroupFolderInputTextField.setLayoutData(folderTextData);

+        final Button folderButton = toolkit.createButton(basicSectionClient, "", SWT.NONE);

+        folderButton.setImage(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER).createImage()); // $codepro.audit.disable methodChainLength

+        folderButton.setLayoutData(buttonData);

+        folderButton.addSelectionListener(new SelectionAdapter() { // $codepro.audit.disable com.instantiations.assist.eclipse.analysis.avoidInnerClasses

+			@SuppressWarnings("synthetic-access")

+			@Override

+			public void widgetSelected(SelectionEvent event) {

+				final String result = folderButtonPressed();

+				if (null == result) {

+					fGroupFolderInputTextField.setText("");

+				}

+				else {

+					fGroupFolderInputTextField.setText(result);

+				}

+			}

+		});

+        

+        //Group Description

+        label = toolkit.createLabel(basicSectionClient, ADD_REVIEW_GROUP_DESCRIPTION_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fGroupDescriptionInputTextField = toolkit.createText(basicSectionClient, "", SWT.MULTI | SWT.V_SCROLL);

+        textMultiData.heightHint = fGroupNameInputTextField.getLineHeight() * 3;

+        fGroupDescriptionInputTextField.setLayoutData(textMultiData);

+        

+        //Extra parameters section

+        final Section extraSection = toolkit.createSection(composite, Section.DESCRIPTION | ExpandableComposite.TITLE_BAR |

+        		  ExpandableComposite.TWISTIE);

+        final GridData extraSectionGridData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        extraSectionGridData.horizontalSpan = 4;

+        extraSection.setLayoutData(extraSectionGridData);

+        extraSection.setText(R4EUIConstants.EXTRA_PARAMS_HEADER);

+        extraSection.setDescription(EXTRA_PARAMS_HEADER_MSG);

+        extraSection.addExpansionListener(new ExpansionAdapter()

+		{

+			@Override

+			public void expansionStateChanged(ExpansionEvent e){

+				getShell().setSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));

+				sform.reflow(true);

+			}

+		});

+        

+        final Composite extraSectionClient = toolkit.createComposite(extraSection);

+        extraSectionClient.setLayout(layout);

+        extraSection.setClient(extraSectionClient);

+        

+		//Available Projects

+        label = toolkit.createLabel(extraSectionClient, ADD_REVIEW_GROUP_AVAILABLE_PROJECTS_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fAvailableProjects = new EditableListWidget(toolkit, extraSectionClient, textSingleData, null, 0, Text.class, null);

+        

+		//Available Components

+        label = toolkit.createLabel(extraSectionClient, ADD_REVIEW_GROUP_AVAILABLE_COMPONENTS_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fAvailableComponents = new EditableListWidget(toolkit, extraSectionClient, textSingleData, null, 0, Text.class, null);

+        

+        // Default Entry Criteria

+        label = toolkit.createLabel(extraSectionClient, ADD_REVIEW_GROUP_ENTRY_CRITERIA_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fDefaultEntryCriteriaTextField = toolkit.createText(extraSectionClient, "", SWT.MULTI | SWT.V_SCROLL);

+        fDefaultEntryCriteriaTextField.setLayoutData(textMultiData);

+	}

+	

+    /**

+     * Method folderButtonPressed.

+     * @return String

+     */

+    protected String folderButtonPressed() {

+    	//Open folder dialog

+        final DirectoryDialog dialog = new DirectoryDialog(getShell(), SWT.SHEET);

+        dialog.setMessage("Select Folder...");

+        String dir = dialog.open();

+        if (null != dir) {

+            dir = dir.trim();

+            if (0 == dir.length()) {

+				return null;

+			}

+        }

+        return dir;

+    }

+    

+	/**

+	 * Method isResizable.

+	 * @return boolean

+	 * @see org.eclipse.jface.dialogs.Dialog#isResizable()

+	 */

+	@Override

+	protected boolean isResizable() {

+		return true;

+	}

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the group name input string

+     */

+    public String getGroupNameValue() {

+        return fGroupNameValue;

+    }

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the group folder input string

+     */

+    public String getGroupFolderValue() {

+        return fGroupFolderValue;

+    }

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the group description input string

+     */

+    public String getGroupDescriptionValue() {

+        return fGroupDescriptionValue;

+    }

+    

+    /**

+     * Returns the strings typed into this input dialog.

+     * @return the Available projects input strings

+     */

+    public String[] getAvailableProjectsValues() {

+        return fAvailableProjectsValues;

+    }

+    

+    /**

+     * Returns the strings typed into this input dialog.

+     * @return the Available components input strings

+     */

+    public String[] getAvailableComponentsValues() {

+        return fAvailableComponentsValues;

+    }

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the Default entry criteria input string

+     */

+    public String getDefaultEntryCriteriaValue() {

+        return fDefaultEntryCriteriaValue;

+    }

+    

+    /**

+     * Validates the input.

+     * <p>

+     * The default implementation of this framework method delegates the request

+     * to the supplied input validator object; if it finds the input invalid,

+     * the error message is displayed in the dialog's message line. This hook

+     * method is called whenever the text changes in the input field.

+     * </p>

+     * @param aText Text

+     * @return String

+     */

+    protected String validateFolderInput(Text aText) {

+    	return ((R4EInputValidator) fValidator).isFolderValid(aText.getText());

+    }

+    

+    /**

+     * Method validateGroupExists.

+     * @param aText Text

+     * @return String

+     */

+    private String validateGroupExists(Text aText) {

+    	return ((R4EInputValidator) fValidator).isFileExists(aText.getText());

+    }

+    

+    /**

+     * Method validateEmptyInput.

+     * @param aText Text

+     * @return String

+     */

+    private String validateEmptyInput(Text aText) {

+        return fValidator.isValid(aText.getText());

+    }

+    

+    /**

+     * Method validateEmptyInput.

+     * @param aString String

+     * @return String

+     */

+    private String validateEmptyInput(String aString) {

+    	return fValidator.isValid(aString);

+    }

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/ReviewInputDialog.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/ReviewInputDialog.java
new file mode 100644
index 0000000..6029980
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/dialogs/ReviewInputDialog.java
@@ -0,0 +1,562 @@
+// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.constructorsOnlyInvokeFinalMethods, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.disallowReturnMutable, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, explicitThisUsage

+/*******************************************************************************

+ * Copyright (c) 2010 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the dialog used to fill-in the Review element details

+ * This is a modal dialog

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.dialogs;

+

+import java.util.ArrayList;

+

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.core.runtime.Status;

+import org.eclipse.jface.dialogs.ErrorDialog;

+import org.eclipse.jface.dialogs.IDialogConstants;

+import org.eclipse.jface.dialogs.IInputValidator;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewType;

+import org.eclipse.mylyn.reviews.r4e.ui.Activator;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReviewGroup;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.EditableListWidget;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.CCombo;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Item;

+import org.eclipse.swt.widgets.Label;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.forms.FormDialog;

+import org.eclipse.ui.forms.IManagedForm;

+import org.eclipse.ui.forms.events.ExpansionAdapter;

+import org.eclipse.ui.forms.events.ExpansionEvent;

+import org.eclipse.ui.forms.widgets.ExpandableComposite;

+import org.eclipse.ui.forms.widgets.FormToolkit;

+import org.eclipse.ui.forms.widgets.ScrolledForm;

+import org.eclipse.ui.forms.widgets.Section;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class ReviewInputDialog extends FormDialog {

+

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field ADD_REVIEW_DIALOG_TITLE.

+	 * (value is ""Enter Review details"")

+	 */

+	private static final String ADD_REVIEW_DIALOG_TITLE = "Enter Review Details";

+

+	/**

+	 * Field ADD_REVIEW_NAME_DIALOG_VALUE.

+	 * (value is ""Review Name: "")

+	 */

+	private static final String ADD_REVIEW_NAME_DIALOG_VALUE = "Review Name: ";

+	

+	/**

+	 * Field ADD_REVIEW_DESCRIPTION_DIALOG_VALUE.

+	 * (value is ""Review Description: "")

+	 */

+	private static final String ADD_REVIEW_DESCRIPTION_DIALOG_VALUE = "Review Description: ";

+	

+	/**

+	 * Field BASIC_PARAMS_HEADER_MSG.

+	 * (value is ""Enter the mandatory basic parameters for this Review Group"")

+	 */

+	private static final String BASIC_PARAMS_HEADER_MSG = "Enter the mandatory basic parameters for this Review";

+	

+	/**

+	 * Field EXTRA_PARAMS_HEADER_MSG.

+	 * (value is ""Enter the optional extra parameters for this Review Group"")

+	 */

+	private static final String EXTRA_PARAMS_HEADER_MSG = "Enter the optional extra parameters for this Review";

+	

+	/**

+	 * Field ADD_REVIEW_GROUP_PROJECT_DIALOG_VALUE.

+	 * (value is ""Available Projects:"")

+	 */

+	private static final String ADD_REVIEW_PROJECT_DIALOG_VALUE = "Project:";

+	

+	/**

+	 * Field ADD_REVIEW_GROUP_COMPONENTS_DIALOG_VALUE.

+	 * (value is ""Available Components:"")

+	 */

+	private static final String ADD_REVIEW_COMPONENTS_DIALOG_VALUE = "Components:";

+	

+	/**

+	 * Field ADD_REVIEW_GROUP_ENTRY_CRITERIA_DIALOG_VALUE.

+	 * (value is ""Default Entry Criteria:"")

+	 */

+	private static final String ADD_REVIEW_ENTRY_CRITERIA_DIALOG_VALUE = "Entry Criteria:";

+	

+	/**

+	 * Field ADD_REVIEW_GROUP_ENTRY_CRITERIA_DIALOG_VALUE.

+	 * (value is ""Default Entry Criteria:"")

+	 */

+	private static final String ADD_REVIEW_OBJECTIVES_DIALOG_VALUE = "Objectives:";

+	

+	/**

+	 * Field ADD_REVIEW_GROUP_ENTRY_CRITERIA_DIALOG_VALUE.

+	 * (value is ""Default Entry Criteria:"")

+	 */

+	private static final String ADD_REVIEW_REFERENCE_MATERIAL_DIALOG_VALUE = "Reference Material:";

+	

+	/**

+	 * Field REVIEW_TYPES.

+	 */

+	private static final String[] REVIEW_TYPES = { R4EUIConstants.REVIEW_TYPE_BASIC, 

+		R4EUIConstants.REVIEW_TYPE_INFORMAL, R4EUIConstants.REVIEW_TYPE_FORMAL };

+	

+	

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field fReviewGroup.

+	 */

+	protected final R4EUIReviewGroup fReviewGroup;

+	

+	/**

+	 * Field fReviewType.

+	 */

+	private CCombo fReviewType = null;

+	

+	/**

+	 * Field fReviewTypeValue.

+	 */

+	private R4EReviewType fReviewTypeValue;

+	

+    /**

+     * The input value; the empty string by default.

+     */

+    private String fReviewNameValue = "";

+    

+    /**

+     * Input text widget.

+     */

+    Text fReviewNameInputTextField;

+	

+	/**

+	 * Field fReviewDescriptionValue.

+	 */

+	private String fReviewDescriptionValue = "";

+	

+	/**

+	 * Field fReviewDescriptionInputTextField.

+	 */

+	private Text fReviewDescriptionInputTextField = null;

+	

+	/**

+	 * Field fProjectValue.

+	 */

+	private String fProjectValue = "";

+	

+	/**

+	 * Field fProjectTextField.

+	 */

+	private CCombo fProjectsCombo = null;

+	

+	/**

+	 * Field fComponentsValues.

+	 */

+	private String[] fComponentsValues = null;

+	

+	/**

+	 * Field fAvailableComponents.

+	 */

+	private EditableListWidget fComponents = null;

+	

+	/**

+	 * Field fEntryCriteriaValue.

+	 */

+	private String fEntryCriteriaValue = "";

+	

+	/**

+	 * Field fEntryCriteriaTextField.

+	 */

+	private Text fEntryCriteriaTextField = null;

+	

+	/**

+	 * Field fObjectivesValue.

+	 */

+	private String fObjectivesValue = "";

+	

+	/**

+	 * Field fObjectivesTextField.

+	 */

+	private Text fObjectivesTextField = null;

+	

+	/**

+	 * Field fReferenceMaterialValue.

+	 */

+	private String fReferenceMaterialValue = "";

+	

+	/**

+	 * Field fReferenceMaterialTextField.

+	 */

+	private Text fReferenceMaterialTextField = null;

+    

+    /**

+     * The input validator, or <code>null</code> if none.

+     */

+    private final IInputValidator fValidator;

+    

+    

+	// ------------------------------------------------------------------------

+	// Constructors

+	// ------------------------------------------------------------------------

+    

+	/**

+	 * Constructor for R4EReviewInputDialog.

+	 * @param aParentShell Shell

+	 * @param aReviewGroup R4EUIReviewGroup

+	 */

+	public ReviewInputDialog(Shell aParentShell, R4EUIReviewGroup aReviewGroup) {

+		super(aParentShell);

+    	setBlockOnOpen(true);

+    	fReviewGroup = aReviewGroup;

+		fValidator = new R4EInputValidator();

+	}

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+    /**

+     * Method buttonPressed.

+     * @param buttonId int

+     * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)

+     */

+    @Override

+	protected void buttonPressed(int buttonId) {

+        if (buttonId == IDialogConstants.OK_ID) {

+	    	this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_WAIT));

+        	

+	    	//Review type (no validation needed as this is a read-only combo box

+	        if (fReviewType.getText().equals(R4EUIConstants.REVIEW_TYPE_FORMAL)) {

+	        	fReviewTypeValue = R4EReviewType.R4E_REVIEW_TYPE_FORMAL;

+	        }

+	        if (fReviewType.getText().equals(R4EUIConstants.REVIEW_TYPE_INFORMAL)) {

+	        	fReviewTypeValue = R4EReviewType.R4E_REVIEW_TYPE_INFORMAL;

+	        } else {

+	        	fReviewTypeValue = R4EReviewType.R4E_REVIEW_TYPE_BASIC;

+	        }

+	    	

+        	//Validate Review Name

+        	String validateResult = validateEmptyInput(fReviewNameInputTextField);

+        	if (null != validateResult) {

+        		//Validation of input failed

+    			final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "No input given for Review Type",

+        				new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.ERROR);

+    			dialog.open();

+    			this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

+    			return;

+        	}

+        	fReviewNameValue = fReviewNameInputTextField.getText();

+        	

+        	//Validate Review Description

+        	validateResult = validateEmptyInput(fReviewNameInputTextField);

+        	if (null != validateResult) {

+        		//Validation of input failed

+        		final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, "No input given for Review Description",

+        			new Status(IStatus.WARNING, Activator.PLUGIN_ID, 0, validateResult, null), IStatus.WARNING);

+        		dialog.open();

+        	}

+        	fReviewDescriptionValue = fReviewDescriptionInputTextField.getText();

+        	

+        	//Validate Project (optional)

+        	validateResult = validateEmptyInput(fProjectsCombo.getText());

+        	if (null == validateResult) {

+        		fProjectValue = fProjectsCombo.getText();

+        	}

+        	

+        	//Validate Components (optional)

+        	final ArrayList<String> componentsValues = new ArrayList<String>();

+			for (Item item : fComponents.getItems()) {

+	        	validateResult = validateEmptyInput(item.getText());

+	        	if (null == validateResult) {

+	        		componentsValues.add(item.getText());

+	        	}

+			}

+			fComponentsValues = componentsValues.toArray(new String[componentsValues.size()]);

+        	

+        	//Validate Entry Criteria (optional)

+        	validateResult = validateEmptyInput(fEntryCriteriaTextField);

+        	if (null == validateResult) {

+        		fEntryCriteriaValue = fEntryCriteriaTextField.getText();

+        	}

+        	

+        	//Validate Objectives (optional)

+        	validateResult = validateEmptyInput(fObjectivesTextField);

+        	if (null == validateResult) {

+        		fObjectivesValue = fObjectivesTextField.getText();

+        	}

+        	

+        	//Validate ReferenceMaterial (optional)

+        	validateResult = validateEmptyInput(fReferenceMaterialTextField);

+        	if (null == validateResult) {

+        		fReferenceMaterialValue = fReferenceMaterialTextField.getText();

+        	}	

+        } else {

+        	fReviewNameValue = null;

+        	fReviewDescriptionValue = null;

+        	fProjectValue = null;

+        	fEntryCriteriaValue = null;

+        	fObjectivesValue = null;

+        	fReferenceMaterialValue = null;

+        }

+		this.getShell().setCursor(this.getShell().getDisplay().getSystemCursor(SWT.CURSOR_ARROW));

+        super.buttonPressed(buttonId);

+    }

+    

+    /**

+     * Method configureShell.

+     * @param shell Shell

+     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)

+     */

+    @Override

+	protected void configureShell(Shell shell) {

+        super.configureShell(shell);

+        shell.setText(ADD_REVIEW_DIALOG_TITLE);

+    }

+    

+	/**

+	 * Configures the dialog form and creates form content. Clients should

+	 * override this method.

+	 * 

+	 * @param mform

+	 *            the dialog form

+	 */

+	@Override

+	protected void createFormContent(final IManagedForm mform) {

+

+		final FormToolkit toolkit = mform.getToolkit();

+		final ScrolledForm sform = mform.getForm();

+		sform.setExpandVertical(true);

+		final Composite composite = sform.getBody();

+		final GridLayout layout = new GridLayout(4, false);

+		composite.setLayout(layout);

+		

+        //Grid data values

+        final GridData labelData = new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false);

+        final GridData textSingleData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        textSingleData.horizontalSpan = 3;

+        final GridData textMultiData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        textMultiData.horizontalSpan = 3;

+        

+		//Review Type

+        Label label = toolkit.createLabel(composite, "Review Type: ");

+        label.setLayoutData(labelData);

+		fReviewType = new CCombo(composite, SWT.BORDER | SWT.READ_ONLY);

+		fReviewType.setItems(REVIEW_TYPES);

+		fReviewType.select(0);

+		fReviewType.setLayoutData(textSingleData);

+		

+		//Basic parameters section

+        final Section basicSection = toolkit.createSection(composite, Section.DESCRIPTION | ExpandableComposite.TITLE_BAR |

+        		  ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);

+        final GridData basicSectionGridData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        basicSectionGridData.horizontalSpan = 4;

+        basicSection.setLayoutData(basicSectionGridData);

+        basicSection.setText(R4EUIConstants.BASIC_PARAMS_HEADER);

+        basicSection.setDescription(BASIC_PARAMS_HEADER_MSG);

+        basicSection.addExpansionListener(new ExpansionAdapter()

+		{

+			@Override

+			public void expansionStateChanged(ExpansionEvent e){

+				getShell().setSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));

+				sform.reflow(true);

+			}

+		});

+        

+        final Composite basicSectionClient = toolkit.createComposite(basicSection);

+        basicSectionClient.setLayout(layout);

+        basicSection.setClient(basicSectionClient);

+        

+        //Review Name

+        label = toolkit.createLabel(basicSectionClient, ADD_REVIEW_NAME_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fReviewNameInputTextField = toolkit.createText(basicSectionClient, "", SWT.SINGLE);

+        fReviewNameInputTextField.setLayoutData(textSingleData);

+        

+        //Review Description

+        label = toolkit.createLabel(basicSectionClient, ADD_REVIEW_DESCRIPTION_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fReviewDescriptionInputTextField = toolkit.createText(basicSectionClient, "", SWT.MULTI | SWT.V_SCROLL);

+        textMultiData.heightHint = fReviewNameInputTextField.getLineHeight() * 3;

+        fReviewDescriptionInputTextField.setLayoutData(textMultiData);

+              

+        //Extra parameters section

+        final Section extraSection = toolkit.createSection(composite, Section.DESCRIPTION | ExpandableComposite.TITLE_BAR |

+        		  ExpandableComposite.TWISTIE);

+        final GridData extraSectionGridData = new GridData(GridData.FILL, GridData.FILL, true, false);

+        extraSectionGridData.horizontalSpan = 4;

+        extraSection.setLayoutData(extraSectionGridData);

+        extraSection.setText(R4EUIConstants.EXTRA_PARAMS_HEADER);

+        extraSection.setDescription(EXTRA_PARAMS_HEADER_MSG);

+        extraSection.addExpansionListener(new ExpansionAdapter()

+		{

+			@Override

+			public void expansionStateChanged(ExpansionEvent e){

+				getShell().setSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));

+				sform.reflow(true);

+			}

+		});

+        

+        final Composite extraSectionClient = toolkit.createComposite(extraSection);

+        extraSectionClient.setLayout(layout);

+        extraSection.setClient(extraSectionClient);

+

+        //Project

+        label = toolkit.createLabel(extraSectionClient, ADD_REVIEW_PROJECT_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+		fProjectsCombo = new CCombo(extraSectionClient, SWT.BORDER | SWT.READ_ONLY);

+		final String[] projects = (String[]) fReviewGroup.getReviewGroup().getAvailableProjects().toArray();

+		if (0 == projects.length) fProjectsCombo.setEnabled(false);

+		fProjectsCombo.setItems(projects);

+		final GridData data1 = new GridData(GridData.FILL, GridData.FILL, true, false);

+		data1.horizontalSpan = 3;

+		fProjectsCombo.setLayoutData(data1);

+		

+		//Components

+        label = toolkit.createLabel(extraSectionClient, ADD_REVIEW_COMPONENTS_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+		final String[] components = (String[]) fReviewGroup.getReviewGroup().getAvailableComponents().toArray();

+        fComponents = new EditableListWidget(toolkit, extraSectionClient, textSingleData, null, 0, CCombo.class,

+        		components);

+		if (0 == components.length) fComponents.setEnabled(false);

+

+        //Entry Criteria

+        label = toolkit.createLabel(extraSectionClient, ADD_REVIEW_ENTRY_CRITERIA_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fEntryCriteriaTextField = toolkit.createText(extraSectionClient, "", SWT.MULTI | SWT.V_SCROLL);

+        if (null != fReviewGroup.getGroup().getDefaultEntryCriteria()) {

+        	fEntryCriteriaTextField.setText(fReviewGroup.getGroup().getDefaultEntryCriteria());

+        }

+        fEntryCriteriaTextField.setLayoutData(textMultiData);

+

+        //Objectives

+        label = toolkit.createLabel(extraSectionClient, ADD_REVIEW_OBJECTIVES_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fObjectivesTextField = toolkit.createText(extraSectionClient, "", SWT.MULTI | SWT.V_SCROLL);

+        fObjectivesTextField.setLayoutData(textMultiData);

+        

+        //Reference Material

+        label = toolkit.createLabel(extraSectionClient, ADD_REVIEW_REFERENCE_MATERIAL_DIALOG_VALUE);

+        label.setLayoutData(labelData);

+        fReferenceMaterialTextField = toolkit.createText(extraSectionClient, "", SWT.MULTI | SWT.V_SCROLL);

+        fReferenceMaterialTextField.setLayoutData(textMultiData);

+	}

+    

+	/**

+	 * Method isResizable.

+	 * @return boolean

+	 * @see org.eclipse.jface.dialogs.Dialog#isResizable()

+	 */

+	@Override

+	protected boolean isResizable() {

+		return true;

+	}

+    

+    /**

+     * Returns the text area.

+     * @return the review name text area

+     */

+    public R4EReviewType getReviewTypeValue() {

+    	return fReviewTypeValue;

+    }

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the review name input string

+     */

+    public String getReviewNameValue() {

+        return fReviewNameValue;

+    }

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the review description input string

+     */

+    public String getReviewDescriptionValue() {

+        return fReviewDescriptionValue;

+    }

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the project input string

+     */

+    public String getProjectValue() {

+        return fProjectValue;

+    }

+    

+    /**

+     * Returns the strings typed into this input dialog.

+     * @return the components input strings

+     */

+    public String[] getComponentsValues() {

+        return fComponentsValues;

+    }

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the entry criteria input string

+     */

+    public String getEntryCriteriaValue() {

+        return fEntryCriteriaValue;

+    }

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the objectives input string

+     */

+    public String getObjectivesValue() {

+        return fObjectivesValue;

+    }

+    

+    /**

+     * Returns the string typed into this input dialog.

+     * @return the reference material input string

+     */

+    public String getReferenceMaterialValue() {

+        return fReferenceMaterialValue;

+    }

+    

+    /**

+     * Method validateEmptyInput.

+     * @param aText Text

+     * @return String

+     */

+    private String validateEmptyInput(Text aText) {

+        return fValidator.isValid(aText.getText());

+    }

+    

+    /**

+     * Method validateEmptyInput.

+     * @param aString String

+     * @return String

+     */

+    private String validateEmptyInput(String aString) {

+    	return fValidator.isValid(aString);

+    }

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/editors/EditorProxy.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/editors/EditorProxy.java
index 4caf508..6183a2f 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/editors/EditorProxy.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/editors/EditorProxy.java
@@ -44,7 +44,7 @@
 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

 import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

 import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIPosition;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomaly;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyBasic;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIComment;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIFileContext;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReviewItem;

@@ -109,12 +109,12 @@
 				//Also check to get the position we should put the cursor on and the highlight range in the editor

 				/*if (element instanceof R4EUIAnomalyContainer) {

 					targetFileEditable = true;

-				} else */if (element instanceof R4EUIAnomaly) {

+				} else */if (element instanceof R4EUIAnomalyBasic) {

 					//targetFileEditable = true;

-					position = ((R4EUIAnomaly)element).getPosition();

+					position = ((R4EUIAnomalyBasic)element).getPosition();

 				} else if (element instanceof R4EUIComment) {

 					//targetFileEditable = true;

-					position = ((R4EUIAnomaly)element.getParent()).getPosition();

+					position = ((R4EUIAnomalyBasic)element.getParent()).getPosition();

 				} else if (element instanceof R4EUISelection) {

 					position = ((R4EUISelection)element).getPosition();

 					//container = (R4EUISelectionContainer) ((R4EUISelection)element).getParent();

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/filters/LinePositionComparator.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/filters/LinePositionComparator.java
index 8067f20..7773e5a 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/filters/LinePositionComparator.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/filters/LinePositionComparator.java
@@ -23,7 +23,7 @@
 import org.eclipse.jface.viewers.Viewer;

 import org.eclipse.jface.viewers.ViewerComparator;

 import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIPosition;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomaly;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyBasic;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUISelection;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUITextPosition;

 

@@ -58,9 +58,9 @@
         if (e1 instanceof R4EUISelection) {

         	position1 = ((R4EUISelection)e1).getPosition();

         	position2 = ((R4EUISelection)e2).getPosition();

-        } else if (e1 instanceof R4EUIAnomaly) {

-        	position1 = ((R4EUIAnomaly)e1).getPosition();

-        	position2 = ((R4EUIAnomaly)e2).getPosition();

+        } else if (e1 instanceof R4EUIAnomalyBasic) {

+        	position1 = ((R4EUIAnomalyBasic)e1).getPosition();

+        	position2 = ((R4EUIAnomalyBasic)e2).getPosition();

         } else {

         	return 0;

         }

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomaly.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomalyBasic.java
similarity index 92%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomaly.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomalyBasic.java
index d3ad9b8..ca83f95 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomaly.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomalyBasic.java
@@ -32,17 +32,17 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

-import org.eclipse.mylyn.reviews.r4e.ui.dialogs.R4ECommentInputDialog;

+import org.eclipse.mylyn.reviews.r4e.ui.dialogs.CommentInputDialog;

 import org.eclipse.mylyn.reviews.r4e.ui.navigator.ReviewNavigatorContentProvider;

 import org.eclipse.mylyn.reviews.r4e.ui.preferences.PreferenceConstants;

-import org.eclipse.mylyn.reviews.r4e.ui.properties.AnomalyProperties;

+import org.eclipse.mylyn.reviews.r4e.ui.properties.general.AnomalyGeneralProperties;

 import org.eclipse.ui.views.properties.IPropertySource;

 

 /**

  * @author lmcdubo

  * @version $Revision: 1.0 $

  */

-public class R4EUIAnomaly extends R4EUIModelElement {

+public class R4EUIAnomalyBasic extends R4EUIModelElement {

 

 	// ------------------------------------------------------------------------

 	// Constants

@@ -78,18 +78,6 @@
      */

     private static final String REMOVE_ELEMENT_COMMAND_TOOLTIP = "Disable (and Optionally Remove) this Anomaly " +

     		"from its parent file or review";

-    

-	/**

-	 * Field ADD_COMMENT_DIALOG_TITLE.

-	 * (value is ""Enter Comment details"")

-	 */

-	private static final String ADD_COMMENT_DIALOG_TITLE = "Enter Comment Details";

-	

-	/**

-	 * Field ADD_COMMENT_DIALOG_VALUE.

-	 * (value is ""Enter your new Comments for this Anomaly:"")

-	 */

-	private static final String ADD_COMMENT_DIALOG_VALUE = "Enter your New Comments for this Anomaly:";

 	

 	

 	// ------------------------------------------------------------------------

@@ -99,7 +87,7 @@
 	/**

 	 * Field fAnomaly.

 	 */

-	private final R4EAnomaly fAnomaly;

+	protected final R4EAnomaly fAnomaly;

 	

 	/**

 	 * Field fComments.

@@ -122,7 +110,7 @@
 	 * @param aAnomaly R4EAnomaly

 	 * @param aPosition IR4EUIPosition

 	 */

-	public R4EUIAnomaly(IR4EUIModelElement aParent, R4EAnomaly aAnomaly, IR4EUIPosition aPosition) {

+	public R4EUIAnomalyBasic(IR4EUIModelElement aParent, R4EAnomaly aAnomaly, IR4EUIPosition aPosition) {

 		super(aParent, ((null == aPosition) ?  aAnomaly.getTitle() : aPosition.toString()), buildAnomalyToolTip(aAnomaly));

 		fAnomaly = aAnomaly;

 		fComments = new ArrayList<R4EUIComment>();

@@ -144,7 +132,7 @@
 	@Override

 	public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {

 		if (IR4EUIModelElement.class.equals(adapter)) return this;

-		if (IPropertySource.class.equals(adapter)) return new AnomalyProperties(this);

+		if (IPropertySource.class.equals(adapter)) return new AnomalyGeneralProperties(this);

 		return null;

 	}

 	

@@ -176,8 +164,8 @@
 		//Get comment from user and set it in model data

 		R4EComment tempComment = null;

 		R4EUIModelController.setDialogOpen(true);

-		final R4ECommentInputDialog dialog = new R4ECommentInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

-				getSite().getWorkbenchWindow().getShell(), ADD_COMMENT_DIALOG_TITLE, ADD_COMMENT_DIALOG_VALUE);

+		final CommentInputDialog dialog = new CommentInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

+				getSite().getWorkbenchWindow().getShell());

     	final int result = dialog.open();

     	if (result == Window.OK) {

     		tempComment = RModelFactory.eINSTANCE.createR4EComment();

@@ -355,8 +343,8 @@
 		

 		//Get comment details from user

 		R4EUIModelController.setDialogOpen(true);

-		final R4ECommentInputDialog dialog = new R4ECommentInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

-				getSite().getWorkbenchWindow().getShell(), ADD_COMMENT_DIALOG_TITLE, ADD_COMMENT_DIALOG_VALUE);

+		final CommentInputDialog dialog = new CommentInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

+				getSite().getWorkbenchWindow().getShell());

     	final int result = dialog.open();

     	

     	if (result == Window.OK) {

@@ -470,6 +458,7 @@
 	 */

 	@Override

 	public boolean isOpenEditorCmd() {

+		if (!(getParent() instanceof R4EUIFileContext)) return false;

 		if (isEnabled() && null != ((R4EUIFileContext)getParent().getParent()).getTargetFile()) return true;

 		return false;

 	}

@@ -481,7 +470,7 @@
 	 */

 	@Override

 	public boolean isAddChildElementCmd() {

-		if (isEnabled()) return true;

+		if (isEnabled() && !(R4EUIModelController.getActiveReview().isReviewed())) return true;

 		return false;

 	}

 	

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomalyContainer.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomalyContainer.java
index ba288e9..0662218 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomalyContainer.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomalyContainer.java
@@ -32,11 +32,14 @@
 import org.eclipse.mylyn.reviews.frame.core.model.Location;

 import org.eclipse.mylyn.reviews.frame.core.model.Topic;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyState;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyTextPosition;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EContent;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EDecision;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewComponent;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewType;

 import org.eclipse.mylyn.reviews.r4e.core.model.RModelFactory;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

@@ -46,7 +49,7 @@
 import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewsVersionsIF.FileVersionInfo;

 import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewsVersionsIFFactory;

 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

-import org.eclipse.mylyn.reviews.r4e.ui.dialogs.R4EAnomalyInputDialog;

+import org.eclipse.mylyn.reviews.r4e.ui.dialogs.AnomalyInputDialog;

 import org.eclipse.mylyn.reviews.r4e.ui.navigator.ReviewNavigatorContentProvider;

 import org.eclipse.mylyn.reviews.r4e.ui.preferences.PreferenceConstants;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

@@ -79,24 +82,6 @@
      * (value is ""Add a new global anomaly to the current review item"")

      */

     private static final String ADD_CHILD_ELEMENT_COMMAND_TOOLTIP = "Add a New Global Anomaly to the Current Review Item";

-

-	/**

-	 * Field ADD_ANOMALY_DIALOG_TITLE.

-	 * (value is ""Enter Anomaly details"")

-	 */

-	private static final String ADD_ANOMALY_DIALOG_TITLE = "Enter Anomaly Details";

-	

-	/**

-	 * Field ADD_ANOMALY_DIALOG_VALUE.

-	 * (value is ""Enter the Anomaly title:"")

-	 */

-	private static final String ADD_ANOMALY_DIALOG_VALUE = "Enter the Anomaly Title:";

-	

-	/**

-	 * Field ADD_COMMENT_DIALOG_VALUE.

-	 * (value is ""Enter your comments for the new Anomaly:"")

-	 */

-	private static final String ADD_DESCRIPTION_DIALOG_VALUE = "Enter the Anomaly Description:";

 	

 	

 	// ------------------------------------------------------------------------

@@ -106,7 +91,7 @@
 	/**

 	 * Field fAnomalies.

 	 */

-	private final List<R4EUIAnomaly> fAnomalies;

+	private final List<R4EUIAnomalyBasic> fAnomalies;

 	

 	

 	// ------------------------------------------------------------------------

@@ -120,7 +105,7 @@
 	 */

 	public R4EUIAnomalyContainer(IR4EUIModelElement aParent, String aName) {

 		super(aParent, aName, null);

-		fAnomalies = new ArrayList<R4EUIAnomaly>();

+		fAnomalies = new ArrayList<R4EUIAnomalyBasic>();

 		setImage(ANOMALY_CONTAINER_ICON_FILE);

 	}

 

@@ -140,14 +125,13 @@
 		//Get comment from user and set it in model data

 		R4EAnomaly tempAnomaly = null;

 		R4EUIModelController.setDialogOpen(true);

-		final R4EAnomalyInputDialog dialog = new R4EAnomalyInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

-				getSite().getWorkbenchWindow().getShell(), ADD_ANOMALY_DIALOG_TITLE, ADD_ANOMALY_DIALOG_VALUE, 

-				ADD_DESCRIPTION_DIALOG_VALUE);

+		final AnomalyInputDialog dialog = new AnomalyInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

+				getSite().getWorkbenchWindow().getShell());

     	final int result = dialog.open();

     	if (result == Window.OK) {

     		tempAnomaly = RModelFactory.eINSTANCE.createR4EAnomaly();

-    		tempAnomaly.setTitle(dialog.getAnomalyValue());

-    		tempAnomaly.setDescription(dialog.getCommentValue());

+    		tempAnomaly.setTitle(dialog.getAnomalyTitleValue());

+    		tempAnomaly.setDescription(dialog.getAnomalyDescriptionValue());

     	}

     	// else Window.CANCEL

 		R4EUIModelController.setDialogOpen(false);

@@ -164,7 +148,7 @@
 	 */

 	@Override

 	public IR4EUIModelElement[] getChildren() { // $codepro.audit.disable

-		return fAnomalies.toArray(new R4EUIAnomaly[fAnomalies.size()]);

+		return fAnomalies.toArray(new R4EUIAnomalyBasic[fAnomalies.size()]);

 	}

 	

 	/**

@@ -185,7 +169,7 @@
 	@Override

 	public void close() {

 		//Remove all children references

-		R4EUIAnomaly anomaly = null;

+		R4EUIAnomalyBasic anomaly = null;

 		final int anomaliesSize = fAnomalies.size();

 		for (int i = 0; i < anomaliesSize; i++) {

 			

@@ -205,7 +189,7 @@
 	@Override

 	public void open() {

 

-		R4EUIAnomaly uiAnomaly = null;

+		R4EUIAnomalyBasic uiAnomaly = null;

 		final IR4EUIModelElement parentElement = getParent();

 		if (parentElement instanceof R4EUIFileContext) {

 			

@@ -227,12 +211,18 @@
 							for (int j = 0; j < locationsSize; j++) {

 								position = new R4EUITextPosition(

 										((R4EContent)anomalies.get(i).getLocation().get(j)).getLocation());  // $codepro.audit.disable methodChainLength

-								uiAnomaly = new R4EUIAnomaly(this, anomalies.get(i), position);

+					    		if (((R4EUIReview)getParent().getParent().getParent()).getReview().getType().equals(R4EReviewType.R4E_REVIEW_TYPE_BASIC)) {

+					    			uiAnomaly = new R4EUIAnomalyBasic(this, anomalies.get(i), position);

+					    		} else {

+					    			uiAnomaly = new R4EUIAnomalyExtended(this, anomalies.get(i), position);

+					    			uiAnomaly.setName(R4EUIAnomalyExtended.getStateString(anomalies.get(i).getState()) + ": " + uiAnomaly.getName());

+					    		}

+								

 								addChildren(uiAnomaly);

 								uiAnomaly.open();

 							}

 						} else {

-							uiAnomaly = new R4EUIAnomaly(this, anomalies.get(i), null);

+							uiAnomaly = new R4EUIAnomalyBasic(this, anomalies.get(i), null);

 							addChildren(uiAnomaly);

 							uiAnomaly.open();

 						}

@@ -252,7 +242,12 @@
 					if (anomaly.isEnabled() || Activator.getDefault().getPreferenceStore().

 							getBoolean(PreferenceConstants.P_SHOW_DISABLED)) {

 						if (0 == anomaly.getLocation().size()) {

-							uiAnomaly = new R4EUIAnomaly(this, anomaly, null);

+				    		if (((R4EUIReview)getParent()).getReview().getType().equals(R4EReviewType.R4E_REVIEW_TYPE_BASIC)) {

+								uiAnomaly = new R4EUIAnomalyBasic(this, anomaly, null);

+				    		} else {

+				    			uiAnomaly = new R4EUIAnomalyExtended(this, anomaly, null);

+				    			uiAnomaly.setName(R4EUIAnomalyExtended.getStateString(anomaly.getState()) + ": " + getName());

+				    		}

 							addChildren(uiAnomaly);

 							uiAnomaly.open();

 						}

@@ -273,7 +268,7 @@
 	public boolean isEnabled() {

 		if (getParent().isEnabled()) {

 			if (0 == fAnomalies.size()) return true;

-			for (R4EUIAnomaly anomaly : fAnomalies) {

+			for (R4EUIAnomalyBasic anomaly : fAnomalies) {

 				if (anomaly.isEnabled()) return true;

 			}

 		}

@@ -287,7 +282,7 @@
 	 */

 	@Override

 	public void addChildren(IR4EUIModelElement aChildToAdd) {

-		fAnomalies.add((R4EUIAnomaly) aChildToAdd);

+		fAnomalies.add((R4EUIAnomalyBasic) aChildToAdd);

 		aChildToAdd.addListener((ReviewNavigatorContentProvider) R4EUIModelController.getNavigatorView().getTreeViewer().getContentProvider());

 		fireAdd(aChildToAdd);

 	}

@@ -304,7 +299,17 @@
 	public IR4EUIModelElement createChildren(R4EReviewComponent aModelComponent) throws ResourceHandlingException, OutOfSyncException {

 		final String user = R4EUIModelController.getReviewer();

 		final R4EAnomaly anomaly = R4EUIModelController.FModelExt.createR4EAnomaly(((R4EUIReview)getParent()).getParticipant(user, true));

-		final R4EUIAnomaly addedChild = new R4EUIAnomaly(this, anomaly, null);

+		final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(anomaly, 

+				R4EUIModelController.getReviewer());

+		anomaly.setTitle(((R4EAnomaly)aModelComponent).getTitle());  //This is needed as the global anomaly title is displayed in the navigator view

+    	R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+    	R4EUIAnomalyBasic addedChild = null;

+    	if (R4EUIModelController.getActiveReview().getReview().getType().equals(R4EReviewType.R4E_REVIEW_TYPE_BASIC)) {

+    		addedChild = new R4EUIAnomalyBasic(this, anomaly, null);

+		} else {

+			addedChild = new R4EUIAnomalyExtended(this, anomaly, null);

+			((R4EUIAnomalyExtended)addedChild).updateState(R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED);

+		}

 		addedChild.setModelData(aModelComponent);

 		addChildren(addedChild);

 		return addedChild;

@@ -317,15 +322,14 @@
 	 * @throws ResourceHandlingException

 	 * @throws OutOfSyncException 

 	 */

-	public R4EUIAnomaly createAnomaly(R4EUITextPosition aUiPosition) throws ResourceHandlingException, OutOfSyncException {

+	public R4EUIAnomalyBasic createAnomaly(R4EUITextPosition aUiPosition) throws ResourceHandlingException, OutOfSyncException {

 		

-		R4EUIAnomaly uiAnomaly = null;

+		R4EUIAnomalyBasic uiAnomaly = null;

 		

 		//Get anomaliy details from user

 		R4EUIModelController.setDialogOpen(true);

-		final R4EAnomalyInputDialog dialog = new R4EAnomalyInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

-				getSite().getWorkbenchWindow().getShell(), ADD_ANOMALY_DIALOG_TITLE, ADD_ANOMALY_DIALOG_VALUE, 

-				ADD_DESCRIPTION_DIALOG_VALUE);

+		final AnomalyInputDialog dialog = new AnomalyInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

+				getSite().getWorkbenchWindow().getShell());

     	final int result = dialog.open();

     	

     	if (result == Window.OK) {

@@ -336,8 +340,8 @@
     		final R4EAnomaly anomaly = R4EUIModelController.FModelExt.createR4EAnomaly(participant);

     		

     		Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(anomaly, R4EUIModelController.getReviewer());

-    		anomaly.setTitle(dialog.getAnomalyValue());

-    		anomaly.setDescription(dialog.getCommentValue());

+    		anomaly.setTitle(dialog.getAnomalyTitleValue());

+    		anomaly.setDescription(dialog.getAnomalyDescriptionValue());

         	R4EUIModelController.FResourceUpdater.checkIn(bookNum);

     		

     		//Set data in the anomaly created

@@ -375,9 +379,14 @@
     		R4EUIModelController.FResourceUpdater.checkIn(bookNum);

     		

     		//Create and set UI model element

-    		uiAnomaly = new R4EUIAnomaly(this, anomaly, aUiPosition);	

+    		if (uiReview.getReview().getType().equals(R4EReviewType.R4E_REVIEW_TYPE_BASIC)) {

+    			uiAnomaly = new R4EUIAnomalyBasic(this, anomaly, aUiPosition);	

+    		} else {

+    			uiAnomaly = new R4EUIAnomalyExtended(this, anomaly, aUiPosition);

+    			((R4EUIAnomalyExtended)uiAnomaly).updateState(R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED);

+    		}

     		aUiPosition.setPositionInModel(position);

-    		uiAnomaly.setToolTip(R4EUIAnomaly.buildAnomalyToolTip(anomaly));   //Also set UI tooltip immediately

+    		uiAnomaly.setToolTip(R4EUIAnomalyBasic.buildAnomalyToolTip(anomaly));   //Also set UI tooltip immediately

     		addChildren(uiAnomaly);

     		

     	}

@@ -398,7 +407,7 @@
 	 */

 	@Override

 	public void removeChildren(IR4EUIModelElement aChildToRemove, boolean aFileRemove) throws ResourceHandlingException, OutOfSyncException {

-		final R4EUIAnomaly removedElement = fAnomalies.get(fAnomalies.indexOf(aChildToRemove));

+		final R4EUIAnomalyBasic removedElement = fAnomalies.get(fAnomalies.indexOf(aChildToRemove));

 		

 		//Also recursively remove all children 

 		removedElement.removeAllChildren(aFileRemove);

@@ -431,7 +440,7 @@
 	@Override

 	public void removeAllChildren(boolean aFileRemove) throws ResourceHandlingException, OutOfSyncException {

 		//Recursively remove all children

-		for (R4EUIAnomaly anomaly : fAnomalies) {

+		for (R4EUIAnomalyBasic anomaly : fAnomalies) {

 			removeChildren(anomaly, aFileRemove);

 		}

 	}

@@ -447,8 +456,8 @@
 	public void addListener(ReviewNavigatorContentProvider aProvider) {

 		fListener = aProvider;

 		if (null != fAnomalies) {

-			R4EUIAnomaly element = null;

-			for (final Iterator<R4EUIAnomaly> iterator = fAnomalies.iterator(); iterator.hasNext();) {

+			R4EUIAnomalyBasic element = null;

+			for (final Iterator<R4EUIAnomalyBasic> iterator = fAnomalies.iterator(); iterator.hasNext();) {

 			    element = iterator.next();

 				element.addListener(aProvider);

 			}

@@ -463,8 +472,8 @@
 	public void removeListener() {

 		fListener = null;

 		if (null != fAnomalies) {

-			R4EUIAnomaly element = null;

-			for (final Iterator<R4EUIAnomaly> iterator = fAnomalies.iterator(); iterator.hasNext();) {

+			R4EUIAnomalyBasic element = null;

+			for (final Iterator<R4EUIAnomalyBasic> iterator = fAnomalies.iterator(); iterator.hasNext();) {

 				element = iterator.next();

 				element.removeListener();

 			}

@@ -481,7 +490,7 @@
 	 */

 	@Override

 	public boolean isAddChildElementCmd() {

-		if (getParent().isEnabled()) return true;

+		if (getParent().isEnabled() && !(R4EUIModelController.getActiveReview().isReviewed())) return true;

 		return false;

 	}

 	

@@ -504,4 +513,23 @@
 	public String getAddChildElementCmdTooltip() {

 		return ADD_CHILD_ELEMENT_COMMAND_TOOLTIP; 

 	}

+	

+	/**

+	 * Method checkCompletionStatus.

+	 * @return boolean

+	 */

+	public boolean checkCompletionStatus() { // $codepro.audit.disable booleanMethodNamingConvention

+		for (R4EUIAnomalyBasic anomaly : fAnomalies) {

+			if (anomaly.getAnomaly().getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_CREATED) ||

+				anomaly.getAnomaly().getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED) ||	

+				anomaly.getAnomaly().getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_ACCEPTED)) {

+				return false;

+			} else if (anomaly.getAnomaly().getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_FIXED)) {

+				if (R4EUIModelController.getActiveReview().getReview().getDecision().getValue().equals(R4EDecision.R4E_REVIEW_DECISION_ACCEPTED_FOLLOWUP)) {

+					return false;

+				}

+			}

+		}

+		return true;

+	}

 }

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomalyExtended.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomalyExtended.java
new file mode 100644
index 0000000..4323024
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIAnomalyExtended.java
@@ -0,0 +1,486 @@
+/*******************************************************************************

+ * Copyright (c) 2010 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class extends the anomaly erlement to include additional parameters used

+ * in informal and formal reviews

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ *******************************************************************************/

+package org.eclipse.mylyn.reviews.r4e.ui.model;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyRank;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomalyState;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentClass;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewType;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

+import org.eclipse.mylyn.reviews.r4e.ui.properties.general.AnomalyExtraProperties;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.ui.views.properties.IPropertySource;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class R4EUIAnomalyExtended extends R4EUIAnomalyBasic {

+

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field ANOMALY_STATE_CREATED.

+	 * (value is ""CREATED"")

+	 */

+	private static final String ANOMALY_STATE_CREATED = "CREATED";

+	/**

+	 * Field ANOMALY_STATE_ASSIGNED.

+	 * (value is ""ASSIGNED"")

+	 */

+	private static final String ANOMALY_STATE_ASSIGNED = "ASSIGNED";

+	/**

+	 * Field ANOMALY_STATE_ACCEPTED.

+	 * (value is ""ACCEPTED"")

+	 */

+	private static final String ANOMALY_STATE_ACCEPTED = "ACCEPTED";

+	/**

+	 * Field ANOMALY_STATE_DUPLICATED.

+	 * (value is ""DUPLICATED"")

+	 */

+	private static final String ANOMALY_STATE_DUPLICATED = "DUPLICATED";

+	/**

+	 * Field ANOMALY_STATE_REJECTED.

+	 * (value is ""REJECTED"")

+	 */

+	private static final String ANOMALY_STATE_REJECTED = "REJECTED";

+	/**

+	 * Field ANOMALY_STATE_DEFERRED.

+	 * (value is ""DEFERRED"")

+	 */

+	private static final String ANOMALY_STATE_DEFERRED = "DEFERRED";

+	/**

+	 * Field ANOMALY_STATE_FIXED.

+	 * (value is ""FIXED"")

+	 */

+	private static final String ANOMALY_STATE_FIXED = "FIXED";

+	/**

+	 * Field ANOMALY_STATE_VERIFIED.

+	 * (value is ""VERIFIED"")

+	 */

+	private static final String ANOMALY_STATE_VERIFIED = "VERIFIED";

+	

+	/**

+	 * Field ANOMALY_RANK_NONE.

+	 * (value is ""NONE"")

+	 */

+	private static final String ANOMALY_RANK_NONE = "NONE";

+	/**

+	 * Field ANOMALY_RANK_MINOR.

+	 * (value is ""MINOR"")

+	 */

+	private static final String ANOMALY_RANK_MINOR = "MINOR";

+	/**

+	 * Field ANOMALY_RANK_MAJOR.

+	 * (value is ""MAJOR"")

+	 */

+	private static final String ANOMALY_RANK_MAJOR = "MAJOR";

+

+	/**

+	 * Field ANOMALY_CLASS_ERRONEOUS.

+	 * (value is ""Erroneous"")

+	 */

+	private static final String ANOMALY_CLASS_ERRONEOUS = "Erroneous";

+	/**

+	 * Field ANOMALY_CLASS_SUPERFLUOUS.

+	 * (value is ""Superfluous"")

+	 */

+	private static final String ANOMALY_CLASS_SUPERFLUOUS = "Superfluous";

+	/**

+	 * Field ANOMALY_CLASS_IMPROVEMENT.

+	 * (value is ""Improvement"")

+	 */

+	private static final String ANOMALY_CLASS_IMPROVEMENT = "Improvement";

+	/**

+	 * Field ANOMALY_CLASS_QUESTION.

+	 * (value is ""Question"")

+	 */

+	private static final String ANOMALY_CLASS_QUESTION = "Question";

+	

+	/**

+	 * Field FStateValues.

+	 */

+	private static final String[] FStateValues = { ANOMALY_STATE_ACCEPTED, ANOMALY_STATE_DUPLICATED, ANOMALY_STATE_REJECTED, 

+		ANOMALY_STATE_DEFERRED, ANOMALY_STATE_ASSIGNED, ANOMALY_STATE_CREATED, ANOMALY_STATE_VERIFIED, 

+		ANOMALY_STATE_FIXED };  //NOTE: This has to match R4EAnomalyState in R4E core plugin

+	

+	/**

+	 * Field rankValues.

+	 */

+	private static final String[] FRankValues = { ANOMALY_RANK_NONE, ANOMALY_RANK_MINOR,

+		ANOMALY_RANK_MAJOR };  //NOTE: This has to match R4EAnomalyRank in R4E core plugin

+	

+	/**

+	 * Field FClassValues.

+	 */

+	private static final String[] FClassValues = { ANOMALY_CLASS_ERRONEOUS, ANOMALY_CLASS_SUPERFLUOUS,

+		ANOMALY_CLASS_IMPROVEMENT, ANOMALY_CLASS_QUESTION };  //NOTE: This has to match CommentType in R4E core plugin

+	

+	

+	// ------------------------------------------------------------------------

+	// Constructors

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Constructor for R4EUIAnomalyExtended.

+	 * @param aParent IR4EUIModelElement

+	 * @param aAnomaly R4EAnomaly

+	 * @param aPosition IR4EUIPosition

+	 */

+	public R4EUIAnomalyExtended(IR4EUIModelElement aParent,

+			R4EAnomaly aAnomaly, IR4EUIPosition aPosition) {

+		super(aParent, aAnomaly, aPosition);

+	}

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Method getAdapter.

+	 * @param adapter Class

+	 * @return Object

+	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(Class)

+	 */

+	@Override

+	public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {

+		if (IR4EUIModelElement.class.equals(adapter)) return this;

+		if (IPropertySource.class.equals(adapter)) return new AnomalyExtraProperties(this);

+		return null;

+	}

+	

+	/**

+	 * Method updateState.

+	 * @param aNewState R4EAnomalyState

+	 * @throws OutOfSyncException 

+	 * @throws ResourceHandlingException 

+	 */

+	public void updateState(R4EAnomalyState aNewState) throws ResourceHandlingException, OutOfSyncException {

+		//Set data in model element

+		final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(fAnomaly, 

+				R4EUIModelController.getReviewer());

+		fAnomaly.setState(aNewState);

+    	R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+    	setName(getStateString(aNewState) + ": " + getName());

+	}

+	

+	/**

+	 * Method getStateString.

+	 * @param aNewState R4EAnomalyState

+ 	 * @return String

+	 */

+	public static String getStateString(R4EAnomalyState aNewState) {

+		if (aNewState.equals(R4EAnomalyState.R4E_ANOMALY_STATE_CREATED)) {

+			return ANOMALY_STATE_CREATED;

+		} else if (aNewState.equals(R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED)) {

+			return ANOMALY_STATE_ASSIGNED;

+		} else if (aNewState.equals(R4EAnomalyState.R4E_ANOMALY_STATE_ACCEPTED)) {

+			return ANOMALY_STATE_ACCEPTED;

+		} else if (aNewState.equals(R4EAnomalyState.R4E_ANOMALY_STATE_DUPLICATED)) {

+			return ANOMALY_STATE_DUPLICATED;

+		} else if (aNewState.equals(R4EAnomalyState.R4E_ANOMALY_STATE_REJECTED)) {

+			return ANOMALY_STATE_REJECTED;

+		} else if (aNewState.equals(R4EAnomalyState.R4E_ANOMALY_STATE_DEFERRED)) {

+			return ANOMALY_STATE_DEFERRED;

+		} else if (aNewState.equals(R4EAnomalyState.R4E_ANOMALY_STATE_FIXED)) {

+			return ANOMALY_STATE_FIXED;

+		} else if (aNewState.equals(R4EAnomalyState.R4E_ANOMALY_STATE_VERIFIED)) {

+			return ANOMALY_STATE_VERIFIED;

+		} else return "";

+	}

+	

+	/**

+	 * Method getStateFromString.

+	 * @param aNewState String

+	 * @return R4EAnomalyState

+	 */

+	public static R4EAnomalyState getStateFromString(String aNewState) {

+		if (aNewState.equals(ANOMALY_STATE_CREATED)) {

+			return R4EAnomalyState.R4E_ANOMALY_STATE_CREATED;

+		} else if (aNewState.equals(ANOMALY_STATE_ASSIGNED)) {

+			return R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED;

+		} else if (aNewState.equals(ANOMALY_STATE_ACCEPTED)) {

+			return R4EAnomalyState.R4E_ANOMALY_STATE_ACCEPTED;

+		} else if (aNewState.equals(ANOMALY_STATE_DUPLICATED)) {

+			return R4EAnomalyState.R4E_ANOMALY_STATE_DUPLICATED;

+		} else if (aNewState.equals(ANOMALY_STATE_REJECTED)) {

+			return R4EAnomalyState.R4E_ANOMALY_STATE_REJECTED;

+		} else if (aNewState.equals(ANOMALY_STATE_DEFERRED)) {

+			return R4EAnomalyState.R4E_ANOMALY_STATE_DEFERRED;

+		} else if (aNewState.equals(ANOMALY_STATE_FIXED)) {

+			return R4EAnomalyState.R4E_ANOMALY_STATE_FIXED;

+		} else if (aNewState.equals(ANOMALY_STATE_VERIFIED)) {

+			return R4EAnomalyState.R4E_ANOMALY_STATE_VERIFIED;

+		} else return null;   //should never happen

+	}

+	

+	/**

+	 * Method getStates.

+	 * @return String[]

+	 */

+	public static String[] getStates() {

+		return FStateValues;

+	}

+	

+	/**

+	 * Method getAvailableStates.

+	 * @return String[]

+	 */

+	public String[] getAvailableStates() {

+		//Peek state machine to get available states

+		final R4EAnomalyState[] states = getAllowedState(R4EUIModelController.getActiveReview().getReview().getType(),

+				getAnomaly().getState());

+		final List<String> stateStrings = new ArrayList<String>();

+		for (R4EAnomalyState state : states) {

+			stateStrings.add(getStateString(state));

+		}

+		return stateStrings.toArray(new String[stateStrings.size()]);

+	}

+	

+	/**

+	 * Method mapStateToIndex.

+	 * @param aState R4EAnomalyState

+	 * @return int

+	 */

+	public int mapStateToIndex(R4EAnomalyState aState) {

+		//Peek state machine to get available states

+		final R4EAnomalyState[] states = getAllowedState(R4EUIModelController.getActiveReview().getReview().getType(),

+				getAnomaly().getState());

+		for (int i = 0; i < states.length; i++) {

+			if (states[i].getValue() == aState.getValue()) return i;		

+		}

+		return R4EUIConstants.INVALID_VALUE;   //should never happen

+	}

+	

+	/**

+	 * Method getClasses.

+	 * @return String[]

+	 */

+	public static String[] getClasses() {

+		return FClassValues;

+	} 

+	

+	/**

+	 * Method getClassFromString.

+	 * @param aClass String

+	 * @return R4ECommentClass

+	 */

+	public static R4ECommentClass getClassFromString(String aClass) {

+		if (aClass.equals(ANOMALY_CLASS_ERRONEOUS)) {

+			return R4ECommentClass.R4E_CLASS_ERRONEOUS;

+		} else if (aClass.equals(ANOMALY_CLASS_SUPERFLUOUS)) {

+			return R4ECommentClass.R4E_CLASS_SUPERFLUOUS;

+		} else if (aClass.equals(ANOMALY_CLASS_IMPROVEMENT)) {

+			return R4ECommentClass.R4E_CLASS_IMPROVEMENT;

+		} else if (aClass.equals(ANOMALY_CLASS_QUESTION)) {

+			return R4ECommentClass.R4E_CLASS_QUESTION;

+		} else return null;   //should never happen

+	}

+

+	/**

+	 * Method getRanks.

+	 * @return String[]

+	 */

+	public static String[] getRanks() {

+		return FRankValues;

+	}

+	

+	/**

+	 * Method getRankFromString.

+	 * @param aRank String

+	 * @return R4EAnomalyRank

+	 */

+	public static R4EAnomalyRank getRankFromString(String aRank) {

+		if (aRank.equals(ANOMALY_RANK_NONE)) {

+			return R4EAnomalyRank.R4E_ANOMALY_RANK_NONE;

+		} else if (aRank.equals(ANOMALY_RANK_MINOR)) {

+			return R4EAnomalyRank.R4E_ANOMALY_RANK_MINOR;

+		} else if (aRank.equals(ANOMALY_RANK_MAJOR)) {

+			return R4EAnomalyRank.R4E_ANOMALY_RANK_MAJOR;

+		} else return null;   //should never happen

+	}

+	

+	/**

+	 * Method mapParticipantToIndex.

+	 * @param aParticipant String

+	 * @return int

+	 */

+	public int mapParticipantToIndex(String aParticipant) {

+		final List<R4EParticipant> participants = R4EUIModelController.getActiveReview().getParticipants();

+		final int numParticipants = participants.size();

+		for (int i = 0; i < numParticipants; i++) {

+			if (participants.get(i).getId().equals(aParticipant)) return i;		

+		}

+		return R4EUIConstants.INVALID_VALUE;   //should never happen

+	}

+	

+	

+	//Anomaly State Machine

+	

+	/**

+	 * Method isClassEnabled.

+	 * @return boolean

+	 */

+	public boolean isClassEnabled() {

+		if (R4EUIModelController.getActiveReview().getReview().getType().equals(R4EReviewType.R4E_REVIEW_TYPE_INFORMAL)) {

+			if (fAnomaly.getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED)) {

+				return true;

+			}

+		}

+		return false;

+	}

+	

+	/**

+	 * Method isRankEnabled.

+	 * @return boolean

+	 */

+	public boolean isRankEnabled() {

+		if (R4EUIModelController.getActiveReview().getReview().getType().equals(R4EReviewType.R4E_REVIEW_TYPE_INFORMAL)) {

+			if (fAnomaly.getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED)) {

+				return true;

+			}

+		}

+		return false;

+	}

+	

+	/**

+	 * Method isDueDateEnabled.

+	 * @return boolean

+	 */

+	public boolean isDueDateEnabled() {

+		if (R4EUIModelController.getActiveReview().getReview().getType().equals(R4EReviewType.R4E_REVIEW_TYPE_INFORMAL)) {

+			if (fAnomaly.getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED)) {

+				return true;

+			}

+		}

+		return false;

+	}

+	

+	/**

+	 * Method isDecidedByEnabled.

+	 * @return boolean

+	 */

+	public boolean isDecidedByEnabled() {

+		if (fAnomaly.getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_DEFERRED) ||

+			fAnomaly.getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_DUPLICATED) ||

+			fAnomaly.getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_REJECTED) ||

+			fAnomaly.getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_FIXED) || 

+			fAnomaly.getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_VERIFIED)) {

+			return true;

+		}

+		return false;

+	}

+	

+	/**

+	 * Method isFixedByEnabled.

+	 * @return boolean

+	 */

+	public boolean isFixedByEnabled() {

+		if (fAnomaly.getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_FIXED)) {

+			return true;

+		}

+		return false;

+	}

+	

+	/**

+	 * Method isFollowUpByEnabled.

+	 * @return boolean

+	 */

+	public boolean isFollowUpByEnabled() {

+		if (fAnomaly.getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_FIXED)) {

+			return true;

+		}

+		return false;

+	}

+	

+	/**

+	 * Method isNotAcceptedReasonEnabled.

+	 * @return boolean

+	 */

+	public boolean isNotAcceptedReasonEnabled() {

+		if (fAnomaly.getState().equals(R4EAnomalyState.R4E_ANOMALY_STATE_REJECTED)) {

+			return true;

+		}

+		return false;

+	}

+	

+	/**

+	 * Method isNotAcceptedReasonEnabled.

+	 * @param aReviewType R4EReviewType

+	 * @param aCurrentState R4EAnomalyState

+	 * @return R4EAnomalyState[]

+	 */

+	private R4EAnomalyState[] getAllowedState(R4EReviewType aReviewType, R4EAnomalyState aCurrentState) {

+		final List<R4EAnomalyState> states = new ArrayList<R4EAnomalyState>();

+		if (aReviewType == R4EReviewType.R4E_REVIEW_TYPE_INFORMAL) {

+			switch (aCurrentState.getValue()) {

+				case R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED_VALUE:

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_DEFERRED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_DUPLICATED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_REJECTED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_FIXED);

+					break;

+					

+				case R4EAnomalyState.R4E_ANOMALY_STATE_DEFERRED_VALUE:

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_DEFERRED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_DUPLICATED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_REJECTED);

+					break;

+					

+				case R4EAnomalyState.R4E_ANOMALY_STATE_DUPLICATED_VALUE:

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_DEFERRED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_DUPLICATED);

+					break;

+					

+				case R4EAnomalyState.R4E_ANOMALY_STATE_REJECTED_VALUE:

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_DEFERRED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_REJECTED);

+					break;

+					

+				case R4EAnomalyState.R4E_ANOMALY_STATE_FIXED_VALUE:

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_ASSIGNED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_FIXED);

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_VERIFIED);

+					break;

+					

+				case R4EAnomalyState.R4E_ANOMALY_STATE_VERIFIED_VALUE:

+					states.add(R4EAnomalyState.R4E_ANOMALY_STATE_VERIFIED);

+					break;

+					

+				default:

+					//should never happen

+			}

+		} else {

+			//TODO Assume formal review 

+		}

+		return states.toArray(new R4EAnomalyState[states.size()]);

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIComment.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIComment.java
index e529e09..ce59d36 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIComment.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIComment.java
@@ -24,7 +24,7 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewComponent;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

-import org.eclipse.mylyn.reviews.r4e.ui.properties.CommentProperties;

+import org.eclipse.mylyn.reviews.r4e.ui.properties.general.CommentProperties;

 import org.eclipse.ui.views.properties.IPropertySource;

 

 /**

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIElement.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIElement.java
index bd54fdf..76c8dd7 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIElement.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIElement.java
@@ -34,7 +34,7 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

-import org.eclipse.mylyn.reviews.r4e.ui.dialogs.R4EReviewGroupInputDialog;

+import org.eclipse.mylyn.reviews.r4e.ui.dialogs.ReviewGroupInputDialog;

 import org.eclipse.mylyn.reviews.r4e.ui.navigator.ReviewNavigatorContentProvider;

 import org.eclipse.mylyn.reviews.r4e.ui.preferences.PreferenceConstants;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

@@ -47,35 +47,6 @@
 public class R4EUIElement extends R4EUIModelElement {

 

 	// ------------------------------------------------------------------------

-	// Constants

-	// ------------------------------------------------------------------------

-    

-	/**

-	 * Field ADD_REVIEW_GROUP_DIALOG_TITLE.

-	 * (value is ""Enter Review Group details"")

-	 */

-	private static final String ADD_REVIEW_GROUP_DIALOG_TITLE = "Enter Review Group Details";

-	

-	/**

-	 * Field ADD_REVIEW_GROUP_NAME_DIALOG_VALUE.

-	 * (value is ""Enter the Review Group Name:"")

-	 */

-	private static final String ADD_REVIEW_GROUP_NAME_DIALOG_VALUE = "Enter the Review Group Name:";

-	

-	/**

-	 * Field ADD_REVIEW_GROUP_FOLDER_DIALOG_VALUE.

-	 * (value is ""Enter the Review Group Folder:"")

-	 */

-	private static final String ADD_REVIEW_GROUP_FOLDER_DIALOG_VALUE = "Enter the Review Group Folder:";

-	

-	/**

-	 * Field ADD_REVIEW_GROUP_DESCRIPTION_DIALOG_VALUE.

-	 * (value is ""Enter the Review Group Description:"")

-	 */

-	private static final String ADD_REVIEW_GROUP_DESCRIPTION_DIALOG_VALUE = "Enter the Review Group Description:";

-	

-	

-	// ------------------------------------------------------------------------

 	// Member variables

 	// ------------------------------------------------------------------------

     

@@ -115,15 +86,22 @@
 		//Get comment from user and set it in model data

 		R4EReviewGroup tempReviewGroup = null;

 		R4EUIModelController.setDialogOpen(true);

-		final R4EReviewGroupInputDialog dialog = new R4EReviewGroupInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

-				getSite().getWorkbenchWindow().getShell(), ADD_REVIEW_GROUP_DIALOG_TITLE, ADD_REVIEW_GROUP_NAME_DIALOG_VALUE, 

-				ADD_REVIEW_GROUP_FOLDER_DIALOG_VALUE, ADD_REVIEW_GROUP_DESCRIPTION_DIALOG_VALUE);

+		final ReviewGroupInputDialog dialog = new ReviewGroupInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

+				getSite().getWorkbenchWindow().getShell());

+		dialog.create();

     	final int result = dialog.open();

     	if (result == Window.OK) {

     		tempReviewGroup = RModelFactory.eINSTANCE.createR4EReviewGroup();

     		tempReviewGroup.setName(dialog.getGroupNameValue());

     		tempReviewGroup.setDescription(dialog.getGroupDescriptionValue());

     		tempReviewGroup.setFolder(dialog.getGroupFolderValue());

+    		for (String project : dialog.getAvailableProjectsValues()) {

+    			tempReviewGroup.getAvailableProjects().add(project);

+    		}

+    		for (String component : dialog.getAvailableComponentsValues()) {

+    			tempReviewGroup.getAvailableComponents().add(component);

+    		}

+    		tempReviewGroup.setDefaultEntryCriteria(dialog.getDefaultEntryCriteriaValue());

     	}

     	//else Window.CANCEL

 		R4EUIModelController.setDialogOpen(false);

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIFileContext.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIFileContext.java
index e5a4af0..4106933 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIFileContext.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIFileContext.java
@@ -33,7 +33,7 @@
 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

 import org.eclipse.mylyn.reviews.r4e.ui.navigator.ReviewNavigatorContentProvider;

 import org.eclipse.mylyn.reviews.r4e.ui.preferences.PreferenceConstants;

-import org.eclipse.mylyn.reviews.r4e.ui.properties.FileContextProperties;

+import org.eclipse.mylyn.reviews.r4e.ui.properties.general.FileContextProperties;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

 import org.eclipse.ui.views.properties.IPropertySource;

 

@@ -547,7 +547,7 @@
 	 */

 	@Override

 	public boolean isChangeReviewStateCmd() {

-		if (isEnabled()) return true;

+		if (isEnabled() && !(R4EUIModelController.getActiveReview().isReviewed())) return true;

 		return false;

 	}

 }

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIModelController.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIModelController.java
index 69a089e..574edcf 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIModelController.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIModelController.java
@@ -111,9 +111,9 @@
 	private static final Map<String,List<R4EAnomaly>> FFileAnomalyMap = new HashMap<String,List<R4EAnomaly>>(32, 0.75f); // $codepro.audit.disable constantNamingConvention

 	

 	/**

-	 * Field FDialogStateListenerList.

+	 * Field FElementStateListenerList.

 	 */

-	private static final List<IPropertyListener> FDialogStateListenerList = new ArrayList<IPropertyListener>(); // $codepro.audit.disable constantNamingConvention

+	private static final List<IPropertyListener> FElementStateListenerList = new ArrayList<IPropertyListener>(); // $codepro.audit.disable constantNamingConvention

 	

 	

 	// ------------------------------------------------------------------------

@@ -121,19 +121,19 @@
 	// ------------------------------------------------------------------------

 	

 	/**

-	 * Method addDialogStateListener.

+	 * Method addElementStateListener.

 	 * @param aListener IPropertyListener

 	 */

-	public static void addDialogStateListener(IPropertyListener aListener) {

-		FDialogStateListenerList.add(aListener);

+	public static void addElementStateListener(IPropertyListener aListener) {

+		FElementStateListenerList.add(aListener);

 	}

 	

 	/**

-	 * Method removeDialogStateListener.

+	 * Method removeElementStateListener.

 	 * @param aListener IPropertyListener

 	 */

-	public static void removeDialogStateListener(IPropertyListener aListener) {

-		FDialogStateListenerList.remove(aListener);

+	public static void removeElementStateListener(IPropertyListener aListener) {

+		FElementStateListenerList.remove(aListener);

 	}

 	

 	/**

@@ -175,7 +175,7 @@
 	public static void setActiveReview(R4EUIReview aActiveReview) {

 		FActiveReview = aActiveReview;

 		if (null != FReviewSourceProvider) {

-			FReviewSourceProvider.setReview(FActiveReview);

+			FReviewSourceProvider.setCurrentReview(FActiveReview);

 		}

 		//check to apply filters

 		try {

@@ -201,26 +201,34 @@
 	}

 	

 	/**

-	 * Set the currently dialog state (true if a dialog is currently in progress)

+	 * Set properties state based on the current dialog state

 	 * @param aIsDialogOpen boolean

 	 */

 	public static void setDialogOpen(boolean aIsDialogOpen) {

 		FIsDialogOpen = aIsDialogOpen;

-		for (IPropertyListener listener : FDialogStateListenerList) {

+		for (IPropertyListener listener : FElementStateListenerList) {

 			listener.propertyChanged(null, 0);

 		}

 	}

 	

 	/**

-	 * Set the currently dialog state (true if a dialog is currently in progress)

+	 * Set properties state based on the selected element

 	 * @param aSelection the selected element

 	 */

 	public static void selectionChanged(IStructuredSelection aSelection) {

-		for (IPropertyListener listener : FDialogStateListenerList) {

+		for (IPropertyListener listener : FElementStateListenerList) {

 			listener.propertyChanged(null, 0);  //TODO this is temporary and should be refined later

 		}

 	}

 	

+	/**

+	 * Refresh properties

+	 */

+	public static void propertyChanged() {

+		for (IPropertyListener listener : FElementStateListenerList) {

+			listener.propertyChanged(null, 0);  //TODO this is temporary and should be refined later

+		}

+	}

 	

 	/**

 	 * Get the currently active review

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIModelElement.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIModelElement.java
index 2df1dcc..9438831 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIModelElement.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIModelElement.java
@@ -27,7 +27,7 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

 import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewVersionsException;

 import org.eclipse.mylyn.reviews.r4e.ui.navigator.ReviewNavigatorContentProvider;

-import org.eclipse.mylyn.reviews.r4e.ui.properties.ModelElementProperties;

+import org.eclipse.mylyn.reviews.r4e.ui.properties.general.ModelElementProperties;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

 import org.eclipse.swt.SWT;

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIParticipant.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIParticipant.java
index c5841be..e86604d 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIParticipant.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIParticipant.java
@@ -18,8 +18,10 @@
 

 package org.eclipse.mylyn.reviews.r4e.ui.model;

 

+import org.eclipse.emf.common.util.EList;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant;

-import org.eclipse.mylyn.reviews.r4e.ui.properties.ParticipantProperties;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EUserRole;

+import org.eclipse.mylyn.reviews.r4e.ui.properties.general.ParticipantProperties;

 import org.eclipse.ui.views.properties.IPropertySource;

 

 

@@ -33,11 +35,31 @@
 	// Constants

 	// ------------------------------------------------------------------------

 	

+	//TODO get different icons depending on the role

+	

 	/**

-	 * Field fSelectionFile.

+	 * Field PARTICIPANT_REVIEWER_ICON_FILE.

 	 * (value is ""icons/obj16/part_obj.png"")

 	 */

-	private static final String PARTICIPANT_ICON_FILE = "icons/obj16/part_obj.png";

+	private static final String PARTICIPANT_REVIEWER_ICON_FILE = "icons/obj16/part_obj.png";

+	

+	/**

+	 * Field PARTICIPANT_REVIEWER_ICON_FILE.

+	 * (value is ""icons/obj16/part_obj.png"")

+	 */

+	private static final String PARTICIPANT_LEAD_ICON_FILE = "icons/obj16/part_obj.png";

+	

+	/**

+	 * Field PARTICIPANT_REVIEWER_ICON_FILE.

+	 * (value is ""icons/obj16/part_obj.png"")

+	 */

+	private static final String PARTICIPANT_AUTHOR_ICON_FILE = "icons/obj16/part_obj.png";

+	

+	/**

+	 * Field PARTICIPANT_REVIEWER_ICON_FILE.

+	 * (value is ""icons/obj16/part_obj.png"")

+	 */

+	private static final String PARTICIPANT_ORGANIZER_ICON_FILE = "icons/obj16/part_obj.png";

 	

 	

 	// ------------------------------------------------------------------------

@@ -62,7 +84,22 @@
 	public R4EUIParticipant(IR4EUIModelElement aParent, R4EParticipant aParticipant) {

 		super(aParent, aParticipant.getId(), null);  //TODO add email adress as tooltip later

 		fParticipant = aParticipant;

-		setImage(PARTICIPANT_ICON_FILE);

+		

+		final EList<R4EUserRole> roles = fParticipant.getRoles();

+		for (R4EUserRole role : roles) {

+			if (role == R4EUserRole.R4E_ROLE_LEAD) {

+				setImage(PARTICIPANT_LEAD_ICON_FILE);

+				return;

+			} else if (role == R4EUserRole.R4E_ROLE_AUTHOR) {

+				setImage(PARTICIPANT_AUTHOR_ICON_FILE);

+				return;

+			} else if (role == R4EUserRole.R4E_ROLE_ORGANIZER) {

+				setImage(PARTICIPANT_ORGANIZER_ICON_FILE);

+				return;

+			}

+		}

+		setImage(PARTICIPANT_REVIEWER_ICON_FILE);

+		return;

 	}

 

 	

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIParticipantContainer.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIParticipantContainer.java
index 7e897e8..445fd8a 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIParticipantContainer.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIParticipantContainer.java
@@ -22,7 +22,13 @@
 import java.util.Iterator;

 import java.util.List;

 

+import org.eclipse.jface.window.Window;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewComponent;

+import org.eclipse.mylyn.reviews.r4e.core.model.RModelFactory;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

+import org.eclipse.mylyn.reviews.r4e.ui.dialogs.ParticipantInputDialog;

 import org.eclipse.mylyn.reviews.r4e.ui.navigator.ReviewNavigatorContentProvider;

 

 /**

@@ -41,7 +47,19 @@
 	 */

 	private static final String PARTICIPANT_CONTAINER_ICON_FILE = "icons/obj16/partcont_obj.png";

     

+	/**

+	 * Field ADD_ELEMENT_ACTION_NAME.

+	 * (value is ""Add Participant"")

+	 */

+	private static final String ADD_CHILD_ELEMENT_COMMAND_NAME = "Add Participant";

 	

+    /**

+     * Field ADD_ELEMENT_ACTION_TOOLTIP.

+     * (value is ""Add a New Participant to the Current Review"")

+     */

+    private static final String ADD_CHILD_ELEMENT_COMMAND_TOOLTIP = "Add a New Participant to the Current Review";

+

+    

 	// ------------------------------------------------------------------------

 	// Member variables

 	// ------------------------------------------------------------------------

@@ -72,6 +90,32 @@
 	// Methods

 	// ------------------------------------------------------------------------

 	

+	//Attributes

+	

+	/**

+	 * Create a serialization model element object

+	 * @return the new serialization element object

+	 */

+	@Override

+	public R4EReviewComponent createChildModelDataElement() {

+		//Get comment from user and set it in model data

+		R4EParticipant tempParticipant = null;

+		R4EUIModelController.setDialogOpen(true);

+		final ParticipantInputDialog dialog = new ParticipantInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

+				getSite().getWorkbenchWindow().getShell());

+    	final int result = dialog.open();

+    	if (result == Window.OK) {

+    		tempParticipant = RModelFactory.eINSTANCE.createR4EParticipant();

+    		tempParticipant.setId(dialog.getParticipantIdValue());

+    		tempParticipant.getRoles().addAll(dialog.getParticipantRolesValue());

+    		tempParticipant.setFocusArea(dialog.getFocusAreaValue());

+    	}

+    	// else Window.CANCEL

+		R4EUIModelController.setDialogOpen(false);

+    	return tempParticipant;

+	}

+	

+	

 	//Hierarchy

 	

 	/**

@@ -159,6 +203,24 @@
 	}

 

 	/**

+	 * Method createChildren

+	 * @param aModelComponent - the serialization model component object

+	 * @return IR4EUIModelElement

+	 * @throws ResourceHandlingException

+	 * @throws OutOfSyncException 

+	 * @see org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement#createChildren(ReviewNavigatorContentProvider)

+	 */

+	@Override

+	public IR4EUIModelElement createChildren(R4EReviewComponent aModelComponent) throws ResourceHandlingException, OutOfSyncException {

+		final R4EParticipant participant = R4EUIModelController.FModelExt.createR4EParticipant(

+				((R4EUIReview)getParent()).getReview(), ((R4EParticipant)aModelComponent).getId(), ((R4EParticipant)aModelComponent).getRoles());

+		final R4EUIParticipant addedChild = new R4EUIParticipant(this, participant);

+		addedChild.setModelData(aModelComponent);

+		addChildren(addedChild);

+		return addedChild;

+	}

+	

+	/**

 	 * Method removeChildren.

 	 * @param aChildToRemove IR4EUIModelElement

 	 * @param aFileRemove - also remove from file (hard remove)

@@ -218,4 +280,37 @@
 			}

 		}

 	}

+	

+	//Commands

+	

+	/**

+	 * Method isAddChildElementCmd.

+	 * @return boolean

+	 * @see org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement#isAddChildElementCmd()

+	 */

+	@Override

+	public boolean isAddChildElementCmd() {

+		if (getParent().isEnabled() && !(R4EUIModelController.getActiveReview().isReviewed())) return true;

+		return false;

+	}

+	

+	/**

+	 * Method getAddChildElementCmdName.

+	 * @return String

+	 * @see org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement#getAddChildElementCmdName()

+	 */

+	@Override

+	public String getAddChildElementCmdName() {

+		return ADD_CHILD_ELEMENT_COMMAND_NAME;

+	}

+	

+	/**

+	 * Method getAddChildElementCmdTooltip.

+	 * @return String

+	 * @see org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement#getAddChildElementCmdTooltip()

+	 */

+	@Override

+	public String getAddChildElementCmdTooltip() {

+		return ADD_CHILD_ELEMENT_COMMAND_TOOLTIP; 

+	}

 }

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIReview.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIReview.java
index 344e70a..f281d7c 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIReview.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIReview.java
@@ -20,6 +20,7 @@
 

 import java.io.FileNotFoundException;

 import java.util.ArrayList;

+import java.util.Date;

 import java.util.Iterator;

 import java.util.List;

 

@@ -27,14 +28,18 @@
 import org.eclipse.core.resources.IProject;

 import org.eclipse.emf.common.util.EList;

 import org.eclipse.mylyn.reviews.frame.core.model.Item;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EDecision;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EItem;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EReview;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewComponent;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewDecision;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewPhase;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewState;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewType;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EUserReviews;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EUserRole;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.Persistence.RModelFactoryExt;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

 import org.eclipse.mylyn.reviews.r4e.core.utils.ResourceUtils;

@@ -45,7 +50,7 @@
 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

 import org.eclipse.mylyn.reviews.r4e.ui.navigator.ReviewNavigatorContentProvider;

 import org.eclipse.mylyn.reviews.r4e.ui.preferences.PreferenceConstants;

-import org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewProperties;

+import org.eclipse.mylyn.reviews.r4e.ui.properties.general.ReviewProperties;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

 import org.eclipse.ui.views.properties.IPropertySource;

@@ -86,6 +91,33 @@
     private static final String REMOVE_ELEMENT_COMMAND_TOOLTIP = "Disable (and Optionally Remove) this Review from " +

     		"its Parent Review Group";

 	

+	/**

+	 * Field EXIT_DECISION_NONE.

+	 * (value is ""No Decision"")

+	 */

+	private static final String EXIT_DECISION_NONE = "No Decision";

+	/**

+	 * Field EXIT_DECISION_ACCEPTED.

+	 * (value is ""Accepted"")

+	 */

+	private static final String EXIT_DECISION_ACCEPTED = "Accepted";		

+	/**

+	 * Field EXIT_DECISION_ACCEPTED_FOLLOWUP.

+	 * (value is ""Accepted with Follow-up"")

+	 */

+	private static final String EXIT_DECISION_ACCEPTED_FOLLOWUP = "Accepted with Follow-up";

+	/**

+	 * Field EXIT_DECISION_REJECTED.

+	 * (value is ""Rejected"")

+	 */

+	private static final String EXIT_DECISION_REJECTED = "Rejected";

+	

+	/**

+	 * Field decisionValues.

+	 */

+	private static final String[] FDecisionValues = { EXIT_DECISION_NONE, EXIT_DECISION_ACCEPTED,

+		EXIT_DECISION_ACCEPTED_FOLLOWUP, EXIT_DECISION_REJECTED };  //NOTE: This has to match R4EDecision in R4E core plugin

+

 	

 	// ------------------------------------------------------------------------

 	// Member variables

@@ -99,22 +131,22 @@
 	/**

 	 * Field fReviewName.

 	 */

-	private final String fReviewName;

+	protected final String fReviewName;

 	

 	/**

 	 * Field fItems.

 	 */

-	private final List<R4EUIReviewItem> fItems;

+	protected final List<R4EUIReviewItem> fItems;

 	

 	/**

 	 * Field fParticipantsContainer.

 	 */

-	private R4EUIParticipantContainer fParticipantsContainer;

+	protected R4EUIParticipantContainer fParticipantsContainer;

 	

 	/**

 	 * Field fAnomalyContainer.

 	 */

-	private R4EUIAnomalyContainer fAnomalyContainer = null;

+	protected R4EUIAnomalyContainer fAnomalyContainer = null;

 	

 	

 	// ------------------------------------------------------------------------

@@ -125,18 +157,20 @@
 	 * Constructor for R4EUIReview.

 	 * @param aParent R4EUIReviewGroup

 	 * @param aReview R4EReview

+	 * @param aType R4EReviewType

 	 * @param aOpen boolean

 	 * @throws ResourceHandlingException

 	 */

-	public R4EUIReview(R4EUIReviewGroup aParent, R4EReview aReview, boolean aOpen) throws ResourceHandlingException {

-		super(aParent, aReview.getName(), aReview.getExtraNotes());

+	//TODO have different icons for all review types

+	public R4EUIReview(R4EUIReviewGroup aParent, R4EReview aReview, R4EReviewType aType, boolean aOpen) throws ResourceHandlingException {

+		super(aParent, getReviewDisplayName(aReview.getName(), aType), aReview.getExtraNotes());

 		fReview = aReview;

 		fReviewName = aReview.getName();

 		fParticipantsContainer = new R4EUIParticipantContainer(this, R4EUIConstants.PARTICIPANTS_LABEL_NAME);

 		fAnomalyContainer = new R4EUIAnomalyContainer(this, R4EUIConstants.GLOBAL_ANOMALIES_LABEL_NAME);

 		fItems = new ArrayList<R4EUIReviewItem>();

 		if (aOpen) {

-			//Open the new review and make itt the active one (close any other that is open)

+			//Open the new review and make it the active one (close any other that is open)

 			setImage(REVIEW_ICON_FILE);

 			fOpen = true;

 			final List<R4EUserRole> role = new ArrayList<R4EUserRole>(1);

@@ -165,14 +199,34 @@
 	 */

 	@Override

 	public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {

-		if (IR4EUIModelElement.class.equals(adapter)) return this;

-		if (IPropertySource.class.equals(adapter)) return new ReviewProperties(this);

+		if (IR4EUIModelElement.class.equals(adapter)) {

+			return this;

+		}

+		if (IPropertySource.class.equals(adapter)) {

+			return new ReviewProperties(this);

+		}

 		return null;

 	}

 	

 	//Attributes

 	

 	/**

+	 * Method getReviewDisplayName.

+	 * @param aName String

+	 * @param aType R4EReviewType

+	 * @return String

+	 */

+	private static String getReviewDisplayName(String aName, R4EReviewType aType) {

+		if (aType.equals(R4EReviewType.R4E_REVIEW_TYPE_FORMAL)) {

+			return R4EUIConstants.REVIEW_TYPE_FORMAL + ": " + aName;

+		}

+		if (aType.equals(R4EReviewType.R4E_REVIEW_TYPE_INFORMAL)) {

+			return R4EUIConstants.REVIEW_TYPE_INFORMAL + ": " + aName;

+		}

+		return R4EUIConstants.REVIEW_TYPE_BASIC + ": " + aName;		

+	}

+	

+	/**

 	 * Set serialization model data by copying it from the passed-in object

 	 * @param aModelComponent - a serialization model element to copy information from

 	 * @throws ResourceHandlingException

@@ -185,6 +239,14 @@
 		final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(fReview, 

 				R4EUIModelController.getReviewer());

     	fReview.setExtraNotes(((R4EReview)aModelComponent).getExtraNotes());

+    	fReview.setType(((R4EReview)aModelComponent).getType());

+

+    	//Optional properties

+    	fReview.setProject(((R4EReview)aModelComponent).getProject());

+		fReview.getComponents().addAll(((R4EReview)aModelComponent).getComponents());

+		fReview.setEntryCriteria(((R4EReview)aModelComponent).getEntryCriteria());

+    	fReview.setObjectives(((R4EReview)aModelComponent).getObjectives());

+    	fReview.setReferenceMaterial(((R4EReview)aModelComponent).getReferenceMaterial());

     	R4EUIModelController.FResourceUpdater.checkIn(bookNum);

     }

 	

@@ -265,8 +327,10 @@
 		final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(fReview, R4EUIModelController.getReviewer());

 		if (aReviewed) {

 			((R4EReviewState)fReview.getState()).setState(R4EReviewPhase.R4E_REVIEW_PHASE_COMPLETED);

+			fReview.setEndDate(new Date(new Date().getTime()));

 		} else {

 			((R4EReviewState)fReview.getState()).setState(R4EReviewPhase.R4E_REVIEW_PHASE_STARTED);

+			fReview.setEndDate(null);

 		}

     	R4EUIModelController.FResourceUpdater.checkIn(bookNum);

 		fReviewed = aReviewed;

@@ -278,9 +342,8 @@
 				fItems.get(i).setReviewed(aReviewed);

 			}

 		}

-		

-		//TODO maybe we want to set the element as disabled as well?

 		fireReviewStateChanged(this);

+		R4EUIModelController.propertyChanged();

 	}

 	

 	/**

@@ -660,4 +723,55 @@
 	public String getRemoveElementCmdTooltip() {

 		return REMOVE_ELEMENT_COMMAND_TOOLTIP;

 	}

+	

+	/**

+	 * Method getExitDecisionValues.

+	 * @return String[]

+	 */

+	public static String[] getExitDecisionValues() {

+		return FDecisionValues;

+	}

+	

+	/**

+	 * Method getDecisionValueFromString.

+	 * @param aDecision - String

+	 * @return R4EReviewDecision

+	 */

+	public static R4EReviewDecision getDecisionValueFromString(String aDecision) {

+		final R4EReviewDecision reviewDecision = RModelFactoryExt.eINSTANCE.createR4EReviewDecision();

+		if (aDecision.equals(EXIT_DECISION_ACCEPTED)) {

+			reviewDecision.setValue(R4EDecision.R4E_REVIEW_DECISION_ACCEPTED);

+		} else if (aDecision.equals(EXIT_DECISION_ACCEPTED_FOLLOWUP)) {

+			reviewDecision.setValue(R4EDecision.R4E_REVIEW_DECISION_ACCEPTED_FOLLOWUP);

+		} else if (aDecision.equals(EXIT_DECISION_REJECTED)) {

+			reviewDecision.setValue(R4EDecision.R4E_REVIEW_DECISION_REJECTED);

+		} else {

+			reviewDecision.setValue(R4EDecision.R4E_REVIEW_DECISION_NONE);

+		}

+		return reviewDecision;

+	}

+	

+	/**

+	 * Method checkCompletionStatus.

+	 * @return boolean

+	 */

+	public boolean checkCompletionStatus() { // $codepro.audit.disable booleanMethodNamingConvention

+		if (!(fReview.getType().equals(R4EReviewType.R4E_REVIEW_TYPE_BASIC))) {

+			if (null == fReview.getDecision() || null == fReview.getDecision().getValue()) return false;

+			if (fReview.getDecision().getValue().equals(R4EDecision.R4E_REVIEW_DECISION_NONE)) return false;	

+			if (fReview.getDecision().getValue().equals(R4EDecision.R4E_REVIEW_DECISION_REJECTED)) return true;

+			

+			//Check global anomalies state

+			if (!(fAnomalyContainer.checkCompletionStatus())) return false;

+			

+			for (R4EUIReviewItem item : fItems) {

+				R4EUIFileContext[] contexts = (R4EUIFileContext[]) item.getChildren();

+				for (R4EUIFileContext context : contexts) {

+					R4EUIAnomalyContainer container = (R4EUIAnomalyContainer) context.getAnomalyContainerElement();

+					if (!(container.checkCompletionStatus())) return false;

+				}

+			}

+		}

+		return true;

+	}

 }

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIReviewGroup.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIReviewGroup.java
index 37edc6a..8631253 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIReviewGroup.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIReviewGroup.java
@@ -34,14 +34,15 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewGroup;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewPhase;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewState;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewType;

 import org.eclipse.mylyn.reviews.r4e.core.model.RModelFactory;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

-import org.eclipse.mylyn.reviews.r4e.ui.dialogs.R4EReviewInputDialog;

+import org.eclipse.mylyn.reviews.r4e.ui.dialogs.ReviewInputDialog;

 import org.eclipse.mylyn.reviews.r4e.ui.navigator.ReviewNavigatorContentProvider;

 import org.eclipse.mylyn.reviews.r4e.ui.preferences.PreferenceConstants;

-import org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewGroupProperties;

+import org.eclipse.mylyn.reviews.r4e.ui.properties.general.ReviewGroupProperties;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

 import org.eclipse.ui.views.properties.IPropertySource;

@@ -92,25 +93,6 @@
      * (value is ""Remove this review group"")

      */

     private static final String REMOVE_ELEMENT_COMMAND_TOOLTIP = "Disable (and Optionally Remove) this Review Group";

-

-	

-	/**

-	 * Field ADD_REVIEW_DIALOG_TITLE.

-	 * (value is ""Enter Review details"")

-	 */

-	private static final String ADD_REVIEW_DIALOG_TITLE = "Enter Review Details";

-

-	/**

-	 * Field ADD_REVIEW_NAME_DIALOG_VALUE.

-	 * (value is ""Enter the Review name"")

-	 */

-	private static final String ADD_REVIEW_NAME_DIALOG_VALUE = "Enter the Review Name";

-	

-	/**

-	 * Field ADD_REVIEW_DESCRIPTION_DIALOG_VALUE.

-	 * (value is ""Enter the Review Description"")

-	 */

-	private static final String ADD_REVIEW_DESCRIPTION_DIALOG_VALUE = "Enter the Review Description";

 	

 	

 	// ------------------------------------------------------------------------

@@ -205,7 +187,10 @@
     	//Set data in model element

 		final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(fGroup, R4EUIModelController.getReviewer());

 		fGroup.setDescription(((R4EReviewGroup)aModelComponent).getDescription());

-    	R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+		fGroup.getAvailableProjects().addAll(((R4EReviewGroup)aModelComponent).getAvailableProjects());

+		fGroup.getAvailableComponents().addAll(((R4EReviewGroup)aModelComponent).getAvailableComponents());

+		fGroup.setDefaultEntryCriteria(((R4EReviewGroup)aModelComponent).getDefaultEntryCriteria());

+		R4EUIModelController.FResourceUpdater.checkIn(bookNum);

     }

 	

 	/**

@@ -218,14 +203,24 @@
 		//Get comment from user and set it in model data

 		R4EReview tempReview = null;

 		R4EUIModelController.setDialogOpen(true);

-		final R4EReviewInputDialog dialog = new R4EReviewInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

-				getSite().getWorkbenchWindow().getShell(), ADD_REVIEW_DIALOG_TITLE, ADD_REVIEW_NAME_DIALOG_VALUE, 

-				ADD_REVIEW_DESCRIPTION_DIALOG_VALUE);

+		final ReviewInputDialog dialog = new ReviewInputDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

+				getSite().getWorkbenchWindow().getShell(), this);

+		dialog.create();

     	final int result = dialog.open();

     	if (result == Window.OK) {

+    		//All reviews

     		tempReview = RModelFactory.eINSTANCE.createR4EReview();

+    		tempReview.setType(dialog.getReviewTypeValue());

     		tempReview.setName(dialog.getReviewNameValue());

     		tempReview.setExtraNotes(dialog.getReviewDescriptionValue());

+    		//Informal reviews

+    		tempReview.setProject(dialog.getProjectValue());

+    		for (String component : dialog.getComponentsValues()) {

+    			tempReview.getComponents().add(component);

+    		}

+    		tempReview.setEntryCriteria(dialog.getEntryCriteriaValue());

+    		tempReview.setObjectives(dialog.getObjectivesValue());

+    		tempReview.setReferenceMaterial(dialog.getReferenceMaterialValue());

     	}

     	//else Window.CANCEL

 		R4EUIModelController.setDialogOpen(false);

@@ -274,7 +269,7 @@
 				review = (R4EReview)reviews.get(i);

 				if (review.isEnabled() || Activator.getDefault().getPreferenceStore().

 						getBoolean(PreferenceConstants.P_SHOW_DISABLED)) {

-					R4EUIReview uiReview = new R4EUIReview(this, review, false);

+					R4EUIReview uiReview = new R4EUIReview(this, review, review.getType(), false);

 					addChildren(uiReview);

 					

 					//Check if this review is completed

@@ -369,6 +364,7 @@
 	public IR4EUIModelElement createChildren(R4EReviewComponent aModelComponent) throws ResourceHandlingException, OutOfSyncException {

 		

 		final String reviewName = ((R4EReview)aModelComponent).getName();

+		final R4EReviewType type = ((R4EReview)aModelComponent).getType();

 		

 		//Check if group already exists.  If so it cannot be recreated

 		for (R4EUIReview review : fReviews) {

@@ -383,7 +379,7 @@
 		

 		final R4EUIReview addedChild = new R4EUIReview(this, 

 				R4EUIModelController.FModelExt.createR4EReview(getReviewGroup(), reviewName, 

-						R4EUIModelController.getReviewer()), true);

+						R4EUIModelController.getReviewer()), type, true);

 		addedChild.setModelData(aModelComponent);

 		addChildren(addedChild);

 		return addedChild;

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIReviewItem.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIReviewItem.java
index 6fbbfbb..7642960 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIReviewItem.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUIReviewItem.java
@@ -43,7 +43,7 @@
 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

 import org.eclipse.mylyn.reviews.r4e.ui.navigator.ReviewNavigatorContentProvider;

 import org.eclipse.mylyn.reviews.r4e.ui.preferences.PreferenceConstants;

-import org.eclipse.mylyn.reviews.r4e.ui.properties.ReviewItemProperties;

+import org.eclipse.mylyn.reviews.r4e.ui.properties.general.ReviewItemProperties;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

 import org.eclipse.ui.views.properties.IPropertySource;

@@ -534,7 +534,7 @@
 	 */

 	@Override

 	public boolean isChangeReviewStateCmd() {

-		if (isEnabled()) return true;

+		if (isEnabled() && !(R4EUIModelController.getActiveReview().isReviewed())) return true;

 		return false;

 	}

 	

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUISelection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUISelection.java
index 4b15266..9a74460 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUISelection.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/model/R4EUISelection.java
@@ -23,7 +23,7 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

-import org.eclipse.mylyn.reviews.r4e.ui.properties.SelectionProperties;

+import org.eclipse.mylyn.reviews.r4e.ui.properties.general.SelectionProperties;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

 import org.eclipse.ui.views.properties.IPropertySource;

 

@@ -246,7 +246,7 @@
 	 */

 	@Override

 	public boolean isAddLinkedAnomalyCmd() {

-		if (isEnabled()) return true;

+		if (isEnabled() && !(R4EUIModelController.getActiveReview().isReviewed())) return true;

 		return false;

 	}

 	

@@ -268,7 +268,7 @@
 	 */

 	@Override

 	public boolean isChangeReviewStateCmd() {

-		if (isEnabled()) return true;

+		if (isEnabled() && !(R4EUIModelController.getActiveReview().isReviewed())) return true;

 		return false;

 	}

 	

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/navigator/ReviewNavigatorView.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/navigator/ReviewNavigatorView.java
index 15dae2e..51f666a 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/navigator/ReviewNavigatorView.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/navigator/ReviewNavigatorView.java
@@ -229,7 +229,7 @@
 		hookListeners();

 		final IEclipsePreferences node = new InstanceScope().getNode(Activator.PLUGIN_ID);

 		node.addPreferenceChangeListener(this);

-		R4EUIModelController.addDialogStateListener(this);

+		R4EUIModelController.addElementStateListener(this);

 		

         //Apply default filters

         applyDefaultFilters();

@@ -333,7 +333,7 @@
 						IR4EUIModelElement element = (IR4EUIModelElement) selection.getFirstElement();

 						

 						//Find the parent FileContextElement

-						while (element != null && !(element instanceof R4EUIFileContext)) {

+						while (null != element && !(element instanceof R4EUIFileContext)) {

 							element = element.getParent();

 						}

 						if (null == element) return;

@@ -438,11 +438,11 @@
 												IR4EUIModelElement selectedElement = 

 													(IR4EUIModelElement) ((IStructuredSelection)fReviewTreeViewer.getSelection()).getFirstElement();

 												IR4EUIModelElement fileContextElement = selectedElement;

-												while (fileContextElement != null && !(fileContextElement instanceof R4EUIFileContext)) {

+												while (null != fileContextElement && !(fileContextElement instanceof R4EUIFileContext)) {

 													fileContextElement = fileContextElement.getParent();

 												}

 												if (null != fileContextElement) {

-													if (fileContextElement == navigatorFile) return;   //Correct selection already set

+													if (fileContextElement.equals(navigatorFile)) return;   //Correct selection already set

 												}

 												//selection to the file context corresponding to the editor input

 												fReviewTreeViewer.setSelection(new StructuredSelection(navigatorFile), true);

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/AnomalyTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/AnomalyTabPropertySection.java
deleted file mode 100644
index e285ea6..0000000
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/AnomalyTabPropertySection.java
+++ /dev/null
@@ -1,321 +0,0 @@
-// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, staticFieldSecurity, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, com.instantiations.assist.eclipse.analysis.instanceFieldSecurity

-/*******************************************************************************

- * Copyright (c) 2010 Ericsson Research Canada

- * 

- * All rights reserved. This program and the accompanying materials are

- * made available under the terms of the Eclipse Public License v1.0 which

- * accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Description:

- * 

- * This class implements the tabbed property section for the Anomaly model element

- * 

- * Contributors:

- *   Sebastien Dubois - Created for Mylyn Review R4E project

- *   

- ******************************************************************************/

-

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

-

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.StructuredSelection;

-import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly;

-import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

-import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

-import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

-import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIPosition;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomaly;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.custom.CLabel;

-import org.eclipse.swt.events.ModifyEvent;

-import org.eclipse.swt.events.ModifyListener;

-import org.eclipse.swt.layout.FormAttachment;

-import org.eclipse.swt.layout.FormData;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Text;

-import org.eclipse.ui.IPropertyListener;

-import org.eclipse.ui.IWorkbenchPart;

-import org.eclipse.ui.views.properties.IPropertySource;

-import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;

-import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

-import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

-import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

-

-/**

- * @author lmcdubo

- * @version $Revision: 1.0 $

- */

-public class AnomalyTabPropertySection extends AbstractPropertySection implements IPropertyListener {

-	

-	// ------------------------------------------------------------------------

-	// Member variables

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Field fAnomaly.

-	 */

-	protected AnomalyProperties fAnomalyProps;

-	

-	/**

-	 * Field fPosition.

-	 */

-	private IR4EUIPosition fPosition;

-	

-	/**

-	 * Field FTitleText.

-	 */

-	protected static Text FTitleText = null;

-	

-	/**

-	 * Field FAuthorText.

-	 */

-	protected static Text FAuthorText = null;

-	

-	/**

-	 * Field FCreationDateText.

-	 */

-	protected static Text FCreationDateText = null;

-	

-	/**

-	 * Field FPositionText.

-	 */

-	protected static Text FPositionText = null;

-	

-	/**

-	 * Field FDescriptionText.

-	 */

-	protected static Text FDescriptionText = null;

-

-	/**

-	 * Field fRefreshInProgress.

-	 */

-	private boolean fRefreshInProgress = false;

-

-	

-	// ------------------------------------------------------------------------

-	// Methods

-	// ------------------------------------------------------------------------

-

-	/**

-	 * Method dispose.

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#dispose()

-	 */

-	@Override

-	public void dispose() {

-		super.dispose();

-		R4EUIModelController.removeDialogStateListener(this);

-	}

-	

-	/**

-	 * Method createControls.

-	 * @param parent Composite

-	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

-	 */

-	@Override

-	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

-		super.createControls(parent, aTabbedPropertySheetPage);

-		R4EUIModelController.addDialogStateListener(this);

-

-		//Tell element to build its own detailed tab layout

-		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

-		final Composite composite = widgetFactory.createFlatFormComposite(parent);

-	    FormData data = null;

-	   

-	    //Anomaly title

-	    FTitleText = widgetFactory.createText(composite, "");

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

-	    FTitleText.setLayoutData(data);

-	    FTitleText.addModifyListener(new ModifyListener() {			 // $codepro.audit.disable com.instantiations.assist.eclipse.analysis.avoidInnerClasses

-			@SuppressWarnings("synthetic-access")

-			public void modifyText(ModifyEvent e) {

-				if (!fRefreshInProgress) {

-					try {

-						final String currentUser = R4EUIModelController.getReviewer();

-						final R4EAnomaly modelAnomaly = ((R4EUIAnomaly)fAnomalyProps.getElement()).getAnomaly();

-						final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelAnomaly, currentUser);

-						modelAnomaly.setTitle(FTitleText.getText());

-						R4EUIModelController.FResourceUpdater.checkIn(bookNum);

-					} catch (ResourceHandlingException e1) {

-						UIUtils.displayResourceErrorDialog(e1);

-					} catch (OutOfSyncException e1) {

-						UIUtils.displaySyncErrorDialog(e1);

-					}

-				}

-			}

-		});

-

-	    final CLabel titleLabel = widgetFactory.createCLabel(composite, R4EUIConstants.TITLE_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FTitleText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FTitleText, 0, SWT.CENTER);

-	    titleLabel.setLayoutData(data);

-	    

-	    //Anomaly Author (read-only)

-	    FAuthorText = widgetFactory.createText(composite, "");

-	    FAuthorText.setEditable(false);

-	    FAuthorText.setEnabled(false);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FTitleText, ITabbedPropertyConstants.VSPACE);

-	    FAuthorText.setLayoutData(data);

-	

-	    final CLabel authorLabel = widgetFactory.createCLabel(composite, R4EUIConstants.AUTHOR_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FAuthorText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FAuthorText, 0, SWT.CENTER);

-	    authorLabel.setLayoutData(data);

-	

-	    //Anomaly Creation Date (read-only)

-	    FCreationDateText = widgetFactory.createText(composite, "");

-	    FCreationDateText.setEditable(false);

-	    FCreationDateText.setEnabled(false);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FAuthorText, ITabbedPropertyConstants.VSPACE);

-	    FCreationDateText.setLayoutData(data);

-	

-	    final CLabel creationDateLabel = widgetFactory.createCLabel(composite, R4EUIConstants.CREATION_DATE_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FCreationDateText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FCreationDateText, 0, SWT.CENTER);

-	    creationDateLabel.setLayoutData(data);

-	    

-	    //Anomaly position (read-only)

-	    FPositionText = widgetFactory.createText(composite, "");

-	    FPositionText.setEditable(false);

-	    FPositionText.setEnabled(false);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FCreationDateText, ITabbedPropertyConstants.VSPACE);

-	    FPositionText.setLayoutData(data);

-	

-	    final CLabel positionLabel = widgetFactory.createCLabel(composite, R4EUIConstants.POSITION_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FPositionText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FPositionText, 0, SWT.CENTER);

-	    positionLabel.setLayoutData(data);

-	    

-	    //Review Description

-	    FDescriptionText = widgetFactory.createText(composite, "", SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FPositionText, ITabbedPropertyConstants.VSPACE);

-	    data.bottom = new FormAttachment(100, -ITabbedPropertyConstants.VSPACE); // $codepro.audit.disable numericLiterals

-	    FDescriptionText.setLayoutData(data);

-	    FDescriptionText.addModifyListener(new ModifyListener() {			 // $codepro.audit.disable com.instantiations.assist.eclipse.analysis.avoidInnerClasses

-	    	@SuppressWarnings("synthetic-access")

-			public void modifyText(ModifyEvent e) {

-	    		if (!fRefreshInProgress) {

-	    			try {

-	    				final String currentUser = R4EUIModelController.getReviewer();

-						final R4EAnomaly modelAnomaly = ((R4EUIAnomaly)fAnomalyProps.getElement()).getAnomaly();

-	    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelAnomaly, currentUser);

-	    				modelAnomaly.setDescription(FDescriptionText.getText());

-	    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

-	    			} catch (ResourceHandlingException e1) {

-	    				UIUtils.displayResourceErrorDialog(e1);

-	    			} catch (OutOfSyncException e1) {

-	    				UIUtils.displaySyncErrorDialog(e1);

-	    			}

-	    		}

-	    	}

-	    });

-	    

-	    final CLabel descriptionLabel = widgetFactory.createCLabel(composite, R4EUIConstants.DESCRIPTION_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FDescriptionText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FDescriptionText, 0, SWT.TOP);

-	    descriptionLabel.setLayoutData(data);

-	}

-		

-	/**

-	 * Method setInput.

-	 * @param part IWorkbenchPart

-	 * @param aSelection ISelection

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#setInput(IWorkbenchPart, ISelection)

-	 */

-	@Override

-	public void setInput(IWorkbenchPart part, ISelection aSelection) {

-		//Get current selection.

-		if (null == aSelection || aSelection.isEmpty()) return;

-		

-		//Get model element selected

-		final IR4EUIModelElement element = (IR4EUIModelElement) ((StructuredSelection)aSelection).getFirstElement();

-		if (null != element && element instanceof R4EUIAnomaly) {

-			fAnomalyProps = (AnomalyProperties) ((R4EUIAnomaly)element).getAdapter(IPropertySource.class);

-			refresh();

-		}

-	}

-

-	/**

-	 * Method refresh.

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

-	 */

-	@Override

-	public void refresh() {

-		fRefreshInProgress = true;

-		final R4EAnomaly modelAnomaly = ((R4EUIAnomaly)fAnomalyProps.getElement()).getAnomaly();

-		FTitleText.setText(modelAnomaly.getTitle());

-		FAuthorText.setText(modelAnomaly.getUser().getId());

-		FCreationDateText.setText(modelAnomaly.getCreatedOn().toString());

-		fPosition = ((R4EUIAnomaly)fAnomalyProps.getElement()).getPosition();

-		if (null == fPosition) {

-			FPositionText.setText(R4EUIConstants.GLOBAL_ANOMALY_PROPERTY_VALUE);

-		} else {

-			FPositionText.setText(fPosition.toString());

-		}

-		FDescriptionText.setText(modelAnomaly.getDescription());

-		setEnabledFields();

-		fRefreshInProgress = false;

-	}

-

-	/**

-	 * Method shouldUseExtraSpace.

-	 * @return boolean

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#shouldUseExtraSpace()

-	 */

-	@Override

-	public boolean shouldUseExtraSpace() {

-		return true;

-	}

-

-	/**

-	 * Method propertyChanged.

-	 * @param source Object

-	 * @param propId int

-	 * @see org.eclipse.ui.IPropertyListener#propertyChanged(Object, int)

-	 */

-	public void propertyChanged(Object source, int propId) {

-		setEnabledFields();

-	}

-	

-	/**

-	 * Method setEditableFields.

-	 */

-	private void setEnabledFields() {

-		if (R4EUIModelController.isDialogOpen()) {

-			FTitleText.setEnabled(false);

-			FDescriptionText.setEnabled(false);

-		} else {

-			FTitleText.setEnabled(true);

-			FDescriptionText.setEnabled(true);

-		}

-	}

-}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/CommentTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/CommentTabPropertySection.java
deleted file mode 100644
index 435bdb9..0000000
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/CommentTabPropertySection.java
+++ /dev/null
@@ -1,246 +0,0 @@
-// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, staticFieldSecurity, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, com.instantiations.assist.eclipse.analysis.instanceFieldSecurity, sourceLength, explicitThisUsage

-/*******************************************************************************

- * Copyright (c) 2010 Ericsson Research Canada

- * 

- * All rights reserved. This program and the accompanying materials are

- * made available under the terms of the Eclipse Public License v1.0 which

- * accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Description:

- * 

- * This class implements the tabbed property section for the Comment model element

- * 

- * Contributors:

- *   Sebastien Dubois - Created for Mylyn Review R4E project

- *   

- ******************************************************************************/

-

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

-

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.StructuredSelection;

-import org.eclipse.mylyn.reviews.r4e.core.model.R4EComment;

-import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

-import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

-import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIComment;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.custom.CLabel;

-import org.eclipse.swt.events.ModifyEvent;

-import org.eclipse.swt.events.ModifyListener;

-import org.eclipse.swt.layout.FormAttachment;

-import org.eclipse.swt.layout.FormData;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Text;

-import org.eclipse.ui.IPropertyListener;

-import org.eclipse.ui.IWorkbenchPart;

-import org.eclipse.ui.views.properties.IPropertySource;

-import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;

-import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

-import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

-import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

-

-/**

- * @author lmcdubo

- * @version $Revision: 1.0 $

- */

-public class CommentTabPropertySection extends AbstractPropertySection implements IPropertyListener {

-	

-	// ------------------------------------------------------------------------

-	// Member variables

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Field fComment.

-	 */

-	private CommentProperties fCommentProps;

-	

-	/**

-	 * Field FAuthorText.

-	 */

-	protected static Text FAuthorText = null;

-	

-	/**

-	 * Field FCreationDateText.

-	 */

-	protected static Text FCreationDateText = null;

-	

-	/**

-	 * Field FDescriptionText.

-	 */

-	protected static Text FDescriptionText = null;

-	

-	/**

-	 * Field fRefreshInProgress.

-	 */

-	private boolean fRefreshInProgress = false;

-

-	

-	// ------------------------------------------------------------------------

-	// Methods

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Method dispose.

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#dispose()

-	 */

-	@Override

-	public void dispose() {

-		super.dispose();

-		R4EUIModelController.removeDialogStateListener(this);

-	}

-	

-	/**

-	 * Method createControls.

-	 * @param parent Composite

-	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

-	 */

-	@Override

-	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

-		super.createControls(parent, aTabbedPropertySheetPage);

-		R4EUIModelController.addDialogStateListener(this);

-

-		//Tell element to build its own detailed tab layout

-		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

-		final Composite composite = widgetFactory.createFlatFormComposite(parent);

-	    FormData data = null;

-	   

-	    //Author (read-only)

-	    FAuthorText = widgetFactory.createText(composite, "");

-	    FAuthorText.setEditable(false);

-	    FAuthorText.setEnabled(false);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

-	    FAuthorText.setLayoutData(data);

-

-	    final CLabel authorLabel = widgetFactory.createCLabel(composite, R4EUIConstants.AUTHOR_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FAuthorText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FAuthorText, 0, SWT.CENTER);

-	    authorLabel.setLayoutData(data);

-	    

-	    //Creation Date (read-only)

-	    FCreationDateText = widgetFactory.createText(composite, "");

-	    FCreationDateText.setEditable(false);

-	    FCreationDateText.setEnabled(false);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FAuthorText, ITabbedPropertyConstants.VSPACE);

-	    FCreationDateText.setLayoutData(data);

-	

-	    final CLabel creationDateLabel = widgetFactory.createCLabel(composite, R4EUIConstants.CREATION_DATE_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FCreationDateText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FCreationDateText, 0, SWT.CENTER);

-	    creationDateLabel.setLayoutData(data);

-	

-	    //Description

-	    FDescriptionText = widgetFactory.createText(composite, "", SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FCreationDateText, ITabbedPropertyConstants.VSPACE);

-	    data.bottom = new FormAttachment(100, -ITabbedPropertyConstants.VSPACE); // $codepro.audit.disable numericLiterals

-	    FDescriptionText.setLayoutData(data);

-	    FDescriptionText.addModifyListener(new ModifyListener() {			 // $codepro.audit.disable com.instantiations.assist.eclipse.analysis.avoidInnerClasses

-			@SuppressWarnings("synthetic-access")

-			public void modifyText(ModifyEvent e) {

-				if (!fRefreshInProgress) {

-					try {

-						final String currentUser = R4EUIModelController.getReviewer();

-						final R4EComment modelComment = ((R4EUIComment)fCommentProps.getElement()).getComment();

-						final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelComment, currentUser);

-						modelComment.setDescription(FDescriptionText.getText());

-						R4EUIModelController.FResourceUpdater.checkIn(bookNum);

-					} catch (ResourceHandlingException e1) {

-						UIUtils.displayResourceErrorDialog(e1);

-					} catch (OutOfSyncException e1) {

-						UIUtils.displaySyncErrorDialog(e1);

-					}

-				}

-			}

-		});

-		

-	    final CLabel descriptionLabel = widgetFactory.createCLabel(composite, R4EUIConstants.DESCRIPTION_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FDescriptionText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FDescriptionText, 0, SWT.TOP);

-	    descriptionLabel.setLayoutData(data);

-	}

-		

-	/**

-	 * Method setInput.

-	 * @param part IWorkbenchPart

-	 * @param aSelection ISelection

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#setInput(IWorkbenchPart, ISelection)

-	 */

-	@Override

-	public void setInput(IWorkbenchPart part, ISelection aSelection) {

-		//Get current selection.

-		if (null == aSelection || aSelection.isEmpty()) return;

-		

-		//Get model element selected

-		final IR4EUIModelElement element = (IR4EUIModelElement) ((StructuredSelection)aSelection).getFirstElement();

-		if (null != element && element instanceof R4EUIComment) {

-			fCommentProps = (CommentProperties) ((R4EUIComment)element).getAdapter(IPropertySource.class);

-			refresh();

-		}

-	}

-

-	/**

-	 * Method refresh.

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

-	 */

-	@Override

-	public void refresh() {

-		fRefreshInProgress = true;

-		final R4EComment modelComment = ((R4EUIComment)fCommentProps.getElement()).getComment();

-		FAuthorText.setText(modelComment.getUser().getId());

-		FCreationDateText.setText(modelComment.getCreatedOn().toString());

-		FDescriptionText.setText(modelComment.getDescription());

-		setEnabledFields();

-		fRefreshInProgress = false;

-	}

-	

-	/**

-	 * Method shouldUseExtraSpace.

-	 * @return boolean

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#shouldUseExtraSpace()

-	 */

-	@Override

-	public boolean shouldUseExtraSpace() {

-		return true;

-	}

-

-	/**

-	 * Method propertyChanged.

-	 * @param source Object

-	 * @param propId int

-	 * @see org.eclipse.ui.IPropertyListener#propertyChanged(Object, int)

-	 */

-	public void propertyChanged(Object source, int propId) {

-		setEnabledFields();

-	}

-	

-	/**

-	 * Method setEditableFields.

-	 */

-	private void setEnabledFields() {

-		if (R4EUIModelController.isDialogOpen()) {

-			FDescriptionText.setEnabled(false);

-		} else {

-			FDescriptionText.setEnabled(true);

-		}

-	}

-}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ParticipantProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ParticipantProperties.java
deleted file mode 100644
index 678c7ef..0000000
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ParticipantProperties.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2011 Ericsson Research Canada

- * 

- * All rights reserved. This program and the accompanying materials are

- * made available under the terms of the Eclipse Public License v1.0 which

- * accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Description:

- * 

- * This class encapsulates the properties for the Participant UI model element

- * 

- * Contributors:

- *   Sebastien Dubois - Created for Mylyn Review R4E project

- *   

- ******************************************************************************/

-

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

-

-import org.eclipse.emf.common.util.EList;

-import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly;

-import org.eclipse.mylyn.reviews.r4e.core.model.R4EComment;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelElement;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIParticipant;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

-import org.eclipse.ui.views.properties.IPropertyDescriptor;

-import org.eclipse.ui.views.properties.PropertyDescriptor;

-

-/**

- * @author lmcdubo

- * @version $Revision: 1.0 $

- */

-public class ParticipantProperties extends ModelElementProperties {

-

-	// ------------------------------------------------------------------------

-	// Constants

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Field PARTICIPANT_ID. (value is ""participantElement.id"")

-	 */

-	private static final String PARTICIPANT_ID = "participantElement.id";

-

-	/**

-	 * Field PARTICIPANT_PROPERTY_DESCRIPTOR.

-	 */

-	private static final PropertyDescriptor PARTICIPANT_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

-			PARTICIPANT_ID, R4EUIConstants.ID_LABEL);

-	

-	/**

-	 * Field PARTICIPANT_NUM_ITEMS_ID. (value is ""participantElement.numItems"")

-	 */

-	private static final String PARTICIPANT_NUM_ITEMS_ID = "participantElement.numItems";

-

-	/**

-	 * Field PARTICIPANT_NUM_ITEMS_PROPERTY_DESCRIPTOR.

-	 */

-	private static final PropertyDescriptor PARTICIPANT_NUM_ITEMS_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

-			PARTICIPANT_NUM_ITEMS_ID, R4EUIConstants.NUM_ITEMS_LABEL);

-	

-	/**

-	 * Field PARTICIPANT_NUM_ANOMALIES_ID. (value is ""participantElement.numAnomalies"")

-	 */

-	private static final String PARTICIPANT_NUM_ANOMALIES_ID = "participantElement.numAnomalies";

-

-	/**

-	 * Field PARTICIPANT_NUM_ANOMALIES_PROPERTY_DESCRIPTOR.

-	 */

-	private static final PropertyDescriptor PARTICIPANT_NUM_ANOMALIES_PROPERTY_DESCR = new PropertyDescriptor(

-			PARTICIPANT_NUM_ANOMALIES_ID, R4EUIConstants.NUM_ANOMALIES_LABEL);

-	

-	/**

-	 * Field PARTICIPANT_NUM_COMMENTS_ID. (value is ""participantElement.numComments"")

-	 */

-	private static final String PARTICIPANT_NUM_COMMENTS_ID = "participantElement.numComments";

-

-	/**

-	 * Field PARTICIPANT_NUM_COMMENTS_PROPERTY_DESCRIPTOR.

-	 */

-	private static final PropertyDescriptor PARTICIPANT_NUM_COMMENTS_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

-			PARTICIPANT_NUM_COMMENTS_ID, R4EUIConstants.NUM_COMMENTS_LABEL);

-	

-	/**

-	 * Field DESCRIPTORS.

-	 */

-	private static final IPropertyDescriptor[] DESCRIPTORS = { PARTICIPANT_PROPERTY_DESCRIPTOR,  

-		PARTICIPANT_NUM_ITEMS_PROPERTY_DESCRIPTOR, PARTICIPANT_NUM_ANOMALIES_PROPERTY_DESCR, 

-		PARTICIPANT_NUM_COMMENTS_PROPERTY_DESCRIPTOR };

-	

-	

-	// ------------------------------------------------------------------------

-	// Constructors

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Constructor for ParticipantProperties.

-	 * @param aElement R4EUIModelElement

-	 */

-	public ParticipantProperties(R4EUIModelElement aElement) {

-		super(aElement);

-	}

-

-	

-	// ------------------------------------------------------------------------

-	// Methods

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Method getPropertyDescriptors.

-	 * @return IPropertyDescriptor[]

-	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()

-	 */

-	@Override

-	public IPropertyDescriptor[] getPropertyDescriptors() {

-		return DESCRIPTORS;

-	}

-

-	/**

-	 * Method getPropertyValue.

-	 * @param aId Object

-	 * @return Object

-	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(Object)

-	 */

-

-	@Override

-	public Object getPropertyValue(Object aId) {

-		if (PARTICIPANT_ID.equals(aId)) { 

-			return ((R4EUIParticipant)getElement()).getParticipant().getId();

-		} else if (PARTICIPANT_NUM_ITEMS_ID.equals(aId)) {

-			return Integer.valueOf(((R4EUIParticipant)getElement()).getParticipant().getAddedItems().size());

-		} else if (PARTICIPANT_NUM_ANOMALIES_ID.equals(aId)) {

-			int numAnomalies = 0;

-			final EList<R4EComment> comments = ((R4EUIParticipant)getElement()).getParticipant().getAddedComments();

-			final int commentsSize = comments.size();

-			for (int i = 0; i < commentsSize; i++) {

-				if (comments.get(i) instanceof R4EAnomaly) {

-					++numAnomalies;

-				}

-			}

-			return Integer.valueOf(numAnomalies);

-		} else if (PARTICIPANT_NUM_COMMENTS_ID.equals(aId)) {

-			int numComments = 0;

-			final EList<R4EComment> comments = ((R4EUIParticipant)getElement()).getParticipant().getAddedComments();

-			final int commentsSize = comments.size();

-			for (int i = 0; i < commentsSize; i++) {

-				if (!(comments.get(i) instanceof R4EAnomaly)) {

-					++numComments;

-				}

-			}

-			return Integer.valueOf(numComments);

-		}

-		return null;

-	}

-}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ParticipantTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ParticipantTabPropertySection.java
deleted file mode 100644
index fc6eb19..0000000
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ParticipantTabPropertySection.java
+++ /dev/null
@@ -1,215 +0,0 @@
-// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, staticFieldSecurity, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, explicitThisUsage

-/*******************************************************************************

- * Copyright (c) 2010 Ericsson Research Canada

- * 

- * All rights reserved. This program and the accompanying materials are

- * made available under the terms of the Eclipse Public License v1.0 which

- * accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Description:

- * 

- * This class implements the tabbed property section for the Participant model 

- * element

- * 

- * Contributors:

- *   Sebastien Dubois - Created for Mylyn Review R4E project

- *   

- ******************************************************************************/

-

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

-

-import org.eclipse.emf.common.util.EList;

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.StructuredSelection;

-import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly;

-import org.eclipse.mylyn.reviews.r4e.core.model.R4EComment;

-import org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant;

-import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIParticipant;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.custom.CLabel;

-import org.eclipse.swt.layout.FormAttachment;

-import org.eclipse.swt.layout.FormData;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Display;

-import org.eclipse.swt.widgets.Text;

-import org.eclipse.ui.IWorkbenchPart;

-import org.eclipse.ui.views.properties.IPropertySource;

-import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;

-import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

-import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

-import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

-

-/**

- * @author lmcdubo

- * @version $Revision: 1.0 $

- */

-public class ParticipantTabPropertySection extends AbstractPropertySection {

-	

-	// ------------------------------------------------------------------------

-	// Member variables

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Field fParticipant.

-	 */

-	private ParticipantProperties fParticipantProps;

-	

-	//Properties

-	/**

-	 * Field FIdText.

-	 */

-	protected static Text FIdText = null;

-	

-	/**

-	 * Field FNumItemsText.

-	 */

-	protected static Text FNumItemsText = null;

-	

-	/**

-	 * Field FNumAnomaliesText.

-	 */

-	protected static Text FNumAnomaliesText = null;

-	

-	/**

-	 * Field FNumCommentsText.

-	 */

-	protected static Text FNumCommentsText = null;

-	

-	

-	// ------------------------------------------------------------------------

-	// Methods

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Method createControls.

-	 * @param parent Composite

-	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

-	 */

-	@Override

-	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

-		super.createControls(parent, aTabbedPropertySheetPage);

-

-		//Tell element to build its own detailed tab layout

-		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

-		final Composite composite = widgetFactory.createFlatFormComposite(parent);

-	    FormData data = null;

-	   

-	    //Author (read-only)

-	    FIdText = widgetFactory.createText(composite, "");

-	    FIdText.setEditable(false);

-	    FIdText.setEnabled(false);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

-	    FIdText.setLayoutData(data);

-

-

-	    final CLabel idLabel = widgetFactory.createCLabel(composite, R4EUIConstants.ID_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FIdText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FIdText, 0, SWT.CENTER);

-	    idLabel.setLayoutData(data);

-	    

-	    //Number of Review Items added (read-only)

-	    FNumItemsText = widgetFactory.createText(composite, "");

-	    FNumItemsText.setEditable(false);

-	    FNumItemsText.setEnabled(false);

-	    FNumItemsText.setBackground(Display.getDefault().getSystemColor( SWT.COLOR_WIDGET_LIGHT_SHADOW));

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FIdText, ITabbedPropertyConstants.VSPACE);

-	    FNumItemsText.setLayoutData(data);

-	

-	    final CLabel numItemsLabel = widgetFactory.createCLabel(composite, R4EUIConstants.NUM_ITEMS_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FNumItemsText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FNumItemsText, 0, SWT.CENTER);

-	    numItemsLabel.setLayoutData(data);

-	    

-	    //Number of Anomalies added (read-only)

-	    FNumAnomaliesText = widgetFactory.createText(composite, "");

-	    FNumAnomaliesText.setEditable(false);

-	    FNumAnomaliesText.setEnabled(false);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FNumItemsText, ITabbedPropertyConstants.VSPACE);

-	    FNumAnomaliesText.setLayoutData(data);

-	

-	    final CLabel numAnomaliesLabel = widgetFactory.createCLabel(composite, R4EUIConstants.NUM_ANOMALIES_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FNumAnomaliesText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FNumAnomaliesText, 0, SWT.CENTER);

-	    numAnomaliesLabel.setLayoutData(data);

-	    

-	    //Number of Comments added (read-only)

-	    FNumCommentsText = widgetFactory.createText(composite, "");

-	    FNumCommentsText.setEditable(false);

-	    FNumCommentsText.setEnabled(false);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FNumAnomaliesText, ITabbedPropertyConstants.VSPACE);

-	    FNumCommentsText.setLayoutData(data);

-	

-	    final CLabel numCommentsLabel = widgetFactory.createCLabel(composite, R4EUIConstants.NUM_COMMENTS_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FNumCommentsText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FNumCommentsText, 0, SWT.CENTER);

-	    numCommentsLabel.setLayoutData(data);

-	}

-		

-	/**

-	 * Method setInput.

-	 * @param part IWorkbenchPart

-	 * @param aSelection ISelection

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#setInput(IWorkbenchPart, ISelection)

-	 */

-	@Override

-	public void setInput(IWorkbenchPart part, ISelection aSelection) {

-		//Get current selection.

-		if (null == aSelection || aSelection.isEmpty()) return;

-		

-		//Get model element selected

-		final IR4EUIModelElement element = (IR4EUIModelElement) ((StructuredSelection)aSelection).getFirstElement();

-		if (null != element && element instanceof R4EUIParticipant) {

-			fParticipantProps = (ParticipantProperties) ((R4EUIParticipant)element).getAdapter(IPropertySource.class);

-			refresh();

-		}

-	}

-

-	/**

-	 * Method refresh.

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

-	 */

-	@Override

-	public void refresh() {

-		final R4EParticipant modelUser = ((R4EUIParticipant)fParticipantProps.getElement()).getParticipant();

-		FIdText.setText(modelUser.getId());

-		FNumItemsText.setText(String.valueOf(modelUser.getAddedItems().size()));

-

-		int numAnomalies = 0;

-		int numComments = 0;

-		final EList<R4EComment> comments = modelUser.getAddedComments();

-		final int commentsSize = comments.size();

-		for (int i = 0; i < commentsSize; i++) {

-			if (comments.get(i) instanceof R4EAnomaly) {

-				++numAnomalies;

-			} else {

-				++numComments;

-			}

-		}

-		FNumAnomaliesText.setText(String.valueOf(numAnomalies));

-		FNumCommentsText.setText(String.valueOf(numComments));

-	}

-}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewProperties.java
deleted file mode 100644
index aa1b403..0000000
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewProperties.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2011 Ericsson Research Canada

- * 

- * All rights reserved. This program and the accompanying materials are

- * made available under the terms of the Eclipse Public License v1.0 which

- * accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Description:

- * 

- * This class encapsulates the properties for the Review UI model element

- * 

- * Contributors:

- *   Sebastien Dubois - Created for Mylyn Review R4E project

- *   

- ******************************************************************************/

-

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

-

-import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

-import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelElement;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReview;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

-import org.eclipse.ui.views.properties.IPropertyDescriptor;

-import org.eclipse.ui.views.properties.PropertyDescriptor;

-import org.eclipse.ui.views.properties.TextPropertyDescriptor;

-

-/**

- * @author lmcdubo

- * @version $Revision: 1.0 $

- */

-public class ReviewProperties extends ModelElementProperties {

-

-	// ------------------------------------------------------------------------

-	// Constants

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Field REVIEW_NAME_ID. (value is ""reviewElement.name"")

-	 */

-	private static final String REVIEW_NAME_ID = "reviewElement.name";

-

-	/**

-	 * Field REVIEW_NAME_PROPERTY_DESCRIPTOR.

-	 */

-	private static final TextPropertyDescriptor REVIEW_NAME_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

-			REVIEW_NAME_ID, R4EUIConstants.NAME_LABEL);

-

-	/**

-	 * Field REVIEW_CREATION_DATE_ID. (value is ""reviewElement.creationDate"")

-	 */

-	private static final String REVIEW_CREATION_DATE_ID = "reviewElement.creationDate";

-

-	/**

-	 * Field REVIEW_CREATION_DATE_PROPERTY_DESCRIPTOR.

-	 */

-	private static final PropertyDescriptor REVIEW_CREATION_DATE_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

-			REVIEW_CREATION_DATE_ID, R4EUIConstants.CREATION_DATE_LABEL);

-	

-	/**

-	 * Field REVIEW_DESCRIPTION_ID. (value is ""reviewElement.description"")

-	 */

-	private static final String REVIEW_DESCRIPTION_ID = "reviewElement.description";

-

-	/**

-	 * Field REVIEW_DESCRIPTION_PROPERTY_DESCRIPTOR.

-	 */

-	private static final TextPropertyDescriptor REVIEW_DESCRIPTION_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

-			REVIEW_DESCRIPTION_ID, R4EUIConstants.DESCRIPTION_LABEL);

-	

-	/**

-	 * Field DESCRIPTORS.

-	 */

-	private static final IPropertyDescriptor[] DESCRIPTORS = { REVIEW_NAME_PROPERTY_DESCRIPTOR,  

-		REVIEW_CREATION_DATE_PROPERTY_DESCRIPTOR, REVIEW_DESCRIPTION_PROPERTY_DESCRIPTOR };

-	

-	

-	// ------------------------------------------------------------------------

-	// Constructors

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Constructor for ReviewProperties.

-	 * @param aElement R4EUIModelElement

-	 */

-	public ReviewProperties(R4EUIModelElement aElement) {

-		super(aElement);

-	}

-

-	

-	// ------------------------------------------------------------------------

-	// Methods

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Method getPropertyDescriptors.

-	 * @return IPropertyDescriptor[]

-	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()

-	 */

-	

-	@Override

-	public IPropertyDescriptor[] getPropertyDescriptors() {

-		return DESCRIPTORS;

-	}

-	

-	/**

-	 * Method getPropertyValue.

-	 * @param aId Object

-	 * @return Object

-	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(Object)

-	 */

-	@Override

-	public Object getPropertyValue(Object aId) {

-		if (null != getElement()) {

-			if (REVIEW_NAME_ID.equals(aId)) { 

-				return ((R4EUIReview)getElement()).getReview().getName();

-			} else if (REVIEW_CREATION_DATE_ID.equals(aId)) {

-				return ((R4EUIReview)getElement()).getReview().getCreationDate().toString();

-			} else if (REVIEW_DESCRIPTION_ID.equals(aId)) {

-				return ((R4EUIReview)getElement()).getReview().getExtraNotes();

-			}

-		}

-		return null;

-	}

-

-	/**

-	 * Method setPropertyValue.

-	 * @param aId Object

-	 * @param aValue Object

-	 * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(Object, Object)

-	 */

-	@Override

-	public void setPropertyValue(Object aId, Object aValue) { // $codepro.audit.disable emptyMethod

-		if (!(R4EUIModelController.isDialogOpen()) && getElement().isOpen()) {

-			try {

-				if (REVIEW_NAME_ID.equals(aId)) { 

-					final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(((R4EUIReview)getElement()).getReview(), 

-							R4EUIModelController.getReviewer());

-					((R4EUIReview)getElement()).getReview().setName((String) aValue);

-					R4EUIModelController.FResourceUpdater.checkIn(bookNum);

-				} else if (REVIEW_DESCRIPTION_ID.equals(aId)) {

-					final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(((R4EUIReview)getElement()).getReview(), 

-							R4EUIModelController.getReviewer());

-					((R4EUIReview)getElement()).getReview().setExtraNotes((String) aValue);

-					R4EUIModelController.FResourceUpdater.checkIn(bookNum);

-				}

-			} catch (ResourceHandlingException e) {

-				UIUtils.displayResourceErrorDialog(e);

-			} catch (OutOfSyncException e) {

-				UIUtils.displaySyncErrorDialog(e);

-			}

-		}

-	}

-}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewTabPropertySection.java
deleted file mode 100644
index 6b2cf52..0000000
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewTabPropertySection.java
+++ /dev/null
@@ -1,265 +0,0 @@
-// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, staticFieldSecurity, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, com.instantiations.assist.eclipse.analysis.instanceFieldSecurity, sourceLength, explicitThisUsage

-/*******************************************************************************

- * Copyright (c) 2010 Ericsson Research Canada

- * 

- * All rights reserved. This program and the accompanying materials are

- * made available under the terms of the Eclipse Public License v1.0 which

- * accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Description:

- * 

- * This class implements the tabbed property section for the Review Item model 

- * element

- * 

- * Contributors:

- *   Sebastien Dubois - Created for Mylyn Review R4E project

- *   

- ******************************************************************************/

-

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

-

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.StructuredSelection;

-import org.eclipse.mylyn.reviews.r4e.core.model.R4EReview;

-import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

-import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

-import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReview;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

-import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

-import org.eclipse.swt.SWT;

-import org.eclipse.swt.custom.CLabel;

-import org.eclipse.swt.events.ModifyEvent;

-import org.eclipse.swt.events.ModifyListener;

-import org.eclipse.swt.layout.FormAttachment;

-import org.eclipse.swt.layout.FormData;

-import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Text;

-import org.eclipse.ui.IPropertyListener;

-import org.eclipse.ui.IWorkbenchPart;

-import org.eclipse.ui.views.properties.IPropertySource;

-import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;

-import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

-import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

-import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

-

-/**

- * @author lmcdubo

- * @version $Revision: 1.0 $

- */

-public class ReviewTabPropertySection extends AbstractPropertySection implements IPropertyListener {

-	

-	// ------------------------------------------------------------------------

-	// Member variables

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Field fReview.

-	 */

-	private ReviewProperties fReviewProps;

-	

-	/**

-	 * Field FNameText.

-	 */

-	protected static Text FNameText = null;

-	

-	/**

-	 * Field FCreationDateText.

-	 */

-	protected static Text FCreationDateText = null;

-	

-	/**

-	 * Field FDescriptionText.

-	 */

-	protected static Text FDescriptionText = null;

-	

-	/**

-	 * Field fRefreshInProgress.

-	 */

-	private boolean fRefreshInProgress = false;

-

-	

-	// ------------------------------------------------------------------------

-	// Methods

-	// ------------------------------------------------------------------------

-	

-	/**

-	 * Method dispose.

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#dispose()

-	 */

-	@Override

-	public void dispose() {

-		super.dispose();

-		R4EUIModelController.removeDialogStateListener(this);

-	}

-	

-	/**

-	 * Method createControls.

-	 * @param parent Composite

-	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

-	 */

-	@Override

-	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

-		super.createControls(parent, aTabbedPropertySheetPage);

-		R4EUIModelController.addDialogStateListener(this);

-

-		//Tell element to build its own detailed tab layout

-		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

-		final Composite composite = widgetFactory.createFlatFormComposite(parent);

-	    FormData data = null;

-	   

-	    //Review Name

-	    FNameText = widgetFactory.createText(composite, "");

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

-	    FNameText.setLayoutData(data);

-		FNameText.addModifyListener(new ModifyListener() {			 // $codepro.audit.disable com.instantiations.assist.eclipse.analysis.avoidInnerClasses

-			@SuppressWarnings("synthetic-access")

-			public void modifyText(ModifyEvent e) {

-				if (!fRefreshInProgress) {

-					try {

-						final String currentUser = R4EUIModelController.getReviewer();

-						final R4EReview modelReview = ((R4EUIReview)fReviewProps.getElement()).getReview();

-						final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelReview, currentUser);

-						modelReview.setName(FNameText.getText());

-						R4EUIModelController.FResourceUpdater.checkIn(bookNum);

-					} catch (ResourceHandlingException e1) {

-						UIUtils.displayResourceErrorDialog(e1);

-					} catch (OutOfSyncException e1) {

-						UIUtils.displaySyncErrorDialog(e1);

-					}

-				}

-			}

-		});

-		

-	    final CLabel nameLabel = widgetFactory.createCLabel(composite, R4EUIConstants.NAME_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FNameText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FNameText, 0, SWT.CENTER);

-	    nameLabel.setLayoutData(data);

-	    

-	    //Review Creation Date (read-only)

-	    FCreationDateText = widgetFactory.createText(composite, "");

-	    FCreationDateText.setEditable(false);

-	    FCreationDateText.setEnabled(false);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FNameText, ITabbedPropertyConstants.VSPACE);

-	    FCreationDateText.setLayoutData(data);

-

-	    final CLabel creationDateLabel = widgetFactory.createCLabel(composite, R4EUIConstants.CREATION_DATE_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FCreationDateText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FCreationDateText, 0, SWT.CENTER);

-	    creationDateLabel.setLayoutData(data);

-	

-	    //Review Description

-	    FDescriptionText = widgetFactory.createText(composite, "", SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

-	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FCreationDateText, ITabbedPropertyConstants.VSPACE);

-	    data.bottom = new FormAttachment(100, -ITabbedPropertyConstants.VSPACE); // $codepro.audit.disable numericLiterals

-	    FDescriptionText.setLayoutData(data);

-	    FDescriptionText.addModifyListener(new ModifyListener() {			 // $codepro.audit.disable com.instantiations.assist.eclipse.analysis.avoidInnerClasses

-	    	@SuppressWarnings("synthetic-access")

-	    	public void modifyText(ModifyEvent e) {

-	    		if (!fRefreshInProgress) {

-	    			try {

-	    				final String currentUser = R4EUIModelController.getReviewer();

-						final R4EReview modelReview = ((R4EUIReview)fReviewProps.getElement()).getReview();

-	    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelReview, currentUser);

-	    				modelReview.setExtraNotes(FDescriptionText.getText());

-	    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

-	    			} catch (ResourceHandlingException e1) {

-	    				UIUtils.displayResourceErrorDialog(e1);

-	    			} catch (OutOfSyncException e1) {

-	    				UIUtils.displaySyncErrorDialog(e1);

-	    			}

-	    		}

-	    	}

-	    });

-		

-	    final CLabel descriptionLabel = widgetFactory.createCLabel(composite, R4EUIConstants.DESCRIPTION_LABEL);

-	    data = new FormData();

-	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FDescriptionText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FDescriptionText, 0, SWT.TOP);

-	    descriptionLabel.setLayoutData(data);

-	}

-		

-	/**

-	 * Method setInput.

-	 * @param part IWorkbenchPart

-	 * @param aSelection ISelection

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#setInput(IWorkbenchPart, ISelection)

-	 */

-	@Override

-	public void setInput(IWorkbenchPart part, ISelection aSelection) {

-		//Get current selection.

-		if (null == aSelection || aSelection.isEmpty()) return;

-		

-		//Get model element selected

-		final IR4EUIModelElement element = (IR4EUIModelElement) ((StructuredSelection)aSelection).getFirstElement();

-		if (null != element && element instanceof R4EUIReview) {

-			fReviewProps = (ReviewProperties) ((R4EUIReview)element).getAdapter(IPropertySource.class);

-			refresh();

-		}

-	}

-

-	/**

-	 * Method refresh.

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

-	 */

-	@Override

-	public void refresh() {

-		fRefreshInProgress = true;

-		final R4EReview modelReview = ((R4EUIReview)fReviewProps.getElement()).getReview();

-		FNameText.setText(modelReview.getName());

-		FCreationDateText.setText(modelReview.getCreationDate().toString());

-		if (null != modelReview.getExtraNotes()) FDescriptionText.setText(modelReview.getExtraNotes());

-		setEnabledFields();

-		fRefreshInProgress = false;

-	}

-	

-	/**

-	 * Method shouldUseExtraSpace.

-	 * @return boolean

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#shouldUseExtraSpace()

-	 */

-	@Override

-	public boolean shouldUseExtraSpace() {

-		return true;

-	}

-	

-	/**

-	 * Method propertyChanged.

-	 * @param source Object

-	 * @param propId int

-	 * @see org.eclipse.ui.IPropertyListener#propertyChanged(Object, int)

-	 */

-	public void propertyChanged(Object source, int propId) {

-		setEnabledFields();

-	}

-	

-	/**

-	 * Method setEnabledFields.

-	 */

-	private void setEnabledFields() {

-		if (R4EUIModelController.isDialogOpen() || (!((R4EUIReview)fReviewProps.getElement()).isOpen())) {

-			FNameText.setEnabled(false);

-			FDescriptionText.setEnabled(false);

-		} else {

-			FNameText.setEnabled(true);

-			FDescriptionText.setEnabled(true);

-		}

-	}

-}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/AnomalyExtraProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/AnomalyExtraProperties.java
new file mode 100644
index 0000000..9157249
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/AnomalyExtraProperties.java
@@ -0,0 +1,182 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class encapsulates the properties for the AnomalyExtended UI model element

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+package org.eclipse.mylyn.reviews.r4e.ui.properties.general;

+

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyExtended;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelElement;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;

+import org.eclipse.ui.views.properties.IPropertyDescriptor;

+import org.eclipse.ui.views.properties.PropertyDescriptor;

+import org.eclipse.ui.views.properties.TextPropertyDescriptor;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class AnomalyExtraProperties extends AnomalyGeneralProperties {

+

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

+		

+	/**

+	 * Field ANOMALY_STATE_ID. (value is ""anomalyElement.state"")

+	 */

+	private static final String ANOMALY_STATE_ID = "anomalyElement.state";

+

+	/**

+	 * Field ANOMALY_STATE_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final ComboBoxPropertyDescriptor ANOMALY_STATE_PROPERTY_DESCRIPTOR = new ComboBoxPropertyDescriptor(

+			ANOMALY_STATE_ID, R4EUIConstants.STATE_LABEL, R4EUIAnomalyExtended.getStates());

+	

+	/**

+	 * Field ANOMALY_DUE_DATE_ID. (value is ""anomalyElement.dueDate"")

+	 */

+	private static final String ANOMALY_DUE_DATE_ID = "anomalyElement.dueDate";

+

+	/**

+	 * Field ANOMALY_DUE_DATE_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final PropertyDescriptor ANOMALY_DUE_DATE_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

+			ANOMALY_DUE_DATE_ID, R4EUIConstants.DUE_DATE_LABEL);

+	

+	/**

+	 * Field ANOMALY_RANK_ID. (value is ""anomalyElement.rank"")

+	 */

+	private static final String ANOMALY_RANK_ID = "anomalyElement.rank";

+

+	/**

+	 * Field ANOMALY_RANK_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final ComboBoxPropertyDescriptor ANOMALY_RANK_PROPERTY_DESCRIPTOR = new ComboBoxPropertyDescriptor(

+			ANOMALY_RANK_ID, R4EUIConstants.RANK_LABEL, R4EUIAnomalyExtended.getRanks());

+	

+	/**

+	 * Field ANOMALY_NOT_ACCEPTED_REASON_ID. (value is ""anomalyElement.notAcceptedReason"")

+	 */

+	private static final String ANOMALY_NOT_ACCEPTED_REASON_ID = "anomalyElement.notAcceptedReason";

+

+	/**

+	 * Field ANOMALY_NOT_ACCEPTED_REASON_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final TextPropertyDescriptor ANOMALY_NOT_ACCEPTED_REASON_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			ANOMALY_NOT_ACCEPTED_REASON_ID, R4EUIConstants.NOT_ACCEPTED_REASON_LABEL);

+	

+	/**

+	 * Field ANOMALY_DECIDED_BY_ID. (value is ""anomalyElement.decidedBy"")

+	 */

+	private static final String ANOMALY_DECIDED_BY_ID = "anomalyElement.decidedBy";

+

+	/**

+	 * Field ANOMALY_DECIDED_BY_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final TextPropertyDescriptor ANOMALY_DECIDED_BY_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			ANOMALY_DECIDED_BY_ID, R4EUIConstants.DECIDED_BY_LABEL);

+	

+	/**

+	 * Field ANOMALY_FIXED_BY_ID. (value is ""anomalyElement.fixedBy"")

+	 */

+	private static final String ANOMALY_FIXED_BY_ID = "anomalyElement.fixedBy";

+

+	/**

+	 * Field ANOMALY_FIXED_BY_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final TextPropertyDescriptor ANOMALY_FIXED_BY_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			ANOMALY_FIXED_BY_ID, R4EUIConstants.FIXED_BY_LABEL);

+	

+	/**

+	 * Field ANOMALY_FOLLOWUP_BY_ID. (value is ""anomalyElement.followupBy"")

+	 */

+	private static final String ANOMALY_FOLLOWUP_BY_ID = "anomalyElement.followupBy";

+

+	/**

+	 * Field ANOMALY_FOLLOWUP_BY_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final TextPropertyDescriptor ANOMALY_FOLLOWUP_BY_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			ANOMALY_FOLLOWUP_BY_ID, R4EUIConstants.FOLLOWUP_BY_LABEL);

+	

+	/**

+	 * Field DESCRIPTORS.

+	 */

+	private static final IPropertyDescriptor[] DESCRIPTORS = { ANOMALY_TITLE_PROPERTY_DESCRIPTOR,

+		ANOMALY_POSITION_PROPERTY_DESCRIPTOR, ANOMALY_AUTHOR_PROPERTY_DESCRIPTOR,  

+		ANOMALY_CREATION_DATE_PROPERTY_DESCRIPTOR, ANOMALY_DESCRIPTION_PROPERTY_DESCRIPTOR,

+		ANOMALY_STATE_PROPERTY_DESCRIPTOR, ANOMALY_DUE_DATE_PROPERTY_DESCRIPTOR,

+		ANOMALY_RANK_PROPERTY_DESCRIPTOR, ANOMALY_NOT_ACCEPTED_REASON_PROPERTY_DESCRIPTOR,

+		ANOMALY_DECIDED_BY_PROPERTY_DESCRIPTOR, ANOMALY_FIXED_BY_PROPERTY_DESCRIPTOR,

+		ANOMALY_FOLLOWUP_BY_PROPERTY_DESCRIPTOR};

+	

+	

+	// ------------------------------------------------------------------------

+	// Constructors

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Constructor for AnomalyProperties.

+	 * @param aElement R4EUIModelElement

+	 */

+	public AnomalyExtraProperties(R4EUIModelElement aElement) {

+		super(aElement);

+	}

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Method getPropertyDescriptors.

+	 * @return IPropertyDescriptor[]

+	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()

+	 */

+	@Override

+	public IPropertyDescriptor[] getPropertyDescriptors() {

+		return DESCRIPTORS;

+	}

+	

+	/**

+	 * Method getPropertyValue.

+	 * 

+	 * @param aId Object

+	 * @return Object

+	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(Object)

+	 */

+	@Override

+	public Object getPropertyValue(Object aId) {

+		final Object result = super.getPropertyValue(aId);

+		if (null != result) return result;

+		if (ANOMALY_STATE_ID.equals(aId)) { 

+			return Integer.valueOf(((R4EUIAnomalyExtended)getElement()).getAnomaly().getState().getValue());

+		} else if (ANOMALY_DUE_DATE_ID.equals(aId)) { 

+			return ((R4EUIAnomalyExtended)getElement()).getAnomaly().getDueDate().toString();

+		} else if (ANOMALY_RANK_ID.equals(aId)) { 

+			return Integer.valueOf(((R4EUIAnomalyExtended)getElement()).getAnomaly().getRank().getValue());

+		} else if (ANOMALY_NOT_ACCEPTED_REASON_ID.equals(aId)) { 

+			return ((R4EUIAnomalyExtended)getElement()).getAnomaly().getNotAcceptedReason();

+		} else if (ANOMALY_DECIDED_BY_ID.equals(aId)) { 

+			return ((R4EUIAnomalyExtended)getElement()).getAnomaly().getDecidedByID();

+		} else if (ANOMALY_FIXED_BY_ID.equals(aId)) { 

+			return ((R4EUIAnomalyExtended)getElement()).getAnomaly().getFixedByID();

+		} else if (ANOMALY_FOLLOWUP_BY_ID.equals(aId)) { 

+			return ((R4EUIAnomalyExtended)getElement()).getAnomaly().getFollowUpByID();

+		}

+		return null;

+	}

+	//NOTE:  Since state management for anomalies is complex, the value are only editable using the tabbed properties view

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/AnomalyProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/AnomalyGeneralProperties.java
similarity index 76%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/AnomalyProperties.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/AnomalyGeneralProperties.java
index 22b59be..1678edf 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/AnomalyProperties.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/AnomalyGeneralProperties.java
@@ -15,11 +15,11 @@
  *   

  ******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.general;

 

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

-import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomaly;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyBasic;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelElement;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

@@ -32,7 +32,7 @@
  * @author lmcdubo

  * @version $Revision: 1.0 $

  */

-public class AnomalyProperties extends ModelElementProperties {

+public class AnomalyGeneralProperties extends ModelElementProperties {

 

 	// ------------------------------------------------------------------------

 	// Constants

@@ -46,7 +46,7 @@
 	/**

 	 * Field ANOMALY_TITLE_PROPERTY_DESCRIPTOR.

 	 */

-	private static final TextPropertyDescriptor ANOMALY_TITLE_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+	protected static final TextPropertyDescriptor ANOMALY_TITLE_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

 			ANOMALY_TITLE_ID, R4EUIConstants.TITLE_LABEL);

 	

 	/**

@@ -57,7 +57,7 @@
 	/**

 	 * Field ANOMALY_POSITION_PROPERTY_DESCRIPTOR.

 	 */

-	private static final PropertyDescriptor ANOMALY_POSITION_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

+	protected static final PropertyDescriptor ANOMALY_POSITION_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

 			ANOMALY_POSITION_ID, R4EUIConstants.POSITION_LABEL);

 	

 	/**

@@ -68,7 +68,7 @@
 	/**

 	 * Field ANOMALY_AUTHOR_PROPERTY_DESCRIPTOR.

 	 */

-	private static final PropertyDescriptor ANOMALY_AUTHOR_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

+	protected static final PropertyDescriptor ANOMALY_AUTHOR_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

 			ANOMALY_AUTHOR_ID, R4EUIConstants.AUTHOR_LABEL);

 

 	/**

@@ -79,7 +79,7 @@
 	/**

 	 * Field ANOMALY_CREATION_DATE_PROPERTY_DESCRIPTOR.

 	 */

-	private static final PropertyDescriptor ANOMALY_CREATION_DATE_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

+	protected static final PropertyDescriptor ANOMALY_CREATION_DATE_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

 			ANOMALY_CREATION_DATE_ID, R4EUIConstants.CREATION_DATE_LABEL);

 	

 	/**

@@ -90,7 +90,7 @@
 	/**

 	 * Field ANOMALY_DESCRIPTION_PROPERTY_DESCRIPTOR.

 	 */

-	private static final TextPropertyDescriptor ANOMALY_DESCRIPTION_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+	protected static final TextPropertyDescriptor ANOMALY_DESCRIPTION_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

 			ANOMALY_DESCRIPTION_ID, R4EUIConstants.DESCRIPTION_LABEL);

 	

 	/**

@@ -109,7 +109,7 @@
 	 * Constructor for AnomalyProperties.

 	 * @param aElement R4EUIModelElement

 	 */

-	public AnomalyProperties(R4EUIModelElement aElement) {

+	public AnomalyGeneralProperties(R4EUIModelElement aElement) {

 		super(aElement);

 	}

 

@@ -138,18 +138,18 @@
 	@Override

 	public Object getPropertyValue(Object aId) {

 		if (ANOMALY_TITLE_ID.equals(aId)) { 

-			return ((R4EUIAnomaly)getElement()).getAnomaly().getTitle();

+			return ((R4EUIAnomalyBasic)getElement()).getAnomaly().getTitle();

 		} else if (ANOMALY_POSITION_ID.equals(aId)) {

-			if (null == ((R4EUIAnomaly)getElement()).getPosition()) {

+			if (null == ((R4EUIAnomalyBasic)getElement()).getPosition()) {

 				return R4EUIConstants.GLOBAL_ANOMALY_PROPERTY_VALUE;

 			}

-			return ((R4EUIAnomaly)getElement()).getPosition().toString();

+			return ((R4EUIAnomalyBasic)getElement()).getPosition().toString();

 		} else if (ANOMALY_AUTHOR_ID.equals(aId)) { 

-			return ((R4EUIAnomaly)getElement()).getAnomaly().getUser().getId();

+			return ((R4EUIAnomalyBasic)getElement()).getAnomaly().getUser().getId();

 		} else if (ANOMALY_CREATION_DATE_ID.equals(aId)) {

-			return ((R4EUIAnomaly)getElement()).getAnomaly().getCreatedOn().toString();

+			return ((R4EUIAnomalyBasic)getElement()).getAnomaly().getCreatedOn().toString();

 		} else if (ANOMALY_DESCRIPTION_ID.equals(aId)) {

-			return ((R4EUIAnomaly)getElement()).getAnomaly().getDescription();

+			return ((R4EUIAnomalyBasic)getElement()).getAnomaly().getDescription();

 		}

 		return null;

 	}

@@ -165,14 +165,14 @@
 		if (!(R4EUIModelController.isDialogOpen())) {

 			try {

 				final String currentUser = R4EUIModelController.getReviewer();

-				if (((R4EUIAnomaly)getElement()).getAnomaly().getUser().getId().equals(currentUser)) {

+				if (((R4EUIAnomalyBasic)getElement()).getAnomaly().getUser().getId().equals(currentUser)) {

 					if (ANOMALY_TITLE_ID.equals(aId)) {

-						final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(((R4EUIAnomaly)getElement()).getAnomaly(), currentUser);

-						((R4EUIAnomaly)getElement()).getAnomaly().setTitle((String) aValue);

+						final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(((R4EUIAnomalyBasic)getElement()).getAnomaly(), currentUser);

+						((R4EUIAnomalyBasic)getElement()).getAnomaly().setTitle((String) aValue);

 						R4EUIModelController.FResourceUpdater.checkIn(bookNum);

 					} else if (ANOMALY_DESCRIPTION_ID.equals(aId)) { 

-						final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(((R4EUIAnomaly)getElement()).getAnomaly(), currentUser);

-						((R4EUIAnomaly)getElement()).getAnomaly().setDescription((String) aValue);

+						final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(((R4EUIAnomalyBasic)getElement()).getAnomaly(), currentUser);

+						((R4EUIAnomalyBasic)getElement()).getAnomaly().setDescription((String) aValue);

 						R4EUIModelController.FResourceUpdater.checkIn(bookNum);	

 					}

 				}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/CommentProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/CommentProperties.java
similarity index 98%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/CommentProperties.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/CommentProperties.java
index 524e1b3..967ca99 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/CommentProperties.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/CommentProperties.java
@@ -15,7 +15,7 @@
  *   

  ******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.general;

 

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/FileContextProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/FileContextProperties.java
similarity index 98%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/FileContextProperties.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/FileContextProperties.java
index 00a597f..e5e9133 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/FileContextProperties.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/FileContextProperties.java
@@ -15,7 +15,7 @@
  *   

  ******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.general;

 

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIFileContext;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelElement;

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/FileVersionSourceProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/FileVersionSourceProperties.java
similarity index 98%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/FileVersionSourceProperties.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/FileVersionSourceProperties.java
index 84432de..c4d23f1 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/FileVersionSourceProperties.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/FileVersionSourceProperties.java
@@ -17,7 +17,7 @@
  *   

  *******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.general;

 

 import org.eclipse.core.resources.IResource;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion;

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ModelElementProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ModelElementProperties.java
similarity index 98%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ModelElementProperties.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ModelElementProperties.java
index 04c0ff7..a97119f 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ModelElementProperties.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ModelElementProperties.java
@@ -15,7 +15,7 @@
  *   

  ******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.general;

 

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelElement;

 import org.eclipse.ui.views.properties.IPropertyDescriptor;

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ParticipantProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ParticipantProperties.java
new file mode 100644
index 0000000..13ca7c5
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ParticipantProperties.java
@@ -0,0 +1,206 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class encapsulates the properties for the Participant UI model element

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.properties.general;

+

+import java.util.Date;

+import java.util.Map.Entry;

+

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EComment;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelElement;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIParticipant;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.ui.views.properties.IPropertyDescriptor;

+import org.eclipse.ui.views.properties.PropertyDescriptor;

+import org.eclipse.ui.views.properties.TextPropertyDescriptor;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class ParticipantProperties extends ModelElementProperties {

+

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field PARTICIPANT_ID. (value is ""participantElement.id"")

+	 */

+	protected static final String PARTICIPANT_ID = "participantElement.id";

+

+	/**

+	 * Field PARTICIPANT_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final PropertyDescriptor PARTICIPANT_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

+			PARTICIPANT_ID, R4EUIConstants.ID_LABEL);

+	

+	/**

+	 * Field PARTICIPANT_NUM_ITEMS_ID. (value is ""participantElement.numItems"")

+	 */

+	protected static final String PARTICIPANT_NUM_ITEMS_ID = "participantElement.numItems";

+

+	/**

+	 * Field PARTICIPANT_NUM_ITEMS_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final PropertyDescriptor PARTICIPANT_NUM_ITEMS_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

+			PARTICIPANT_NUM_ITEMS_ID, R4EUIConstants.NUM_ITEMS_LABEL);

+	

+	/**

+	 * Field PARTICIPANT_NUM_ANOMALIES_ID. (value is ""participantElement.numAnomalies"")

+	 */

+	protected static final String PARTICIPANT_NUM_ANOMALIES_ID = "participantElement.numAnomalies";

+

+	/**

+	 * Field PARTICIPANT_NUM_ANOMALIES_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final PropertyDescriptor PARTICIPANT_NUM_ANOMALIES_PROPERTY_DESCR = new PropertyDescriptor(

+			PARTICIPANT_NUM_ANOMALIES_ID, R4EUIConstants.NUM_ANOMALIES_LABEL);

+	

+	/**

+	 * Field PARTICIPANT_NUM_COMMENTS_ID. (value is ""participantElement.numComments"")

+	 */

+	protected static final String PARTICIPANT_NUM_COMMENTS_ID = "participantElement.numComments";

+

+	/**

+	 * Field PARTICIPANT_NUM_COMMENTS_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final PropertyDescriptor PARTICIPANT_NUM_COMMENTS_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

+			PARTICIPANT_NUM_COMMENTS_ID, R4EUIConstants.NUM_COMMENTS_LABEL);

+	

+	/**

+	 * Field PARTICIPANT_TIME_SPENT_ID. (value is ""participantElement.timeSpent"")

+	 */

+	protected static final String PARTICIPANT_TIME_SPENT_ID = "participantElement.timeSpent";

+

+	/**

+	 * Field PARTICIPANT_TIME_SPENT_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final PropertyDescriptor PARTICIPANT_TIME_SPENT_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

+			PARTICIPANT_TIME_SPENT_ID, R4EUIConstants.TIME_SPENT_TOTAL_LABEL);

+	

+	/**

+	 * Field PARTICIPANT_ROLES_ID. (value is ""participantElement.roles"")

+	 */

+	private static final String PARTICIPANT_ROLES_ID = "participantElement.roles";

+

+	/**

+	 * Field PARTICIPANT_ROLES_PROPERTY_DESCRIPTOR.

+	 */

+	private static final PropertyDescriptor PARTICIPANT_ROLES_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

+			PARTICIPANT_ROLES_ID, R4EUIConstants.ROLES_LABEL);

+	

+	/**

+	 * Field PARTICIPANT_FOCUS_AREA_ID. (value is ""participantElement.focusArea"")

+	 */

+	private static final String PARTICIPANT_FOCUS_AREA_ID = "participantElement.focusArea";

+

+	/**

+	 * Field PARTICIPANT_FOCUS_AREA_PROPERTY_DESCRIPTOR.

+	 */

+	private static final TextPropertyDescriptor PARTICIPANT_FOCUS_AREA_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			PARTICIPANT_FOCUS_AREA_ID, R4EUIConstants.FOCUS_AREA_LABEL);

+	

+	/**

+	 * Field DESCRIPTORS.

+	 */

+	private static final IPropertyDescriptor[] DESCRIPTORS = { PARTICIPANT_PROPERTY_DESCRIPTOR,  

+		PARTICIPANT_NUM_ITEMS_PROPERTY_DESCRIPTOR, PARTICIPANT_NUM_ANOMALIES_PROPERTY_DESCR, 

+		PARTICIPANT_NUM_COMMENTS_PROPERTY_DESCRIPTOR, PARTICIPANT_TIME_SPENT_PROPERTY_DESCRIPTOR,

+		PARTICIPANT_ROLES_PROPERTY_DESCRIPTOR, PARTICIPANT_FOCUS_AREA_PROPERTY_DESCRIPTOR};

+	

+	

+	// ------------------------------------------------------------------------

+	// Constructors

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Constructor for ParticipantProperties.

+	 * @param aElement R4EUIModelElement

+	 */

+	public ParticipantProperties(R4EUIModelElement aElement) {

+		super(aElement);

+	}

+

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Method getPropertyDescriptors.

+	 * @return IPropertyDescriptor[]

+	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()

+	 */

+	@Override

+	public IPropertyDescriptor[] getPropertyDescriptors() {

+		return DESCRIPTORS;

+	}

+

+	/**

+	 * Method getPropertyValue.

+	 * @param aId Object

+	 * @return Object

+	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(Object)

+	 */

+

+	@Override

+	public Object getPropertyValue(Object aId) {

+		if (PARTICIPANT_ID.equals(aId)) { 

+			return ((R4EUIParticipant)getElement()).getParticipant().getId();

+		} else if (PARTICIPANT_NUM_ITEMS_ID.equals(aId)) {

+			return Integer.valueOf(((R4EUIParticipant)getElement()).getParticipant().getAddedItems().size());

+		} else if (PARTICIPANT_NUM_ANOMALIES_ID.equals(aId)) {

+			int numAnomalies = 0;

+			final EList<R4EComment> comments = ((R4EUIParticipant)getElement()).getParticipant().getAddedComments();

+			final int commentsSize = comments.size();

+			for (int i = 0; i < commentsSize; i++) {

+				if (comments.get(i) instanceof R4EAnomaly) {

+					++numAnomalies;

+				}

+			}

+			return Integer.valueOf(numAnomalies);

+		} else if (PARTICIPANT_NUM_COMMENTS_ID.equals(aId)) {

+			int numComments = 0;

+			final EList<R4EComment> comments = ((R4EUIParticipant)getElement()).getParticipant().getAddedComments();

+			final int commentsSize = comments.size();

+			for (int i = 0; i < commentsSize; i++) {

+				if (!(comments.get(i) instanceof R4EAnomaly)) {

+					++numComments;

+				}

+			}

+			return Integer.valueOf(numComments);

+		} else if (PARTICIPANT_TIME_SPENT_ID.equals(aId)) {

+			final R4EParticipant modelUser = ((R4EUIParticipant)getElement()).getParticipant();

+			final int numTimeEntries = modelUser.getTimeLog().size();

+			int totalTimeSpent = 0;

+			for (int i = 0; i < numTimeEntries; i++) {

+				Entry<Date, Integer> timeEntry = modelUser.getTimeLog().get(i);

+				totalTimeSpent +=timeEntry.getValue().intValue();

+			}

+			return Integer.toString(totalTimeSpent);

+		} else if (PARTICIPANT_ROLES_ID.equals(aId)) {

+			return ((R4EUIParticipant)getElement()).getParticipant().getRoles();

+		} else if (PARTICIPANT_FOCUS_AREA_ID.equals(aId)) {

+			return ((R4EUIParticipant)getElement()).getParticipant().getFocusArea() ;

+		}

+		return null;

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/R4EPropertiesView.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/R4EPropertiesView.java
similarity index 95%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/R4EPropertiesView.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/R4EPropertiesView.java
index d728d82..a2d95cb 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/R4EPropertiesView.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/R4EPropertiesView.java
@@ -16,7 +16,7 @@
  *   

  ******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.general;

 

 import org.eclipse.ui.IWorkbenchPart;

 import org.eclipse.ui.views.properties.PropertySheet;

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewGroupProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ReviewGroupProperties.java
similarity index 63%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewGroupProperties.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ReviewGroupProperties.java
index e1c5f5d..6804e43 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewGroupProperties.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ReviewGroupProperties.java
@@ -15,7 +15,7 @@
  *   

  ******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.general;

 

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

@@ -41,41 +41,76 @@
 	/**

 	 * Field GROUP_NAME_ID. (value is ""reviewGroupElement.name"")

 	 */

-	private static final String GROUP_NAME_ID = "reviewGroupElement.name";

+	protected static final String GROUP_NAME_ID = "reviewGroupElement.name";

 

 	/**

 	 * Field GROUP_NAME_PROPERTY_DESCRIPTOR.

 	 */

-	private static final TextPropertyDescriptor GROUP_NAME_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+	protected static final TextPropertyDescriptor GROUP_NAME_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

 			GROUP_NAME_ID, R4EUIConstants.NAME_LABEL);

 

 	/**

 	 * Field GROUP_FOLDER_ID. (value is ""reviewGroupElement.folderName"")

 	 */

-	private static final String GROUP_FOLDER_ID = "reviewGroupElement.folderName";

+	protected static final String GROUP_FOLDER_ID = "reviewGroupElement.folderName";

 

 	/**

 	 * Field GROUP_FOLDER_PROPERTY_DESCRIPTOR.

 	 */

-	private static final PropertyDescriptor GROUP_FOLDER_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

+	protected static final PropertyDescriptor GROUP_FOLDER_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

 			GROUP_FOLDER_ID, R4EUIConstants.FOLDER_LABEL);

 	

 	/**

 	 * Field GROUP_DESCRIPTION_ID. (value is ""reviewGroupElement.description"")

 	 */

-	private static final String GROUP_DESCRIPTION_ID = "reviewGroupElement.description";

+	protected static final String GROUP_DESCRIPTION_ID = "reviewGroupElement.description";

 

 	/**

 	 * Field GROUP_NAME_PROPERTY_DESCRIPTOR.

 	 */

-	private static final TextPropertyDescriptor GROUP_DESCRIPTION_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+	protected static final TextPropertyDescriptor GROUP_DESCRIPTION_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

 			GROUP_DESCRIPTION_ID, R4EUIConstants.DESCRIPTION_LABEL);

 	

 	/**

+	 * Field GROUP_AVAILABLE_PROJECTS_ID. (value is ""reviewGroupElement.availableProjects"")

+	 */

+	private static final String GROUP_AVAILABLE_PROJECTS_ID = "reviewGroupElement.availableProjects";

+

+	/**

+	 * Field GROUP_AVAILABLE_PROJECTS_PROPERTY_DESCRIPTOR.

+	 */

+	private static final TextPropertyDescriptor GROUP_AVAILABLE_PROJECTS_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			GROUP_AVAILABLE_PROJECTS_ID, R4EUIConstants.AVAILABLE_PROJECTS_LABEL);

+	

+	/**

+	 * Field GROUP_AVAILABLE_COMPONENTS_ID. (value is ""reviewGroupElement.availableComponents"")

+	 */

+	private static final String GROUP_AVAILABLE_COMPONENTS_ID = "reviewGroupElement.availableComponents";

+

+	/**

+	 * Field GROUP_AVAILABLE_COMPONENTS_PROPERTY_DESCRIPTOR.

+	 */

+	private static final TextPropertyDescriptor GROUP_AVAILABLE_COMPONENTS_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			GROUP_AVAILABLE_COMPONENTS_ID, R4EUIConstants.AVAILABLE_COMPONENTS_LABEL);

+	

+	/**

+	 * Field GROUP_DEFAULT_ENTRY_CRITERIA_ID. (value is ""reviewGroupElement.defaultEntryCriteria"")

+	 */

+	private static final String GROUP_DEFAULT_ENTRY_CRITERIA_ID = "reviewGroupElement.defaultEntryCriteria";

+

+	/**

+	 * Field GROUP_DEFAULT_ENTRY_CRITERIA_PROPERTY_DESCRIPTOR.

+	 */

+	private static final TextPropertyDescriptor GROUP_DEFAULT_ENTRY_CRITERIA_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			GROUP_DEFAULT_ENTRY_CRITERIA_ID, R4EUIConstants.DEFAULT_ENTRY_CRITERIA_LABEL);

+	

+	/**

 	 * Field DESCRIPTORS.

 	 */

 	private static final IPropertyDescriptor[] DESCRIPTORS = { GROUP_NAME_PROPERTY_DESCRIPTOR,  

-		GROUP_FOLDER_PROPERTY_DESCRIPTOR, GROUP_DESCRIPTION_PROPERTY_DESCRIPTOR };

+		GROUP_FOLDER_PROPERTY_DESCRIPTOR, GROUP_DESCRIPTION_PROPERTY_DESCRIPTOR,

+		GROUP_AVAILABLE_PROJECTS_PROPERTY_DESCRIPTOR, GROUP_AVAILABLE_COMPONENTS_PROPERTY_DESCRIPTOR,

+		GROUP_DEFAULT_ENTRY_CRITERIA_PROPERTY_DESCRIPTOR };

 	

 	

 	// ------------------------------------------------------------------------

@@ -120,6 +155,12 @@
 				return ((R4EUIReviewGroup)getElement()).getGroup().getFolder();

 			} else if (GROUP_DESCRIPTION_ID.equals(aId)) {

 				return ((R4EUIReviewGroup)getElement()).getGroup().getDescription();

+			} else 	if (GROUP_AVAILABLE_PROJECTS_ID.equals(aId)) {

+				return ((R4EUIReviewGroup)getElement()).getGroup().getAvailableProjects().toString();

+			} else if (GROUP_AVAILABLE_COMPONENTS_ID.equals(aId)) { 

+				return ((R4EUIReviewGroup)getElement()).getGroup().getAvailableComponents().toString();

+			} else if (GROUP_DEFAULT_ENTRY_CRITERIA_ID.equals(aId)) {

+				return ((R4EUIReviewGroup)getElement()).getGroup().getDefaultEntryCriteria();

 			}

 		}

 		return null;

@@ -135,12 +176,7 @@
 	public void setPropertyValue(Object aId, Object aValue) { // $codepro.audit.disable emptyMethod

 		if (!(R4EUIModelController.isDialogOpen()) && getElement().isOpen()) {

 			try {

-				if (GROUP_NAME_ID.equals(aId)) { 

-					final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(((R4EUIReviewGroup)getElement()).getGroup(), 

-							R4EUIModelController.getReviewer());

-					((R4EUIReviewGroup)getElement()).getGroup().setName((String) aValue);

-					R4EUIModelController.FResourceUpdater.checkIn(bookNum);

-				} else if (GROUP_DESCRIPTION_ID.equals(aId)) {

+				if (GROUP_DESCRIPTION_ID.equals(aId)) {

 					final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(((R4EUIReviewGroup)getElement()).getGroup(), 

 							R4EUIModelController.getReviewer());

 					((R4EUIReviewGroup)getElement()).getGroup().setDescription((String) aValue);

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewItemProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ReviewItemProperties.java
similarity index 96%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewItemProperties.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ReviewItemProperties.java
index 43a5994..5dbaea8 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewItemProperties.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ReviewItemProperties.java
@@ -15,7 +15,7 @@
  *   

  ******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.general;

 

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelElement;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReviewItem;

@@ -53,7 +53,7 @@
 	 * Field REVIEW_ITEM_PROJECT_PROPERTY_DESCRIPTOR.

 	 */

 	private static final PropertyDescriptor REVIEW_ITEM_PROJECT_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

-			REVIEW_ITEM_PROJECT_ID, R4EUIConstants.PROJECT_ID_LABEL);

+			REVIEW_ITEM_PROJECT_ID, R4EUIConstants.PROJECT_LABEL);

 	

 	/**

 	 * Field REVIEW_ITEM_DESCRIPTION_ID. (value is ""reviewItemElement.description"")

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ReviewProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ReviewProperties.java
new file mode 100644
index 0000000..7ac7273
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/ReviewProperties.java
@@ -0,0 +1,239 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class encapsulates the properties for the Review UI model element

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.properties.general;

+

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelElement;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReview;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

+import org.eclipse.ui.views.properties.IPropertyDescriptor;

+import org.eclipse.ui.views.properties.PropertyDescriptor;

+import org.eclipse.ui.views.properties.TextPropertyDescriptor;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class ReviewProperties extends ModelElementProperties {

+

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field REVIEW_NAME_ID. (value is ""reviewElement.name"")

+	 */

+	protected static final String REVIEW_NAME_ID = "reviewElement.name";

+

+	/**

+	 * Field REVIEW_NAME_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final TextPropertyDescriptor REVIEW_NAME_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			REVIEW_NAME_ID, R4EUIConstants.NAME_LABEL);

+

+	/**

+	 * Field REVIEW_START_DATE_ID. (value is ""reviewElement.startDate"")

+	 */

+	protected static final String REVIEW_START_DATE_ID = "reviewElement.startDate";

+

+	/**

+	 * Field REVIEW_START_DATE_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final PropertyDescriptor REVIEW_START_DATE_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

+			REVIEW_START_DATE_ID, R4EUIConstants.START_DATE_LABEL);

+	

+	/**

+	 * Field REVIEW_END_DATE_ID. (value is ""reviewElement.endDate"")

+	 */

+	protected static final String REVIEW_END_DATE_ID = "reviewElement.endDate";

+

+	/**

+	 * Field REVIEW_END_DATE_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final PropertyDescriptor REVIEW_END_DATE_PROPERTY_DESCRIPTOR = new PropertyDescriptor(

+			REVIEW_END_DATE_ID, R4EUIConstants.END_DATE_LABEL);

+	

+	/**

+	 * Field REVIEW_DESCRIPTION_ID. (value is ""reviewElement.description"")

+	 */

+	protected static final String REVIEW_DESCRIPTION_ID = "reviewElement.description";

+

+	/**

+	 * Field REVIEW_DESCRIPTION_PROPERTY_DESCRIPTOR.

+	 */

+	protected static final TextPropertyDescriptor REVIEW_DESCRIPTION_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			REVIEW_DESCRIPTION_ID, R4EUIConstants.DESCRIPTION_LABEL);

+	

+	/**

+	 * Field REVIEW_PROJECT_ID. (value is ""reviewElement.project"")

+	 */

+	private static final String REVIEW_PROJECT_ID = "reviewElement.project";

+

+	/**

+	 * Field REVIEW_PROJECT_PROPERTY_DESCRIPTOR.

+	 */

+	private static final TextPropertyDescriptor REVIEW_PROJECT_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			REVIEW_PROJECT_ID, R4EUIConstants.PROJECT_LABEL);

+	

+	/**

+	 * Field REVIEW_COMPONENTS_ID. (value is ""reviewElement.components"")

+	 */

+	private static final String REVIEW_COMPONENTS_ID = "reviewElement.components";

+

+	/**

+	 * Field REVIEW_COMPONENTS_PROPERTY_DESCRIPTOR.

+	 */

+	private static final TextPropertyDescriptor REVIEW_COMPONENTS_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			REVIEW_COMPONENTS_ID, R4EUIConstants.COMPONENTS_LABEL);

+	

+	/**

+	 * Field REVIEW_ENTRY_CRITERIA_ID. (value is ""reviewElement.entryCriteria"")

+	 */

+	private static final String REVIEW_ENTRY_CRITERIA_ID = "reviewElement.entryCriteria";

+

+	/**

+	 * Field REVIEW_ENTRY_CRITERIA_PROPERTY_DESCRIPTOR.

+	 */

+	private static final TextPropertyDescriptor REVIEW_ENTRY_CRITERIA_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			REVIEW_ENTRY_CRITERIA_ID, R4EUIConstants.ENTRY_CRITERIA_LABEL);

+	

+	/**

+	 * Field REVIEW_OBJECTIVES_ID. (value is ""reviewElement.objectives"")

+	 */

+	private static final String REVIEW_OBJECTIVES_ID = "reviewElement.objectives";

+

+	/**

+	 * Field REVIEW_OBJECTIVES_PROPERTY_DESCRIPTOR.

+	 */

+	private static final TextPropertyDescriptor REVIEW_OBJECTIVES_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			REVIEW_OBJECTIVES_ID, R4EUIConstants.OBJECTIVES_LABEL);

+	

+	/**

+	 * Field REVIEW_REFERENCE_MATERIAL_ID. (value is ""reviewElement.referenceMaterial"")

+	 */

+	private static final String REVIEW_REFERENCE_MATERIAL_ID = "reviewElement.referenceMaterial";

+

+	/**

+	 * Field REVIEW_REFERENCE_MATERIAL_PROPERTY_DESCRIPTOR.

+	 */

+	private static final TextPropertyDescriptor REVIEW_REFERENCE_MATERIAL_PROPERTY_DESCRIPTOR = new TextPropertyDescriptor(

+			REVIEW_REFERENCE_MATERIAL_ID, R4EUIConstants.REFERENCE_MATERIAL_LABEL);

+	

+	/**

+	 * Field DESCRIPTORS.

+	 */

+	private static final IPropertyDescriptor[] DESCRIPTORS = { REVIEW_NAME_PROPERTY_DESCRIPTOR,  

+		REVIEW_START_DATE_PROPERTY_DESCRIPTOR, REVIEW_END_DATE_PROPERTY_DESCRIPTOR, 

+		REVIEW_DESCRIPTION_PROPERTY_DESCRIPTOR, REVIEW_PROJECT_PROPERTY_DESCRIPTOR,

+		REVIEW_COMPONENTS_PROPERTY_DESCRIPTOR, REVIEW_ENTRY_CRITERIA_PROPERTY_DESCRIPTOR,

+		REVIEW_OBJECTIVES_PROPERTY_DESCRIPTOR, REVIEW_REFERENCE_MATERIAL_PROPERTY_DESCRIPTOR};

+	

+	

+	// ------------------------------------------------------------------------

+	// Constructors

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Constructor for ReviewGeneralProperties.

+	 * @param aElement R4EUIModelElement

+	 */

+	public ReviewProperties(R4EUIModelElement aElement) {

+		super(aElement);

+	}

+

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Method getPropertyDescriptors.

+	 * @return IPropertyDescriptor[]

+	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()

+	 */

+	

+	@Override

+	public IPropertyDescriptor[] getPropertyDescriptors() {

+		return DESCRIPTORS;

+	}

+	

+	/**

+	 * Method getPropertyValue.

+	 * @param aId Object

+	 * @return Object

+	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(Object)

+	 */

+	@Override

+	public Object getPropertyValue(Object aId) {

+		if (null != getElement()) {

+			if (REVIEW_NAME_ID.equals(aId)) { 

+				return ((R4EUIReview)getElement()).getReview().getName();

+			} else if (REVIEW_START_DATE_ID.equals(aId)) {

+				return ((R4EUIReview)getElement()).getReview().getStartDate().toString();

+			} else if (REVIEW_END_DATE_ID.equals(aId)) {

+				if (null == ((R4EUIReview)getElement()).getReview().getEndDate()) return R4EUIConstants.IN_PROGRESS_MSG;

+				return ((R4EUIReview)getElement()).getReview().getEndDate().toString();

+			} else if (REVIEW_DESCRIPTION_ID.equals(aId)) {

+				return ((R4EUIReview)getElement()).getReview().getExtraNotes();

+			} else if (REVIEW_PROJECT_ID.equals(aId)) {

+				return ((R4EUIReview)getElement()).getReview().getProject();

+			} else if (REVIEW_COMPONENTS_ID.equals(aId)) { 

+				return ((R4EUIReview)getElement()).getReview().getComponents().toString();

+			} else if (REVIEW_ENTRY_CRITERIA_ID.equals(aId)) {

+				return ((R4EUIReview)getElement()).getReview().getEntryCriteria();

+			} else if (REVIEW_OBJECTIVES_ID.equals(aId)) {

+				return ((R4EUIReview)getElement()).getReview().getObjectives();

+			} else if (REVIEW_REFERENCE_MATERIAL_ID.equals(aId)) {

+				return ((R4EUIReview)getElement()).getReview().getReferenceMaterial();

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Method setPropertyValue.

+	 * @param aId Object

+	 * @param aValue Object

+	 * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(Object, Object)

+	 */

+	@Override

+	public void setPropertyValue(Object aId, Object aValue) { // $codepro.audit.disable emptyMethod

+		if (!(R4EUIModelController.isDialogOpen()) && getElement().isOpen() && !getElement().isReviewed()) {

+			try {

+				if (REVIEW_NAME_ID.equals(aId)) { 

+					final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(((R4EUIReview)getElement()).getReview(), 

+							R4EUIModelController.getReviewer());

+					((R4EUIReview)getElement()).getReview().setName((String) aValue);

+					R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+				} else if (REVIEW_DESCRIPTION_ID.equals(aId)) {

+					final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(((R4EUIReview)getElement()).getReview(), 

+							R4EUIModelController.getReviewer());

+					((R4EUIReview)getElement()).getReview().setExtraNotes((String) aValue);

+					R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+				}

+			} catch (ResourceHandlingException e) {

+				UIUtils.displayResourceErrorDialog(e);

+			} catch (OutOfSyncException e) {

+				UIUtils.displaySyncErrorDialog(e);

+			}

+		}

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/SelectionProperties.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/SelectionProperties.java
similarity index 97%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/SelectionProperties.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/SelectionProperties.java
index 1cc75dc..84a18e6 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/SelectionProperties.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/general/SelectionProperties.java
@@ -15,7 +15,7 @@
  *   

  ******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.general;

 

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelElement;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUISelection;

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/AnomalyExtraTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/AnomalyExtraTabPropertySection.java
new file mode 100644
index 0000000..2e0842a
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/AnomalyExtraTabPropertySection.java
@@ -0,0 +1,552 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the tabbed property section for the Anomaly Extended 

+ * model element

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

+

+import java.text.SimpleDateFormat;

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.jface.window.Window;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4ECommentType;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.Persistence.RModelFactoryExt;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

+import org.eclipse.mylyn.reviews.r4e.ui.dialogs.CalendarDialog;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyExtended;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.CCombo;

+import org.eclipse.swt.custom.CLabel;

+import org.eclipse.swt.events.FocusEvent;

+import org.eclipse.swt.events.FocusListener;

+import org.eclipse.swt.events.SelectionEvent;

+import org.eclipse.swt.events.SelectionListener;

+import org.eclipse.swt.layout.FormAttachment;

+import org.eclipse.swt.layout.FormData;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Button;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class AnomalyExtraTabPropertySection extends ModelElementTabPropertySection {

+

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field fStateCombo.

+	 */

+	protected CCombo fStateCombo = null;

+	

+	/**

+	 * Field fClassCombo.

+	 */

+	protected CCombo fClassCombo = null;

+	

+	/**

+	 * Field fRankCombo.

+	 */

+	protected CCombo fRankCombo = null;

+	

+	/**

+	 * Field fDateText.

+	 */

+	protected Text fDateText = null;

+	

+	/**

+	 * Field fCalendarButton.

+	 */

+	protected Button fCalendarButton = null;

+	

+	/**

+	 * Field fRankCombo.

+	 */

+	protected CCombo fDecidedByCombo = null;

+	

+	/**

+	 * Field fRankCombo.

+	 */

+	protected CCombo fFixedByCombo = null;

+	

+	/**

+	 * Field fRankCombo.

+	 */

+	protected CCombo fFollowUpByCombo = null;

+	

+	/**

+	 * Field fNotAcceptedReasonText.

+	 */

+	protected Text fNotAcceptedReasonText = null;

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	

+	/**

+	 * Method shouldUseExtraSpace.

+	 * @return boolean

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#shouldUseExtraSpace()

+	 */

+	@Override

+	public boolean shouldUseExtraSpace() {

+		return true;

+	}

+	

+	/**

+	 * Method createControls.

+	 * @param parent Composite

+	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

+	 */

+	@Override

+	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

+		super.createControls(parent, aTabbedPropertySheetPage);

+

+		//Tell element to build its own detailed tab layout

+		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

+		final Composite composite = widgetFactory.createFlatFormComposite(parent);

+	    FormData data = null;

+	    

+	    //State

+	    fStateCombo = widgetFactory.createCCombo(composite, SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

+	    fStateCombo.setLayoutData(data);

+	    fStateCombo.addSelectionListener(new SelectionListener() {

+			public void widgetSelected(SelectionEvent e) {

+	    		if (!fRefreshInProgress) {

+	    			try {

+	    				final String currentUser = R4EUIModelController.getReviewer();

+						final R4EAnomaly modelAnomaly = ((R4EUIAnomalyExtended)fProperties.getElement()).getAnomaly();

+	    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelAnomaly, currentUser);

+	    				modelAnomaly.setState(R4EUIAnomalyExtended.getStateFromString(fStateCombo.getText()));

+	    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+	    			} catch (ResourceHandlingException e1) {

+	    				UIUtils.displayResourceErrorDialog(e1);

+	    			} catch (OutOfSyncException e1) {

+	    				UIUtils.displaySyncErrorDialog(e1);

+	    			}

+	    		}

+    			refresh();

+			}

+			public void widgetDefaultSelected(SelectionEvent e) { // $codepro.audit.disable emptyMethod

+				//No implementation needed

+			}

+		});

+	    

+	    final CLabel stateLabel = widgetFactory.createCLabel(composite, R4EUIConstants.STATE_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fStateCombo, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fStateCombo, 0, SWT.CENTER);

+	    stateLabel.setLayoutData(data);

+	    

+	    //Class

+	    fClassCombo = widgetFactory.createCCombo(composite, SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fStateCombo, ITabbedPropertyConstants.VSPACE);

+	    fClassCombo.setLayoutData(data);

+	    fClassCombo.addSelectionListener(new SelectionListener() {

+			public void widgetSelected(SelectionEvent e) {

+	    		if (!fRefreshInProgress) {

+	    			try {

+	    				final String currentUser = R4EUIModelController.getReviewer();

+						final R4EAnomaly modelAnomaly = ((R4EUIAnomalyExtended)fProperties.getElement()).getAnomaly();

+	    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelAnomaly, currentUser);

+	    				final R4ECommentType type = RModelFactoryExt.eINSTANCE.createR4ECommentType();

+	    				type.setType(R4EUIAnomalyExtended.getClassFromString(fClassCombo.getText()));

+	    				modelAnomaly.setType(type);

+	    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+	    			} catch (ResourceHandlingException e1) {

+	    				UIUtils.displayResourceErrorDialog(e1);

+	    			} catch (OutOfSyncException e1) {

+	    				UIUtils.displaySyncErrorDialog(e1);

+	    			}

+	    		}

+    			refresh();

+			}

+			public void widgetDefaultSelected(SelectionEvent e) { // $codepro.audit.disable emptyMethod

+				//No implementation needed

+			}

+		});

+	    

+	    final CLabel classLabel = widgetFactory.createCLabel(composite, R4EUIConstants.CLASS_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fRankCombo, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fRankCombo, 0, SWT.CENTER);

+	    classLabel.setLayoutData(data);

+	    

+	    //Rank

+	    fRankCombo = widgetFactory.createCCombo(composite, SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fStateCombo, ITabbedPropertyConstants.VSPACE);

+	    fRankCombo.setLayoutData(data);

+	    fRankCombo.addSelectionListener(new SelectionListener() {

+			public void widgetSelected(SelectionEvent e) {

+	    		if (!fRefreshInProgress) {

+	    			try {

+	    				final String currentUser = R4EUIModelController.getReviewer();

+						final R4EAnomaly modelAnomaly = ((R4EUIAnomalyExtended)fProperties.getElement()).getAnomaly();

+	    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelAnomaly, currentUser);

+	    				modelAnomaly.setRank(R4EUIAnomalyExtended.getRankFromString(fClassCombo.getText()));

+	    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+	    			} catch (ResourceHandlingException e1) {

+	    				UIUtils.displayResourceErrorDialog(e1);

+	    			} catch (OutOfSyncException e1) {

+	    				UIUtils.displaySyncErrorDialog(e1);

+	    			}

+	    		}	

+    			refresh();

+			}

+			public void widgetDefaultSelected(SelectionEvent e) { // $codepro.audit.disable emptyMethod

+				//No implementation needed

+			}

+		});

+	    

+	    final CLabel rankLabel = widgetFactory.createCLabel(composite, R4EUIConstants.RANK_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fRankCombo, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fRankCombo, 0, SWT.CENTER);

+	    rankLabel.setLayoutData(data);

+

+	    //Due Date

+	    final Composite dateComposite = widgetFactory.createComposite(composite);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fRankCombo, ITabbedPropertyConstants.VSPACE);

+	    dateComposite.setLayoutData(data);

+	    dateComposite.setLayout(new GridLayout(2, false));

+	    

+	    fDateText = widgetFactory.createText(dateComposite, "", SWT.READ_ONLY);

+	    fDateText.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));

+	    fDateText.setEditable(false);

+	    fCalendarButton = widgetFactory.createButton(dateComposite, "...", SWT.NONE);

+	    fCalendarButton.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));

+	    fCalendarButton.addSelectionListener(new SelectionListener() {

+			public void widgetSelected(SelectionEvent e) {

+				final CalendarDialog dialog = new CalendarDialog(R4EUIModelController.getNavigatorView(). // $codepro.audit.disable methodChainLength

+						getSite().getWorkbenchWindow().getShell());

+		    	final int result = dialog.open();

+		    	if (result == Window.OK) {

+		    		final SimpleDateFormat dateFormat = new SimpleDateFormat(R4EUIConstants.SIMPLE_DATE_FORMAT);	

+		    		fDateText.setText(dateFormat.format(dialog.getDate()));

+		    		if (!fRefreshInProgress) {

+		    			try {

+		    				final String currentUser = R4EUIModelController.getReviewer();

+							final R4EAnomaly modelAnomaly = ((R4EUIAnomalyExtended)fProperties.getElement()).getAnomaly();

+		    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelAnomaly, currentUser);

+		    				modelAnomaly.setDueDate(dialog.getDate());

+		    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+		    			} catch (ResourceHandlingException e1) {

+		    				UIUtils.displayResourceErrorDialog(e1);

+		    			} catch (OutOfSyncException e1) {

+		    				UIUtils.displaySyncErrorDialog(e1);

+		    			}

+		    		}

+	    			refresh();

+		    	}

+			}

+			public void widgetDefaultSelected(SelectionEvent e) { // $codepro.audit.disable emptyMethod

+				// No implementation needed

+			}

+		});

+	    

+	    final CLabel dateLabel = widgetFactory.createCLabel(composite, R4EUIConstants.DUE_DATE_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(dateComposite, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(dateComposite, 0, SWT.CENTER);

+	    dateLabel.setLayoutData(data);

+	    

+	    //Decided by

+	    fDecidedByCombo = widgetFactory.createCCombo(composite, SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(dateComposite, ITabbedPropertyConstants.VSPACE);

+	    fDecidedByCombo.setLayoutData(data);

+	    fDecidedByCombo.addSelectionListener(new SelectionListener() {

+			public void widgetSelected(SelectionEvent e) {

+	    		if (!fRefreshInProgress) {

+	    			try {

+	    				final String currentUser = R4EUIModelController.getReviewer();

+						final R4EAnomaly modelAnomaly = ((R4EUIAnomalyExtended)fProperties.getElement()).getAnomaly();

+	    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelAnomaly, currentUser);

+	    				modelAnomaly.setDecidedByID(fDecidedByCombo.getText());

+	    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+	    			} catch (ResourceHandlingException e1) {

+	    				UIUtils.displayResourceErrorDialog(e1);

+	    			} catch (OutOfSyncException e1) {

+	    				UIUtils.displaySyncErrorDialog(e1);

+	    			}

+	    		}

+    			refresh();

+			}

+			public void widgetDefaultSelected(SelectionEvent e) { // $codepro.audit.disable emptyMethod

+				//No implementation needed

+			}

+		});

+	    

+	    final CLabel decidedByLabel = widgetFactory.createCLabel(composite, R4EUIConstants.DECIDED_BY_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fDecidedByCombo, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fDecidedByCombo, 0, SWT.CENTER);

+	    decidedByLabel.setLayoutData(data);

+	    

+	    //Fixed by

+	    fFixedByCombo = widgetFactory.createCCombo(composite, SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fDecidedByCombo, ITabbedPropertyConstants.VSPACE);

+	    fFixedByCombo.setLayoutData(data);

+	    fFixedByCombo.addSelectionListener(new SelectionListener() {

+			public void widgetSelected(SelectionEvent e) {

+	    		if (!fRefreshInProgress) {

+	    			try {

+	    				final String currentUser = R4EUIModelController.getReviewer();

+						final R4EAnomaly modelAnomaly = ((R4EUIAnomalyExtended)fProperties.getElement()).getAnomaly();

+	    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelAnomaly, currentUser);

+	    				modelAnomaly.setFixedByID(fFixedByCombo.getText());

+	    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+	    			} catch (ResourceHandlingException e1) {

+	    				UIUtils.displayResourceErrorDialog(e1);

+	    			} catch (OutOfSyncException e1) {

+	    				UIUtils.displaySyncErrorDialog(e1);

+	    			}

+	    		}

+    			refresh();

+			}

+			public void widgetDefaultSelected(SelectionEvent e) { // $codepro.audit.disable emptyMethod

+				//No implementation needed

+			}

+		});

+	    

+	    final CLabel fixedByLabel = widgetFactory.createCLabel(composite, R4EUIConstants.FIXED_BY_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fFixedByCombo, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fFixedByCombo, 0, SWT.CENTER);

+	    fixedByLabel.setLayoutData(data);

+	    

+	    //Folluw-up by

+	    fFollowUpByCombo = widgetFactory.createCCombo(composite, SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fFixedByCombo, ITabbedPropertyConstants.VSPACE);

+	    fFollowUpByCombo.setLayoutData(data);

+	    fFollowUpByCombo.addSelectionListener(new SelectionListener() {

+			public void widgetSelected(SelectionEvent e) {

+	    		if (!fRefreshInProgress) {

+	    			try {

+	    				final String currentUser = R4EUIModelController.getReviewer();

+						final R4EAnomaly modelAnomaly = ((R4EUIAnomalyExtended)fProperties.getElement()).getAnomaly();

+	    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelAnomaly, currentUser);

+	    				modelAnomaly.setFollowUpByID(fFollowUpByCombo.getText());

+	    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+	    			} catch (ResourceHandlingException e1) {

+	    				UIUtils.displayResourceErrorDialog(e1);

+	    			} catch (OutOfSyncException e1) {

+	    				UIUtils.displaySyncErrorDialog(e1);

+	    			}

+	    		}

+    			refresh();

+			}

+			public void widgetDefaultSelected(SelectionEvent e) { // $codepro.audit.disable emptyMethod

+				//No implementation needed

+			}

+		});

+	    

+	    final CLabel followUpByLabel = widgetFactory.createCLabel(composite, R4EUIConstants.FOLLOWUP_BY_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fFollowUpByCombo, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fFollowUpByCombo, 0, SWT.CENTER);

+	    followUpByLabel.setLayoutData(data);

+	    

+	    //Not accepted reason

+	    fNotAcceptedReasonText = widgetFactory.createText(composite, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fFollowUpByCombo, ITabbedPropertyConstants.VSPACE);

+	    fNotAcceptedReasonText.setLayoutData(data);

+	    fNotAcceptedReasonText.addFocusListener(new FocusListener() {		

+			public void focusLost(FocusEvent e) {

+	    		if (!fRefreshInProgress) {

+	    			try {

+	    				final String currentUser = R4EUIModelController.getReviewer();

+						final R4EAnomaly modelAnomaly = ((R4EUIAnomalyExtended)fProperties.getElement()).getAnomaly();

+	    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelAnomaly, currentUser);

+	    				modelAnomaly.setNotAcceptedReason(fNotAcceptedReasonText.getText());

+	    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+	    			} catch (ResourceHandlingException e1) {

+	    				UIUtils.displayResourceErrorDialog(e1);

+	    			} catch (OutOfSyncException e1) {

+	    				UIUtils.displaySyncErrorDialog(e1);

+	    			}

+	    		}

+    			refresh();

+			}

+			public void focusGained(FocusEvent e) { // $codepro.audit.disable emptyMethod

+				//Nothing to do

+			}

+		});

+	    UIUtils.addTabbedPropertiesTextResizeListener(fNotAcceptedReasonText);

+	    

+	    final CLabel notAcceptedReasonLabel = widgetFactory.createCLabel(composite, R4EUIConstants.NOT_ACCEPTED_REASON_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fNotAcceptedReasonText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fNotAcceptedReasonText, 0, SWT.CENTER);

+	    notAcceptedReasonLabel.setLayoutData(data);

+	}

+	

+	

+	

+	/**

+	 * Method refresh.

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

+	 */

+	@Override

+	public void refresh() {

+		fRefreshInProgress = true;

+		final R4EUIAnomalyExtended uiModelAnomaly = (R4EUIAnomalyExtended)fProperties.getElement();

+		final R4EAnomaly modelAnomaly = uiModelAnomaly.getAnomaly();

+    	final List<R4EParticipant> participants = R4EUIModelController.getActiveReview().getParticipants();

+    	final List<String> participantsList = new ArrayList<String>();

+    	for (R4EParticipant participant : participants) {

+    		participantsList.add(participant.getId());

+    	}

+		final String[] participantsStr = participantsList.toArray(new String[participantsList.size()]);

+		fStateCombo.setItems(uiModelAnomaly.getAvailableStates());

+		fStateCombo.select(uiModelAnomaly.mapStateToIndex(modelAnomaly.getState()));

+		fClassCombo.setItems(R4EUIAnomalyExtended.getClasses());

+		if (null != modelAnomaly.getType() && null != ((R4ECommentType)modelAnomaly.getType()).getType()) {

+			fClassCombo.select(((R4ECommentType)modelAnomaly.getType()).getType().getValue());

+		}

+		fRankCombo.setItems(R4EUIAnomalyExtended.getRanks());

+		fRankCombo.select(modelAnomaly.getRank().getValue());

+		if (null != modelAnomaly.getDueDate()) {

+    		final SimpleDateFormat dateFormat = new SimpleDateFormat(R4EUIConstants.SIMPLE_DATE_FORMAT);	

+    		fDateText.setText(dateFormat.format(modelAnomaly.getDueDate()));

+		}

+		fDecidedByCombo.setItems(participantsStr);

+		fDecidedByCombo.select(uiModelAnomaly.mapParticipantToIndex(modelAnomaly.getDecidedByID()));

+		fFixedByCombo.setItems(participantsStr);

+		fFixedByCombo.select(uiModelAnomaly.mapParticipantToIndex(modelAnomaly.getFixedByID()));

+		fFollowUpByCombo.setItems(participantsStr);

+		fFollowUpByCombo.select(uiModelAnomaly.mapParticipantToIndex(modelAnomaly.getFollowUpByID()));

+		if (null != modelAnomaly.getNotAcceptedReason()) fNotAcceptedReasonText.setText(modelAnomaly.getNotAcceptedReason());

+		setEnabledFields();

+		fRefreshInProgress = false;

+	}

+	

+	/**

+	 * Method setEditableFields.

+	 */

+	@Override

+	protected void setEnabledFields() {

+		if (R4EUIModelController.isDialogOpen()) {

+			fStateCombo.setEnabled(false);

+			fClassCombo.setEnabled(false);

+			fRankCombo.setEnabled(false);

+			fDateText.setEnabled(false);

+			fCalendarButton.setEnabled(false);

+			fDecidedByCombo.setEnabled(false);

+			fFixedByCombo.setEnabled(false);

+			fFollowUpByCombo.setEnabled(false);

+			fNotAcceptedReasonText.setEnabled(false);

+		} else {

+			final R4EUIAnomalyExtended uiAnomaly = (R4EUIAnomalyExtended)fProperties.getElement();

+			fStateCombo.setEnabled(true);

+			

+			if (uiAnomaly.isClassEnabled()) {

+				fClassCombo.setEnabled(true);

+			} else {

+				fClassCombo.setEnabled(false);

+			}

+			

+			if (uiAnomaly.isRankEnabled()) {

+				fRankCombo.setEnabled(true);

+			} else  {

+				fRankCombo.setEnabled(false);

+			}

+			

+			if (uiAnomaly.isDueDateEnabled()) {

+				fDateText.setEnabled(true);

+				fCalendarButton.setEnabled(true);

+			} else {

+				fDateText.setEnabled(false);

+			}

+			

+			if (uiAnomaly.isDecidedByEnabled()) {

+				fDecidedByCombo.setEnabled(true);

+			} else {

+				fDecidedByCombo.setEnabled(false);

+			}

+			

+			if (uiAnomaly.isFixedByEnabled()) {

+				fFixedByCombo.setEnabled(true);

+			} else {

+				fFixedByCombo.setEnabled(false);

+			}

+			

+			if (uiAnomaly.isFollowUpByEnabled()) {

+				fFollowUpByCombo.setEnabled(true);

+			} else {

+				fFollowUpByCombo.setEnabled(false);

+			}

+			

+			if (uiAnomaly.isNotAcceptedReasonEnabled()) {

+				fNotAcceptedReasonText.setEnabled(true);

+				fNotAcceptedReasonText.setEditable(true);

+			}

+			else {

+				fNotAcceptedReasonText.setEnabled(false);

+			}

+		}

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/AnomalyGeneralTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/AnomalyGeneralTabPropertySection.java
new file mode 100644
index 0000000..481832d
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/AnomalyGeneralTabPropertySection.java
@@ -0,0 +1,270 @@
+// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, staticFieldSecurity, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, com.instantiations.assist.eclipse.analysis.instanceFieldSecurity

+/*******************************************************************************

+ * Copyright (c) 2010 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the tabbed property section for the Anomaly model element

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

+

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

+import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIPosition;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIAnomalyBasic;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.CLabel;

+import org.eclipse.swt.events.FocusEvent;

+import org.eclipse.swt.events.FocusListener;

+import org.eclipse.swt.layout.FormAttachment;

+import org.eclipse.swt.layout.FormData;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class AnomalyGeneralTabPropertySection extends ModelElementTabPropertySection {

+	

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field fPosition.

+	 */

+	private IR4EUIPosition fPosition;

+	

+	/**

+	 * Field FTitleText.

+	 */

+	protected Text fTitleText = null;

+	

+	/**

+	 * Field FAuthorText.

+	 */

+	protected Text fAuthorText = null;

+	

+	/**

+	 * Field FCreationDateText.

+	 */

+	protected Text fCreationDateText = null;

+	

+	/**

+	 * Field FPositionText.

+	 */

+	protected Text fPositionText = null;

+	

+	/**

+	 * Field FDescriptionText.

+	 */

+	protected Text fDescriptionText = null;

+

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Method shouldUseExtraSpace.

+	 * @return boolean

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#shouldUseExtraSpace()

+	 */

+	@Override

+	public boolean shouldUseExtraSpace() {

+		return true;

+	}

+	

+	/**

+	 * Method createControls.

+	 * @param parent Composite

+	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

+	 */

+	@Override

+	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

+		super.createControls(parent, aTabbedPropertySheetPage);

+

+		//Tell element to build its own detailed tab layout

+		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

+		final Composite composite = widgetFactory.createFlatFormComposite(parent);

+	    FormData data = null;

+	   

+	    //Anomaly title

+	    fTitleText = widgetFactory.createText(composite, "", SWT.MULTI);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

+	    fTitleText.setLayoutData(data);

+	    fTitleText.addFocusListener(new FocusListener() {		

+			public void focusLost(FocusEvent e) {

+				if (!fRefreshInProgress) {

+					try {

+						final String currentUser = R4EUIModelController.getReviewer();

+						final R4EAnomaly modelAnomaly = ((R4EUIAnomalyBasic)fProperties.getElement()).getAnomaly();

+						final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelAnomaly, currentUser);

+						modelAnomaly.setTitle(fTitleText.getText());

+						R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+					} catch (ResourceHandlingException e1) {

+						UIUtils.displayResourceErrorDialog(e1);

+					} catch (OutOfSyncException e1) {

+						UIUtils.displaySyncErrorDialog(e1);

+					}

+				}

+			}

+			public void focusGained(FocusEvent e) { // $codepro.audit.disable emptyMethod

+				//Nothing to do

+			}

+		});

+	    UIUtils.addTabbedPropertiesTextResizeListener(fTitleText);

+	    

+	    final CLabel titleLabel = widgetFactory.createCLabel(composite, R4EUIConstants.TITLE_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fTitleText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fTitleText, 0, SWT.CENTER);

+	    titleLabel.setLayoutData(data);

+	    

+	    //Anomaly Author (read-only)

+	    fAuthorText = widgetFactory.createText(composite, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fTitleText, ITabbedPropertyConstants.VSPACE);

+	    fAuthorText.setLayoutData(data);

+	

+	    final CLabel authorLabel = widgetFactory.createCLabel(composite, R4EUIConstants.AUTHOR_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fAuthorText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fAuthorText, 0, SWT.CENTER);

+	    authorLabel.setLayoutData(data);

+	

+	    //Anomaly Creation Date (read-only)

+	    fCreationDateText = widgetFactory.createText(composite, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fAuthorText, ITabbedPropertyConstants.VSPACE);

+	    fCreationDateText.setLayoutData(data);

+	

+	    final CLabel creationDateLabel = widgetFactory.createCLabel(composite, R4EUIConstants.CREATION_DATE_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fCreationDateText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fCreationDateText, 0, SWT.CENTER);

+	    creationDateLabel.setLayoutData(data);

+	    

+	    //Anomaly position (read-only)

+	    fPositionText = widgetFactory.createText(composite, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fCreationDateText, ITabbedPropertyConstants.VSPACE);

+	    fPositionText.setLayoutData(data);

+	

+	    final CLabel positionLabel = widgetFactory.createCLabel(composite, R4EUIConstants.POSITION_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fPositionText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fPositionText, 0, SWT.CENTER);

+	    positionLabel.setLayoutData(data);

+	    

+	    //Anomaly Description

+	    fDescriptionText = widgetFactory.createText(composite, "", SWT.MULTI);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fPositionText, ITabbedPropertyConstants.VSPACE);

+	    fDescriptionText.setLayoutData(data);

+	    fDescriptionText.addFocusListener(new FocusListener() {		

+			public void focusLost(FocusEvent e) {

+	    		if (!fRefreshInProgress) {

+	    			try {

+	    				final String currentUser = R4EUIModelController.getReviewer();

+						final R4EAnomaly modelAnomaly = ((R4EUIAnomalyBasic)fProperties.getElement()).getAnomaly();

+	    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelAnomaly, currentUser);

+	    				modelAnomaly.setDescription(fDescriptionText.getText());

+	    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+	    			} catch (ResourceHandlingException e1) {

+	    				UIUtils.displayResourceErrorDialog(e1);

+	    			} catch (OutOfSyncException e1) {

+	    				UIUtils.displaySyncErrorDialog(e1);

+	    			}

+	    		}

+			}

+			public void focusGained(FocusEvent e) { // $codepro.audit.disable emptyMethod

+				//Nothing to do

+			}

+		});

+	    UIUtils.addTabbedPropertiesTextResizeListener(fDescriptionText);

+	    

+	    final CLabel descriptionLabel = widgetFactory.createCLabel(composite, R4EUIConstants.DESCRIPTION_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fDescriptionText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fDescriptionText, 0, SWT.TOP);

+	    descriptionLabel.setLayoutData(data);

+	}

+

+	/**

+	 * Method refresh.

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

+	 */

+	@Override

+	public void refresh() {

+		fRefreshInProgress = true;

+		final R4EAnomaly modelAnomaly = ((R4EUIAnomalyBasic)fProperties.getElement()).getAnomaly();

+		fTitleText.setText(modelAnomaly.getTitle());

+		fAuthorText.setText(modelAnomaly.getUser().getId());

+		fCreationDateText.setText(modelAnomaly.getCreatedOn().toString());

+		fPosition = ((R4EUIAnomalyBasic)fProperties.getElement()).getPosition();

+		if (null == fPosition) {

+			fPositionText.setText(R4EUIConstants.GLOBAL_ANOMALY_PROPERTY_VALUE);

+		} else {

+			fPositionText.setText(fPosition.toString());

+		}

+		fDescriptionText.setText(modelAnomaly.getDescription());

+		setEnabledFields();

+		fRefreshInProgress = false;

+	}

+	

+	/**

+	 * Method setEditableFields.

+	 */

+	@Override

+	protected void setEnabledFields() {

+		if (R4EUIModelController.isDialogOpen()) {

+			fTitleText.setEnabled(false);

+			fAuthorText.setEnabled(false);

+			fCreationDateText.setEnabled(false);

+			fPositionText.setEnabled(false);

+			fDescriptionText.setEnabled(false);

+		} else {

+			fTitleText.setEnabled(true);

+			fAuthorText.setEnabled(true);

+			fCreationDateText.setEnabled(true);

+			fPositionText.setEnabled(true);

+			fDescriptionText.setEnabled(true);

+		}

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/CommentTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/CommentTabPropertySection.java
new file mode 100644
index 0000000..c73b5c9
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/CommentTabPropertySection.java
@@ -0,0 +1,192 @@
+// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, staticFieldSecurity, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, com.instantiations.assist.eclipse.analysis.instanceFieldSecurity, sourceLength, explicitThisUsage

+/*******************************************************************************

+ * Copyright (c) 2010 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the tabbed property section for the Comment model element

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

+

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EComment;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIComment;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.CLabel;

+import org.eclipse.swt.events.FocusEvent;

+import org.eclipse.swt.events.FocusListener;

+import org.eclipse.swt.layout.FormAttachment;

+import org.eclipse.swt.layout.FormData;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class CommentTabPropertySection extends ModelElementTabPropertySection {

+	

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field FAuthorText.

+	 */

+	private Text fAuthorText = null;

+	

+	/**

+	 * Field FCreationDateText.

+	 */

+	private Text fCreationDateText = null;

+	

+	/**

+	 * Field FDescriptionText.

+	 */

+	protected Text fDescriptionText = null;

+

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Method shouldUseExtraSpace.

+	 * @return boolean

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#shouldUseExtraSpace()

+	 */

+	@Override

+	public boolean shouldUseExtraSpace() {

+		return true;

+	}

+	

+	/**

+	 * Method createControls.

+	 * @param parent Composite

+	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

+	 */

+	@Override

+	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

+		super.createControls(parent, aTabbedPropertySheetPage);

+

+		//Tell element to build its own detailed tab layout

+		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

+		final Composite composite = widgetFactory.createFlatFormComposite(parent);

+	    FormData data = null;

+	   

+	    //Author (read-only)

+	    fAuthorText = widgetFactory.createText(composite, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

+	    fAuthorText.setLayoutData(data);

+

+	    final CLabel authorLabel = widgetFactory.createCLabel(composite, R4EUIConstants.AUTHOR_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fAuthorText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fAuthorText, 0, SWT.CENTER);

+	    authorLabel.setLayoutData(data);

+	    

+	    //Creation Date (read-only)

+	    fCreationDateText = widgetFactory.createText(composite, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fAuthorText, ITabbedPropertyConstants.VSPACE);

+	    fCreationDateText.setLayoutData(data);

+	

+	    final CLabel creationDateLabel = widgetFactory.createCLabel(composite, R4EUIConstants.CREATION_DATE_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fCreationDateText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fCreationDateText, 0, SWT.CENTER);

+	    creationDateLabel.setLayoutData(data);

+	

+	    //Description

+	    fDescriptionText = widgetFactory.createText(composite, "", SWT.MULTI);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fCreationDateText, ITabbedPropertyConstants.VSPACE);

+	    fDescriptionText.setLayoutData(data);

+	    fDescriptionText.addFocusListener(new FocusListener() {		

+			public void focusLost(FocusEvent e) {

+				if (!fRefreshInProgress) {

+					try {

+						final String currentUser = R4EUIModelController.getReviewer();

+						final R4EComment modelComment = ((R4EUIComment)fProperties.getElement()).getComment();

+						final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelComment, currentUser);

+						modelComment.setDescription(fDescriptionText.getText());

+						R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+					} catch (ResourceHandlingException e1) {

+						UIUtils.displayResourceErrorDialog(e1);

+					} catch (OutOfSyncException e1) {

+						UIUtils.displaySyncErrorDialog(e1);

+					}

+				}

+			}

+			public void focusGained(FocusEvent e) { // $codepro.audit.disable emptyMethod

+				//Nothing to do

+			}

+		});

+	    UIUtils.addTabbedPropertiesTextResizeListener(fDescriptionText);

+	    

+	    final CLabel descriptionLabel = widgetFactory.createCLabel(composite, R4EUIConstants.DESCRIPTION_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fDescriptionText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fDescriptionText, 0, SWT.TOP);

+	    descriptionLabel.setLayoutData(data);

+	}

+

+	/**

+	 * Method refresh.

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

+	 */

+	@Override

+	public void refresh() {

+		fRefreshInProgress = true;

+		final R4EComment modelComment = ((R4EUIComment)fProperties.getElement()).getComment();

+		fAuthorText.setText(modelComment.getUser().getId());

+		fCreationDateText.setText(modelComment.getCreatedOn().toString());

+		fDescriptionText.setText(modelComment.getDescription());

+		setEnabledFields();

+		fRefreshInProgress = false;

+	}

+	

+	/**

+	 * Method setEditableFields.

+	 */

+	@Override

+	protected void setEnabledFields() {

+		if (R4EUIModelController.isDialogOpen()) {

+			fAuthorText.setEnabled(false);

+			fCreationDateText.setEnabled(false);

+			fDescriptionText.setEnabled(false);

+		} else {

+			fAuthorText.setEnabled(true);

+			fCreationDateText.setEnabled(true);

+			fDescriptionText.setEnabled(true);

+		}

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/FileContextTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/FileContextTabPropertySection.java
similarity index 66%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/FileContextTabPropertySection.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/FileContextTabPropertySection.java
index 019b612..bd60489 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/FileContextTabPropertySection.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/FileContextTabPropertySection.java
@@ -17,15 +17,13 @@
  *   

  ******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

 

 import org.eclipse.core.resources.IResource;

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.StructuredSelection;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileVersion;

-import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIFileContext;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.custom.CLabel;

@@ -35,9 +33,6 @@
 import org.eclipse.swt.widgets.Composite;

 import org.eclipse.swt.widgets.Group;

 import org.eclipse.swt.widgets.Text;

-import org.eclipse.ui.IWorkbenchPart;

-import org.eclipse.ui.views.properties.IPropertySource;

-import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;

 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

@@ -46,46 +41,41 @@
  * @author lmcdubo

  * @version $Revision: 1.0 $

  */

-public class FileContextTabPropertySection extends AbstractPropertySection {

+public class FileContextTabPropertySection extends ModelElementTabPropertySection {

 	

 	// ------------------------------------------------------------------------

 	// Member variables

 	// ------------------------------------------------------------------------

 	

 	/**

-	 * Field fFile.

-	 */

-	private FileContextProperties fFileProps;

-	

-	/**

 	 * Field FBaseFileNameText.

 	 */

-	protected static Text FBaseFileNameText = null;

+	protected Text fBaseFileNameText = null;

 	

 	/**

 	 * Field FBaseFilePathText.

 	 */

-	protected static Text FBaseFilePathText = null;

+	protected Text fBaseFilePathText = null;

 	

 	/**

 	 * Field FBaseFileVersionText.

 	 */

-	protected static Text FBaseFileVersionText = null;

+	protected Text fBaseFileVersionText = null;

 	

 	/**

 	 * Field FTargetFileNameText.

 	 */

-	protected static Text FTargetFileNameText = null;

+	protected Text fTargetFileNameText = null;

 	

 	/**

 	 * Field FTargetFilePathText.

 	 */

-	protected static Text FTargetFilePathText = null;

+	protected Text fTargetFilePathText = null;

 	

 	/**

 	 * Field FTargetFileVersionText.

 	 */

-	protected static Text FTargetFileVersionText = null;

+	protected Text fTargetFileVersionText = null;

 	

 	

 	// ------------------------------------------------------------------------

@@ -140,54 +130,48 @@
 	    FormData data = null;

 

 	    //File Name (read-only)

-	    FBaseFileNameText = aWidgetFactory.createText(aParent, "");

-	    FBaseFileNameText.setEditable(false);

-	    FBaseFileNameText.setEnabled(false);

+	    fBaseFileNameText = aWidgetFactory.createText(aParent, "", SWT.READ_ONLY);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

 	    data.top = new FormAttachment(aParent, ITabbedPropertyConstants.VSPACE);

-	    FBaseFileNameText.setLayoutData(data);

+	    fBaseFileNameText.setLayoutData(data);

 	

 	    final CLabel fileNameLabel = aWidgetFactory.createCLabel(aParent, R4EUIConstants.NAME_LABEL);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FBaseFileNameText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FBaseFileNameText, 0, SWT.CENTER);

+	    data.right = new FormAttachment(fBaseFileNameText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fBaseFileNameText, 0, SWT.CENTER);

 	    fileNameLabel.setLayoutData(data);

 	

 	    //File Path (read-only)

-	    FBaseFilePathText = aWidgetFactory.createText(aParent, "");

-	    FBaseFilePathText.setEditable(false);

-	    FBaseFilePathText.setEnabled(false);

+	    fBaseFilePathText = aWidgetFactory.createText(aParent, "", SWT.READ_ONLY);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FBaseFileNameText, ITabbedPropertyConstants.VSPACE);

-	    FBaseFilePathText.setLayoutData(data);

+	    data.top = new FormAttachment(fBaseFileNameText, ITabbedPropertyConstants.VSPACE);

+	    fBaseFilePathText.setLayoutData(data);

 

 	    final CLabel filePathLabel = aWidgetFactory.createCLabel(aParent, R4EUIConstants.PATH_LABEL);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FBaseFilePathText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FBaseFilePathText, 0, SWT.TOP);

+	    data.right = new FormAttachment(fBaseFilePathText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fBaseFilePathText, 0, SWT.TOP);

 	    filePathLabel.setLayoutData(data);

 	    

 	    //File Version (read-only)

-	    FBaseFileVersionText = aWidgetFactory.createText(aParent, "");

-	    FBaseFileVersionText.setEditable(false);

-	    FBaseFileVersionText.setEnabled(false);

+	    fBaseFileVersionText = aWidgetFactory.createText(aParent, "", SWT.READ_ONLY);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FBaseFilePathText, ITabbedPropertyConstants.VSPACE);

-	    FBaseFileVersionText.setLayoutData(data);

+	    data.top = new FormAttachment(fBaseFilePathText, ITabbedPropertyConstants.VSPACE);

+	    fBaseFileVersionText.setLayoutData(data);

 

 	    final CLabel fileVersionLabel = aWidgetFactory.createCLabel(aParent, R4EUIConstants.VERSION_LABEL);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FBaseFileVersionText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FBaseFileVersionText, 0, SWT.TOP);

+	    data.right = new FormAttachment(fBaseFileVersionText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fBaseFileVersionText, 0, SWT.TOP);

 	    fileVersionLabel.setLayoutData(data);

 	}

 	

@@ -200,75 +184,50 @@
 	    FormData data = null;

 

 	    //File Name (read-only)

-	    FTargetFileNameText = aWidgetFactory.createText(aParent, "");

-	    FTargetFileNameText.setEditable(false);

-	    FTargetFileNameText.setEnabled(false);

+	    fTargetFileNameText = aWidgetFactory.createText(aParent, "", SWT.READ_ONLY);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

 	    data.top = new FormAttachment(aParent, ITabbedPropertyConstants.VSPACE);

-	    FTargetFileNameText.setLayoutData(data);

+	    fTargetFileNameText.setLayoutData(data);

 	

 	    final CLabel fileNameLabel = aWidgetFactory.createCLabel(aParent, R4EUIConstants.NAME_LABEL);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FTargetFileNameText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FTargetFileNameText, 0, SWT.CENTER);

+	    data.right = new FormAttachment(fTargetFileNameText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fTargetFileNameText, 0, SWT.CENTER);

 	    fileNameLabel.setLayoutData(data);

 	

 	    //File Path (read-only)

-	    FTargetFilePathText = aWidgetFactory.createText(aParent, "");

-	    FTargetFilePathText.setEditable(false);

-	    FTargetFilePathText.setEnabled(false);

+	    fTargetFilePathText = aWidgetFactory.createText(aParent, "", SWT.READ_ONLY);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FTargetFileNameText, ITabbedPropertyConstants.VSPACE);

-	    FTargetFilePathText.setLayoutData(data);

+	    data.top = new FormAttachment(fTargetFileNameText, ITabbedPropertyConstants.VSPACE);

+	    fTargetFilePathText.setLayoutData(data);

 

 	    final CLabel filePathLabel = aWidgetFactory.createCLabel(aParent, R4EUIConstants.PATH_LABEL);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FTargetFilePathText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FTargetFilePathText, 0, SWT.TOP);

+	    data.right = new FormAttachment(fTargetFilePathText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fTargetFilePathText, 0, SWT.TOP);

 	    filePathLabel.setLayoutData(data);

 	    

 	    //File Version (read-only)

-	    FTargetFileVersionText = aWidgetFactory.createText(aParent, "");

-	    FTargetFileVersionText.setEditable(false);

-	    FTargetFileVersionText.setEnabled(false);

+	    fTargetFileVersionText = aWidgetFactory.createText(aParent, "", SWT.READ_ONLY);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FTargetFilePathText, ITabbedPropertyConstants.VSPACE);

-	    FTargetFileVersionText.setLayoutData(data);

+	    data.top = new FormAttachment(fTargetFilePathText, ITabbedPropertyConstants.VSPACE);

+	    fTargetFileVersionText.setLayoutData(data);

 

 	    final CLabel fileVersionLabel = aWidgetFactory.createCLabel(aParent, R4EUIConstants.VERSION_LABEL);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FTargetFileVersionText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FTargetFileVersionText, 0, SWT.TOP);

+	    data.right = new FormAttachment(fTargetFileVersionText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fTargetFileVersionText, 0, SWT.TOP);

 	    fileVersionLabel.setLayoutData(data);

 	}

-	

-	/**

-	 * Method setInput.

-	 * @param part IWorkbenchPart

-	 * @param aSelection ISelection

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#setInput(IWorkbenchPart, ISelection)

-	 */

-	@Override

-	public void setInput(IWorkbenchPart part, ISelection aSelection) {

-		//Get current selection.

-		if (null == aSelection || aSelection.isEmpty()) return;

-

-		//Get model element selected

-		final IR4EUIModelElement element = (IR4EUIModelElement) ((StructuredSelection)aSelection).getFirstElement();

-		if (null != element && element instanceof R4EUIFileContext) {

-			fFileProps = (FileContextProperties) ((R4EUIFileContext)element).getAdapter(IPropertySource.class);

-			refresh();

-		}

-	}

 

 	/**

 	 * Method refresh.

@@ -276,31 +235,56 @@
 	 */

 	@Override

 	public void refresh() {

-		final R4EFileContext modelFile = ((R4EUIFileContext)fFileProps.getElement()).getFileContext();

+		fRefreshInProgress = true;

+		final R4EFileContext modelFile = ((R4EUIFileContext)fProperties.getElement()).getFileContext();

 		final R4EFileVersion baseVersion = modelFile.getBase();

 		if (null != modelFile.getBase()) {

-			FBaseFileNameText.setText(baseVersion.getName());

+			fBaseFileNameText.setText(baseVersion.getName());

 			final IResource baseResource = baseVersion.getResource();

 			//The properties shows the absolute path

 			if (null != baseResource) {

-				FBaseFilePathText.setText(baseResource.getLocation().toOSString());

+				fBaseFilePathText.setText(baseResource.getLocation().toOSString());

 			} else {

-				FBaseFilePathText.setText("");

+				fBaseFilePathText.setText("");

 			}

-			FBaseFileVersionText.setText(baseVersion.getVersionID());

+			fBaseFileVersionText.setText(baseVersion.getVersionID());

 		} else {

-			FBaseFileNameText.setText(R4EUIConstants.NO_VERSION_PROPERTY_MESSAGE);

+			fBaseFileNameText.setText(R4EUIConstants.NO_VERSION_PROPERTY_MESSAGE);

 		}

 

 		final R4EFileVersion targetVersion = modelFile.getTarget();

-		FTargetFileNameText.setText(targetVersion.getName());

+		fTargetFileNameText.setText(targetVersion.getName());

 		final IResource targetResource = targetVersion.getResource();

 		//The properties shows the absolute path

 		if (null != targetResource) {

-			FTargetFilePathText.setText(targetResource.getLocation().toOSString());

+			fTargetFilePathText.setText(targetResource.getLocation().toOSString());

 		} else {

-			FTargetFilePathText.setText("");

+			fTargetFilePathText.setText("");

 		}

-		FTargetFileVersionText.setText(targetVersion.getVersionID());

+		fTargetFileVersionText.setText(targetVersion.getVersionID());

+		setEnabledFields();

+		fRefreshInProgress = false;

+	}

+	

+	/**

+	 * Method setEnabledFields.

+	 */

+	@Override

+	protected void setEnabledFields() {

+		if (R4EUIModelController.isDialogOpen()) {

+			fBaseFileNameText.setEnabled(false);

+			fBaseFilePathText.setEnabled(false);

+			fBaseFileVersionText.setEnabled(false);

+			fTargetFileNameText.setEnabled(false);

+			fTargetFilePathText.setEnabled(false);

+			fTargetFileVersionText.setEnabled(false);

+		} else {

+			fBaseFileNameText.setEnabled(true);

+			fBaseFilePathText.setEnabled(true);

+			fBaseFileVersionText.setEnabled(true);

+			fTargetFileNameText.setEnabled(true);

+			fTargetFilePathText.setEnabled(true);

+			fTargetFileVersionText.setEnabled(true);

+		}

 	}

 }

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ModelElementTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ModelElementTabPropertySection.java
new file mode 100644
index 0000000..c43128c
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ModelElementTabPropertySection.java
@@ -0,0 +1,130 @@
+/*******************************************************************************

+ * Copyright (c) 2010 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class defines the base class for the tabbed proprties for all UI elements

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

+

+import org.eclipse.jface.viewers.ISelection;

+import org.eclipse.jface.viewers.StructuredSelection;

+import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelElement;

+import org.eclipse.mylyn.reviews.r4e.ui.properties.general.ModelElementProperties;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.ui.IPropertyListener;

+import org.eclipse.ui.IWorkbenchPart;

+import org.eclipse.ui.views.properties.IPropertySource;

+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

+

+

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class ModelElementTabPropertySection extends AbstractPropertySection

+		implements IPropertyListener {

+

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field fReviewProps.

+	 */

+	protected ModelElementProperties fProperties;

+	

+	/**

+	 * Field fRefreshInProgress.

+	 */

+	protected boolean fRefreshInProgress = false;

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Method dispose.

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#dispose()

+	 */

+	@Override

+	public void dispose() {

+		super.dispose();

+		R4EUIModelController.removeElementStateListener(this);

+	}

+	

+	/**

+	 * Method createControls.

+	 * @param parent Composite

+	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

+	 */

+	@Override

+	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

+		super.createControls(parent, aTabbedPropertySheetPage);

+		R4EUIModelController.addElementStateListener(this);

+	}

+	

+	/**

+	 * Method setInput.

+	 * @param part IWorkbenchPart

+	 * @param aSelection ISelection

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#setInput(IWorkbenchPart, ISelection)

+	 */

+	@Override

+	public void setInput(IWorkbenchPart part, ISelection aSelection) {

+		

+		//Get current selection.

+		if (null == aSelection || aSelection.isEmpty()) return;

+		

+		//Get model element selected

+		final IR4EUIModelElement element = (IR4EUIModelElement) ((StructuredSelection)aSelection).getFirstElement();

+		if (null != element) {

+			fProperties = (ModelElementProperties) ((R4EUIModelElement)element).getAdapter(IPropertySource.class);

+			refresh();

+		}

+	}

+

+	/**

+	 * Method propertyChanged.

+	 * @param source Object

+	 * @param propId int

+	 * @see org.eclipse.ui.IPropertyListener#propertyChanged(Object, int)

+	 */

+	public void propertyChanged(Object source, int propId) {

+		refresh();

+	}

+

+	/**

+	 * Method refresh.

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

+	 */

+	@Override

+	public void refresh() {

+		fRefreshInProgress = true;

+		//default implementation

+		setEnabledFields();

+		fRefreshInProgress = false;

+	}

+	

+	/**

+	 * Method setEnabledFields.

+	 */

+	protected void setEnabledFields() { // $codepro.audit.disable emptyMethod

+		//default implementation

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ParticipantExtraTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ParticipantExtraTabPropertySection.java
new file mode 100644
index 0000000..c3a2c22
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ParticipantExtraTabPropertySection.java
@@ -0,0 +1,262 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the tabbed property section for additional properties for

+ * the Participant model element

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

+

+import java.text.DateFormat;

+import java.text.ParseException;

+import java.text.SimpleDateFormat;

+import java.util.Date;

+import java.util.Map.Entry;

+

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.common.util.EMap;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EUserRole;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

+import org.eclipse.mylyn.reviews.r4e.ui.Activator;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIParticipant;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.EditableListWidget;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.IEditableListListener;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.CLabel;

+import org.eclipse.swt.layout.FormAttachment;

+import org.eclipse.swt.layout.FormData;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Item;

+import org.eclipse.swt.widgets.List;

+import org.eclipse.swt.widgets.TableItem;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class ParticipantExtraTabPropertySection extends ModelElementTabPropertySection implements IEditableListListener {

+

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field fAvailableComponents.

+	 */

+	protected EditableListWidget fTimeSpentDetailedList = null;

+	

+	/**

+	 * Field FTimeSpentTotalText.

+	 */

+	private Text fTimeSpentTotalText = null;

+	

+	/**

+	 * Field FFocusArea.

+	 */

+	private List fRolesList = null;

+	

+	/**

+	 * Field FFocusArea.

+	 */

+	private Text fFocusAreaText = null;

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Method createControls.

+	 * @param parent Composite

+	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

+	 */

+	@Override

+	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

+		super.createControls(parent, aTabbedPropertySheetPage);

+

+		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

+	    FormData data = null;

+	    final Composite mainForm = widgetFactory.createFlatFormComposite(parent);

+	    

+	    //Time Spent (detailed)

+		data = new FormData();

+		data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+		data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+		data.top = new FormAttachment(mainForm, ITabbedPropertyConstants.VSPACE);

+		fTimeSpentDetailedList = new EditableListWidget(widgetFactory, mainForm, data, this, 1, Date.class, null);

+

+	    final CLabel timeSpentDetailedLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.TIME_SPENT_DETAILED_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fTimeSpentDetailedList.getComposite(), -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fTimeSpentDetailedList.getComposite(), 0, SWT.CENTER);

+	    timeSpentDetailedLabel.setLayoutData(data);

+	    

+	    //Time Spent (total - read only)

+	    fTimeSpentTotalText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);	

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fTimeSpentDetailedList.getComposite(), ITabbedPropertyConstants.VSPACE);

+	    fTimeSpentTotalText.setLayoutData(data);

+	    

+	    final CLabel timeSpentLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.TIME_SPENT_TOTAL_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fTimeSpentTotalText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fTimeSpentTotalText, 0, SWT.CENTER);

+	    timeSpentLabel.setLayoutData(data);

+	    

+	    //Roles

+	    fRolesList = widgetFactory.createList(mainForm, SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fTimeSpentTotalText, ITabbedPropertyConstants.VSPACE);

+	    fRolesList.setLayoutData(data);

+

+	    final CLabel rolesLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.ROLES_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fRolesList, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fRolesList, 0, SWT.CENTER);

+	    rolesLabel.setLayoutData(data);

+	    

+	    //Focus Area (read-only)

+	    fFocusAreaText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fRolesList, ITabbedPropertyConstants.VSPACE);

+	    fFocusAreaText.setLayoutData(data);

+

+	    final CLabel focusAreaLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.FOCUS_AREA_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fFocusAreaText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fFocusAreaText, 0, SWT.CENTER);

+	    focusAreaLabel.setLayoutData(data);

+	}

+	

+	/**

+	 * Method refresh.

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

+	 */

+	@Override

+	public void refresh() {

+		fRefreshInProgress = true;

+		final R4EParticipant modelUser = ((R4EUIParticipant)fProperties.getElement()).getParticipant();

+		final int numTimeEntries = modelUser.getTimeLog().size();

+		fTimeSpentDetailedList.clearAll();

+		int totalTimeSpent = 0;

+		Item item = null;

+		final DateFormat dateFormat = new SimpleDateFormat(R4EUIConstants.DEFAULT_DATE_FORMAT);	

+		for (int i = 0; i < numTimeEntries; i++) {

+			Entry<Date, Integer> timeEntry = modelUser.getTimeLog().get(i);

+			if (i >= fTimeSpentDetailedList.getItemCount()) {

+				item = fTimeSpentDetailedList.addItem(); 

+			} else {

+				item = fTimeSpentDetailedList.getItem(i);

+				if (null == item) item = fTimeSpentDetailedList.addItem(); 

+			}

+			String[] data = { timeEntry.getValue().toString(), dateFormat.format(timeEntry.getKey()) };

+			((TableItem)item).setText(data);

+			totalTimeSpent +=timeEntry.getValue().intValue();

+		}

+		fTimeSpentTotalText.setText(Integer.toString(totalTimeSpent));

+		

+		fRolesList.removeAll();

+		final EList<R4EUserRole> roles = modelUser.getRoles();

+		for (R4EUserRole role : roles) {

+	    	//Review type (no validation needed as this is a read-only combo box

+			if (role.getValue() == R4EUserRole.R4E_ROLE_LEAD_VALUE) {

+				fRolesList.add(R4EUIConstants.USER_ROLE_LEAD);

+			} else if (role.getValue() == R4EUserRole.R4E_ROLE_AUTHOR_VALUE) {

+				fRolesList.add(R4EUIConstants.USER_ROLE_AUTHOR);

+			} else if (role.getValue() == R4EUserRole.R4E_ROLE_REVIEWER_VALUE) {

+				fRolesList.add(R4EUIConstants.USER_ROLE_REVIEWER);

+			}

+		}

+		if (null != modelUser.getFocusArea()) fFocusAreaText.setText(modelUser.getFocusArea());

+		setEnabledFields();

+		fRefreshInProgress = false;

+	}

+	

+	/**

+	 * Method setEnabledFields.

+	 */

+	@Override

+	protected void setEnabledFields() {

+		if (R4EUIModelController.isDialogOpen()) {

+			fTimeSpentDetailedList.setEnabled(false);

+			fTimeSpentTotalText.setEnabled(false);

+			fRolesList.setEnabled(false);

+			fFocusAreaText.setEnabled(false);

+		} else {

+			fTimeSpentDetailedList.setEnabled(true);

+			fTimeSpentTotalText.setEnabled(true);

+			fRolesList.setEnabled(true);

+			fFocusAreaText.setEnabled(true);

+		}

+	}

+

+	/**

+	 * Method itemsUpdated.

+	 * @param aItems Item[]

+	 * @param aInstanceId int

+	 * @see org.eclipse.mylyn.reviews.r4e.ui.utils.IEditableListListener#itemsUpdated(Item[], int)

+	 */

+	public void itemsUpdated(Item[] aItems, int aInstanceId) {		

+		try {

+			final R4EParticipant modelGroup = ((R4EUIParticipant)fProperties.getElement()).getParticipant();

+			final String currentUser = R4EUIModelController.getReviewer();

+			final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelGroup, currentUser);

+			final EMap<Date, Integer> timeMap = modelGroup.getTimeLog();

+			final DateFormat dateFormat = new SimpleDateFormat(R4EUIConstants.DEFAULT_DATE_FORMAT);

+			for (Item item : aItems) {

+				try {

+					if (!((TableItem)item).getText(1).equals("")) {

+						timeMap.put(dateFormat.parse(((TableItem)item).getText(1)), 

+									Integer.valueOf(((TableItem)item).getText(0)));

+					}

+				} catch (NumberFormatException e) {

+					//skip this entry

+					Activator.Ftracer.traceWarning("Exception: " + e.toString() + " (" + e.getMessage() + ")");

+					Activator.getDefault().logWarning("Exception: " + e.toString(), e);

+					continue;

+				} catch (ParseException e) {

+					//skip this entry

+					Activator.Ftracer.traceWarning("Exception: " + e.toString() + " (" + e.getMessage() + ")");

+					Activator.getDefault().logWarning("Exception: " + e.toString(), e);

+					continue;

+				}

+			}

+			R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+			refresh();

+		} catch (ResourceHandlingException e1) {

+			UIUtils.displayResourceErrorDialog(e1);

+		} catch (OutOfSyncException e1) {

+			UIUtils.displaySyncErrorDialog(e1);

+		}

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ParticipantGeneralTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ParticipantGeneralTabPropertySection.java
new file mode 100644
index 0000000..cd3cac8
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ParticipantGeneralTabPropertySection.java
@@ -0,0 +1,198 @@
+// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, staticFieldSecurity, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, explicitThisUsage

+/*******************************************************************************

+ * Copyright (c) 2010 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the tabbed property section for the Participant model 

+ * element

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

+

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EAnomaly;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EComment;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EParticipant;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIParticipant;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.CLabel;

+import org.eclipse.swt.layout.FormAttachment;

+import org.eclipse.swt.layout.FormData;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Display;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class ParticipantGeneralTabPropertySection extends ModelElementTabPropertySection {

+	

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field FIdText.

+	 */

+	private Text fIdText = null;

+	

+	/**

+	 * Field FNumItemsText.

+	 */

+	private Text fNumItemsText = null;

+	

+	/**

+	 * Field FNumAnomaliesText.

+	 */

+	private Text fNumAnomaliesText = null;

+	

+	/**

+	 * Field FNumCommentsText.

+	 */

+	private Text fNumCommentsText = null;

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Method createControls.

+	 * @param parent Composite

+	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

+	 */

+	@Override

+	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

+		super.createControls(parent, aTabbedPropertySheetPage);

+

+		//Tell element to build its own detailed tab layout

+		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

+		final Composite mainForm = widgetFactory.createFlatFormComposite(parent);

+	    FormData data = null;

+	   

+	    //Author (read-only)

+	    fIdText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

+	    fIdText.setLayoutData(data);

+

+

+	    final CLabel idLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.ID_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fIdText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fIdText, 0, SWT.CENTER);

+	    idLabel.setLayoutData(data);

+	    

+	    //Number of Review Items added (read-only)

+	    fNumItemsText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);

+	    fNumItemsText.setBackground(Display.getDefault().getSystemColor( SWT.COLOR_WIDGET_LIGHT_SHADOW));

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fIdText, ITabbedPropertyConstants.VSPACE);

+	    fNumItemsText.setLayoutData(data);

+	

+	    final CLabel numItemsLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.NUM_ITEMS_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fNumItemsText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fNumItemsText, 0, SWT.CENTER);

+	    numItemsLabel.setLayoutData(data);

+	    

+	    //Number of Anomalies added (read-only)

+	    fNumAnomaliesText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fNumItemsText, ITabbedPropertyConstants.VSPACE);

+	    fNumAnomaliesText.setLayoutData(data);

+	

+	    final CLabel numAnomaliesLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.NUM_ANOMALIES_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fNumAnomaliesText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fNumAnomaliesText, 0, SWT.CENTER);

+	    numAnomaliesLabel.setLayoutData(data);

+	    

+	    //Number of Comments added (read-only)

+	    fNumCommentsText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fNumAnomaliesText, ITabbedPropertyConstants.VSPACE);

+	    fNumCommentsText.setLayoutData(data);

+	

+	    final CLabel numCommentsLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.NUM_COMMENTS_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fNumCommentsText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fNumCommentsText, 0, SWT.CENTER);

+	    numCommentsLabel.setLayoutData(data);

+	}

+

+	/**

+	 * Method refresh.

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

+	 */

+	@Override

+	public void refresh() {

+		fRefreshInProgress = true;

+		final R4EParticipant modelUser = ((R4EUIParticipant)fProperties.getElement()).getParticipant();

+		fIdText.setText(modelUser.getId());

+		fNumItemsText.setText(String.valueOf(modelUser.getAddedItems().size()));

+

+		int numAnomalies = 0;

+		int numComments = 0;

+		final EList<R4EComment> comments = modelUser.getAddedComments();

+		final int commentsSize = comments.size();

+		for (int i = 0; i < commentsSize; i++) {

+			if (comments.get(i) instanceof R4EAnomaly) {

+				++numAnomalies;

+			} else {

+				++numComments;

+			}

+		}

+		fNumAnomaliesText.setText(String.valueOf(numAnomalies));

+		fNumCommentsText.setText(String.valueOf(numComments));

+		setEnabledFields();

+		fRefreshInProgress = false;

+	}

+	

+	/**

+	 * Method setEnabledFields.

+	 */

+	@Override

+	protected void setEnabledFields() {

+		if (R4EUIModelController.isDialogOpen()) {

+			fIdText.setEnabled(false);

+			fNumItemsText.setEnabled(false);

+			fNumAnomaliesText.setEnabled(false);

+			fNumCommentsText.setEnabled(false);

+		} else {

+			fIdText.setEnabled(true);

+			fNumItemsText.setEnabled(true);

+			fNumAnomaliesText.setEnabled(true);

+			fNumCommentsText.setEnabled(true);

+		}

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewExtraTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewExtraTabPropertySection.java
new file mode 100644
index 0000000..d1dc2d4
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewExtraTabPropertySection.java
@@ -0,0 +1,269 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the tabbed property section for the additional properties

+ * for the Review model element.

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

+

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EReview;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReview;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.CCombo;

+import org.eclipse.swt.custom.CLabel;

+import org.eclipse.swt.events.SelectionEvent;

+import org.eclipse.swt.events.SelectionListener;

+import org.eclipse.swt.layout.FormAttachment;

+import org.eclipse.swt.layout.FormData;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Table;

+import org.eclipse.swt.widgets.TableItem;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class ReviewExtraTabPropertySection extends ModelElementTabPropertySection {

+

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field FProjectText.

+	 */

+	protected Text fProjectText = null;

+	

+	/**

+	 * Field FComponents.

+	 */

+	protected Table fComponents = null;

+	

+	/**

+	 * Field FEntryCriteriaText.

+	 */

+	protected Text fEntryCriteriaText = null;

+	

+	/**

+	 * Field FObjectivesText.

+	 */

+	protected Text fObjectivesText = null;

+	

+	/**

+	 * Field FReferenceMaterialText.

+	 */

+	protected Text fReferenceMaterialText = null;

+	

+	/**

+	 * Field fExitDecision.

+	 */

+	protected CCombo fExitDecisionCombo = null;

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Method createControls.

+	 * @param parent Composite

+	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

+	 */

+	@Override

+	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

+		super.createControls(parent.getParent(), aTabbedPropertySheetPage);

+

+		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

+	    FormData data = null;

+	    final Composite mainForm = widgetFactory.createFlatFormComposite(parent);

+

+	    //Project (read-only)

+	    fProjectText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(mainForm, ITabbedPropertyConstants.VSPACE);

+	    fProjectText.setLayoutData(data);

+

+	    final CLabel projectLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.PROJECT_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fProjectText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fProjectText, 0, SWT.TOP);

+	    projectLabel.setLayoutData(data);

+	    

+	    //Components (Read-only)

+	    fComponents = widgetFactory.createTable(mainForm, SWT.READ_ONLY | SWT.VIRTUAL);

+	    fComponents.setLinesVisible(true);

+	    fComponents.setItemCount(0);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fProjectText, ITabbedPropertyConstants.VSPACE);

+	    fComponents.setLayoutData(data);

+		

+	    final CLabel componentsLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.COMPONENTS_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fComponents, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fComponents, 0, SWT.TOP);

+	    componentsLabel.setLayoutData(data);

+	    

+	    //Entry Criteria (read-only)

+	    fEntryCriteriaText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fComponents, ITabbedPropertyConstants.VSPACE);

+	    fEntryCriteriaText.setLayoutData(data);

+

+	    final CLabel entryCriteriaLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.ENTRY_CRITERIA_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fEntryCriteriaText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fEntryCriteriaText, 0, SWT.TOP);

+	    entryCriteriaLabel.setLayoutData(data);

+	

+	    //Objectives (Read-only)

+	    fObjectivesText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fEntryCriteriaText, ITabbedPropertyConstants.VSPACE);

+	    fObjectivesText.setLayoutData(data);

+		

+	    final CLabel objectivesLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.OBJECTIVES_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fObjectivesText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fObjectivesText, 0, SWT.TOP);

+	    objectivesLabel.setLayoutData(data);

+	    

+	    //Reference Material (Read-only)

+	    fReferenceMaterialText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fObjectivesText, ITabbedPropertyConstants.VSPACE);

+	    fReferenceMaterialText.setLayoutData(data);

+		

+	    final CLabel referenceMaterialLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.REFERENCE_MATERIAL_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fReferenceMaterialText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fReferenceMaterialText, 0, SWT.TOP);

+	    referenceMaterialLabel.setLayoutData(data);

+	    

+	    //Rank

+	    fExitDecisionCombo = widgetFactory.createCCombo(mainForm, SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fReferenceMaterialText, ITabbedPropertyConstants.VSPACE);

+	    fExitDecisionCombo.setLayoutData(data);

+	    fExitDecisionCombo.addSelectionListener(new SelectionListener() {

+			public void widgetSelected(SelectionEvent e) {

+	    		if (!fRefreshInProgress) {

+	    			try {

+	    				final String currentUser = R4EUIModelController.getReviewer();

+						final R4EReview modelReview = ((R4EUIReview)fProperties.getElement()).getReview();

+	    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelReview, currentUser);

+	    				modelReview.setDecision(R4EUIReview.getDecisionValueFromString(fExitDecisionCombo.getText()));

+	    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+	    			} catch (ResourceHandlingException e1) {

+	    				UIUtils.displayResourceErrorDialog(e1);

+	    			} catch (OutOfSyncException e1) {

+	    				UIUtils.displaySyncErrorDialog(e1);

+	    			}

+	    		}	

+    			refresh();

+			}

+			public void widgetDefaultSelected(SelectionEvent e) { // $codepro.audit.disable emptyMethod

+				//No implementation needed

+			}

+		});

+	    

+	    final CLabel rankLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.EXIT_DECISION_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fExitDecisionCombo, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fExitDecisionCombo, 0, SWT.CENTER);

+	    rankLabel.setLayoutData(data);

+	}

+	

+	/**

+	 * Method refresh.

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

+	 */

+	@Override

+	public void refresh() {

+		fRefreshInProgress = true;

+		final R4EReview modelReview = ((R4EUIReview)fProperties.getElement()).getReview();

+		fProjectText.setText(modelReview.getProject());

+		final String[] components = (String[]) modelReview.getComponents().toArray();

+		fComponents.clearAll();

+		TableItem item = null;

+		for (int i = 0; i < components.length; i++) {

+			String component  = components[i];

+			if (i >= fComponents.getItemCount()) {

+				 item = new TableItem (fComponents, SWT.NONE);

+			} else {

+				item = fComponents.getItem(i);

+				if (null == item) item = new TableItem (fComponents, SWT.NONE);

+			}

+			item.setText(component);

+		}

+		fEntryCriteriaText.setText(modelReview.getEntryCriteria());

+		fObjectivesText.setText(modelReview.getObjectives());

+		fReferenceMaterialText.setText(modelReview.getReferenceMaterial());

+		fExitDecisionCombo.setItems(R4EUIReview.getExitDecisionValues());

+		if (null != modelReview.getDecision()) fExitDecisionCombo.select((null == modelReview.getDecision().getValue()) ? 0 : 

+			modelReview.getDecision().getValue().getValue());

+		setEnabledFields();

+		fRefreshInProgress = false;

+	}

+	

+	/**

+	 * Method setEnabledFields.

+	 */

+	@Override

+	protected void setEnabledFields() {

+		if (R4EUIModelController.isDialogOpen() || (!((R4EUIReview)fProperties.getElement()).isOpen()) ||

+				((R4EUIReview)fProperties.getElement()).isReviewed()) {

+			fProjectText.setEnabled(false);

+			fComponents.setEnabled(false);

+			fEntryCriteriaText.setEnabled(false);

+			fObjectivesText.setEnabled(false);

+			fReferenceMaterialText.setEnabled(false);

+			fExitDecisionCombo.setEnabled(false);

+		} else {

+			fProjectText.setEnabled(true);

+			fComponents.setEnabled(true);

+			fEntryCriteriaText.setEnabled(true);

+			fObjectivesText.setEnabled(true);

+			fReferenceMaterialText.setEnabled(true);

+			fExitDecisionCombo.setEnabled(true);

+		}

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewGeneralTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewGeneralTabPropertySection.java
new file mode 100644
index 0000000..9a59c8b
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewGeneralTabPropertySection.java
@@ -0,0 +1,221 @@
+// $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, staticFieldSecurity, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, com.instantiations.assist.eclipse.analysis.instanceFieldSecurity, sourceLength, explicitThisUsage

+/*******************************************************************************

+ * Copyright (c) 2010 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the tabbed property section for the Review Item model 

+ * element

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

+

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EReview;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReview;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.CLabel;

+import org.eclipse.swt.events.FocusEvent;

+import org.eclipse.swt.events.FocusListener;

+import org.eclipse.swt.layout.FormAttachment;

+import org.eclipse.swt.layout.FormData;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class ReviewGeneralTabPropertySection extends ModelElementTabPropertySection {

+	

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field FNameText.

+	 */

+	private Text fNameText = null;

+	

+	/**

+	 * Field FCreationDateText.

+	 */

+	private Text fStartDateText = null;

+	

+	/**

+	 * Field FEndDateText.

+	 */

+	private Text fEndDateText = null;

+	

+	/**

+	 * Field FDescriptionText.

+	 */

+	protected Text fDescriptionText = null;

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Method shouldUseExtraSpace.

+	 * @return boolean

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#shouldUseExtraSpace()

+	 */

+	@Override

+	public boolean shouldUseExtraSpace() {

+		return true;

+	}

+	

+	/**

+	 * Method createControls.

+	 * @param parent Composite

+	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

+	 */

+	@Override

+	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

+		super.createControls(parent, aTabbedPropertySheetPage);

+

+		//Tell element to build its own detailed tab layout

+		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

+		final Composite mainForm = widgetFactory.createFlatFormComposite(parent);

+	    FormData data = null;

+	   

+	    //Review Name (read-only for now)

+	    fNameText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

+	    fNameText.setLayoutData(data);

+		

+	    final CLabel nameLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.NAME_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fNameText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fNameText, 0, SWT.TOP);

+	    nameLabel.setLayoutData(data);

+	    

+	    //Review Start Date (read-only)

+	    fStartDateText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fNameText, ITabbedPropertyConstants.VSPACE);

+	    fStartDateText.setLayoutData(data);

+

+	    final CLabel creationDateLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.START_DATE_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fStartDateText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fStartDateText, 0, SWT.TOP);

+	    creationDateLabel.setLayoutData(data);

+	

+	    //End Date (read-only)

+	    fEndDateText = widgetFactory.createText(mainForm, "", SWT.READ_ONLY);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fStartDateText, ITabbedPropertyConstants.VSPACE);

+	    fEndDateText.setLayoutData(data);

+

+	    final CLabel endDateLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.END_DATE_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fEndDateText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fEndDateText, 0, SWT.TOP);

+	    endDateLabel.setLayoutData(data);

+	    

+	    //Review Description

+	    fDescriptionText = widgetFactory.createText(mainForm, "", SWT.MULTI);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+	    data.top = new FormAttachment(fEndDateText, ITabbedPropertyConstants.VSPACE);

+	    fDescriptionText.setLayoutData(data);

+	    fDescriptionText.addFocusListener(new FocusListener() {		

+			public void focusLost(FocusEvent e) {

+	    		if (!fRefreshInProgress) {

+	    			try {

+	    				final String currentUser = R4EUIModelController.getReviewer();

+						final R4EReview modelReview = ((R4EUIReview)fProperties.getElement()).getReview();

+	    				final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelReview, currentUser);

+	    				modelReview.setExtraNotes(fDescriptionText.getText());

+	    				R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+	    			} catch (ResourceHandlingException e1) {

+	    				UIUtils.displayResourceErrorDialog(e1);

+	    			} catch (OutOfSyncException e1) {

+	    				UIUtils.displaySyncErrorDialog(e1);

+	    			}

+	    		}

+			}

+			public void focusGained(FocusEvent e) { // $codepro.audit.disable emptyMethod

+				//Nothing to do

+			}

+		});

+	    UIUtils.addTabbedPropertiesTextResizeListener(fDescriptionText);

+

+	    final CLabel descriptionLabel = widgetFactory.createCLabel(mainForm, R4EUIConstants.DESCRIPTION_LABEL);

+	    data = new FormData();

+	    data.left = new FormAttachment(0, 0);

+	    data.right = new FormAttachment(fDescriptionText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fDescriptionText, 0, SWT.TOP);

+	    descriptionLabel.setLayoutData(data);

+	}

+	

+	/**

+	 * Method refresh.

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

+	 */

+	@Override

+	public void refresh() {

+		fRefreshInProgress = true;

+		final R4EReview modelReview = ((R4EUIReview)fProperties.getElement()).getReview();

+		fNameText.setText(modelReview.getName());

+		fStartDateText.setText(modelReview.getStartDate().toString());

+		if (null == modelReview.getEndDate()) {

+			fEndDateText.setText("(In Progress)");

+		} else {

+			fEndDateText.setText(modelReview.getEndDate().toString());

+		}

+		fDescriptionText.setText(modelReview.getExtraNotes());

+		setEnabledFields();

+		fRefreshInProgress = false;

+	}

+	

+	/**

+	 * Method setEnabledFields.

+	 */

+	@Override

+	protected void setEnabledFields() {

+		if (R4EUIModelController.isDialogOpen() || (!((R4EUIReview)fProperties.getElement()).isOpen()) ||

+				((R4EUIReview)fProperties.getElement()).isReviewed()) {

+			fNameText.setEnabled(false);

+			fDescriptionText.setEnabled(false);

+			fStartDateText.setEnabled(false);

+			fEndDateText.setEnabled(false);

+		} else {

+			fNameText.setEnabled(true);

+			fStartDateText.setEnabled(true);

+			fEndDateText.setEnabled(true);

+			fDescriptionText.setEnabled(true);

+		}

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewGroupExtraTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewGroupExtraTabPropertySection.java
new file mode 100644
index 0000000..556e9a3
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewGroupExtraTabPropertySection.java
@@ -0,0 +1,271 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements the tabbed property section for the additional properties

+ * for the Review Group model element

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

+

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewGroup;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

+import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReviewGroup;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.EditableListWidget;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.IEditableListListener;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

+import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.CLabel;

+import org.eclipse.swt.events.FocusEvent;

+import org.eclipse.swt.events.FocusListener;

+import org.eclipse.swt.layout.FormAttachment;

+import org.eclipse.swt.layout.FormData;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Item;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class ReviewGroupExtraTabPropertySection extends ModelElementTabPropertySection implements IEditableListListener {

+

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field fAvailableProjects.

+	 */

+	protected EditableListWidget fAvailableProjects = null;

+	

+	/**

+	 * Field fAvailableComponents.

+	 */

+	protected EditableListWidget fAvailableComponents = null;

+	

+	/**

+	 * Field FEntryCriteriaText.

+	 */

+	protected Text fDefaultEntryCriteriaText = null;

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+

+	/**

+	 * Method dispose.

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#dispose()

+	 */

+	@Override

+	public void dispose() {

+		if (null != fAvailableProjects) fAvailableProjects.dispose();

+		if (null != fAvailableComponents)fAvailableComponents.dispose();

+		super.dispose();

+	}

+	

+	/**

+	 * Method shouldUseExtraSpace.

+	 * @return boolean

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#shouldUseExtraSpace()

+	 */

+	@Override

+	public boolean shouldUseExtraSpace() {

+		return true;

+	}

+	

+	/**

+	 * Method createControls.

+	 * @param parent Composite

+	 * @param aTabbedPropertySheetPage TabbedPropertySheetPage

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#createControls(Composite, TabbedPropertySheetPage)

+	 */

+	@Override

+	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

+		super.createControls(parent.getParent(), aTabbedPropertySheetPage);

+

+		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

+	    final Composite composite = widgetFactory.createFlatFormComposite(parent);

+		FormData data = null;

+		

+	    //Projects

+		data = new FormData();

+		data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+		data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+		data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

+        fAvailableProjects = new EditableListWidget(widgetFactory, composite, data, this, 1, Text.class, null);

+

+	    final CLabel projectsLabel = widgetFactory.createCLabel(composite, R4EUIConstants.AVAILABLE_PROJECTS_LABEL);

+		data = new FormData();

+		data.left = new FormAttachment(0, 0);

+		data.right = new FormAttachment(fAvailableProjects.getComposite(), -ITabbedPropertyConstants.HSPACE);

+		data.top = new FormAttachment(fAvailableProjects.getComposite(), 0, SWT.TOP);

+	    projectsLabel.setLayoutData(data);

+	    

+	    //Components

+		data = new FormData();

+		data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+		data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+		data.top = new FormAttachment(fAvailableProjects.getComposite(), ITabbedPropertyConstants.VSPACE);

+	    fAvailableComponents = new EditableListWidget(widgetFactory, composite, data, this, 2, Text.class, null);

+

+	    final CLabel componentsLabel = widgetFactory.createCLabel(composite, R4EUIConstants.AVAILABLE_COMPONENTS_LABEL);

+		data = new FormData();

+		data.left = new FormAttachment(0, 0);

+		data.right = new FormAttachment(fAvailableComponents.getComposite(), -ITabbedPropertyConstants.HSPACE);

+		data.top = new FormAttachment(fAvailableComponents.getComposite(), 0, SWT.TOP);

+	    componentsLabel.setLayoutData(data);

+	    

+	    //Entry Criteria

+	    fDefaultEntryCriteriaText = widgetFactory.createText(composite, "", SWT.MULTI);

+		data = new FormData();

+		data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

+		data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

+		data.top = new FormAttachment(fAvailableComponents.getComposite(), ITabbedPropertyConstants.VSPACE);

+		fDefaultEntryCriteriaText.setLayoutData(data);

+	    fDefaultEntryCriteriaText.addFocusListener(new FocusListener() {		

+			public void focusLost(FocusEvent e) {

+				if (!fRefreshInProgress) {

+					try {

+						final String currentUser = R4EUIModelController.getReviewer();

+						final R4EReviewGroup modelGroup = ((R4EUIReviewGroup)fProperties.getElement()).getReviewGroup();

+						final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelGroup, currentUser);

+						modelGroup.setDefaultEntryCriteria(fDefaultEntryCriteriaText.getText());

+						R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+					} catch (ResourceHandlingException e1) {

+						UIUtils.displayResourceErrorDialog(e1);

+					} catch (OutOfSyncException e1) {

+						UIUtils.displaySyncErrorDialog(e1);

+					}

+				}

+			}

+			public void focusGained(FocusEvent e) { // $codepro.audit.disable emptyMethod

+				//Nothing to do

+			}

+		});

+	    UIUtils.addTabbedPropertiesTextResizeListener(fDefaultEntryCriteriaText);

+	    

+	    final CLabel entryCriteriaLabel = widgetFactory.createCLabel(composite, R4EUIConstants.DEFAULT_ENTRY_CRITERIA_LABEL);

+		data = new FormData();

+		data.left = new FormAttachment(0, 0);

+		data.right = new FormAttachment(fDefaultEntryCriteriaText, -ITabbedPropertyConstants.HSPACE);

+		data.top = new FormAttachment(fDefaultEntryCriteriaText, 0, SWT.TOP);

+		entryCriteriaLabel.setLayoutData(data);

+	}

+	

+	/**

+	 * Method refresh.

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

+	 */

+	@Override

+	public void refresh() {

+		fRefreshInProgress = true;

+		final R4EReviewGroup modelReview = ((R4EUIReviewGroup)fProperties.getElement()).getGroup();

+	

+		final String[] projects = (String[]) modelReview.getAvailableProjects().toArray();

+		fAvailableProjects.clearAll();

+		Item item = null;

+		for (int i = 0; i < projects.length; i++) {

+			String project  = projects[i];

+			if (i >= fAvailableProjects.getItemCount()) {

+				item = fAvailableProjects.addItem(); 

+			} else {

+				item = fAvailableProjects.getItem(i);

+				if (null == item) item = fAvailableProjects.addItem(); 

+			}

+			item.setText(project);

+		}

+		final String[] components = (String[]) modelReview.getAvailableComponents().toArray();

+		fAvailableComponents.clearAll();

+		for (int i = 0; i < components.length; i++) {

+			String component  = components[i];

+			if (i >= fAvailableComponents.getItemCount()) {

+				item = fAvailableComponents.addItem();

+			} else {

+				item = fAvailableComponents.getItem(i);

+				if (null == item) item = fAvailableComponents.addItem();

+			}

+			item.setText(component);

+		}

+		fDefaultEntryCriteriaText.setText(modelReview.getDefaultEntryCriteria());

+		setEnabledFields();

+		fRefreshInProgress = false;

+	}

+	

+	/**

+	 * Method setEnabledFields.

+	 */

+	@Override

+	protected void setEnabledFields() {

+		if (R4EUIModelController.isDialogOpen() || (!((R4EUIReviewGroup)fProperties.getElement()).isOpen())) {

+			fAvailableProjects.setEnabled(false);

+			fAvailableComponents.setEnabled(false);

+			fDefaultEntryCriteriaText.setEnabled(false);

+		} else {

+			fAvailableProjects.setEnabled(true);

+			fAvailableComponents.setEnabled(true);

+			fDefaultEntryCriteriaText.setEnabled(true);

+		}

+	}

+

+	/**

+	 * Method itemsUpdated.

+	 * @param aItems Item[]

+	 * @param aInstanceId int

+	 * @see org.eclipse.ui.utils.IEditableListListener#itemsUpdated(Item[] aItems)

+	 */

+	public void itemsUpdated(Item[] aItems, int aInstanceId) {

+		// Update the core model data with new data

+		try {

+			if (1 == aInstanceId) {

+				//First widget: available projects

+				if (!fRefreshInProgress) {

+					final String currentUser = R4EUIModelController.getReviewer();

+					final R4EReviewGroup modelGroup = ((R4EUIReviewGroup)fProperties.getElement()).getReviewGroup();

+					final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelGroup, currentUser);

+					final EList<String> projects = modelGroup.getAvailableProjects();

+					projects.clear();

+					for (Item item : aItems) {

+						projects.add(item.getText());

+					}

+					R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+				}

+			} else if (2 == aInstanceId) {

+				//Second widget: available components

+				if (!fRefreshInProgress) {

+					final String currentUser = R4EUIModelController.getReviewer();

+					final R4EReviewGroup modelGroup = ((R4EUIReviewGroup)fProperties.getElement()).getReviewGroup();

+					final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelGroup, currentUser);

+					final EList<String> components = modelGroup.getAvailableComponents();

+					components.clear();

+					for (Item item : aItems) {

+						components.add(item.getText());

+					}

+					R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+				}

+			}

+			refresh();

+		} catch (ResourceHandlingException e1) {

+			UIUtils.displayResourceErrorDialog(e1);

+		} catch (OutOfSyncException e1) {

+			UIUtils.displaySyncErrorDialog(e1);

+		}

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewGroupTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewGroupGeneralTabPropertySection.java
similarity index 64%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewGroupTabPropertySection.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewGroupGeneralTabPropertySection.java
index 5c08cb8..7466bcb 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewGroupTabPropertySection.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewGroupGeneralTabPropertySection.java
@@ -17,30 +17,23 @@
  *   

  ******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

 

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.StructuredSelection;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewGroup;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException;

 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

-import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReviewGroup;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.UIUtils;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.custom.CLabel;

-import org.eclipse.swt.events.ModifyEvent;

-import org.eclipse.swt.events.ModifyListener;

+import org.eclipse.swt.events.FocusEvent;

+import org.eclipse.swt.events.FocusListener;

 import org.eclipse.swt.layout.FormAttachment;

 import org.eclipse.swt.layout.FormData;

 import org.eclipse.swt.widgets.Composite;

 import org.eclipse.swt.widgets.Text;

-import org.eclipse.ui.IPropertyListener;

-import org.eclipse.ui.IWorkbenchPart;

-import org.eclipse.ui.views.properties.IPropertySource;

-import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;

 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

@@ -49,18 +42,13 @@
  * @author lmcdubo

  * @version $Revision: 1.0 $

  */

-public class ReviewGroupTabPropertySection extends AbstractPropertySection implements IPropertyListener {

+public class ReviewGroupGeneralTabPropertySection extends ModelElementTabPropertySection {

 	

 	// ------------------------------------------------------------------------

 	// Member variables

 	// ------------------------------------------------------------------------

 	

 	/**

-	 * Field fGroup.

-	 */

-	private ReviewGroupProperties fGroupProps;

-	

-	/**

 	 * Field fNameText.

 	 */

 	private Text fNameText = null;

@@ -73,12 +61,7 @@
 	/**

 	 * Field fDescriptionText.

 	 */

-	private Text fDescriptionText = null;

-	

-	/**

-	 * Field fRefreshInProgress.

-	 */

-	private boolean fRefreshInProgress = false;

+	protected Text fDescriptionText = null;

 	

 	

 	// ------------------------------------------------------------------------

@@ -86,13 +69,13 @@
 	// ------------------------------------------------------------------------

 	

 	/**

-	 * Method dispose.

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#dispose()

+	 * Method shouldUseExtraSpace.

+	 * @return boolean

+	 * @see org.eclipse.ui.views.properties.tabbed.ISection#shouldUseExtraSpace()

 	 */

 	@Override

-	public void dispose() {

-		super.dispose();

-		R4EUIModelController.removeDialogStateListener(this);

+	public boolean shouldUseExtraSpace() {

+		return true;

 	}

 	

 	/**

@@ -104,39 +87,20 @@
 	@Override

 	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {

 		super.createControls(parent, aTabbedPropertySheetPage);

-		R4EUIModelController.addDialogStateListener(this);

 

 		//Tell element to build its own detailed tab layout

 		final TabbedPropertySheetWidgetFactory widgetFactory = aTabbedPropertySheetPage.getWidgetFactory();

-

 		final Composite composite = widgetFactory.createFlatFormComposite(parent);

 		FormData data = null;

 

-		//Group Name

-		fNameText = widgetFactory.createText(composite, "");

+		//Group Name (Read-only for now)

+		fNameText = widgetFactory.createText(composite, "", SWT.READ_ONLY);

 		data = new FormData();

 		data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 		data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

 		data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

 		fNameText.setLayoutData(data);

-		fNameText.addModifyListener(new ModifyListener() {

-			@SuppressWarnings("synthetic-access")

-			public void modifyText(ModifyEvent e) {

-				if (!fRefreshInProgress) {

-					try {

-						final String currentUser = R4EUIModelController.getReviewer();

-						final R4EReviewGroup modelGroup = ((R4EUIReviewGroup)fGroupProps.getElement()).getReviewGroup();

-						final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelGroup, currentUser);

-						modelGroup.setName(fNameText.getText());

-						R4EUIModelController.FResourceUpdater.checkIn(bookNum);

-					} catch (ResourceHandlingException e1) {

-						UIUtils.displayResourceErrorDialog(e1);

-					} catch (OutOfSyncException e1) {

-						UIUtils.displaySyncErrorDialog(e1);

-					}

-				}

-			}

-		});

+

 		final CLabel nameLabel = widgetFactory.createCLabel(composite, R4EUIConstants.NAME_LABEL);

 		data = new FormData();

 		data.left = new FormAttachment(0, 0);

@@ -145,9 +109,7 @@
 		nameLabel.setLayoutData(data);

 

 		//Group Folder (read-only)

-		fFolderText = widgetFactory.createText(composite, "");

-	    fFolderText.setEditable(false);

-	    fFolderText.setEnabled(false);

+		fFolderText = widgetFactory.createText(composite, "", SWT.READ_ONLY);

 		data = new FormData();

 		data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 		data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

@@ -162,31 +124,34 @@
 		folderLabel.setLayoutData(data);

 

 		//Group Description

-		fDescriptionText = widgetFactory.createText(composite, "", SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);

+		fDescriptionText = widgetFactory.createText(composite, "", SWT.MULTI);

 		data = new FormData();

 		data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 		data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

 		data.top = new FormAttachment(fFolderText, ITabbedPropertyConstants.VSPACE);

-		data.bottom = new FormAttachment(100, -ITabbedPropertyConstants.VSPACE); // $codepro.audit.disable numericLiterals

 		fDescriptionText.setLayoutData(data);

-		fDescriptionText.addModifyListener(new ModifyListener() {			 // $codepro.audit.disable com.instantiations.assist.eclipse.analysis.avoidInnerClasses

-			@SuppressWarnings("synthetic-access")

-			public void modifyText(ModifyEvent e) {

+		fDescriptionText.addFocusListener(new FocusListener() {		

+			public void focusLost(FocusEvent e) {

 				if (!fRefreshInProgress) {

-				try {

-					final String currentUser = R4EUIModelController.getReviewer();

-					final R4EReviewGroup modelGroup = ((R4EUIReviewGroup)fGroupProps.getElement()).getReviewGroup();

-					final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelGroup, currentUser);

-					modelGroup.setDescription(fDescriptionText.getText());

-					R4EUIModelController.FResourceUpdater.checkIn(bookNum);

-				} catch (ResourceHandlingException e1) {

-					UIUtils.displayResourceErrorDialog(e1);

-				} catch (OutOfSyncException e1) {

-					UIUtils.displaySyncErrorDialog(e1);

-				}

+					try {

+						final String currentUser = R4EUIModelController.getReviewer();

+						final R4EReviewGroup modelGroup = ((R4EUIReviewGroup)fProperties.getElement()).getReviewGroup();

+						final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(modelGroup, currentUser);

+						modelGroup.setDescription(fDescriptionText.getText());

+						R4EUIModelController.FResourceUpdater.checkIn(bookNum);

+					} catch (ResourceHandlingException e1) {

+						UIUtils.displayResourceErrorDialog(e1);

+					} catch (OutOfSyncException e1) {

+						UIUtils.displaySyncErrorDialog(e1);

+					}

 				}

 			}

+			public void focusGained(FocusEvent e) { // $codepro.audit.disable emptyMethod

+				//Nothing to do

+			}

 		});

+	    UIUtils.addTabbedPropertiesTextResizeListener(fDescriptionText);

+	    

 		final CLabel descriptionLabel = widgetFactory.createCLabel(composite, R4EUIConstants.DESCRIPTION_LABEL);

 		data = new FormData();

 		data.left = new FormAttachment(0, 0);

@@ -194,26 +159,7 @@
 		data.top = new FormAttachment(fDescriptionText, 0, SWT.TOP);

 		descriptionLabel.setLayoutData(data);

 	}

-		

-	/**

-	 * Method setInput.

-	 * @param part IWorkbenchPart

-	 * @param aSelection ISelection

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#setInput(IWorkbenchPart, ISelection)

-	 */

-	@Override

-	public void setInput(IWorkbenchPart part, ISelection aSelection) {

-		//Get current selection.

-		if (null == aSelection || aSelection.isEmpty()) return;

-		

-		//Get model element selected

-		final IR4EUIModelElement element = (IR4EUIModelElement) ((StructuredSelection)aSelection).getFirstElement();

-		if (null != element && element instanceof R4EUIReviewGroup) {

-			fGroupProps = (ReviewGroupProperties) ((R4EUIReviewGroup)element).getAdapter(IPropertySource.class);

-			refresh();

-		}

-	}

-

+	

 	/**

 	 * Method refresh.

 	 * @see org.eclipse.ui.views.properties.tabbed.ISection#refresh()

@@ -221,7 +167,7 @@
 	@Override

 	public void refresh() {

 		fRefreshInProgress = true;

-		final R4EReviewGroup modelGroup = ((R4EUIReviewGroup)fGroupProps.getElement()).getReviewGroup();

+		final R4EReviewGroup modelGroup = ((R4EUIReviewGroup)fProperties.getElement()).getReviewGroup();

 		fNameText.setText(modelGroup.getName());

 		fFolderText.setText(modelGroup.getFolder());

 		if (null != modelGroup.getDescription()) fDescriptionText.setText(modelGroup.getDescription());

@@ -230,34 +176,17 @@
 	}

 	

 	/**

-	 * Method shouldUseExtraSpace.

-	 * @return boolean

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#shouldUseExtraSpace()

-	 */

-	@Override

-	public boolean shouldUseExtraSpace() {

-		return true;

-	}

-	

-	/**

-	 * Method propertyChanged.

-	 * @param source Object

-	 * @param propId int

-	 * @see org.eclipse.ui.IPropertyListener#propertyChanged(Object, int)

-	 */

-	public void propertyChanged(Object source, int propId) {

-		setEnabledFields();

-	}

-	

-	/**

 	 * Method setEnabledFields.

 	 */

-	private void setEnabledFields() {

-		if (R4EUIModelController.isDialogOpen() || !((R4EUIReviewGroup)fGroupProps.getElement()).isOpen()) {

+	@Override

+	protected void setEnabledFields() {

+		if (R4EUIModelController.isDialogOpen() || !((R4EUIReviewGroup)fProperties.getElement()).isOpen()) {

 			fNameText.setEnabled(false);

+			fFolderText.setEnabled(false);

 			fDescriptionText.setEnabled(false);

 		} else {

 			fNameText.setEnabled(true);

+			fFolderText.setEnabled(true);

 			fDescriptionText.setEnabled(true);

 		}

 	}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewItemTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewItemTabPropertySection.java
similarity index 63%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewItemTabPropertySection.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewItemTabPropertySection.java
index 09a28a0..0d29c90 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/ReviewItemTabPropertySection.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/ReviewItemTabPropertySection.java
@@ -17,12 +17,10 @@
  *   

  ******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

 

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.StructuredSelection;

 import org.eclipse.mylyn.reviews.r4e.core.model.R4EItem;

-import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIReviewItem;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

 import org.eclipse.swt.SWT;

@@ -32,9 +30,6 @@
 import org.eclipse.swt.widgets.Composite;

 import org.eclipse.swt.widgets.List;

 import org.eclipse.swt.widgets.Text;

-import org.eclipse.ui.IWorkbenchPart;

-import org.eclipse.ui.views.properties.IPropertySource;

-import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;

 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

@@ -43,31 +38,26 @@
  * @author lmcdubo

  * @version $Revision: 1.0 $

  */

-public class ReviewItemTabPropertySection extends AbstractPropertySection {

+public class ReviewItemTabPropertySection extends ModelElementTabPropertySection {

 	

 	// ------------------------------------------------------------------------

 	// Member variables

 	// ------------------------------------------------------------------------

 	

 	/**

-	 * Field fItem.

-	 */

-	private ReviewItemProperties fItemProps;

-	

-	/**

 	 * Field FAuthorText.

 	 */

-	protected static Text FAuthorText = null;

+	private Text fAuthorText = null;

 	

 	/**

 	 * Field FProjectIdList.

 	 */

-	protected static List FProjectIdList = null;

+	private List fProjectIdList = null;

 	

 	/**

 	 * Field FDescriptionText.

 	 */

-	protected static Text FDescriptionText = null;

+	private Text fDescriptionText = null;

 

 	

 	// ------------------------------------------------------------------------

@@ -90,76 +80,50 @@
 	    FormData data = null;

 	   

 	    //Author (read-only)

-	    FAuthorText = widgetFactory.createText(composite, "");

-	    FAuthorText.setEditable(false);

-	    FAuthorText.setEnabled(false);

+	    fAuthorText = widgetFactory.createText(composite, "", SWT.READ_ONLY);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

 	    data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

-	    FAuthorText.setLayoutData(data);

-

+	    fAuthorText.setLayoutData(data);

 

 	    final CLabel authorLabel = widgetFactory.createCLabel(composite, R4EUIConstants.AUTHOR_LABEL);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FAuthorText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FAuthorText, 0, SWT.CENTER);

+	    data.right = new FormAttachment(fAuthorText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fAuthorText, 0, SWT.CENTER);

 	    authorLabel.setLayoutData(data);

 	    

 	    //ProjectId (read-only)

-	    FProjectIdList = widgetFactory.createList(composite, SWT.NONE);

-	    FProjectIdList.setEnabled(false);

+	    fProjectIdList = widgetFactory.createList(composite, SWT.READ_ONLY);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FAuthorText, ITabbedPropertyConstants.VSPACE);

-	    FProjectIdList.setLayoutData(data);

+	    data.top = new FormAttachment(fAuthorText, ITabbedPropertyConstants.VSPACE);

+	    fProjectIdList.setLayoutData(data);

 

-

-	    final CLabel projectIdLabel = widgetFactory.createCLabel(composite, R4EUIConstants.PROJECT_ID_LABEL);

+	    final CLabel projectIdLabel = widgetFactory.createCLabel(composite, R4EUIConstants.PROJECT_LABEL);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FProjectIdList, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FProjectIdList, 0, SWT.CENTER);

+	    data.right = new FormAttachment(fProjectIdList, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fProjectIdList, 0, SWT.CENTER);

 	    projectIdLabel.setLayoutData(data);

 

 	    //Description (read-only)

-	    FDescriptionText = widgetFactory.createText(composite, "");

-	    FDescriptionText.setEditable(false);

-	    FDescriptionText.setEnabled(false);

+	    fDescriptionText = widgetFactory.createText(composite, "", SWT.READ_ONLY);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

-	    data.top = new FormAttachment(FProjectIdList, ITabbedPropertyConstants.VSPACE);

-	    FDescriptionText.setLayoutData(data);

+	    data.top = new FormAttachment(fProjectIdList, ITabbedPropertyConstants.VSPACE);

+	    fDescriptionText.setLayoutData(data);

 

 	    final CLabel descriptionLabel = widgetFactory.createCLabel(composite, R4EUIConstants.DESCRIPTION_LABEL);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FDescriptionText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FDescriptionText, 0, SWT.CENTER);

+	    data.right = new FormAttachment(fDescriptionText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fDescriptionText, 0, SWT.CENTER);

 	    descriptionLabel.setLayoutData(data);

 	}

-		

-	/**

-	 * Method setInput.

-	 * @param part IWorkbenchPart

-	 * @param aSelection ISelection

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#setInput(IWorkbenchPart, ISelection)

-	 */

-	@Override

-	public void setInput(IWorkbenchPart part, ISelection aSelection) {

-		//Get current selection.

-		if (null == aSelection || aSelection.isEmpty()) return;

-		

-		//Get model element selected

-		final IR4EUIModelElement element = (IR4EUIModelElement) ((StructuredSelection)aSelection).getFirstElement();

-		if (null != element && element instanceof R4EUIReviewItem) {

-			fItemProps = (ReviewItemProperties) ((R4EUIReviewItem)element).getAdapter(IPropertySource.class);

-			refresh();

-		}

-	}

 

 	/**

 	 * Method refresh.

@@ -167,9 +131,28 @@
 	 */

 	@Override

 	public void refresh() {

-			final R4EItem modelItem = ((R4EUIReviewItem)fItemProps.getElement()).getItem();

-			FAuthorText.setText(modelItem.getAddedById());

-			FProjectIdList.setItems((String[]) modelItem.getProjectURIs().toArray());

-			FDescriptionText.setText(modelItem.getDescription());

+		fRefreshInProgress = true;

+		final R4EItem modelItem = ((R4EUIReviewItem)fProperties.getElement()).getItem();

+		fAuthorText.setText(modelItem.getAddedById());

+		fProjectIdList.setItems((String[]) modelItem.getProjectURIs().toArray());

+		fDescriptionText.setText(modelItem.getDescription());

+		setEnabledFields();

+		fRefreshInProgress = false;

+	}

+	

+	/**

+	 * Method setEnabledFields.

+	 */

+	@Override

+	protected void setEnabledFields() {

+		if (R4EUIModelController.isDialogOpen()) {

+			fAuthorText.setEnabled(false);

+			fProjectIdList.setEnabled(false);

+			fDescriptionText.setEnabled(false);

+		} else {

+			fAuthorText.setEnabled(true);

+			fProjectIdList.setEnabled(true);

+			fDescriptionText.setEnabled(true);

+		}

 	}

 }

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/SelectionTabPropertySection.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/SelectionTabPropertySection.java
similarity index 64%
rename from org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/SelectionTabPropertySection.java
rename to org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/SelectionTabPropertySection.java
index f34d056..00cf108 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/SelectionTabPropertySection.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/properties/tabbed/SelectionTabPropertySection.java
@@ -17,11 +17,9 @@
  *   

  ******************************************************************************/

 

-package org.eclipse.mylyn.reviews.r4e.ui.properties;

+package org.eclipse.mylyn.reviews.r4e.ui.properties.tabbed;

 

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.StructuredSelection;

-import org.eclipse.mylyn.reviews.r4e.ui.model.IR4EUIModelElement;

+import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUIModelController;

 import org.eclipse.mylyn.reviews.r4e.ui.model.R4EUISelection;

 import org.eclipse.mylyn.reviews.r4e.ui.utils.R4EUIConstants;

 import org.eclipse.swt.SWT;

@@ -29,11 +27,7 @@
 import org.eclipse.swt.layout.FormAttachment;

 import org.eclipse.swt.layout.FormData;

 import org.eclipse.swt.widgets.Composite;

-import org.eclipse.swt.widgets.Display;

 import org.eclipse.swt.widgets.Text;

-import org.eclipse.ui.IWorkbenchPart;

-import org.eclipse.ui.views.properties.IPropertySource;

-import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;

 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;

 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

@@ -42,21 +36,16 @@
  * @author lmcdubo

  * @version $Revision: 1.0 $

  */

-public class SelectionTabPropertySection extends AbstractPropertySection {

+public class SelectionTabPropertySection extends ModelElementTabPropertySection {

 	

 	// ------------------------------------------------------------------------

 	// Member variables

 	// ------------------------------------------------------------------------

 	

-    /**

-     * Field fPosition.

-     */

-    private SelectionProperties fSelectionProps;

-	

 	/**

 	 * Field FPositionText.

 	 */

-	protected static Text FPositionText = null;

+	private Text fPositionText = null;

 	

 	

 	// ------------------------------------------------------------------------

@@ -79,42 +68,20 @@
 	    FormData data = null;

 	   

 	    //Position (read-only)

-	    FPositionText = widgetFactory.createText(composite, "");

-	    FPositionText.setEditable(false);

-	    FPositionText.setEnabled(false);

-	    FPositionText.setBackground(Display.getDefault().getSystemColor( SWT.COLOR_WIDGET_LIGHT_SHADOW));

+	    fPositionText = widgetFactory.createText(composite, "", SWT.READ_ONLY);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, R4EUIConstants.TABBED_PROPERTY_LABEL_WIDTH);

 	    data.right = new FormAttachment(100, 0); // $codepro.audit.disable numericLiterals

 	    data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);

-	    FPositionText.setLayoutData(data);

+	    fPositionText.setLayoutData(data);

 

 	    final CLabel positionLabel = widgetFactory.createCLabel(composite, R4EUIConstants.POSITION_LABEL);

 	    data = new FormData();

 	    data.left = new FormAttachment(0, 0);

-	    data.right = new FormAttachment(FPositionText, -ITabbedPropertyConstants.HSPACE);

-	    data.top = new FormAttachment(FPositionText, 0, SWT.CENTER);

+	    data.right = new FormAttachment(fPositionText, -ITabbedPropertyConstants.HSPACE);

+	    data.top = new FormAttachment(fPositionText, 0, SWT.CENTER);

 	    positionLabel.setLayoutData(data);

 	}

-		

-	/**

-	 * Method setInput.

-	 * @param part IWorkbenchPart

-	 * @param aSelection ISelection

-	 * @see org.eclipse.ui.views.properties.tabbed.ISection#setInput(IWorkbenchPart, ISelection)

-	 */

-	@Override

-	public void setInput(IWorkbenchPart part, ISelection aSelection) {

-		//Get current selection.

-		if (null == aSelection || aSelection.isEmpty()) return;

-		

-		//Get model element selected

-		final IR4EUIModelElement element = (IR4EUIModelElement) ((StructuredSelection)aSelection).getFirstElement();

-		if (null != element && element instanceof R4EUISelection) {

-			fSelectionProps = (SelectionProperties) ((R4EUISelection)element).getAdapter(IPropertySource.class);

-			refresh();

-		}

-	}

 

 	/**

 	 * Method refresh.

@@ -122,8 +89,23 @@
 	 */

 	@Override

 	public void refresh() {

-		if (null != ((R4EUISelection)fSelectionProps.getElement()).getPosition()) {

-			FPositionText.setText(((R4EUISelection)fSelectionProps.getElement()).getPosition().toString());

+		if (null != ((R4EUISelection)fProperties.getElement()).getPosition()) {

+			fRefreshInProgress = true;

+			fPositionText.setText(((R4EUISelection)fProperties.getElement()).getPosition().toString());

+			setEnabledFields();

+			fRefreshInProgress = false;

+		}

+	}

+	

+	/**

+	 * Method setEnabledFields.

+	 */

+	@Override

+	protected void setEnabledFields() {

+		if (R4EUIModelController.isDialogOpen()) {

+			fPositionText.setEnabled(false);

+		} else {

+			fPositionText.setEnabled(true);

 		}

 	}

 }

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/EditableListWidget.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/EditableListWidget.java
new file mode 100644
index 0000000..b8c9236
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/EditableListWidget.java
@@ -0,0 +1,340 @@
+/*******************************************************************************

+ * Copyright (c) 2011 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class implements an editable List-like widget 

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+package org.eclipse.mylyn.reviews.r4e.ui.utils;

+

+import java.text.DateFormat;

+import java.text.SimpleDateFormat;

+import java.util.Calendar;

+import java.util.Date;

+

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.CCombo;

+import org.eclipse.swt.custom.TableEditor;

+import org.eclipse.swt.events.ControlAdapter;

+import org.eclipse.swt.events.ControlEvent;

+import org.eclipse.swt.events.FocusEvent;

+import org.eclipse.swt.events.FocusListener;

+import org.eclipse.swt.events.ModifyEvent;

+import org.eclipse.swt.events.ModifyListener;

+import org.eclipse.swt.events.SelectionEvent;

+import org.eclipse.swt.events.SelectionListener;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Button;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Control;

+import org.eclipse.swt.widgets.Item;

+import org.eclipse.swt.widgets.Table;

+import org.eclipse.swt.widgets.TableColumn;

+import org.eclipse.swt.widgets.TableItem;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.forms.widgets.FormToolkit;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public class EditableListWidget {

+

+	// ------------------------------------------------------------------------

+	// Constants

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field MAX_COLUMN_WIDTH.

+	 * (value is 600)

+	 */

+	private static final int MAX_COLUMN_WIDTH = 600;

+	

+	/**

+	 * Field MAX_COLUMN_HALF_WIDTH.

+	 * (value is 300)

+	 */

+	private static final int MAX_COLUMN_HALF_WIDTH = 300;

+	

+	

+	// ------------------------------------------------------------------------

+	// Member variables

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Field fMainComposite.

+	 */

+	private Composite fMainComposite = null;

+	

+	/**

+	 * Field fMainTable.

+	 */

+	private Table fMainTable = null;

+	

+	/**

+	 * Field fListener.

+	 */

+	private IEditableListListener fListener = null;

+	

+	/**

+	 * Field fInstanceId.

+	 */

+	private int fInstanceId = 0;

+	

+	

+	// ------------------------------------------------------------------------

+	// Constructor

+	// ------------------------------------------------------------------------

+	

+	//TODO:  This should be made more generic to accept various tables.  Right now it is very hard-coded to our stuff...

+	/**

+	 * Constructor for EditableListWidget.

+     * @param aToolkit - FormToolkit

+     * @param aParent - Composite

+     * @param aLayoutData - Object

+     * @param aListener - IEditableListListener

+     * @param aInstanceId - int

+     * @param aEditableWidgetClass - Class<?>

+     * @param aEditableValues - String[]

+	 */

+	public EditableListWidget(FormToolkit aToolkit, Composite aParent, Object aLayoutData, 

+			IEditableListListener aListener, int aInstanceId, Class<?> aEditableWidgetClass, String[] aEditableValues) {

+		fMainComposite = aToolkit.createComposite(aParent);

+		fMainComposite.setLayoutData(aLayoutData);

+		fMainComposite.setLayout(new GridLayout(4, false));

+		fMainTable = aToolkit.createTable(fMainComposite, SWT.FULL_SELECTION);

+        final GridData tableData = new GridData(GridData.FILL, GridData.FILL, true, true);

+        if (aEditableWidgetClass.equals(Date.class)) {

+        	tableData.horizontalSpan = 1;

+        } else {

+        	tableData.horizontalSpan = 2;

+        }

+		fMainTable.setLayoutData(tableData);

+		fMainTable.setLinesVisible(true);

+		fListener = aListener;

+		fInstanceId = aInstanceId;

+		createEditableListFromTable(aToolkit, fMainComposite, fMainTable, fListener, fInstanceId, aEditableWidgetClass,

+				aEditableValues);

+	}

+	

+	

+	// ------------------------------------------------------------------------

+	// Methods

+	// ------------------------------------------------------------------------

+	

+	/**

+	 * Method dispose.

+	 */

+	public void dispose() {

+		fMainComposite.dispose();

+	}

+	

+    /**

+     * Method createEditableListFromTable.

+     * 		Builds the editable list in the provided table

+     * @param aToolkit - FormToolkit

+     * @param aParent - Composite

+     * @param aTable - Table

+     * @param aListener - IEditableListListener

+     * @param aInstanceId - int

+     * @param aEditableWidgetClass - Class<?>

+     * @param aEditableValues - String[]

+     */

+	public static void createEditableListFromTable(FormToolkit aToolkit, Composite aParent, final Table aTable,

+			final IEditableListListener aListener, final int aInstanceId, final Class<?> aEditableWidgetClass, 

+			final String[] aEditableValues) {

+

+		final TableColumn tableColumn = new TableColumn(aTable, SWT.LEFT, 0);

+		final TableColumn tableColumn2 = new TableColumn(aTable, SWT.RIGHT, 1);

+		

+		if (aEditableWidgetClass.equals(Date.class)) {

+			aTable.setHeaderVisible(true);

+			tableColumn.setText(R4EUIConstants.SPENT_TIME_COLUMN_HEADER);

+			tableColumn2.setText(R4EUIConstants.ENTRY_TIME_COLUMN_HEADER);

+		}

+

+        aTable.addControlListener(new ControlAdapter() { 

+			@Override

+			public void controlResized(ControlEvent e) {

+				//TODO:  This is a hack so that the table is displayed somewhat correctly.  However, we need to have a better implementation later

+				if (aEditableWidgetClass.equals(Date.class)) {

+					tableColumn.setWidth((aTable.getClientArea().width > MAX_COLUMN_WIDTH) ? MAX_COLUMN_HALF_WIDTH : aTable.getClientArea().width >> 1);

+					tableColumn2.setWidth((aTable.getClientArea().width > MAX_COLUMN_WIDTH) ? MAX_COLUMN_HALF_WIDTH : aTable.getClientArea().width >> 1);

+				} else {

+					tableColumn.setWidth((aTable.getClientArea().width > MAX_COLUMN_WIDTH) ? MAX_COLUMN_WIDTH : aTable.getClientArea().width);

+				}

+			}

+		});

+        

+        aTable.addFocusListener(new FocusListener() {

+			public void focusLost(FocusEvent e) {

+				//Send items updated notification

+				if (null != aListener) {

+					aListener.itemsUpdated(aTable.getItems(), aInstanceId);

+				}

+			}

+			public void focusGained(FocusEvent e) {

+				//Send items updated notification

+				if (null != aListener) {

+					aListener.itemsUpdated(aTable.getItems(), aInstanceId);

+				}

+			}

+		});

+	      

+		final Composite buttonsComposite = aToolkit.createComposite(aParent);

+		buttonsComposite.setLayout(new GridLayout());

+		buttonsComposite.setLayoutData(new GridData(GridData.CENTER, GridData.CENTER, false, false));

+

+        final Button addButton = aToolkit.createButton(buttonsComposite, R4EUIConstants.BUTTON_ADD_LABEL, SWT.NONE);

+        final Button removeButton = aToolkit.createButton(buttonsComposite, R4EUIConstants.BUTTON_REMOVE_LABEL, SWT.NONE);

+

+        addButton.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));

+        addButton.addSelectionListener(new SelectionListener() {

+			public void widgetSelected(SelectionEvent e) {

+				final TableItem newItem = new TableItem(aTable, SWT.NONE);

+				

+				final Control editableControl;

+				if (aEditableWidgetClass.equals(Text.class)) {

+					editableControl = new Text(aTable, SWT.NONE);

+					((Text)editableControl).addModifyListener(new ModifyListener() {

+						public void modifyText(ModifyEvent me) {

+							newItem.setText(((Text)editableControl).getText());

+						}

+					});

+				} else if (aEditableWidgetClass.equals(CCombo.class)) {

+					editableControl = new CCombo(aTable, SWT.BORDER | SWT.READ_ONLY);

+					((CCombo)editableControl).setItems(aEditableValues);

+					((CCombo)editableControl).addModifyListener(new ModifyListener() {

+						public void modifyText(ModifyEvent me) {

+							newItem.setText(((CCombo)editableControl).getText());

+						}

+					});

+				} else if (aEditableWidgetClass.equals(Date.class)) {					

+					editableControl = new Text(aTable, SWT.NONE);

+					final DateFormat dateFormat = new SimpleDateFormat(R4EUIConstants.DEFAULT_DATE_FORMAT);

+					final String[] data = { ((Text)editableControl).getText(), 

+							dateFormat.format(Calendar.getInstance().getTime()) };

+					newItem.setText(data);

+					((Text)editableControl).addModifyListener(new ModifyListener() {

+						public void modifyText(ModifyEvent me) {

+							//Only accept numbers

+							String newText = ((Text)editableControl).getText();

+							try {

+								Integer.valueOf(newText);

+							} catch (NumberFormatException nfe) {

+								if (newText.length() > 0) {

+									newText = newText.substring(0, newText.length() - 1);

+									((Text)editableControl).setText(newText);

+									((Text)editableControl).setSelection(newText.length());

+								}

+							}

+							newItem.setText(0, newText);

+						}

+					});	

+				} else {

+					return;

+				}

+				editableControl.setFocus();

+				final TableEditor editor = new TableEditor (aTable);

+				editor.grabHorizontal = true;

+				editor.grabVertical = true;

+				editor.setEditor(editableControl, newItem, 0);

+				removeButton.setEnabled(true);

+				

+			}

+			public void widgetDefaultSelected(SelectionEvent e) { // $codepro.audit.disable emptyMethod

+			}

+		});

+        removeButton.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));	

+        removeButton.addSelectionListener(new SelectionListener() {

+			public void widgetSelected(SelectionEvent e) {

+				final int numItems = aTable.getItemCount();

+				if (numItems > 0) {

+					//Find the table index for the first control

+					final Control[] controls = aTable.getChildren();

+					final int firstControlIndex = numItems - controls.length;

+						

+					//Currently selected item

+					int tableItemIndex = aTable.getSelectionIndex();

+					if ( R4EUIConstants.INVALID_VALUE == tableItemIndex) {

+						//Remove the selected element (and control if there is one) or the last one if noe is selected

+						tableItemIndex = numItems - 1;

+					}

+					if (tableItemIndex >=  firstControlIndex ) {

+						controls[tableItemIndex - firstControlIndex].dispose();

+					}

+					aTable.getItem(tableItemIndex).dispose();

+				}

+				if (0 == aTable.getItemCount()) removeButton.setEnabled(false);		

+			}

+			public void widgetDefaultSelected(SelectionEvent e) { // $codepro.audit.disable emptyMethod

+			}

+		});

+	}

+

+	/**

+	 * Method clearAll.

+	 */

+	public void clearAll() {

+		fMainTable.clearAll();

+	}

+	

+	/**

+	 * Method addItem.

+	 * @return Item

+	 */

+	public Item addItem() {

+		 return new TableItem (fMainTable, SWT.NONE);

+	}

+	

+	/**

+	 * Method getItem.

+	 * @param aIndex - int

+	 * @return Item

+	 */

+	public Item getItem(int aIndex) {

+		return fMainTable.getItem(aIndex);

+	}

+	

+	/**

+	 * Method getItems.

+	 * @return Item[]

+	 */

+	public Item[] getItems() {

+		return fMainTable.getItems();

+	}

+	

+	/**

+	 * Method getItemCount.

+	 * @return int

+	 */

+	public int getItemCount() {

+		return fMainTable.getItemCount();

+	}

+	

+	/**

+	 * Method setEnabled.

+	 * @param aEnabled - boolean

+	 */

+	public void setEnabled(boolean aEnabled) {

+		fMainComposite.setEnabled(aEnabled);

+	}

+	

+	/**

+	 * Method getComposite.

+	 * @return Composite

+	 */

+	public Composite getComposite() {

+		return fMainComposite;

+	}

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/IEditableListListener.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/IEditableListListener.java
new file mode 100644
index 0000000..1351e7a
--- /dev/null
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/IEditableListListener.java
@@ -0,0 +1,34 @@
+/*******************************************************************************

+ * Copyright (c) 2010 Ericsson Research Canada

+ * 

+ * All rights reserved. This program and the accompanying materials are

+ * made available under the terms of the Eclipse Public License v1.0 which

+ * accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Description:

+ * 

+ * This class defines a listener that is used to notify users that 

+ * an EditableListWidget they use was updated

+ * 

+ * Contributors:

+ *   Sebastien Dubois - Created for Mylyn Review R4E project

+ *   

+ ******************************************************************************/

+package org.eclipse.mylyn.reviews.r4e.ui.utils;

+

+import org.eclipse.swt.widgets.Item;

+

+/**

+ * @author lmcdubo

+ * @version $Revision: 1.0 $

+ */

+public interface IEditableListListener {

+	

+	/**

+	 * Method itemAdded.

+	 * @param aItems Item[]

+	 * @param aInstanceId int

+	 */

+	void itemsUpdated(Item[] aItems, int aInstanceId);

+}

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/R4EUIConstants.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/R4EUIConstants.java
index 57300a2..fe4d99c 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/R4EUIConstants.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/R4EUIConstants.java
@@ -136,11 +136,29 @@
 	public static final String DIALOG_TITLE_INFO = "R4E Info";

 	

 	/**

+	 * Field REVIEW_NOT_COMPLETED_ERROR.

+	 * (value is ""Review Error"")

+	 */

+	public static final String REVIEW_NOT_COMPLETED_ERROR = "Review Error";

+	

+	/**

 	 * Field SHOW_DISABLED_FILTER_NAME.

 	 * (value is ""Show disabled elements"")

 	 */

 	public static final String SHOW_DISABLED_FILTER_NAME = "Show Disabled Elements";

 	

+	/**

+	 * Field DIALOG_DEFAULT_HEIGHT.

+	 * (value is 500)

+	 */

+	public static final int DIALOG_DEFAULT_HEIGHT = 600;

+	

+	/**

+	 * Field DIALOG_DEFAULT_WIDTH.

+	 * (value is 500)

+	 */

+	public static final int DIALOG_DEFAULT_WIDTH = 500;

+	

 	

 	//Tooltips

 	

@@ -189,14 +207,49 @@
 	 */

 	public static final String REVIEW_GROUP_ICON_FILE = "icons/obj16/revgrp_obj.gif";

 	

-

+	/**

+	 * Field BUTTON_ADD_LABEL.

+	 * (value is ""Add"")

+	 */

+	public static final String BUTTON_ADD_LABEL = "Add";

+	

+	/**

+	 * Field BUTTON_REMOVE_LABEL.

+	 * (value is ""Remove"")

+	 */

+	public static final String BUTTON_REMOVE_LABEL = "Remove";

+	

 	//Properties

 	

 	/**

+	 * Field AVAILABLE_PROJECTS_LABEL.

+	 * (value is ""Available Projects: "")

+	 */

+	public static final String AVAILABLE_PROJECTS_LABEL = "Available Projects: ";

+	

+	/**

+	 * Field AVAILABLE_COMPONENTS_LABEL.

+	 * (value is ""Available Components: "")

+	 */

+	public static final String AVAILABLE_COMPONENTS_LABEL = "Available Components: ";

+	

+	/**

+	 * Field DEFAULT_ENTRY_CRITERIA_LABEL.

+	 * (value is ""Default Entry Criteria: "")

+	 */

+	public static final String DEFAULT_ENTRY_CRITERIA_LABEL = "Default Entry Criteria: ";

+	

+	/**

 	 * Field TABBED_PROPERTY_LABEL_WIDTH.

 	 * (value is 105)

 	 */

-	public static final int TABBED_PROPERTY_LABEL_WIDTH = 135;

+	public static final int TABBED_PROPERTY_LABEL_WIDTH = 150;   //pixels

+	

+	/**

+	 * Field TABBED_PROPERTY_TEXT_HEIGHT_DEFAULT.

+	 * (value is 50)

+	 */

+	public static final int TABBED_PROPERTY_TEXT_HEIGHT_DEFAULT = 50;   //pixels

 	

 	/**

 	 * Field NAME_LABEL.

@@ -217,10 +270,76 @@
 	public static final String DESCRIPTION_LABEL = "Description: ";

 	

 	/**

-	 * Field CREATION_DATE_LABEL.

-	 * (value is ""Creation date: "")

+	 * Field COMPONENTS_LABEL.

+	 * (value is ""Components: "")

 	 */

-	public static final String CREATION_DATE_LABEL = "Creation Date: ";

+	public static final String COMPONENTS_LABEL = "Components: ";

+	

+	/**

+	 * Field ENTRY_CRITERIA_LABEL.

+	 * (value is ""Entry Criteria: "")

+	 */

+	public static final String ENTRY_CRITERIA_LABEL = "Entry Criteria: ";

+	

+	/**

+	 * Field OBJECTIVES_LABEL.

+	 * (value is ""Objectives: "")

+	 */

+	public static final String OBJECTIVES_LABEL = "Objectives: ";

+	

+	/**

+	 * Field REFERENCE_MATERIAL_LABEL.

+	 * (value is ""Reference Material: "")

+	 */

+	public static final String REFERENCE_MATERIAL_LABEL = "Reference Material: ";

+	

+	/**

+	 * Field EXIT_DECISION_LABEL.

+	 * (value is ""Exit Decision: "")

+	 */

+	public static final String EXIT_DECISION_LABEL = "Exit Decision: ";

+	

+	/**

+	 * Field CREATION_DATE_LABEL.

+	 * (value is ""Created: "")

+	 */

+	public static final String CREATION_DATE_LABEL = "Created: ";

+	

+	/**

+	 * Field START_DATE_LABEL.

+	 * (value is ""Started: "")

+	 */

+	public static final String START_DATE_LABEL = "Started: ";

+	

+	/**

+	 * Field END_DATE_LABEL.

+	 * (value is ""Completed: "")

+	 */

+	public static final String END_DATE_LABEL = "Completed: ";

+	

+	/**

+	 * Field TIME_SPENT_CURRENT_LABEL.

+	 * (value is ""Time Spent (current): "")

+	 */

+	public static final String TIME_SPENT_DETAILED_LABEL = "Time Spent (detailed): ";

+	

+	/**

+	 * Field TIME_SPENT_TOTAL_LABEL.

+	 * (value is ""Time Spent (total): "")

+	 */

+	public static final String TIME_SPENT_TOTAL_LABEL = "Time Spent (total): ";

+	

+	/**

+	 * Field TIME_SPENT_CURRENT_LABEL.

+	 * (value is ""Time Spent (current): "")

+	 */

+	public static final String ROLES_LABEL = "Roles: ";

+	

+	/**

+	 * Field FOCUS_AREA_LABEL.

+	 * (value is ""Focus Area: "")

+	 */

+	public static final String FOCUS_AREA_LABEL = "Focus Area: ";

 	

 	/**

 	 * Field AUTHOR_LABEL.

@@ -268,7 +387,7 @@
 	 * Field PROJECT_ID_LABEL.

 	 * (value is ""Project Id: "")

 	 */

-	public static final String PROJECT_ID_LABEL = "Project Id: ";

+	public static final String PROJECT_LABEL = "Project Id: ";

 	

 	/**

 	 * Field PATH_LABEL.

@@ -306,6 +425,117 @@
 	 */

 	public static final String FILE_NOT_IN_VERSION_CONTROL_MSG = "(Not Version Controlled)";

 	

+	/**

+	 * Field IN_PROGRESS_MSG.

+	 * (value is ""(In Progress)"")

+	 */

+	public static final String IN_PROGRESS_MSG = "(In Progress)";

+	

+	/**

+	 * Field STATE_LABEL.

+	 * (value is ""State: "")

+	 */

+	public static final String STATE_LABEL = "State: ";

+	

+	/**

+	 * Field DUE_DATE_LABEL.

+	 * (value is ""Due Date: "")

+	 */

+	public static final String DUE_DATE_LABEL = "Due Date: ";

+	

+	/**

+	 * Field CLASS_LABEL.

+	 * (value is ""Class: "")

+	 */

+	public static final String CLASS_LABEL = "Class: ";

+	

+	/**

+	 * Field RANK_LABEL.

+	 * (value is ""Rank: "")

+	 */

+	public static final String RANK_LABEL = "Rank: ";

+	

+	/**

+	 * Field NOT_ACCEPTED_REASON_LABEL.

+	 * (value is ""Reason for Rejection: "")

+	 */

+	public static final String NOT_ACCEPTED_REASON_LABEL = "Reason for Rejection: ";

+	

+	/**

+	 * Field DECIDED_BY_LABEL.

+	 * (value is ""Decided by: "")

+	 */

+	public static final String DECIDED_BY_LABEL = "Decided by: ";

+	

+	/**

+	 * Field FIXED_BY_LABEL.

+	 * (value is ""Fixed by: "")

+	 */

+	public static final String FIXED_BY_LABEL = "Fixed by: ";

+	

+	/**

+	 * Field FOLLOWUP_BY_LABEL.

+	 * (value is ""Follow-up by: "")

+	 */

+	public static final String FOLLOWUP_BY_LABEL = "Follow-up by: ";

+	

+	/**

+	 * Field DEFAULT_DATE_FORMAT.

+	 * (value is ""yyyy/MM/dd HH:mm:ss"")

+	 */

+	public static final String DEFAULT_DATE_FORMAT = "yyyy/MM/dd HH:mm:ss";

+	

+	/**

+	 * Field SIMPLE_DATE_FORMAT.

+	 * (value is ""yyyy/MM/dd"")

+	 */

+	public static final String SIMPLE_DATE_FORMAT = "yyyy/MM/dd";

+	

+	/**

+	 * Field SPENT_TIME_COLUMN_HEADER.

+	 * (value is ""Time spent (minutes)"")

+	 */

+	public static final String SPENT_TIME_COLUMN_HEADER = "Time spent (minutes)";

+	

+	/**

+	 * Field ENTRY_TIME_COLUMN_HEADER.

+	 * (value is ""Time of entry"")

+	 */

+	public static final String ENTRY_TIME_COLUMN_HEADER = "Time of entry";

+	

+	/**

+	 * Field BASIC_PARAMS_HEADER.

+	 * (value is ""Basic Parameters"")

+	 */

+	public static final String BASIC_PARAMS_HEADER = "Basic Parameters";

+	

+	/**

+	 * Field EXTRA_PARAMS_HEADER.

+	 * (value is ""Extra Parameters"")

+	 */

+	public static final String EXTRA_PARAMS_HEADER = "Extra Parameters";

+	

+	

+	//Review types

+	

+	/**

+	 * Field REVIEW_TYPE_BASIC.

+	 * (value is ""Basic"")

+	 */

+	public static final String REVIEW_TYPE_BASIC = "Basic";

+	

+	/**

+	 * Field REVIEW_TYPE_INFORMAL.

+	 * (value is ""Informal"")

+	 */

+	public static final String REVIEW_TYPE_INFORMAL = "Informal";

+	

+	/**

+	 * Field REVIEW_TYPE_FORMAL.

+	 * (value is ""Formal"")

+	 */

+	public static final String REVIEW_TYPE_FORMAL = "Formal";

+	

 	

 	//Review item types

 	

@@ -322,6 +552,27 @@
 	public static final int REVIEW_ITEM_TYPE_COMMIT = 1;

 	

 	

+	//User Roles

+	

+	/**

+	 * Field USER_ROLE_LEAD.

+	 * (value is ""Lead"")

+	 */

+	public static final String USER_ROLE_LEAD = "Lead";

+	

+	/**

+	 * Field USER_ROLE_AUTHOR.

+	 * (value is ""Author"")

+	 */

+	public static final String USER_ROLE_AUTHOR = "Author";

+	

+	/**

+	 * Field USER_ROLE_REVIEWER.

+	 * (value is ""Reviewer"")

+	 */

+	public static final String USER_ROLE_REVIEWER = "Reviewer";

+	

+	

 	//Commands

 	

 	/**

diff --git a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/UIUtils.java b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/UIUtils.java
index 811b3f0..c6c15bc 100644
--- a/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/UIUtils.java
+++ b/org.eclipse.mylyn.reviews.r4e.ui/src/org/eclipse/mylyn/reviews/r4e/ui/utils/UIUtils.java
@@ -32,7 +32,13 @@
 import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException;

 import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewVersionsException;

 import org.eclipse.mylyn.reviews.r4e.ui.Activator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.ScrolledComposite;

+import org.eclipse.swt.events.ModifyEvent;

+import org.eclipse.swt.events.ModifyListener;

 import org.eclipse.swt.graphics.Image;

+import org.eclipse.swt.graphics.Point;

+import org.eclipse.swt.widgets.Text;

 

 /**

  * @author lmcdubo

@@ -124,4 +130,40 @@
         }

         return stringArray;

 	}

+    

+    /**

+     * Method addTabbedPropertiesTextResizeListener.

+     * 	Resizes a Text widget in a ScrolledComposite to fit the text being typed.  It also adds scrollbars to the composite as needed

+     * @param aText Text - The Text widget

+     */

+    //TODO this only works for flatFormComposites and not vanilla ones.  For now this is not a big deal, but we will want to review it later

+    //A new auto-resizable text widget class should be created for this eventually

+    public static void addTabbedPropertiesTextResizeListener(final Text aText) {

+    	aText.addModifyListener(new ModifyListener() {

+	    	public void modifyText(ModifyEvent e) {

+	    		//compute new Text field size

+	    	    final Point newSize = aText.computeSize(SWT.DEFAULT, SWT.DEFAULT);

+	    	    final Point oldSize = aText.getSize();

+	    	    final int heightDiff = newSize.y - oldSize.y;

+	    	    if (0 != heightDiff) {

+	    	    	aText.setSize(newSize);

+	    	    	aText.getParent().layout();

+	    	    	

+	    	    	//Set scrollable height so that scrollbar appear if needed

+	    	    	final ScrolledComposite scrolledParent = (ScrolledComposite) aText.getParent().getParent().getParent().getParent().getParent().getParent();

+	    	    	scrolledParent.setMinSize(aText.getParent().computeSize(SWT.DEFAULT, SWT.DEFAULT));

+	    	    	

+	    	    	//If the text falls outside of the display scroll down to reposition

+	    	    	if ((aText.getLocation().y + aText.getCaretLocation().y + aText.getLineHeight()) >

+	    	    		(scrolledParent.getClientArea().y + scrolledParent.getClientArea().height)) {

+		    	    	

+		    	    	final Point origin = scrolledParent.getOrigin();

+		    	    	origin.y += heightDiff;

+		    	    	

+		    	    	scrolledParent.setOrigin(origin);

+	    	    	}

+	    	    }    

+	    	}

+	    });

+    }

 }