Fix 'diffLabel' IllegalArgumentException in add starters wizard

This commit is contained in:
aboyko
2024-03-06 12:51:25 -05:00
parent 1abd3e6dd2
commit 399f24ee88

View File

@@ -42,12 +42,16 @@ import java.util.function.Predicate;
import org.eclipse.compare.CompareConfiguration;
import org.eclipse.compare.CompareEditorInput;
import org.eclipse.compare.CompareUI;
import org.eclipse.compare.CompareViewerPane;
import org.eclipse.compare.CompareViewerSwitchingPane;
import org.eclipse.compare.IStreamContentAccessor;
import org.eclipse.compare.ITypedElement;
import org.eclipse.compare.Splitter;
import org.eclipse.compare.contentmergeviewer.ContentMergeViewer;
import org.eclipse.compare.contentmergeviewer.TextMergeViewer;
import org.eclipse.compare.internal.AbstractViewer;
import org.eclipse.compare.internal.BufferedResourceNode;
import org.eclipse.compare.internal.CompareContentViewerSwitchingPane;
import org.eclipse.compare.internal.CompareMessages;
import org.eclipse.compare.internal.CompareUIPlugin;
import org.eclipse.compare.internal.IMergeViewerTestAdapter;
@@ -76,6 +80,7 @@ import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ICheckStateProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.OpenEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.osgi.util.NLS;
@@ -665,7 +670,7 @@ public class ResourceCompareInput extends CompareEditorInput {
Set<Object> visited = new HashSet<>();
Queue<Object> toVisit = new LinkedList<>(getStructuredSelection().toList());
// To avoid problems with currently opened TextMergeViewer close whatever was opened
// fireOpen(new OpenEvent(this, StructuredSelection.EMPTY));
fireOpen(new OpenEvent(this, StructuredSelection.EMPTY));
while (!toVisit.isEmpty()) {
Object o = toVisit.poll();
if (!visited.contains(o)) {
@@ -736,6 +741,48 @@ public class ResourceCompareInput extends CompareEditorInput {
}
}
class CustomNullViewer extends AbstractViewer {
private final Control fDummy;
private final Composite parent;
private boolean firstSetInput = true;
public CustomNullViewer(Composite parent) {
this.parent = parent;
fDummy= new Tree(parent, SWT.NULL);
}
@Override
public void setInput(Object input) {
if (!parent.isDisposed() && firstSetInput) {
CompareViewerPane.clearToolBar(parent);
}
super.setInput(input);
firstSetInput = false;
}
@Override
public Control getControl() {
return fDummy;
}
}
@Override
protected CompareViewerSwitchingPane createContentViewerSwitchingPane(Splitter parent, int style, CompareEditorInput cei) {
return new CompareContentViewerSwitchingPane(parent, style, cei) {
@Override
protected Viewer getViewer(Viewer oldViewer, Object input) {
if (input instanceof MyDiffNode n) {
if (ITypedElement.FOLDER_TYPE.equals(n.getId().getType())) {
return new CustomNullViewer(this);
}
}
return super.getViewer(oldViewer, input);
}
};
}
@Override
public Viewer createDiffViewer(Composite parent) {
fDiffViewer= new CustomDiffTreeViewer(parent, getCompareConfiguration());