package jp.ymir.taskReporter.ui import java.awt.Dimension import java.io._ import javax.swing.JOptionPane import javax.swing.KeyStroke import javax.swing.event.MenuListener import javax.swing.event.MenuEvent import jp.ymir.taskReporter._ import jp.ymir.taskReporter.core._ import scala.swing._ import scala.swing.event._ class MainFrame(reportFile: Option[File]) extends Frame { private val reportSet: ReportSet = new ReportSet(reportFile) title = "Task Reporter" + Main.getVersion // FIXME: Provide a way to configure this. size = new Dimension(640, 480) centerOnScreen override def closeOperation { if (dirty) { val r = JOptionPane.showConfirmDialog( peer, "The report file \"" + reportSet.file.get.getName + "\" has been modified.\n" + "Do you want to save it before closing?", "Confirmation", JOptionPane.YES_NO_CANCEL_OPTION); r match { case JOptionPane.YES_OPTION => // FIXME dispose case JOptionPane.NO_OPTION => dispose case _ => } } else { dispose } } def dirty : Boolean = { return reportSet.dirty } menuBar = new MenuBar { contents += new Menu("File") { mnemonic = Key.F contents += new MenuItem(new Action("Open...") { accelerator = Some(KeyStroke.getKeyStroke("control O")) def apply { // FIXME } }) val save = new MenuItem(new Action("Save") { accelerator = Some(KeyStroke.getKeyStroke("control S")); def apply { // FIXME } }) contents += save peer.addMenuListener(new MenuListener { def menuSelected(e: MenuEvent) { save.enabled = dirty save.text = if (reportSet.file.isEmpty) "Save..." else "Save" } def menuDeselected(e: MenuEvent) {} def menuCanceled(e: MenuEvent) {} }) } } visible = true }