|
42 | 42 | import org.eclipse.compare.CompareConfiguration; |
43 | 43 | import org.eclipse.compare.CompareEditorInput; |
44 | 44 | import org.eclipse.compare.CompareUI; |
| 45 | +import org.eclipse.compare.CompareViewerPane; |
45 | 46 | import org.eclipse.compare.CompareViewerSwitchingPane; |
46 | 47 | import org.eclipse.compare.IStreamContentAccessor; |
47 | 48 | import org.eclipse.compare.ITypedElement; |
| 49 | +import org.eclipse.compare.Splitter; |
48 | 50 | import org.eclipse.compare.contentmergeviewer.ContentMergeViewer; |
49 | 51 | import org.eclipse.compare.contentmergeviewer.TextMergeViewer; |
| 52 | +import org.eclipse.compare.internal.AbstractViewer; |
50 | 53 | import org.eclipse.compare.internal.BufferedResourceNode; |
| 54 | +import org.eclipse.compare.internal.CompareContentViewerSwitchingPane; |
51 | 55 | import org.eclipse.compare.internal.CompareMessages; |
52 | 56 | import org.eclipse.compare.internal.CompareUIPlugin; |
53 | 57 | import org.eclipse.compare.internal.IMergeViewerTestAdapter; |
|
76 | 80 | import org.eclipse.jface.viewers.ICheckStateProvider; |
77 | 81 | import org.eclipse.jface.viewers.ISelection; |
78 | 82 | import org.eclipse.jface.viewers.IStructuredSelection; |
| 83 | +import org.eclipse.jface.viewers.OpenEvent; |
79 | 84 | import org.eclipse.jface.viewers.StructuredSelection; |
80 | 85 | import org.eclipse.jface.viewers.Viewer; |
81 | 86 | import org.eclipse.osgi.util.NLS; |
@@ -665,7 +670,7 @@ public void acceptAllChanges() { |
665 | 670 | Set<Object> visited = new HashSet<>(); |
666 | 671 | Queue<Object> toVisit = new LinkedList<>(getStructuredSelection().toList()); |
667 | 672 | // To avoid problems with currently opened TextMergeViewer close whatever was opened |
668 | | -// fireOpen(new OpenEvent(this, StructuredSelection.EMPTY)); |
| 673 | + fireOpen(new OpenEvent(this, StructuredSelection.EMPTY)); |
669 | 674 | while (!toVisit.isEmpty()) { |
670 | 675 | Object o = toVisit.poll(); |
671 | 676 | if (!visited.contains(o)) { |
@@ -736,6 +741,48 @@ public Viewer getMergeContentViewer() { |
736 | 741 | } |
737 | 742 | } |
738 | 743 |
|
| 744 | + class CustomNullViewer extends AbstractViewer { |
| 745 | + |
| 746 | + private final Control fDummy; |
| 747 | + private final Composite parent; |
| 748 | + private boolean firstSetInput = true; |
| 749 | + |
| 750 | + public CustomNullViewer(Composite parent) { |
| 751 | + this.parent = parent; |
| 752 | + fDummy= new Tree(parent, SWT.NULL); |
| 753 | + |
| 754 | + } |
| 755 | + |
| 756 | + @Override |
| 757 | + public void setInput(Object input) { |
| 758 | + if (!parent.isDisposed() && firstSetInput) { |
| 759 | + CompareViewerPane.clearToolBar(parent); |
| 760 | + } |
| 761 | + super.setInput(input); |
| 762 | + firstSetInput = false; |
| 763 | + } |
| 764 | + |
| 765 | + @Override |
| 766 | + public Control getControl() { |
| 767 | + return fDummy; |
| 768 | + } |
| 769 | + } |
| 770 | + |
| 771 | + @Override |
| 772 | + protected CompareViewerSwitchingPane createContentViewerSwitchingPane(Splitter parent, int style, CompareEditorInput cei) { |
| 773 | + return new CompareContentViewerSwitchingPane(parent, style, cei) { |
| 774 | + @Override |
| 775 | + protected Viewer getViewer(Viewer oldViewer, Object input) { |
| 776 | + if (input instanceof MyDiffNode n) { |
| 777 | + if (ITypedElement.FOLDER_TYPE.equals(n.getId().getType())) { |
| 778 | + return new CustomNullViewer(this); |
| 779 | + } |
| 780 | + } |
| 781 | + return super.getViewer(oldViewer, input); |
| 782 | + } |
| 783 | + }; |
| 784 | + } |
| 785 | + |
739 | 786 | @Override |
740 | 787 | public Viewer createDiffViewer(Composite parent) { |
741 | 788 | fDiffViewer= new CustomDiffTreeViewer(parent, getCompareConfiguration()); |
|
0 commit comments