Merge commit 'e6bb1700749980e69b5e913acbfd276f129c24dc'
[nikiroo-utils.git] / src / jexer / layout / StretchLayoutManager.java
index 3dd74521b533f8086adee17fc4ecb38e0ba0be2e..4bcb0cffc4c29e3a6cb088efa7a8afa8f5c4bebd 100644 (file)
@@ -82,6 +82,8 @@ public class StretchLayoutManager implements LayoutManager {
     public StretchLayoutManager(final int width, final int height) {
         originalWidth = width;
         originalHeight = height;
+        this.width = width;
+        this.height = height;
     }
 
     // ------------------------------------------------------------------------
@@ -111,6 +113,7 @@ public class StretchLayoutManager implements LayoutManager {
         Rectangle rect = new Rectangle(child.getX(), child.getY(),
             child.getWidth(), child.getHeight());
         children.put(child, rect);
+        layoutChildren();
     }
 
     /**
@@ -120,6 +123,17 @@ public class StretchLayoutManager implements LayoutManager {
      */
     public void remove(final TWidget child) {
         children.remove(child);
+        layoutChildren();
+    }
+
+    /**
+     * Reset a child widget's original/preferred size.
+     *
+     * @param child the widget to manage
+     */
+    public void resetSize(final TWidget child) {
+        // For this layout, adding is the same as replacing.
+        add(child);
     }
 
     // ------------------------------------------------------------------------
@@ -130,13 +144,13 @@ public class StretchLayoutManager implements LayoutManager {
      * Resize/reposition child widgets based on difference between current
      * dimensions and the original dimensions.
      */
-    public void layoutChildren() {
+    private void layoutChildren() {
         double widthRatio = (double) width / originalWidth;
-        if (!Double.isFinite(widthRatio)) {
+        if (Math.abs(widthRatio) > Double.MAX_VALUE) {
             widthRatio = 1;
         }
         double heightRatio = (double) height / originalHeight;
-        if (!Double.isFinite(heightRatio)) {
+        if (Math.abs(heightRatio) > Double.MAX_VALUE) {
             heightRatio = 1;
         }
         for (TWidget child: children.keySet()) {