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) {
|
public void setMessage(@NotNull String message) {
|
||||||
myMessage = 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) {
|
public DiffRequestPanelImpl(@Nullable Project project, @Nullable Window window) {
|
||||||
myProcessor = new MyCacheDiffRequestChainProcessor(project, window);
|
myProcessor = new MyCacheDiffRequestChainProcessor(project, window);
|
||||||
myProcessor.init();
|
|
||||||
|
|
||||||
myPanel = new JPanel(new BorderLayout()) {
|
myPanel = new JPanel(new BorderLayout()) {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ public abstract class DiffRequestProcessor implements Disposable {
|
|||||||
|
|
||||||
@NotNull private DiffRequest myActiveRequest;
|
@NotNull private DiffRequest myActiveRequest;
|
||||||
|
|
||||||
@NotNull private ViewerState myState;
|
@Nullable private ViewerState myState;
|
||||||
|
|
||||||
public DiffRequestProcessor(@Nullable Project project) {
|
public DiffRequestProcessor(@Nullable Project project) {
|
||||||
this(project, new UserDataHolderBase());
|
this(project, new UserDataHolderBase());
|
||||||
@@ -106,14 +106,14 @@ public abstract class DiffRequestProcessor implements Disposable {
|
|||||||
public DiffRequestProcessor(@Nullable Project project, @NotNull UserDataHolder context) {
|
public DiffRequestProcessor(@Nullable Project project, @NotNull UserDataHolder context) {
|
||||||
myProject = project;
|
myProject = project;
|
||||||
|
|
||||||
myAvailableTools = DiffManagerEx.getInstance().getDiffTools();
|
|
||||||
myToolOrder = new LinkedList<DiffTool>();
|
|
||||||
|
|
||||||
myContext = new MyDiffContext(context);
|
myContext = new MyDiffContext(context);
|
||||||
myActiveRequest = NoDiffRequest.INSTANCE;
|
myActiveRequest = NoDiffRequest.INSTANCE;
|
||||||
|
|
||||||
mySettings = DiffSettingsHolder.getInstance().getSettings(myContext.getUserData(DiffUserDataKeysEx.PLACE));
|
mySettings = DiffSettingsHolder.getInstance().getSettings(myContext.getUserData(DiffUserDataKeysEx.PLACE));
|
||||||
|
|
||||||
|
myAvailableTools = DiffManagerEx.getInstance().getDiffTools();
|
||||||
|
myToolOrder = new LinkedList<DiffTool>(getToolOrderFromSettings(myAvailableTools));
|
||||||
|
|
||||||
// UI
|
// UI
|
||||||
|
|
||||||
myPanel = new JPanel(new BorderLayout());
|
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 != null) myMainPanel.add(bottomPanel, BorderLayout.SOUTH);
|
||||||
if (bottomPanel instanceof Disposable) Disposer.register(this, (Disposable)bottomPanel);
|
if (bottomPanel instanceof Disposable) Disposer.register(this, (Disposable)bottomPanel);
|
||||||
|
|
||||||
|
myState = new EmptyState();
|
||||||
|
myContentPanel.setContent(DiffUtil.createMessagePanel(NoDiffRequest.INSTANCE.getMessage()));
|
||||||
|
|
||||||
myOpenInEditorAction = new OpenInEditorAction(new Runnable() {
|
myOpenInEditorAction = new OpenInEditorAction(new Runnable() {
|
||||||
@Override
|
@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
|
// Update
|
||||||
//
|
//
|
||||||
@@ -966,6 +960,7 @@ public abstract class DiffRequestProcessor implements Disposable {
|
|||||||
//
|
//
|
||||||
|
|
||||||
private interface ViewerState {
|
private interface ViewerState {
|
||||||
|
@CalledInAwt
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
@CalledInAwt
|
@CalledInAwt
|
||||||
@@ -981,6 +976,34 @@ public abstract class DiffRequestProcessor implements Disposable {
|
|||||||
DiffTool getActiveTool();
|
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 {
|
private class ErrorState implements ViewerState {
|
||||||
@Nullable private final DiffTool myDiffTool;
|
@Nullable private final DiffTool myDiffTool;
|
||||||
@NotNull private final MessageDiffRequest myRequest;
|
@NotNull private final MessageDiffRequest myRequest;
|
||||||
@@ -999,6 +1022,7 @@ public abstract class DiffRequestProcessor implements Disposable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@CalledInAwt
|
||||||
public void init() {
|
public void init() {
|
||||||
myContentPanel.setContent(myViewer.getComponent());
|
myContentPanel.setContent(myViewer.getComponent());
|
||||||
|
|
||||||
@@ -1043,6 +1067,7 @@ public abstract class DiffRequestProcessor implements Disposable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@CalledInAwt
|
||||||
public void init() {
|
public void init() {
|
||||||
myContentPanel.setContent(myViewer.getComponent());
|
myContentPanel.setContent(myViewer.getComponent());
|
||||||
setTitle(myActiveRequest.getTitle());
|
setTitle(myActiveRequest.getTitle());
|
||||||
@@ -1100,6 +1125,7 @@ public abstract class DiffRequestProcessor implements Disposable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@CalledInAwt
|
||||||
public void init() {
|
public void init() {
|
||||||
myContentPanel.setContent(myWrapperViewer.getComponent());
|
myContentPanel.setContent(myWrapperViewer.getComponent());
|
||||||
setTitle(myActiveRequest.getTitle());
|
setTitle(myActiveRequest.getTitle());
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ public abstract class DiffWindowBase {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.build();
|
.build();
|
||||||
myProcessor.init();
|
|
||||||
myWrapper.setImage(ImageLoader.loadFromResource("/diff/Diff.png"));
|
myWrapper.setImage(ImageLoader.loadFromResource("/diff/Diff.png"));
|
||||||
Disposer.register(myWrapper, myProcessor);
|
Disposer.register(myWrapper, myProcessor);
|
||||||
|
|
||||||
|
|||||||
@@ -121,7 +121,6 @@ public class ChangesViewManager implements ChangesViewI, JDOMExternalizable, Pro
|
|||||||
Disposer.register(project, myView);
|
Disposer.register(project, myView);
|
||||||
myRepaintAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD, project);
|
myRepaintAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD, project);
|
||||||
myDiffDetails = new MyChangeProcessor(myProject);
|
myDiffDetails = new MyChangeProcessor(myProject);
|
||||||
myDiffDetails.init();
|
|
||||||
myTsl = new TreeSelectionListener() {
|
myTsl = new TreeSelectionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void valueChanged(TreeSelectionEvent e) {
|
public void valueChanged(TreeSelectionEvent e) {
|
||||||
|
|||||||
@@ -321,7 +321,6 @@ public class CommitChangeListDialog extends DialogWrapper implements CheckinProj
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
myDiffDetails.init();
|
|
||||||
|
|
||||||
myBrowserExtender.addToolbarActions(this);
|
myBrowserExtender.addToolbarActions(this);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user