77
88public interface UIDefinition extends Predicate <UIAccessor > {
99
10- UIDefinition EMPTY = new UIDefinition (){};
10+ UIDefinition EMPTY = new UIDefinition () {};
1111
12- default void beforeInit (UIAccessor accessor ){
13- getDefinitions ().forEach (d ->d .beforeInit (accessor ));
12+ default void beforeInit (UIAccessor accessor ) {
13+ getDefinitions ().removeIf (d -> {
14+ if (d .test (accessor )) {
15+ d .beforeInit (accessor );
16+ return false ;
17+ }
18+ return true ;
19+ });
1420 }
1521
16- default void afterInit (UIAccessor accessor ){
17- getDefinitions ().forEach (d -> d .afterInit (accessor ));
22+ default void afterInit (UIAccessor accessor ) {
23+ getDefinitions ().forEach (d -> d .afterInit (accessor ));
1824 }
1925
20- default void beforeTick (UIAccessor accessor ){
21- getDefinitions ().forEach (d -> d .beforeTick (accessor ));
26+ default void beforeTick (UIAccessor accessor ) {
27+ getDefinitions ().forEach (d -> d .beforeTick (accessor ));
2228 }
2329
24- default void afterTick (UIAccessor accessor ){
25- getDefinitions ().forEach (d -> d .afterTick (accessor ));
30+ default void afterTick (UIAccessor accessor ) {
31+ getDefinitions ().forEach (d -> d .afterTick (accessor ));
2632 }
2733
28- default List <UIDefinition > getDefinitions (){
34+ default List <UIDefinition > getDefinitions () {
2935 return Collections .emptyList ();
3036 }
3137
38+ default List <UIDefinition > getStaticDefinitions () {
39+ return Collections .emptyList ();
40+ }
41+
42+ default void addStatic (UIDefinition uiDefinition ) {
43+ getStaticDefinitions ().add (uiDefinition );
44+ }
3245
33-
34- static UIDefinition createBeforeInit (Consumer <UIAccessor > beforeInit ){
46+ static UIDefinition createBeforeInit (Consumer <UIAccessor > beforeInit ) {
3547 return new UIDefinition () {
3648 @ Override
3749 public void beforeInit (UIAccessor accessor ) {
38- UIDefinition .super .beforeInit (accessor );
3950 beforeInit .accept (accessor );
4051 }
4152 };
4253 }
43- static UIDefinition createBeforeInit ( String name , Consumer < UIAccessor > beforeInit ){
44- return createBeforeInit ( a ->{
45- if ( a . getBoolean ( name + ".applyCondition" , true )) beforeInit . accept ( a );
46- } );
54+
55+ @ Deprecated
56+ static UIDefinition createBeforeInit ( String name , Consumer < UIAccessor > beforeInit ) {
57+ return createBeforeInit ( beforeInit );
4758 }
48- static UIDefinition createAfterInit (Consumer <UIAccessor > afterInit ){
59+
60+ static UIDefinition createAfterInit (Consumer <UIAccessor > afterInit ) {
4961 return new UIDefinition () {
5062 @ Override
5163 public void afterInit (UIAccessor accessor ) {
52- UIDefinition .super .afterInit (accessor );
5364 afterInit .accept (accessor );
5465 }
5566 };
5667 }
57- static UIDefinition createAfterInit ( String name , Consumer < UIAccessor > afterInit ){
58- return createAfterInit ( a ->{
59- if ( a . getBoolean ( name + ".applyCondition" , true )) afterInit . accept ( a );
60- } );
68+
69+ @ Deprecated
70+ static UIDefinition createAfterInit ( String name , Consumer < UIAccessor > afterInit ) {
71+ return createAfterInit ( afterInit );
6172 }
6273
63- static UIDefinition createAfterInitWithAmount (String name , Consumer <UIAccessor > afterInit ){
64- return createAfterInit (a -> {
74+ static UIDefinition createAfterInitWithAmount (String name , Consumer <UIAccessor > afterInit ) {
75+ return createAfterInit (a -> {
6576 Bearer <Integer > bearer = Bearer .of (0 );
6677 a .putBearer (name +".index" , bearer );
6778 afterInit .accept (a );
6879 });
6980 }
7081
71- static UIDefinition createBeforeTick (Consumer <UIAccessor > beforeTick ){
82+ static UIDefinition createBeforeTick (Consumer <UIAccessor > beforeTick ) {
7283 return new UIDefinition () {
7384 @ Override
7485 public void beforeTick (UIAccessor accessor ) {
75- UIDefinition .super .beforeTick (accessor );
7686 beforeTick .accept (accessor );
7787 }
7888 };
7989 }
8090
81- static UIDefinition createAfterTick (Consumer <UIAccessor > afterTick ){
91+ static UIDefinition createAfterTick (Consumer <UIAccessor > afterTick ) {
8292 return new UIDefinition () {
8393 @ Override
8494 public void afterTick (UIAccessor accessor ) {
85- UIDefinition .super .afterTick (accessor );
8695 afterTick .accept (accessor );
8796 }
8897 };
8998 }
9099
91100 @ Override
92- default boolean test (UIAccessor accessor ){
101+ default boolean test (UIAccessor accessor ) {
93102 return true ;
94103 }
95104
105+
106+ class Instance implements UIDefinition {
107+ private final Predicate <UIAccessor > applyCondition ;
108+ protected List <UIDefinition > definitions = new ArrayList <>();
109+ protected List <UIDefinition > staticDefinitions = new ArrayList <>();
110+
111+ public Instance (Predicate <UIAccessor > applyCondition ) {
112+ this .applyCondition = applyCondition ;
113+ }
114+
115+ @ Override
116+ public void beforeInit (UIAccessor accessor ) {
117+ getDefinitions ().clear ();
118+ getDefinitions ().addAll (getStaticDefinitions ());
119+ UIDefinition .super .beforeInit (accessor );
120+ }
121+
122+ @ Override
123+ public boolean test (UIAccessor accessor ) {
124+ return applyCondition .test (accessor );
125+ }
126+
127+ @ Override
128+ public List <UIDefinition > getStaticDefinitions () {
129+ return staticDefinitions ;
130+ }
131+
132+ @ Override
133+ public List <UIDefinition > getDefinitions () {
134+ return definitions ;
135+ }
136+ }
96137}
0 commit comments