Add autosave

This commit is contained in:
LeshaInc 2020-08-19 22:52:39 +03:00
parent 47dcd85561
commit 06722d9d66
No known key found for this signature in database
GPG Key ID: B4855290FC36DE72
3 changed files with 34 additions and 4 deletions

View File

@ -5,7 +5,7 @@ import java.nio.file.{Files, Path, StandardCopyOption}
import java.util.Comparator
import java.util.concurrent.locks.{Lock, ReentrantLock}
import javax.swing.JFileChooser
import javax.swing.{JFileChooser, JOptionPane}
import li.flor.nativejfilechooser.NativeJFileChooser
import ocelot.desktop.ui.UiHandler
import ocelot.desktop.ui.widget.RootWidget
@ -130,7 +130,7 @@ object OcelotDesktop extends Logging {
}
for (path <- oldFiles) {
Files.move(oldPath.resolve(path.getFileName), newPath.resolve(path.getFileName), StandardCopyOption.REPLACE_EXISTING)
Files.copy(oldPath.resolve(path.getFileName), newPath.resolve(path.getFileName), StandardCopyOption.REPLACE_EXISTING)
}
workspace.path = newPath
@ -179,6 +179,29 @@ object OcelotDesktop extends Logging {
}).start()
}
def exit(): Unit = {
if (savePath.isDefined) {
save()
UiHandler.exit()
return
}
new Thread(() => {
val dialogResult = JOptionPane.showConfirmDialog(null, "Save workspace before exiting?", "Warning", JOptionPane.YES_NO_OPTION)
if (dialogResult == JOptionPane.YES_OPTION) {
chooseDirectory(dir => {
if (dir.isDefined) {
savePath = dir.map(_.toPath)
save()
UiHandler.exit()
}
})
} else {
UiHandler.exit()
}
}).start()
}
var workspace: Workspace = _
private def createWorkspace(): Unit = {

View File

@ -6,6 +6,7 @@ import java.nio.channels.Channels
import java.nio.file.{Files, Paths}
import javax.imageio.ImageIO
import ocelot.desktop.OcelotDesktop
import ocelot.desktop.geometry.{Size2D, Vector2D}
import ocelot.desktop.graphics.Graphics
import ocelot.desktop.ui.event.MouseEvent
@ -167,13 +168,19 @@ object UiHandler extends Logging {
}
private var exitRequested = false
private var exitHandlerCalled = false
def exit(): Unit = {
exitRequested = true
}
def start(): Unit = {
while (!Display.isCloseRequested && !exitRequested) {
while (!exitRequested) {
if (!exitHandlerCalled && Display.isCloseRequested) {
exitHandlerCalled = true
OcelotDesktop.exit()
}
Audio.update()
updateWindowSize()

View File

@ -21,7 +21,7 @@ class MenuBar extends Widget {
menu.addEntry(new ContextMenuEntry("Save", () => OcelotDesktop.save()))
menu.addEntry(new ContextMenuEntry("Save as…", () => OcelotDesktop.saveAs()))
menu.addSeparator()
menu.addEntry(new ContextMenuEntry("Exit", () => UiHandler.exit()))
menu.addEntry(new ContextMenuEntry("Exit", () => OcelotDesktop.exit()))
}))
addEntry(new Widget {