Skip to main content
summaryrefslogtreecommitdiffstats
path: root/gerrit
diff options
context:
space:
mode:
authorSteffen Pingel2011-01-13 08:58:27 +0000
committerSteffen Pingel2011-01-16 06:09:11 +0000
commitb0ff309323c703a019c5b08c246cb6df96732461 (patch)
tree061383395218854d504e998acaec0401161e509c /gerrit
parent357c8bf3111a110ec0cb14307b6d35e723c00dc0 (diff)
downloadorg.eclipse.mylyn.reviews-b0ff309323c703a019c5b08c246cb6df96732461.tar.gz
org.eclipse.mylyn.reviews-b0ff309323c703a019c5b08c246cb6df96732461.tar.xz
org.eclipse.mylyn.reviews-b0ff309323c703a019c5b08c246cb6df96732461.zip
bug 333945: show review details in task editor
https://bugs.eclipse.org/bugs/show_bug.cgi?id=333945
Diffstat (limited to 'gerrit')
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/.classpath14
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/build.properties18
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/model/reviews.ecore7
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/plugin.xml39
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritConnector.java2
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskDataHandler.java23
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient.java27
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReview.java10
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReviewItemSet.java69
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReviewsFactory.java9
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/Review.java35
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewItemSet.java228
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsAdapterFactory.java19
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsFactory.java12
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsPackage.java184
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsSwitch.java26
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/GerritTaskEditorPage.java7
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/ReviewSection.java161
18 files changed, 833 insertions, 57 deletions
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/.classpath b/gerrit/org.eclipse.mylyn.gerrit.core/.classpath
index 2d1a4302f..304e86186 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/.classpath
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/.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/J2SE-1.5"/>
- <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="src" path="src"/>
+ <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/gerrit/org.eclipse.mylyn.gerrit.core/build.properties b/gerrit/org.eclipse.mylyn.gerrit.core/build.properties
index 785a40c0e..eb5a4c112 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/build.properties
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/build.properties
@@ -1,6 +1,16 @@
+# Copyright (c) 2011 Tasktop Technologies and others.
+# 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
+#
+# Contributors:
+# Tasktop Technologies - initial API and implementation
+
+bin.includes = .,\
+ model/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
source.. = src/
output.. = bin/
-bin.includes = META-INF/,\
- .,\
- about.html
-src.includes = about.html
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/model/reviews.ecore b/gerrit/org.eclipse.mylyn.gerrit.core/model/reviews.ecore
index 587f2b2ab..3ae9cf554 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/model/reviews.ecore
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/model/reviews.ecore
@@ -6,7 +6,7 @@
<eClassifiers xsi:type="ecore:EClass" name="Review" eSuperTypes="#//ReviewComponent">
<eStructuralFeatures xsi:type="ecore:EReference" name="topics" upperBound="-1"
eType="#//Topic" transient="true" derived="true"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="reviewItems" upperBound="-1"
+ <eStructuralFeatures xsi:type="ecore:EReference" name="items" upperBound="-1"
eType="#//ReviewItem" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="reviewTask" eType="#//TaskReference"
containment="true"/>
@@ -69,4 +69,9 @@
<eStructuralFeatures xsi:type="ecore:EAttribute" name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
defaultValueLiteral=""/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReviewItemSet" eSuperTypes="#//ReviewItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="items" upperBound="-1"
+ eType="#//ReviewItem" containment="true"/>
+ </eClassifiers>
</ecore:EPackage>
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/plugin.xml b/gerrit/org.eclipse.mylyn.gerrit.core/plugin.xml
new file mode 100644
index 000000000..8fcbd51a4
--- /dev/null
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/plugin.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2011 Tasktop Technologies and others.
+ 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
+
+ Contributors:
+ Tasktop Technologies - initial API and implementation
+-->
+
+<plugin
+ name="%pluginName"
+ id="org.eclipse.mylyn.reviews.core"
+ version="1.0.0"
+ provider-name="%providerName">
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.emf.ecore" export="true"/>
+ </requires>
+
+ <runtime>
+ <library name=".">
+ <export name="*"/>
+ </library>
+ </runtime>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri="http://eclipse.org/mylyn/reviews/core/1.0"
+ class="org.eclipse.mylyn.reviews.internal.core.model.ReviewsPackage"
+ genModel="model/reviews.genmodel"/>
+ </extension>
+
+</plugin>
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritConnector.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritConnector.java
index f1b2fccc4..dd69ca7f7 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritConnector.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritConnector.java
@@ -202,7 +202,7 @@ public class GerritConnector extends AbstractRepositoryConnector {
mapper.applyTo(task);
}
- GerritClient getClient(TaskRepository repository) {
+ public GerritClient getClient(TaskRepository repository) {
return createClient(repository);
}
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskDataHandler.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskDataHandler.java
index f6ae42f99..19b002309 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskDataHandler.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskDataHandler.java
@@ -18,6 +18,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.mylyn.internal.gerrit.core.client.GerritClient;
import org.eclipse.mylyn.internal.gerrit.core.client.GerritException;
+import org.eclipse.mylyn.tasks.core.IRepositoryPerson;
import org.eclipse.mylyn.tasks.core.ITaskMapping;
import org.eclipse.mylyn.tasks.core.RepositoryResponse;
import org.eclipse.mylyn.tasks.core.TaskRepository;
@@ -25,12 +26,14 @@ import org.eclipse.mylyn.tasks.core.data.AbstractTaskDataHandler;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMetaData;
+import org.eclipse.mylyn.tasks.core.data.TaskCommentMapper;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import com.google.gerrit.common.data.AccountInfo;
import com.google.gerrit.common.data.ChangeDetail;
import com.google.gerrit.common.data.ChangeInfo;
import com.google.gerrit.reviewdb.Change;
+import com.google.gerrit.reviewdb.ChangeMessage;
/**
* @author Mikael Kober
@@ -96,7 +99,7 @@ public class GerritTaskDataHandler extends AbstractTaskDataHandler {
GerritClient client = connector.getClient(repository);
ChangeDetail changeDetail = client.getChangeDetail(client.id(taskId), monitor);
TaskData taskData = createTaskData(repository, taskId, monitor);
- updateTaskData(taskData, changeDetail);
+ updateTaskData(repository, taskData, changeDetail);
return taskData;
} catch (GerritException e) {
throw connector.toCoreException(repository, e);
@@ -116,7 +119,7 @@ public class GerritTaskDataHandler extends AbstractTaskDataHandler {
throw new UnsupportedOperationException();
}
- public void updateTaskData(TaskData data, ChangeDetail changeDetail) {
+ public void updateTaskData(TaskRepository repository, TaskData data, ChangeDetail changeDetail) {
Change change = changeDetail.getChange();
AccountInfo owner = changeDetail.getAccounts().get(change.getOwner());
setAttributeValue(data, GerritAttribute.ID, change.getChangeId() + ""); //$NON-NLS-1$
@@ -128,6 +131,22 @@ public class GerritTaskDataHandler extends AbstractTaskDataHandler {
setAttributeValue(data, GerritAttribute.UPDATED, dateToString(change.getLastUpdatedOn()));
setAttributeValue(data, GerritAttribute.UPLOADED, dateToString(change.getCreatedOn()));
setAttributeValue(data, GerritAttribute.DESCRIPTION, changeDetail.getDescription());
+ setAttributeValue(data, GerritAttribute.URL, connector.getTaskUrl(repository.getUrl(), data.getTaskId()));
+ int i = 1;
+ for (ChangeMessage message : changeDetail.getMessages()) {
+ TaskCommentMapper mapper = new TaskCommentMapper();
+ AccountInfo author = changeDetail.getAccounts().get(message.getAuthor());
+ IRepositoryPerson person = repository.createPerson((author.getPreferredEmail() != null) ? author.getPreferredEmail()
+ : author.getId() + ""); //$NON-NLS-1$
+ person.setName(author.getFullName());
+ mapper.setAuthor(person);
+ mapper.setText(message.getMessage());
+ mapper.setCreationDate(message.getWrittenOn());
+ mapper.setNumber(i);
+ TaskAttribute attribute = data.getRoot().createAttribute(TaskAttribute.PREFIX_COMMENT + i);
+ mapper.applyTo(attribute);
+ i++;
+ }
}
public void updateTaskData(TaskData data, ChangeInfo changeInfo) {
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient.java
index 94c7fa85a..18f1da090 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient.java
@@ -20,6 +20,7 @@ import org.eclipse.mylyn.commons.net.AbstractWebLocation;
import org.eclipse.mylyn.internal.gerrit.core.client.GerritService.GerritRequest;
import org.eclipse.mylyn.reviews.core.model.IFileItem;
import org.eclipse.mylyn.reviews.core.model.IReview;
+import org.eclipse.mylyn.reviews.core.model.IReviewItemSet;
import org.eclipse.mylyn.reviews.internal.core.model.ReviewsFactory;
import org.eclipse.osgi.util.NLS;
@@ -50,6 +51,8 @@ import com.google.gwtjsonrpc.client.RemoteJsonService;
*/
public class GerritClient {
+ private static final ReviewsFactory FACTORY = ReviewsFactory.eINSTANCE;
+
private abstract class GerritOperation<T> implements AsyncCallback<T> {
private Throwable exception;
@@ -240,17 +243,25 @@ public class GerritClient {
}
public IReview getReview(String reviewId, IProgressMonitor monitor) throws GerritException {
- IReview review = ReviewsFactory.eINSTANCE.createReview();
+ IReview review = FACTORY.createReview();
ChangeDetail detail = getChangeDetail(Integer.parseInt(reviewId), monitor);
List<PatchSet> patchSets = detail.getPatchSets();
for (PatchSet patchSet : patchSets) {
- //
- }
- if (detail.getCurrentPatchSetDetail() != null) {
- for (Patch patch : detail.getCurrentPatchSetDetail().getPatches()) {
- IFileItem item = ReviewsFactory.eINSTANCE.createFileItem();
- item.setName(patch.getFileName());
- review.getReviewItems().add(item);
+ IReviewItemSet itemSet = FACTORY.createReviewItemSet();
+ itemSet.setName(NLS.bind("Patch Set {0}", patchSet.getPatchSetId()));
+ itemSet.setId(patchSet.getRevision().get());
+ review.getItems().add(itemSet);
+ if (patchSet.getId().equals(detail.getCurrentPatchSetDetail().getPatchSet().getId())) {
+ for (Patch patch : detail.getCurrentPatchSetDetail().getPatches()) {
+ IFileItem item = FACTORY.createFileItem();
+ if (patch.getCommentCount() > 0) {
+ item.setName(NLS.bind("{0} [{1} comments]", patch.getFileName(), patch.getCommentCount()));
+ } else {
+ item.setName(patch.getFileName());
+ }
+ itemSet.getItems().add(item);
+ }
+ //
}
}
return review;
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReview.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReview.java
index f059e56d0..abb6c14ff 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReview.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReview.java
@@ -21,7 +21,7 @@ import java.util.List;
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.mylyn.reviews.core.model.IReview#getTopics <em>Topics</em>}</li>
- * <li>{@link org.eclipse.mylyn.reviews.core.model.IReview#getReviewItems <em>Review Items</em>}</li>
+ * <li>{@link org.eclipse.mylyn.reviews.core.model.IReview#getItems <em>Items</em>}</li>
* <li>{@link org.eclipse.mylyn.reviews.core.model.IReview#getReviewTask <em>Review Task</em>}</li>
* <li>{@link org.eclipse.mylyn.reviews.core.model.IReview#getState <em>State</em>}</li>
* </ul>
@@ -45,18 +45,18 @@ public interface IReview extends IReviewComponent {
List<ITopic> getTopics();
/**
- * Returns the value of the '<em><b>Review Items</b></em>' reference list.
+ * Returns the value of the '<em><b>Items</b></em>' reference list.
* The list contents are of type {@link org.eclipse.mylyn.reviews.core.model.IReviewItem}.
* <!-- begin-user-doc -->
* <p>
- * If the meaning of the '<em>Review Items</em>' reference list isn't clear,
+ * If the meaning of the '<em>Items</em>' reference list isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
- * @return the value of the '<em>Review Items</em>' reference list.
+ * @return the value of the '<em>Items</em>' reference list.
* @generated
*/
- List<IReviewItem> getReviewItems();
+ List<IReviewItem> getItems();
/**
* Returns the value of the '<em><b>Review Task</b></em>' containment reference.
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReviewItemSet.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReviewItemSet.java
new file mode 100644
index 000000000..9fef85c7d
--- /dev/null
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReviewItemSet.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2011 Tasktop Technologies and others.
+ * 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
+ *
+ * Contributors:
+ * Tasktop Technologies - initial API and implementation
+ */
+package org.eclipse.mylyn.reviews.core.model;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Review Item Set</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.mylyn.reviews.core.model.IReviewItemSet#getId <em>Id</em>}</li>
+ * <li>{@link org.eclipse.mylyn.reviews.core.model.IReviewItemSet#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface IReviewItemSet extends IReviewItem {
+ /**
+ * Returns the value of the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>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>Id</em>' attribute.
+ * @see #setId(String)
+ * @generated
+ */
+ String getId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.mylyn.reviews.core.model.IReviewItemSet#getId <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Id</em>' attribute.
+ * @see #getId()
+ * @generated
+ */
+ void setId(String value);
+
+ /**
+ * Returns the value of the '<em><b>Items</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.mylyn.reviews.core.model.IReviewItem}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Items</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Items</em>' containment reference list.
+ * @generated
+ */
+ List<IReviewItem> getItems();
+
+} // IReviewItemSet
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReviewsFactory.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReviewsFactory.java
index 5a5258135..774a7f386 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReviewsFactory.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/core/model/IReviewsFactory.java
@@ -107,4 +107,13 @@ public interface IReviewsFactory {
*/
IFileItem createFileItem();
+ /**
+ * Returns a new object of class '<em>Review Item Set</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Review Item Set</em>'.
+ * @generated
+ */
+ IReviewItemSet createReviewItemSet();
+
} //IReviewsFactory
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/Review.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/Review.java
index f715e4813..57fcaff6a 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/Review.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/Review.java
@@ -40,7 +40,7 @@ import org.eclipse.mylyn.reviews.core.model.ITopic;
* The following features are implemented:
* <ul>
* <li>{@link org.eclipse.mylyn.reviews.internal.core.model.Review#getTopics <em>Topics</em>}</li>
- * <li>{@link org.eclipse.mylyn.reviews.internal.core.model.Review#getReviewItems <em>Review Items</em>}</li>
+ * <li>{@link org.eclipse.mylyn.reviews.internal.core.model.Review#getItems <em>Items</em>}</li>
* <li>{@link org.eclipse.mylyn.reviews.internal.core.model.Review#getReviewTask <em>Review Task</em>}</li>
* <li>{@link org.eclipse.mylyn.reviews.internal.core.model.Review#getState <em>State</em>}</li>
* </ul>
@@ -60,14 +60,14 @@ public class Review extends ReviewComponent implements IReview {
protected EList<ITopic> topics;
/**
- * The cached value of the '{@link #getReviewItems() <em>Review Items</em>}' reference list.
+ * The cached value of the '{@link #getItems() <em>Items</em>}' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @see #getReviewItems()
+ * @see #getItems()
* @generated
* @ordered
*/
- protected EList<IReviewItem> reviewItems;
+ protected EList<IReviewItem> items;
/**
* The cached value of the '{@link #getReviewTask() <em>Review Task</em>}' containment reference.
@@ -125,12 +125,11 @@ public class Review extends ReviewComponent implements IReview {
* <!-- end-user-doc -->
* @generated
*/
- public List<IReviewItem> getReviewItems() {
- if (reviewItems == null) {
- reviewItems = new EObjectResolvingEList<IReviewItem>(IReviewItem.class, this,
- ReviewsPackage.REVIEW__REVIEW_ITEMS);
+ public List<IReviewItem> getItems() {
+ if (items == null) {
+ items = new EObjectResolvingEList<IReviewItem>(IReviewItem.class, this, ReviewsPackage.REVIEW__ITEMS);
}
- return reviewItems;
+ return items;
}
/**
@@ -258,8 +257,8 @@ public class Review extends ReviewComponent implements IReview {
switch (featureID) {
case ReviewsPackage.REVIEW__TOPICS:
return getTopics();
- case ReviewsPackage.REVIEW__REVIEW_ITEMS:
- return getReviewItems();
+ case ReviewsPackage.REVIEW__ITEMS:
+ return getItems();
case ReviewsPackage.REVIEW__REVIEW_TASK:
return getReviewTask();
case ReviewsPackage.REVIEW__STATE:
@@ -281,9 +280,9 @@ public class Review extends ReviewComponent implements IReview {
getTopics().clear();
getTopics().addAll((Collection<? extends ITopic>) newValue);
return;
- case ReviewsPackage.REVIEW__REVIEW_ITEMS:
- getReviewItems().clear();
- getReviewItems().addAll((Collection<? extends IReviewItem>) newValue);
+ case ReviewsPackage.REVIEW__ITEMS:
+ getItems().clear();
+ getItems().addAll((Collection<? extends IReviewItem>) newValue);
return;
case ReviewsPackage.REVIEW__REVIEW_TASK:
setReviewTask((ITaskReference) newValue);
@@ -306,8 +305,8 @@ public class Review extends ReviewComponent implements IReview {
case ReviewsPackage.REVIEW__TOPICS:
getTopics().clear();
return;
- case ReviewsPackage.REVIEW__REVIEW_ITEMS:
- getReviewItems().clear();
+ case ReviewsPackage.REVIEW__ITEMS:
+ getItems().clear();
return;
case ReviewsPackage.REVIEW__REVIEW_TASK:
setReviewTask((ITaskReference) null);
@@ -329,8 +328,8 @@ public class Review extends ReviewComponent implements IReview {
switch (featureID) {
case ReviewsPackage.REVIEW__TOPICS:
return topics != null && !topics.isEmpty();
- case ReviewsPackage.REVIEW__REVIEW_ITEMS:
- return reviewItems != null && !reviewItems.isEmpty();
+ case ReviewsPackage.REVIEW__ITEMS:
+ return items != null && !items.isEmpty();
case ReviewsPackage.REVIEW__REVIEW_TASK:
return reviewTask != null;
case ReviewsPackage.REVIEW__STATE:
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewItemSet.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewItemSet.java
new file mode 100644
index 000000000..585db6a6c
--- /dev/null
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewItemSet.java
@@ -0,0 +1,228 @@
+/**
+ * Copyright (c) 2011 Tasktop Technologies and others.
+ * 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
+ *
+ * Contributors:
+ * Tasktop Technologies - initial API and implementation
+ */
+package org.eclipse.mylyn.reviews.internal.core.model;
+
+import java.util.Collection;
+import java.util.List;
+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.ecore.EClass;
+
+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.InternalEList;
+import org.eclipse.mylyn.reviews.core.model.IReviewItem;
+import org.eclipse.mylyn.reviews.core.model.IReviewItemSet;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Review Item Set</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.mylyn.reviews.internal.core.model.ReviewItemSet#getId <em>Id</em>}</li>
+ * <li>{@link org.eclipse.mylyn.reviews.internal.core.model.ReviewItemSet#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ReviewItemSet extends ReviewItem implements IReviewItemSet {
+ /**
+ * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected static final String ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getId()
+ * @generated
+ * @ordered
+ */
+ protected String id = ID_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getItems() <em>Items</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getItems()
+ * @generated
+ * @ordered
+ */
+ protected EList<IReviewItem> items;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ReviewItemSet() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ReviewsPackage.Literals.REVIEW_ITEM_SET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setId(String newId) {
+ String oldId = id;
+ id = newId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ReviewsPackage.REVIEW_ITEM_SET__ID, oldId, id));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List<IReviewItem> getItems() {
+ if (items == null) {
+ items = new EObjectContainmentEList<IReviewItem>(IReviewItem.class, this,
+ ReviewsPackage.REVIEW_ITEM_SET__ITEMS);
+ }
+ return items;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ReviewsPackage.REVIEW_ITEM_SET__ITEMS:
+ return ((InternalEList<?>) getItems()).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 ReviewsPackage.REVIEW_ITEM_SET__ID:
+ return getId();
+ case ReviewsPackage.REVIEW_ITEM_SET__ITEMS:
+ return getItems();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ReviewsPackage.REVIEW_ITEM_SET__ID:
+ setId((String) newValue);
+ return;
+ case ReviewsPackage.REVIEW_ITEM_SET__ITEMS:
+ getItems().clear();
+ getItems().addAll((Collection<? extends IReviewItem>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ReviewsPackage.REVIEW_ITEM_SET__ID:
+ setId(ID_EDEFAULT);
+ return;
+ case ReviewsPackage.REVIEW_ITEM_SET__ITEMS:
+ getItems().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ReviewsPackage.REVIEW_ITEM_SET__ID:
+ return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+ case ReviewsPackage.REVIEW_ITEM_SET__ITEMS:
+ return items != null && !items.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(" (id: "); //$NON-NLS-1$
+ result.append(id);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ReviewItemSet
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsAdapterFactory.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsAdapterFactory.java
index c3df5660c..96197bf33 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsAdapterFactory.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsAdapterFactory.java
@@ -135,6 +135,11 @@ public class ReviewsAdapterFactory extends AdapterFactoryImpl {
}
@Override
+ public Adapter caseReviewItemSet(IReviewItemSet object) {
+ return createReviewItemSetAdapter();
+ }
+
+ @Override
public Adapter defaultCase(EObject object) {
return createEObjectAdapter();
}
@@ -322,6 +327,20 @@ public class ReviewsAdapterFactory extends AdapterFactoryImpl {
}
/**
+ * Creates a new adapter for an object of class '{@link org.eclipse.mylyn.reviews.core.model.IReviewItemSet <em>Review Item Set</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 org.eclipse.mylyn.reviews.core.model.IReviewItemSet
+ * @generated
+ */
+ public Adapter createReviewItemSetAdapter() {
+ return null;
+ }
+
+ /**
* Creates a new adapter for the default case.
* <!-- begin-user-doc -->
* This default implementation returns null.
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsFactory.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsFactory.java
index 9d18a3567..b9d5d915c 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsFactory.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsFactory.java
@@ -89,6 +89,8 @@ public class ReviewsFactory extends EFactoryImpl implements IReviewsFactory {
return (EObject) createReviewComponent();
case ReviewsPackage.FILE_ITEM:
return (EObject) createFileItem();
+ case ReviewsPackage.REVIEW_ITEM_SET:
+ return (EObject) createReviewItemSet();
default:
throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
}
@@ -189,6 +191,16 @@ public class ReviewsFactory extends EFactoryImpl implements IReviewsFactory {
* <!-- end-user-doc -->
* @generated
*/
+ public IReviewItemSet createReviewItemSet() {
+ ReviewItemSet reviewItemSet = new ReviewItemSet();
+ return reviewItemSet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public ReviewsPackage getReviewsPackage() {
return (ReviewsPackage) getEPackage();
}
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsPackage.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsPackage.java
index 175dafa7a..7500564e3 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsPackage.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsPackage.java
@@ -27,6 +27,7 @@ import org.eclipse.mylyn.reviews.core.model.IReview;
import org.eclipse.mylyn.reviews.core.model.IReviewComponent;
import org.eclipse.mylyn.reviews.core.model.IReviewGroup;
import org.eclipse.mylyn.reviews.core.model.IReviewItem;
+import org.eclipse.mylyn.reviews.core.model.IReviewItemSet;
import org.eclipse.mylyn.reviews.core.model.IReviewState;
import org.eclipse.mylyn.reviews.core.model.IReviewsFactory;
import org.eclipse.mylyn.reviews.core.model.ITaskReference;
@@ -137,13 +138,13 @@ public class ReviewsPackage extends EPackageImpl {
public static final int REVIEW__TOPICS = REVIEW_COMPONENT_FEATURE_COUNT + 0;
/**
- * The feature id for the '<em><b>Review Items</b></em>' reference list.
+ * The feature id for the '<em><b>Items</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- public static final int REVIEW__REVIEW_ITEMS = REVIEW_COMPONENT_FEATURE_COUNT + 1;
+ public static final int REVIEW__ITEMS = REVIEW_COMPONENT_FEATURE_COUNT + 1;
/**
* The feature id for the '<em><b>Review Task</b></em>' containment reference.
@@ -642,6 +643,79 @@ public class ReviewsPackage extends EPackageImpl {
public static final int FILE_ITEM_FEATURE_COUNT = REVIEW_ITEM_FEATURE_COUNT + 1;
/**
+ * The meta object id for the '{@link org.eclipse.mylyn.reviews.internal.core.model.ReviewItemSet <em>Review Item Set</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.mylyn.reviews.internal.core.model.ReviewItemSet
+ * @see org.eclipse.mylyn.reviews.internal.core.model.ReviewsPackage#getReviewItemSet()
+ * @generated
+ */
+ public static final int REVIEW_ITEM_SET = 12;
+
+ /**
+ * The feature id for the '<em><b>Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int REVIEW_ITEM_SET__ENABLED = REVIEW_ITEM__ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Added By</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int REVIEW_ITEM_SET__ADDED_BY = REVIEW_ITEM__ADDED_BY;
+
+ /**
+ * The feature id for the '<em><b>Review</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int REVIEW_ITEM_SET__REVIEW = REVIEW_ITEM__REVIEW;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int REVIEW_ITEM_SET__NAME = REVIEW_ITEM__NAME;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int REVIEW_ITEM_SET__ID = REVIEW_ITEM_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Items</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int REVIEW_ITEM_SET__ITEMS = REVIEW_ITEM_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Review Item Set</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int REVIEW_ITEM_SET_FEATURE_COUNT = REVIEW_ITEM_FEATURE_COUNT + 2;
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -726,6 +800,13 @@ public class ReviewsPackage extends EPackageImpl {
private EClass fileItemEClass = null;
/**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass reviewItemSetEClass = 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.
@@ -813,15 +894,15 @@ public class ReviewsPackage extends EPackageImpl {
}
/**
- * Returns the meta object for the reference list '{@link org.eclipse.mylyn.reviews.core.model.IReview#getReviewItems <em>Review Items</em>}'.
+ * Returns the meta object for the reference list '{@link org.eclipse.mylyn.reviews.core.model.IReview#getItems <em>Items</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @return the meta object for the reference list '<em>Review Items</em>'.
- * @see org.eclipse.mylyn.reviews.core.model.IReview#getReviewItems()
+ * @return the meta object for the reference list '<em>Items</em>'.
+ * @see org.eclipse.mylyn.reviews.core.model.IReview#getItems()
* @see #getReview()
* @generated
*/
- public EReference getReview_ReviewItems() {
+ public EReference getReview_Items() {
return (EReference) reviewEClass.getEStructuralFeatures().get(1);
}
@@ -1231,6 +1312,44 @@ public class ReviewsPackage extends EPackageImpl {
}
/**
+ * Returns the meta object for class '{@link org.eclipse.mylyn.reviews.core.model.IReviewItemSet <em>Review Item Set</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Review Item Set</em>'.
+ * @see org.eclipse.mylyn.reviews.core.model.IReviewItemSet
+ * @generated
+ */
+ public EClass getReviewItemSet() {
+ return reviewItemSetEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.mylyn.reviews.core.model.IReviewItemSet#getId <em>Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Id</em>'.
+ * @see org.eclipse.mylyn.reviews.core.model.IReviewItemSet#getId()
+ * @see #getReviewItemSet()
+ * @generated
+ */
+ public EAttribute getReviewItemSet_Id() {
+ return (EAttribute) reviewItemSetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.mylyn.reviews.core.model.IReviewItemSet#getItems <em>Items</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Items</em>'.
+ * @see org.eclipse.mylyn.reviews.core.model.IReviewItemSet#getItems()
+ * @see #getReviewItemSet()
+ * @generated
+ */
+ public EReference getReviewItemSet_Items() {
+ return (EReference) reviewItemSetEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
* Returns the factory that creates the instances of the model.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1263,7 +1382,7 @@ public class ReviewsPackage extends EPackageImpl {
// Create classes and their features
reviewEClass = createEClass(REVIEW);
createEReference(reviewEClass, REVIEW__TOPICS);
- createEReference(reviewEClass, REVIEW__REVIEW_ITEMS);
+ createEReference(reviewEClass, REVIEW__ITEMS);
createEReference(reviewEClass, REVIEW__REVIEW_TASK);
createEReference(reviewEClass, REVIEW__STATE);
@@ -1307,6 +1426,10 @@ public class ReviewsPackage extends EPackageImpl {
fileItemEClass = createEClass(FILE_ITEM);
createEAttribute(fileItemEClass, FILE_ITEM__PATH);
+
+ reviewItemSetEClass = createEClass(REVIEW_ITEM_SET);
+ createEAttribute(reviewItemSetEClass, REVIEW_ITEM_SET__ID);
+ createEReference(reviewItemSetEClass, REVIEW_ITEM_SET__ITEMS);
}
/**
@@ -1346,6 +1469,7 @@ public class ReviewsPackage extends EPackageImpl {
reviewGroupEClass.getESuperTypes().add(this.getReviewComponent());
topicEClass.getESuperTypes().add(this.getComment());
fileItemEClass.getESuperTypes().add(this.getReviewItem());
+ reviewItemSetEClass.getESuperTypes().add(this.getReviewItem());
// Initialize classes and features; add operations and parameters
initEClass(reviewEClass, IReview.class, "Review", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
@@ -1355,10 +1479,10 @@ public class ReviewsPackage extends EPackageImpl {
null,
"topics", null, 0, -1, IReview.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
initEReference(
- getReview_ReviewItems(),
+ getReview_Items(),
this.getReviewItem(),
null,
- "reviewItems", null, 0, -1, IReview.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ "items", null, 0, -1, IReview.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
initEReference(
getReview_ReviewTask(),
this.getTaskReference(),
@@ -1485,6 +1609,18 @@ public class ReviewsPackage extends EPackageImpl {
ecorePackage.getEString(),
"path", "", 0, 1, IFileItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEClass(reviewItemSetEClass, IReviewItemSet.class,
+ "ReviewItemSet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(
+ getReviewItemSet_Id(),
+ ecorePackage.getEString(),
+ "id", null, 0, 1, IReviewItemSet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(
+ getReviewItemSet_Items(),
+ this.getReviewItem(),
+ null,
+ "items", null, 0, -1, IReviewItemSet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
// Create resource
createResource(eNS_URI);
@@ -1539,12 +1675,12 @@ public class ReviewsPackage extends EPackageImpl {
public static final EReference REVIEW__TOPICS = eINSTANCE.getReview_Topics();
/**
- * The meta object literal for the '<em><b>Review Items</b></em>' reference list feature.
+ * The meta object literal for the '<em><b>Items</b></em>' reference list feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
- public static final EReference REVIEW__REVIEW_ITEMS = eINSTANCE.getReview_ReviewItems();
+ public static final EReference REVIEW__ITEMS = eINSTANCE.getReview_Items();
/**
* The meta object literal for the '<em><b>Review Task</b></em>' containment reference feature.
@@ -1824,6 +1960,32 @@ public class ReviewsPackage extends EPackageImpl {
*/
public static final EAttribute FILE_ITEM__PATH = eINSTANCE.getFileItem_Path();
+ /**
+ * The meta object literal for the '{@link org.eclipse.mylyn.reviews.internal.core.model.ReviewItemSet <em>Review Item Set</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.mylyn.reviews.internal.core.model.ReviewItemSet
+ * @see org.eclipse.mylyn.reviews.internal.core.model.ReviewsPackage#getReviewItemSet()
+ * @generated
+ */
+ public static final EClass REVIEW_ITEM_SET = eINSTANCE.getReviewItemSet();
+
+ /**
+ * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute REVIEW_ITEM_SET__ID = eINSTANCE.getReviewItemSet_Id();
+
+ /**
+ * The meta object literal for the '<em><b>Items</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference REVIEW_ITEM_SET__ITEMS = eINSTANCE.getReviewItemSet_Items();
+
}
} //ReviewsPackage
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsSwitch.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsSwitch.java
index 664d789cf..a27b889b2 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsSwitch.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/reviews/internal/core/model/ReviewsSwitch.java
@@ -191,6 +191,17 @@ public class ReviewsSwitch<T> {
result = defaultCase(theEObject);
return result;
}
+ case ReviewsPackage.REVIEW_ITEM_SET: {
+ IReviewItemSet reviewItemSet = (IReviewItemSet) theEObject;
+ T result = caseReviewItemSet(reviewItemSet);
+ if (result == null)
+ result = caseReviewItem(reviewItemSet);
+ if (result == null)
+ result = caseReviewComponent(reviewItemSet);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
default:
return defaultCase(theEObject);
}
@@ -377,6 +388,21 @@ public class ReviewsSwitch<T> {
}
/**
+ * Returns the result of interpreting the object as an instance of '<em>Review Item Set</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>Review Item Set</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseReviewItemSet(IReviewItemSet object) {
+ return null;
+ }
+
+ /**
* Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
* <!-- begin-user-doc -->
* This implementation returns null;
diff --git a/gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/GerritTaskEditorPage.java b/gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/GerritTaskEditorPage.java
index 6d3460a6e..3f4837b28 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/GerritTaskEditorPage.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/GerritTaskEditorPage.java
@@ -15,6 +15,7 @@ import java.util.Set;
import org.eclipse.mylyn.internal.gerrit.core.GerritConnector;
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPage;
+import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPart;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditorPartDescriptor;
@@ -39,6 +40,12 @@ public class GerritTaskEditorPage extends AbstractTaskEditorPage {
it.remove();
}
}
+ descriptors.add(new TaskEditorPartDescriptor("review") { //$NON-NLS-1$
+ @Override
+ public AbstractTaskEditorPart createPart() {
+ return new ReviewSection();
+ }
+ });
return descriptors;
}
diff --git a/gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/ReviewSection.java b/gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/ReviewSection.java
new file mode 100644
index 000000000..7cb973d80
--- /dev/null
+++ b/gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/ReviewSection.java
@@ -0,0 +1,161 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Tasktop Technologies and others.
+ * 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
+ *
+ * Contributors:
+ * Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.gerrit.ui.editor;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.mylyn.internal.gerrit.core.GerritConnector;
+import org.eclipse.mylyn.internal.gerrit.core.client.GerritClient;
+import org.eclipse.mylyn.internal.gerrit.core.client.GerritException;
+import org.eclipse.mylyn.internal.gerrit.ui.GerritUiPlugin;
+import org.eclipse.mylyn.internal.tasks.ui.editors.AbstractTaskEditorSection;
+import org.eclipse.mylyn.reviews.core.model.IReview;
+import org.eclipse.mylyn.reviews.core.model.IReviewItem;
+import org.eclipse.mylyn.reviews.core.model.IReviewItemSet;
+import org.eclipse.mylyn.tasks.core.TaskRepository;
+import org.eclipse.mylyn.tasks.ui.TasksUi;
+import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author Steffen Pingel
+ */
+public class ReviewSection extends AbstractTaskEditorSection {
+
+ private class GetReviewJob extends Job {
+
+ private final TaskRepository repository;
+
+ private IReview review;
+
+ private final String reviewId;
+
+ public GetReviewJob(TaskRepository repository, String reviewId) {
+ super("Get Review");
+ this.repository = repository;
+ this.reviewId = reviewId;
+ }
+
+ public IReview getReview() {
+ return review;
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ GerritConnector connector = (GerritConnector) TasksUi.getRepositoryConnector(repository.getConnectorKind());
+ GerritClient client = connector.getClient(repository);
+ try {
+ review = client.getReview(reviewId, monitor);
+ } catch (GerritException e) {
+ return new Status(IStatus.ERROR, GerritUiPlugin.PLUGIN_ID, "Review retrieval failed", e);
+ }
+ return Status.OK_STATUS;
+ }
+
+ }
+
+ private Composite composite;
+
+ private GetReviewJob job;
+
+ private FormToolkit toolkit;
+
+ public ReviewSection() {
+ setPartName("Review");
+ }
+
+ @Override
+ public void dispose() {
+ job.cancel();
+ super.dispose();
+ }
+
+ @Override
+ public void initialize(AbstractTaskEditorPage taskEditorPage) {
+ super.initialize(taskEditorPage);
+ job = new GetReviewJob(taskEditorPage.getTaskRepository(), taskEditorPage.getTask().getTaskId());
+ job.addJobChangeListener(new JobChangeAdapter() {
+ @Override
+ public void done(final IJobChangeEvent event) {
+ if (event.getResult().isOK()) {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ if (getControl() != null && !getControl().isDisposed()) {
+ updateContent(((GetReviewJob) event.getJob()).getReview());
+ }
+ }
+
+ });
+ }
+ }
+ });
+ }
+
+ private void updateContent(IReview review) {
+ for (IReviewItem item : review.getItems()) {
+ if (item instanceof IReviewItemSet) {
+ createSubSection((IReviewItemSet) item);
+ }
+ }
+ getTaskEditorPage().reflow();
+ }
+
+ private void createSubSection(IReviewItemSet item) {
+ int style = ExpandableComposite.TWISTIE;
+ if (item.getItems().size() > 0) {
+ style |= ExpandableComposite.EXPANDED;
+ }
+ Section subSection = toolkit.createSection(composite, style);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(subSection);
+ subSection.setText(item.getName());
+
+ subSection.setTextClient(toolkit.createLabel(subSection, item.getId()));
+
+ if (item.getItems().size() > 0) {
+ List list = new List(subSection, SWT.NONE);
+ for (IReviewItem file : item.getItems()) {
+ list.add(file.getName());
+ }
+ subSection.setClient(list);
+ }
+ }
+
+ @Override
+ protected Control createContent(FormToolkit toolkit, Composite parent) {
+ this.toolkit = toolkit;
+
+ job.schedule();
+
+ composite = toolkit.createComposite(parent);
+ GridLayoutFactory.fillDefaults().applyTo(composite);
+ return composite;
+ }
+
+ @Override
+ protected boolean shouldExpandOnCreate() {
+ return true;
+ }
+
+}

Back to the top