import scala.swing._
import java.io.{ File, IOException }
import javax.swing.filechooser.FileNameExtensionFilter
import org.apache.commons.lang.SystemUtils
import org.apache.commons.io.FileUtils
def getFileChooser = {
val dir = if (currentFile == null) SystemUtils.getUserDir else currentFile
new FileChooser(dir) {
fileFilter = new FileNameExtensionFilter("テキストファイル", "txt")
fileFilter = new FileNameExtensionFilter("Scala / Ruby", "scala", "rb")
}
}
ファイルを開く
val fc = getFileChooser
fc.title = "ファイルを開く"
fc.showOpenDialog(this) match {
case FileChooser.Result.Approve =>
try {
if (fc.selectedFile.exists) {
editScroll.editArea.text = FileUtils.readFileToString(fc.selectedFile)
currentFile = fc.selectedFile
} else {
editScroll.editArea.text = ""
currentFile = fc.selectedFile
}
} catch {
case e: IOException =>
Dialog.showMessage(this, "ファイルを開けませんでした。\n" + e.getMessage)
}
case FileChooser.Result.Cancel => ;
case FileChooser.Result.Error => ;
}
ファイルを保存する
val fc = getFileChooser
fc.title = "名前を付けて保存"
fc.showSaveDialog(this) match {
case FileChooser.Result.Approve =>
val sf = fc.selectedFile
val confResult = if (sf.exists) {
Dialog.showConfirmation(this,
sf.getName + " は既に存在します。\n上書きしますか?",
"名前を付けて保存の確認", Dialog.Options.YesNo)
} else {
Dialog.Result.Yes
}
if (confResult == Dialog.Result.Yes) {
try {
FileUtils.writeStringToFile(sf, editScroll.editArea.text)
currentFile = sf
} catch {
case e: IOException =>
Dialog.showMessage(this, "ファイルを保存できませんでした。\n" + e.getMessage)
}
}
case FileChooser.Result.Cancel => ;
case FileChooser.Result.Error => ;
}
gist: 219238 - ScalaでSwing ファイルを開く・保存