mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
diff: do not require init() call on DiffRequestProcessor
* avoid potentially dangerous non-EDT calls * we require explicit call for updateRequest() anyway
This commit is contained in:
@@ -49,4 +49,8 @@ public abstract class MessageDiffRequest extends DiffRequest {
|
||||
public void setMessage(@NotNull String message) {
|
||||
myMessage = message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void onAssigned(boolean isAssigned) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,6 @@ public class DiffRequestPanelImpl implements DiffRequestPanel {
|
||||
|
||||
public DiffRequestPanelImpl(@Nullable Project project, @Nullable Window window) {
|
||||
myProcessor = new MyCacheDiffRequestChainProcessor(project, window);
|
||||
myProcessor.init();
|
||||
|
||||
myPanel = new JPanel(new BorderLayout()) {
|
||||
@Override
|
||||
|
||||
@@ -93,7 +93,7 @@ public abstract class DiffRequestProcessor implements Disposable {
|
||||
|
||||
@NotNull private DiffRequest myActiveRequest;
|
||||
|
||||
@NotNull private ViewerState myState;
|
||||
@Nullable private ViewerState myState;
|
||||
|
||||
public DiffRequestProcessor(@Nullable Project project) {
|
||||
this(project, new UserDataHolderBase());
|
||||
@@ -106,14 +106,14 @@ public abstract class DiffRequestProcessor implements Disposable {
|
||||
public DiffRequestProcessor(@Nullable Project project, @NotNull UserDataHolder context) {
|
||||
myProject = project;
|
||||
|
||||
myAvailableTools = DiffManagerEx.getInstance().getDiffTools();
|
||||
myToolOrder = new LinkedList<DiffTool>();
|
||||
|
||||
myContext = new MyDiffContext(context);
|
||||
myActiveRequest = NoDiffRequest.INSTANCE;
|
||||
|
||||
mySettings = DiffSettingsHolder.getInstance().getSettings(myContext.getUserData(DiffUserDataKeysEx.PLACE));
|
||||
|
||||
myAvailableTools = DiffManagerEx.getInstance().getDiffTools();
|
||||
myToolOrder = new LinkedList<DiffTool>(getToolOrderFromSettings(myAvailableTools));
|
||||
|
||||
// UI
|
||||
|
||||
myPanel = new JPanel(new BorderLayout());
|
||||
@@ -139,6 +139,8 @@ public abstract class DiffRequestProcessor implements Disposable {
|
||||
if (bottomPanel != null) myMainPanel.add(bottomPanel, BorderLayout.SOUTH);
|
||||
if (bottomPanel instanceof Disposable) Disposer.register(this, (Disposable)bottomPanel);
|
||||
|
||||
myState = new EmptyState();
|
||||
myContentPanel.setContent(DiffUtil.createMessagePanel(NoDiffRequest.INSTANCE.getMessage()));
|
||||
|
||||
myOpenInEditorAction = new OpenInEditorAction(new Runnable() {
|
||||
@Override
|
||||
@@ -148,14 +150,6 @@ public abstract class DiffRequestProcessor implements Disposable {
|
||||
});
|
||||
}
|
||||
|
||||
public void init() {
|
||||
myToolOrder.addAll(getToolOrderFromSettings(myAvailableTools));
|
||||
|
||||
myActiveRequest.onAssigned(true);
|
||||
myState = new ErrorState((MessageDiffRequest)myActiveRequest);
|
||||
myState.init();
|
||||
}
|
||||
|
||||
//
|
||||
// Update
|
||||
//
|
||||
@@ -966,6 +960,7 @@ public abstract class DiffRequestProcessor implements Disposable {
|
||||
//
|
||||
|
||||
private interface ViewerState {
|
||||
@CalledInAwt
|
||||
void init();
|
||||
|
||||
@CalledInAwt
|
||||
@@ -981,6 +976,34 @@ public abstract class DiffRequestProcessor implements Disposable {
|
||||
DiffTool getActiveTool();
|
||||
}
|
||||
|
||||
private static class EmptyState implements ViewerState {
|
||||
@Override
|
||||
public void init() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public JComponent getPreferredFocusedComponent() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Object getData(@NonNls String dataId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public DiffTool getActiveTool() {
|
||||
return ErrorDiffTool.INSTANCE;
|
||||
}
|
||||
}
|
||||
|
||||
private class ErrorState implements ViewerState {
|
||||
@Nullable private final DiffTool myDiffTool;
|
||||
@NotNull private final MessageDiffRequest myRequest;
|
||||
@@ -999,6 +1022,7 @@ public abstract class DiffRequestProcessor implements Disposable {
|
||||
}
|
||||
|
||||
@Override
|
||||
@CalledInAwt
|
||||
public void init() {
|
||||
myContentPanel.setContent(myViewer.getComponent());
|
||||
|
||||
@@ -1043,6 +1067,7 @@ public abstract class DiffRequestProcessor implements Disposable {
|
||||
}
|
||||
|
||||
@Override
|
||||
@CalledInAwt
|
||||
public void init() {
|
||||
myContentPanel.setContent(myViewer.getComponent());
|
||||
setTitle(myActiveRequest.getTitle());
|
||||
@@ -1100,6 +1125,7 @@ public abstract class DiffRequestProcessor implements Disposable {
|
||||
}
|
||||
|
||||
@Override
|
||||
@CalledInAwt
|
||||
public void init() {
|
||||
myContentPanel.setContent(myWrapperViewer.getComponent());
|
||||
setTitle(myActiveRequest.getTitle());
|
||||
|
||||
@@ -64,7 +64,6 @@ public abstract class DiffWindowBase {
|
||||
}
|
||||
})
|
||||
.build();
|
||||
myProcessor.init();
|
||||
myWrapper.setImage(ImageLoader.loadFromResource("/diff/Diff.png"));
|
||||
Disposer.register(myWrapper, myProcessor);
|
||||
|
||||
|
||||
@@ -121,7 +121,6 @@ public class ChangesViewManager implements ChangesViewI, JDOMExternalizable, Pro
|
||||
Disposer.register(project, myView);
|
||||
myRepaintAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD, project);
|
||||
myDiffDetails = new MyChangeProcessor(myProject);
|
||||
myDiffDetails.init();
|
||||
myTsl = new TreeSelectionListener() {
|
||||
@Override
|
||||
public void valueChanged(TreeSelectionEvent e) {
|
||||
|
||||
@@ -321,7 +321,6 @@ public class CommitChangeListDialog extends DialogWrapper implements CheckinProj
|
||||
});
|
||||
}
|
||||
});
|
||||
myDiffDetails.init();
|
||||
|
||||
myBrowserExtender.addToolbarActions(this);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user