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.