MCPcopy Create free account
hub / github.com/OpenEndedGroup/Field2 / registerCommands

Method registerCommands

src/main/java/fielded/Commands.java:44–105  ·  view source on GitHub ↗
(Box on)

Source from the content-addressed store, hash-verified

42 .autoConstructs(() -> new IdempotencyMap<>(String.class));
43
44 static public void registerCommands(Box on) {
45 Class<?> c = on.getClass();
46
47 Method[] m = c.getDeclaredMethods();
48 for (Method mm : m) {
49 PublishAsCommand p = mm.getDeclaredAnnotation(PublishAsCommand.class);
50 if (p != null) {
51 if (p.isGuard()) {
52 on.properties.putToMap(commandGuard, p.name(), (x) -> {
53 if (mm.getParameterCount() == 1) {
54 try {
55 return ((Boolean) mm.invoke(on, x)).booleanValue();
56 } catch (IllegalAccessException e) {
57 e.printStackTrace();
58 } catch (InvocationTargetException e) {
59 e.printStackTrace();
60 }
61 } else {
62 try {
63 return ((Boolean) mm.invoke(on)).booleanValue();
64 } catch (IllegalAccessException e) {
65 e.printStackTrace();
66 } catch (InvocationTargetException e) {
67 e.printStackTrace();
68 }
69 }
70 return false;
71 });
72 } else {
73 on.properties.putToMap(command, p.name(), (x) -> {
74
75 if (mm.getParameterCount() == 1) {
76 try {
77 mm.invoke(on, x);
78 } catch (IllegalAccessException e) {
79 e.printStackTrace();
80 } catch (InvocationTargetException e) {
81 e.printStackTrace();
82 }
83 } else {
84 Box root = on.first(Boxes.root)
85 .get();
86 root.breadthFirst(root.allDownwardsFrom())
87 .filter(y -> x.properties.isTrue(Mouse.isSelected, false))
88 .forEach(y -> Callbacks.transition(y, Mouse.isSelected, false, false, Callbacks.onSelect, Callbacks.onDeselect));
89 Callbacks.transition(x, Mouse.isSelected, true, false, Callbacks.onSelect, Callbacks.onDeselect);
90 try {
91 mm.invoke(on);
92 } catch (IllegalAccessException e) {
93 e.printStackTrace();
94 } catch (InvocationTargetException e) {
95 e.printStackTrace();
96 }
97 }
98
99 return null;
100 });
101 on.properties.putToMap(commandDoc, p.name(), p.documentation());

Callers

nothing calls this directly

Calls 10

breadthFirstMethod · 0.95
allDownwardsFromMethod · 0.95
transitionMethod · 0.95
putToMapMethod · 0.80
firstMethod · 0.80
isTrueMethod · 0.80
getMethod · 0.65
nameMethod · 0.45
invokeMethod · 0.45
forEachMethod · 0.45

Tested by

no test coverage detected