package jp.ymir.taskReporter.ui import com.toedter.calendar._ import java.awt.Insets import jp.ymir.taskReporter.core._ import scala.swing._ class TaskEditor extends GridBagPanel { import GridBagPanel.Anchor._ import GridBagPanel.Fill._ private val commonInsets = new Insets(2, 3, 2, 3) val date = Component.wrap(new JDateChooser() { setDateFormatString("yyyy-MM-dd") getJCalendar().setTodayButtonVisible(true) getJCalendar().setWeekOfYearVisible(false) }) add( new Label("報告日"), new Constraints { gridx = 0; gridy = 0 }) add( date, new Constraints() { gridx = 1; gridy = 0; anchor = West ipadx = 3; ipady = 3; insets = commonInsets }) date.minimumSize = date.preferredSize val ticketID = new TextField(6) { val isDigit = (c : Char) => c >= '0' && c <= '9' inputVerifier = _ => wrapString(text).forall(isDigit) peer.setMargin(commonInsets) } add( new Label("チケットID"), new Constraints { gridx = 0; gridy = 1 }) add( ticketID, new Constraints() { gridx = 1; gridy = 1; anchor = West; insets = commonInsets }) ticketID.minimumSize = ticketID.preferredSize val title = new TextField() { peer.setMargin(commonInsets) } add( new Label("作業名"), new Constraints { gridx = 0; gridy = 2 }) add( title, new Constraints() { gridx = 1; gridy = 2; fill = Horizontal; weightx = 1.0 insets = commonInsets }) val expectedCompletionDate = Component.wrap(new JDateChooser() { setDateFormatString("yyyy-MM-dd") getJCalendar().setTodayButtonVisible(true) getJCalendar().setWeekOfYearVisible(false) }) add( new Label("作業完了予定年月日"), new Constraints { gridx = 0; gridy = 3 }) add( expectedCompletionDate, new Constraints() { gridx = 1; gridy = 3; anchor = West ipadx = 3; ipady = 3; insets = commonInsets }) expectedCompletionDate.minimumSize = expectedCompletionDate.preferredSize val deadline = Component.wrap(new JDateChooser() { setDateFormatString("yyyy-MM-dd") getJCalendar().setTodayButtonVisible(true) getJCalendar().setNullDateButtonVisible(true) getJCalendar().setWeekOfYearVisible(false) }) add( new Label("タスク期限"), new Constraints { gridx = 0; gridy = 4 }) add( deadline, new Constraints() { gridx = 1; gridy = 4; anchor = West ipadx = 3; ipady = 3; insets = commonInsets }) deadline.minimumSize = deadline.preferredSize val status = new ComboBox[Task.Status](Task.Status.all) add( new Label("状態"), new Constraints { gridx = 0; gridy = 5 }) add( status, new Constraints { gridx = 1; gridy = 5; anchor = West ipadx = 3; ipady = 3; insets = commonInsets }) val description = new ScrollPane(new TextArea() { rows = 5 peer.setMargin(commonInsets) }) add( new Label("説明"), new Constraints { gridx = 0; gridy = 6 }) add( description, new Constraints() { gridx = 1; gridy = 6; fill = Horizontal; weightx = 1.0 insets = commonInsets }) description.minimumSize = description.preferredSize }