# HG changeset patch
# User Frank Benoit
# Date 1223383291 -7200
# Node ID fbe68c33eeee7231a0dc352d471ad43eb1de8e69
# Parent 43be986a13725472a0b912d658ad58640cf4c251
Sync layout with dwt-linux
diff -r 43be986a1372 -r fbe68c33eeee dwt/layout/FillData.d
--- a/dwt/layout/FillData.d Tue Oct 07 14:41:16 2008 +0200
+++ b/dwt/layout/FillData.d Tue Oct 07 14:41:31 2008 +0200
@@ -7,11 +7,11 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Port to the D programming language:
+ * Frank Benoit
*******************************************************************************/
module dwt.layout.FillData;
-import dwt.dwthelper.utils;
-
import dwt.DWT;
import dwt.graphics.Point;
import dwt.widgets.Control;
@@ -20,19 +20,19 @@
int defaultWidth = -1, defaultHeight = -1;
int currentWhint, currentHhint, currentWidth = -1, currentHeight = -1;
-
-Point computeSize (Control control, int wHint, int hHint, bool flushCache) {
- if (flushCache) flushCache();
+
+Point computeSize (Control control, int wHint, int hHint, bool flushCache_) {
+ if (flushCache_) flushCache();
if (wHint is DWT.DEFAULT && hHint is DWT.DEFAULT) {
if (defaultWidth is -1 || defaultHeight is -1) {
- Point size = control.computeSize (wHint, hHint, flushCache);
+ Point size = control.computeSize (wHint, hHint, flushCache_);
defaultWidth = size.x;
defaultHeight = size.y;
}
return new Point(defaultWidth, defaultHeight);
}
if (currentWidth is -1 || currentHeight is -1 || wHint !is currentWhint || hHint !is currentHhint) {
- Point size = control.computeSize (wHint, hHint, flushCache);
+ Point size = control.computeSize (wHint, hHint, flushCache_);
currentWhint = wHint;
currentHhint = hHint;
currentWidth = size.x;
diff -r 43be986a1372 -r fbe68c33eeee dwt/layout/FillLayout.d
--- a/dwt/layout/FillLayout.d Tue Oct 07 14:41:16 2008 +0200
+++ b/dwt/layout/FillLayout.d Tue Oct 07 14:41:31 2008 +0200
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,36 +7,40 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Port to the D programming language:
+ * Frank Benoit
*******************************************************************************/
module dwt.layout.FillLayout;
-import dwt.dwthelper.utils;
-
import dwt.DWT;
import dwt.graphics.Point;
import dwt.graphics.Rectangle;
-import dwt.widgets.Composite;
import dwt.widgets.Control;
import dwt.widgets.Layout;
+import dwt.widgets.Composite;
import dwt.widgets.Scrollable;
+import dwt.layout.FillData;
+
+import tango.util.Convert;
+import dwt.dwthelper.utils;
/**
- * FillLayout
is the simplest layout class. It lays out
- * controls in a single row or column, forcing them to be the same size.
+ * FillLayout
is the simplest layout class. It lays out
+ * controls in a single row or column, forcing them to be the same size.
*
- * Initially, the controls will all be as tall as the tallest control,
- * and as wide as the widest. FillLayout
does not wrap,
- * but you can specify margins and spacing. You might use it to
- * lay out buttons in a task bar or tool bar, or to stack checkboxes
- * in a Group
. FillLayout
can also be used
- * when a Composite
only has one child. For example,
- * if a Shell
has a single Group
child,
- * FillLayout
will cause the Group
to
+ * Initially, the controls will all be as tall as the tallest control,
+ * and as wide as the widest. FillLayout
does not wrap,
+ * but you can specify margins and spacing. You might use it to
+ * lay out buttons in a task bar or tool bar, or to stack checkboxes
+ * in a Group
. FillLayout
can also be used
+ * when a Composite
only has one child. For example,
+ * if a Shell
has a single Group
child,
+ * FillLayout
will cause the Group
to
* completely fill the Shell
(if margins are 0).
*
*
* Example code: first a FillLayout
is created and
- * its type field is set, and then the layout is set into the
+ * its type field is set, and then the layout is set into the
* Composite
. Note that in a FillLayout
,
* children are always the same size, and they fill all available space.
*
@@ -45,10 +49,13 @@
* shell.setLayout(fillLayout);
*
*
+ *
+ * @see DWT Example: LayoutExample
+ * @see Sample code and further information
*/
public final class FillLayout : Layout {
/**
- * type specifies how controls will be positioned
+ * type specifies how controls will be positioned
* within the layout.
*
* The default value is HORIZONTAL.
@@ -59,37 +66,37 @@
*
*/
public int type = DWT.HORIZONTAL;
-
+
/**
* marginWidth specifies the number of pixels of horizontal margin
* that will be placed along the left and right edges of the layout.
*
* The default value is 0.
- *
+ *
* @since 3.0
*/
public int marginWidth = 0;
-
+
/**
* marginHeight specifies the number of pixels of vertical margin
* that will be placed along the top and bottom edges of the layout.
*
* The default value is 0.
- *
+ *
* @since 3.0
*/
public int marginHeight = 0;
-
+
/**
* spacing specifies the number of pixels between the edge of one cell
* and the edge of its neighbouring cell.
*
* The default value is 0.
- *
+ *
* @since 3.0
*/
public int spacing = 0;
-
+
/**
* Constructs a new instance of this class.
*/
@@ -100,14 +107,14 @@
* Constructs a new instance of this class given the type.
*
* @param type the type of fill layout
- *
+ *
* @since 2.0
*/
public this (int type) {
this.type = type;
}
-protected Point computeSize (Composite composite, int wHint, int hHint, bool flushCache) {
+override protected Point computeSize (Composite composite, int wHint, int hHint, bool flushCache) {
Control [] children = composite.getChildren ();
int count = children.length;
int maxWidth = 0, maxHeight = 0;
@@ -155,8 +162,8 @@
} else {
// TEMPORARY CODE
int trimX, trimY;
- if ( null !is cast(Scrollable)control ) {
- Rectangle rect = (cast(Scrollable) control).computeTrim (0, 0, 0, 0);
+ if ( auto sa = cast(Scrollable)control ) {
+ Rectangle rect = sa.computeTrim (0, 0, 0, 0);
trimX = rect.width;
trimY = rect.height;
} else {
@@ -169,20 +176,20 @@
return size;
}
-protected bool flushCache (Control control) {
+override protected bool flushCache (Control control) {
Object data = control.getLayoutData();
if (data !is null) (cast(FillData)data).flushCache();
return true;
}
String getName () {
- String string = getClass ().getName ();
- int index = string.lastIndexOf ('.');
- if (index is -1) return string;
- return string.substring (index + 1, string.length ());
+ String string = this.classinfo.name;
+ int index = string.lastIndexOf( '.');
+ if (index is -1 ) return string;
+ return string[ index + 1 .. string.length ];
}
-protected void layout (Composite composite, bool flushCache) {
+override protected void layout (Composite composite, bool flushCache) {
Rectangle rect = composite.getClientArea ();
Control [] children = composite.getChildren ();
int count = children.length;
@@ -228,14 +235,14 @@
*
* @return a string representation of the layout
*/
-public String toString () {
- String string = getName ()+" {";
- string += "type="+((type is DWT.VERTICAL) ? "DWT.VERTICAL" : "DWT.HORIZONTAL")+" ";
- if (marginWidth !is 0) string += "marginWidth="+marginWidth+" ";
- if (marginHeight !is 0) string += "marginHeight="+marginHeight+" ";
- if (spacing !is 0) string += "spacing="+spacing+" ";
+override public String toString () {
+ String string = getName () ~ " {";
+ string ~= "type="~((type is DWT.VERTICAL) ? "DWT.VERTICAL" : "DWT.HORIZONTAL")~" ";
+ if (marginWidth !is 0) string ~= "marginWidth="~to!(String)(marginWidth)~" ";
+ if (marginHeight !is 0) string ~= "marginHeight="~to!(String)(marginHeight)~" ";
+ if (spacing !is 0) string ~= "spacing="~to!(String)(spacing)~" ";
string = string.trim();
- string += "}";
+ string ~= "}";
return string;
}
}
diff -r 43be986a1372 -r fbe68c33eeee dwt/layout/FormAttachment.d
--- a/dwt/layout/FormAttachment.d Tue Oct 07 14:41:16 2008 +0200
+++ b/dwt/layout/FormAttachment.d Tue Oct 07 14:41:31 2008 +0200
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,17 +7,22 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Port to the D programming language:
+ * Frank Benoit
*******************************************************************************/
module dwt.layout.FormAttachment;
-import dwt.dwthelper.utils;
-
import dwt.DWT;
import dwt.widgets.Control;
+import dwt.layout.FormLayout;
+import dwt.layout.FormData;
+
+import tango.text.convert.Format;
+import dwt.dwthelper.utils;
/**
* Instances of this class are used to define the edges of a control
- * within a FormLayout
.
+ * within a FormLayout
.
*
* FormAttachments
are set into the top, bottom, left,
* and right fields of the FormData
for a control.
@@ -33,10 +38,10 @@
*
*
* A FormAttachment
defines where to attach the side of
- * a control by using the equation, y = ax + b. The "a" term represents
+ * a control by using the equation, y = ax + b. The "a" term represents
* a fraction of the parent composite's width (from the left) or height
* (from the top). It can be defined using a numerator and denominator,
- * or just a percentage value. If a percentage is used, the denominator
+ * or just a percentage value. If a percentage is used, the denominator
* is set to 100. The "b" term in the equation represents an offset, in
* pixels, from the attachment position. For example:
*
@@ -52,8 +57,8 @@
* FormAttachment attach = new FormAttachment (button, 10);
*
* specifies that the side to which the FormAttachment
- * object belongs will lie in the same position as the adjacent side of
- * the button
control, plus 10 pixels. The control side can
+ * object belongs will lie in the same position as the adjacent side of
+ * the button
control, plus 10 pixels. The control side can
* also be attached to the opposite side of the specified control.
* For example:
*
@@ -61,8 +66,8 @@
* data.left = new FormAttachment (button, 0, DWT.LEFT);
*
* specifies that the left side of the control will lie in the same position
- * as the left side of the button
control. The control can also
- * be attached in a position that will center the control on the specified
+ * as the left side of the button
control. The control can also
+ * be attached in a position that will center the control on the specified
* control. For example:
*
* data.left = new FormAttachment (button, 0, DWT.CENTER);
@@ -71,10 +76,11 @@
* centered between the left and right sides of the button
control.
* If the alignment is not specified, the default is to attach to the adjacent side.
*
- *
+ *
* @see FormLayout
* @see FormData
- *
+ * @see Sample code and further information
+ *
* @since 2.0
*/
public final class FormAttachment {
@@ -83,15 +89,15 @@
* equation, y = ax + b, which defines the attachment.
*/
public int numerator;
-
+
/**
* denominator specifies the denominator of the "a" term in the
* equation, y = ax + b, which defines the attachment.
- *
+ *
* The default value is 100.
*/
public int denominator = 100;
-
+
/**
* offset specifies the offset, in pixels, of the control side
* from the attachment position.
@@ -99,34 +105,34 @@
* to the right of or below the attachment position. If it is
* negative, then the control side is offset to the left of or
* above the attachment position.
- *
+ *
* This is equivalent to the "b" term in the equation y = ax + b.
* The default value is 0.
*/
public int offset;
-
+
/**
* control specifies the control to which the control side is
* attached.
*/
public Control control;
-
+
/**
* alignment specifies the alignment of the control side that is
* attached to a control.
*
- * For top and bottom attachments, TOP, BOTTOM and CENTER are used. For left
+ * For top and bottom attachments, TOP, BOTTOM and CENTER are used. For left
* and right attachments, LEFT, RIGHT and CENTER are used. If any other case
* occurs, the default will be used instead.
*
- *
+ *
*
Possible values are:
- * - TOP: Attach the side to the top side of the specified control.
- * - BOTTOM : Attach the side to the bottom side of the specified control.
- * - LEFT: Attach the side to the left side of the specified control.
- * - RIGHT: Attach the side to the right side of the specified control.
- * - CENTER: Attach the side at a position which will center the control on the specified control.
- * - DEFAULT: Attach the side to the adjacent side of the specified control.
+ * - {@link DWT#TOP}: Attach the side to the top side of the specified control.
+ * - {@link DWT#BOTTOM}: Attach the side to the bottom side of the specified control.
+ * - {@link DWT#LEFT}: Attach the side to the left side of the specified control.
+ * - {@link DWT#RIGHT}: Attach the side to the right side of the specified control.
+ * - {@link DWT#CENTER}: Attach the side at a position which will center the control on the specified control.
+ * - {@link DWT#DEFAULT}: Attach the side to the adjacent side of the specified control.
*
*/
public int alignment;
@@ -137,7 +143,7 @@
* the attachment is treated as a percentage of the form.
* The numerator is zero, the denominator is 100 and the
* offset is zero.
- *
+ *
* @since 3.2
*/
public this () {
@@ -146,11 +152,11 @@
/**
* Constructs a new instance of this class given a numerator
* Since no denominator or offset is specified, the default
- * is to treat the numerator as a percentage of the form, with a
+ * is to treat the numerator as a percentage of the form, with a
* denominator of 100. The offset is zero.
- *
+ *
* @param numerator the percentage of the position
- *
+ *
* @since 3.0
*/
public this (int numerator) {
@@ -160,9 +166,9 @@
/**
* Constructs a new instance of this class given a numerator
* and an offset. Since no denominator is specified, the default
- * is to treat the numerator as a percentage of the form, with a
+ * is to treat the numerator as a percentage of the form, with a
* denominator of 100.
- *
+ *
* @param numerator the percentage of the position
* @param offset the offset of the side from the position
*/
@@ -171,7 +177,7 @@
}
/**
- * Constructs a new instance of this class given a numerator
+ * Constructs a new instance of this class given a numerator
* and denominator and an offset. The position of the side is
* given by the fraction of the form defined by the numerator
* and denominator.
@@ -190,10 +196,10 @@
/**
* Constructs a new instance of this class given a control.
* Since no alignment is specified, the default alignment is
- * to attach the side to the adjacent side of the specified
+ * to attach the side to the adjacent side of the specified
* control. Since no offset is specified, an offset of 0 is
* used.
- *
+ *
* @param control the control the side is attached to
*/
public this (Control control) {
@@ -203,9 +209,9 @@
/**
* Constructs a new instance of this class given a control
* and an offset. Since no alignment is specified, the default
- * alignment is to attach the side to the adjacent side of the
+ * alignment is to attach the side to the adjacent side of the
* specified control.
- *
+ *
* @param control the control the side is attached to
* @param offset the offset of the side from the control
*/
@@ -215,11 +221,26 @@
/**
* Constructs a new instance of this class given a control,
- * an offset and an alignment.
- *
+ * an offset and an alignment. The possible alignment values are:
+ *
+ * - {@link DWT#TOP}
+ * - the side will be attached to the top side of the specified control
+ * - {@link DWT#BOTTOM}
+ * - the side will be attached to the bottom side of the specified control
+ * - {@link DWT#LEFT}
+ * - the side will be attached to the left side of the specified control
+ * - {@link DWT#RIGHT}
+ * - the side will be attached to the right side of the specified control
+ * - {@link DWT#CENTER}
+ * - the side will be centered on the same side of the specified control
+ * - {@link DWT#DEFAULT}
+ * - the side will be attached to the adjacent side of the specified control
+ *
+ *
* @param control the control the side is attached to
* @param offset the offset of the side from the control
- * @param alignment the alignment of the side to the control it is attached to
+ * @param alignment the alignment of the side to the control it is attached to,
+ * one of TOP, BOTTOM, LEFT, RIGHT, CENTER, or DEFAULT
*/
public this (Control control, int offset, int alignment) {
this.control = control;
@@ -287,16 +308,16 @@
if (numerator is 0) DWT.error (DWT.ERROR_CANNOT_BE_ZERO);
return (value - offset) * denominator / numerator;
}
-
+
/**
* Returns a string containing a concise, human-readable
* description of the receiver.
*
* @return a string representation of the FormAttachment
*/
-public String toString () {
- String string = control !is null ? control.toString () : numerator + "/" + denominator;
- return "{y = (" + string + (offset >= 0 ? ")x + " + offset: ")x - " + (-offset))+"}";
+public override String toString () {
+ String string = control !is null ? control.toString () : Format( "{}/{}", numerator, denominator );
+ return Format("{{y = ({})x + {}}", string, ( offset >= 0 ? Format(")x + {}", offset ) : Format( ")x - {}", -offset)));
}
}
diff -r 43be986a1372 -r fbe68c33eeee dwt/layout/FormData.d
--- a/dwt/layout/FormData.d Tue Oct 07 14:41:16 2008 +0200
+++ b/dwt/layout/FormData.d Tue Oct 07 14:41:31 2008 +0200
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,22 +7,26 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Port to the D programming language:
+ * Frank Benoit
*******************************************************************************/
module dwt.layout.FormData;
-import dwt.dwthelper.utils;
-
import dwt.DWT;
import dwt.graphics.Point;
import dwt.widgets.Control;
+import dwt.layout.FormAttachment;
+
+import tango.util.Convert;
+import dwt.dwthelper.utils;
/**
- * Instances of this class are used to define the attachments
- * of a control in a FormLayout
.
+ * Instances of this class are used to define the attachments
+ * of a control in a FormLayout
.
*
- * To set a FormData
object into a control, you use the
- * setLayoutData ()
method. To define attachments for the
+ * To set a FormData
object into a control, you use the
+ * setLayoutData ()
method. To define attachments for the
* FormData
, set the fields directly, like this:
*
* FormData data = new FormData();
@@ -32,22 +36,23 @@
*
*
*
- * FormData
contains the FormAttachments
for
+ * FormData
contains the FormAttachments
for
* each edge of the control that the FormLayout
uses to
* determine the size and position of the control. FormData
* objects also allow you to set the width and height of controls within
- * a FormLayout
.
+ * a FormLayout
.
*
- *
+ *
* @see FormLayout
* @see FormAttachment
- *
+ * @see Sample code and further information
+ *
* @since 2.0
*/
public final class FormData {
/**
* width specifies the preferred width in pixels. This value
- * is the wHint passed into Control.computeSize(int, int, bool)
+ * is the wHint passed into Control.computeSize(int, int, bool)
* to determine the preferred size of the control.
*
* The default value is DWT.DEFAULT.
@@ -57,7 +62,7 @@
public int width = DWT.DEFAULT;
/**
* height specifies the preferred height in pixels. This value
- * is the hHint passed into Control.computeSize(int, int, bool)
+ * is the hHint passed into Control.computeSize(int, int, bool)
* to determine the preferred size of the control.
*
* The default value is DWT.DEFAULT.
@@ -66,7 +71,7 @@
*/
public int height = DWT.DEFAULT;
/**
- * left specifies the attachment of the left side of
+ * left specifies the attachment of the left side of
* the control.
*/
public FormAttachment left;
@@ -84,25 +89,25 @@
* control.
*/
public FormAttachment bottom;
-
+
int cacheWidth = -1, cacheHeight = -1;
int defaultWhint, defaultHhint, defaultWidth = -1, defaultHeight = -1;
int currentWhint, currentHhint, currentWidth = -1, currentHeight = -1;
FormAttachment cacheLeft, cacheRight, cacheTop, cacheBottom;
bool isVisited, needed;
-
+
/**
* Constructs a new instance of FormData using
* default values.
*/
public this () {
}
-
+
/**
* Constructs a new instance of FormData according to the parameters.
* A value of DWT.DEFAULT indicates that no minimum width or
* no minimum height is specified.
- *
+ *
* @param width a minimum width for the control
* @param height a minimum height for the control
*/
@@ -111,11 +116,11 @@
this.height = height;
}
-void computeSize (Control control, int wHint, int hHint, bool flushCache) {
+void computeSize (Control control, int wHint, int hHint, bool flushCache_) {
if (cacheWidth !is -1 && cacheHeight !is -1) return;
if (wHint is this.width && hHint is this.height) {
if (defaultWidth is -1 || defaultHeight is -1 || wHint !is defaultWhint || hHint !is defaultHhint) {
- Point size = control.computeSize (wHint, hHint, flushCache);
+ Point size = control.computeSize (wHint, hHint, flushCache_);
defaultWhint = wHint;
defaultHhint = hHint;
defaultWidth = size.x;
@@ -126,7 +131,7 @@
return;
}
if (currentWidth is -1 || currentHeight is -1 || wHint !is currentWhint || hHint !is currentHhint) {
- Point size = control.computeSize (wHint, hHint, flushCache);
+ Point size = control.computeSize (wHint, hHint, flushCache_);
currentWhint = wHint;
currentHhint = hHint;
currentWidth = size.x;
@@ -175,7 +180,7 @@
FormData bottomData = cast(FormData) bottomControl.getLayoutData ();
FormAttachment bottomAttachment = bottomData.getBottomAttachment (bottomControl, spacing, flushCache);
switch (bottom.alignment) {
- case DWT.BOTTOM:
+ case DWT.BOTTOM:
cacheBottom = bottomAttachment.plus (bottom.offset);
break;
case DWT.CENTER: {
@@ -186,7 +191,7 @@
}
default: {
FormAttachment topAttachment = bottomData.getTopAttachment (bottomControl, spacing, flushCache);
- cacheBottom = topAttachment.plus (bottom.offset - spacing);
+ cacheBottom = topAttachment.plus (bottom.offset - spacing);
break;
}
}
@@ -227,18 +232,18 @@
}
default: {
FormAttachment rightAttachment = leftData.getRightAttachment (leftControl, spacing, flushCache);
- cacheLeft = rightAttachment.plus (left.offset + spacing);
+ cacheLeft = rightAttachment.plus (left.offset + spacing);
}
}
- isVisited = false;
+ isVisited = false;
return cacheLeft;
}
-
+
String getName () {
- String string = getClass ().getName ();
- int index = string.lastIndexOf ('.');
- if (index is -1) return string;
- return string.substring (index + 1, string.length ());
+ String string = this.classinfo.name;
+ int index = string.lastIndexOf( '.');
+ if (index is -1 ) return string;
+ return string[ index + 1 .. string.length ];
}
FormAttachment getRightAttachment (Control control, int spacing, bool flushCache) {
@@ -263,7 +268,7 @@
FormData rightData = cast(FormData) rightControl.getLayoutData ();
FormAttachment rightAttachment = rightData.getRightAttachment (rightControl, spacing, flushCache);
switch (right.alignment) {
- case DWT.RIGHT:
+ case DWT.RIGHT:
cacheRight = rightAttachment.plus (right.offset);
break;
case DWT.CENTER: {
@@ -329,16 +334,16 @@
*
* @return a string representation of the FormData object
*/
-public String toString () {
- String string = getName()+" {";
- if (width !is DWT.DEFAULT) string += "width="+width+" ";
- if (height !is DWT.DEFAULT) string += "height="+height+" ";
- if (left !is null) string += "left="+left+" ";
- if (right !is null) string += "right="+right+" ";
- if (top !is null) string += "top="+top+" ";
- if (bottom !is null) string += "bottom="+bottom+" ";
+override public String toString () {
+ String string = getName()~" {";
+ if (width !is DWT.DEFAULT) string ~= "width="~to!(String)(width)~" ";
+ if (height !is DWT.DEFAULT) string ~= "height="~to!(String)(height)~" ";
+ if (left !is null) string ~= "left="~to!(String)(left)~" ";
+ if (right !is null) string ~= "right="~to!(String)(right)~" ";
+ if (top !is null) string ~= "top="~to!(String)(top)~" ";
+ if (bottom !is null) string ~= "bottom="~to!(String)(bottom)~" ";
string = string.trim();
- string += "}";
+ string ~= "}";
return string;
}
diff -r 43be986a1372 -r fbe68c33eeee dwt/layout/FormLayout.d
--- a/dwt/layout/FormLayout.d Tue Oct 07 14:41:16 2008 +0200
+++ b/dwt/layout/FormLayout.d Tue Oct 07 14:41:31 2008 +0200
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,21 +7,27 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Port to the D programming language:
+ * Frank Benoit
*******************************************************************************/
module dwt.layout.FormLayout;
-import dwt.dwthelper.utils;
-
+import dwt.layout.FormAttachment;
+import dwt.layout.FormData;
import dwt.DWT;
import dwt.graphics.Point;
import dwt.graphics.Rectangle;
-import dwt.widgets.Composite;
import dwt.widgets.Control;
import dwt.widgets.Layout;
+import dwt.widgets.Composite;
import dwt.widgets.Scrollable;
+import tango.util.Convert;
+import Math = tango.math.Math;
+import dwt.dwthelper.utils;
+
/**
- * Instances of this class control the position and size of the
+ * Instances of this class control the position and size of the
* children of a composite control by using FormAttachments
* to optionally configure the left, top, right and bottom edges of
* each child.
@@ -57,7 +63,7 @@
*
*
*
- * Each side of a child control can be attached to a position in the parent
+ * Each side of a child control can be attached to a position in the parent
* composite, or to other controls within the Composite
by
* creating instances of FormAttachment
and setting them into
* the top, bottom, left, and right fields of the child's FormData
.
@@ -83,15 +89,17 @@
* button1
. This will over constrain the layout, causing undefined
* behavior. The algorithm will terminate, but the results are undefined.
*
- *
+ *
* @see FormData
* @see FormAttachment
- *
+ * @see FormLayout snippets
+ * @see DWT Example: LayoutExample
+ * @see Sample code and further information
+ *
* @since 2.0
- *
*/
public final class FormLayout : Layout {
-
+
/**
* marginWidth specifies the number of pixels of horizontal margin
* that will be placed along the left and right edges of the layout.
@@ -99,7 +107,7 @@
* The default value is 0.
*/
public int marginWidth = 0;
-
+
/**
* marginHeight specifies the number of pixels of vertical margin
* that will be placed along the top and bottom edges of the layout.
@@ -107,14 +115,14 @@
* The default value is 0.
*/
public int marginHeight = 0;
-
+
/**
* marginLeft specifies the number of pixels of horizontal margin
* that will be placed along the left edge of the layout.
*
* The default value is 0.
- *
+ *
* @since 3.1
*/
public int marginLeft = 0;
@@ -124,7 +132,7 @@
* that will be placed along the top edge of the layout.
*
* The default value is 0.
- *
+ *
* @since 3.1
*/
public int marginTop = 0;
@@ -134,7 +142,7 @@
* that will be placed along the right edge of the layout.
*
* The default value is 0.
- *
+ *
* @since 3.1
*/
public int marginRight = 0;
@@ -144,7 +152,7 @@
* that will be placed along the bottom edge of the layout.
*
* The default value is 0.
- *
+ *
* @since 3.1
*/
public int marginBottom = 0;
@@ -154,11 +162,11 @@
* and the edge of its neighbouring control.
*
* The default value is 0.
- *
+ *
* @since 3.0
*/
public int spacing = 0;
-
+
/**
* Constructs a new instance of this class.
*/
@@ -168,28 +176,28 @@
/*
* Computes the preferred height of the form with
* respect to the preferred height of the control.
- *
- * Given that the equations for top cast(T) and bottom cast(B)
- * of the control in terms of the height of the form cast(X)
+ *
+ * Given that the equations for top (T) and bottom (B)
+ * of the control in terms of the height of the form (X)
* are:
* T = AX + B
* B = CX + D
- *
- * The equation for the height of the control cast(H)
- * is bottom cast(B) minus top cast(T) or (H = B - T) or:
- *
+ *
+ * The equation for the height of the control (H)
+ * is bottom (B) minus top (T) or (H = B - T) or:
+ *
* H = (CX + D) - (AX + B)
- *
- * Solving for cast(X), the height of the form, we get:
- *
+ *
+ * Solving for (X), the height of the form, we get:
+ *
* X = (H + B - D) / (C - A)
- *
+ *
* When (A = C), (C - A = 0) and the equation has no
* solution for X. This is a special case meaning that
* the control does not constrain the height of the
* form. In this case, we need to arbitrarily define
- * the height of the form cast(X):
- *
+ * the height of the form (X):
+ *
* Case 1: A = C, A = 0, C = 0
*
* Let X = D, the distance from the top of the form
@@ -197,9 +205,9 @@
* the control was attached to the top of the form
* and the form needs to be large enough to show the
* bottom edge of the control.
- *
+ *
* Case 2: A = C, A = 1, C = 1
- *
+ *
* Let X = -B, the distance from the bottom of the
* form to the top edge of the control. In this case,
* the control was attached to the bottom of the form
@@ -208,21 +216,21 @@
* positive, there is no possible height for the form
* that will show the control as it will always be
* below the bottom edge of the form.
- *
+ *
* Case 3: A = C, A !is 0, C !is 0 and A !is 1, C !is 0
- *
- * Let X = D / (1 - C), the distance from the top of the
- * form to the bottom edge of the control. In this case,
- * since C is not 0 or 1, it must be a fraction, U / V.
- * The offset D is the distance from CX to the bottom edge
- * of the control. This represents a fraction of the form
- * (1 - C)X. Since the height of a fraction of the form is
+ *
+ * Let X = D / (1 - C), the distance from the top of the
+ * form to the bottom edge of the control. In this case,
+ * since C is not 0 or 1, it must be a fraction, U / V.
+ * The offset D is the distance from CX to the bottom edge
+ * of the control. This represents a fraction of the form
+ * (1 - C)X. Since the height of a fraction of the form is
* known, the height of the entire form can be found by setting
- * (1 - C)X = D. We solve this equation for X in terms of U
- * and V, giving us X = (U * D) / (U - V). Similarly, if the
+ * (1 - C)X = D. We solve this equation for X in terms of U
+ * and V, giving us X = (U * D) / (U - V). Similarly, if the
* offset D is negative, the control is positioned above CX.
* The offset -B is the distance from the top edge of the control
- * to CX. We can find the height of the entire form by setting
+ * to CX. We can find the height of the entire form by setting
* CX = -B. Solving in terms of U and V gives us X = (-B * V) / U.
*/
int computeHeight (Control control, FormData data, bool flushCache) {
@@ -235,30 +243,30 @@
if (bottom.offset <= 0) {
return -top.offset * top.denominator / bottom.numerator;
}
- int divider = bottom.denominator - bottom.numerator;
+ int divider = bottom.denominator - bottom.numerator;
return bottom.denominator * bottom.offset / divider;
}
return height.solveY (data.getHeight (control, flushCache));
}
-protected Point computeSize (Composite composite, int wHint, int hHint, bool flushCache) {
+override protected Point computeSize (Composite composite, int wHint, int hHint, bool flushCache) {
Point size = layout (composite, false, 0, 0, wHint, hHint, flushCache);
if (wHint !is DWT.DEFAULT) size.x = wHint;
if (hHint !is DWT.DEFAULT) size.y = hHint;
return size;
}
-protected bool flushCache (Control control) {
+override protected bool flushCache (Control control) {
Object data = control.getLayoutData ();
if (data !is null) (cast(FormData) data).flushCache ();
return true;
}
String getName () {
- String string = getClass ().getName ();
- int index = string.lastIndexOf ('.');
- if (index is -1) return string;
- return string.substring (index + 1, string.length ());
+ String string = this.classinfo.name;
+ int index = string.lastIndexOf('.');
+ if (index is -1 ) return string;
+ return string[ index + 1 .. string.length ];
}
/*
@@ -275,13 +283,13 @@
if (right.offset <= 0) {
return -left.offset * left.denominator / left.numerator;
}
- int divider = right.denominator - right.numerator;
+ int divider = right.denominator - right.numerator;
return right.denominator * right.offset / divider;
}
return width.solveY (data.getWidth (control, flushCache));
}
-protected void layout (Composite composite, bool flushCache) {
+override protected void layout (Composite composite, bool flushCache) {
Rectangle rect = composite.getClientArea ();
int x = rect.x + marginLeft + marginWidth;
int y = rect.y + marginTop + marginHeight;
@@ -313,8 +321,8 @@
if (data.height is DWT.DEFAULT && !data.needed) {
int trim = 0;
//TEMPORARY CODE
- if ( null !is cast(Scrollable)child ) {
- Rectangle rect = (cast(Scrollable) child).computeTrim (0, 0, 0, 0);
+ if ( auto sa = cast(Scrollable)child) {
+ Rectangle rect = sa.computeTrim (0, 0, 0, 0);
trim = rect.width;
} else {
trim = child.getBorderWidth () * 2;
@@ -373,17 +381,17 @@
*
* @return a string representation of the layout
*/
-public String toString () {
- String string = getName ()+" {";
- if (marginWidth !is 0) string += "marginWidth="+marginWidth+" ";
- if (marginHeight !is 0) string += "marginHeight="+marginHeight+" ";
- if (marginLeft !is 0) string += "marginLeft="+marginLeft+" ";
- if (marginRight !is 0) string += "marginRight="+marginRight+" ";
- if (marginTop !is 0) string += "marginTop="+marginTop+" ";
- if (marginBottom !is 0) string += "marginBottom="+marginBottom+" ";
- if (spacing !is 0) string += "spacing="+spacing+" ";
+override public String toString () {
+ String string = getName ()~" {";
+ if (marginWidth !is 0) string ~= "marginWidth="~to!(String)(marginWidth)~" ";
+ if (marginHeight !is 0) string ~= "marginHeight="~to!(String)(marginHeight)~" ";
+ if (marginLeft !is 0) string ~= "marginLeft="~to!(String)(marginLeft)~" ";
+ if (marginRight !is 0) string ~= "marginRight="~to!(String)(marginRight)~" ";
+ if (marginTop !is 0) string ~= "marginTop="~to!(String)(marginTop)~" ";
+ if (marginBottom !is 0) string ~= "marginBottom="~to!(String)(marginBottom)~" ";
+ if (spacing !is 0) string ~= "spacing="~to!(String)(spacing)~" ";
string = string.trim();
- string += "}";
+ string ~= "}";
return string;
-}
}
+}
diff -r 43be986a1372 -r fbe68c33eeee dwt/layout/GridData.d
--- a/dwt/layout/GridData.d Tue Oct 07 14:41:16 2008 +0200
+++ b/dwt/layout/GridData.d Tue Oct 07 14:41:31 2008 +0200
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,21 +7,24 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Port to the D programming language:
+ * Frank Benoit
*******************************************************************************/
module dwt.layout.GridData;
-import dwt.dwthelper.utils;
-
import dwt.DWT;
import dwt.graphics.Point;
import dwt.widgets.Control;
+import tango.util.Convert;
+import dwt.dwthelper.utils;
+
/**
- * GridData
is the layout data object associated with
- * GridLayout
. To set a GridData
object into a
- * control, you use the Control.setLayoutData(Object)
method.
+ * GridData
is the layout data object associated with
+ * GridLayout
. To set a GridData
object into a
+ * control, you use the Control.setLayoutData(Object)
method.
*
- * There are two ways to create a GridData
object with certain
+ * There are two ways to create a GridData
object with certain
* fields set. The first is to set the fields directly, like this:
*
* GridData gridData = new GridData();
@@ -29,27 +32,28 @@
* gridData.grabExcessHorizontalSpace = true;
* button1.setLayoutData(gridData);
*
- * The second is to take advantage of convenience style bits defined
+ * The second is to take advantage of convenience style bits defined
* by GridData
:
*
* button1.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
*
*
*
- * NOTE: Do not reuse GridData
objects. Every control in a
+ * NOTE: Do not reuse GridData
objects. Every control in a
* Composite
that is managed by a GridLayout
- * must have a unique GridData
object. If the layout data
- * for a control in a GridLayout
is null at layout time,
+ * must have a unique GridData
object. If the layout data
+ * for a control in a GridLayout
is null at layout time,
* a unique GridData
object is created for it.
*
- *
+ *
* @see GridLayout
* @see Control#setLayoutData
+ * @see Sample code and further information
*/
public final class GridData {
/**
- * verticalAlignment specifies how controls will be positioned
- * vertically within a cell.
+ * verticalAlignment specifies how controls will be positioned
+ * vertically within a cell.
*
* The default value is CENTER.
*
@@ -61,10 +65,10 @@
*
*/
public int verticalAlignment = CENTER;
-
+
/**
- * horizontalAlignment specifies how controls will be positioned
- * horizontally within a cell.
+ * horizontalAlignment specifies how controls will be positioned
+ * horizontally within a cell.
*
* The default value is BEGINNING.
*
@@ -76,29 +80,29 @@
*
*/
public int horizontalAlignment = BEGINNING;
-
+
/**
* widthHint specifies the preferred width in pixels. This value
- * is the wHint passed into Control.computeSize(int, int, bool)
+ * is the wHint passed into Control.computeSize(int, int, bool)
* to determine the preferred size of the control.
*
* The default value is DWT.DEFAULT.
- *
+ *
* @see Control#computeSize(int, int, bool)
*/
public int widthHint = DWT.DEFAULT;
-
+
/**
* heightHint specifies the preferred height in pixels. This value
- * is the hHint passed into Control.computeSize(int, int, bool)
+ * is the hHint passed into Control.computeSize(int, int, bool)
* to determine the preferred size of the control.
*
* The default value is DWT.DEFAULT.
- *
+ *
* @see Control#computeSize(int, int, bool)
*/
public int heightHint = DWT.DEFAULT;
-
+
/**
* horizontalIndent specifies the number of pixels of indentation
* that will be placed along the left side of the cell.
@@ -106,17 +110,17 @@
* The default value is 0.
*/
public int horizontalIndent = 0;
-
+
/**
* verticalIndent specifies the number of pixels of indentation
* that will be placed along the top side of the cell.
*
* The default value is 0.
- *
+ *
* @since 3.1
*/
public int verticalIndent = 0;
-
+
/**
* horizontalSpan specifies the number of column cells that the control
* will take up.
@@ -124,7 +128,7 @@
* The default value is 1.
*/
public int horizontalSpan = 1;
-
+
/**
* verticalSpan specifies the number of row cells that the control
* will take up.
@@ -132,74 +136,74 @@
* The default value is 1.
*/
public int verticalSpan = 1;
-
+
/**
- * grabExcessHorizontalSpace specifies whether the width of the cell
- * changes depending on the size of the parent Composite. If
+ *
grabExcessHorizontalSpace specifies whether the width of the cell
+ * changes depending on the size of the parent Composite. If
* grabExcessHorizontalSpace is true
, the following rules
* apply to the width of the cell:
*
- * - If extra horizontal space is available in the parent, the cell will
- * grow to be wider than its preferred width. The new width
- * will be "preferred width + delta" where delta is the extra
+ *
- If extra horizontal space is available in the parent, the cell will
+ * grow to be wider than its preferred width. The new width
+ * will be "preferred width + delta" where delta is the extra
* horizontal space divided by the number of grabbing columns.
- * - If there is not enough horizontal space available in the parent, the
- * cell will shrink until it reaches its minimum width as specified by
- * GridData.minimumWidth. The new width will be the maximum of
- * "minimumWidth" and "preferred width - delta", where delta is
+ *
- If there is not enough horizontal space available in the parent, the
+ * cell will shrink until it reaches its minimum width as specified by
+ * GridData.minimumWidth. The new width will be the maximum of
+ * "minimumWidth" and "preferred width - delta", where delta is
* the amount of space missing divided by the number of grabbing columns.
- * - If the parent is packed, the cell will be its preferred width
+ *
- If the parent is packed, the cell will be its preferred width
* as specified by GridData.widthHint.
- * - If the control spans multiple columns and there are no other grabbing
+ *
- If the control spans multiple columns and there are no other grabbing
* controls in any of the spanned columns, the last column in the span will
* grab the extra space. If there is at least one other grabbing control
- * in the span, the grabbing will be spread over the columns already
+ * in the span, the grabbing will be spread over the columns already
* marked as grabExcessHorizontalSpace.
*
- *
+ *
* The default value is false.
- *
+ *
* @see GridData#minimumWidth
* @see GridData#widthHint
- */
+ */
public bool grabExcessHorizontalSpace = false;
-
+
/**
- * grabExcessVerticalSpace specifies whether the height of the cell
- * changes depending on the size of the parent Composite. If
+ *
grabExcessVerticalSpace specifies whether the height of the cell
+ * changes depending on the size of the parent Composite. If
* grabExcessVerticalSpace is true
, the following rules
* apply to the height of the cell:
*
- * - If extra vertical space is available in the parent, the cell will
- * grow to be taller than its preferred height. The new height
- * will be "preferred height + delta" where delta is the extra
+ *
- If extra vertical space is available in the parent, the cell will
+ * grow to be taller than its preferred height. The new height
+ * will be "preferred height + delta" where delta is the extra
* vertical space divided by the number of grabbing rows.
- * - If there is not enough vertical space available in the parent, the
- * cell will shrink until it reaches its minimum height as specified by
- * GridData.minimumHeight. The new height will be the maximum of
- * "minimumHeight" and "preferred height - delta", where delta is
+ *
- If there is not enough vertical space available in the parent, the
+ * cell will shrink until it reaches its minimum height as specified by
+ * GridData.minimumHeight. The new height will be the maximum of
+ * "minimumHeight" and "preferred height - delta", where delta is
* the amount of space missing divided by the number of grabbing rows.
- * - If the parent is packed, the cell will be its preferred height
+ *
- If the parent is packed, the cell will be its preferred height
* as specified by GridData.heightHint.
- * - If the control spans multiple rows and there are no other grabbing
+ *
- If the control spans multiple rows and there are no other grabbing
* controls in any of the spanned rows, the last row in the span will
* grab the extra space. If there is at least one other grabbing control
- * in the span, the grabbing will be spread over the rows already
+ * in the span, the grabbing will be spread over the rows already
* marked as grabExcessVerticalSpace.
*
- *
+ *
* The default value is false.
- *
+ *
* @see GridData#minimumHeight
* @see GridData#heightHint
- */
+ */
public bool grabExcessVerticalSpace = false;
/**
* minimumWidth specifies the minimum width in pixels. This value
- * applies only if grabExcessHorizontalSpace is true. A value of
+ * applies only if grabExcessHorizontalSpace is true. A value of
* DWT.DEFAULT means that the minimum width will be the result
- * of Control.computeSize(int, int, bool) where wHint is
+ * of Control.computeSize(int, int, bool) where wHint is
* determined by GridData.widthHint.
*
* The default value is 0.
@@ -209,12 +213,12 @@
* @see GridData#widthHint
*/
public int minimumWidth = 0;
-
+
/**
* minimumHeight specifies the minimum height in pixels. This value
- * applies only if grabExcessVerticalSpace is true. A value of
+ * applies only if grabExcessVerticalSpace is true. A value of
* DWT.DEFAULT means that the minimum height will be the result
- * of Control.computeSize(int, int, bool) where hHint is
+ * of Control.computeSize(int, int, bool) where hHint is
* determined by GridData.heightHint.
*
* The default value is 0.
@@ -224,170 +228,170 @@
* @see GridData#heightHint
*/
public int minimumHeight = 0;
-
+
/**
* exclude informs the layout to ignore this control when sizing
* and positioning controls. If this value is true
,
* the size and position of the control will not be managed by the
- * layout. If this value is false
, the size and
+ * layout. If this value is false
, the size and
* position of the control will be computed and assigned.
- *
+ *
* The default value is false
.
- *
+ *
* @since 3.1
*/
public bool exclude = false;
-
+
/**
* Value for horizontalAlignment or verticalAlignment.
* Position the control at the top or left of the cell.
* Not recommended. Use DWT.BEGINNING, DWT.TOP or DWT.LEFT instead.
*/
- public static final int BEGINNING = DWT.BEGINNING;
-
+ public static const int BEGINNING = DWT.BEGINNING;
+
/**
* Value for horizontalAlignment or verticalAlignment.
* Position the control in the vertical or horizontal center of the cell
* Not recommended. Use DWT.CENTER instead.
*/
- public static final int CENTER = 2;
-
+ public static const int CENTER = 2;
+
/**
* Value for horizontalAlignment or verticalAlignment.
* Position the control at the bottom or right of the cell
* Not recommended. Use DWT.END, DWT.BOTTOM or DWT.RIGHT instead.
*/
- public static final int END = 3;
-
+ public static const int END = 3;
+
/**
* Value for horizontalAlignment or verticalAlignment.
* Resize the control to fill the cell horizontally or vertically.
* Not recommended. Use DWT.FILL instead.
*/
- public static final int FILL = DWT.FILL;
+ public static const int FILL = DWT.FILL;
/**
* Style bit for new GridData(int)
.
* Position the control at the top of the cell.
- * Not recommended. Use
+ * Not recommended. Use
* new GridData(int, DWT.BEGINNING, bool, bool)
* instead.
*/
- public static final int VERTICAL_ALIGN_BEGINNING = 1 << 1;
-
+ public static const int VERTICAL_ALIGN_BEGINNING = 1 << 1;
+
/**
- * Style bit for new GridData(int)
to position the
+ * Style bit for new GridData(int)
to position the
* control in the vertical center of the cell.
* Not recommended. Use
* new GridData(int, DWT.CENTER, bool, bool)
* instead.
*/
- public static final int VERTICAL_ALIGN_CENTER = 1 << 2;
-
+ public static const int VERTICAL_ALIGN_CENTER = 1 << 2;
+
/**
- * Style bit for new GridData(int)
to position the
+ * Style bit for new GridData(int)
to position the
* control at the bottom of the cell.
* Not recommended. Use
* new GridData(int, DWT.END, bool, bool)
* instead.
*/
- public static final int VERTICAL_ALIGN_END = 1 << 3;
-
+ public static const int VERTICAL_ALIGN_END = 1 << 3;
+
/**
- * Style bit for new GridData(int)
to resize the
+ * Style bit for new GridData(int)
to resize the
* control to fill the cell vertically.
* Not recommended. Use
* new GridData(int, DWT.FILL, bool, bool)
* instead
*/
- public static final int VERTICAL_ALIGN_FILL = 1 << 4;
-
+ public static const int VERTICAL_ALIGN_FILL = 1 << 4;
+
/**
- * Style bit for new GridData(int)
to position the
+ * Style bit for new GridData(int)
to position the
* control at the left of the cell.
* Not recommended. Use
* new GridData(DWT.BEGINNING, int, bool, bool)
* instead.
*/
- public static final int HORIZONTAL_ALIGN_BEGINNING = 1 << 5;
-
+ public static const int HORIZONTAL_ALIGN_BEGINNING = 1 << 5;
+
/**
- * Style bit for new GridData(int)
to position the
+ * Style bit for new GridData(int)
to position the
* control in the horizontal center of the cell.
* Not recommended. Use
* new GridData(DWT.CENTER, int, bool, bool)
* instead.
*/
- public static final int HORIZONTAL_ALIGN_CENTER = 1 << 6;
-
+ public static const int HORIZONTAL_ALIGN_CENTER = 1 << 6;
+
/**
- * Style bit for new GridData(int)
to position the
+ * Style bit for new GridData(int)
to position the
* control at the right of the cell.
* Not recommended. Use
* new GridData(DWT.END, int, bool, bool)
* instead.
*/
- public static final int HORIZONTAL_ALIGN_END = 1 << 7;
-
+ public static const int HORIZONTAL_ALIGN_END = 1 << 7;
+
/**
- * Style bit for new GridData(int)
to resize the
+ * Style bit for new GridData(int)
to resize the
* control to fill the cell horizontally.
* Not recommended. Use
* new GridData(DWT.FILL, int, bool, bool)
* instead.
*/
- public static final int HORIZONTAL_ALIGN_FILL = 1 << 8;
-
+ public static const int HORIZONTAL_ALIGN_FILL = 1 << 8;
+
/**
- * Style bit for new GridData(int)
to resize the
+ * Style bit for new GridData(int)
to resize the
* control to fit the remaining horizontal space.
* Not recommended. Use
* new GridData(int, int, true, bool)
* instead.
*/
- public static final int GRAB_HORIZONTAL = 1 << 9;
-
+ public static const int GRAB_HORIZONTAL = 1 << 9;
+
/**
- * Style bit for new GridData(int)
to resize the
+ * Style bit for new GridData(int)
to resize the
* control to fit the remaining vertical space.
* Not recommended. Use
* new GridData(int, int, bool, true)
* instead.
*/
- public static final int GRAB_VERTICAL = 1 << 10;
-
+ public static const int GRAB_VERTICAL = 1 << 10;
+
/**
- * Style bit for new GridData(int)
to resize the
+ * Style bit for new GridData(int)
to resize the
* control to fill the cell vertically and to fit the remaining
* vertical space.
* FILL_VERTICAL = VERTICAL_ALIGN_FILL | GRAB_VERTICAL
* Not recommended. Use
* new GridData(int, DWT.FILL, bool, true)
* instead.
- */
- public static final int FILL_VERTICAL = VERTICAL_ALIGN_FILL | GRAB_VERTICAL;
-
+ */
+ public static const int FILL_VERTICAL = VERTICAL_ALIGN_FILL | GRAB_VERTICAL;
+
/**
- * Style bit for new GridData(int)
to resize the
+ * Style bit for new GridData(int)
to resize the
* control to fill the cell horizontally and to fit the remaining
* horizontal space.
* FILL_HORIZONTAL = HORIZONTAL_ALIGN_FILL | GRAB_HORIZONTAL
* Not recommended. Use
* new GridData(DWT.FILL, int, true, bool)
* instead.
- */
- public static final int FILL_HORIZONTAL = HORIZONTAL_ALIGN_FILL | GRAB_HORIZONTAL;
-
+ */
+ public static const int FILL_HORIZONTAL = HORIZONTAL_ALIGN_FILL | GRAB_HORIZONTAL;
+
/**
- * Style bit for new GridData(int)
to resize the
- * control to fill the cell horizontally and vertically and
+ * Style bit for new GridData(int)
to resize the
+ * control to fill the cell horizontally and vertically and
* to fit the remaining horizontal and vertical space.
* FILL_BOTH = FILL_VERTICAL | FILL_HORIZONTAL
* Not recommended. Use
* new GridData(DWT.FILL, DWT.FILL, true, true)
* instead.
- */
- public static final int FILL_BOTH = FILL_VERTICAL | FILL_HORIZONTAL;
+ */
+ public static const int FILL_BOTH = FILL_VERTICAL | FILL_HORIZONTAL;
int cacheWidth = -1, cacheHeight = -1;
int defaultWhint, defaultHhint, defaultWidth = -1, defaultHeight = -1;
@@ -398,17 +402,15 @@
* default values.
*/
public this () {
- super ();
}
/**
* Constructs a new instance based on the GridData style.
* This constructor is not recommended.
- *
+ *
* @param style the GridData style
*/
public this (int style) {
- super ();
if ((style & VERTICAL_ALIGN_BEGINNING) !is 0) verticalAlignment = BEGINNING;
if ((style & VERTICAL_ALIGN_CENTER) !is 0) verticalAlignment = CENTER;
if ((style & VERTICAL_ALIGN_FILL) !is 0) verticalAlignment = FILL;
@@ -423,12 +425,14 @@
/**
* Constructs a new instance of GridData according to the parameters.
- *
- * @param horizontalAlignment how control will be positioned horizontally within a cell
- * @param verticalAlignment how control will be positioned vertically within a cell
+ *
+ * @param horizontalAlignment how control will be positioned horizontally within a cell,
+ * one of: DWT.BEGINNING (or DWT.LEFT), DWT.CENTER, DWT.END (or DWT.RIGHT), or DWT.FILL
+ * @param verticalAlignment how control will be positioned vertically within a cell,
+ * one of: DWT.BEGINNING (or DWT.TOP), DWT.CENTER, DWT.END (or DWT.BOTTOM), or DWT.FILL
* @param grabExcessHorizontalSpace whether cell will be made wide enough to fit the remaining horizontal space
* @param grabExcessVerticalSpace whether cell will be made high enough to fit the remaining vertical space
- *
+ *
* @since 3.0
*/
public this (int horizontalAlignment, int verticalAlignment, bool grabExcessHorizontalSpace, bool grabExcessVerticalSpace) {
@@ -437,18 +441,19 @@
/**
* Constructs a new instance of GridData according to the parameters.
- *
- * @param horizontalAlignment how control will be positioned horizontally within a cell
- * @param verticalAlignment how control will be positioned vertically within a cell
+ *
+ * @param horizontalAlignment how control will be positioned horizontally within a cell,
+ * one of: DWT.BEGINNING (or DWT.LEFT), DWT.CENTER, DWT.END (or DWT.RIGHT), or DWT.FILL
+ * @param verticalAlignment how control will be positioned vertically within a cell,
+ * one of: DWT.BEGINNING (or DWT.TOP), DWT.CENTER, DWT.END (or DWT.BOTTOM), or DWT.FILL
* @param grabExcessHorizontalSpace whether cell will be made wide enough to fit the remaining horizontal space
* @param grabExcessVerticalSpace whether cell will be made high enough to fit the remaining vertical space
* @param horizontalSpan the number of column cells that the control will take up
* @param verticalSpan the number of row cells that the control will take up
- *
+ *
* @since 3.0
*/
public this (int horizontalAlignment, int verticalAlignment, bool grabExcessHorizontalSpace, bool grabExcessVerticalSpace, int horizontalSpan, int verticalSpan) {
- super ();
this.horizontalAlignment = horizontalAlignment;
this.verticalAlignment = verticalAlignment;
this.grabExcessHorizontalSpace = grabExcessHorizontalSpace;
@@ -461,14 +466,13 @@
* Constructs a new instance of GridData according to the parameters.
* A value of DWT.DEFAULT indicates that no minimum width or
* no minimum height is specified.
- *
+ *
* @param width a minimum width for the column
* @param height a minimum height for the row
- *
+ *
* @since 3.0
*/
public this (int width, int height) {
- super ();
this.widthHint = width;
this.heightHint = height;
}
@@ -505,10 +509,10 @@
}
String getName () {
- String string = getClass ().getName ();
- int index = string.lastIndexOf ('.');
- if (index is -1) return string;
- return string.substring (index + 1, string.length ());
+ String string = this.classinfo.name;
+ int index = string.lastIndexOf('.');
+ if (index is -1 ) return string;
+ return string[ index + 1 .. string.length ];
}
/**
@@ -517,7 +521,7 @@
*
* @return a string representation of the GridData object
*/
-public String toString () {
+override public String toString () {
String hAlign = "";
switch (horizontalAlignment) {
case DWT.FILL: hAlign = "DWT.FILL"; break;
@@ -528,7 +532,7 @@
case DWT.RIGHT: hAlign = "DWT.RIGHT"; break;
case DWT.CENTER: hAlign = "DWT.CENTER"; break;
case CENTER: hAlign = "GridData.CENTER"; break;
- default: hAlign = "Undefined "+horizontalAlignment; break;
+ default: hAlign = "Undefined "~to!(String)(horizontalAlignment); break;
}
String vAlign = "";
switch (verticalAlignment) {
@@ -540,24 +544,24 @@
case DWT.BOTTOM: vAlign = "DWT.BOTTOM"; break;
case DWT.CENTER: vAlign = "DWT.CENTER"; break;
case CENTER: vAlign = "GridData.CENTER"; break;
- default: vAlign = "Undefined "+verticalAlignment; break;
+ default: vAlign = "Undefined "~to!(String)(verticalAlignment); break;
}
- String string = getName()+" {";
- string += "horizontalAlignment="+hAlign+" ";
- if (horizontalIndent !is 0) string += "horizontalIndent="+horizontalIndent+" ";
- if (horizontalSpan !is 1) string += "horizontalSpan="+horizontalSpan+" ";
- if (grabExcessHorizontalSpace) string += "grabExcessHorizontalSpace="+grabExcessHorizontalSpace+" ";
- if (widthHint !is DWT.DEFAULT) string += "widthHint="+widthHint+" ";
- if (minimumWidth !is 0) string += "minimumWidth="+minimumWidth+" ";
- string += "verticalAlignment="+vAlign+" ";
- if (verticalIndent !is 0) string += "verticalIndent="+verticalIndent+" ";
- if (verticalSpan !is 1) string += "verticalSpan="+verticalSpan+" ";
- if (grabExcessVerticalSpace) string += "grabExcessVerticalSpace="+grabExcessVerticalSpace+" ";
- if (heightHint !is DWT.DEFAULT) string += "heightHint="+heightHint+" ";
- if (minimumHeight !is 0) string += "minimumHeight="+minimumHeight+" ";
- if (exclude) string += "exclude="+exclude+" ";
+ String string = getName()~" {";
+ string ~= "horizontalAlignment="~to!(String)(hAlign)~" ";
+ if (horizontalIndent !is 0) string ~= "horizontalIndent="~to!(String)(horizontalIndent)~" ";
+ if (horizontalSpan !is 1) string ~= "horizontalSpan="~to!(String)(horizontalSpan)~" ";
+ if (grabExcessHorizontalSpace) string ~= "grabExcessHorizontalSpace="~to!(String)(grabExcessHorizontalSpace)~" ";
+ if (widthHint !is DWT.DEFAULT) string ~= "widthHint="~to!(String)(widthHint)~" ";
+ if (minimumWidth !is 0) string ~= "minimumWidth="~to!(String)(minimumWidth)~" ";
+ string ~= "verticalAlignment="~vAlign~" ";
+ if (verticalIndent !is 0) string ~= "verticalIndent="~to!(String)(verticalIndent)~" ";
+ if (verticalSpan !is 1) string ~= "verticalSpan="~to!(String)(verticalSpan)~" ";
+ if (grabExcessVerticalSpace) string ~= "grabExcessVerticalSpace="~to!(String)(grabExcessVerticalSpace)~" ";
+ if (heightHint !is DWT.DEFAULT) string ~= "heightHint="~to!(String)(heightHint)~" ";
+ if (minimumHeight !is 0) string ~= "minimumHeight="~to!(String)(minimumHeight)~" ";
+ if (exclude) string ~= "exclude="~to!(String)(exclude)~" ";
string = string.trim();
- string += "}";
+ string ~= "}";
return string;
}
}
diff -r 43be986a1372 -r fbe68c33eeee dwt/layout/GridLayout.d
--- a/dwt/layout/GridLayout.d Tue Oct 07 14:41:16 2008 +0200
+++ b/dwt/layout/GridLayout.d Tue Oct 07 14:41:31 2008 +0200
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,27 +7,35 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Port to the D programming language:
+ * Frank Benoit
*******************************************************************************/
module dwt.layout.GridLayout;
-import dwt.dwthelper.utils;
-
+import dwt.layout.GridData;
import dwt.DWT;
import dwt.graphics.Point;
import dwt.graphics.Rectangle;
+import dwt.widgets.Control;
import dwt.widgets.Composite;
-import dwt.widgets.Control;
import dwt.widgets.Layout;
import dwt.widgets.Scrollable;
+import dwt.dwthelper.System;
+
+import tango.util.Convert;
+import Math = tango.math.Math;
+import dwt.dwthelper.utils;
+
+
/**
- * Instances of this class lay out the control children of a
- * Composite
in a grid.
+ * Instances of this class lay out the control children of a
+ * Composite
in a grid.
*
- * GridLayout
has a number of configuration fields, and the
- * controls it lays out can have an associated layout data object, called
- * GridData
. The power of GridLayout
lies in the
- * ability to configure GridData
for each control in the layout.
+ * GridLayout
has a number of configuration fields, and the
+ * controls it lays out can have an associated layout data object, called
+ * GridData
. The power of GridLayout
lies in the
+ * ability to configure GridData
for each control in the layout.
*
*
* The following code creates a shell managed by a GridLayout
@@ -39,16 +47,19 @@
* gridLayout.numColumns = 3;
* shell.setLayout(gridLayout);
*
- * The numColumns
field is the most important field in a
- * GridLayout
. Widgets are laid out in columns from left
- * to right, and a new row is created when numColumns
+ 1
+ * The numColumns
field is the most important field in a
+ * GridLayout
. Widgets are laid out in columns from left
+ * to right, and a new row is created when numColumns
+ 1
* controls are added to the Composite.
*
- *
+ *
* @see GridData
+ * @see GridLayout snippets
+ * @see DWT Example: LayoutExample
+ * @see Sample code and further information
*/
public final class GridLayout : Layout {
-
+
/**
* numColumns specifies the number of cell columns in the layout.
* If numColumns has a value less than 1, the layout will not
@@ -65,7 +76,7 @@
* The default value is false.
*/
public bool makeColumnsEqualWidth = false;
-
+
/**
* marginWidth specifies the number of pixels of horizontal margin
* that will be placed along the left and right edges of the layout.
@@ -73,7 +84,7 @@
* The default value is 5.
*/
public int marginWidth = 5;
-
+
/**
* marginHeight specifies the number of pixels of vertical margin
* that will be placed along the top and bottom edges of the layout.
@@ -87,7 +98,7 @@
* that will be placed along the left edge of the layout.
*
* The default value is 0.
- *
+ *
* @since 3.1
*/
public int marginLeft = 0;
@@ -97,7 +108,7 @@
* that will be placed along the top edge of the layout.
*
* The default value is 0.
- *
+ *
* @since 3.1
*/
public int marginTop = 0;
@@ -107,7 +118,7 @@
* that will be placed along the right edge of the layout.
*
* The default value is 0.
- *
+ *
* @since 3.1
*/
public int marginRight = 0;
@@ -117,7 +128,7 @@
* that will be placed along the bottom edge of the layout.
*
* The default value is 0.
- *
+ *
* @since 3.1
*/
public int marginBottom = 0;
@@ -138,7 +149,7 @@
* The default value is 5.
*/
public int verticalSpacing = 5;
-
+
/**
* Constructs a new instance of this class.
*/
@@ -153,7 +164,7 @@
*
* @param numColumns the number of columns in the grid
* @param makeColumnsEqualWidth whether or not the columns will have equal width
- *
+ *
* @since 2.0
*/
public this (int numColumns, bool makeColumnsEqualWidth) {
@@ -161,14 +172,14 @@
this.makeColumnsEqualWidth = makeColumnsEqualWidth;
}
-protected Point computeSize (Composite composite, int wHint, int hHint, bool flushCache) {
- Point size = layout (composite, false, 0, 0, wHint, hHint, flushCache);
+override protected Point computeSize (Composite composite, int wHint, int hHint, bool flushCache_) {
+ Point size = layout (composite, false, 0, 0, wHint, hHint, flushCache_);
if (wHint !is DWT.DEFAULT) size.x = wHint;
if (hHint !is DWT.DEFAULT) size.y = hHint;
return size;
}
-protected bool flushCache (Control control) {
+override protected bool flushCache (Control control) {
Object data = control.getLayoutData ();
if (data !is null) (cast(GridData) data).flushCache ();
return true;
@@ -191,12 +202,12 @@
return null;
}
-protected void layout (Composite composite, bool flushCache) {
+override protected void layout (Composite composite, bool flushCache_) {
Rectangle rect = composite.getClientArea ();
- layout (composite, true, rect.x, rect.y, rect.width, rect.height, flushCache);
+ layout (composite, true, rect.x, rect.y, rect.width, rect.height, flushCache_);
}
-Point layout (Composite composite, bool move, int x, int y, int width, int height, bool flushCache) {
+Point layout (Composite composite, bool move, int x, int y, int width, int height, bool flushCache_) {
if (numColumns < 1) {
return new Point (marginLeft + marginWidth * 2 + marginRight, marginTop + marginHeight * 2 + marginBottom);
}
@@ -207,7 +218,7 @@
GridData data = cast(GridData) control.getLayoutData ();
if (data is null || !data.exclude) {
children [count++] = children [i];
- }
+ }
}
if (count is 0) {
return new Point (marginLeft + marginWidth * 2 + marginRight, marginTop + marginHeight * 2 + marginBottom);
@@ -216,14 +227,14 @@
Control child = children [i];
GridData data = cast(GridData) child.getLayoutData ();
if (data is null) child.setLayoutData (data = new GridData ());
- if (flushCache) data.flushCache ();
- data.computeSize (child, data.widthHint, data.heightHint, flushCache);
+ if (flushCache_) data.flushCache ();
+ data.computeSize (child, data.widthHint, data.heightHint, flushCache_);
if (data.grabExcessHorizontalSpace && data.minimumWidth > 0) {
if (data.cacheWidth < data.minimumWidth) {
int trim = 0;
//TEMPORARY CODE
- if ( null !is cast(Scrollable)child ) {
- Rectangle rect = (cast(Scrollable) child).computeTrim (0, 0, 0, 0);
+ if ( auto sa = cast(Scrollable)child ) {
+ Rectangle rect = sa.computeTrim (0, 0, 0, 0);
trim = rect.width;
} else {
trim = child.getBorderWidth () * 2;
@@ -239,8 +250,8 @@
/* Build the grid */
int row = 0, column = 0, rowCount = 0, columnCount = numColumns;
- Control [][] grid = new Control [4] [columnCount];
- for (int i=0; i= grid.length) {
- Control [][] newGrid = new Control [lastRow + 4] [columnCount];
- System.arraycopy (grid, 0, newGrid, 0, grid.length);
+ Control [][] newGrid = new Control[][]( lastRow + 4, columnCount );
+ SimpleType!(Control[]).arraycopy (grid, 0, newGrid, 0, grid.length);
grid = newGrid;
}
if (grid [row] is null) {
@@ -406,7 +417,7 @@
}
}
if (last > -1) widths [last] += remainder;
-
+
for (int j=0; j -1) widths [last2] += remainder2;
+ if (last2 > -1) widths [last2] += remainder2;
}
}
}
@@ -471,8 +482,8 @@
currentWidth += (hSpan - 1) * horizontalSpacing - data.horizontalIndent;
if ((currentWidth !is data.cacheWidth && data.horizontalAlignment is DWT.FILL) || (data.cacheWidth > currentWidth)) {
int trim = 0;
- if ( null !is cast(Scrollable)child ) {
- Rectangle rect = (cast(Scrollable) child).computeTrim (0, 0, 0, 0);
+ if ( auto sa = cast(Scrollable)child ) {
+ Rectangle rect = sa.computeTrim (0, 0, 0, 0);
trim = rect.width;
} else {
trim = child.getBorderWidth () * 2;
@@ -544,7 +555,7 @@
heights [last=i-k] += delta;
}
}
- if (last > -1) heights [last] += remainder;
+ if (last > -1) heights [last] += remainder;
}
}
if (!data.grabExcessVerticalSpace || data.minimumHeight !is 0) {
@@ -561,7 +572,7 @@
minHeights [last=i-k] += delta;
}
}
- if (last > -1) minHeights [last] += remainder;
+ if (last > -1) minHeights [last] += remainder;
}
}
}
@@ -591,7 +602,7 @@
}
}
if (last > -1) heights [last] += remainder;
-
+
for (int i=0; i
*******************************************************************************/
module dwt.layout.RowData;
-import dwt.dwthelper.utils;
-
import dwt.DWT;
import dwt.graphics.Point;
+import dwt.widgets.Control;
+
+import tango.util.Convert;
+import dwt.dwthelper.utils;
/**
- * Each control controlled by a RowLayout
can have its initial
- * width and height specified by setting a RowData
object
+ * Each control controlled by a RowLayout
can have its initial
+ * width and height specified by setting a RowData
object
* into the control.
*
* The following code uses a RowData
object to change the initial
@@ -31,13 +35,14 @@
* button1.setLayoutData(new RowData(50, 40));
*
*
- *
+ *
* @see RowLayout
+ * @see Sample code and further information
*/
public final class RowData {
/**
* width specifies the desired width in pixels. This value
- * is the wHint passed into Control.computeSize(int, int, bool)
+ * is the wHint passed into Control.computeSize(int, int, bool)
* to determine the preferred size of the control.
*
* The default value is DWT.DEFAULT.
@@ -47,7 +52,7 @@
public int width = DWT.DEFAULT;
/**
* height specifies the preferred height in pixels. This value
- * is the hHint passed into Control.computeSize(int, int, bool)
+ * is the hHint passed into Control.computeSize(int, int, bool)
* to determine the preferred size of the control.
*
* The default value is DWT.DEFAULT.
@@ -55,20 +60,20 @@
* @see dwt.widgets.Control#computeSize(int, int, bool)
*/
public int height = DWT.DEFAULT;
-
+
/**
* exclude informs the layout to ignore this control when sizing
* and positioning controls. If this value is true
,
* the size and position of the control will not be managed by the
- * layout. If this value is false
, the size and
+ * layout. If this value is false
, the size and
* position of the control will be computed and assigned.
- *
+ *
* The default value is false
.
- *
+ *
* @since 3.1
*/
public bool exclude = false;
-
+
/**
* Constructs a new instance of RowData using
* default values.
@@ -80,7 +85,7 @@
* Constructs a new instance of RowData according to the parameters.
* A value of DWT.DEFAULT indicates that no minimum width or
* no minimum height is specified.
- *
+ *
* @param width a minimum width for the control
* @param height a minimum height for the control
*/
@@ -93,7 +98,7 @@
* Constructs a new instance of RowData according to the parameter.
* A value of DWT.DEFAULT indicates that no minimum width or
* no minimum height is specified.
- *
+ *
* @param point a point whose x coordinate specifies a minimum width for the control
* and y coordinate specifies a minimum height for the control
*/
@@ -102,10 +107,10 @@
}
String getName () {
- String string = getClass ().getName ();
- int index = string.lastIndexOf ('.');
- if (index is -1) return string;
- return string.substring (index + 1, string.length ());
+ String string = this.classinfo.name;
+ int index = string.lastIndexOf('.');
+ if (index is -1 ) return string;
+ return string[ index + 1 .. string.length ];
}
/**
@@ -114,13 +119,13 @@
*
* @return a string representation of the RowData object
*/
-public String toString () {
- String string = getName ()+" {";
- if (width !is DWT.DEFAULT) string += "width="+width+" ";
- if (height !is DWT.DEFAULT) string += "height="+height+" ";
- if (exclude) string += "exclude="+exclude+" ";
+override public String toString () {
+ String string = getName ()~" {";
+ if (width !is DWT.DEFAULT) string ~= "width="~to!(String)(width)~" ";
+ if (height !is DWT.DEFAULT) string ~= "height="~to!(String)(height)~" ";
+ if (exclude) string ~= "exclude="~to!(String)(exclude)~" ";
string = string.trim();
- string += "}";
+ string ~= "}";
return string;
}
}
diff -r 43be986a1372 -r fbe68c33eeee dwt/layout/RowLayout.d
--- a/dwt/layout/RowLayout.d Tue Oct 07 14:41:16 2008 +0200
+++ b/dwt/layout/RowLayout.d Tue Oct 07 14:41:31 2008 +0200
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,35 +7,40 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Port to the D programming language:
+ * Frank Benoit
*******************************************************************************/
module dwt.layout.RowLayout;
-import dwt.dwthelper.utils;
-
import dwt.DWT;
import dwt.graphics.Point;
import dwt.graphics.Rectangle;
-import dwt.widgets.Composite;
import dwt.widgets.Control;
import dwt.widgets.Layout;
+import dwt.widgets.Composite;
+import dwt.layout.RowData;
+import tango.util.Convert;
+import Math = tango.math.Math;
+import dwt.dwthelper.utils;
+
/**
- * Instances of this class determine the size and position of the
- * children of a Composite
by placing them either in
- * horizontal rows or vertical columns within the parent Composite
.
+ * Instances of this class determine the size and position of the
+ * children of a Composite
by placing them either in
+ * horizontal rows or vertical columns within the parent Composite
.
*
* RowLayout
aligns all controls in one row if the
* type
is set to horizontal, and one column if it is
- * set to vertical. It has the ability to wrap, and provides configurable
- * margins and spacing. RowLayout
has a number of configuration
- * fields. In addition, the height and width of each control in a
+ * set to vertical. It has the ability to wrap, and provides configurable
+ * margins and spacing. RowLayout
has a number of configuration
+ * fields. In addition, the height and width of each control in a
* RowLayout
can be specified by setting a RowData
* object into the control using setLayoutData ()
.
*
*
- * The following example code creates a RowLayout
, sets all
- * of its fields to non-default values, and then sets it into a
- * Shell
.
+ * The following example code creates a RowLayout
, sets all
+ * of its fields to non-default values, and then sets it into a
+ * Shell
.
*
* RowLayout rowLayout = new RowLayout();
* rowLayout.wrap = false;
@@ -54,42 +59,45 @@
* shell.setLayout(new RowLayout());
*
*
- *
+ *
* @see RowData
+ * @see RowLayout snippets
+ * @see DWT Example: LayoutExample
+ * @see Sample code and further information
*/
public final class RowLayout : Layout {
-
+
/**
- * type specifies whether the layout places controls in rows or
+ * type specifies whether the layout places controls in rows or
* columns.
- *
+ *
* The default value is HORIZONTAL.
- *
+ *
* Possible values are:
* - HORIZONTAL: Position the controls horizontally from left to right
* - VERTICAL: Position the controls vertically from top to bottom
*
- *
+ *
* @since 2.0
*/
public int type = DWT.HORIZONTAL;
-
+
/**
* marginWidth specifies the number of pixels of horizontal margin
* that will be placed along the left and right edges of the layout.
*
* The default value is 0.
- *
+ *
* @since 3.0
*/
public int marginWidth = 0;
-
+
/**
* marginHeight specifies the number of pixels of vertical margin
* that will be placed along the top and bottom edges of the layout.
*
* The default value is 0.
- *
+ *
* @since 3.0
*/
public int marginHeight = 0;
@@ -101,7 +109,7 @@
* The default value is 3.
*/
public int spacing = 3;
-
+
/**
* wrap specifies whether a control will be wrapped to the next
* row if there is insufficient space on the current row.
@@ -112,22 +120,22 @@
/**
* pack specifies whether all controls in the layout take
- * their preferred size. If pack is false, all controls will
- * have the same size which is the size required to accommodate the
- * largest preferred height and the largest preferred width of all
+ * their preferred size. If pack is false, all controls will
+ * have the same size which is the size required to accommodate the
+ * largest preferred height and the largest preferred width of all
* the controls in the layout.
*
* The default value is true.
*/
public bool pack = true;
-
+
/**
* fill specifies whether the controls in a row should be
* all the same height for horizontal layouts, or the same
* width for vertical layouts.
*
* The default value is false.
- *
+ *
* @since 3.0
*/
public bool fill = false;
@@ -193,56 +201,56 @@
* Constructs a new instance of this class given the type.
*
* @param type the type of row layout
- *
+ *
* @since 2.0
*/
public this (int type) {
this.type = type;
}
-protected Point computeSize (Composite composite, int wHint, int hHint, bool flushCache) {
+override protected Point computeSize (Composite composite, int wHint, int hHint, bool flushCache_) {
Point extent;
if (type is DWT.HORIZONTAL) {
- extent = layoutHorizontal (composite, false, (wHint !is DWT.DEFAULT) && wrap, wHint, flushCache);
+ extent = layoutHorizontal (composite, false, (wHint !is DWT.DEFAULT) && wrap, wHint, flushCache_);
} else {
- extent = layoutVertical (composite, false, (hHint !is DWT.DEFAULT) && wrap, hHint, flushCache);
+ extent = layoutVertical (composite, false, (hHint !is DWT.DEFAULT) && wrap, hHint, flushCache_);
}
if (wHint !is DWT.DEFAULT) extent.x = wHint;
if (hHint !is DWT.DEFAULT) extent.y = hHint;
return extent;
}
-Point computeSize (Control control, bool flushCache) {
+Point computeSize (Control control, bool flushCache_) {
int wHint = DWT.DEFAULT, hHint = DWT.DEFAULT;
RowData data = cast(RowData) control.getLayoutData ();
if (data !is null) {
wHint = data.width;
hHint = data.height;
}
- return control.computeSize (wHint, hHint, flushCache);
+ return control.computeSize (wHint, hHint, flushCache_);
}
-protected bool flushCache (Control control) {
+override protected bool flushCache (Control control) {
return true;
}
String getName () {
- String string = getClass ().getName ();
- int index = string.lastIndexOf ('.');
- if (index is -1) return string;
- return string.substring (index + 1, string.length ());
+ String string = this.classinfo.name;
+ int index = string.lastIndexOf('.');
+ if (index is -1 ) return string;
+ return string[ index + 1 .. string.length ];
}
-protected void layout (Composite composite, bool flushCache) {
+override protected void layout (Composite composite, bool flushCache_) {
Rectangle clientArea = composite.getClientArea ();
if (type is DWT.HORIZONTAL) {
- layoutHorizontal (composite, true, wrap, clientArea.width, flushCache);
+ layoutHorizontal (composite, true, wrap, clientArea.width, flushCache_);
} else {
- layoutVertical (composite, true, wrap, clientArea.height, flushCache);
+ layoutVertical (composite, true, wrap, clientArea.height, flushCache_);
}
}
-Point layoutHorizontal (Composite composite, bool move, bool wrap, int width, bool flushCache) {
+Point layoutHorizontal (Composite composite, bool move, bool wrap, int width, bool flushCache_) {
Control [] children = composite.getChildren ();
int count = 0;
for (int i=0; i