X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.eclipse.swt.win32.win32.x86_64%2Fsrc%2Forg%2Feclipse%2Fswt%2Fwidgets%2FComposite.java;fp=bundles%2Forg.eclipse.swt.win32.win32.x86_64%2Fsrc%2Forg%2Feclipse%2Fswt%2Fwidgets%2FComposite.java;h=8289d434800dedff0bfd21e86a80f2cc38e61000;hb=db618b088560ad9a524dade82a3847f8d08bfb7c;hp=0000000000000000000000000000000000000000;hpb=930da66f9b2d7d1acba3e5dc805a323933abb780;p=simantics%2Fplatform.git diff --git a/bundles/org.eclipse.swt.win32.win32.x86_64/src/org/eclipse/swt/widgets/Composite.java b/bundles/org.eclipse.swt.win32.win32.x86_64/src/org/eclipse/swt/widgets/Composite.java new file mode 100644 index 000000000..8289d4348 --- /dev/null +++ b/bundles/org.eclipse.swt.win32.win32.x86_64/src/org/eclipse/swt/widgets/Composite.java @@ -0,0 +1,1991 @@ +/******************************************************************************* + * Copyright (c) 2000, 2019 IBM Corporation and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.swt.widgets; + + +import org.eclipse.swt.*; +import org.eclipse.swt.graphics.*; +import org.eclipse.swt.internal.*; +import org.eclipse.swt.internal.win32.*; + +/** + * Instances of this class are controls which are capable + * of containing other controls. + *
+ * Note: The NO_BACKGROUND
, NO_FOCUS
, NO_MERGE_PAINTS
,
+ * and NO_REDRAW_RESIZE
styles are intended for use with Canvas
.
+ * They can be used with Composite
if you are drawing your own, but their
+ * behavior is undefined if they are used with subclasses of Composite
other
+ * than Canvas
.
+ *
+ * Note: The CENTER
style, although undefined for composites, has the
+ * same value as EMBEDDED
which is used to embed widgets from other
+ * widget toolkits into SWT. On some operating systems (GTK), this may cause
+ * the children of this composite to be obscured.
+ *
+ * This class may be subclassed by custom control implementors + * who are building controls that are constructed from aggregates + * of other controls. + *
+ * + * @see Canvas + * @see Composite snippets + * @see Sample code and further information + */ +public class Composite extends Scrollable { + Layout layout; + WINDOWPOS [] lpwp; + Control [] tabList; + int layoutCount, backgroundMode; + + static final int TOOLTIP_LIMIT = 4096; + +/** + * Prevents uninitialized instances from being created outside the package. + */ +Composite () { +} + +/** + * Constructs a new instance of this class given its parent + * and a style value describing its behavior and appearance. + *
+ * The style value is either one of the style constants defined in
+ * class SWT
which is applicable to instances of this
+ * class, or must be built by bitwise OR'ing together
+ * (that is, using the int
"|" operator) two or more
+ * of those SWT
style constants. The class description
+ * lists the style constants that are applicable to the class.
+ * Style bits are also inherited from superclasses.
+ *
The offsetX
and offsetY
are used to map from
+ * the gc
origin to the origin of the parent image background. This is useful
+ * to ensure proper alignment of the image background.
INHERIT_NONE
, INHERIT_DEFAULT
,
+ * INHERIT_FORCE
.
+ *
+ * @return the background mode
+ *
+ * @exception SWTException + * Note: This is not the actual structure used by the receiver + * to maintain its list of children, so modifying the array will + * not affect the receiver. + *
+ * + * @return an array of children + * + * @see Control#moveAbove + * @see Control#moveBelow + * + * @exception SWTExceptionfalse
otherwise.
+ *
+ * @return the receiver's deferred layout state
+ *
+ * @exception SWTException true
if the receiver or any ancestor
+ * up to and including the receiver's nearest ancestor shell
+ * has deferred the performing of layouts. Otherwise, false
+ * is returned.
+ *
+ * @return the receiver's deferred layout state
+ *
+ * @exception SWTException
+ * Use of this method is discouraged since it is the least-efficient
+ * way to trigger a layout. The use of layout(true)
+ * discards all cached layout information, even from controls which
+ * have not changed. It is much more efficient to invoke
+ * {@link Control#requestLayout()} on every control which has changed
+ * in the layout than it is to invoke this method on the layout itself.
+ *
+ * This is equivalent to calling layout(true)
.
+ *
+ * Note: Layout is different from painting. If a child is + * moved or resized such that an area in the parent is + * exposed, then the parent will paint. If no child is + * affected, the parent will not paint. + *
+ * + * @exception SWTExceptiontrue
the layout must not rely
+ * on any information it has cached about the immediate children. If it
+ * is false
the layout may (potentially) optimize the
+ * work it is doing by assuming that none of the receiver's
+ * children has changed state since the last layout.
+ * If the receiver does not have a layout, do nothing.
+ * + * It is normally more efficient to invoke {@link Control#requestLayout()} + * on every control which has changed in the layout than it is to invoke + * this method on the layout itself. Clients are encouraged to use + * {@link Control#requestLayout()} where possible instead of calling + * this method. + *
+ *
+ * If a child is resized as a result of a call to layout, the
+ * resize event will invoke the layout of the child. The layout
+ * will cascade down through all child widgets in the receiver's widget
+ * tree until a child is encountered that does not resize. Note that
+ * a layout due to a resize will not flush any cached information
+ * (same as layout(false)
).
+ *
+ * Note: Layout is different from painting. If a child is + * moved or resized such that an area in the parent is + * exposed, then the parent will paint. If no child is + * affected, the parent will not paint. + *
+ * + * @param changedtrue
if the layout must flush its caches, and false
otherwise
+ *
+ * @exception SWTException true
the layout must not rely
+ * on any information it has cached about its children. If it
+ * is false
the layout may (potentially) optimize the
+ * work it is doing by assuming that none of the receiver's
+ * children has changed state since the last layout.
+ * If the all argument is true
the layout will cascade down
+ * through all child widgets in the receiver's widget tree, regardless of
+ * whether the child has changed size. The changed argument is applied to
+ * all layouts. If the all argument is false
, the layout will
+ * not cascade down through all child widgets in the receiver's widget
+ * tree. However, if a child is resized as a result of a call to layout, the
+ * resize event will invoke the layout of the child. Note that
+ * a layout due to a resize will not flush any cached information
+ * (same as layout(false)
).
+ * + * It is normally more efficient to invoke {@link Control#requestLayout()} + * on every control which has changed in the layout than it is to invoke + * this method on the layout itself. Clients are encouraged to use + * {@link Control#requestLayout()} where possible instead of calling + * this method. + *
+ *+ * Note: Layout is different from painting. If a child is + * moved or resized such that an area in the parent is + * exposed, then the parent will paint. If no child is + * affected, the parent will not paint. + *
+ * + * @param changedtrue
if the layout must flush its caches, and false
otherwise
+ * @param all true
if all children in the receiver's widget tree should be laid out, and false
otherwise
+ *
+ * @exception SWTException + * It is normally more efficient to invoke {@link Control#requestLayout()} + * on every control which has changed in the layout than it is to invoke + * this method on the layout itself. Clients are encouraged to use + * {@link Control#requestLayout()} where possible instead of calling + * this method. + *
+ *+ * Note: Layout is different from painting. If a child is + * moved or resized such that an area in the parent is + * exposed, then the parent will paint. If no child is + * affected, the parent will not paint. + *
+ * + * @param changed a control that has had a state change which requires a recalculation of its size + * + * @exception IllegalArgumentException
+ * The parameter flags
may be a combination of:
+ *
+ * When the changed
array is specified, the flags SWT.ALL
+ * and SWT.CHANGED
have no effect. In this case, the layouts in the
+ * hierarchy must not rely on any information cached about the changed control or
+ * any of its ancestors. The layout may (potentially) optimize the
+ * work it is doing by assuming that none of the peers of the changed
+ * control have changed state since the last layout.
+ * If an ancestor does not have a layout, skip it.
+ *
+ * When the changed
array is not specified, the flag SWT.ALL
+ * indicates that the whole widget tree should be laid out. And the flag
+ * SWT.CHANGED
indicates that the layouts should flush any cached
+ * information for all controls that are laid out.
+ *
+ * The SWT.DEFER
flag always causes the layout to be deferred by
+ * calling Composite.setLayoutDeferred(true)
and scheduling a call
+ * to Composite.setLayoutDeferred(false)
, which will happen when
+ * appropriate (usually before the next event is handled). When this flag is set,
+ * the application should not call Composite.setLayoutDeferred(boolean)
.
+ *
+ * Note: Layout is different from painting. If a child is + * moved or resized such that an area in the parent is + * exposed, then the parent will paint. If no child is + * affected, the parent will not paint. + *
+ * + * @param changed a control that has had a state change which requires a recalculation of its size + * @param flags the flags specifying how the layout should happen + * + * @exception IllegalArgumentExceptionSWT
:
+ * INHERIT_NONE
, INHERIT_DEFAULT
,
+ * INHERIT_FORCE
.
+ *
+ * @param mode the new background mode
+ *
+ * @exception SWTException true
, causes subsequent layout
+ * operations in the receiver or any of its children to be ignored.
+ * No layout of any kind can occur in the receiver or any of its
+ * children until the flag is set to false.
+ * Layout operations that occurred while the flag was
+ * true
are remembered and when the flag is set to
+ * false
, the layout operations are performed in an
+ * optimized manner. Nested calls to this method are stacked.
+ *
+ * @param defer the new defer state
+ *
+ * @exception SWTException