diff --git a/resources/resources/ewol/theme/shape/CheckBox.json b/resources/resources/ewol/theme/shape/CheckBox.json
index 64cabc0..b1f0257 100644
--- a/resources/resources/ewol/theme/shape/CheckBox.json
+++ b/resources/resources/ewol/theme/shape/CheckBox.json
@@ -12,7 +12,7 @@
"padding-in-buttom":0,
# render program:
- "program-vert":"THEME:shape/aaRenderShape.vert?lib=ewol",
+ "program-vert":"THEME:shape/aaRenderShapeScale.vert?lib=ewol",
"program-frag":"THEME:shape/aaRenderShape.frag?lib=ewol",
# Object to render (with modification)
diff --git a/resources/resources/ewol/theme/shape/Entry.blend1 b/resources/resources/ewol/theme/shape/Entry.blend1
deleted file mode 100644
index 0c39e1a..0000000
Binary files a/resources/resources/ewol/theme/shape/Entry.blend1 and /dev/null differ
diff --git a/resources/resources/ewol/theme/shape/aaRenderShape.vert b/resources/resources/ewol/theme/shape/aaRenderShape.vert
index 1bd3356..88079dd 100644
--- a/resources/resources/ewol/theme/shape/aaRenderShape.vert
+++ b/resources/resources/ewol/theme/shape/aaRenderShape.vert
@@ -9,7 +9,6 @@ precision mediump int;
layout (location = 0) in vec3 in_position;
layout (location = 1) in vec2 in_textureCoords;
-uniform vec3 in_offsetScaleInside;
uniform vec3 in_offsetScaleOutside;
uniform mat4 in_matrixTransformation;
@@ -20,31 +19,9 @@ uniform mat4 in_matrixView;
out vec2 io_textureCoords;
void main(void) {
- float xxx = in_position.x;
- if (abs(xxx) < 10.0) {
- xxx = xxx * in_offsetScaleInside.x * 0.1;
- } else {
- xxx = xxx + sign(xxx)*in_offsetScaleOutside.x;
- }
- float yyy = in_position.y;
- if (abs(yyy) < 10.0) {
- yyy = yyy * in_offsetScaleInside.y * 0.1;
- } else {
- yyy = yyy + sign(yyy)*in_offsetScaleOutside.y;
- }
- float zzz = in_position.z;
- if (abs(zzz) < 10.0) {
- zzz = zzz * in_offsetScaleInside.z * 0.1;
- } else {
- zzz = zzz + sign(zzz)*in_offsetScaleOutside.z;
- }
- vec4 position = vec4(xxx, yyy, zzz, 1.0);
- /*
- // this is the old mode before checkbox : ==> maybe create 2 shader????
vec4 position = vec4(in_position.x + sign(in_position.x)*in_offsetScaleOutside.x,
in_position.y + sign(in_position.y)*in_offsetScaleOutside.y,
in_position.z + sign(in_position.z)*in_offsetScaleOutside.z, 1.0);
- */
gl_Position = in_matrixProjection * in_matrixView * in_matrixTransformation * position;
io_textureCoords = in_textureCoords;
}
diff --git a/resources/resources/ewol/theme/shape/aaRenderShapeScale.vert b/resources/resources/ewol/theme/shape/aaRenderShapeScale.vert
new file mode 100644
index 0000000..71d9826
--- /dev/null
+++ b/resources/resources/ewol/theme/shape/aaRenderShapeScale.vert
@@ -0,0 +1,44 @@
+#version 400 core
+
+#ifdef GL_ES
+precision mediump float;
+precision mediump int;
+#endif
+
+// Input:
+layout (location = 0) in vec3 in_position;
+layout (location = 1) in vec2 in_textureCoords;
+
+uniform vec3 in_offsetScaleInside;
+uniform vec3 in_offsetScaleOutside;
+
+uniform mat4 in_matrixTransformation;
+uniform mat4 in_matrixProjection;
+uniform mat4 in_matrixView;
+
+// output:
+out vec2 io_textureCoords;
+
+void main(void) {
+ float xxx = in_position.x;
+ if (abs(xxx) < 10.0) {
+ xxx = xxx * in_offsetScaleInside.x * 0.1;
+ } else {
+ xxx = xxx + sign(xxx)*in_offsetScaleOutside.x;
+ }
+ float yyy = in_position.y;
+ if (abs(yyy) < 10.0) {
+ yyy = yyy * in_offsetScaleInside.y * 0.1;
+ } else {
+ yyy = yyy + sign(yyy)*in_offsetScaleOutside.y;
+ }
+ float zzz = in_position.z;
+ if (abs(zzz) < 10.0) {
+ zzz = zzz * in_offsetScaleInside.z * 0.1;
+ } else {
+ zzz = zzz + sign(zzz)*in_offsetScaleOutside.z;
+ }
+ vec4 position = vec4(xxx, yyy, zzz, 1.0);
+ gl_Position = in_matrixProjection * in_matrixView * in_matrixTransformation * position;
+ io_textureCoords = in_textureCoords;
+}
diff --git a/samples/src/sample/atriasoft/ewol/BasicWindows.java b/samples/src/sample/atriasoft/ewol/BasicWindows.java
new file mode 100644
index 0000000..18eebcb
--- /dev/null
+++ b/samples/src/sample/atriasoft/ewol/BasicWindows.java
@@ -0,0 +1,192 @@
+package sample.atriasoft.ewol;
+
+import org.atriasoft.etk.Color;
+import org.atriasoft.etk.Dimension;
+import org.atriasoft.etk.Distance;
+import org.atriasoft.etk.math.Vector2b;
+import org.atriasoft.etk.math.Vector2f;
+import org.atriasoft.ewol.Gravity;
+import org.atriasoft.ewol.widget.Button;
+import org.atriasoft.ewol.widget.Sizer;
+import org.atriasoft.ewol.widget.Sizer.DisplayMode;
+import org.atriasoft.ewol.widget.Spacer;
+import org.atriasoft.ewol.widget.Widget;
+import org.atriasoft.ewol.widget.Windows;
+
+public class BasicWindows extends Windows {
+ public static void eventButtonChangeGravity(final BasicWindows self) {
+ Gravity state = self.testWidget.getPropertyGravity();
+ state = switch (state) {
+ case BUTTOM -> Gravity.BUTTOM_LEFT;
+ case BUTTOM_LEFT -> Gravity.BUTTOM_RIGHT;
+ case BUTTOM_RIGHT -> Gravity.CENTER;
+ case CENTER -> Gravity.LEFT;
+ case LEFT -> Gravity.RIGHT;
+ case RIGHT -> Gravity.TOP;
+ case TOP -> Gravity.TOP_LEFT;
+ case TOP_LEFT -> Gravity.TOP_RIGHT;
+ case TOP_RIGHT -> Gravity.BUTTOM;
+ };
+ self.testWidget.setPropertyGravity(state);
+ self.buttonGravity.setPropertyValue("gravity: " + state);
+ }
+
+ public static void eventButtonExpandX(final BasicWindows self) {
+ Vector2b state = self.testWidget.getPropertyExpand();
+ self.testWidget.setPropertyExpand(state.withX(!state.x()));
+ self.buttonExpandX.setPropertyValue(state.x() ? "expand X" : "un-expand X");
+ }
+
+ public static void eventButtonExpandY(final BasicWindows self) {
+ Vector2b state = self.testWidget.getPropertyExpand();
+ self.testWidget.setPropertyExpand(state.withY(!state.y()));
+ self.buttonExpandY.setPropertyValue(state.y() ? "expand Y" : "un-expand Y");
+ }
+
+ public static void eventButtonFillX(final BasicWindows self) {
+ Vector2b state = self.testWidget.getPropertyFill();
+ self.testWidget.setPropertyFill(state.withX(!state.x()));
+ self.buttonFillX.setPropertyValue(state.x() ? "fill X" : "un-fill X");
+ }
+
+ public static void eventButtonFillY(final BasicWindows self) {
+ Vector2b state = self.testWidget.getPropertyFill();
+ self.testWidget.setPropertyFill(state.withY(!state.y()));
+ self.buttonFillY.setPropertyValue(state.y() ? "fill Y" : "un-fill Y");
+ }
+
+ Widget testWidget;
+ Button buttonExpandX;
+ Button buttonExpandY;
+ Button buttonFillX;
+ Button buttonFillY;
+ Button buttonGravity;
+ Sizer sizerTestAreaHori;
+ Sizer sizerMenuHori;
+
+ public BasicWindows() {
+ //! [ewol_sample_HW_windows_title]
+ setPropertyTitle("No title set !!! for this test");
+
+ Sizer sizerVertMain = new Sizer(DisplayMode.modeVert);
+ sizerVertMain.setPropertyExpand(Vector2b.TRUE_TRUE);
+ sizerVertMain.setPropertyFill(Vector2b.TRUE_TRUE);
+ setSubWidget(sizerVertMain);
+
+ this.sizerMenuHori = new Sizer(DisplayMode.modeHori);
+ this.sizerMenuHori.setPropertyExpand(Vector2b.TRUE_FALSE);
+ this.sizerMenuHori.setPropertyLockExpand(Vector2b.TRUE_TRUE);
+ this.sizerMenuHori.setPropertyFill(Vector2b.TRUE_TRUE);
+ sizerVertMain.subWidgetAdd(this.sizerMenuHori);
+
+ {
+ Spacer simpleSpacer = new Spacer();
+ simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(100, 100), Distance.PIXEL));
+ simpleSpacer.setPropertyColor(Color.ALICE_BLUE);
+ simpleSpacer.setPropertyExpand(Vector2b.TRUE_FALSE);
+ simpleSpacer.setPropertyExpandIfFree(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ sizerVertMain.subWidgetAdd(simpleSpacer);
+ }
+
+ this.sizerTestAreaHori = new Sizer(DisplayMode.modeHori);
+ this.sizerTestAreaHori.setPropertyExpand(Vector2b.TRUE_FALSE);
+ this.sizerTestAreaHori.setPropertyExpandIfFree(Vector2b.TRUE_TRUE);
+ this.sizerTestAreaHori.setPropertyFill(Vector2b.TRUE_FALSE);
+ sizerVertMain.subWidgetAdd(this.sizerTestAreaHori);
+
+ {
+ Spacer simpleSpacer = new Spacer();
+ simpleSpacer.setPropertyColor(Color.DARK_GREEN);
+ simpleSpacer.setPropertyExpand(Vector2b.TRUE_FALSE);
+ simpleSpacer.setPropertyExpandIfFree(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ sizerVertMain.subWidgetAdd(simpleSpacer);
+ }
+
+ {
+ Spacer simpleSpacer = new Spacer();
+ simpleSpacer.setPropertyColor(Color.PINK);
+ simpleSpacer.setPropertyExpand(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(30, 30), Distance.PIXEL));
+ this.sizerMenuHori.subWidgetAdd(simpleSpacer);
+ }
+ {
+ this.buttonExpandX = new Button();
+ this.buttonExpandX.setPropertyValue("un-expand X");
+ this.buttonExpandX.setPropertyExpand(Vector2b.FALSE_FALSE);
+ this.buttonExpandX.setPropertyFill(Vector2b.FALSE_FALSE);
+ this.buttonExpandX.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.sizerMenuHori.subWidgetAdd(this.buttonExpandX);
+ this.buttonExpandX.signalClick.connectAuto(this, BasicWindows::eventButtonExpandX);
+ }
+ {
+ this.buttonExpandY = new Button();
+ this.buttonExpandY.setPropertyValue("un-expand Y");
+ this.buttonExpandY.setPropertyExpand(Vector2b.FALSE_FALSE);
+ this.buttonExpandY.setPropertyFill(Vector2b.FALSE_FALSE);
+ this.buttonExpandY.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.sizerMenuHori.subWidgetAdd(this.buttonExpandY);
+ this.buttonExpandY.signalClick.connectAuto(this, BasicWindows::eventButtonExpandY);
+ }
+ {
+ this.buttonFillX = new Button();
+ this.buttonFillX.setPropertyValue("un-fill X");
+ this.buttonFillX.setPropertyExpand(Vector2b.FALSE_FALSE);
+ this.buttonFillX.setPropertyFill(Vector2b.FALSE_FALSE);
+ this.buttonFillX.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.sizerMenuHori.subWidgetAdd(this.buttonFillX);
+ this.buttonFillX.signalClick.connectAuto(this, BasicWindows::eventButtonFillX);
+ }
+ {
+ this.buttonFillY = new Button();
+ this.buttonFillY.setPropertyValue("un-fill Y");
+ this.buttonFillY.setPropertyExpand(Vector2b.FALSE_FALSE);
+ this.buttonFillY.setPropertyFill(Vector2b.FALSE_FALSE);
+ this.buttonFillY.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.sizerMenuHori.subWidgetAdd(this.buttonFillY);
+ this.buttonFillY.signalClick.connectAuto(this, BasicWindows::eventButtonFillY);
+ }
+ {
+ this.buttonGravity = new Button();
+ this.buttonGravity.setPropertyValue("gravity");
+ this.buttonGravity.setPropertyExpand(Vector2b.FALSE_FALSE);
+ this.buttonGravity.setPropertyFill(Vector2b.FALSE_FALSE);
+ this.buttonGravity.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.sizerMenuHori.subWidgetAdd(this.buttonGravity);
+ this.buttonGravity.signalClick.connectAuto(this, BasicWindows::eventButtonChangeGravity);
+ }
+
+ }
+
+ public void addButton(Widget widget) {
+ this.sizerMenuHori.subWidgetAdd(widget);
+ }
+
+ public void setTestWidget(Widget widget) {
+ this.sizerTestAreaHori.subWidgetRemoveAll();
+ {
+ Spacer simpleSpacer = new Spacer();
+ simpleSpacer.setPropertyColor(Color.CHOCOLATE);
+ simpleSpacer.setPropertyExpand(Vector2b.FALSE_FALSE);
+ simpleSpacer.setPropertyExpandIfFree(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.sizerTestAreaHori.subWidgetAdd(simpleSpacer);
+ }
+ this.testWidget = widget;
+ this.sizerTestAreaHori.subWidgetAdd(this.testWidget);
+ {
+ Spacer simpleSpacer = new Spacer();
+ simpleSpacer.setPropertyColor(Color.GREEN_YELLOW);
+ simpleSpacer.setPropertyExpand(Vector2b.FALSE_FALSE);
+ simpleSpacer.setPropertyExpandIfFree(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.sizerTestAreaHori.subWidgetAdd(simpleSpacer);
+ }
+ }
+}
\ 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 c306425..0954678 100644
--- a/samples/src/sample/atriasoft/ewol/sampleButton/MainWindows.java
+++ b/samples/src/sample/atriasoft/ewol/sampleButton/MainWindows.java
@@ -2,31 +2,18 @@ package sample.atriasoft.ewol.sampleButton;
import org.atriasoft.etk.math.Vector2b;
import org.atriasoft.ewol.widget.Button;
-import org.atriasoft.ewol.widget.Sizer;
-import org.atriasoft.ewol.widget.Sizer.DisplayMode;
-import org.atriasoft.ewol.widget.Windows;
-public class MainWindows extends Windows {
+import sample.atriasoft.ewol.BasicWindows;
+
+public class MainWindows extends BasicWindows {
public MainWindows() {
setPropertyTitle("Simple Button test");
- //EwolObject.getContext().getFontDefault().setName("FreeSans");
-
- Sizer sizerMain = new Sizer(DisplayMode.modeVert);
- sizerMain.setPropertyExpand(new Vector2b(true, true));
- sizerMain.setPropertyFill(new Vector2b(true, true));
- setSubWidget(sizerMain);
-
+
Button simpleButton = new Button();
simpleButton.setPropertyValue("Top Button");
simpleButton.setPropertyExpand(new Vector2b(true, true));
simpleButton.setPropertyFill(new Vector2b(true, false));
- sizerMain.subWidgetAdd(simpleButton);
-
- Button simpleButton2 = new Button();
- simpleButton2.setPropertyValue("Botom Button");
- simpleButton2.setPropertyExpand(new Vector2b(true, true));
- simpleButton2.setPropertyFill(new Vector2b(false, true));
- sizerMain.subWidgetAdd(simpleButton2);
+ this.setTestWidget(simpleButton);
}
}
diff --git a/samples/src/sample/atriasoft/ewol/sampleEntry/MainWindows.java b/samples/src/sample/atriasoft/ewol/sampleEntry/MainWindows.java
index 29a713d..1075e61 100644
--- a/samples/src/sample/atriasoft/ewol/sampleEntry/MainWindows.java
+++ b/samples/src/sample/atriasoft/ewol/sampleEntry/MainWindows.java
@@ -2,29 +2,18 @@ package sample.atriasoft.ewol.sampleEntry;
import org.atriasoft.etk.math.Vector2b;
import org.atriasoft.ewol.widget.Entry;
-import org.atriasoft.ewol.widget.Sizer;
-import org.atriasoft.ewol.widget.Sizer.DisplayMode;
-import org.atriasoft.ewol.widget.Windows;
-public class MainWindows extends Windows {
+import sample.atriasoft.ewol.BasicWindows;
+
+public class MainWindows extends BasicWindows {
public MainWindows() {
setPropertyTitle("Simple Entry test");
- //EwolObject.getContext().getFontDefault().setName("FreeSans");
-
- Sizer sizerMain = new Sizer(DisplayMode.modeVert);
- sizerMain.setPropertyExpand(new Vector2b(true, true));
- sizerMain.setPropertyFill(new Vector2b(true, true));
- setSubWidget(sizerMain);
-
+
Entry simpleEntry = new Entry();
simpleEntry.setPropertyExpand(new Vector2b(true, true));
simpleEntry.setPropertyFill(new Vector2b(true, false));
- sizerMain.subWidgetAdd(simpleEntry);
+ this.setTestWidget(simpleEntry);
- Entry simpleEntry2 = new Entry();
- simpleEntry2.setPropertyExpand(new Vector2b(true, true));
- simpleEntry2.setPropertyFill(new Vector2b(true, false));
- sizerMain.subWidgetAdd(simpleEntry2);
}
}
diff --git a/samples/src/sample/atriasoft/ewol/simpleWindowsLabel/MainWindows.java b/samples/src/sample/atriasoft/ewol/simpleWindowsLabel/MainWindows.java
index d0c5246..dcb1cd3 100644
--- a/samples/src/sample/atriasoft/ewol/simpleWindowsLabel/MainWindows.java
+++ b/samples/src/sample/atriasoft/ewol/simpleWindowsLabel/MainWindows.java
@@ -3,9 +3,10 @@ package sample.atriasoft.ewol.simpleWindowsLabel;
import org.atriasoft.etk.math.Vector2b;
import org.atriasoft.ewol.widget.Label;
import org.atriasoft.ewol.widget.Spacer;
-import org.atriasoft.ewol.widget.Windows;
-public class MainWindows extends Windows {
+import sample.atriasoft.ewol.BasicWindows;
+
+public class MainWindows extends BasicWindows {
public MainWindows() {
//! [ewol_sample_HW_windows_title]
@@ -19,13 +20,13 @@ public class MainWindows extends Windows {
"Hello. World
- Coucou comment ca vas ???
- Pas trop bien, je me suis cassé la jambe.
The end");
simpleLabel.setPropertyExpand(new Vector2b(true, true));
simpleLabel.setPropertyFill(new Vector2b(true, true));
- setSubWidget(simpleLabel);
+ this.setTestWidget(simpleLabel);
//! [ewol_sample_HW_windows_label]
} else {
Spacer simpleSpacer = new Spacer();
simpleSpacer.setPropertyExpand(new Vector2b(true, true));
simpleSpacer.setPropertyFill(new Vector2b(true, true));
- setSubWidget(simpleSpacer);
+ this.setTestWidget(simpleSpacer);
}
}
}
diff --git a/samples/src/sample/atriasoft/ewol/simpleWindowsWithCheckBox/MainWindows.java b/samples/src/sample/atriasoft/ewol/simpleWindowsWithCheckBox/MainWindows.java
index 44739ac..53a4d2b 100644
--- a/samples/src/sample/atriasoft/ewol/simpleWindowsWithCheckBox/MainWindows.java
+++ b/samples/src/sample/atriasoft/ewol/simpleWindowsWithCheckBox/MainWindows.java
@@ -1,220 +1,22 @@
package sample.atriasoft.ewol.simpleWindowsWithCheckBox;
-import org.atriasoft.etk.Color;
-import org.atriasoft.etk.Dimension;
-import org.atriasoft.etk.Distance;
import org.atriasoft.etk.math.Vector2b;
-import org.atriasoft.etk.math.Vector2f;
-import org.atriasoft.ewol.Gravity;
-import org.atriasoft.ewol.widget.Button;
import org.atriasoft.ewol.widget.CheckBox;
-import org.atriasoft.ewol.widget.Sizer;
-import org.atriasoft.ewol.widget.Sizer.DisplayMode;
-import org.atriasoft.ewol.widget.Spacer;
-import org.atriasoft.ewol.widget.Windows;
-public class MainWindows extends Windows {
+import sample.atriasoft.ewol.BasicWindows;
+
+public class MainWindows extends BasicWindows {
+
CheckBox testWidget;
- Button buttonExpandX;
- Button buttonExpandY;
- Button buttonFillX;
- Button buttonFillY;
- Button buttonGravity;
- Button buttonAspectRatio;
+
public MainWindows() {
//! [ewol_sample_HW_windows_title]
setPropertyTitle("Simple CheckBox");
-
- Sizer sizerMain = new Sizer(DisplayMode.modeVert);
- sizerMain.setPropertyExpand(new Vector2b(true, true));
- sizerMain.setPropertyFill(new Vector2b(true, true));
- setSubWidget(sizerMain);
- Sizer sizerHori1 = new Sizer(DisplayMode.modeHori);
- sizerHori1.setPropertyExpand(new Vector2b(true, false));
- sizerHori1.setPropertyLockExpand(new Vector2b(true, true));
- sizerHori1.setPropertyFill(new Vector2b(true, true));
- sizerMain.subWidgetAdd(sizerHori1);
-
- {
- Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(100, 100), Distance.PIXEL));
- simpleSpacer.setPropertyColor(Color.ALICE_BLUE);
- simpleSpacer.setPropertyExpand(new Vector2b(true, false));
- simpleSpacer.setPropertyFill(new Vector2b(true, true));
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerMain.subWidgetAdd(simpleSpacer);
- }
-
- Sizer sizerHori2 = new Sizer(DisplayMode.modeHori);
- sizerHori2.setPropertyExpand(new Vector2b(true, true));
- sizerHori2.setPropertyFill(new Vector2b(true, true));
- sizerMain.subWidgetAdd(sizerHori2);
-
- {
- Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyColor(Color.DARK_GREEN);
- simpleSpacer.setPropertyExpand(new Vector2b(true, false));
- simpleSpacer.setPropertyFill(new Vector2b(true, true));
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerMain.subWidgetAdd(simpleSpacer);
- }
- {
- Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyColor(Color.CHOCOLATE);
- simpleSpacer.setPropertyExpand(new Vector2b(false, true));
- simpleSpacer.setPropertyFill(new Vector2b(true, true));
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori2.subWidgetAdd(simpleSpacer);
- }
this.testWidget = new CheckBox();
//this.testWidget.setPropertySource(new Uri("DATA", "mireA.png"));
- this.testWidget.setPropertyExpand(new Vector2b(true, true));
- this.testWidget.setPropertyFill(new Vector2b(true, true));
- sizerHori2.subWidgetAdd(this.testWidget);
- {
- Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyColor(Color.GREEN_YELLOW);
- simpleSpacer.setPropertyExpand(new Vector2b(false, true));
- simpleSpacer.setPropertyFill(new Vector2b(true, true));
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori2.subWidgetAdd(simpleSpacer);
- }
-
- {
- Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyColor(Color.PINK);
- simpleSpacer.setPropertyExpand(new Vector2b(true, true));
- simpleSpacer.setPropertyFill(new Vector2b(true, true));
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(30, 30), Distance.PIXEL));
- sizerHori1.subWidgetAdd(simpleSpacer);
- }
- {
- this.buttonExpandX = new Button();
- this.buttonExpandX.setPropertyValue("un-expand X");
- this.buttonExpandX.setPropertyExpand(new Vector2b(false, false));
- this.buttonExpandX.setPropertyFill(new Vector2b(false, false));
- this.buttonExpandX.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(this.buttonExpandX);
- this.buttonExpandX.signalClick.connectAuto(this, MainWindows::eventButtonExpandX);
- }
- {
- this.buttonExpandY = new Button();
- this.buttonExpandY.setPropertyValue("un-expand Y");
- this.buttonExpandY.setPropertyExpand(new Vector2b(false, false));
- this.buttonExpandY.setPropertyFill(new Vector2b(false, false));
- this.buttonExpandY.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(this.buttonExpandY);
- this.buttonExpandY.signalClick.connectAuto(this, MainWindows::eventButtonExpandY);
- }
- {
- this.buttonFillX = new Button();
- this.buttonFillX.setPropertyValue("un-fill X");
- this.buttonFillX.setPropertyExpand(new Vector2b(false, false));
- this.buttonFillX.setPropertyFill(new Vector2b(false, false));
- this.buttonFillX.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(this.buttonFillX);
- this.buttonFillX.signalClick.connectAuto(this, MainWindows::eventButtonFillX);
- }
- {
- this.buttonFillY = new Button();
- this.buttonFillY.setPropertyValue("un-fill Y");
- this.buttonFillY.setPropertyExpand(new Vector2b(false, false));
- this.buttonFillY.setPropertyFill(new Vector2b(false, false));
- this.buttonFillY.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(this.buttonFillY);
- this.buttonFillY.signalClick.connectAuto(this, MainWindows::eventButtonFillY);
- }
- {
- Button button = new Button();
- button.setPropertyValue("Change image");
- button.setPropertyExpand(new Vector2b(false, false));
- button.setPropertyFill(new Vector2b(false, false));
- button.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(button);
- button.signalClick.connectAuto(this, MainWindows::eventButtonChangeImage);
- }
- {
- this.buttonGravity = new Button();
- this.buttonGravity.setPropertyValue("gravity");
- this.buttonGravity.setPropertyExpand(new Vector2b(false, false));
- this.buttonGravity.setPropertyFill(new Vector2b(false, false));
- this.buttonGravity.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(this.buttonGravity);
- this.buttonGravity.signalClick.connectAuto(this, MainWindows::eventButtonChangeGravity);
- }
- {
- this.buttonAspectRatio = new Button();
- this.buttonAspectRatio.setPropertyValue("keep aspect ratio");
- this.buttonAspectRatio.setPropertyExpand(new Vector2b(false, false));
- this.buttonAspectRatio.setPropertyFill(new Vector2b(false, false));
- this.buttonAspectRatio.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(this.buttonAspectRatio);
- this.buttonAspectRatio.signalClick.connectAuto(this, MainWindows::eventButtonChangeKeepRatio);
- }
-
-
- }
- public static void eventButtonExpandX(final MainWindows self) {
- Vector2b state = self.testWidget.getPropertyExpand();
- self.testWidget.setPropertyExpand(state.withX(!state.x()));
- self.buttonExpandX.setPropertyValue(state.x()?"expand X":"un-expand X");
- }
- public static void eventButtonExpandY(final MainWindows self) {
- Vector2b state = self.testWidget.getPropertyExpand();
- self.testWidget.setPropertyExpand(state.withY(!state.y()));
- self.buttonExpandY.setPropertyValue(state.y()?"expand Y":"un-expand Y");
- }
- public static void eventButtonFillX(final MainWindows self) {
- Vector2b state = self.testWidget.getPropertyFill();
- self.testWidget.setPropertyFill(state.withX(!state.x()));
- self.buttonFillX.setPropertyValue(state.x()?"fill X":"un-fill X");
- }
- public static void eventButtonFillY(final MainWindows self) {
- Vector2b state = self.testWidget.getPropertyFill();
- self.testWidget.setPropertyFill(state.withY(!state.y()));
- self.buttonFillY.setPropertyValue(state.y()?"fill Y":"un-fill Y");
- }
- public static void eventButtonChangeKeepRatio(final MainWindows self) {
- //boolean state = self.testWidget.isPropertyKeepRatio();
- //self.testWidget.setPropertyKeepRatio(!state);
- //self.buttonAspectRatio.setPropertyValue(state?"fkeep aspect ratio":"un-keep aspect ratio");
- }
- public static void eventButtonChangeGravity(final MainWindows self) {
- Gravity state = self.testWidget.getPropertyGravity();
- switch(state) {
- case BUTTOM:
- state = Gravity.BUTTOM_LEFT;
- break;
- case BUTTOM_LEFT:
- state = Gravity.BUTTOM_RIGHT;
- break;
- case BUTTOM_RIGHT:
- state = Gravity.CENTER;
- break;
- case CENTER:
- state = Gravity.LEFT;
- break;
- case LEFT:
- state = Gravity.RIGHT;
- break;
- case RIGHT:
- state = Gravity.TOP;
- break;
- case TOP:
- state = Gravity.TOP_LEFT;
- break;
- case TOP_LEFT:
- state = Gravity.TOP_RIGHT;
- break;
- case TOP_RIGHT:
- state = Gravity.BUTTOM;
- break;
- }
- self.testWidget.setPropertyGravity(state);
- self.buttonGravity.setPropertyValue("gravity: " + state);
- }
- public static void eventButtonChangeImage(final MainWindows self) {
- self.testWidget.setPropertyValue(!self.testWidget.getPropertyValue());
+ this.testWidget.setPropertyExpand(Vector2b.TRUE_TRUE);
+ this.testWidget.setPropertyFill(Vector2b.TRUE_TRUE);
+ this.setTestWidget(this.testWidget);
}
}
diff --git a/samples/src/sample/atriasoft/ewol/simpleWindowsWithImage/MainWindows.java b/samples/src/sample/atriasoft/ewol/simpleWindowsWithImage/MainWindows.java
index 59a0eda..7a966af 100644
--- a/samples/src/sample/atriasoft/ewol/simpleWindowsWithImage/MainWindows.java
+++ b/samples/src/sample/atriasoft/ewol/simpleWindowsWithImage/MainWindows.java
@@ -1,221 +1,55 @@
package sample.atriasoft.ewol.simpleWindowsWithImage;
-import org.atriasoft.etk.Color;
import org.atriasoft.etk.Dimension;
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.ewol.Gravity;
import org.atriasoft.ewol.widget.Button;
import org.atriasoft.ewol.widget.ImageDisplay;
-import org.atriasoft.ewol.widget.Sizer;
-import org.atriasoft.ewol.widget.Sizer.DisplayMode;
-import org.atriasoft.ewol.widget.Spacer;
-import org.atriasoft.ewol.widget.Windows;
-public class MainWindows extends Windows {
+import sample.atriasoft.ewol.BasicWindows;
+
+public class MainWindows extends BasicWindows {
+
+ public static void eventButtonChangeImage(final MainWindows self) {
+ self.testWidget.setPropertySource(new Uri("DATA", "mireC.png"));
+ }
+
+ public static void eventButtonChangeKeepRatio(final MainWindows self) {
+ boolean state = self.testWidget.isPropertyKeepRatio();
+ self.testWidget.setPropertyKeepRatio(!state);
+ self.buttonAspectRatio.setPropertyValue(state ? "fkeep aspect ratio" : "un-keep aspect ratio");
+ }
+
ImageDisplay testWidget;
- Button buttonExpandX;
- Button buttonExpandY;
- Button buttonFillX;
- Button buttonFillY;
- Button buttonGravity;
Button buttonAspectRatio;
+
public MainWindows() {
//! [ewol_sample_HW_windows_title]
setPropertyTitle("Simple Image");
-
- Sizer sizerMain = new Sizer(DisplayMode.modeVert);
- sizerMain.setPropertyExpand(new Vector2b(true, true));
- sizerMain.setPropertyFill(new Vector2b(true, true));
- setSubWidget(sizerMain);
- Sizer sizerHori1 = new Sizer(DisplayMode.modeHori);
- sizerHori1.setPropertyExpand(new Vector2b(true, false));
- sizerHori1.setPropertyLockExpand(new Vector2b(true, true));
- sizerHori1.setPropertyFill(new Vector2b(true, true));
- sizerMain.subWidgetAdd(sizerHori1);
-
- {
- Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(100, 100), Distance.PIXEL));
- simpleSpacer.setPropertyColor(Color.ALICE_BLUE);
- simpleSpacer.setPropertyExpand(new Vector2b(true, false));
- simpleSpacer.setPropertyFill(new Vector2b(true, true));
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerMain.subWidgetAdd(simpleSpacer);
- }
-
- Sizer sizerHori2 = new Sizer(DisplayMode.modeHori);
- sizerHori2.setPropertyExpand(new Vector2b(true, true));
- sizerHori2.setPropertyFill(new Vector2b(true, true));
- sizerMain.subWidgetAdd(sizerHori2);
-
- {
- Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyColor(Color.DARK_GREEN);
- simpleSpacer.setPropertyExpand(new Vector2b(true, false));
- simpleSpacer.setPropertyFill(new Vector2b(true, true));
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerMain.subWidgetAdd(simpleSpacer);
- }
- {
- Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyColor(Color.CHOCOLATE);
- simpleSpacer.setPropertyExpand(new Vector2b(false, true));
- simpleSpacer.setPropertyFill(new Vector2b(true, true));
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori2.subWidgetAdd(simpleSpacer);
- }
this.testWidget = new ImageDisplay();
this.testWidget.setPropertySource(new Uri("DATA", "mireA.png"));
this.testWidget.setPropertyExpand(new Vector2b(true, true));
this.testWidget.setPropertyFill(new Vector2b(true, true));
- sizerHori2.subWidgetAdd(this.testWidget);
- {
- Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyColor(Color.GREEN_YELLOW);
- simpleSpacer.setPropertyExpand(new Vector2b(false, true));
- simpleSpacer.setPropertyFill(new Vector2b(true, true));
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori2.subWidgetAdd(simpleSpacer);
- }
-
- {
- Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyColor(Color.PINK);
- simpleSpacer.setPropertyExpand(new Vector2b(true, true));
- simpleSpacer.setPropertyFill(new Vector2b(true, true));
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(30, 30), Distance.PIXEL));
- sizerHori1.subWidgetAdd(simpleSpacer);
- }
- {
- this.buttonExpandX = new Button();
- this.buttonExpandX.setPropertyValue("un-expand X");
- this.buttonExpandX.setPropertyExpand(new Vector2b(false, false));
- this.buttonExpandX.setPropertyFill(new Vector2b(false, false));
- this.buttonExpandX.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(this.buttonExpandX);
- this.buttonExpandX.signalClick.connectAuto(this, MainWindows::eventButtonExpandX);
- }
- {
- this.buttonExpandY = new Button();
- this.buttonExpandY.setPropertyValue("un-expand Y");
- this.buttonExpandY.setPropertyExpand(new Vector2b(false, false));
- this.buttonExpandY.setPropertyFill(new Vector2b(false, false));
- this.buttonExpandY.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(this.buttonExpandY);
- this.buttonExpandY.signalClick.connectAuto(this, MainWindows::eventButtonExpandY);
- }
- {
- this.buttonFillX = new Button();
- this.buttonFillX.setPropertyValue("un-fill X");
- this.buttonFillX.setPropertyExpand(new Vector2b(false, false));
- this.buttonFillX.setPropertyFill(new Vector2b(false, false));
- this.buttonFillX.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(this.buttonFillX);
- this.buttonFillX.signalClick.connectAuto(this, MainWindows::eventButtonFillX);
- }
- {
- this.buttonFillY = new Button();
- this.buttonFillY.setPropertyValue("un-fill Y");
- this.buttonFillY.setPropertyExpand(new Vector2b(false, false));
- this.buttonFillY.setPropertyFill(new Vector2b(false, false));
- this.buttonFillY.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(this.buttonFillY);
- this.buttonFillY.signalClick.connectAuto(this, MainWindows::eventButtonFillY);
- }
+ this.testWidget.setPropertyMinSize(new Dimension(Vector2f.VALUE_16, Distance.PIXEL));
+ this.setTestWidget(this.testWidget);
{
Button button = new Button();
button.setPropertyValue("Change image");
button.setPropertyExpand(new Vector2b(false, false));
button.setPropertyFill(new Vector2b(false, false));
button.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(button);
+ this.addButton(button);
button.signalClick.connectAuto(this, MainWindows::eventButtonChangeImage);
}
- {
- this.buttonGravity = new Button();
- this.buttonGravity.setPropertyValue("gravity");
- this.buttonGravity.setPropertyExpand(new Vector2b(false, false));
- this.buttonGravity.setPropertyFill(new Vector2b(false, false));
- this.buttonGravity.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(this.buttonGravity);
- this.buttonGravity.signalClick.connectAuto(this, MainWindows::eventButtonChangeGravity);
- }
- {
- this.buttonAspectRatio = new Button();
- this.buttonAspectRatio.setPropertyValue("keep aspect ratio");
- this.buttonAspectRatio.setPropertyExpand(new Vector2b(false, false));
- this.buttonAspectRatio.setPropertyFill(new Vector2b(false, false));
- this.buttonAspectRatio.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
- sizerHori1.subWidgetAdd(this.buttonAspectRatio);
- this.buttonAspectRatio.signalClick.connectAuto(this, MainWindows::eventButtonChangeKeepRatio);
- }
-
-
- }
- public static void eventButtonExpandX(final MainWindows self) {
- Vector2b state = self.testWidget.getPropertyExpand();
- self.testWidget.setPropertyExpand(state.withX(!state.x()));
- self.buttonExpandX.setPropertyValue(state.x()?"expand X":"un-expand X");
- }
- public static void eventButtonExpandY(final MainWindows self) {
- Vector2b state = self.testWidget.getPropertyExpand();
- self.testWidget.setPropertyExpand(state.withY(!state.y()));
- self.buttonExpandY.setPropertyValue(state.y()?"expand Y":"un-expand Y");
- }
- public static void eventButtonFillX(final MainWindows self) {
- Vector2b state = self.testWidget.getPropertyFill();
- self.testWidget.setPropertyFill(state.withX(!state.x()));
- self.buttonFillX.setPropertyValue(state.x()?"fill X":"un-fill X");
- }
- public static void eventButtonFillY(final MainWindows self) {
- Vector2b state = self.testWidget.getPropertyFill();
- self.testWidget.setPropertyFill(state.withY(!state.y()));
- self.buttonFillY.setPropertyValue(state.y()?"fill Y":"un-fill Y");
- }
- public static void eventButtonChangeKeepRatio(final MainWindows self) {
- boolean state = self.testWidget.isPropertyKeepRatio();
- self.testWidget.setPropertyKeepRatio(!state);
- self.buttonAspectRatio.setPropertyValue(state?"fkeep aspect ratio":"un-keep aspect ratio");
- }
- public static void eventButtonChangeGravity(final MainWindows self) {
- Gravity state = self.testWidget.getPropertyGravity();
- switch(state) {
- case BUTTOM:
- state = Gravity.BUTTOM_LEFT;
- break;
- case BUTTOM_LEFT:
- state = Gravity.BUTTOM_RIGHT;
- break;
- case BUTTOM_RIGHT:
- state = Gravity.CENTER;
- break;
- case CENTER:
- state = Gravity.LEFT;
- break;
- case LEFT:
- state = Gravity.RIGHT;
- break;
- case RIGHT:
- state = Gravity.TOP;
- break;
- case TOP:
- state = Gravity.TOP_LEFT;
- break;
- case TOP_LEFT:
- state = Gravity.TOP_RIGHT;
- break;
- case TOP_RIGHT:
- state = Gravity.BUTTOM;
- break;
- }
- self.testWidget.setPropertyGravity(state);
- self.buttonGravity.setPropertyValue("gravity: " + state);
- }
- public static void eventButtonChangeImage(final MainWindows self) {
- self.testWidget.setPropertySource(new Uri("DATA", "mireC.png"));
+ this.buttonAspectRatio = new Button();
+ this.buttonAspectRatio.setPropertyValue("keep aspect ratio");
+ this.buttonAspectRatio.setPropertyExpand(new Vector2b(false, false));
+ this.buttonAspectRatio.setPropertyFill(new Vector2b(false, false));
+ this.buttonAspectRatio.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.addButton(this.buttonAspectRatio);
+ this.buttonAspectRatio.signalClick.connectAuto(this, MainWindows::eventButtonChangeKeepRatio);
}
}
diff --git a/src/org/atriasoft/ewol/widget/ContainerN.java b/src/org/atriasoft/ewol/widget/ContainerN.java
index 0bb64e0..627438e 100644
--- a/src/org/atriasoft/ewol/widget/ContainerN.java
+++ b/src/org/atriasoft/ewol/widget/ContainerN.java
@@ -28,10 +28,6 @@ import org.atriasoft.exml.model.XmlNode;
*/
public class ContainerN extends Widget {
- @XmlManaged
- @XmlAttribute
- @XmlName(value = "lock")
- @EwolDescription(value = "Lock the subwidget expand")
protected Vector2b propertyLockExpand = new Vector2b(false, false); //!< Lock the expend of the sub widget to this one == > this permit to limit bigger subWidget
protected Vector2b subExpend = new Vector2b(false, false); //!< reference of the sub element expention requested.
protected List subWidget = new ArrayList<>();
@@ -93,6 +89,10 @@ public class ContainerN extends Widget {
}
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "lock")
+ @EwolDescription(value = "Lock the subwidget expand")
public Vector2b getPropertyLockExpand() {
return this.propertyLockExpand;
}
diff --git a/src/org/atriasoft/ewol/widget/Entry.java b/src/org/atriasoft/ewol/widget/Entry.java
index a918482..fd36a2c 100644
--- a/src/org/atriasoft/ewol/widget/Entry.java
+++ b/src/org/atriasoft/ewol/widget/Entry.java
@@ -71,40 +71,16 @@ public class Entry extends Widget {
private boolean needUpdateTextPos = true;
/// Periodic call handle to remove it when needed
protected Connection periodicConnectionHanble = new Connection();
- @XmlManaged
- @XmlAttribute
- @XmlName(value = "config")
- @EwolDescription(value = "configuration of the widget")
private Uri propertyConfig = new Uri("THEME", "shape/Entry.json", "ewol");
- @XmlManaged
- @XmlAttribute
- @XmlName(value = "max")
- @EwolDescription(value = "Maximum char that can be set on the Entry")
private int propertyMaxCharacter = Integer.MAX_VALUE; //!< number max of Character in the list
- @XmlManaged
- @XmlAttribute
- @XmlName(value = "password")
- @EwolDescription(value = "Not display content in password mode")
private boolean propertyPassword = false; //!< Disable display of the content of the entry
/// regular expression value
- @XmlManaged
- @XmlAttribute
- @XmlName(value = "regex")
- @EwolDescription(value = "Control what it is write with a regular expression")
private String propertyRegex = ".*";
/// Text to display when nothing in in the entry (decorated text...)
- @XmlManaged
- @XmlAttribute
- @XmlName(value = "empty-text")
- @EwolDescription(value = "Text when nothing is written")
private String propertyTextWhenNothing = null;
- @XmlManaged
- @XmlAttribute
- @XmlName(value = "value")
- @EwolDescription(value = "Value display in the entry (decorated text)")
private String propertyValue = "Test Text..."; //!< string that must be displayed
private Pattern regex = null; //!< regular expression to check content
private GuiShape shape;
@@ -584,7 +560,7 @@ public class Entry extends Widget {
this.gc.setSize((int) tmpSizeText.x(), (int) tmpSizeText.y());
// if (this.displayCursorPosSelection != this.displayCursorPos) {
- //
+ //
// //this.text.setCursorSelection(this.displayCursorPos, this.displayCursorPosSelection);
// } else {
// this.text.setCursorPos(this.displayCursorPos);
@@ -671,6 +647,10 @@ public class Entry extends Widget {
markToRedraw();
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "config")
+ @EwolDescription(value = "configuration of the widget")
public void setPropertyConfig(final Uri propertyConfig) {
if (this.propertyConfig.equals(propertyConfig)) {
return;
@@ -679,6 +659,10 @@ public class Entry extends Widget {
onChangePropertyShaper();
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "max")
+ @EwolDescription(value = "Maximum char that can be set on the Entry")
public void setPropertyMaxCharacter(final int propertyMaxCharacter) {
if (this.propertyMaxCharacter == propertyMaxCharacter) {
return;
@@ -687,6 +671,10 @@ public class Entry extends Widget {
onChangePropertyMaxCharacter();
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "password")
+ @EwolDescription(value = "Not display content in password mode")
public void setPropertyPassword(final boolean propertyPassword) {
if (this.propertyPassword == propertyPassword) {
return;
@@ -695,6 +683,10 @@ public class Entry extends Widget {
onChangePropertyPassword();
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "regex")
+ @EwolDescription(value = "Control what it is write with a regular expression")
public void setPropertyRegex(final String propertyRegex) {
if (this.propertyRegex.equals(propertyRegex)) {
return;
@@ -703,6 +695,10 @@ public class Entry extends Widget {
onChangePropertyRegex();
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "empty-text")
+ @EwolDescription(value = "Text when nothing is written")
public void setPropertyTextWhenNothing(final String propertyTextWhenNothing) {
if (this.propertyTextWhenNothing.equals(propertyTextWhenNothing)) {
return;
@@ -711,6 +707,10 @@ public class Entry extends Widget {
onChangePropertyTextWhenNothing();
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "value")
+ @EwolDescription(value = "Value display in the entry (decorated text)")
public void setPropertyValue(final String propertyValue) {
if (this.propertyValue.equals(propertyValue)) {
return;
diff --git a/src/org/atriasoft/ewol/widget/ImageDisplay.java b/src/org/atriasoft/ewol/widget/ImageDisplay.java
index 63905e0..ccd16f0 100644
--- a/src/org/atriasoft/ewol/widget/ImageDisplay.java
+++ b/src/org/atriasoft/ewol/widget/ImageDisplay.java
@@ -24,22 +24,18 @@ import org.atriasoft.exml.annotation.XmlName;
import org.atriasoft.exml.model.XmlElement;
import org.atriasoft.gale.key.KeyStatus;
-/**
- * @ingroup ewolWidgetGroup
- */
public class ImageDisplay extends Widget {
protected int colorId = -1; //!< Color of the image.
protected ResourceColorFile colorProperty = null; //!< theme color property
protected CompositingImage compositing = new CompositingImage(); //!< compositing element of the image.
protected Vector2f imageRenderSize = Vector2f.ZERO; //!< size of the image when we render it
-
+
protected Dimension propertyBorder = Dimension.ZERO; //!< border to add at the image.
protected Dimension propertyImageSize = Dimension.ZERO; //!< border to add at the image.
protected boolean propertyKeepRatio = true; //!< keep the image ratio between width and hight
protected Vector2f propertyPosStart = Vector2f.ZERO; //!< position in the image to start the sisplay (when we want not to display all the image)
protected Vector2f propertyPosStop = Vector2f.ONE; //!< position in the image to start the sisplay (when we want not to display all the image)
-
protected boolean propertySmooth = true; //!< display is done in the pixel approximation if false
protected Uri propertySource = null; //!< file name of the image.
protected boolean propertyUseThemeColor = false; //!< Use the themo color management ("THEMECOLOR:///Image.json?lib=ewol") default false
@@ -63,7 +59,7 @@ public class ImageDisplay extends Widget {
this.minSize = imageBoder.add(imageSize);
this.maxSize = this.minSize;
} else {
- Vector2i imageSizeReal = this.compositing.getRealSize();
+ Vector2i imageSizeReal = this.getPropertyMinSize().getPixeli();//.compositing.getRealSize();
Log.verbose(" Real Size = " + imageSizeReal);
Vector2f min1 = imageBoder.add(this.propertyMinSize.getPixel());
this.minSize = imageBoder.add(imageSizeReal);
@@ -87,7 +83,7 @@ public class ImageDisplay extends Widget {
public Dimension getPropertyBorder() {
return this.propertyBorder;
}
-
+
@XmlManaged
@XmlAttribute
@XmlName(value = "size")
@@ -95,7 +91,7 @@ public class ImageDisplay extends Widget {
public Dimension getPropertyImageSize() {
return this.propertyImageSize;
}
-
+
@XmlManaged
@XmlAttribute
@XmlName(value = "part-start")
@@ -103,6 +99,7 @@ public class ImageDisplay extends Widget {
public Vector2f getPropertyPosStart() {
return this.propertyPosStart;
}
+
@XmlManaged
@XmlAttribute
@XmlName(value = "part-stop")
@@ -110,7 +107,7 @@ public class ImageDisplay extends Widget {
public Vector2f getPropertyPosStop() {
return this.propertyPosStop;
}
-
+
@XmlManaged
@XmlAttribute
@XmlName(value = "src")
@@ -118,7 +115,7 @@ public class ImageDisplay extends Widget {
public Uri getPropertySource() {
return this.propertySource;
}
-
+
@XmlManaged
@XmlAttribute
@XmlName(value = "ratio")
@@ -126,6 +123,7 @@ public class ImageDisplay extends Widget {
public boolean isPropertyKeepRatio() {
return this.propertyKeepRatio;
}
+
@XmlManaged
@XmlAttribute
@XmlName(value = "smooth")
@@ -133,7 +131,7 @@ public class ImageDisplay extends Widget {
public boolean isPropertySmooth() {
return this.propertySmooth;
}
-
+
@XmlManaged
@XmlAttribute
@XmlName(value = "use-theme-color")
diff --git a/src/org/atriasoft/ewol/widget/Label.java b/src/org/atriasoft/ewol/widget/Label.java
index 9eee268..c71347e 100644
--- a/src/org/atriasoft/ewol/widget/Label.java
+++ b/src/org/atriasoft/ewol/widget/Label.java
@@ -29,21 +29,9 @@ public class Label extends Widget {
protected int colorDefaultBgText = -1; //!< Default Background color of the text
protected int colorDefaultFgText = -1; //!< Default color of the text
protected ResourceColorFile colorProperty; //!< theme color property
- @XmlManaged
- @XmlAttribute
- @XmlName(value = "auto-translate")
- @EwolDescription(value = "Translate the String with the marker {T:xxxxxx}")
protected boolean propertyAutoTranslate = true; //!< if at true the data is translate automaticaly translate.
- @XmlManaged
- @XmlAttribute
- @XmlName(value = "font-size")
- @EwolDescription(value = "Default font size (0=> system default)")
protected int propertyFontSize = 0; //!< default size of the font.
- @XmlManaged
- @XmlAttribute
- @XmlName(value = "value")
- @EwolDescription(value = "Displayed value string")
protected String propertyValue = ""; //!< decorated text to display.
@EwolSignal(name = "pressed")
@EwolDescription(value = "Label is pressed")
@@ -194,6 +182,10 @@ public class Label extends Widget {
this.text.flush();
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "auto-translate")
+ @EwolDescription(value = "Translate the String with the marker {T:xxxxxx}")
public void setPropertyAutoTranslate(final boolean propertyAutoTranslate) {
if (this.propertyAutoTranslate == propertyAutoTranslate) {
return;
@@ -208,6 +200,10 @@ public class Label extends Widget {
requestUpdateSize();
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "font-size")
+ @EwolDescription(value = "Default font size (0=> system default)")
public void setPropertyFontSize(final int propertyFontSize) {
if (this.propertyFontSize == propertyFontSize) {
return;
@@ -217,6 +213,10 @@ public class Label extends Widget {
requestUpdateSize();
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "value")
+ @EwolDescription(value = "Displayed value string")
public void setPropertyValue(final String propertyValue) {
if (this.propertyValue.equals(propertyValue)) {
return;
diff --git a/src/org/atriasoft/ewol/widget/ProgressBar.java b/src/org/atriasoft/ewol/widget/ProgressBar.java
index 120a343..ed2c640 100644
--- a/src/org/atriasoft/ewol/widget/ProgressBar.java
+++ b/src/org/atriasoft/ewol/widget/ProgressBar.java
@@ -33,6 +33,7 @@ class ProgressBar extends Widget {
this.minSize = new Vector2f(Math.max(tmpMin.x(), 40.0f), Math.max(tmpMin.y(), ProgressBar.DOT_RADIUS * 2.0f));
markToRedraw();
}
+
@XmlManaged
@XmlAttribute
@XmlName(value = "color-off")
@@ -40,7 +41,7 @@ class ProgressBar extends Widget {
public Color getPropertyTextColorBgOff() {
return this.propertyTextColorBgOff;
}
-
+
@XmlManaged
@XmlAttribute
@XmlName(value = "color-on")
@@ -48,7 +49,7 @@ class ProgressBar extends Widget {
public Color getPropertyTextColorBgOn() {
return this.propertyTextColorBgOn;
}
-
+
@XmlManaged
@XmlAttribute
@XmlName(value = "color-bg")
@@ -56,7 +57,7 @@ class ProgressBar extends Widget {
public Color getPropertyTextColorFg() {
return this.propertyTextColorFg;
}
-
+
@XmlManaged
@XmlAttribute
@XmlName(value = "value")
diff --git a/src/org/atriasoft/ewol/widget/Sizer.java b/src/org/atriasoft/ewol/widget/Sizer.java
index 4263645..3db7eec 100644
--- a/src/org/atriasoft/ewol/widget/Sizer.java
+++ b/src/org/atriasoft/ewol/widget/Sizer.java
@@ -80,7 +80,7 @@ public class Sizer extends ContainerN {
this.minSize = this.minSize.add(tmpBorderSize.multiply(2));
//Log.error("[" + getId() + "] {" + getObjectType() + "} Result min size : " + this.minSize);
}
-
+
@XmlManaged
@XmlAttribute
@XmlName("border")
@@ -89,7 +89,7 @@ public class Sizer extends ContainerN {
public Dimension getPropertyBorderSize() {
return this.propertyBorderSize;
}
-
+
@XmlManaged
@XmlAttribute
@XmlName("mode")
@@ -149,15 +149,19 @@ public class Sizer extends ContainerN {
countCalculation = nbWidgetExpand.y();
}
// -4.1- Update every subWidget size
+ Widget lastWidget = null;
+ if (!this.subWidget.isEmpty()) {
+ lastWidget = this.subWidget.get(this.subWidget.size() - 1);
+ }
for (Widget it : this.subWidget) {
if (it == null) {
continue;
}
Vector2f tmpSizeMin = it.getSize();
Vector2f tmpSizeMax = it.getCalculateMaxSize();
- // Now update his size his size in X and the curent sizer size in Y:
+ // Now update his size his size in X and the current sizer size in Y:
if (this.propertyMode == DisplayMode.modeVert) {
- if (it.canExpand().y()) {
+ if (it.canExpand().y() || (it == lastWidget && it.canExpandIfFree().y())) {
float sizeExpand = tmpSizeMin.y() + deltaExpandSize;
if (sizeExpand > tmpSizeMax.y()) {
residualNext += (sizeExpand - tmpSizeMax.y());
@@ -168,7 +172,7 @@ public class Sizer extends ContainerN {
}
it.setSize(tmpSizeMin);
} else {
- if (it.canExpand().x()) {
+ if (it.canExpand().x() || (it == lastWidget && it.canExpandIfFree().x())) {
float sizeExpand = tmpSizeMin.x() + deltaExpandSize;
if (sizeExpand > tmpSizeMax.x()) {
residualNext += (sizeExpand - tmpSizeMax.x());
@@ -203,16 +207,16 @@ public class Sizer extends ContainerN {
if (it == null) {
continue;
}
- // Now update his size his size in X and the curent sizer size in Y:
+ // Now update his size, his size in X and the current sizer size in Y:
if (this.propertyMode == DisplayMode.modeVert) {
- if (!it.canExpand().x()) {
+ if (!it.canExpand().x() && !it.canExpandIfFree().x()) {
continue;
}
Vector2f tmpSizeMin = it.getSize();
tmpSizeMin = tmpSizeMin.withX(FMath.avg(tmpSizeMin.x(), localWidgetSize.x(), it.getCalculateMaxSize().x()));
it.setSize(tmpSizeMin);
} else {
- if (!it.canExpand().y()) {
+ if (!it.canExpand().y() && !it.canExpandIfFree().y()) {
continue;
}
Vector2f tmpSizeMin = it.getSize();
diff --git a/src/org/atriasoft/ewol/widget/Spacer.java b/src/org/atriasoft/ewol/widget/Spacer.java
index 94115b2..f2af69c 100644
--- a/src/org/atriasoft/ewol/widget/Spacer.java
+++ b/src/org/atriasoft/ewol/widget/Spacer.java
@@ -15,9 +15,6 @@ import org.atriasoft.exml.annotation.XmlAttribute;
import org.atriasoft.exml.annotation.XmlManaged;
import org.atriasoft.exml.annotation.XmlName;
-/**
- * @ingroup ewolWidgetGroup
- */
public class Spacer extends Widget {
private final CompositingDrawing draw = new CompositingDrawing(); //!< Compositing drawing element
@XmlManaged
diff --git a/src/org/atriasoft/ewol/widget/Widget.java b/src/org/atriasoft/ewol/widget/Widget.java
index 83646ec..494d939 100644
--- a/src/org/atriasoft/ewol/widget/Widget.java
+++ b/src/org/atriasoft/ewol/widget/Widget.java
@@ -33,6 +33,8 @@ import org.atriasoft.ewol.internal.Log;
import org.atriasoft.ewol.object.EwolObject;
import org.atriasoft.exml.annotation.XmlAttribute;
import org.atriasoft.exml.annotation.XmlDefaultManaged;
+import org.atriasoft.exml.annotation.XmlDefaultOptional;
+import org.atriasoft.exml.annotation.XmlIgnoreUnknow;
import org.atriasoft.exml.annotation.XmlManaged;
import org.atriasoft.exml.annotation.XmlName;
import org.atriasoft.exml.model.XmlElement;
@@ -41,18 +43,20 @@ import org.atriasoft.gale.context.ClipboardList;
import org.atriasoft.gale.context.Cursor;
import org.atriasoft.gale.key.KeyKeyboard;
import org.atriasoft.gale.key.KeySpecial;
-
import org.lwjgl.opengl.GL11;
/**
- * Widget class is the main widget interface, it has so me generic properties:
+ * Widget class is the main widget interface, it has so me generic properties:
* :** known his parent
* :** Can be display at a special position with a special scale
* :** Can get focus
* :** Receive Event (keyboard / mouse / ...)
*
*/
+
@XmlDefaultManaged(value = false)
+@XmlDefaultOptional
+@XmlIgnoreUnknow
public class Widget extends EwolObject {
// ----------------------------------------------------------------------------------------------------------------
// -- keyboard event properties Area
@@ -90,6 +94,7 @@ public class Widget extends EwolObject {
protected boolean propertyCanFocus = false; //!< the focus can be done on this widget
protected Vector2b propertyExpand = new Vector2b(false, false); //!< the widget will expand if possible
+ protected Vector2b propertyExpandIfFree = new Vector2b(false, false); //!< the widget will expand if possible
protected Vector2b propertyFill = new Vector2b(true, true); //!< the widget will fill all the space provided by the parent.
protected Gravity propertyGravity = Gravity.BUTTOM_LEFT; //!< Gravity of the widget
protected boolean propertyHide = false; //!< hide a widget on the display
@@ -141,6 +146,18 @@ public class Widget extends EwolObject {
return new Vector2b(false, false);
}
+ /**
+ * get the expend if free capabilities (xy)
+ * @return 2D boolean represents the capacity to expend (if some free space is available)
+ * @note : INTERNAL EWOL SYSTEM
+ */
+ public Vector2b canExpandIfFree() {
+ if (!this.propertyHide) {
+ return this.propertyExpandIfFree;
+ }
+ return new Vector2b(false, false);
+ }
+
/**
* get the filling capabilities xy
* @return Vector2b repensent the capacity to xy filling
@@ -179,11 +196,12 @@ public class Widget extends EwolObject {
}
public void drawWidgetTree(final int level) {
- String space = "";
+ StringBuilder space = new StringBuilder();
for (int iii = 0; iii < level; ++iii) {
- space += " ";
+ space.append(" ");
}
- Log.print(space + "[" + getId() + "] name='" + this.name + "' type=" + getClass().getCanonicalName() + " o=" + this.origin + " s=" + this.size + " hide=" + this.propertyHide);
+ Log.print(space.append("[").append(getId()).append("] name='").append(this.name).append("' type=").append(getClass().getCanonicalName()).append(" o=").append(this.origin).append(" s=")
+ .append(this.size).append(" hide=").append(this.propertyHide).toString());
}
/**
@@ -218,14 +236,6 @@ public class Widget extends EwolObject {
return this.cursorDisplay;
}
- /**
- * get the focus state of the widget
- * @return focus state
- */
- public boolean isFocused() {
- return this.hasFocus;
- }
-
/**
* get the grabbing status of the cursor.
* @return true if the cursor is currently grabbed
@@ -283,6 +293,14 @@ public class Widget extends EwolObject {
return this.propertyExpand;
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "expand-free")
+ @EwolDescription(value = "Request the widget Expand size while free space is detected (does not generate expand in upper wideget)")
+ public Vector2b getPropertyExpandIfFree() {
+ return this.propertyExpandIfFree;
+ }
+
@XmlManaged
@XmlAttribute
@XmlName(value = "fill")
@@ -390,6 +408,14 @@ public class Widget extends EwolObject {
EwolObject.getContext().keyboardHide();
}
+ /**
+ * get the focus state of the widget
+ * @return focus state
+ */
+ public boolean isFocused() {
+ return this.hasFocus;
+ }
+
/**
* keep the focus on this widget == > this remove the previous focus on all other widget
*/
@@ -671,6 +697,15 @@ public class Widget extends EwolObject {
requestUpdateSize();
}
+ public void setPropertyExpandIfFree(final Vector2b value) {
+ if (this.propertyExpandIfFree.equals(value)) {
+ return;
+ }
+ this.propertyExpandIfFree = value;
+ markToRedraw();
+ requestUpdateSize();
+ }
+
public void setPropertyFill(final Vector2b value) {
if (this.propertyFill.equals(value)) {
return;
@@ -899,7 +934,7 @@ public class Widget extends EwolObject {
}
final Vector2f displayOrigin = this.origin.add(this.offset);
- // check if the element is displayable in the windows :
+ // check if the element is displayable in the windows :
if (displayProp.windowsSize().x() < this.origin.x() || displayProp.windowsSize().y() < this.origin.y()) {
// out of the windows == > nothing to display ...
return;