View | Details | Raw Unified | Return to bug 143354 | Differences between
and this patch

Collapse All | Expand All

(-)compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java (-36 / +1 lines)
Lines 42-48 Link Here
42
import org.eclipse.jface.viewers.DecoratingLabelProvider;
42
import org.eclipse.jface.viewers.DecoratingLabelProvider;
43
import org.eclipse.jface.viewers.DoubleClickEvent;
43
import org.eclipse.jface.viewers.DoubleClickEvent;
44
import org.eclipse.jface.viewers.ICheckStateListener;
44
import org.eclipse.jface.viewers.ICheckStateListener;
45
import org.eclipse.jface.viewers.ICheckable;
46
import org.eclipse.jface.viewers.IDoubleClickListener;
45
import org.eclipse.jface.viewers.IDoubleClickListener;
47
import org.eclipse.jface.viewers.ISelection;
46
import org.eclipse.jface.viewers.ISelection;
48
import org.eclipse.jface.viewers.ISelectionChangedListener;
47
import org.eclipse.jface.viewers.ISelectionChangedListener;
Lines 335-375 Link Here
335
		fTreeViewer.setSorter(new WorkbenchViewerSorter());
334
		fTreeViewer.setSorter(new WorkbenchViewerSorter());
336
		fTreeViewer.addCheckStateListener(new ICheckStateListener() {
335
		fTreeViewer.addCheckStateListener(new ICheckStateListener() {
337
			public void checkStateChanged(CheckStateChangedEvent event) {
336
			public void checkStateChanged(CheckStateChangedEvent event) {
338
				Object obj = event.getElement();
337
				fTreeViewer.setSubtreeChecked(event.getElement(),event.getChecked());
339
				ICheckable checked = event.getCheckable();
340
				DiffProject proj = null;
341
				if (obj instanceof DiffProject){
342
					proj = (DiffProject) obj;
343
					// Check to see if any of the Diffs contained by the DiffProject
344
					// have their diff problems set
345
					Object[] diffs = proj.getChildren(null);
346
					for (int i= 0; i<diffs.length; i++) {
347
					if (((Diff) diffs[i]).containsProblems()){
348
						checked.setChecked(obj, false);
349
							break;
350
						}
351
					}
352
				} else if (obj instanceof Diff){
353
					proj = ((Diff) obj).getProject();
354
					// If Diff has any diff problems set, at least one hunk underneath 
355
					// does not match - so don't allow entire tree to be checked
356
					if (((Diff) obj).containsProblems()){
357
						checked.setChecked(obj, false);
358
					}
359
				} else if (obj instanceof Hunk){
360
					Diff diff = (Diff) ((Hunk) obj).getParent(null);
361
					proj = diff.getProject();
362
					// Check to see if this hunk has any problems OR
363
					// if its parent has any problems
364
					if( diff.getDiffProblem() ||
365
						((Hunk) obj).getHunkProblem()){
366
						checked.setChecked(obj, false);
367
					}
368
				}
369
				if (proj!= null &&
370
				   !proj.getProject().exists()){
371
					checked.setChecked(obj, false);
372
				}
373
				updateEnablements();
338
				updateEnablements();
374
			}
339
			}
375
		});
340
		});

Return to bug 143354