mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
reduce number of public dangerous methods
This commit is contained in:
+16
-16
@@ -253,22 +253,23 @@ public class ApplicationImpl extends PlatformComponentManagerImpl implements App
|
||||
|
||||
private boolean disposeSelf(final boolean checkCanCloseProject) {
|
||||
final ProjectManagerImpl manager = (ProjectManagerImpl)ProjectManagerEx.getInstanceEx();
|
||||
if (manager != null) {
|
||||
if (manager == null) {
|
||||
saveSettings();
|
||||
}
|
||||
else {
|
||||
final boolean[] canClose = {true};
|
||||
for (final Project project : manager.getOpenProjects()) {
|
||||
try {
|
||||
CommandProcessor.getInstance().executeCommand(project, () -> {
|
||||
if (!manager.closeProject(project, true, false, true, checkCanCloseProject)) {
|
||||
canClose[0] = false;
|
||||
}
|
||||
}, ApplicationBundle.message("command.exit"), null);
|
||||
}
|
||||
catch (Throwable e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
if (!canClose[0]) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
CommandProcessor.getInstance().executeCommand(null, () -> {
|
||||
if (!manager.closeAndDisposeAllProjects(checkCanCloseProject)) {
|
||||
canClose[0] = false;
|
||||
}
|
||||
}, ApplicationBundle.message("command.exit"), null);
|
||||
}
|
||||
catch (Throwable e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
if (!canClose[0]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
runWriteAction(() -> Disposer.dispose(this));
|
||||
@@ -803,7 +804,6 @@ public class ApplicationImpl extends PlatformComponentManagerImpl implements App
|
||||
return;
|
||||
}
|
||||
|
||||
saveSettings();
|
||||
lifecycleListener.appWillBeClosed(restart);
|
||||
|
||||
boolean success = disposeSelf(!force);
|
||||
|
||||
+18
-7
@@ -424,7 +424,7 @@ public class ProjectManagerImpl extends ProjectManagerEx implements Disposable {
|
||||
|
||||
boolean ok = myProgressManager.runProcessWithProgressSynchronously(process, ProjectBundle.message("project.load.progress"), canCancelProjectLoading(), project);
|
||||
if (!ok) {
|
||||
closeProject(project, false, false);
|
||||
closeProject(project, false, false, false, true);
|
||||
notifyProjectOpenFailed();
|
||||
return false;
|
||||
}
|
||||
@@ -601,7 +601,7 @@ public class ProjectManagerImpl extends ProjectManagerEx implements Disposable {
|
||||
|
||||
@Override
|
||||
public boolean closeProject(@NotNull final Project project) {
|
||||
return closeProject(project, true, false);
|
||||
return closeProject(project, true, true, false, true);
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
@@ -609,13 +609,24 @@ public class ProjectManagerImpl extends ProjectManagerEx implements Disposable {
|
||||
return closeProject(project, false, false, dispose, false);
|
||||
}
|
||||
|
||||
public boolean closeProject(@NotNull final Project project, final boolean saveProject, final boolean dispose) {
|
||||
return closeProject(project, saveProject, saveProject, dispose, true);
|
||||
// return true if successful
|
||||
public boolean closeAndDisposeAllProjects(boolean checkCanClose) {
|
||||
ApplicationManager.getApplication().saveSettings();
|
||||
for (Project project : getOpenProjects()) {
|
||||
if (!closeProject(project, true, false, true, checkCanClose)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// saveApp is ignored if saveProject is false
|
||||
@SuppressWarnings("TestOnlyProblems")
|
||||
public boolean closeProject(@NotNull final Project project, final boolean saveProject, final boolean saveApp, final boolean dispose, boolean checkCanClose) {
|
||||
private boolean closeProject(@NotNull final Project project,
|
||||
final boolean saveProject,
|
||||
final boolean saveApp,
|
||||
final boolean dispose,
|
||||
boolean checkCanClose) {
|
||||
Application app = ApplicationManager.getApplication();
|
||||
if (app.isWriteAccessAllowed()) {
|
||||
throw new IllegalStateException("Must not call closeProject() from under write action because fireProjectClosing() listeners must have a chance to do something useful");
|
||||
@@ -682,7 +693,7 @@ public class ProjectManagerImpl extends ProjectManagerEx implements Disposable {
|
||||
|
||||
@Override
|
||||
public boolean closeAndDispose(@NotNull final Project project) {
|
||||
return closeProject(project, true, true);
|
||||
return closeProject(project, true, true, true, true);
|
||||
}
|
||||
|
||||
private void fireProjectClosing(@NotNull Project project) {
|
||||
@@ -786,7 +797,7 @@ public class ProjectManagerImpl extends ProjectManagerEx implements Disposable {
|
||||
if (projectLevelListeners.isEmpty()) {
|
||||
return myListeners;
|
||||
}
|
||||
else if (myListeners.isEmpty()) {
|
||||
if (myListeners.isEmpty()) {
|
||||
return projectLevelListeners;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user