/[classpath]/classpath/javax/swing/SizeRequirements.java
ViewVC logotype

Diff of /classpath/javax/swing/SizeRequirements.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.13 by rabbit78, Sun Sep 25 14:02:03 2005 UTC revision 1.14 by rabbit78, Mon Sep 26 13:02:30 2005 UTC
# Line 256  public class SizeRequirements implements Line 256  public class SizeRequirements implements
256                                               int[] offsets, int[] spans,                                               int[] offsets, int[] spans,
257                                               boolean forward)                                               boolean forward)
258    {    {
259        int span = 0;
260      if (forward)      if (forward)
261        {        {
262          int offset = 0;          int offset = 0;
# Line 263  public class SizeRequirements implements Line 264  public class SizeRequirements implements
264            {            {
265              offsets[i] = offset;              offsets[i] = offset;
266              spans[i] = children[i].preferred;              spans[i] = children[i].preferred;
267                span += spans[i];
268              offset += children[i].preferred;              offset += children[i].preferred;
269            }            }
270        }        }
# Line 273  public class SizeRequirements implements Line 275  public class SizeRequirements implements
275            {            {
276              offset -= children[i].preferred;              offset -= children[i].preferred;
277              offsets[i] = offset;              offsets[i] = offset;
278                span += spans[i];
279              spans[i] = children[i].preferred;              spans[i] = children[i].preferred;
280            }            }
281        }        }
282        // Adjust spans so that we exactly fill the allocated region. If
283        if (span > allocated)
284          adjustSmaller(allocated, children, spans, span);
285        else
286          adjustGreater(allocated, children, spans, span);
287    
288        // Adjust offsets.
289        if (forward)
290          {
291            int offset = 0;
292            for (int i = 0; i < children.length; i++)
293              {
294                offsets[i] = offset;
295                offset += spans[i];
296              }
297          }
298        else
299          {
300            int offset = allocated;
301            for (int i = 0; i < children.length; i++)
302              {
303                offset -= spans[i];
304                offsets[i] = offset;
305              }
306          }
307      }
308    
309      private static void adjustSmaller(int allocated, SizeRequirements[] children,
310                                        int[] spans, int span)
311      {
312        // Sum up (prefSize - minSize) over all children
313        int sumDelta = 0;
314        for (int i = 0; i < children.length; i++)
315          sumDelta += children[i].preferred - children[i].minimum;
316    
317        // Adjust all sizes according to their preferred and minimum sizes.
318        for (int i = 0; i < children.length; i++)
319          {
320            double factor = ((double) (children[i].preferred - children[i].minimum))
321                            / ((double) sumDelta);
322            // In case we have a sumDelta of 0, the factor should also be 0.
323            if (Double.isNaN(factor))
324              factor = 0;
325            spans[i] -= factor * (span - allocated);
326          }
327      }
328    
329      private static void adjustGreater(int allocated, SizeRequirements[] children,
330                                        int[] spans, int span)
331      {
332        // Sum up (maxSize - prefSize) over all children
333        int sumDelta = 0;
334        for (int i = 0; i < children.length; i++)
335          sumDelta += children[i].maximum - children[i].preferred;
336    
337        // Adjust all sizes according to their preferred and minimum sizes.
338        for (int i = 0; i < children.length; i++)
339          {
340            double factor = ((double) (children[i].maximum - children[i].preferred))
341                            / ((double) sumDelta);
342            spans[i] -= factor * (span - allocated);
343          }
344    }    }
345    
346    /**    /**

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26