410397: users with existing tasks will not see update notifications
Change-Id: I21cfabe9ef177c63b999bc6e2d910d1bbf12b855
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=410397
diff --git a/org.eclipse.mylyn.reviews.ui/src/org/eclipse/mylyn/reviews/ui/spi/editor/AbstractReviewTaskEditorPage.java b/org.eclipse.mylyn.reviews.ui/src/org/eclipse/mylyn/reviews/ui/spi/editor/AbstractReviewTaskEditorPage.java
index 2aa0688..b076ace 100644
--- a/org.eclipse.mylyn.reviews.ui/src/org/eclipse/mylyn/reviews/ui/spi/editor/AbstractReviewTaskEditorPage.java
+++ b/org.eclipse.mylyn.reviews.ui/src/org/eclipse/mylyn/reviews/ui/spi/editor/AbstractReviewTaskEditorPage.java
@@ -11,19 +11,27 @@
package org.eclipse.mylyn.reviews.ui.spi.editor;
+import java.io.File;
import java.util.Date;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.mylyn.internal.tasks.ui.actions.SynchronizeEditorAction;
+import org.eclipse.mylyn.internal.tasks.ui.editors.Messages;
import org.eclipse.mylyn.reviews.core.model.IRepository;
import org.eclipse.mylyn.reviews.core.model.IReview;
import org.eclipse.mylyn.reviews.core.spi.ReviewsConnector;
import org.eclipse.mylyn.reviews.core.spi.remote.emf.RemoteEmfConsumer;
import org.eclipse.mylyn.reviews.core.spi.remote.emf.RemoteEmfObserver;
import org.eclipse.mylyn.reviews.core.spi.remote.review.IReviewRemoteFactoryProvider;
+import org.eclipse.mylyn.reviews.spi.edit.remote.AbstractRemoteEditFactoryProvider;
import org.eclipse.mylyn.reviews.spi.edit.remote.review.ReviewsRemoteEditFactoryProvider;
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPage;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
/**
* Marks task editor as providing Review model for extending classes.
@@ -43,12 +51,35 @@
@Override
public void init(final IEditorSite site, final IEditorInput input) {
AbstractReviewTaskEditorPage.super.init(site, input);
+
+ checkIfModelIsCached();
+
reviewConsumer = getFactoryProvider().getReviewFactory().getConsumerForLocalKey(getFactoryProvider().getRoot(),
getTask().getTaskId());
reviewConsumer.addObserver(reviewObserver);
reviewConsumer.open();
}
+ private void checkIfModelIsCached() {
+ AbstractRemoteEditFactoryProvider factoryProvider = (AbstractRemoteEditFactoryProvider) getFactoryProvider();
+ String reviewPath = factoryProvider.getDataLocator()
+ .getFilePath(factoryProvider.getContainerSegment(), "Review", getTask().getTaskId(), "reviews")
+ .toOSString();
+ if (!new File(reviewPath).exists()) {
+ getTaskEditor().setMessage(Messages.AbstractTaskEditorPage_Synchronize_to_retrieve_task_data,
+ IMessageProvider.WARNING, new HyperlinkAdapter() {
+ @Override
+ public void linkActivated(HyperlinkEvent e) {
+ SynchronizeEditorAction synchronizeEditorAction = new SynchronizeEditorAction();
+ synchronizeEditorAction.selectionChanged(new StructuredSelection(getTaskEditor()));
+ if (synchronizeEditorAction != null) {
+ synchronizeEditorAction.run();
+ }
+ }
+ });
+ }
+ }
+
public IReviewRemoteFactoryProvider getFactoryProvider() {
return (IReviewRemoteFactoryProvider) ((ReviewsConnector) getConnector()).getReviewClient(getTaskRepository())
.getFactoryProvider();