import groovy.swing.SwingBuilder
class StreckenCategory
{
static def getKm
(selbst
) {
selbst
}
static def getM
(selbst
) {
selbst /
1000
}
}
def werteAus
(string
) {
def km = evaluate
(parse
(string
)) as String
def formatierteKm = formatiere
(km
)
"${formatierteKm} km"
}
def parse
(string
) {
string
.
replaceAll(/
(\d+
),
(\d+
)/,
{ alle, km, m ->
"${km}.${m}" })
.
replaceAll(/
(k*m
)/,
{ alle, km ->
".${km}"})
}
def formatiere
(string
) {
string.
replaceAll(/
(\d+
).
(\d+
)/,
{ alle, km, m ->
"${km},${m}" })
}
use (StreckenCategory.
class) {
assert '20,5 km' == werteAus
('2 * 2 km + 6 * 300 m + 5 * 100 m + 14,2 km')
}
def swing =
new SwingBuilder
()
def frame = swing.
frame(title:
'Kilometerfresser') {
textField
(columns:
100, actionPerformed:
{ event ->
use (StreckenCategory.
class) {
event.
source.
setText(werteAus
(event.
source.
text))
}
})
}
frame.
pack()
frame.
show()