Lines 19-29
Link Here
|
19 |
|
19 |
|
20 |
package org.eclipse.mylyn.reviews.r4e.ui.internal.commands; |
20 |
package org.eclipse.mylyn.reviews.r4e.ui.internal.commands; |
21 |
|
21 |
|
|
|
22 |
import java.io.IOException; |
23 |
import java.io.InputStream; |
24 |
import java.lang.reflect.InvocationTargetException; |
22 |
import java.util.ArrayList; |
25 |
import java.util.ArrayList; |
23 |
import java.util.Collections; |
26 |
import java.util.Collections; |
|
|
27 |
import java.util.Iterator; |
24 |
import java.util.List; |
28 |
import java.util.List; |
25 |
|
29 |
|
|
|
30 |
import org.eclipse.compare.IStreamContentAccessor; |
31 |
import org.eclipse.compare.ITypedElement; |
26 |
import org.eclipse.compare.rangedifferencer.RangeDifference; |
32 |
import org.eclipse.compare.rangedifferencer.RangeDifference; |
|
|
33 |
import org.eclipse.compare.structuremergeviewer.ICompareInput; |
27 |
import org.eclipse.core.commands.AbstractHandler; |
34 |
import org.eclipse.core.commands.AbstractHandler; |
28 |
import org.eclipse.core.commands.ExecutionEvent; |
35 |
import org.eclipse.core.commands.ExecutionEvent; |
29 |
import org.eclipse.core.commands.ExecutionException; |
36 |
import org.eclipse.core.commands.ExecutionException; |
Lines 33-40
Link Here
|
33 |
import org.eclipse.core.runtime.IAdaptable; |
40 |
import org.eclipse.core.runtime.IAdaptable; |
34 |
import org.eclipse.core.runtime.IProgressMonitor; |
41 |
import org.eclipse.core.runtime.IProgressMonitor; |
35 |
import org.eclipse.core.runtime.IStatus; |
42 |
import org.eclipse.core.runtime.IStatus; |
|
|
43 |
import org.eclipse.core.runtime.NullProgressMonitor; |
36 |
import org.eclipse.core.runtime.Status; |
44 |
import org.eclipse.core.runtime.Status; |
37 |
import org.eclipse.core.runtime.jobs.Job; |
45 |
import org.eclipse.core.runtime.jobs.Job; |
|
|
46 |
import org.eclipse.emf.common.util.URI; |
47 |
import org.eclipse.emf.compare.diff.metamodel.ComparisonResourceSetSnapshot; |
48 |
import org.eclipse.emf.compare.diff.metamodel.ComparisonResourceSnapshot; |
49 |
import org.eclipse.emf.compare.diff.metamodel.ComparisonSnapshot; |
50 |
import org.eclipse.emf.compare.diff.metamodel.DiffElement; |
51 |
import org.eclipse.emf.compare.diff.metamodel.DiffModel; |
52 |
import org.eclipse.emf.compare.diff.metamodel.DiffResourceSet; |
53 |
import org.eclipse.emf.compare.ui.ModelCompareInput; |
54 |
import org.eclipse.emf.compare.ui.internal.ModelComparator; |
55 |
import org.eclipse.emf.ecore.resource.Resource; |
56 |
import org.eclipse.emf.ecore.resource.ResourceSet; |
57 |
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; |
38 |
import org.eclipse.jdt.core.IJavaElement; |
58 |
import org.eclipse.jdt.core.IJavaElement; |
39 |
import org.eclipse.jdt.core.IJavaProject; |
59 |
import org.eclipse.jdt.core.IJavaProject; |
40 |
import org.eclipse.jdt.core.IPackageFragment; |
60 |
import org.eclipse.jdt.core.IPackageFragment; |
Lines 61-69
Link Here
|
61 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIDeltaContainer; |
81 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIDeltaContainer; |
62 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIFileContext; |
82 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIFileContext; |
63 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIModelController; |
83 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIModelController; |
|
|
84 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIModelPosition; |
64 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIReviewBasic; |
85 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIReviewBasic; |
65 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIReviewItem; |
86 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIReviewItem; |
66 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUITextPosition; |
|
|
67 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.preferences.PreferenceConstants; |
87 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.preferences.PreferenceConstants; |
68 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.utils.CommandUtils; |
88 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.utils.CommandUtils; |
69 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.utils.Diff; |
89 |
import org.eclipse.mylyn.reviews.r4e.ui.internal.utils.Diff; |
Lines 280-286
Link Here
|
280 |
R4EUIConstants.DELTAS_LABEL); |
300 |
R4EUIConstants.DELTAS_LABEL); |
281 |
uiFileContext.addChildren(deltaContainer); |
301 |
uiFileContext.addChildren(deltaContainer); |
282 |
} |
302 |
} |
283 |
deltaContainer.createDelta((R4EUITextPosition) position); |
303 |
deltaContainer.createDelta(position); |
284 |
} |
304 |
} |
285 |
} catch (OutOfSyncException e) { |
305 |
} catch (OutOfSyncException e) { |
286 |
R4EUIPlugin.Ftracer.traceError("Exception: " + e.toString() + " (" |
306 |
R4EUIPlugin.Ftracer.traceError("Exception: " + e.toString() + " (" |
Lines 331-336
Link Here
|
331 |
} |
351 |
} |
332 |
} |
352 |
} |
333 |
|
353 |
|
|
|
354 |
private Object retrieveInputFromSnapshot(final ComparisonSnapshot comparisonResult) { |
355 |
Object retrievedInput = null; |
356 |
if (comparisonResult instanceof ComparisonResourceSnapshot) { |
357 |
retrievedInput = ((ComparisonResourceSnapshot) comparisonResult).getDiff(); |
358 |
} else { |
359 |
retrievedInput = ((ComparisonResourceSetSnapshot) comparisonResult).getDiffResourceSet(); |
360 |
} |
361 |
return retrievedInput; |
362 |
} |
363 |
|
334 |
/** |
364 |
/** |
335 |
* Method updateFilesWithDeltas. |
365 |
* Method updateFilesWithDeltas. |
336 |
* |
366 |
* |
Lines 344-365
Link Here
|
344 |
final R4ECompareEditorInput input = CommandUtils.createCompareEditorInput(aFile.getBase(), aFile.getTarget()); |
374 |
final R4ECompareEditorInput input = CommandUtils.createCompareEditorInput(aFile.getBase(), aFile.getTarget()); |
345 |
input.prepareCompareInputNoEditor(); |
375 |
input.prepareCompareInputNoEditor(); |
346 |
|
376 |
|
347 |
final DiffUtils diffUtils = new DiffUtils(); |
377 |
if (isModelResource(input)) { |
348 |
final List<Diff> diffs; |
378 |
// Model part |
349 |
|
379 |
try { |
350 |
diffs = diffUtils.doDiff(false, true, input); |
380 |
input.run(new NullProgressMonitor()); |
351 |
|
381 |
} catch (InterruptedException e) { |
352 |
//Add Deltas from the list of differences |
382 |
// TODO Auto-generated catch block |
353 |
for (Diff diff : diffs) { |
383 |
e.printStackTrace(); |
354 |
IR4EUIPosition position = CommandUtils.getPosition(diff.getPosition(R4EUIConstants.LEFT_CONTRIBUTOR) |
384 |
} catch (InvocationTargetException e) { |
355 |
.getOffset(), diff.getPosition(R4EUIConstants.LEFT_CONTRIBUTOR).getLength(), |
385 |
// TODO Auto-generated catch block |
356 |
diff.getDocument(R4EUIConstants.LEFT_CONTRIBUTOR)); |
386 |
e.printStackTrace(); |
357 |
|
|
|
358 |
if (null == position || RangeDifference.NOCHANGE == diff.getKind()) { |
359 |
continue; //Cannot resolve position for this delta or no change |
360 |
} |
387 |
} |
361 |
aFile.getPositions().add(position); |
388 |
Object diffModel = null; |
|
|
389 |
// Model |
390 |
final ModelComparator comparator; |
391 |
Object in = input.getCompareResult(); |
392 |
if (in instanceof ICompareInput) { |
393 |
comparator = ModelComparator.getComparator(input.getCompareConfiguration(), (ICompareInput) in); |
394 |
} else { |
395 |
comparator = ModelComparator.getComparator(input.getCompareConfiguration()); |
396 |
} |
397 |
|
398 |
ComparisonSnapshot snapshot = null; |
399 |
if (in instanceof ModelCompareInput) { |
400 |
snapshot = ((ModelCompareInput) in).getComparisonSnapshot(); |
401 |
} else if (in instanceof ComparisonSnapshot) { |
402 |
snapshot = (ComparisonSnapshot) in; |
403 |
} |
404 |
|
405 |
if (snapshot instanceof ComparisonResourceSnapshot) { |
406 |
diffModel = ((ComparisonResourceSnapshot) snapshot).getDiff(); |
407 |
} else if (snapshot instanceof ComparisonResourceSetSnapshot) { |
408 |
diffModel = ((ComparisonResourceSetSnapshot) snapshot).getDiffResourceSet(); |
409 |
} else if (comparator.getComparisonResult() != null) { |
410 |
diffModel = retrieveInputFromSnapshot(comparator.getComparisonResult()); |
411 |
} else if (in instanceof ModelCompareInput) { |
412 |
diffModel = ((ModelCompareInput) in).getDiff(); |
413 |
} else if (in instanceof ICompareInput) { |
414 |
comparator.loadResources((ICompareInput) in); |
415 |
diffModel = retrieveInputFromSnapshot(comparator.compareSilentlyInThreadUI(input.getCompareConfiguration())); |
416 |
} |
417 |
|
418 |
if (diffModel instanceof DiffModel) { |
419 |
for (DiffElement adiff : ((DiffModel) diffModel).getDifferences()) { |
420 |
R4EUIModelPosition position = CommandUtils.getPosition(adiff); |
421 |
aFile.getPositions().add(position); |
422 |
} |
423 |
} else if (diffModel instanceof DiffResourceSet) { |
424 |
Iterator<DiffModel> it = ((DiffResourceSet) diffModel).getDiffModels().iterator(); |
425 |
//Add Deltas from the list of differences |
426 |
while (it.hasNext()) { |
427 |
DiffModel currentDiffModel = it.next(); |
428 |
for (DiffElement adiff : currentDiffModel.getDifferences()) { |
429 |
R4EUIModelPosition position = CommandUtils.getPosition(adiff); |
430 |
aFile.getPositions().add(position); |
431 |
} |
432 |
} |
433 |
} |
434 |
|
435 |
} else { |
436 |
|
437 |
final DiffUtils diffUtils = new DiffUtils(); |
438 |
final List<Diff> diffs; |
439 |
|
440 |
diffs = diffUtils.doDiff(false, true, input); |
441 |
|
442 |
//Add Deltas from the list of differences |
443 |
for (Diff diff : diffs) { |
444 |
IR4EUIPosition position = CommandUtils.getPosition(diff.getPosition(R4EUIConstants.LEFT_CONTRIBUTOR) |
445 |
.getOffset(), diff.getPosition(R4EUIConstants.LEFT_CONTRIBUTOR).getLength(), |
446 |
diff.getDocument(R4EUIConstants.LEFT_CONTRIBUTOR)); |
447 |
|
448 |
if (null == position || RangeDifference.NOCHANGE == diff.getKind()) { |
449 |
continue; //Cannot resolve position for this delta or no change |
450 |
} |
451 |
aFile.getPositions().add(position); |
452 |
} |
362 |
} |
453 |
} |
|
|
454 |
|
455 |
} |
456 |
|
457 |
private boolean isModelResource(final R4ECompareEditorInput input) throws CoreException { |
458 |
ITypedElement elt = input.getLeftElement(); |
459 |
if (elt instanceof IStreamContentAccessor) { |
460 |
InputStream is = ((IStreamContentAccessor) elt).getContents(); |
461 |
ResourceSet resourceSet = new ResourceSetImpl(); |
462 |
Resource resource = resourceSet.createResource(URI.createURI("test.resource.type")); |
463 |
try { |
464 |
resource.load(is, Collections.EMPTY_MAP); |
465 |
resource.unload(); |
466 |
return true; |
467 |
} catch (IOException e) { |
468 |
} |
469 |
} |
470 |
return false; |
363 |
} |
471 |
} |
364 |
|
472 |
|
365 |
/** |
473 |
/** |