Skip to content
This repository was archived by the owner on Aug 18, 2020. It is now read-only.

Commit 308de78

Browse files
committed
Added Color parameter (thanks @justgerd)
1 parent e1473ac commit 308de78

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package org.codeoverflow.chatoverflow.requirement.parameter
2+
3+
import org.codeoverflow.chatoverflow.api.io.parameter.ColorParameter
4+
import org.codeoverflow.chatoverflow.registry.Impl
5+
import java.awt.Color
6+
7+
/**
8+
* A parameter holding a Color value.
9+
*/
10+
@Impl(impl = classOf[ColorParameter])
11+
class ColorParameterImpl extends ColorParameter {
12+
private var value: Color = null
13+
14+
override def getType: Class[Color] = classOf[Color]
15+
16+
override def serialize(): String = s"${value.getRed},${value.getGreen},${value.getBlue},${value.getAlpha}"
17+
18+
override def get(): Color = value
19+
20+
override def deserialize(value: String): Unit = {
21+
22+
val hex3 = "^#([a-fA-F0-9]{6})$".r
23+
val hex4 = "^#([a-fA-F0-9]{8})$".r
24+
val int3 = "^(\\d+),(\\d+),(\\d+)$".r
25+
val int4 = "^(\\d+),(\\d+),(\\d+),(\\d+)$".r
26+
val float3 = "^(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?)$".r
27+
val float4 = "^(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?)$".r
28+
29+
try {
30+
value match {
31+
case hex3(hex) => {
32+
set(new Color(Integer.valueOf(hex.substring(0, 2), 16),
33+
Integer.valueOf(hex.substring(2, 4), 16),
34+
Integer.valueOf(hex.substring(4, 6), 16)))
35+
}
36+
case hex4(hex) =>
37+
set(new Color(Integer.valueOf(hex.substring(0, 2), 16),
38+
Integer.valueOf(hex.substring(2, 4), 16),
39+
Integer.valueOf(hex.substring(4, 6), 16),
40+
Integer.valueOf(hex.substring(6, 8), 16)))
41+
case int3(r, g, b) => set(new Color(r.toInt, g.toInt, b.toInt))
42+
case int4(r, g, b, a) => set(new Color(r.toInt, g.toInt, b.toInt, a.toInt))
43+
case float3(r, g, b) => set(new Color(r.toFloat, g.toFloat, b.toFloat))
44+
case float4(r, g, b, a) => set(new Color(r.toFloat, g.toFloat, b.toFloat, a.toFloat))
45+
}
46+
} catch {
47+
case _: Exception => print("Can't convert String to color")
48+
}
49+
}
50+
51+
override def set(value: Color): Unit = this.value = value
52+
53+
}

0 commit comments

Comments
 (0)