diff options
4 files changed, 37 insertions, 3 deletions
diff --git a/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskDataHandler.java b/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskDataHandler.java index fa061975c..e3e810ac3 100644 --- a/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskDataHandler.java +++ b/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskDataHandler.java @@ -188,6 +188,15 @@ public class GerritTaskDataHandler extends AbstractTaskDataHandler { setAttributeValue(data, schema.CAN_PUBLISH, Boolean.toString(canPublish)); } + @Override + public void migrateTaskData(TaskRepository repository, TaskData taskData) { + super.migrateTaskData(repository, taskData); + //Support 1.1.0 commenting capability see https://bugs.eclipse.org/bugs/show_bug.cgi?id=344108 + if (taskData.getRoot().getAttribute(GerritTaskSchema.getDefault().NEW_COMMENT.getKey()) == null) { + taskData.getRoot().createAttribute(GerritTaskSchema.getDefault().NEW_COMMENT.getKey()); + } + } + public void updateTaskData(TaskRepository repository, TaskData data, GerritQueryResult changeInfo) { GerritQueryResultSchema schema = GerritQueryResultSchema.getDefault(); setAttributeValue(data, schema.KEY, changeInfo.getId().substring(0, Math.min(9, changeInfo.getId().length()))); diff --git a/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskSchema.java b/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskSchema.java index fc38355be..203a3bf3b 100644 --- a/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskSchema.java +++ b/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritTaskSchema.java @@ -41,4 +41,5 @@ public class GerritTaskSchema extends GerritQueryResultSchema { public final Field CAN_PUBLISH = createField("org.eclipse.gerrit.CanPublish", "Publish", TaskAttribute.TYPE_BOOLEAN); + public final Field NEW_COMMENT = inheritFrom(parent.NEW_COMMENT).create(); } diff --git a/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/PatchSetSection.java b/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/PatchSetSection.java index bacead720..54522f433 100644 --- a/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/PatchSetSection.java +++ b/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/editor/PatchSetSection.java @@ -21,7 +21,9 @@ import java.util.List; import org.eclipse.compare.CompareConfiguration; import org.eclipse.compare.CompareUI; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.IJobChangeEvent; import org.eclipse.core.runtime.jobs.Job; @@ -64,10 +66,13 @@ import org.eclipse.mylyn.internal.gerrit.ui.operations.RestoreDialog; import org.eclipse.mylyn.internal.gerrit.ui.operations.SubmitDialog; import org.eclipse.mylyn.internal.reviews.ui.compare.FileItemCompareEditorInput; import org.eclipse.mylyn.internal.tasks.ui.editors.EditorUtil; +import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; import org.eclipse.mylyn.reviews.core.model.IFileItem; import org.eclipse.mylyn.reviews.core.model.IReviewItem; import org.eclipse.mylyn.reviews.core.model.IReviewItemSet; import org.eclipse.mylyn.reviews.internal.core.model.ReviewsPackage; +import org.eclipse.mylyn.tasks.core.data.TaskAttribute; +import org.eclipse.mylyn.tasks.ui.TasksUi; import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPage; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; @@ -406,8 +411,21 @@ public class PatchSetSection extends AbstractGerritSection { } protected void doPublish(PatchSetPublishDetail publishDetail) { - PublishDialog dialog = new PublishDialog(getShell(), getTask(), publishDetail, addedDrafts); + TaskAttribute comment = getTaskData().getRoot().getAttribute(TaskAttribute.COMMENT_NEW); + String editorCommentText = comment != null ? comment.getValue() : ""; + PublishDialog dialog = new PublishDialog(getShell(), getTask(), publishDetail, addedDrafts, editorCommentText); openOperationDialog(dialog); + if (dialog.getReturnCode() == Window.OK && comment != null) { + comment.clearValues(); + getTaskEditorPage().doSave(new NullProgressMonitor()); + try { + TasksUi.getTaskDataManager().discardEdits(getTask()); + } catch (CoreException e) { + Status status = new Status(IStatus.ERROR, GerritUiPlugin.PLUGIN_ID, + "Error while clearing task status.", e); + TasksUiInternal.displayStatus("Clear outgoing task status failed", status); + } + } } protected void doFetch(ChangeDetail changeDetail, PatchSetDetail patchSetDetail) { diff --git a/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/operations/PublishDialog.java b/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/operations/PublishDialog.java index 6a5c8e4cf..8cba4810f 100644 --- a/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/operations/PublishDialog.java +++ b/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/operations/PublishDialog.java @@ -61,10 +61,14 @@ public class PublishDialog extends GerritOperationDialog { private final int addedDrafts; - public PublishDialog(Shell parentShell, ITask task, PatchSetPublishDetail publishDetail, int addedDrafts) { + private final String editorCommentText; + + public PublishDialog(Shell parentShell, ITask task, PatchSetPublishDetail publishDetail, int addedDrafts, + String editorCommentText) { super(parentShell, task); this.publishDetail = publishDetail; this.addedDrafts = addedDrafts; + this.editorCommentText = editorCommentText; this.approvalButtons = new ArrayList<Button>(); setNeedsConfig(true); } @@ -105,7 +109,9 @@ public class PublishDialog extends GerritOperationDialog { approvalComposite.setLayout(layout); messageEditor = createRichTextEditor(composite, ""); - GridDataFactory.fillDefaults().grab(true, true).minSize(400, 150).applyTo(messageEditor.getControl()); + GridDataFactory.fillDefaults().grab(true, true).hint(600, 200).applyTo(messageEditor.getControl()); + messageEditor.setText(editorCommentText); + messageEditor.getViewer().setSelectedRange(editorCommentText.length(), 0); messageEditor.getControl().setFocus(); statusLabel = new Label(composite, SWT.NONE); |