Libraryless. Click here for Pure Java version (6461L/45K/143K).
| 1 | !752 | 
| 2 | |
| 3 | static Action lastAction; | 
| 4 | |
| 5 | concepts. | 
| 6 | |
| 7 | concept History {
 | 
| 8 | new RefL events; | 
| 9 | } | 
| 10 | |
| 11 | abstract concept Input {
 | 
| 12 | } | 
| 13 | |
| 14 | Input > TextInput {
 | 
| 15 | S line; | 
| 16 | |
| 17 |   *() {}
 | 
| 18 |   *(S *line) { change(); }
 | 
| 19 | } | 
| 20 | |
| 21 | abstract concept Action {
 | 
| 22 | Bool good; // true, false or null | 
| 23 | } | 
| 24 | |
| 25 | Action > NoAction {}
 | 
| 26 | |
| 27 | Action > PrintAction {
 | 
| 28 | S text; | 
| 29 | |
| 30 |   *() {}
 | 
| 31 |   *(S *text) { change(); }
 | 
| 32 | } | 
| 33 | |
| 34 | static History historyObj() { ret uniq(History); }
 | 
| 35 | |
| 36 | static L<Concept> history() { ret historyObj().events; }
 | 
| 37 | static void historyAdd(Concept event) { historyObj().events.add(event); }
 | 
| 38 | |
| 39 | p-awt {
 | 
| 40 | concepts(); | 
| 41 | |
| 42 | showControls(jcenteredLine( | 
| 43 |     jbutton("Good!", "good"),
 | 
| 44 |     jbutton("Bad!", "bad")));
 | 
| 45 | |
| 46 | makeBot(); | 
| 47 | } | 
| 48 | |
| 49 | synchronized answer {
 | 
| 50 | historyAdd(new TextInput(s)); | 
| 51 |   if "hello" {
 | 
| 52 | S answer = "Hello!"; | 
| 53 | historyAdd(new PrintAction(answer)); | 
| 54 | ret answer; | 
| 55 | } | 
| 56 | } | 
| 57 | |
| 58 | static Action lastAction() {
 | 
| 59 | Concept last = last(history()); | 
| 60 |   if (!last << Action) {
 | 
| 61 | historyAdd(last = new NoAction); | 
| 62 |     print("I'm assuming you mean my lack of action?");
 | 
| 63 | } | 
| 64 | ret last/Action; | 
| 65 | } | 
| 66 | |
| 67 | svoid good {
 | 
| 68 | Action action = lastAction(); | 
| 69 | if (action == null) ret; | 
| 70 | if (isTrue(action.good)) | 
| 71 |     print("Thanks, I know! :-)");
 | 
| 72 |   else {
 | 
| 73 | cset(action, good := true); | 
| 74 |     print("Thanks, saved!");
 | 
| 75 | } | 
| 76 | } | 
| 77 | |
| 78 | svoid bad {
 | 
| 79 | Action action = lastAction(); | 
| 80 | if (action == null) ret; | 
| 81 | if (isFalse(action.good)) | 
| 82 |     print("I heard that before...");
 | 
| 83 |   else {
 | 
| 84 | cset(action, good := false); | 
| 85 |     print("I don't know what I did wrong yet, but I'll save this feedback!");
 | 
| 86 | } | 
| 87 | } | 
download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, sawdedvomwva, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1005922 | 
| Snippet name: | User Feedback [dev.] | 
| Eternal ID of this version: | #1005922/1 | 
| Text MD5: | f4856e8869a0cfeec21c391df58d1805 | 
| Transpilation MD5: | fddc347947c34d29f0fa83ff91d9e62a | 
| Author: | stefan | 
| Category: | javax / gui | 
| Type: | JavaX source code | 
| Public (visible to everyone): | Yes | 
| Archived (hidden from active list): | No | 
| Created/modified: | 2016-12-12 20:01:13 | 
| Source code size: | 1585 bytes / 87 lines | 
| Pitched / IR pitched: | No / No | 
| Views / Downloads: | 784 / 923 | 
| Referenced in: | [show references] |