Skip to content

Commit 874a1d2

Browse files
show diff in "replace with local history" dialog on selection change
1 parent 6dd6732 commit 874a1d2

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

team/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/ReplaceLocalHistory.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,27 @@
1515

1616
import org.eclipse.compare.CompareConfiguration;
1717
import org.eclipse.compare.CompareUI;
18+
import org.eclipse.compare.CompareViewerPane;
1819
import org.eclipse.compare.structuremergeviewer.ICompareInput;
1920
import org.eclipse.core.resources.IFile;
2021
import org.eclipse.core.resources.IFileState;
2122
import org.eclipse.core.runtime.CoreException;
2223
import org.eclipse.jface.action.IAction;
24+
import org.eclipse.jface.action.IToolBarManager;
25+
import org.eclipse.swt.SWT;
26+
import org.eclipse.swt.events.SelectionAdapter;
27+
import org.eclipse.swt.events.SelectionEvent;
28+
import org.eclipse.swt.widgets.Composite;
29+
import org.eclipse.swt.widgets.Control;
30+
import org.eclipse.swt.widgets.Event;
2331
import org.eclipse.swt.widgets.Shell;
32+
import org.eclipse.swt.widgets.Tree;
2433
import org.eclipse.team.internal.ui.TeamUIMessages;
2534
import org.eclipse.team.internal.ui.TeamUIPlugin;
2635
import org.eclipse.team.internal.ui.Utils;
2736
import org.eclipse.team.ui.history.HistoryPageCompareEditorInput;
2837
import org.eclipse.team.ui.history.IHistoryPageSource;
38+
import org.eclipse.ui.part.IPage;
2939

3040
public class ReplaceLocalHistory extends ShowLocalHistory {
3141

@@ -54,6 +64,48 @@ public boolean isEditionSelectionDialog() {
5464
public String getOKButtonLabel() {
5565
return TeamUIMessages.ReplaceLocalHistory_0;
5666
}
67+
68+
@Override
69+
protected IPage createPage(CompareViewerPane parent, IToolBarManager toolBarManager) {
70+
var page = super.createPage(parent, toolBarManager);
71+
Tree tree = getTree(page);
72+
runDefaultSelectionEventOnSelectionChange(tree);
73+
return page;
74+
}
75+
76+
private void runDefaultSelectionEventOnSelectionChange(Tree tree) {
77+
if (tree == null) {
78+
return;
79+
}
80+
tree.addSelectionListener(new SelectionAdapter() {
81+
82+
@Override
83+
public void widgetSelected(SelectionEvent e) {
84+
if (tree.getSelectionCount() != 1) {
85+
return;
86+
}
87+
Event event = new Event();
88+
event.item = e.item;
89+
tree.notifyListeners(SWT.DefaultSelection, event);
90+
}
91+
});
92+
}
93+
private Tree getTree(IPage page) {
94+
Control control = page.getControl();
95+
if (!(control instanceof Composite composite)) {
96+
return null;
97+
}
98+
Control[] children = composite.getChildren();
99+
if (children == null) {
100+
return null;
101+
}
102+
for (Control child : children) {
103+
if (child instanceof Tree t) {
104+
return t;
105+
}
106+
}
107+
return null;
108+
}
57109
@Override
58110
public boolean okPressed() {
59111
try {

0 commit comments

Comments
 (0)