summaryrefslogtreecommitdiff
path: root/prototypes/miglayout/net/miginfocom/swt/SwtComponentWrapper.java
diff options
context:
space:
mode:
Diffstat (limited to 'prototypes/miglayout/net/miginfocom/swt/SwtComponentWrapper.java')
-rw-r--r--prototypes/miglayout/net/miginfocom/swt/SwtComponentWrapper.java718
1 files changed, 359 insertions, 359 deletions
diff --git a/prototypes/miglayout/net/miginfocom/swt/SwtComponentWrapper.java b/prototypes/miglayout/net/miginfocom/swt/SwtComponentWrapper.java
index aa7647a7..e994f790 100644
--- a/prototypes/miglayout/net/miginfocom/swt/SwtComponentWrapper.java
+++ b/prototypes/miglayout/net/miginfocom/swt/SwtComponentWrapper.java
@@ -1,359 +1,359 @@
-package net.miginfocom.swt;
-/*
- * License (BSD):
- * ==============
- *
- * Copyright (c) 2004, Mikael Grev, MiG InfoCom AB. (miglayout (at) miginfocom (dot) com)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright notice, this list
- * of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this
- * list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution.
- * Neither the name of the MiG InfoCom AB nor the names of its contributors may be
- * used to endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
- * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * @version 1.0
- * @author Mikael Grev, MiG InfoCom AB
- * Date: 2006-sep-08
- */
-
-import net.miginfocom.layout.ComponentWrapper;
-import net.miginfocom.layout.ContainerWrapper;
-import net.miginfocom.layout.PlatformDefaults;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.widgets.*;
-
-/**
- */
-public class SwtComponentWrapper implements ComponentWrapper
-{
- /** Debug color for component bounds outline.
- */
- private static Color DB_COMP_OUTLINE = new Color(Display.getCurrent(), 0, 0, 200);
-
- private static boolean vp = false;
- private static boolean mz = false;
-
- private final Control c;
- private int compType = TYPE_UNSET;
-
- public SwtComponentWrapper(Control c)
- {
- this.c = c;
- }
-
- public final int getBaseline(int width, int height)
- {
- return -1;
- }
-
- public final Object getComponent()
- {
- return c;
- }
-
- public final float getPixelUnitFactor(boolean isHor)
- {
- switch (PlatformDefaults.getLogicalPixelBase()) {
- case PlatformDefaults.BASE_FONT_SIZE:
- GC gc = new GC(c);
- FontMetrics fm = gc.getFontMetrics();
- float f = isHor ? fm.getAverageCharWidth() / 5f : fm.getHeight() / 13f;
- gc.dispose();
- return f;
-
- case PlatformDefaults.BASE_SCALE_FACTOR:
- Float s = isHor ? PlatformDefaults.getHorizontalScaleFactor() : PlatformDefaults.getVerticalScaleFactor();
- if (s != null)
- return s.floatValue();
- return (isHor ? getHorizontalScreenDPI() : getVerticalScreenDPI()) / (float) PlatformDefaults.getDefaultDPI();
-
- default:
- return 1f;
- }
- }
-
-// /** Cache.
-// */
-// private final static IdentityHashMap<FontMetrics, Point.Float> FM_MAP2 = new IdentityHashMap<FontMetrics, Point.Float>(4);
-// private final static Font SUBST_FONT2 = new Font("sansserif", Font.PLAIN, 11);
-//
-// public float getDialogUnit(boolean isHor)
-// {
-// Font font = c.getFont();
-// FontMetrics fm = c.getFontMetrics(font != null ? font : SUBST_FONT2);
-// Point.Float dluP = FM_MAP2.get(fm);
-// if (dluP == null) {
-// float w = fm.charWidth('X') / 4f;
-// int ascent = fm.getAscent();
-// float h = (ascent > 14 ? ascent : ascent + (15 - ascent) / 3) / 8f;
-//
-// dluP = new Point.Float(w, h);
-// FM_MAP2.put(fm, dluP);
-// }
-// return isHor ? dluP.x : dluP.y;
-// }
-
- public final int getX()
- {
- return c.getLocation().x;
- }
-
- public final int getY()
- {
- return c.getLocation().y;
- }
-
- public final int getWidth()
- {
- return c.getSize().x;
- }
-
- public final int getHeight()
- {
- return c.getSize().y;
- }
-
- public final int getScreenLocationX()
- {
- return c.toDisplay(0, 0).x;
- }
-
- public final int getScreenLocationY()
- {
- return c.toDisplay(0, 0).y;
- }
-
- public final int getMinimumHeight()
- {
- return mz ? 0 : computeSize(false).y;
- }
-
- public final int getMinimumWidth()
- {
- return mz ? 0 : computeSize(true).x;
- }
-
- public final int getPreferredHeight()
- {
- return computeSize(false).y;
- }
-
- public final int getPreferredWidth()
- {
- return computeSize(true).x;
- }
-
- public final int getMaximumHeight()
- {
- return Short.MAX_VALUE;
- }
-
- public final int getMaximumWidth()
- {
- return Short.MAX_VALUE;
- }
-
- private final Point computeSize(boolean h)
- {
- Point p = c.getSize();
- int wHint = (h || p.x <= 0) ? SWT.DEFAULT : p.x;
- int hHint = (!h || p.y <= 0) ? SWT.DEFAULT : p.y;
-
- if (wHint != SWT.DEFAULT || hHint != SWT.DEFAULT) {
- int trim = 0;
- if (c instanceof Scrollable) {
- Rectangle rect = ((Scrollable) c).computeTrim (0, 0, 0, 0);
- trim = h ? rect.height : rect.width;
- } else {
- trim = (c.getBorderWidth () << 1);
- }
- if (wHint == SWT.DEFAULT) {
- hHint = Math.max (0, hHint - trim);
- } else {
- wHint = Math.max (0, wHint - trim);
- }
- }
-
- return c.computeSize(wHint, hHint);
- }
-
- public final ContainerWrapper getParent()
- {
- return new SwtContainerWrapper(c.getParent());
- }
-
- public int getHorizontalScreenDPI()
- {
- return c.getDisplay().getDPI().x;
- }
-
- public int getVerticalScreenDPI()
- {
- return c.getDisplay().getDPI().y;
- }
-
- public final int getScreenWidth()
- {
- return c.getDisplay().getBounds().width;
- }
-
- public final int getScreenHeight()
- {
- return c.getDisplay().getBounds().height;
- }
-
- public final boolean hasBaseline()
- {
- return false;
- }
-
- public final String getLinkId()
- {
- return null;
- }
-
- public final void setBounds(int x, int y, int width, int height)
- {
- c.setBounds(x, y, width, height);
- }
-
- public boolean isVisible()
- {
- return c.getVisible();
- }
-
- public final int[] getVisualPadding()
- {
- return null;
- }
-
- public final static boolean isUseVisualPadding()
- {
- return vp;
- }
-
- public final static void setUseVisualPadding(boolean b)
- {
- vp = b;
- }
-
- /** Sets if minimum size for SWT components should be preferred size (default, false) or 0.
- * @return <code>true</code> means minimum size is 0.
- */
- public static boolean isMinimumSizeZero()
- {
- return mz;
- }
-
- /** Sets if minimum size for SWT components should be preferred size (default, false) or 0.
- * @param b <code>true</code> means minimum size is 0.
- */
- public static void setMinimumSizeZero(boolean b)
- {
- mz = b;
- }
-
- public int getLayoutHashCode()
- {
- if (c.isDisposed())
- return -1;
-
- Point sz = c.getSize();
- Point p = c.computeSize(sz.x > 0 ? sz.x : SWT.DEFAULT, SWT.DEFAULT, false);
- int h = p.x + (p.y << 12) + (sz.x << 22) + (sz.y << 16);
-
- if (c.isVisible())
- h |= (1 << 25);
-
- String id = getLinkId();
- if (id != null)
- h += id.hashCode();
- return h;
- }
-
- public final void paintDebugOutline()
- {
- if (c.isDisposed())
- return;
-
- GC gc = new GC(c);
-
- gc.setLineJoin(SWT.JOIN_MITER);
- gc.setLineCap(SWT.CAP_SQUARE);
- gc.setLineStyle(SWT.LINE_DOT);
-
- gc.setForeground(DB_COMP_OUTLINE);
- gc.drawRectangle(0, 0, getWidth() - 1, getHeight() - 1);
-
- gc.dispose();
- }
-
- public int getComponetType(boolean disregardScrollPane)
- {
- if (compType == TYPE_UNSET)
- compType = checkType();
-
- return compType;
- }
-
- private final int checkType()
- {
- int s = c.getStyle();
-
- if (c instanceof Text) {
- return (s & SWT.MULTI) > 0 ? TYPE_TEXT_AREA : TYPE_TEXT_FIELD;
- } else if (c instanceof Label) {
- return (s & SWT.SEPARATOR) > 0 ? TYPE_SEPARATOR : TYPE_LABEL;
- } else if (c instanceof Button) {
- if ((s & SWT.CHECK) > 0 || (s & SWT.RADIO) > 0)
- return TYPE_CHECK_BOX;
- return TYPE_BUTTON;
- } else if (c instanceof Canvas) {
- return TYPE_PANEL;
- } else if (c instanceof List) {
- return TYPE_LIST;
- } else if (c instanceof Table) {
- return TYPE_TABLE;
- } else if (c instanceof Spinner) {
- return TYPE_SPINNER;
- } else if (c instanceof ProgressBar) {
- return TYPE_PROGRESS_BAR;
- } else if (c instanceof Slider) {
- return TYPE_SLIDER;
- } else if (c instanceof Composite) { // only AWT components is not containers.
- return TYPE_CONTAINER;
- }
- return TYPE_UNKNOWN;
- }
-
- public final int hashCode()
- {
- return getComponent().hashCode();
- }
-
- public final boolean equals(Object o)
- {
- if (o == null || o instanceof ComponentWrapper == false)
- return false;
-
- return getComponent().equals(((ComponentWrapper) o).getComponent());
- }
-}
+package net.miginfocom.swt;
+/*
+ * License (BSD):
+ * ==============
+ *
+ * Copyright (c) 2004, Mikael Grev, MiG InfoCom AB. (miglayout (at) miginfocom (dot) com)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this list
+ * of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this
+ * list of conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ * Neither the name of the MiG InfoCom AB nor the names of its contributors may be
+ * used to endorse or promote products derived from this software without specific
+ * prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * @version 1.0
+ * @author Mikael Grev, MiG InfoCom AB
+ * Date: 2006-sep-08
+ */
+
+import net.miginfocom.layout.ComponentWrapper;
+import net.miginfocom.layout.ContainerWrapper;
+import net.miginfocom.layout.PlatformDefaults;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.*;
+import org.eclipse.swt.widgets.*;
+
+/**
+ */
+public class SwtComponentWrapper implements ComponentWrapper
+{
+ /** Debug color for component bounds outline.
+ */
+ private static Color DB_COMP_OUTLINE = new Color(Display.getCurrent(), 0, 0, 200);
+
+ private static boolean vp = false;
+ private static boolean mz = false;
+
+ private final Control c;
+ private int compType = TYPE_UNSET;
+
+ public SwtComponentWrapper(Control c)
+ {
+ this.c = c;
+ }
+
+ public final int getBaseline(int width, int height)
+ {
+ return -1;
+ }
+
+ public final Object getComponent()
+ {
+ return c;
+ }
+
+ public final float getPixelUnitFactor(boolean isHor)
+ {
+ switch (PlatformDefaults.getLogicalPixelBase()) {
+ case PlatformDefaults.BASE_FONT_SIZE:
+ GC gc = new GC(c);
+ FontMetrics fm = gc.getFontMetrics();
+ float f = isHor ? fm.getAverageCharWidth() / 5f : fm.getHeight() / 13f;
+ gc.dispose();
+ return f;
+
+ case PlatformDefaults.BASE_SCALE_FACTOR:
+ Float s = isHor ? PlatformDefaults.getHorizontalScaleFactor() : PlatformDefaults.getVerticalScaleFactor();
+ if (s != null)
+ return s.floatValue();
+ return (isHor ? getHorizontalScreenDPI() : getVerticalScreenDPI()) / (float) PlatformDefaults.getDefaultDPI();
+
+ default:
+ return 1f;
+ }
+ }
+
+// /** Cache.
+// */
+// private final static IdentityHashMap<FontMetrics, Point.Float> FM_MAP2 = new IdentityHashMap<FontMetrics, Point.Float>(4);
+// private final static Font SUBST_FONT2 = new Font("sansserif", Font.PLAIN, 11);
+//
+// public float getDialogUnit(boolean isHor)
+// {
+// Font font = c.getFont();
+// FontMetrics fm = c.getFontMetrics(font != null ? font : SUBST_FONT2);
+// Point.Float dluP = FM_MAP2.get(fm);
+// if (dluP == null) {
+// float w = fm.charWidth('X') / 4f;
+// int ascent = fm.getAscent();
+// float h = (ascent > 14 ? ascent : ascent + (15 - ascent) / 3) / 8f;
+//
+// dluP = new Point.Float(w, h);
+// FM_MAP2.put(fm, dluP);
+// }
+// return isHor ? dluP.x : dluP.y;
+// }
+
+ public final int getX()
+ {
+ return c.getLocation().x;
+ }
+
+ public final int getY()
+ {
+ return c.getLocation().y;
+ }
+
+ public final int getWidth()
+ {
+ return c.getSize().x;
+ }
+
+ public final int getHeight()
+ {
+ return c.getSize().y;
+ }
+
+ public final int getScreenLocationX()
+ {
+ return c.toDisplay(0, 0).x;
+ }
+
+ public final int getScreenLocationY()
+ {
+ return c.toDisplay(0, 0).y;
+ }
+
+ public final int getMinimumHeight()
+ {
+ return mz ? 0 : computeSize(false).y;
+ }
+
+ public final int getMinimumWidth()
+ {
+ return mz ? 0 : computeSize(true).x;
+ }
+
+ public final int getPreferredHeight()
+ {
+ return computeSize(false).y;
+ }
+
+ public final int getPreferredWidth()
+ {
+ return computeSize(true).x;
+ }
+
+ public final int getMaximumHeight()
+ {
+ return Short.MAX_VALUE;
+ }
+
+ public final int getMaximumWidth()
+ {
+ return Short.MAX_VALUE;
+ }
+
+ private final Point computeSize(boolean h)
+ {
+ Point p = c.getSize();
+ int wHint = (h || p.x <= 0) ? SWT.DEFAULT : p.x;
+ int hHint = (!h || p.y <= 0) ? SWT.DEFAULT : p.y;
+
+ if (wHint != SWT.DEFAULT || hHint != SWT.DEFAULT) {
+ int trim = 0;
+ if (c instanceof Scrollable) {
+ Rectangle rect = ((Scrollable) c).computeTrim (0, 0, 0, 0);
+ trim = h ? rect.height : rect.width;
+ } else {
+ trim = (c.getBorderWidth () << 1);
+ }
+ if (wHint == SWT.DEFAULT) {
+ hHint = Math.max (0, hHint - trim);
+ } else {
+ wHint = Math.max (0, wHint - trim);
+ }
+ }
+
+ return c.computeSize(wHint, hHint);
+ }
+
+ public final ContainerWrapper getParent()
+ {
+ return new SwtContainerWrapper(c.getParent());
+ }
+
+ public int getHorizontalScreenDPI()
+ {
+ return c.getDisplay().getDPI().x;
+ }
+
+ public int getVerticalScreenDPI()
+ {
+ return c.getDisplay().getDPI().y;
+ }
+
+ public final int getScreenWidth()
+ {
+ return c.getDisplay().getBounds().width;
+ }
+
+ public final int getScreenHeight()
+ {
+ return c.getDisplay().getBounds().height;
+ }
+
+ public final boolean hasBaseline()
+ {
+ return false;
+ }
+
+ public final String getLinkId()
+ {
+ return null;
+ }
+
+ public final void setBounds(int x, int y, int width, int height)
+ {
+ c.setBounds(x, y, width, height);
+ }
+
+ public boolean isVisible()
+ {
+ return c.getVisible();
+ }
+
+ public final int[] getVisualPadding()
+ {
+ return null;
+ }
+
+ public final static boolean isUseVisualPadding()
+ {
+ return vp;
+ }
+
+ public final static void setUseVisualPadding(boolean b)
+ {
+ vp = b;
+ }
+
+ /** Sets if minimum size for SWT components should be preferred size (default, false) or 0.
+ * @return <code>true</code> means minimum size is 0.
+ */
+ public static boolean isMinimumSizeZero()
+ {
+ return mz;
+ }
+
+ /** Sets if minimum size for SWT components should be preferred size (default, false) or 0.
+ * @param b <code>true</code> means minimum size is 0.
+ */
+ public static void setMinimumSizeZero(boolean b)
+ {
+ mz = b;
+ }
+
+ public int getLayoutHashCode()
+ {
+ if (c.isDisposed())
+ return -1;
+
+ Point sz = c.getSize();
+ Point p = c.computeSize(sz.x > 0 ? sz.x : SWT.DEFAULT, SWT.DEFAULT, false);
+ int h = p.x + (p.y << 12) + (sz.x << 22) + (sz.y << 16);
+
+ if (c.isVisible())
+ h |= (1 << 25);
+
+ String id = getLinkId();
+ if (id != null)
+ h += id.hashCode();
+ return h;
+ }
+
+ public final void paintDebugOutline()
+ {
+ if (c.isDisposed())
+ return;
+
+ GC gc = new GC(c);
+
+ gc.setLineJoin(SWT.JOIN_MITER);
+ gc.setLineCap(SWT.CAP_SQUARE);
+ gc.setLineStyle(SWT.LINE_DOT);
+
+ gc.setForeground(DB_COMP_OUTLINE);
+ gc.drawRectangle(0, 0, getWidth() - 1, getHeight() - 1);
+
+ gc.dispose();
+ }
+
+ public int getComponetType(boolean disregardScrollPane)
+ {
+ if (compType == TYPE_UNSET)
+ compType = checkType();
+
+ return compType;
+ }
+
+ private final int checkType()
+ {
+ int s = c.getStyle();
+
+ if (c instanceof Text) {
+ return (s & SWT.MULTI) > 0 ? TYPE_TEXT_AREA : TYPE_TEXT_FIELD;
+ } else if (c instanceof Label) {
+ return (s & SWT.SEPARATOR) > 0 ? TYPE_SEPARATOR : TYPE_LABEL;
+ } else if (c instanceof Button) {
+ if ((s & SWT.CHECK) > 0 || (s & SWT.RADIO) > 0)
+ return TYPE_CHECK_BOX;
+ return TYPE_BUTTON;
+ } else if (c instanceof Canvas) {
+ return TYPE_PANEL;
+ } else if (c instanceof List) {
+ return TYPE_LIST;
+ } else if (c instanceof Table) {
+ return TYPE_TABLE;
+ } else if (c instanceof Spinner) {
+ return TYPE_SPINNER;
+ } else if (c instanceof ProgressBar) {
+ return TYPE_PROGRESS_BAR;
+ } else if (c instanceof Slider) {
+ return TYPE_SLIDER;
+ } else if (c instanceof Composite) { // only AWT components is not containers.
+ return TYPE_CONTAINER;
+ }
+ return TYPE_UNKNOWN;
+ }
+
+ public final int hashCode()
+ {
+ return getComponent().hashCode();
+ }
+
+ public final boolean equals(Object o)
+ {
+ if (o == null || o instanceof ComponentWrapper == false)
+ return false;
+
+ return getComponent().equals(((ComponentWrapper) o).getComponent());
+ }
+}