mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Refactoring
GitOrigin-RevId: 972c43b3dc74a6287cec0eb3d43b4a4ec663e74f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
ccee533c85
commit
701fc823e5
@@ -22,71 +22,56 @@ import java.awt.*;
|
||||
import java.util.Objects;
|
||||
import java.util.function.BooleanSupplier;
|
||||
|
||||
class LightEditFrameWrapper implements Disposable {
|
||||
class LightEditFrameWrapper extends ProjectFrameHelper implements Disposable {
|
||||
|
||||
private final LightEditPanel myLightEditPanel;
|
||||
private final ProjectFrameHelper myProjectFrameHelper;
|
||||
private BooleanSupplier myCloseHandler;
|
||||
private final BooleanSupplier myCloseHandler;
|
||||
|
||||
LightEditFrameWrapper(@NotNull LightEditPanel lightEditPanel) {
|
||||
myLightEditPanel = lightEditPanel;
|
||||
myProjectFrameHelper = allocateFrame();
|
||||
Disposer.register(this, myProjectFrameHelper);
|
||||
myProjectFrameHelper.getFrame().setJMenuBar(new LightEditMenuBar());
|
||||
private LightEditPanel myEditPanel;
|
||||
|
||||
LightEditFrameWrapper(@NotNull IdeFrameImpl frame, @NotNull BooleanSupplier closeHandler) {
|
||||
super(frame, null);
|
||||
getFrame().setJMenuBar(new LightEditMenuBar());
|
||||
myCloseHandler = closeHandler;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
LightEditPanel getLightEditPanel() {
|
||||
return myLightEditPanel;
|
||||
return myEditPanel;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private ProjectFrameHelper allocateFrame() {
|
||||
return ((WindowManagerImpl)WindowManager.getInstance()).allocateFrame(LightEditUtil.getProject(), () -> {
|
||||
return new ProjectFrameHelper(ProjectFrameAllocatorKt.createNewProjectFrame(), null) {
|
||||
@NotNull
|
||||
@Override
|
||||
protected IdeRootPane createIdeRootPane() {
|
||||
return new LightEditRootPane(getFrame(), this, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void installDefaultProjectStatusBarWidgets(@NotNull Project project) {
|
||||
IdeStatusBarImpl statusBar = Objects.requireNonNull(getStatusBar());
|
||||
addWidget(project, statusBar, new LightEditPositionWidget(myLightEditPanel.getEditorManager()),
|
||||
StatusBar.Anchors.before(IdeMessagePanel.FATAL_ERROR));
|
||||
addWidget(project, statusBar, new LightEditAutosaveWidget(myLightEditPanel.getEditorManager()),
|
||||
StatusBar.Anchors.before(IdeMessagePanel.FATAL_ERROR));
|
||||
statusBar.updateWidgets();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected CloseProjectWindowHelper createCloseProjectWindowHelper() {
|
||||
return new CloseProjectWindowHelper() {
|
||||
@Override
|
||||
public void windowClosing(@Nullable Project project) {
|
||||
if (myCloseHandler.getAsBoolean()) {
|
||||
super.windowClosing(project);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
});
|
||||
@Override
|
||||
protected IdeRootPane createIdeRootPane() {
|
||||
return new LightEditRootPane(getFrame(), this, this);
|
||||
}
|
||||
|
||||
public void setTitle(@NotNull String title) {
|
||||
IdeFrameImpl frame = myProjectFrameHelper.getFrame();
|
||||
frame.setTitle(title);
|
||||
@Override
|
||||
protected void installDefaultProjectStatusBarWidgets(@NotNull Project project) {
|
||||
LightEditorManager editorManager = LightEditService.getInstance().getEditorManager();
|
||||
IdeStatusBarImpl statusBar = Objects.requireNonNull(getStatusBar());
|
||||
addWidget(this, statusBar, new LightEditPositionWidget(editorManager),
|
||||
StatusBar.Anchors.before(IdeMessagePanel.FATAL_ERROR));
|
||||
addWidget(this, statusBar, new LightEditAutosaveWidget(editorManager),
|
||||
StatusBar.Anchors.before(IdeMessagePanel.FATAL_ERROR));
|
||||
statusBar.updateWidgets();
|
||||
}
|
||||
|
||||
public void setOnCloseHandler(@NotNull BooleanSupplier closeHandler) {
|
||||
myCloseHandler = closeHandler;
|
||||
@NotNull
|
||||
@Override
|
||||
protected CloseProjectWindowHelper createCloseProjectWindowHelper() {
|
||||
return new CloseProjectWindowHelper() {
|
||||
@Override
|
||||
public void windowClosing(@Nullable Project project) {
|
||||
if (myCloseHandler.getAsBoolean()) {
|
||||
super.windowClosing(project);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
Disposer.dispose(myEditPanel);
|
||||
}
|
||||
|
||||
private class LightEditRootPane extends IdeRootPane {
|
||||
@@ -97,7 +82,8 @@ class LightEditFrameWrapper implements Disposable {
|
||||
@NotNull
|
||||
@Override
|
||||
protected Component getCenterComponent(@NotNull JFrame frame, @NotNull Disposable parentDisposable) {
|
||||
return myLightEditPanel;
|
||||
myEditPanel = new LightEditPanel();
|
||||
return myEditPanel;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -124,4 +110,10 @@ class LightEditFrameWrapper implements Disposable {
|
||||
protected void deinstallNorthComponents() {
|
||||
}
|
||||
}
|
||||
|
||||
static LightEditFrameWrapper allocate(@NotNull BooleanSupplier closeHandler) {
|
||||
return (LightEditFrameWrapper)((WindowManagerImpl)WindowManager.getInstance()).allocateFrame(
|
||||
LightEditUtil.getProject(),
|
||||
() -> new LightEditFrameWrapper(ProjectFrameAllocatorKt.createNewProjectFrame(), closeHandler));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,19 +15,14 @@ public class LightEditPanel extends JPanel implements Disposable {
|
||||
private final LightEditorManager myEditorManager;
|
||||
private final LightEditTabs myTabs;
|
||||
|
||||
public LightEditPanel(LightEditorManager editorManager) {
|
||||
myEditorManager = editorManager;
|
||||
public LightEditPanel() {
|
||||
myEditorManager = LightEditService.getInstance().getEditorManager();
|
||||
setLayout(new BorderLayout());
|
||||
myTabs = new LightEditTabs(this, myEditorManager);
|
||||
add(myTabs, BorderLayout.CENTER);
|
||||
Disposer.register(this, myTabs);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
LightEditorManager getEditorManager() {
|
||||
return myEditorManager;
|
||||
}
|
||||
|
||||
public LightEditTabs getTabs() {
|
||||
return myTabs;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ public class LightEditService implements Disposable, LightEditorListener, Persis
|
||||
private static final Logger LOG = Logger.getInstance(LightEditService.class);
|
||||
|
||||
private LightEditFrameWrapper myFrameWrapper;
|
||||
private boolean myWrapperIsStale;
|
||||
private final LightEditorManager myEditorManager;
|
||||
private final LightEditConfiguration myConfiguration = new LightEditConfiguration();
|
||||
|
||||
@@ -55,19 +54,20 @@ public class LightEditService implements Disposable, LightEditorListener, Persis
|
||||
}
|
||||
|
||||
private void init() {
|
||||
if (myFrameWrapper == null || myWrapperIsStale) {
|
||||
final LightEditPanel editorPanel = new LightEditPanel(myEditorManager);
|
||||
myFrameWrapper = new LightEditFrameWrapper(editorPanel);
|
||||
myFrameWrapper.setOnCloseHandler(()-> closeEditorWindow());
|
||||
myWrapperIsStale = false;
|
||||
if (myFrameWrapper == null) {
|
||||
myFrameWrapper = LightEditFrameWrapper.allocate(()->closeEditorWindow());
|
||||
LOG.info("Frame created");
|
||||
}
|
||||
else {
|
||||
myFrameWrapper.getFrame().setVisible(true);
|
||||
LOG.info("Window opened");
|
||||
}
|
||||
}
|
||||
|
||||
public void showEditorWindow() {
|
||||
if (!ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
init();
|
||||
myFrameWrapper.setTitle(getAppName());
|
||||
myFrameWrapper.getFrame().setTitle(getAppName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,11 +127,10 @@ public class LightEditService implements Disposable, LightEditorListener, Persis
|
||||
|
||||
public boolean closeEditorWindow() {
|
||||
if (canClose()) {
|
||||
disposeEditorPanel();
|
||||
myWrapperIsStale = true;
|
||||
Disposer.dispose(myEditorManager);
|
||||
myFrameWrapper.getFrame().setVisible(false);
|
||||
LOG.info("Window closed");
|
||||
if (ProjectManager.getInstance().getOpenProjects().length == 0 && WelcomeFrame.getInstance() == null) {
|
||||
disposeFrameWrapper();
|
||||
LOG.info("No open projects or welcome frame, exiting");
|
||||
try {
|
||||
ApplicationManager.getApplication().exit();
|
||||
@@ -167,27 +166,27 @@ public class LightEditService implements Disposable, LightEditorListener, Persis
|
||||
}
|
||||
|
||||
public LightEditPanel getEditPanel() {
|
||||
assert !Disposer.isDisposed(myFrameWrapper.getLightEditPanel());
|
||||
return myFrameWrapper.getLightEditPanel();
|
||||
}
|
||||
|
||||
private void disposeEditorPanel() {
|
||||
LightEditPanel editorPanel = getEditPanel();
|
||||
Disposer.dispose(editorPanel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
if (myFrameWrapper != null) {
|
||||
disposeEditorPanel();
|
||||
Disposer.dispose(myFrameWrapper);
|
||||
LOG.info("Frame disposed");
|
||||
disposeFrameWrapper();
|
||||
}
|
||||
}
|
||||
|
||||
private void disposeFrameWrapper() {
|
||||
Disposer.dispose(myFrameWrapper);
|
||||
myFrameWrapper = null;
|
||||
LOG.info("Frame disposed");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterSelect(@Nullable LightEditorInfo editorInfo) {
|
||||
if (myFrameWrapper != null && !myWrapperIsStale) {
|
||||
myFrameWrapper.setTitle(getAppName() + (editorInfo != null ? ": " + editorInfo.getFile().getPresentableUrl() : ""));
|
||||
if (myFrameWrapper != null) {
|
||||
myFrameWrapper.getFrame().setTitle(getAppName() + (editorInfo != null ? ": " + editorInfo.getFile().getPresentableUrl() : ""));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user