This section contains the project's history of changes, in general. More detailed information can be available in the corresponding sections of these Notes, as well as in the ChangeLog file. Changes are grouped by date, with more recent ones placed at the bottom of this file.
OS.WinAlarm() is implemented as
an example of work with natives).hab and hmq initialization,
OS.DosGetInfoBlocks() and stuff.SWTError exception with the Argument cannot be
NULL message when a check of arguments in some native method
implementations fails -- this check should not seriously increase the
size of the dll, so it can be kept in the future.null is passed as
a structure reference, then NULL will be passed to the
native call instead of the pointer to an empty native structure.SWT001 is changed: the objective
helloWorld1 is removed because the temporary message loop
handling in Display has been removed too (honestly,
commented for a while -- it can be necessary for debugging) and this
objective won't compile any more.SWT002 is added and seems to
function pretty well -- the top and the secondary SWT windows are
showing and even can be closed <) Also their decorations can be
altered by the standard o.e.swt.SWT flags.SWT004 is added to test widget size/position
manipulation methods.SWT.Paint event functionality. it's now possible to
listen it and paint in a widget using o.e.swt.GC class
methods (just few of them are implemented). Also Composite
widgets understand SWT.NO_REDRAW_RESIZE and
SWT.NO_MERGE_PAINTS styles.SWT003 is added.Display.getClientArea() implemented in SWT003
step to place windows at the center and corners.y coordinate was outside the client area).SWT003 is divided on two separate testcases
(SWT003_01 and SWT003_02) and deleted.TestCase and
SWTTestCase, are created to simplify the testcase writing;
tests SWT003_01, SWT003_02 and
SWT004 are now derived from the SWTTestCase
class, all new testcases will also be derived either from
TestCase or SWTTestCase.GC.{draw|fill}{{[Round]Rectangle}|Arc|Oval}() methods are
finally implemented, see task notes for details.{set|get}{Background|Foreground}() methods of
GC and Control classes are implemented.GC: implemented
polylines and polygons, line style and width handling.Region
class and clipping operations in GC.SWT003_03 to demonstrate regions and clipping.Button
operations are implemented (currently only push/radio/check buttons
without images and alignment).SWT.Size/Move/Iconify/Deiconify
events is done.SWT004 is divided on two:
SWT004_01 and SWT004_02.$CVSROOT/doc/diff.html
that contains known differences between the Win32 and OS/2 ports.GC (rectangles and arcs) back to that one in Windows
(meaning that they are drawn 1 pixel narrower than their outlined
counterparts with the same width and height arguments) -- this is done
for compatibility reasons. Initial discussion of this issue was here.SWT006_01 (including test images) and
SWT006_02.Image class
and corresponding GC methods are implemented. However,
icons are not yet supported, only bitmap images are (including all
possible bit depths).dir attribute and
<arg> elements of the <exec> task
under OS/2. This patch can be found on the repository
($CVSROOT/misc/ant-1.5.4-patch-os2.jar). See the
readme.txt file inside the jar on how to install it. Also
$CVSROOT/misc/ant.cmd is updated in order to use the this
patch.GC, to be compatible
with Windows (and conform to SWT specs). Now graphic primitives use the
convention where points that define a primitive are placed between
actual (screen) pixels, not inside them. So, when a filled figure is
drawn it affects all pixels that are inside the area defined by figure's
coordinates. When an outlined figure is drawn it touches pixels to the
left and to the bottom from every point that defines the figure's shape.
This, in particular, means that given the same width and height a filled
rectangle will be 1 pixel smaller in dimensions than an outlined one --
the former will occupy exactly the given number of pixels in width and
height while the latter will occupy width + 1 and height + 1 pixels
respectively.Decorations and Shell classes regarding the
layout management.Image and
GC classes to address different issues.WinCreateMsgQueue() that caused a trap
inside the GoldenCode JVM when running SWT006_01
(see the native implementation of OS.WinCreateMsgQueue() in
swt.c), thanks goes to Gregory Shah from GoldenCode
(ges@goldencode.com) for the explanation of trap reasonsGC.drawFocus() behavior now corresponds to one under
Windows (see the Issue #003 in the list of
differences).PaintEvent and
some clipping issues.GC
methods (copyArea(), getClipping(Region) and
isClipping()) are implemented, testcase
SWT006_03 is created to test them.TestCase and SWTTestCase
classes to simplify some operations in testcases. All testcases are
updated to support the new interface.o.e.swt.grapthcs.Device class (getDepth(),
getDPI(), getSystemColor()...).o.e.swt.graphics.Font, FontData and
FontMetrics classes are done and the
o.e.swt.graphics.GC class is completely finished -- now it
provides all functionality SWT should provide.
o.e.swt.graphics.Device is also fully implemented.
Testcases SWT005_01 and SWT005_02 are created
to test different uses of fonts.TestCase and SWTTestCase classes are
modified again to make it possible to run testcases from other
environments by creating a testcase instance and calling its
run() method, optionally on a separate thread:TestCase class now implements the
Runnable interface (instead of
SWTTestCase) -- for simplicity;TestCase.run() is now final, it calls
init(), then exec() (a new method that
does the actual work), and then done(). This is done
for multithreaded environments to make it posiible to do some
initialization and cleanup at the same (newly created) thread where
exec() is executed.SWT004_01, SWT001 and SWT002
testcases are updated to incorporate the above changes.Button widget.GC.SWT007_01 and
SWT007_02 testcases demonstrate this. See step notes.test.apiprofiler is set to true,
all testcases begin to use the profiling version of swt.dll
that produces (together with the report tool) profiling logs like
swtXXX_YYY.profile.log, containing some statistics about
calls made to OS/2 API functions through JNI wrappers from the
o.e.swt.internal.pm.OS class.Button class.Label class) have been
started.o.e.swt.widgets.MessageBox implementation (contributed by
Daniel Lee Kruse). No
test case yet.