Commit fc01bb9b authored by Nico Mack's avatar Nico Mack

Integrated conditions to widgets.

Added conditionSatisfied interaction.
parent 8b5aff2a
...@@ -28,6 +28,7 @@ COLOUR_NODE=colour ...@@ -28,6 +28,7 @@ COLOUR_NODE=colour
COLOUR_PALETTE_NODE=colourPalette COLOUR_PALETTE_NODE=colourPalette
COLOURSC_NODE=colourscheme COLOURSC_NODE=colourscheme
CONDITION_NODE=condition CONDITION_NODE=condition
CONDITIONS_NODE=conditions
CONDITION_BUILDER_NAMESPACE=lu.list.itis.dkd.tui.event.conditional.builder CONDITION_BUILDER_NAMESPACE=lu.list.itis.dkd.tui.event.conditional.builder
CONNECTIONS_NODE=connections CONNECTIONS_NODE=connections
CONTENT_NODE=content CONTENT_NODE=content
...@@ -76,6 +77,7 @@ FILL_COLOUR_NUANCE_NODE=fillColourNuance ...@@ -76,6 +77,7 @@ FILL_COLOUR_NUANCE_NODE=fillColourNuance
FLIP_TITLE_BY_QUADRANT_NODE=flipTitleByQuadrant FLIP_TITLE_BY_QUADRANT_NODE=flipTitleByQuadrant
FONT_NODE=font FONT_NODE=font
FONT_SIZE_NODE=fontSize FONT_SIZE_NODE=fontSize
FOR_ATTRIBUTE=for
FULLSCREEN_NODE=fullScreen FULLSCREEN_NODE=fullScreen
GAP_NODE=gap GAP_NODE=gap
GLOBAL_STATE_LISTENER_NODE=globalStateListener GLOBAL_STATE_LISTENER_NODE=globalStateListener
......
...@@ -13,4 +13,6 @@ ON_DRAG_END=dragEnd ...@@ -13,4 +13,6 @@ ON_DRAG_END=dragEnd
ON_RELEASED=released ON_RELEASED=released
ON_TETHER_ESTABLISHED=tetherEstablished ON_TETHER_ESTABLISHED=tetherEstablished
ON_TETHER_TORN_DOWN=tetherTornDown ON_TETHER_TORN_DOWN=tetherTornDown
\ No newline at end of file
ON_CONDITION_SATISFIED=conditionSatisfied
\ No newline at end of file
...@@ -273,6 +273,10 @@ public abstract class TangibleApplication { ...@@ -273,6 +273,10 @@ public abstract class TangibleApplication {
stageManager.repaint(); stageManager.repaint();
} }
public void shutdown() {
this.disconnect();
}
/** /**
* Method for retrieving all active {@link TangibleObject} cursors from the {@link TuiAdapter} * Method for retrieving all active {@link TangibleObject} cursors from the {@link TuiAdapter}
......
...@@ -16,7 +16,12 @@ ...@@ -16,7 +16,12 @@
*/ */
package lu.list.itis.dkd.tui.event.conditional; package lu.list.itis.dkd.tui.event.conditional;
import lu.list.itis.dkd.dbc.annotation.Nullable;
import lu.list.itis.dkd.tui.event.conditional.builder.BaseConditionBuilder; import lu.list.itis.dkd.tui.event.conditional.builder.BaseConditionBuilder;
import lu.list.itis.dkd.tui.utility.Externalization;
import lu.list.itis.dkd.tui.widget.corona.Corona;
import com.google.common.collect.Multimap;
/** /**
* @author Nico Mack [nico.mack@list.lu] * @author Nico Mack [nico.mack@list.lu]
...@@ -28,7 +33,9 @@ import lu.list.itis.dkd.tui.event.conditional.builder.BaseConditionBuilder; ...@@ -28,7 +33,9 @@ import lu.list.itis.dkd.tui.event.conditional.builder.BaseConditionBuilder;
// * Class Definition and Members * // * Class Definition and Members *
// *************************************************************************** // ***************************************************************************
public abstract class Condition<T> implements Conditional<T> { public abstract class Condition<T> implements Conditional<T>, Comparable<Condition> {
private String name;
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// *************************************************************************** // ***************************************************************************
...@@ -40,7 +47,9 @@ public abstract class Condition<T> implements Conditional<T> { ...@@ -40,7 +47,9 @@ public abstract class Condition<T> implements Conditional<T> {
*/ */
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
public Condition() {} public Condition() {
this.name = Externalization.EMPTY_STRING;
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
/** /**
...@@ -49,13 +58,23 @@ public abstract class Condition<T> implements Conditional<T> { ...@@ -49,13 +58,23 @@ public abstract class Condition<T> implements Conditional<T> {
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
public Condition(BaseConditionBuilder<?> builder) { public Condition(BaseConditionBuilder<?> builder) {
// Nothing to do here. this.name = builder.name;
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// *************************************************************************** // ***************************************************************************
// * Class Body * // * Class Body *
// *************************************************************************** // ***************************************************************************
// ---------------------------------------------------------------------------
/**
* @return
*/
// ---------------------------------------------------------------------------
public String getName() {
return this.name;
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
@Override @Override
...@@ -70,4 +89,27 @@ public abstract class Condition<T> implements Conditional<T> { ...@@ -70,4 +89,27 @@ public abstract class Condition<T> implements Conditional<T> {
return this; return this;
} }
// ---------------------------------------------------------------------------
/**
* Comparison as defined by the {@link Comparable} interface. This comparison is based on the
* integer comparison of the draw priorities, ordering lower priorities first. This will result in
* lower priority {@link Corona} instances being overlapped by prioritized ones.<br>
* <br>
*
* <b>Note</b>: As the {@link Multimap} used to store {@link Corona} instances uses the
* {@link Comparable} interface to test for equality, all instances must have different draw
* priorities or not be added to the map.<br>
* <br>
*
* {@inheritDoc}
*/
// ---------------------------------------------------------------------------
@Override
public int compareTo(@Nullable Condition condition) {
if (condition == null)
throw new NullPointerException();
return this.name.compareTo(condition.getName());
}
} }
...@@ -16,10 +16,13 @@ ...@@ -16,10 +16,13 @@
*/ */
package lu.list.itis.dkd.tui.event.conditional.builder; package lu.list.itis.dkd.tui.event.conditional.builder;
import lu.list.itis.dkd.dbc.annotation.Nullable;
import lu.list.itis.dkd.tui.bootstrapping.BootstrapCallback; import lu.list.itis.dkd.tui.bootstrapping.BootstrapCallback;
import lu.list.itis.dkd.tui.bootstrapping.BootstrapContext; import lu.list.itis.dkd.tui.bootstrapping.BootstrapContext;
import lu.list.itis.dkd.tui.bootstrapping.BootstrappingUtils;
import lu.list.itis.dkd.tui.event.conditional.Condition; import lu.list.itis.dkd.tui.event.conditional.Condition;
import lu.list.itis.dkd.tui.exception.BuildException; import lu.list.itis.dkd.tui.exception.BuildException;
import lu.list.itis.dkd.tui.utility.Externalization;
import org.jdom2.Element; import org.jdom2.Element;
...@@ -31,10 +34,60 @@ import org.jdom2.Element; ...@@ -31,10 +34,60 @@ import org.jdom2.Element;
*/ */
public abstract class BaseConditionBuilder<B extends BaseConditionBuilder<B>> { public abstract class BaseConditionBuilder<B extends BaseConditionBuilder<B>> {
public BaseConditionBuilder(Element rootElement) throws BuildException {}; /** Optional condition name */
public String name;
public BaseConditionBuilder(Element rootElement, BootstrapContext context, BootstrapCallback callback) throws BuildException {}; // ---------------------------------------------------------------------------
// ***************************************************************************
// *Constructor(s) *
// ***************************************************************************
// ---------------------------------------------------------------------------
/**
* @param rootElement
* @throws BuildException
*/
// ---------------------------------------------------------------------------
public BaseConditionBuilder(Element rootElement) throws BuildException {
this.buildFromBootstrap(rootElement, null, null);
}
// ---------------------------------------------------------------------------
/**
* @param rootElement
* @param context
* @param callback
* @throws BuildException
*/
// ---------------------------------------------------------------------------
public BaseConditionBuilder(Element rootElement, BootstrapContext context, BootstrapCallback callback) throws BuildException {
this.buildFromBootstrap(rootElement, context, callback);
}
// ---------------------------------------------------------------------------
// ***************************************************************************
// * Primitive(s) *
// ***************************************************************************
// ---------------------------------------------------------------------------
/**
*
* @param rootElement
* @param context
* @param callback
* @throws BuildException
*/
// ---------------------------------------------------------------------------
private void buildFromBootstrap(@Nullable Element rootElement, BootstrapContext context, BootstrapCallback callback) throws BuildException {
this.name = BootstrappingUtils.getAttributeAsString(rootElement, Externalization.NAME_ATTRIBUTE, BootstrappingUtils.OPTIONAL, Externalization.EMPTY_STRING);
}
// ---------------------------------------------------------------------------
// ***************************************************************************
// * Class Body *
// ***************************************************************************
// ---------------------------------------------------------------------------
/** /**
* @return * @return
*/ */
......
...@@ -27,4 +27,6 @@ public interface Handler<H> extends Comparable<H> { ...@@ -27,4 +27,6 @@ public interface Handler<H> extends Comparable<H> {
* @param action * @param action
*/ */
boolean handle(Interaction action); boolean handle(Interaction action);
boolean handle(Interaction action, Object discriminator);
} }
...@@ -27,6 +27,7 @@ import lu.list.itis.dkd.tui.event.interaction.builder.BaseInteractionBuilder; ...@@ -27,6 +27,7 @@ import lu.list.itis.dkd.tui.event.interaction.builder.BaseInteractionBuilder;
public class Interaction implements Comparable<Interaction> { public class Interaction implements Comparable<Interaction> {
private String signature; private String signature;
private Object discriminator;
// *************************************************************************** // ***************************************************************************
// * Constants * // * Constants *
...@@ -47,6 +48,8 @@ public class Interaction implements Comparable<Interaction> { ...@@ -47,6 +48,8 @@ public class Interaction implements Comparable<Interaction> {
public static final Interaction ON_TETHER_ESTABLISHED = new Interaction(Signature.ON_TETHER_ESTABLISHED); public static final Interaction ON_TETHER_ESTABLISHED = new Interaction(Signature.ON_TETHER_ESTABLISHED);
public static final Interaction ON_TETHER_TORN_DOWN = new Interaction(Signature.ON_TETHER_TORN_DOWN); public static final Interaction ON_TETHER_TORN_DOWN = new Interaction(Signature.ON_TETHER_TORN_DOWN);
public static final Interaction ON_CONDITION_SATISFIED = new Interaction(Signature.ON_CONDITION_SATISFIED);
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// *************************************************************************** // ***************************************************************************
// * Constructor(s) * // * Constructor(s) *
...@@ -71,6 +74,28 @@ public class Interaction implements Comparable<Interaction> { ...@@ -71,6 +74,28 @@ public class Interaction implements Comparable<Interaction> {
this.signature = signature; this.signature = signature;
} }
// ---------------------------------------------------------------------------
/**
* @param signature
*/
// ---------------------------------------------------------------------------
public Interaction(String signature, Object discriminator) {
this.signature = signature;
this.discriminator = discriminator;
}
// ---------------------------------------------------------------------------
/**
* @param original
*/
// ---------------------------------------------------------------------------
public Interaction(Interaction original) {
this.signature = original.signature;
this.discriminator = original.discriminator;
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
/** /**
* @param builder * @param builder
...@@ -95,6 +120,24 @@ public class Interaction implements Comparable<Interaction> { ...@@ -95,6 +120,24 @@ public class Interaction implements Comparable<Interaction> {
return this.signature; return this.signature;
} }
// ---------------------------------------------------------------------------
/**
* @param newDiscriminator
*/
// ---------------------------------------------------------------------------
public void setDiscriminator(Object newDiscriminator) {
this.discriminator = newDiscriminator;
}
// ---------------------------------------------------------------------------
/** {@inheritDoc} */
// ---------------------------------------------------------------------------
public Object getDiscriminator() {
return this.discriminator;
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
/** {@inheritDoc} */ /** {@inheritDoc} */
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
......
...@@ -61,6 +61,26 @@ public class InteractionManager implements Interactive { ...@@ -61,6 +61,26 @@ public class InteractionManager implements Interactive {
// *************************************************************************** // ***************************************************************************
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
private boolean handle(Interaction action) {
boolean handled = false;
Collection<Handler> actionHandlers = handlers.get(action.getSignature());
for (Handler handler : actionHandlers) {
handled |= handler.handle(action);
}
return handled;
}
// ---------------------------------------------------------------------------
private boolean handle(Interaction action, Object discriminator) {
boolean handled = false;
Collection<Handler> actionHandlers = handlers.get(action.getSignature());
for (Handler handler : actionHandlers) {
handled |= handler.handle(action, discriminator);
}
return handled;
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// *************************************************************************** // ***************************************************************************
// * Class Body * // * Class Body *
...@@ -119,10 +139,8 @@ public class InteractionManager implements Interactive { ...@@ -119,10 +139,8 @@ public class InteractionManager implements Interactive {
public boolean respondTo(Interaction action) { public boolean respondTo(Interaction action) {
boolean handled = false; boolean handled = false;
if (handlers.containsKey(action.getSignature())) { if (handlers.containsKey(action.getSignature())) {
Collection<Handler> actionHandlers = handlers.get(action.getSignature()); Object discriminator = action.getDiscriminator();
for (Handler handler : actionHandlers) { handled = (discriminator == null) ? handle(action) : handle(action, discriminator);
handled |= handler.handle(action);
}
} }
return handled; return handled;
} }
......
...@@ -50,6 +50,8 @@ public class Signature extends NLS { ...@@ -50,6 +50,8 @@ public class Signature extends NLS {
public static String ON_TETHER_ESTABLISHED; public static String ON_TETHER_ESTABLISHED;
public static String ON_TETHER_TORN_DOWN; public static String ON_TETHER_TORN_DOWN;
public static String ON_CONDITION_SATISFIED;
static { static {
// initialize resource bundle // initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Signature.class); NLS.initializeMessages(BUNDLE_NAME, Signature.class);
......
...@@ -75,6 +75,17 @@ public class AnimationDelegate extends Delegate { ...@@ -75,6 +75,17 @@ public class AnimationDelegate extends Delegate {
this.doableMethods = Delegate.getDoableMethods(AnimationDelegate.class); this.doableMethods = Delegate.getDoableMethods(AnimationDelegate.class);
} }
// ---------------------------------------------------------------------------
private void run() {
Runnable doIt = () -> {
Delegate.invokeDoableMethod(doableMethods.get(this.doable), this, null);
};
Thread handlingThread = new Thread(doIt);
handlingThread.start();
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// *************************************************************************** // ***************************************************************************
// * Class Body * // * Class Body *
...@@ -90,14 +101,33 @@ public class AnimationDelegate extends Delegate { ...@@ -90,14 +101,33 @@ public class AnimationDelegate extends Delegate {
if (this.target != null) { if (this.target != null) {
if (doableMethods.containsKey(this.doable)) { if (doableMethods.containsKey(this.doable)) {
this.run();
return true;
}
LOGGER.warn("Don't know how to do {}!", this.doable); //$NON-NLS-1$
}
return false;
}
Runnable doIt = () -> { // ---------------------------------------------------------------------------
Delegate.invokeDoableMethod(doableMethods.get(this.doable), this, null);
}; @Override
public boolean handle(Interaction action, Object discriminatorObject) {
Object discrimatorString = new String();
if (discriminatorObject != null) {
discrimatorString = discriminatorObject.toString();
}
Thread handlingThread = new Thread(doIt); if (target == null) {
handlingThread.start(); this.target = TangibleObjectManager.getWidget(handle);
}
if (this.target != null) {
if ((doableMethods.containsKey(this.doable))
&& this.discriminator.equals(discrimatorString)) {
this.run();
return true; return true;
} }
LOGGER.warn("Don't know how to do {}!", this.doable); //$NON-NLS-1$ LOGGER.warn("Don't know how to do {}!", this.doable); //$NON-NLS-1$
......
...@@ -115,6 +115,17 @@ public class AudioDelegate extends MediaDelegate implements Playable, Controller ...@@ -115,6 +115,17 @@ public class AudioDelegate extends MediaDelegate implements Playable, Controller
} }
} }
// ---------------------------------------------------------------------------
private void run() {
Runnable doIt = () -> {
Delegate.invokeDoableMethod(doableMethods.get(this.doable), this, null);
};
Thread handlingThread = new Thread(doIt);
handlingThread.start();
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// *************************************************************************** // ***************************************************************************
// * Class Body * // * Class Body *
...@@ -125,17 +136,32 @@ public class AudioDelegate extends MediaDelegate implements Playable, Controller ...@@ -125,17 +136,32 @@ public class AudioDelegate extends MediaDelegate implements Playable, Controller
public boolean handle(Interaction action) { public boolean handle(Interaction action) {
if (doableMethods.containsKey(this.doable)) { if (doableMethods.containsKey(this.doable)) {
this.run();
return true;
}
LOGGER.warn("Don't know how to do {}!", this.doable); //$NON-NLS-1$
return false;
}
Runnable doIt = () -> { // ---------------------------------------------------------------------------
Delegate.invokeDoableMethod(doableMethods.get(this.doable), this, null);
};
Thread handlingThread = new Thread(doIt); @Override
handlingThread.start(); public boolean handle(Interaction action, Object discriminatorObject) {
return true; Object discrimatorString = new String();
if (discriminatorObject != null) {
discrimatorString = discriminatorObject.toString();
}
if (doableMethods.containsKey(this.doable)) {
if (this.discriminator.equals(discrimatorString)) {
this.run();
return true;
}
} else {
LOGGER.warn("Don't know how to do {}!", this.doable); //$NON-NLS-1$
} }
LOGGER.warn("Don't know how to do {}!", this.doable); //$NON-NLS-1$
return false; return false;
} }
......
...@@ -40,6 +40,7 @@ public abstract class Delegate implements Handler<Delegate> { ...@@ -40,6 +40,7 @@ public abstract class Delegate implements Handler<Delegate> {
protected String name; protected String name;
protected String doable; protected String doable;
protected String discriminator;
// *************************************************************************** // ***************************************************************************
// * Constants * // * Constants *
...@@ -60,6 +61,7 @@ public abstract class Delegate implements Handler<Delegate> { ...@@ -60,6 +61,7 @@ public abstract class Delegate implements Handler<Delegate> {
public Delegate(BaseDelegateBuilder<?> builder) { public Delegate(BaseDelegateBuilder<?> builder) {
this.name = builder.name; this.name = builder.name;
this.doable = builder.doable; this.doable = builder.doable;
this.discriminator = builder.discriminator;
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
...@@ -71,6 +73,7 @@ public abstract class Delegate implements Handler<Delegate> { ...@@ -71,6 +73,7 @@ public abstract class Delegate implements Handler<Delegate> {
public Delegate(Delegate original) { public Delegate(Delegate original) {
this.name = original.name; this.name = original.name;
this.doable = original.doable; this.doable = original.doable;
this.discriminator = original.discriminator;
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
...@@ -124,6 +127,9 @@ public abstract class Delegate implements Handler<Delegate> { ...@@ -124,6 +127,9 @@ public abstract class Delegate implements Handler<Delegate> {
if (comparison == 0) { if (comparison == 0) {
comparison = this.doable.compareTo(delegate.doable); comparison = this.doable.compareTo(delegate.doable);
} }
if (comparison == 0) {
comparison = this.discriminator.compareTo(delegate.discriminator);
}
if (comparison == 0) { if (comparison == 0) {
comparison = this.name.compareTo(delegate.name); comparison = this.name.compareTo(delegate.name);
} }
......
...@@ -27,6 +27,7 @@ public abstract class BaseDelegateBuilder<B extends BaseDelegateBuilder<B>> { ...@@ -27,6 +27,7 @@ public abstract class BaseDelegateBuilder<B extends BaseDelegateBuilder<B>> {
/** The name that will be given to the delegate. */ /** The name that will be given to the delegate. */
public String name; public String name;
public String doable; public String doable;
public String discriminator;
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// *************************************************************************** // ***************************************************************************
...@@ -38,6 +39,7 @@ public abstract class BaseDelegateBuilder<B extends BaseDelegateBuilder<B>> { ...@@ -38,6 +39,7 @@ public abstract class BaseDelegateBuilder<B extends BaseDelegateBuilder<B>> {
public BaseDelegateBuilder() { public BaseDelegateBuilder() {
name = Externalization.EMPTY_STRING; name = Externalization.EMPTY_STRING;
doable = Externalization.EMPTY_STRING; doable = Externalization.EMPTY_STRING;
discriminator = Externalization.EMPTY_STRING;
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
...@@ -72,6 +74,7 @@ public abstract class BaseDelegateBuilder<B extends BaseDelegateBuilder<B>> { ...@@ -72,6 +74,7 @@ public abstract class BaseDelegateBuilder<B extends BaseDelegateBuilder<B>> {
private void buildFromBootstrap(@Nullable Element rootElement, BootstrapContext context, BootstrapCallback callback) throws BuildException { private void buildFromBootstrap(@Nullable Element rootElement, BootstrapContext context, BootstrapCallback callback) throws BuildException {
doable = BootstrappingUtils.getAttributeAsString(rootElement, Externalization.DO_ATTRIBUTE, BootstrappingUtils.MANDATORY, null); doable = BootstrappingUtils.getAttributeAsString(rootElement, Externalization.DO_ATTRIBUTE, BootstrappingUtils.MANDATORY, null);
discriminator = BootstrappingUtils.getAttributeAsString(rootElement, Externalization.FOR_ATTRIBUTE, BootstrappingUtils.OPTIONAL, Externalization.EMPTY_STRING);
name = BootstrappingUtils.getContentAsString(rootElement, Externalization.NAME_NODE, BootstrappingUtils.OPTIONAL, Externalization.EMPTY_STRING, context); name = BootstrappingUtils.getContentAsString(rootElement, Externalization.NAME_NODE, BootstrappingUtils.OPTIONAL, Externalization.EMPTY_STRING, context);
} }
......
...@@ -63,6 +63,7 @@ public class Externalization extends NLS { ...@@ -63,6 +63,7 @@ public class Externalization extends NLS {
public static String COLOUR_PALETTE_NODE; public static String COLOUR_PALETTE_NODE;
public static String COLOURSC_NODE; public static String COLOURSC_NODE;
public static String CONDITION_NODE; public static String CONDITION_NODE;
public static String CONDITIONS_NODE;
public static String CONDITION_BUILDER_NAMESPACE; public static String CONDITION_BUILDER_NAMESPACE;
public static String CONNECTIONS_NODE; public static String CONNECTIONS_NODE;
public static String CONTENT_NODE; public static String CONTENT_NODE;
...@@ -111,6 +112,7 @@ public class Externalization extends NLS { ...@@ -111,6 +112,7 @@ public class Externalization extends NLS {
public static String FLIP_TITLE_BY_QUADRANT_NODE; public static String FLIP_TITLE_BY_QUADRANT_NODE;
public static String FONT_NODE; public static String FONT_NODE;
public static String FONT_SIZE_NODE; public static String FONT_SIZE_NODE;
public static String FOR_ATTRIBUTE;
public static String FULLSCREEN_NODE; public static String FULLSCREEN_NODE;
public static String GAP_NODE; public static String GAP_NODE;
public static String GLOBAL_STATE_LISTENER_NODE; public static String GLOBAL_STATE_LISTENER_NODE;
......
...@@ -23,6 +23,7 @@ package lu.list.itis.dkd.tui.widget; ...@@ -23,6 +23,7 @@ package lu.list.itis.dkd.tui.widget;
import lu.list.itis.dkd.dbc.annotation.NonNullByDefault; import lu.list.itis.dkd.dbc.annotation.NonNullByDefault;
import lu.list.itis.dkd.dbc.annotation.Nullable; import lu.list.itis.dkd.dbc.annotation.Nullable;
import lu.list.itis.dkd.tui.adapter.TangibleObject; import lu.list.itis.dkd.tui.adapter.TangibleObject;
import lu.list.itis.dkd.tui.event.conditional.Condition;
import lu.list.itis.dkd.tui.event.interaction.Handler; import lu.list.itis.dkd.tui.event.interaction.Handler;
import lu.list.itis.dkd.tui.event.interaction.Interaction; import lu.list.itis.dkd.tui.event.interaction.Interaction;
import lu.list.itis.dkd.tui.event.interaction.InteractionManager; import lu.list.i