diff --git a/samples/src/sample/atriasoft/ewol/BasicWindows.java b/samples/src/sample/atriasoft/ewol/BasicWindows.java index 8993d31..b8cb25e 100644 --- a/samples/src/sample/atriasoft/ewol/BasicWindows.java +++ b/samples/src/sample/atriasoft/ewol/BasicWindows.java @@ -1,113 +1,73 @@ package sample.atriasoft.ewol; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.atriasoft.aknot.reflect.ReflectClass; -import org.atriasoft.aknot.reflect.ReflectTools; +import org.atriasoft.aknot.exception.AknotException; +import org.atriasoft.aknot.model.IntrospectionModel; +import org.atriasoft.aknot.pojo.IntrospectionModelComplex; +import org.atriasoft.aknot.pojo.IntrospectionProperty; +import org.atriasoft.esignal.Connection; import org.atriasoft.esignal.Signal; import org.atriasoft.esignal.SignalEmpty; import org.atriasoft.etk.Color; +import org.atriasoft.etk.Dimension2f; import org.atriasoft.etk.Dimension3f; import org.atriasoft.etk.Distance; +import org.atriasoft.etk.Uri; +import org.atriasoft.etk.math.Vector2b; +import org.atriasoft.etk.math.Vector2f; +import org.atriasoft.etk.math.Vector2i; import org.atriasoft.etk.math.Vector3b; import org.atriasoft.etk.math.Vector3f; +import org.atriasoft.etk.math.Vector3i; import org.atriasoft.ewol.Gravity; import org.atriasoft.ewol.GravityDepth; import org.atriasoft.ewol.GravityHorizontal; import org.atriasoft.ewol.GravityVertical; import org.atriasoft.ewol.widget.Button; +import org.atriasoft.ewol.widget.CheckBox; +import org.atriasoft.ewol.widget.Entry; import org.atriasoft.ewol.widget.Label; import org.atriasoft.ewol.widget.Sizer; import org.atriasoft.ewol.widget.Sizer.DisplayMode; import org.atriasoft.ewol.widget.Spacer; +import org.atriasoft.ewol.widget.Spin; import org.atriasoft.ewol.widget.Widget; import org.atriasoft.ewol.widget.Windows; -import org.atriasoft.exml.parser.Tools; public class BasicWindows extends Windows { - private static final String LABEL_GRAVITY = "gravity
"; - - public static void eventButtonChangeGravity(final BasicWindows self) { - Gravity state = self.testWidget.getPropertyGravity(); - // TODO: I change the gravity model to integrate the 3rd rank... - if (state.x() == GravityHorizontal.LEFT && state.y() == GravityVertical.BOTTOM) { - state = new Gravity(GravityHorizontal.CENTER, GravityVertical.BOTTOM, GravityDepth.CENTER); - } else if (state.x() == GravityHorizontal.CENTER && state.y() == GravityVertical.BOTTOM) { - state = new Gravity(GravityHorizontal.RIGHT, GravityVertical.BOTTOM, GravityDepth.CENTER); - } else if (state.x() == GravityHorizontal.RIGHT && state.y() == GravityVertical.BOTTOM) { - state = new Gravity(GravityHorizontal.LEFT, GravityVertical.CENTER, GravityDepth.CENTER); - - } else if (state.x() == GravityHorizontal.LEFT && state.y() == GravityVertical.CENTER) { - state = new Gravity(GravityHorizontal.CENTER, GravityVertical.CENTER, GravityDepth.CENTER); - } else if (state.x() == GravityHorizontal.CENTER && state.y() == GravityVertical.CENTER) { - state = new Gravity(GravityHorizontal.RIGHT, GravityVertical.CENTER, GravityDepth.CENTER); - } else if (state.x() == GravityHorizontal.RIGHT && state.y() == GravityVertical.CENTER) { - state = new Gravity(GravityHorizontal.LEFT, GravityVertical.TOP, GravityDepth.CENTER); - - } else if (state.x() == GravityHorizontal.LEFT && state.y() == GravityVertical.TOP) { - state = new Gravity(GravityHorizontal.CENTER, GravityVertical.TOP, GravityDepth.CENTER); - } else if (state.x() == GravityHorizontal.CENTER && state.y() == GravityVertical.TOP) { - state = new Gravity(GravityHorizontal.RIGHT, GravityVertical.TOP, GravityDepth.CENTER); - } else if (state.x() == GravityHorizontal.RIGHT && state.y() == GravityVertical.TOP) { - state = new Gravity(GravityHorizontal.LEFT, GravityVertical.BOTTOM, GravityDepth.CENTER); - } - final Label gravLabel = (Label) (self.buttonGravity.getSubWidgets()[0]); - gravLabel.setPropertyValue(LABEL_GRAVITY + state.toString()); - self.testWidget.setPropertyGravity(state); - } - - public static void eventButtonExpandX(final BasicWindows self, final Boolean value) { - final Vector3b state = self.testWidget.getPropertyExpand(); - self.testWidget.setPropertyExpand(state.withX(value)); - Log.info("set expand X: {}", state.x() ? "un-expand X" : "expand X"); - } - - public static void eventButtonExpandY(final BasicWindows self, final Boolean value) { - final Vector3b state = self.testWidget.getPropertyExpand(); - self.testWidget.setPropertyExpand(state.withY(value)); - Log.info("set expand Y: {}", state.y() ? "un-expand Y" : "expand Y"); - } - - public static void eventButtonFillX(final BasicWindows self, final Boolean value) { - final Vector3b state = self.testWidget.getPropertyFill(); - self.testWidget.setPropertyFill(state.withX(value)); - Log.info("set fill X: {}", state.x() ? "un-fill X" : "fill X"); - } - - public static void eventButtonFillY(final BasicWindows self, final Boolean value) { - final Vector3b state = self.testWidget.getPropertyFill(); - self.testWidget.setPropertyFill(state.withY(value)); - Log.info("set fill Y: {}", state.y() ? "un-fill Y" : "fill Y"); - } + private static final String LABEL_GRAVITY = "gravity: "; Widget testWidget; - Button buttonExpandX; - Button buttonExpandY; - Button buttonFillX; - Button buttonFillY; - Button buttonGravity; Sizer sizerTestAreaHori; - Sizer sizerMenuHori; + Sizer sizerMenu; Gravity basicGravity = Gravity.BOTTOM_LEFT; + private final List conections = new ArrayList<>(); + public BasicWindows() { //! [ewol_sample_HW_windows_title] setPropertyTitle("No title set !!! for this test"); + final Sizer sizerMain = new Sizer(DisplayMode.HORIZONTAL); + sizerMain.setPropertyExpand(Vector3b.TRUE); + sizerMain.setPropertyFill(Vector3b.TRUE); + setSubWidget(sizerMain); + + this.sizerMenu = new Sizer(DisplayMode.VERTICAL); + this.sizerMenu.setPropertyExpand(Vector3b.FALSE_TRUE_FALSE); + this.sizerMenu.setPropertyLockExpand(Vector3b.TRUE); + this.sizerMenu.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.setPropertyMinSize(new Dimension3f(new Vector3f(350, 10, 10), Distance.PIXEL)); + this.sizerMenu.setPropertyGravity(Gravity.TOP); + sizerMain.subWidgetAdd(this.sizerMenu); + final Sizer sizerVertMain = new Sizer(DisplayMode.VERTICAL); sizerVertMain.setPropertyExpand(Vector3b.TRUE); sizerVertMain.setPropertyFill(Vector3b.TRUE); - setSubWidget(sizerVertMain); - - this.sizerMenuHori = new Sizer(DisplayMode.HORIZONTAL); - this.sizerMenuHori.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); - this.sizerMenuHori.setPropertyLockExpand(Vector3b.TRUE); - this.sizerMenuHori.setPropertyFill(Vector3b.TRUE); - sizerVertMain.subWidgetAdd(this.sizerMenuHori); + sizerMain.subWidgetAdd(sizerVertMain); { final Spacer simpleSpacer = new Spacer(); @@ -135,102 +95,957 @@ public class BasicWindows extends Windows { simpleSpacer.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); sizerVertMain.subWidgetAdd(simpleSpacer); } - - { - final Spacer simpleSpacer = new Spacer(); - simpleSpacer.setPropertyColor(Color.PINK); - simpleSpacer.setPropertyExpand(Vector3b.TRUE); - simpleSpacer.setPropertyFill(Vector3b.TRUE); - simpleSpacer.setPropertyMinSize(new Dimension3f(new Vector3f(30, 30, 30), Distance.PIXEL)); - this.sizerMenuHori.subWidgetAdd(simpleSpacer); - } - { - this.buttonExpandX = Button.createToggleLabelButton("Expand X", "Un-expand X"); - this.buttonExpandX.setPropertyExpand(Vector3b.FALSE_TRUE_FALSE); - this.buttonExpandX.setPropertyFill(Vector3b.FALSE); - this.buttonExpandX.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); - this.buttonExpandX.setPropertyGravity(Gravity.CENTER); - this.sizerMenuHori.subWidgetAdd(this.buttonExpandX); - this.buttonExpandX.signalValue.connectAuto(this, BasicWindows::eventButtonExpandX); - } - { - this.buttonExpandY = Button.createToggleLabelButton("Expand Y", "Un-expand Y"); - this.buttonExpandY.setPropertyExpand(Vector3b.FALSE_TRUE_FALSE); - this.buttonExpandY.setPropertyFill(Vector3b.FALSE); - this.buttonExpandY.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); - this.buttonExpandY.setPropertyGravity(Gravity.CENTER); - this.sizerMenuHori.subWidgetAdd(this.buttonExpandY); - this.buttonExpandY.signalValue.connectAuto(this, BasicWindows::eventButtonExpandY); - } - { - this.buttonFillX = Button.createToggleLabelButton("Fill X", "Un-fill X"); - this.buttonFillX.setPropertyExpand(Vector3b.FALSE_TRUE_FALSE); - this.buttonFillX.setPropertyFill(Vector3b.FALSE); - this.buttonFillX.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); - this.buttonFillX.setPropertyGravity(Gravity.CENTER); - this.sizerMenuHori.subWidgetAdd(this.buttonFillX); - this.buttonFillX.signalValue.connectAuto(this, BasicWindows::eventButtonFillX); - } - { - this.buttonFillY = Button.createToggleLabelButton("Fill Y", "Un-fill Y"); - this.buttonFillY.setPropertyExpand(Vector3b.FALSE_TRUE_FALSE); - this.buttonFillY.setPropertyFill(Vector3b.FALSE); - this.buttonFillY.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); - this.buttonFillY.setPropertyGravity(Gravity.CENTER); - this.sizerMenuHori.subWidgetAdd(this.buttonFillY); - this.buttonFillY.signalValue.connectAuto(this, BasicWindows::eventButtonFillY); - } - { - this.buttonGravity = Button.createLabelButton("Gravity"); - this.buttonGravity.setPropertyExpand(Vector3b.FALSE_TRUE_FALSE); - this.buttonGravity.setPropertyFill(Vector3b.FALSE); - this.buttonGravity.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); - this.buttonGravity.setPropertyGravity(Gravity.CENTER); - this.sizerMenuHori.subWidgetAdd(this.buttonGravity); - this.buttonGravity.signalClick.connectAuto(this, BasicWindows::eventButtonChangeGravity); - final Label gravLabel = (Label) (this.buttonGravity.getSubWidgets()[0]); - gravLabel.setPropertyValue(LABEL_GRAVITY + Gravity.BOTTOM_LEFT); - } } public void addButton(final Widget widget) { - this.sizerMenuHori.subWidgetAdd(widget); + this.sizerMenu.subWidgetAdd(widget); } - public void connectAllSignals(final Widget widget) throws Exception { + public void addMenuBoolean(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Boolean value) { + final CheckBox checkBox = new CheckBox("Y"); + checkBox.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + checkBox.setPropertyFill(Vector3b.TRUE); + checkBox.setPropertyValue(value); + this.sizerMenu.subWidgetAdd(checkBox); + final Connection con = checkBox.signalValue.connect((valueButton) -> { + try { + pojo.setExistingValue(widget, valueButton); + } catch (final AknotException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + + public void addMenuDimension2f(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Dimension2f value) { + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("X"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue((int) value.size().x()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Dimension2f castedValue) { + Log.warning("Set new value: {}", castedValue.withSize(castedValue.size().withX(valueButton))); + pojo.setExistingValue(widget, castedValue.withSize(castedValue.size().withX(valueButton))); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("Y"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue((int) value.size().y()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Dimension2f castedValue) { + Log.warning("Set new value: {}", castedValue.withSize(castedValue.size().withY(valueButton))); + pojo.setExistingValue(widget, castedValue.withSize(castedValue.size().withY(valueButton))); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + } + + public void addMenuDimension3f(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Dimension3f value) { + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("X"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue((int) value.size().x()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Dimension3f castedValue) { + Log.warning("Set new value: {}", castedValue.withSize(castedValue.size().withX(valueButton))); + pojo.setExistingValue(widget, castedValue.withSize(castedValue.size().withX(valueButton))); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("Y"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue((int) value.size().y()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Dimension3f castedValue) { + Log.warning("Set new value: {}", castedValue.withSize(castedValue.size().withY(valueButton))); + pojo.setExistingValue(widget, castedValue.withSize(castedValue.size().withY(valueButton))); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("Z"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue((int) value.size().z()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Dimension3f castedValue) { + Log.warning("Set new value: {}", castedValue.withSize(castedValue.size().withZ(valueButton))); + pojo.setExistingValue(widget, castedValue.withSize(castedValue.size().withZ(valueButton))); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + } + + public void addMenuDouble(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Double value) { + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue((int) (double) value); + this.sizerMenu.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + Log.warning("Set new value: {}", valueButton); + pojo.setExistingValue(widget, (double) valueButton); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + + public void addMenuFloat(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Float value) { + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue((int) (float) value); + this.sizerMenu.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + Log.warning("Set new value: {}", valueButton); + pojo.setExistingValue(widget, (float) valueButton); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + + public void addMenuGravity(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Gravity value) { + final Button buttonGravity = Button.createLabelButton("Gravity"); + buttonGravity.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + buttonGravity.setPropertyFill(Vector3b.TRUE); + buttonGravity.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + buttonGravity.setPropertyGravity(Gravity.CENTER); + this.sizerMenu.subWidgetAdd(buttonGravity); + final Label gravLabel = (Label) (buttonGravity.getSubWidgets()[0]); + gravLabel.setPropertyValue(LABEL_GRAVITY + Gravity.BOTTOM_LEFT); + + final Connection con = buttonGravity.signalClick.connect(() -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Gravity castedValue) { + Gravity state = castedValue; + // TODO: I change the gravity model to integrate the 3rd rank... + if (state.x() == GravityHorizontal.LEFT && state.y() == GravityVertical.BOTTOM) { + state = new Gravity(GravityHorizontal.CENTER, GravityVertical.BOTTOM, GravityDepth.CENTER); + } else if (state.x() == GravityHorizontal.CENTER && state.y() == GravityVertical.BOTTOM) { + state = new Gravity(GravityHorizontal.RIGHT, GravityVertical.BOTTOM, GravityDepth.CENTER); + } else if (state.x() == GravityHorizontal.RIGHT && state.y() == GravityVertical.BOTTOM) { + state = new Gravity(GravityHorizontal.LEFT, GravityVertical.CENTER, GravityDepth.CENTER); + + } else if (state.x() == GravityHorizontal.LEFT && state.y() == GravityVertical.CENTER) { + state = new Gravity(GravityHorizontal.CENTER, GravityVertical.CENTER, GravityDepth.CENTER); + } else if (state.x() == GravityHorizontal.CENTER && state.y() == GravityVertical.CENTER) { + state = new Gravity(GravityHorizontal.RIGHT, GravityVertical.CENTER, GravityDepth.CENTER); + } else if (state.x() == GravityHorizontal.RIGHT && state.y() == GravityVertical.CENTER) { + state = new Gravity(GravityHorizontal.LEFT, GravityVertical.TOP, GravityDepth.CENTER); + + } else if (state.x() == GravityHorizontal.LEFT && state.y() == GravityVertical.TOP) { + state = new Gravity(GravityHorizontal.CENTER, GravityVertical.TOP, GravityDepth.CENTER); + } else if (state.x() == GravityHorizontal.CENTER && state.y() == GravityVertical.TOP) { + state = new Gravity(GravityHorizontal.RIGHT, GravityVertical.TOP, GravityDepth.CENTER); + } else if (state.x() == GravityHorizontal.RIGHT && state.y() == GravityVertical.TOP) { + state = new Gravity(GravityHorizontal.LEFT, GravityVertical.BOTTOM, GravityDepth.CENTER); + } + gravLabel.setPropertyValue(LABEL_GRAVITY + state.toString()); + Log.warning("Set new value: {}", state); + pojo.setExistingValue(widget, state); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + + public void addMenuInt(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Integer value) { + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue(value); + this.sizerMenu.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + Log.warning("Set new value: {}", valueButton); + pojo.setExistingValue(widget, (int) (long) valueButton); + + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + + public void addMenuLong(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Long value) { + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue(value); + this.sizerMenu.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + Log.warning("Set new value: {}", valueButton); + pojo.setExistingValue(widget, valueButton); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + + public void addMenuString(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final String value) { + final Entry element = new Entry(); + element.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + element.setPropertyFill(Vector3b.TRUE); + element.setPropertyValue(value); + this.sizerMenu.subWidgetAdd(element); + final Connection con = element.signalModify.connect((valueButton) -> { + try { + Log.warning("Set new value: {}", valueButton); + pojo.setExistingValue(widget, valueButton); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + + public void addMenuURI(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Uri value) { + final Entry element = new Entry(); + element.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + element.setPropertyFill(Vector3b.TRUE); + element.setPropertyValue(value.toString()); + this.sizerMenu.subWidgetAdd(element); + final Connection con = element.signalModify.connect((valueButton) -> { + try { + Log.warning("Set new value: {}", valueButton); + pojo.setExistingValue(widget, Uri.valueOf(valueButton)); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + + public void addMenuVector2b(final Widget widget, final IntrospectionProperty pojo) { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Vector3b value) { + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + { + final CheckBox checkBox = new CheckBox("X"); + checkBox.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + checkBox.setPropertyFill(Vector3b.TRUE); + checkBox.setPropertyValue(value.x()); + lineSizer.subWidgetAdd(checkBox); + final Connection con = checkBox.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector2b castedValue) { + Log.warning("Set new value: {}", castedValue.withX(valueButton)); + pojo.setExistingValue(widget, castedValue.withX(valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + { + final CheckBox checkBox = new CheckBox("Y"); + checkBox.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + checkBox.setPropertyFill(Vector3b.TRUE); + checkBox.setPropertyValue(value.y()); + lineSizer.subWidgetAdd(checkBox); + final Connection con = checkBox.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector2b castedValue) { + pojo.setExistingValue(widget, castedValue.withY(valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + + } + + public void addMenuVector2f(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Vector2f value) { + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("X"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue((int) value.x()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector2f castedValue) { + Log.warning("Set new value: {}", castedValue.withX(valueButton)); + pojo.setExistingValue(widget, castedValue.withX(valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("Y"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue((int) value.y()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector2f castedValue) { + Log.warning("Set new value: {}", castedValue.withY(valueButton)); + pojo.setExistingValue(widget, castedValue.withY(valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + } + + public void addMenuVector2i(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Vector2i value) { + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("X"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue(value.x()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector2i castedValue) { + Log.warning("Set new value: {}", castedValue.withX((int) (long) valueButton)); + pojo.setExistingValue(widget, castedValue.withX((int) (long) valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("Y"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue(value.y()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector2i castedValue) { + Log.warning("Set new value: {}", castedValue.withY((int) (long) valueButton)); + pojo.setExistingValue(widget, castedValue.withY((int) (long) valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + } + + public void addMenuVector3b(final Widget widget, final IntrospectionProperty pojo) { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Vector3b value) { + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + { + final CheckBox checkBox = new CheckBox("X"); + checkBox.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + checkBox.setPropertyFill(Vector3b.TRUE); + checkBox.setPropertyValue(value.x()); + lineSizer.subWidgetAdd(checkBox); + final Connection con = checkBox.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector3b castedValue) { + Log.warning("Set new value: {}", castedValue.withX(valueButton)); + pojo.setExistingValue(widget, castedValue.withX(valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + { + final CheckBox checkBox = new CheckBox("Y"); + checkBox.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + checkBox.setPropertyFill(Vector3b.TRUE); + checkBox.setPropertyValue(value.y()); + lineSizer.subWidgetAdd(checkBox); + final Connection con = checkBox.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector3b castedValue) { + pojo.setExistingValue(widget, castedValue.withY(valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + { + final CheckBox checkBox = new CheckBox("Z"); + checkBox.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + checkBox.setPropertyFill(Vector3b.TRUE); + checkBox.setPropertyValue(value.z()); + lineSizer.subWidgetAdd(checkBox); + final Connection con = checkBox.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector3b castedValue) { + pojo.setExistingValue(widget, castedValue.withZ(valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + + } + + public void addMenuVector3f(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Vector3f value) { + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("X"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue((int) value.x()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector3f castedValue) { + Log.warning("Set new value: {}", castedValue.withX(valueButton)); + pojo.setExistingValue(widget, castedValue.withX(valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("Y"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue((int) value.y()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector3f castedValue) { + Log.warning("Set new value: {}", castedValue.withY(valueButton)); + pojo.setExistingValue(widget, castedValue.withY(valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("Z"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue((int) value.z()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector3f castedValue) { + Log.warning("Set new value: {}", castedValue.withZ(valueButton)); + pojo.setExistingValue(widget, castedValue.withZ(valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + } + + public void addMenuVector3i(final Widget widget, final IntrospectionProperty pojo) { + Object valueRaw = null; + try { + valueRaw = pojo.getValue(widget); + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + if (valueRaw instanceof final Vector3i value) { + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("X"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue(value.x()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector3i castedValue) { + Log.warning("Set new value: {}", castedValue.withX((int) (long) valueButton)); + pojo.setExistingValue(widget, castedValue.withX((int) (long) valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("Y"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue(value.y()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector3i castedValue) { + Log.warning("Set new value: {}", castedValue.withY((int) (long) valueButton)); + pojo.setExistingValue(widget, castedValue.withY((int) (long) valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + { + final Sizer lineSizer = new Sizer(DisplayMode.HORIZONTAL); + lineSizer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + lineSizer.setPropertyFill(Vector3b.TRUE); + this.sizerMenu.subWidgetAdd(lineSizer); + + final Label simpleLabel = new Label("Z"); + simpleLabel.setPropertyExpand(Vector3b.FALSE); + simpleLabel.setPropertyFill(Vector3b.TRUE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + lineSizer.subWidgetAdd(simpleLabel); + + final Spin spin = new Spin(); + spin.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + spin.setPropertyFill(Vector3b.TRUE); + spin.setPropertyValue(value.z()); + lineSizer.subWidgetAdd(spin); + final Connection con = spin.signalValue.connect((valueButton) -> { + try { + final Object oldValue = pojo.getValue(widget); + if (oldValue instanceof final Vector3i castedValue) { + Log.warning("Set new value: {}", castedValue.withZ((int) (long) valueButton)); + pojo.setExistingValue(widget, castedValue.withZ((int) (long) valueButton)); + } + } catch (final AknotException e) { + e.printStackTrace(); + return; + } + }); + this.conections.add(con); + } + } + } + + public void connectAllSignals(final Widget widget, final IntrospectionModelComplex modelPojo) throws Exception { Log.warning("Connect all signal(s) on '{}'", widget.getName()); - final Class classType = widget.getClass(); - final Field[] fields = classType.getFields(); - Log.verbose(" Fields: (" + fields.length + ")"); - for (final Field elem : fields) { - // we does not manage static field - if (Modifier.isStatic(elem.getModifiers())) { - continue; - } - // we does not manage private field - // NOTE: if the field is private I do not check the elements ==> the user want a private API !!! (maybe change ...) - if (!Modifier.isPublic(elem.getModifiers())) { - continue; - } - final Boolean isSignal = ReflectTools.getIsSignal(elem, false); - if (!isSignal) { - continue; - } - final String[] names = ReflectTools.getNames(elem, null); - String eventName = elem.toGenericString(); - Log.error(" - name={} otherNames={}", eventName, Arrays.toString(names)); - if (names.length != 0 && names[0] != null) { - eventName = names[0]; - } - final String description = ReflectTools.getDescription(elem); - if (description != null) { - Log.error(" ==> '{}'", description); - } - final Class[] types = ReflectTools.getTypeField(elem); - Log.error(" typeSignal '{}'", Arrays.toString(types)); - if (types.length == 2 && types[0] == Signal.class) { - Log.error(" ** Signal<{}>", types[1].getCanonicalName()); - final Object signalObject = elem.get(widget); + final List signals = modelPojo.getSignals(); + for (final IntrospectionProperty pojo : signals) { + Log.warning(" - '{}' otherNames={}", pojo.getBeanName(), Arrays.toString(pojo.getNames())); + Log.warning(" ==> description='{}'", pojo.getDescription()); + Log.warning(" ==> type='{}'", pojo.getType()); + Log.warning(" ==> sub-type='{}'", pojo.getSubType()); + + final String eventName = pojo.getNames() != null && pojo.getNames().length != 0 ? pojo.getNames()[0] : pojo.getBeanName(); + + if (pojo.getSubType() != null && pojo.getType() == Signal.class) { + Log.warning(" ** Signal<{}>", pojo.getSubType()); + final Object signalObject = pojo.getValue(widget); if (signalObject == null) { Log.error("Signal is not accessible !!!!!!! "); } else { @@ -242,49 +1057,87 @@ public class BasicWindows extends Windows { }); } } - if (types.length == 1 && types[0] == SignalEmpty.class) { - Log.error(" ** SignalEmpty"); + if (pojo.getSubType() == null && pojo.getType() == SignalEmpty.class) { + Log.warning(" ** SignalEmpty"); + final Object signalObject = pojo.getValue(widget); + if (signalObject == null) { + Log.error("Signal is not accessible !!!!!!! "); + } else { + final String valueNameOfSignal = eventName; + final SignalEmpty tmp = (SignalEmpty) signalObject; + tmp.connect(() -> { + Log.print("Get event from '{}'", valueNameOfSignal); + }); + } } - } - } - public void displayAllPropertyWithType(final Widget widget) throws Exception { + public void displayAllPropertyWithType(final Widget widget, final IntrospectionModel modelPojo) throws Exception { Log.warning("Connect all property(ies) on '{}'", widget.getName()); - final Class classType = widget.getClass(); - final List methods = ReflectClass.getFilterGenericFucntion(classType, null, true, true, true); - // Separate the methods and filer as: - // - XXX GetXxx(); & XXX != boolean - // - void setXxx(XXX elem); - // - [bB]oolean isXxx(); - // for records: - // - xxx(); - final boolean isRecord = Record.class.isAssignableFrom(classType); - final List methodsGet = ReflectClass.extractGetMethod(classType, methods, null); - for (final Method elem : methodsGet) { - final String name = Tools.decapitalizeFirst(isRecord ? elem.getName() : elem.getName().substring(3)); - final Boolean isAttribute = ReflectTools.getIsAttribute(elem, false); - if (!isAttribute) { - continue; + final List atributes = modelPojo.getAttributes(); + for (final IntrospectionProperty pojo : atributes) { + Log.warning(" - '{}' otherNames={}", pojo.getBeanName(), Arrays.toString(pojo.getNames())); + Log.warning(" ==> description='{}'", pojo.getDescription()); + Log.warning(" ==> type='{}'", pojo.getType()); + Log.warning(" ==> sub-type='{}'", pojo.getSubType()); + final String propertyName = pojo.getNames() != null && pojo.getNames().length != 0 ? pojo.getNames()[0] : pojo.getBeanName(); + if (pojo.getType() == int.class || pojo.getType() == Integer.class) { + addMenuInt(widget, pojo); + } else if (pojo.getType() == long.class || pojo.getType() == Long.class) { + addMenuLong(widget, pojo); + } else if (pojo.getType() == boolean.class || pojo.getType() == Boolean.class) { + addMenuBoolean(widget, pojo); + } else if (pojo.getType() == float.class || pojo.getType() == Float.class) { + addMenuFloat(widget, pojo); + } else if (pojo.getType() == double.class || pojo.getType() == Double.class) { + addMenuDouble(widget, pojo); + } else if (pojo.getType() == String.class) { + addMenuString(widget, pojo); + } else if (pojo.getType() == Vector3f.class) { + addMenuVector3f(widget, pojo); + } else if (pojo.getType() == Vector2f.class) { + addMenuVector2f(widget, pojo); + } else if (pojo.getType() == Vector3b.class) { + addMenuVector3b(widget, pojo); + } else if (pojo.getType() == Vector2b.class) { + addMenuVector2b(widget, pojo); + } else if (pojo.getType() == Vector3i.class) { + addMenuVector3i(widget, pojo); + } else if (pojo.getType() == Vector2i.class) { + addMenuVector2i(widget, pojo); + } else if (pojo.getType() == Dimension3f.class) { + addMenuDimension3f(widget, pojo); + } else if (pojo.getType() == Dimension2f.class) { + addMenuDimension2f(widget, pojo); + } else if (pojo.getType() == DisplayMode.class) { + Log.error(" ==> plop"); + } else if (pojo.getType() == Uri.class) { + addMenuURI(widget, pojo); + } else if (pojo.getType() == Gravity.class) { + addMenuGravity(widget, pojo); + } else { + Log.error(" ==> property type unknown='{}'", pojo.getType()); } - final String[] otherNames = ReflectTools.getNames(elem, null); - Log.error(" - '{}' otherNames={}", name, Arrays.toString(otherNames)); - final String description = ReflectTools.getDescription(elem); - if (description != null) { - Log.error(" ==> '{}'", description); + { + final Label simpleLabel = new Label("" + propertyName + ":"); + simpleLabel.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE); + simpleLabel.setPropertyFill(Vector3b.FALSE); + simpleLabel.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL)); + simpleLabel.setPropertyGravity(Gravity.LEFT); + this.sizerMenu.subWidgetAdd(simpleLabel); } } - } public void setTestWidget(final Widget widget) { try { - connectAllSignals(widget); - displayAllPropertyWithType(widget); + final IntrospectionModelComplex modelPojo = new IntrospectionModelComplex(widget.getClass()); + + connectAllSignals(widget, modelPojo); + displayAllPropertyWithType(widget, modelPojo); } catch (final Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); } this.sizerTestAreaHori.subWidgetRemoveAll(); @@ -309,16 +1162,16 @@ public class BasicWindows extends Windows { this.sizerTestAreaHori.subWidgetAdd(simpleSpacer); } // update properties... - final Vector3b stateExpand = this.testWidget.getPropertyExpand(); - this.buttonExpandX.setPropertyValue(stateExpand.x()); - this.buttonExpandY.setPropertyValue(stateExpand.y()); - final Vector3b stateFill = this.testWidget.getPropertyFill(); - this.buttonFillX.setPropertyValue(stateFill.x()); - this.buttonFillY.setPropertyValue(stateFill.y()); + //final Vector3b stateExpand = this.testWidget.getPropertyExpand(); + //this.buttonExpandX.setPropertyValue(stateExpand.x()); + //this.buttonExpandY.setPropertyValue(stateExpand.y()); + //final Vector3b stateFill = this.testWidget.getPropertyFill(); + //this.buttonFillX.setPropertyValue(stateFill.x()); + //this.buttonFillY.setPropertyValue(stateFill.y()); - final Gravity gravity = this.testWidget.getPropertyGravity(); - final Label gravLabel = (Label) (this.buttonGravity.getSubWidgets()[0]); - gravLabel.setPropertyValue(LABEL_GRAVITY + gravity.toString()); + //final Gravity gravity = this.testWidget.getPropertyGravity(); + //final Label gravLabel = (Label) (this.buttonGravity.getSubWidgets()[0]); + //gravLabel.setPropertyValue(LABEL_GRAVITY + gravity.toString()); } } \ No newline at end of file diff --git a/samples/src/sample/atriasoft/ewol/sampleButton/MainWindows.java b/samples/src/sample/atriasoft/ewol/sampleButton/MainWindows.java index 6a844f6..b32fa9d 100644 --- a/samples/src/sample/atriasoft/ewol/sampleButton/MainWindows.java +++ b/samples/src/sample/atriasoft/ewol/sampleButton/MainWindows.java @@ -1,6 +1,5 @@ package sample.atriasoft.ewol.sampleButton; -import org.atriasoft.etk.Uri; import org.atriasoft.ewol.widget.Composer; import org.atriasoft.ewol.widget.Widget; @@ -11,11 +10,11 @@ public class MainWindows extends BasicWindows { public MainWindows() { setPropertyTitle("Simple Button test"); //final Widget data = Composer.composerGenerateString(""); - final Widget data = Composer.composerGenerateString(""); - /* - final Widget data = Composer.composerGenerateString(""); - */ + /* */ //final Widget data = Composer.composerGenerateFile(new Uri("DATA", "ewol-gui-file-chooser.xml", "ewol")); this.setTestWidget(data); /* diff --git a/src/org/atriasoft/ewol/compositing/TextBase.java b/src/org/atriasoft/ewol/compositing/TextBase.java index 6c569e6..20bd59b 100644 --- a/src/org/atriasoft/ewol/compositing/TextBase.java +++ b/src/org/atriasoft/ewol/compositing/TextBase.java @@ -8,6 +8,7 @@ package org.atriasoft.ewol.compositing; import java.util.ArrayList; import java.util.List; +import org.atriasoft.aknot.exception.AknotException; import org.atriasoft.etk.Color; import org.atriasoft.etk.Uri; import org.atriasoft.etk.math.Matrix4f; @@ -808,6 +809,9 @@ public abstract class TextBase extends Compositing { } catch (final ExmlException e) { Log.error("Error in finding node from XML data in printHTML:" + e.getMessage()); e.printStackTrace(); + } catch (final AknotException e) { + Log.error("Error in parsing pojo data in printHTML:" + e.getMessage()); + e.printStackTrace(); } } diff --git a/src/org/atriasoft/ewol/widget/Composer.java b/src/org/atriasoft/ewol/widget/Composer.java index ac23084..9ca8d2c 100644 --- a/src/org/atriasoft/ewol/widget/Composer.java +++ b/src/org/atriasoft/ewol/widget/Composer.java @@ -9,6 +9,7 @@ import org.atriasoft.aknot.annotation.AknotDescription; */ import org.atriasoft.aknot.annotation.AknotManaged; import org.atriasoft.aknot.annotation.AknotName; +import org.atriasoft.aknot.exception.AknotException; import org.atriasoft.etk.Dimension3f; import org.atriasoft.etk.Uri; import org.atriasoft.etk.math.Vector3b; @@ -63,6 +64,9 @@ public class Composer extends Container { } catch (final ExmlException ex) { Log.error("Fail to load Data !!! {}", ex.toString()); ex.printStackTrace(); + } catch (final AknotException ex) { + Log.error("Fail to load Data !!! {}", ex.toString()); + ex.printStackTrace(); } if (result == null) { return null; diff --git a/src/org/atriasoft/ewol/widget/Tick.java b/src/org/atriasoft/ewol/widget/Tick.java index fd84c18..03b0010 100644 --- a/src/org/atriasoft/ewol/widget/Tick.java +++ b/src/org/atriasoft/ewol/widget/Tick.java @@ -205,7 +205,7 @@ public class Tick extends Widget { if (KeyStatus.pressSingle == event.status() && over) { keepFocus(); this.signalClick.emit(); - this.propertyValue = !this.propertyValue; + setPropertyValue(!this.propertyValue); return true; } if (KeyStatus.down == event.status() && over) {