]> gitweb @ CieloNegro.org - task-reporter.git/blob - src/main/scala/jp/ymir/taskReporter/ui/MainFrame.scala
4b31c01270822fe6476d1756514a2a991e8245a2
[task-reporter.git] / src / main / scala / jp / ymir / taskReporter / ui / MainFrame.scala
1 package jp.ymir.taskReporter.ui
2 import java.awt.Dimension
3 import java.io._
4 import javax.swing.JOptionPane
5 import javax.swing.KeyStroke
6 import javax.swing.event.MenuListener
7 import javax.swing.event.MenuEvent
8 import jp.ymir.taskReporter._
9 import jp.ymir.taskReporter.core._
10 import scala.swing._
11 import scala.swing.event._
12
13 class MainFrame(reportFile: Option[File]) extends Frame {
14   private val reportSet: ReportSet = new ReportSet(reportFile)
15
16   title = "Task Reporter" + Main.getVersion
17
18   // FIXME: Provide a way to configure this.
19   size = new Dimension(640, 480)
20   centerOnScreen
21
22   override def closeOperation {
23     if (dirty) {
24       val r = JOptionPane.showConfirmDialog(
25         peer,
26         "The report file \"" + reportSet.file.get.getName + "\" has been modified.\n" +
27           "Do you want to save it before closing?",
28         "Confirmation",
29         JOptionPane.YES_NO_CANCEL_OPTION);
30
31       r match {
32         case JOptionPane.YES_OPTION =>
33           // FIXME
34           dispose
35         case JOptionPane.NO_OPTION =>
36           dispose
37         case _ =>
38       }
39     }
40     else {
41       dispose
42     }
43   }
44
45   def dirty : Boolean = {
46     return reportSet.dirty
47   }
48
49   menuBar = new MenuBar {
50     contents += new Menu("File") {
51       mnemonic = Key.F
52
53       contents += new MenuItem(new Action("Open...") {
54         accelerator = Some(KeyStroke.getKeyStroke("control O"))
55         def apply {
56           // FIXME
57         }
58       })
59
60       val save = new MenuItem(new Action("Save") {
61         accelerator = Some(KeyStroke.getKeyStroke("control S"));
62         def apply {
63           // FIXME
64         }
65       })
66       contents += save
67       peer.addMenuListener(new MenuListener {
68         def menuSelected(e: MenuEvent) {
69           save.enabled = dirty
70           save.text    =
71             if (reportSet.file.isEmpty)
72               "Save..."
73             else
74               "Save"
75         }
76         def menuDeselected(e: MenuEvent) {}
77         def menuCanceled(e: MenuEvent) {}
78       })
79     }
80   }
81
82   visible = true
83 }