Package org.gudy.azureus2.ui.swt.components

Source Code of org.gudy.azureus2.ui.swt.components.CompositeMinSize

package org.gudy.azureus2.ui.swt.components;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.widgets.Composite;

import org.gudy.azureus2.core3.util.Debug;

public class CompositeMinSize
  extends Composite
{
  int minWidth = SWT.DEFAULT;
  int minHeight = SWT.DEFAULT;

  public CompositeMinSize(Composite parent, int style) {
    super(parent, style);
  }

  public void setMinSize(Point pt) {
    minWidth = pt.x;
    minHeight = pt.y;
  }
 
  public Point computeSize(int wHint, int hHint, boolean changed) {
    try {
      Point size = super.computeSize(wHint, hHint, changed);
      return betterComputeSize(this, size, wHint, hHint, changed);
    } catch (Throwable t) {
      Debug.out(t);
      return new Point(wHint == -1 ? 10 : wHint, hHint == -1 ? 10
          : hHint);
    }
  }
 
  public Point computeSize(int wHint, int hHint) {
    try {
      Point size = super.computeSize(wHint, hHint);
      return betterComputeSize(this, size, wHint, hHint);
    } catch (Throwable t) {
      Debug.out(t);
      return new Point(wHint == -1 ? 10 : wHint, hHint == -1 ? 10
          : hHint);
    }
  }

  protected Point betterComputeSize(Composite c, Point size, int wHint,
      int hHint) {
    if (c.getChildren().length == 0 && (size.x == 64 || size.y == 64)) {
      Object ld = c.getLayoutData();
      if (ld instanceof FormData) {
        FormData fd = (FormData) ld;
        if (fd.width != 0 && fd.height != 0) {
          Rectangle trim = c.computeTrim (0, 0, fd.width, fd.height);
          return new Point(trim.width, trim.height);
        }
      }
      return new Point(1, 1);
    }
    if (size.x == 0 && size.y == 0) {
      return size;
    }
    if (minWidth > 0 && size.x < minWidth) {
      size.x = minWidth;
    }
    if (minHeight > 0 && size.y < minHeight) {
      size.y = minHeight;
    }
    return size;
  }

  protected Point betterComputeSize(Composite c, Point size, int wHint, int hHint, boolean changed) {
    if (c.getChildren().length == 0 && (size.x == 64 || size.y == 64)) {
      Object ld = c.getLayoutData();
      if (ld instanceof FormData) {
        FormData fd = (FormData) ld;
        if (fd.width != 0 && fd.height != 0) {
          Rectangle trim = c.computeTrim (0, 0, fd.width, fd.height);
          return new Point(trim.width, trim.height);
        }
      }
      return new Point(1, 1);
    }
    if (size.x == 0 && size.y == 0) {
      return size;
    }
    if (minWidth > 0 && size.x < minWidth) {
      size.x = minWidth;
    }
    if (minHeight > 0 && size.y < minHeight) {
      size.y = minHeight;
    }
    return size;
  }
}
TOP

Related Classes of org.gudy.azureus2.ui.swt.components.CompositeMinSize

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.