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.