Added initial version of Jabber Client demo application. development
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 24 Sep 2013 00:11:53 +0100
branchdevelopment
changeset 2772 ba792256b173
parent 2771 08ef7d05987b
child 2773 718fab8ca4cf
Added initial version of Jabber Client demo application.
examples/chat/Chat.st
examples/chat/ChatStart.st
examples/chat/ChatWindow.st
examples/chat/Make.proto
examples/chat/Make.spec
examples/chat/Makefile.init
examples/chat/abbrev.stc
examples/chat/autopackage/default.apspec
examples/chat/bc.mak
examples/chat/bmake.bat
examples/chat/builder/baseline.rbspec
examples/chat/builder/package.deps.rake
examples/chat/chat.nsi
examples/chat/chatWinRC.rc
examples/chat/lccmake.bat
examples/chat/mingwmake.bat
examples/chat/modules.c
examples/chat/modules.stx
examples/chat/stx_libjava_examples_chat.st
examples/chat/vcmake.bat
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/Chat.st	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,298 @@
+"{ Package: 'stx:libjava/examples/chat' }"
+
+ApplicationModel subclass:#Chat
+	instanceVariableNames:'client'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'stx-libjava-examples-chat'
+!
+
+!Chat class methodsFor:'interface specs'!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:Chat andSelector:#windowSpec
+     Chat new openInterface:#windowSpec
+     Chat open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+    #(FullSpec
+       name: windowSpec
+       window: 
+      (WindowSpec
+         label: 'ChatStartup'
+         name: 'ChatStartup'
+         min: (Point 10 10)
+         bounds: (Rectangle 0 0 300 300)
+         menu: mainMenu
+       )
+       component: 
+      (SpecCollection
+         collection: (
+          (ViewSpec
+             name: 'Box2'
+             layout: (LayoutFrame 0 0 -26 1 0 1 0 1)
+             level: 1
+             component: 
+            (SpecCollection
+               collection: (
+                (LabelSpec
+                   label: 'InfoLabel'
+                   name: 'Label2'
+                   layout: (LayoutFrame 0 0 -26 1 -1 1 0 1)
+                   level: -1
+                   translateLabel: true
+                   labelChannel: infoLabelHolder
+                   adjust: left
+                 )
+                )
+              
+             )
+           )
+          )
+        
+       )
+     )
+! !
+
+!Chat class methodsFor:'menu specs'!
+
+mainMenu
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+
+    "
+     MenuEditor new openOnClass:Chat andSelector:#mainMenu
+     (Menu new fromLiteralArrayEncoding:(Chat mainMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Buddies'
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  enabled: isConnected
+                  label: 'Chat with...'
+                  itemValue: menuChatWith
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: isDisconnected
+                  label: 'Connect...'
+                  itemValue: menuConnect
+                )
+               (MenuItem
+                  enabled: isConnected
+                  label: 'Disconnect'
+                  itemValue: menuDisconnect
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Exit'
+                  itemValue: closeRequest
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: 'Help'
+            startGroup: right
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Documentation'
+                  itemValue: openDocumentation
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'About this Application...'
+                  itemValue: openAboutThisApplication
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 23-09-2013 / 23:12:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+toolbarMenu
+    "This resource specification was automatically generated by the CodeGeneratorTool."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+    "
+     MenuEditor new openOnClass:ChatStartup andSelector:#toolbarMenu
+    "
+
+    <resource: #menu>
+
+    ^ #(Menu ((MenuItem label: 'Reload' itemValue: menuReload isButton: true labelImage: (ResourceRetriever ToolbarIconLibrary reload24x24Icon))) nil nil)
+! !
+
+!Chat methodsFor:'initialization & release'!
+
+closeDownViews
+    "This is a hook method generated by the Browser/CodeGeneratorTool.
+     It will be invoked when your app/dialog-window is really closed.
+     See also #closeDownViews, which is invoked before and may suppress the close
+     or ask the user for confirmation."
+
+    "/ change the code below as required ...
+    "/ This should cleanup any leftover resources
+    "/ (for example, temporary files)
+    "/ super closeRequest will initiate the closeDown
+
+    "/ add your code here
+
+    "/ do not remove the one below ...
+    ^ super closeDownViews
+!
+
+postBuildWith:aBuilder
+    "This is a hook method generated by the Browser/CodeGeneratorTool.
+     It will be invoked during the initialization of your app/dialog,
+     after all of the visual components have been built, 
+     but BEFORE the top window is made visible.
+     Add any app-specific actions here (reading files, setting up values etc.)
+     See also #postOpenWith:, which is invoked after opening."
+
+    "/ add any code here ...
+
+    ^ super postBuildWith:aBuilder
+!
+
+postOpenWith:aBuilder
+    "This is a hook method generated by the Browser/CodeGeneratorTool.
+     It will be invoked right after the applications window has been opened.
+     Add any app-specific actions here (starting background processes etc.).
+     See also #postBuildWith:, which is invoked before opening."
+
+    "/ add any code here ...
+
+    ^ super postOpenWith:aBuilder
+! !
+
+!Chat methodsFor:'menu actions'!
+
+menuChatWith
+    | id |
+
+    id := Dialog request: 'Jabber ID to chat with' initialAnswer:'janfrog@jabber.cz/neso'.
+    id notEmptyOrNil ifTrue:[
+        self menuChatWith: id.
+    ]
+
+    "Created: / 23-09-2013 / 22:47:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+menuChatWith:id
+
+    ChatWindow new
+        buddy: id;
+        client: client;
+        open.
+
+    "Created: / 23-09-2013 / 22:47:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+menuConnect
+    | dialog server username password |
+
+    server := 'jabber.cz' asValue.
+    username := 'janfrog' asValue.
+    password := nil asValue.
+
+    dialog := Dialog new.
+    dialog addLabelledInputField: 'Server'   adjust: #left on: server   tabable: true separateAtX: 0.3.
+    dialog addLabelledInputField: 'Username' adjust: #left on: username tabable: true separateAtX: 0.3.
+    (dialog addLabelledInputField: 'Password' adjust: #left on: password tabable: true separateAtX: 0.3)
+        bePassword.
+    dialog addOkButton.
+    dialog addAbortButton.
+    dialog open.
+    dialog accepted ifFalse:[ ^ self ].
+
+    client := JAVA stx libjava examples chat SimpleClient new.
+    client connect: server value username: username value password: password value.
+
+    "Created: / 23-09-2013 / 23:02:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+menuDisconnect
+    client disconnect.
+    client := nil.
+
+    "Created: / 23-09-2013 / 23:02:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+openAboutThisApplication
+    "This method was generated by the Browser/CodeGeneratorTool.
+     It will be invoked when the menu-item 'help-about' is selected."
+
+    "/ could open a customized aboutBox here ...
+    super openAboutThisApplication
+!
+
+openDocumentation
+    "This method was generated by the Browser/CodeGeneratorTool.
+     It will be invoked when the menu-item 'help-documentation' is selected."
+
+    "/ change below as required ...
+
+    "/ to open an HTML viewer on some document (under 'doc/online/<language>/' ):
+    self openDocumentationFile:'TOP.html'.
+
+    "/ add application-specific help files under the 'doc/online/<language>/help/appName'
+    "/ directory, and open a viewer with:
+    "/ self openDocumentationFile:'help/<MyApplication>/TOP.html'.
+! !
+
+!Chat methodsFor:'menu-queries'!
+
+isConnected
+    ^ client notNil and:[client isConnected].
+
+    "Created: / 23-09-2013 / 23:03:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isDisconnected
+    ^ self isConnected not
+
+    "Created: / 24-09-2013 / 00:09:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/ChatStart.st	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,84 @@
+"{ Package: 'stx:libjava/examples/chat' }"
+
+StandaloneStartup subclass:#ChatStart
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'stx-libjava-examples-chat'
+!
+
+!ChatStart class methodsFor:'constants & defaults'!
+
+applicationRegistryPath
+    "the key under which this application stores its process ID in the registry
+     as a collection of path-components.
+     i.e. if #('foo' 'bar' 'baz') is returned here, the current applications ID will be stored
+     in HKEY_CURRENT_USER\Software\foo\bar\baz\CurrentID.
+     (would also be used as a relative path for a temporary lock file under unix).
+     Used to detect if another instance of this application is already running."
+
+    ^ #('stx' 'ChatStartup')
+!
+
+applicationUUID
+    "answer an application-specific unique uuid.
+     This is used as the name of some exclusive OS-resource, which is used to find out,
+     if another instance of this application is already running.
+     Under win32, a mutex is used; under unix, an exclusive file in the tempDir could be used.
+     If redefined, please return a real UUID (i.e. UUID fromString:'.....') and not a string or 
+     similar possibly conflicting identifier.
+     You can paste a fresh worldwide unique id via the editor's more-misc-paste UUID menuFunction."
+
+    ^ UUID fromString:'e95f2d30-2496-11e3-9a86-606720e43e2c' 
+! !
+
+!ChatStart class methodsFor:'startup'!
+
+main:argv
+    "main entry; argv is the array of command arguments (as array of words from space-separated command line).
+     Parse arguments, and proceed to the real work function"
+
+    "you may want to put those into instvars, in order to be accessable from the doRealWork function"
+    |aArgs bArgs cOption fileArgs helpOption|
+
+    aArgs := OrderedCollection new.
+    bArgs := OrderedCollection new.
+    fileArgs := OrderedCollection new.
+    cOption := helpOption := false.
+
+    (GetOpt new)
+        at:$h
+            put:[:opt | helpOption := true];
+        at:$? 
+            put:[:arg | self usage. Smalltalk exit:0];
+        default:[:arg | fileArgs add:arg];
+        parse:argv.
+
+    helpOption ifTrue:[ 
+        self usage. 
+    ] ifFalse:[
+        self realMain:argv.
+    ].
+    "/ do not exit here; caller will go into event loop when returning
+
+    "Modified: / 24-09-2013 / 00:10:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+realMain: args 
+    "opens the application"
+
+    JavaVM booted ifFalse:[
+        Java flushAllJavaResources.
+        Java initialize.
+        JavaVM initializeVM. 
+    ].
+    Chat open
+
+    "Modified: / 24-09-2013 / 00:11:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+usage
+    Stderr nextPutLine:'usage: ',self applicationName,' [options...]'.
+    Stderr nextPutLine:'  -h .................. output this message'.
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/ChatWindow.st	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,199 @@
+"{ Package: 'stx:libjava/examples/chat' }"
+
+ApplicationModel subclass:#ChatWindow
+	instanceVariableNames:'client reader conversationHolder buddyHolder messageHolder'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'stx-libjava-examples-chat'
+!
+
+
+!ChatWindow class methodsFor:'interface specs'!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:ChatWindow andSelector:#windowSpec
+     ChatWindow new openInterface:#windowSpec
+     ChatWindow open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+    #(FullSpec
+       name: windowSpec
+       window: 
+      (WindowSpec
+         label: 'NewApplication'
+         name: 'NewApplication'
+         bounds: (Rectangle 0 0 592 525)
+       )
+       component: 
+      (SpecCollection
+         collection: (
+          (LabelSpec
+             label: 'Buddy...'
+             name: 'Label1'
+             layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+             translateLabel: true
+             labelChannel: buddyHolder
+           )
+          (TextEditorSpec
+             name: 'TextEditor1'
+             layout: (LayoutFrame 0 0 30 0 0 1 -30 1)
+             model: conversationHolder
+             hasHorizontalScrollBar: true
+             hasVerticalScrollBar: true
+             hasKeyboardFocusInitially: false
+           )
+          (InputFieldSpec
+             name: 'EntryField1'
+             layout: (LayoutFrame 0 0 -25 1 0 1 0 1)
+             model: messageHolder
+             acceptOnLeave: false
+             acceptOnReturn: true
+             acceptOnTab: false
+             acceptOnLostFocus: false
+             acceptOnPointerLeave: false
+             valueChangeCallBackSelector: send
+           )
+          )
+        
+       )
+     )
+! !
+
+!ChatWindow methodsFor:'accessing'!
+
+buddy: aString
+    self buddyHolder value: aString
+
+    "Created: / 23-09-2013 / 23:27:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+client: jclient
+    client := jclient.
+
+    "Created: / 23-09-2013 / 23:31:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChatWindow methodsFor:'actions'!
+
+receive: message
+
+    conversationHolder value:
+        (conversationHolder value , Character cr, message getFrom , ': ', message getBody)
+
+    "Created: / 23-09-2013 / 23:34:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+send
+    | m |
+
+    m := JAVA org jivesoftware smack packet Message new.
+    m setTo: self buddyHolder value.
+    m setBody: self messageHolder value.
+    client send: m.
+    conversationHolder value:
+            (conversationHolder value , Character cr, 'me: ', self messageHolder value).
+    self messageHolder setValue: ''.
+
+    "Created: / 23-09-2013 / 23:30:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChatWindow methodsFor:'aspects'!
+
+buddyHolder
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    buddyHolder isNil ifTrue:[
+        buddyHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       buddyHolder addDependent:self.
+"/       buddyHolder onChangeSend:#buddyHolderChanged to:self.
+    ].
+    ^ buddyHolder.
+!
+
+conversationHolder
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    conversationHolder isNil ifTrue:[
+        conversationHolder := '' asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       conversationHolder addDependent:self.
+"/       conversationHolder onChangeSend:#conversationHolderChanged to:self.
+    ].
+    ^ conversationHolder.
+!
+
+messageHolder
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    messageHolder isNil ifTrue:[
+        messageHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       messageHolder addDependent:self.
+"/       messageHolder onChangeSend:#messageHolderChanged to:self.
+    ].
+    ^ messageHolder.
+! !
+
+!ChatWindow methodsFor:'hooks'!
+
+closeDownViews
+    reader terminate.
+    super closeDownViews.
+
+    "Created: / 23-09-2013 / 23:35:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+commonPostOpen
+    reader := [
+         [
+            | m |        
+
+            client await.
+            [ (m := client receive: self buddyHolder value) notNil ] whileTrue:[
+                self receive: m.
+            ].
+         ] loop.
+    ] fork.
+
+    "Created: / 23-09-2013 / 23:34:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChatWindow class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/Make.proto	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,479 @@
+# $Header$
+#
+# automagically generated from the projectDefinition: stx_libjava_examples_chat.
+#
+# -------------- no need to change anything below ----------
+#
+# This makefile generates some standalone demo applications
+#
+#    make
+#       generates chat
+#
+
+TOP=../../..
+INCLUDE_TOP=$(TOP)/..
+
+# set to a dummy file name (like FORCE=@@@FORCE-BUILD@@@) to force the build of prereq packages
+FORCE=
+.PHONY: $(FORCE)
+
+PACKAGE=stx:libjava/examples/chat
+SUBDIRS=
+SUPPRESS_LOCAL_ABBREVS="yes"
+NOAUTOLOAD=1
+NOSUBAUTOLOAD=1
+
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libview2
+LOCALDEFINES=
+GLOBALDEFINES=
+MAIN_DEFINES=-DIGNORE_IMAGE -DNO_DISPLAY
+
+RCSSOURCES=Make.proto *.st
+LINKSOURCES=Make.proto *.st
+
+DELIVERBINARIES=
+
+LIBNAME=libstx_libjava_examples_chat
+STCLOCALOPT='-package=$(PACKAGE)' -I. -headerDir=. $(LOCALINCLUDES) $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -headerDir=.  -varPrefix=$(LIBNAME)
+
+
+# ********** OPTIONAL: MODIFY the next line ***
+# additional C-libraries that should be pre-linked with the class-objects
+LD_OBJ_LIBS=
+LOCAL_SHARED_LIBS=
+
+
+# ********** OPTIONAL: MODIFY the next line ***
+# additional C targets or libraries should be added below
+LOCAL_EXTRA_TARGETS=
+
+OBJS= $(COMMON_OBJS) $(UNIX_OBJS)
+
+
+
+
+
+LIBLIST = $(REQUIRED_LIBS)
+
+# required libs:
+#
+
+REQUIRED_LIBS= libstx_libbasic \
+ libstx_libbasic2 \
+ libstx_libcomp \
+ libstx_libbasic3 \
+ libstx_libview \
+ libstx_libui \
+ libstx_libview2 \
+ libstx_goodies_sunit \
+ libstx_libwidg \
+ libstx_libhtml \
+ libstx_libwidg2 \
+ libstx_libtool \
+ libstx_libjava \
+
+
+REQUIRED_LIBOBJS= ../../../libbasic/libstx_libbasic$(O_EXT) \
+ ../../../libbasic2/libstx_libbasic2$(O_EXT) \
+ ../../../libcomp/libstx_libcomp$(O_EXT) \
+ ../../../libbasic3/libstx_libbasic3$(O_EXT) \
+ ../../../libview/libstx_libview$(O_EXT) \
+ ../../../libui/libstx_libui$(O_EXT) \
+ ../../../libview2/libstx_libview2$(O_EXT) \
+ ../../../goodies/sunit/libstx_goodies_sunit$(O_EXT) \
+ ../../../libwidg/libstx_libwidg$(O_EXT) \
+ ../../../libhtml/libstx_libhtml$(O_EXT) \
+ ../../../libwidg2/libstx_libwidg2$(O_EXT) \
+ ../../../libtool/libstx_libtool$(O_EXT) \
+ ../..//libstx_libjava$(O_EXT) \
+
+
+REQUIRED_LINK_LIBOBJS= libstx_libbasic$(O_EXT) \
+ libstx_libbasic2$(O_EXT) \
+ libstx_libcomp$(O_EXT) \
+ libstx_libbasic3$(O_EXT) \
+ libstx_libview$(O_EXT) \
+ libstx_libui$(O_EXT) \
+ libstx_libview2$(O_EXT) \
+ libstx_goodies_sunit$(O_EXT) \
+ libstx_libwidg$(O_EXT) \
+ libstx_libhtml$(O_EXT) \
+ libstx_libwidg2$(O_EXT) \
+ libstx_libtool$(O_EXT) \
+ libstx_libjava$(O_EXT) \
+
+
+REQUIRED_SUPPORT_DIRS=RESOURCEFILES
+
+SUBPROJECT_LIBS=
+
+
+target: ALL
+
+all::   prereq ALL_NP
+
+# like ALL, but not prereqs
+ALL_NP:: exe $(SUBPROJECT_LIBS) $(REQUIRED_SUPPORT_DIRS) $(SETUP_RULE)
+
+exe:    chat 
+
+chat: $(APP_DIRS_TO_MAKE) $(APP_LIBOBJS) $(REQUIRED_LIBOBJS) $(OBJS)
+	$(MAKE) link_chat
+
+
+link_chat:
+	$(MAKE) GUI_APPLICATION \
+		    TARGET=chat \
+		    APPLICATION_CLASSES="$(COMMON_CLASSES) $(UNIX_CLASSES)" \
+		    APPLICATION_OBJS="$(OBJS)" \
+		    APPLICATION_LIBLIST="$(REQUIRED_LIBS)" \
+		    APPLICATION_LIBOBJS="$(REQUIRED_LIBOBJS)" \
+		    APPLICATION_LINK_LIBOBJS="$(REQUIRED_LINK_LIBOBJS)" \
+		    STARTUP_CLASS="ChatStart" \
+		    STARTUP_SELECTOR="start" \
+		    MAIN_DEFINES="-DIGNORE_IMAGE -DNO_DISPLAY"
+
+# build all mandatory prerequisite packages (containing superclasses) for this package
+prereq:
+	$(MAKE) FORCE=@@@FORCE-BUILD@@@ $(REQUIRED_LIBOBJS)
+
+#
+# a self installable delivery
+#
+# backward compatible fallback
+setup::
+	@if test -d autopackage; then \
+	    makepackage; \
+	else \
+	    echo "Error: make setup not yet available in this unix"; \
+	    exit 1; \
+	fi
+
+#
+# for linux, this uses autopackage
+#
+setup_linux:
+	@if test -d autopackage; then \
+	    makepackage; \
+	else \
+	    echo "Error: missing autopackage directory"; \
+	    exit 1; \
+	fi
+
+#
+# for mac, a dmg is generated
+#
+setup_macosx:   "Chat_dmg"
+	hdiutil create -fs HFSX -layout SPUD "Chat.dmg" -srcfolder "Chat_dmg" -format UDZO -volname "Chat" -quiet
+
+"Chat_dmg":
+	@-rm -rf "Chat_dmg"
+	@-mkdir "Chat_dmg"
+	@-mkdir "Chat_dmg/Chat.app"
+	@-mkdir "Chat_dmg/Chat.app/Contents"
+	@-mkdir "Chat_dmg/Chat.app/Contents/MacOS"
+	cp "chat" "Chat_dmg/Chat.app/Contents/MacOS/Chat"
+	@-mkdir Chat_dmg/Chat.app/Contents/MacOS/.
+	-cp -r *.so "Chat_dmg/Chat.app/Contents/MacOS/."
+	-cp -r symbols.stc "Chat_dmg/Chat.app/Contents/MacOS/."
+	-cp -r *.stx "Chat_dmg/Chat.app/Contents/MacOS/."
+	-cp -r *.rc "Chat_dmg/Chat.app/Contents/MacOS/."
+	-cp -r resources "Chat_dmg/Chat.app/Contents/MacOS/."
+
+
+SOURCEFILES: chat_SOURCES \
+	stx_SOURCES
+
+
+
+
+RESOURCEFILES: chat_RESOURCES chat_BITMAPS  \
+	stx_RESOURCES stx_STYLES stx_BITMAPS
+
+
+chat_RESOURCES: 
+	mkdir -p resources/stx/libjava/examples/chat
+	-cp ../resources/*.rs ../resources/*.style resources/stx/libjava/examples/chat/..
+
+chat_BITMAPS: 
+	mkdir -p resources/stx/libjava/examples/chat/bitmaps
+	-cp *.ico *.gif *.png resources/stx/libjava/examples/chat/bitmaps
+
+
+
+stx_RESOURCES: \
+	keyboard.rc \
+	keyboardMacros.rc \
+	display.rc \
+	libbasic_RESOURCES \
+	libview_RESOURCES \
+	libtool_RESOURCES  \
+	libtool2_RESOURCES
+
+keyboard.rc: $(TOP)/projects/smalltalk/keyboard.rc
+	cp $(TOP)/projects/smalltalk/keyboard.rc .
+
+keyboardMacros.rc: $(TOP)/projects/smalltalk/keyboardMacros.rc
+	cp $(TOP)/projects/smalltalk/keyboardMacros.rc .
+
+display.rc: $(TOP)/projects/smalltalk/display.rc
+	cp $(TOP)/projects/smalltalk/display.rc .
+
+stx_STYLES: 
+	mkdir -p resources/stx/libview
+	mkdir -p resources/stx/libview/styles
+	cp $(TOP)/libview/styles/*.common resources/stx/libview/styles
+	cp $(TOP)/libview/styles/*.style resources/stx/libview/styles
+
+stx_BITMAPS: \
+	libwidg_BITMAPS
+
+libwidg_BITMAPS: 
+	mkdir -p resources/stx/libwidg/bitmaps
+	-cp $(TOP)/libwidg/bitmaps/*.* resources/stx/libwidg/bitmaps
+
+libbasic_RESOURCES: 
+	mkdir -p resources/stx/libbasic
+	-cp $(TOP)/libbasic/resources/*.* resources/stx/libbasic
+
+libtool_RESOURCES: 
+	mkdir -p resources/stx/libtool
+	-cp $(TOP)/libtool/resources/*.* resources/stx/libtool
+
+libtool2_RESOURCES: 
+	mkdir -p resources/stx/libtool2
+	-cp $(TOP)/libtool2/resources/*.* resources/stx/libtool2
+
+libview_RESOURCES: 
+	mkdir -p resources/stx/libview
+	-cp $(TOP)/libview/resources/*.* resources/stx/libview
+
+libview2_RESOURCES: 
+	mkdir -p resources/stx/libview2
+	-cp $(TOP)/libview2/resources/*.* resources/stx/libview2
+
+bitmaps:
+	mkdir -p bitmaps
+
+doc:
+	mkdir -p doc
+
+
+
+libstx_libbasic.so: ../../../libbasic/libstx_libbasic.so
+	ln -sf ../../../libbasic/libstx_libbasic.so .
+
+../../../libbasic/libstx_libbasic.so: ../../../libbasic/makefile $(FORCE)
+	@if [ -f "../../../libbasic/.NOSOURCE" ]; then \
+	    echo "skip make in ../../../libbasic (no source)"; \
+	else \
+	    cd ../../../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../../../libbasic/makefile: ../../../libbasic/Make.proto
+	$(TOP)/rules/stmkmf --cd ../../../libbasic
+
+libstx_libbasic2.so: ../../../libbasic2/libstx_libbasic2.so
+	ln -sf ../../../libbasic2/libstx_libbasic2.so .
+
+../../../libbasic2/libstx_libbasic2.so: ../../../libbasic2/makefile $(FORCE)
+	@if [ -f "../../../libbasic2/.NOSOURCE" ]; then \
+	    echo "skip make in ../../../libbasic2 (no source)"; \
+	else \
+	    cd ../../../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../../../libbasic2/makefile: ../../../libbasic2/Make.proto
+	$(TOP)/rules/stmkmf --cd ../../../libbasic2
+
+libstx_libcomp.so: ../../../libcomp/libstx_libcomp.so
+	ln -sf ../../../libcomp/libstx_libcomp.so .
+
+../../../libcomp/libstx_libcomp.so: ../../../libcomp/makefile $(FORCE)
+	@if [ -f "../../../libcomp/.NOSOURCE" ]; then \
+	    echo "skip make in ../../../libcomp (no source)"; \
+	else \
+	    cd ../../../libcomp && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../../../libcomp/makefile: ../../../libcomp/Make.proto
+	$(TOP)/rules/stmkmf --cd ../../../libcomp
+
+libstx_libbasic3.so: ../../../libbasic3/libstx_libbasic3.so
+	ln -sf ../../../libbasic3/libstx_libbasic3.so .
+
+../../../libbasic3/libstx_libbasic3.so: ../../../libbasic3/makefile $(FORCE)
+	@if [ -f "../../../libbasic3/.NOSOURCE" ]; then \
+	    echo "skip make in ../../../libbasic3 (no source)"; \
+	else \
+	    cd ../../../libbasic3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../../../libbasic3/makefile: ../../../libbasic3/Make.proto
+	$(TOP)/rules/stmkmf --cd ../../../libbasic3
+
+libstx_libview.so: ../../../libview/libstx_libview.so
+	ln -sf ../../../libview/libstx_libview.so .
+
+../../../libview/libstx_libview.so: ../../../libview/makefile $(FORCE)
+	@if [ -f "../../../libview/.NOSOURCE" ]; then \
+	    echo "skip make in ../../../libview (no source)"; \
+	else \
+	    cd ../../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../../../libview/makefile: ../../../libview/Make.proto
+	$(TOP)/rules/stmkmf --cd ../../../libview
+
+libstx_libui.so: ../../../libui/libstx_libui.so
+	ln -sf ../../../libui/libstx_libui.so .
+
+../../../libui/libstx_libui.so: ../../../libui/makefile $(FORCE)
+	@if [ -f "../../../libui/.NOSOURCE" ]; then \
+	    echo "skip make in ../../../libui (no source)"; \
+	else \
+	    cd ../../../libui && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../../../libui/makefile: ../../../libui/Make.proto
+	$(TOP)/rules/stmkmf --cd ../../../libui
+
+libstx_libview2.so: ../../../libview2/libstx_libview2.so
+	ln -sf ../../../libview2/libstx_libview2.so .
+
+../../../libview2/libstx_libview2.so: ../../../libview2/makefile $(FORCE)
+	@if [ -f "../../../libview2/.NOSOURCE" ]; then \
+	    echo "skip make in ../../../libview2 (no source)"; \
+	else \
+	    cd ../../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../../../libview2/makefile: ../../../libview2/Make.proto
+	$(TOP)/rules/stmkmf --cd ../../../libview2
+
+libstx_goodies_sunit.so: ../../../goodies/sunit/libstx_goodies_sunit.so
+	ln -sf ../../../goodies/sunit/libstx_goodies_sunit.so .
+
+../../../goodies/sunit/libstx_goodies_sunit.so: ../../../goodies/sunit/makefile $(FORCE)
+	@if [ -f "../../../goodies/sunit/.NOSOURCE" ]; then \
+	    echo "skip make in ../../../goodies/sunit (no source)"; \
+	else \
+	    cd ../../../goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../../../goodies/sunit/makefile: ../../../goodies/sunit/Make.proto
+	$(TOP)/rules/stmkmf --cd ../../../goodies/sunit
+
+libstx_libwidg.so: ../../../libwidg/libstx_libwidg.so
+	ln -sf ../../../libwidg/libstx_libwidg.so .
+
+../../../libwidg/libstx_libwidg.so: ../../../libwidg/makefile $(FORCE)
+	@if [ -f "../../../libwidg/.NOSOURCE" ]; then \
+	    echo "skip make in ../../../libwidg (no source)"; \
+	else \
+	    cd ../../../libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../../../libwidg/makefile: ../../../libwidg/Make.proto
+	$(TOP)/rules/stmkmf --cd ../../../libwidg
+
+libstx_libhtml.so: ../../../libhtml/libstx_libhtml.so
+	ln -sf ../../../libhtml/libstx_libhtml.so .
+
+../../../libhtml/libstx_libhtml.so: ../../../libhtml/makefile $(FORCE)
+	@if [ -f "../../../libhtml/.NOSOURCE" ]; then \
+	    echo "skip make in ../../../libhtml (no source)"; \
+	else \
+	    cd ../../../libhtml && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../../../libhtml/makefile: ../../../libhtml/Make.proto
+	$(TOP)/rules/stmkmf --cd ../../../libhtml
+
+libstx_libwidg2.so: ../../../libwidg2/libstx_libwidg2.so
+	ln -sf ../../../libwidg2/libstx_libwidg2.so .
+
+../../../libwidg2/libstx_libwidg2.so: ../../../libwidg2/makefile $(FORCE)
+	@if [ -f "../../../libwidg2/.NOSOURCE" ]; then \
+	    echo "skip make in ../../../libwidg2 (no source)"; \
+	else \
+	    cd ../../../libwidg2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../../../libwidg2/makefile: ../../../libwidg2/Make.proto
+	$(TOP)/rules/stmkmf --cd ../../../libwidg2
+
+libstx_libtool.so: ../../../libtool/libstx_libtool.so
+	ln -sf ../../../libtool/libstx_libtool.so .
+
+../../../libtool/libstx_libtool.so: ../../../libtool/makefile $(FORCE)
+	@if [ -f "../../../libtool/.NOSOURCE" ]; then \
+	    echo "skip make in ../../../libtool (no source)"; \
+	else \
+	    cd ../../../libtool && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../../../libtool/makefile: ../../../libtool/Make.proto
+	$(TOP)/rules/stmkmf --cd ../../../libtool
+
+libstx_libjava.so: ../..//libstx_libjava.so
+	ln -sf ../..//libstx_libjava.so .
+
+../..//libstx_libjava.so: ../..//makefile $(FORCE)
+	@if [ -f "../..//.NOSOURCE" ]; then \
+	    echo "skip make in ../../ (no source)"; \
+	else \
+	    cd ../../ && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+	fi
+
+../..//makefile: ../..//Make.proto
+	$(TOP)/rules/stmkmf --cd ../../
+
+
+
+
+
+java: ant
+
+ant:
+	ant -f java/build.xml
+
+antIfPossible:
+	-ant -f java/build.xml
+
+full::  ant
+
+zlib:
+	cd $(ZLIB_DIR); $(MAKE) $(MAKE_ZLIB_ARG)
+
+support/fdlibm/libfdm.a:
+	$(MAKE) CCCONFOPT="$(CCCONFOPT)" -C support/fdlibm
+
+
+
+
+
+
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+ifneq (**NOHG**, $(shell hg root 2> /dev/null || echo -n '**NOHG**'))
+stx_libjava_examples_chat.$(O): $(shell hg root)/.hg/dirstate
+endif
+
+
+
+
+clean::
+	-rm -f *.so chat.$(O)
+
+clobber:: clean
+	-rm -f chat *.img *.sav
+
+# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
+$(OUTDIR)Chat.$(O) Chat.$(H): Chat.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)ChatStart.$(O) ChatStart.$(H): ChatStart.st $(INCLUDE_TOP)/stx/libbasic/StandaloneStartup.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)ChatWindow.$(O) ChatWindow.$(H): ChatWindow.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)stx_libjava_examples_chat.$(O) stx_libjava_examples_chat.$(H): stx_libjava_examples_chat.st $(INCLUDE_TOP)/stx/libbasic/ApplicationDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+
+# ENDMAKEDEPEND --- do not remove this line
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/Make.spec	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,68 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: stx_libjava_examples_chat.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# This file contains specifications which are common to all platforms.
+#
+
+# Do NOT CHANGE THESE DEFINITIONS
+# (otherwise, ST/X will have a hard time to find out the packages location from its packageID,
+#  to find the source code of a class and to find the library for a package)
+MODULE=stx
+MODULE_DIR=libjava/examples/chat
+PACKAGE=$(MODULE):$(MODULE_DIR)
+
+
+# Argument(s) to the stc compiler (stc --usage).
+#  -headerDir=. : create header files locally
+#                (if removed, they will be created as common
+#  -Pxxx       : defines the package
+#  -Zxxx       : a prefix for variables within the classLib
+#  -Dxxx       : defines passed to to CC for inline C-code
+#  -Ixxx       : include path passed to CC for inline C-code
+#  +optspace   : optimized for space
+#  +optspace2  : optimized more for space
+#  +optspace3  : optimized even more for space
+#  +optinline  : generate inline code for some ST constructs
+#  +inlineNew  : additionally inline new
+#  +inlineMath : additionally inline some floatPnt math stuff
+#
+# ********** OPTIONAL: MODIFY the next line(s) ***
+# STCLOCALOPTIMIZATIONS=+optinline +inlineNew
+# STCLOCALOPTIMIZATIONS=+optspace3
+STCLOCALOPTIMIZATIONS=+optspace3
+
+
+# Argument(s) to the stc compiler (stc --usage).
+#  -warn            : no warnings
+#  -warnNonStandard : no warnings about ST/X extensions
+#  -warnEOLComments : no warnings about EOL comment extension
+#  -warnPrivacy     : no warnings about privateClass extension
+#
+# ********** OPTIONAL: MODIFY the next line(s) ***
+# STCWARNINGS=-warn
+# STCWARNINGS=-warnNonStandard
+# STCWARNINGS=-warnEOLComments
+STCWARNINGS=-warnNonStandard
+
+COMMON_CLASSES= \
+	Chat \
+	ChatStart \
+	ChatWindow \
+	stx_libjava_examples_chat \
+
+
+
+
+COMMON_OBJS= \
+    $(OUTDIR_SLASH)Chat.$(O) \
+    $(OUTDIR_SLASH)ChatStart.$(O) \
+    $(OUTDIR_SLASH)ChatWindow.$(O) \
+    $(OUTDIR_SLASH)stx_libjava_examples_chat.$(O) \
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/Makefile.init	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,27 @@
+#
+# DO NOT EDIT
+#
+# make uses this file (Makefile) only, if there is no
+# file named "makefile" (lower-case m) in the same directory.
+# My only task is to generate the real makefile and call make again.
+# Thereafter, I am no longer used and needed.
+#
+# MACOSX caveat:
+#   as filenames are not case sensitive (in a default setup),
+#   we cannot use the above trick. Therefore, this file is now named
+#   "Makefile.init", and you have to execute "make -f Makefile.init" to
+#   get the initial makefile.  This is now also done by the toplevel CONFIG
+#   script.
+
+.PHONY: run
+
+run: makefile
+	$(MAKE) -f makefile
+
+#only needed for the definition of $(TOP)
+include Make.proto
+
+makefile: mf
+
+mf:
+	$(TOP)/rules/stmkmf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/abbrev.stc	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,7 @@
+# automagically generated by the project definition
+# this file is needed for stc to be able to compile modules independently.
+# it provides information about a classes filename, category and especially namespace.
+Chat Chat stx:libjava/examples/chat 'stx-libjava-examples-chat' 1
+ChatStart ChatStart stx:libjava/examples/chat 'stx-libjava-examples-chat' 1
+ChatWindow ChatWindow stx:libjava/examples/chat 'stx-libjava-examples-chat' 1
+stx_libjava_examples_chat stx_libjava_examples_chat stx:libjava/examples/chat '* Projects & Packages *' 3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/autopackage/default.apspec	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,90 @@
+# -*- shell-script -*-
+[Meta]
+ShortName: chat
+SoftwareVersion: 6.2.3.0
+DisplayName: Very Simple Jabber Client
+RootName: @exept.de/expecco:$SOFTWAREVERSION
+Summary: Very Simple Jabber Client
+Maintainer: SWING Research Group
+Packager: eXept Software AG
+PackageVersion: 1
+CPUArchitectures: x86
+AutopackageTarget: 1.0
+Type: Application
+License: Commercial
+
+[Description]
+Very Simple Jabber Client
+
+[BuildPrepare]
+# If you're using autotools, the default should be enough.
+# prepareBuild will set up apbuild and run configure for you. If you
+# need to pass arguments to configure, just add them to prepareBuild:
+# prepareBuild --enable-foo --disable-bar
+#prepareBuild
+
+[BuildUnprepare]
+# If you're using prepareBuild above, there is no need to change this!
+#unprepareBuild
+
+[Globals]
+# Variables declared in this section will be available in all other sections
+export APKG_BUILD_SKIP_CONFIGURE=1
+export APKG_BUILD_SKIP_MAKE=1
+export MYPREFIX=/opt/chat
+
+[Prepare]
+#recommend '@autopackage.org/autopackage-gtk' 1
+
+[Imports]
+import <<EOF
+$source_dir/chat
+$source_dir/resources
+$source_dir/keyboard.rc
+$source_dir/keyboardMacros.rc
+$source_dir/display.rc
+$source_dir/host.rc
+$source_dir/../doc
+$source_dir/../testsuites/webedition
+$source_dir/../projects/libraries
+$source_dir/../reportGenerator/tools
+$source_dir/../../pdf/afm
+$source_dir/../plugin/selenium/libexept_expecco_plugin_selenium.so
+$source_dir/../externalTools
+EOF
+
+for i in $source_dir/*.so
+do
+    echo $source_dir/$(readlink $i)
+done | import
+
+[Install]
+if [ "$PREFIX" != "/usr" ]
+then
+    export MYPREFIX=$PREFIX
+fi
+
+find . -type d \( -name CVS -or -name 'not_*' \) -print | xargs rm -rf
+mkdir -p $MYPREFIX
+copyFiles expecco *.rc resources        $MYPREFIX/bin
+copyFiles *.so                          $MYPREFIX/lib
+copyFiles doc externalTools             $MYPREFIX/packages/exept/expecco
+copyFiles webedition/projects libraries $MYPREFIX/testsuites
+copyFiles tools                         $MYPREFIX/packages/exept/expecco/reportGenerator
+copyFiles afm                           $MYPREFIX/packages/exept/pdf
+copyFiles libexept_expecco_plugin_selenium.so   $MYPREFIX/plugin
+
+#installExe expecco
+#installLib *.so
+#installData resources
+#installData keyboard.rc
+#installData keyboardMacros.rc
+#installData host.rc
+#installData display.rc
+#installData doc
+
+[Uninstall]
+# Leaving this at the default is safe unless you use custom commands in
+# "Install" to create files. All autopackage API functions
+# that installs files are logged.
+uninstallFromLog
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/bc.mak	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,515 @@
+# $Header$
+#
+# DO NOT EDIT 
+# automagically generated from the projectDefinition: stx_libjava_examples_chat.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# Historic Note:
+#  this used to contain only rules to make with borland 
+#    (called via bmake, by "make.exe -f bc.mak")
+#  this has changed; it is now also possible to build using microsoft visual c
+#    (called via vcmake, by "make.exe -f bc.mak -DUSEVC")
+#
+
+TOP=..\..\..       
+INCLUDE_TOP=$(TOP)\..
+
+# An old file, used as a dummy target for FORCE if we do not want
+#   re-make libraries. Windows make does not work if we redefine FORCE=   (empty string)
+# OLD_FILE=bmake.bat
+OLD_FILE="c:\windows\win.ini"
+
+#dummy target to force a build
+!ifndef FORCE
+FORCE=$(OLD_FILE)
+!endif
+
+CFLAGS_LOCAL=$(CFLAGS_APPTYPE) \
+ -DSTARTUP_CLASS="\"ChatStart\"" \
+ -DSTARTUP_SELECTOR="\"start\"" \
+ -DUSE_MODULE_TABLE
+
+#
+
+!INCLUDE $(TOP)\rules\stdHeader_bc
+!INCLUDE Make.spec
+
+OBJS= $(COMMON_OBJS) $(WIN32_OBJS)
+
+
+
+#
+LIBNAME=dummy
+STCOPT="+optinline"
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libview2
+LOCALDEFINES=
+GLOBALDEFINES=
+
+STCLOCALOPT='-package=$(PACKAGE)' $(LOCALDEFINES) $(LOCALINCLUDES)  $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) $(COMMONSYMFLAG) -varPrefix=$(LIBNAME)
+
+LFLAGS=$(APP_LFLAGS)
+
+PROJECT_NOCONSOLE= chat.exe
+PROJECT_CONSOLE= chat.com
+ALLOBJFILES= main.$(O)
+!ifdef USETCC
+RESFILES=
+!else
+RESFILES= chatWinRC.$(RES)
+!endif
+
+ALLOBJ= $(ALLOBJFILES) $(OBJS)
+DEFFILE=$(TOP)\rules\bc_exe.def
+
+LIBFILES=$(LIBDIR_LIBRUN)\librun.lib
+ALLLIB=$(LIBFILES) $(APP_IMPORTLIBS) $(APP_RT_LIB)
+
+REQUIRED_LIBS=librun.dll  \
+ libstx_libbasic.dll \
+ libstx_libbasic2.dll \
+ libstx_libcomp.dll \
+ libstx_libbasic3.dll \
+ libstx_libview.dll \
+ libstx_libui.dll \
+ libstx_libview2.dll \
+ libstx_goodies_sunit.dll \
+ libstx_libwidg.dll \
+ libstx_libhtml.dll \
+ libstx_libwidg2.dll \
+ libstx_libtool.dll \
+ libstx_libjava.dll \
+
+
+REQUIRED_FILES=$(RT_DLL) $(X11_DLL) $(XEXT_DLL) symbols.stc $(REQUIRED_LIBS)
+
+REQUIRED_SUPPORT_DIRS=RESOURCEFILES
+
+target: ALL postBuildCleanup 
+
+# the executable, all required files and a self-installing-installer-exe
+ALL:: prereq ALL_NP
+
+# all, but no prereqs
+ALL_NP:: exe $(REQUIRED_SUPPORT_DIRS) postBuildCleanup setup
+
+exe:  newBuildDate $(REQUIRED_LIBS) noConsoleApp consoleApp
+
+# the executable only
+# with console
+consoleApp: $(REQUIRED_LIBS)
+	-del main.$(O)
+	$(MAKE) -N -f bc.mak $(USE_ARG) \
+		MAKE_BAT=$(MAKE_BAT) \
+		PROJECT=$(PROJECT_CONSOLE) \
+		CFLAGS_APPTYPE=" -DWIN32GUI $(CFLAGS_CONSOLE)" \
+		LFLAGS_APPTYPE=" $(LFLAGS_CONSOLE)" \
+		CRT_STARTUP=" $(CRT_STARTUP_CONSOLE)" theExe
+
+# without console
+noConsoleApp: $(REQUIRED_LIBS)
+	-del main.$(O)
+	$(MAKE) -N -f bc.mak $(USE_ARG) \
+		MAKE_BAT=$(MAKE_BAT) \
+		PROJECT=$(PROJECT_NOCONSOLE) \
+		CFLAGS_APPTYPE=" -DWIN32GUI $(CFLAGS_NOCONSOLE) -DWIN_LOGFILE="\\"\"chat.log\\"\""" \
+		LFLAGS_APPTYPE=" $(LFLAGS_NOCONSOLE)" \
+		CRT_STARTUP=" $(CRT_STARTUP_NOCONSOLE)" theExe
+
+# the executable only (internal target; needs some defines)
+theExe: $(OUTDIR) $(OBJS) $(REQUIRED_FILES) show $(PROJECT) 
+
+# build all mandatory prerequisite packages (containing superclasses) for this package
+prereq:
+	$(MAKE) -N -f bc.mak $(USE_ARG) FORCE=FORCE_BUILD $(REQUIRED_LIBS)
+
+FORCE_BUILD:
+	@rem Dummy target to force a build
+
+# a nullsoft installable delivery
+# This uses the Nullsoft Installer Package and works in Windows only
+setup: $(PROJECT) postBuildCleanup chat.nsi
+	$(MAKENSIS) chat.nsi
+
+newBuildDate:
+	del buildDate.h
+
+new:
+	$(MAKE_BAT) clean
+	$(MAKE_BAT)
+
+RESOURCEFILES: chat_RESOURCES chat_BITMAPS  \
+	stx_RESOURCES stx_STYLES stx_BITMAPS
+
+
+chat_RESOURCES: resources\stx\libjava\examples\chat\NUL
+	-copy ..\resources\*.rs resources\stx\libjava\examples\chat\..
+	-copy ..\resources\*.style resources\stx\libjava\examples\chat\..
+
+chat_BITMAPS: resources\stx\libjava\examples\chat\bitmaps\NUL
+	-copy *.ico resources\stx\libjava\examples\chat\bitmaps
+	-copy *.gif resources\stx\libjava\examples\chat\bitmaps
+
+resources\stx\libjava\examples\chat\bitmaps\NUL: resources\stx\libjava\examples\chat\NUL
+	mkdir resources\stx\libjava\examples\chat\bitmaps
+
+resources\stx\libjava\examples\chat\NUL: resources\stx\libjava\examples\NUL
+	mkdir resources\stx\libjava\examples\chat
+
+resources\stx\libjava\examples\NUL: resources\stx\libjava\NUL
+	mkdir resources\stx\libjava\examples
+
+resources\stx\libjava\NUL: resources\stx\NUL
+	mkdir resources\stx\libjava
+
+
+
+stx_RESOURCES: \
+	keyboard.rc \
+	keyboardMacros.rc \
+	host.rc \
+	h_win32.rc \
+	display.rc \
+	d_win32.rc \
+	libbasic_RESOURCES \
+	libview_RESOURCES \
+	libtool_RESOURCES  \
+	libtool2_RESOURCES
+
+keyboard.rc: $(TOP)\projects\smalltalk\keyboard.rc
+	copy $(TOP)\projects\smalltalk\keyboard.rc *.*
+
+keyboardMacros.rc: $(TOP)\projects\smalltalk\keyboardMacros.rc
+	copy $(TOP)\projects\smalltalk\keyboardMacros.rc *.*
+
+host.rc: $(TOP)\projects\smalltalk\host.rc
+	copy $(TOP)\projects\smalltalk\host.rc *.*
+
+h_win32.rc: $(TOP)\projects\smalltalk\h_win32.rc
+	copy $(TOP)\projects\smalltalk\h_win32.rc *.*
+
+display.rc: $(TOP)\projects\smalltalk\display.rc
+	copy $(TOP)\projects\smalltalk\display.rc *.*
+
+d_win32.rc: $(TOP)\projects\smalltalk\d_win32.rc
+	copy $(TOP)\projects\smalltalk\d_win32.rc *.*
+
+stx_STYLES: resources\stx\libview\NUL resources\stx\libview\styles\NUL
+	-copy $(TOP)\libview\styles\*.style resources\stx\libview\styles\*.*
+	-copy $(TOP)\libview\styles\*.common resources\stx\libview\styles\*.*
+
+stx_BITMAPS: \
+	libwidg_BITMAPS
+
+libwidg_BITMAPS: resources\stx\libwidg\bitmaps\NUL
+	-copy $(TOP)\libwidg\bitmaps\*.xpm resources\stx\libwidg\bitmaps\*.*
+
+libbasic_RESOURCES: resources\stx\libbasic\NUL
+	copy $(TOP)\libbasic\resources\*.rs resources\stx\libbasic\*.*
+
+libtool_RESOURCES: resources\stx\libtool\NUL
+	-copy $(TOP)\libtool\resources\*.rs resources\stx\libtool\*.*
+
+libtool2_RESOURCES: resources\stx\libtool2\NUL
+	-copy $(TOP)\libtool2\resources\*.rs resources\stx\libtool2\*.*
+
+libview_RESOURCES: resources\stx\libview\NUL 
+	-copy $(TOP)\libview\resources\*.rs resources\stx\libview\*.*
+
+libview2_RESOURCES: resources\stx\libview2\NUL
+	-copy $(TOP)\libview2\resources\*.rs resources\stx\libview2\*.*
+
+resources\stx\libbasic\NUL: resources\stx\NUL
+	mkdir resources\stx\libbasic
+
+resources\stx\libtool\NUL: resources\stx\NUL
+	mkdir resources\stx\libtool
+
+resources\stx\libtool2\NUL: resources\stx\NUL
+	mkdir resources\stx\libtool2
+
+resources\stx\libview\NUL: resources\stx\NUL
+	mkdir resources\stx\libview
+
+resources\stx\libview\styles\NUL: resources\stx\libview\NUL
+	mkdir resources\stx\libview\styles
+
+resources\stx\libview2\NUL: resources\stx\NUL
+	mkdir resources\stx\libview2
+
+resources\stx\libwidg\bitmaps\NUL: resources\stx\libwidg\NUL
+	mkdir resources\stx\libwidg\bitmaps
+
+resources\stx\libwidg\NUL: resources\stx\NUL
+	mkdir resources\stx\libwidg
+
+resources\stx\NUL: resources\NUL
+	mkdir resources\stx
+
+resources\NUL:
+	mkdir resources
+
+bitmaps\NUL:
+	mkdir bitmaps
+
+doc\NUL:
+	mkdir doc
+
+
+
+
+
+
+libstx_libbasic.dll: ..\..\..\libbasic\$(OBJDIR)\libstx_libbasic.dll
+	copy ..\..\..\libbasic\$(OBJDIR)\libstx_libbasic.dll *.*
+
+..\..\..\libbasic\$(OBJDIR)\libstx_libbasic.dll: $(FORCE)
+	pushd ..\..\..\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+libstx_libbasic2.dll: ..\..\..\libbasic2\$(OBJDIR)\libstx_libbasic2.dll
+	copy ..\..\..\libbasic2\$(OBJDIR)\libstx_libbasic2.dll *.*
+
+..\..\..\libbasic2\$(OBJDIR)\libstx_libbasic2.dll: $(FORCE)
+	pushd ..\..\..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+libstx_libcomp.dll: ..\..\..\libcomp\$(OBJDIR)\libstx_libcomp.dll
+	copy ..\..\..\libcomp\$(OBJDIR)\libstx_libcomp.dll *.*
+
+..\..\..\libcomp\$(OBJDIR)\libstx_libcomp.dll: $(FORCE)
+	pushd ..\..\..\libcomp & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+libstx_libbasic3.dll: ..\..\..\libbasic3\$(OBJDIR)\libstx_libbasic3.dll
+	copy ..\..\..\libbasic3\$(OBJDIR)\libstx_libbasic3.dll *.*
+
+..\..\..\libbasic3\$(OBJDIR)\libstx_libbasic3.dll: $(FORCE)
+	pushd ..\..\..\libbasic3 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+libstx_libview.dll: ..\..\..\libview\$(OBJDIR)\libstx_libview.dll
+	copy ..\..\..\libview\$(OBJDIR)\libstx_libview.dll *.*
+
+..\..\..\libview\$(OBJDIR)\libstx_libview.dll: $(FORCE)
+	pushd ..\..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+libstx_libui.dll: ..\..\..\libui\$(OBJDIR)\libstx_libui.dll
+	copy ..\..\..\libui\$(OBJDIR)\libstx_libui.dll *.*
+
+..\..\..\libui\$(OBJDIR)\libstx_libui.dll: $(FORCE)
+	pushd ..\..\..\libui & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+libstx_libview2.dll: ..\..\..\libview2\$(OBJDIR)\libstx_libview2.dll
+	copy ..\..\..\libview2\$(OBJDIR)\libstx_libview2.dll *.*
+
+..\..\..\libview2\$(OBJDIR)\libstx_libview2.dll: $(FORCE)
+	pushd ..\..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+libstx_goodies_sunit.dll: ..\..\..\goodies\sunit\$(OBJDIR)\libstx_goodies_sunit.dll
+	copy ..\..\..\goodies\sunit\$(OBJDIR)\libstx_goodies_sunit.dll *.*
+
+..\..\..\goodies\sunit\$(OBJDIR)\libstx_goodies_sunit.dll: $(FORCE)
+	pushd ..\..\..\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+libstx_libwidg.dll: ..\..\..\libwidg\$(OBJDIR)\libstx_libwidg.dll
+	copy ..\..\..\libwidg\$(OBJDIR)\libstx_libwidg.dll *.*
+
+..\..\..\libwidg\$(OBJDIR)\libstx_libwidg.dll: $(FORCE)
+	pushd ..\..\..\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+libstx_libhtml.dll: ..\..\..\libhtml\$(OBJDIR)\libstx_libhtml.dll
+	copy ..\..\..\libhtml\$(OBJDIR)\libstx_libhtml.dll *.*
+
+..\..\..\libhtml\$(OBJDIR)\libstx_libhtml.dll: $(FORCE)
+	pushd ..\..\..\libhtml & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+libstx_libwidg2.dll: ..\..\..\libwidg2\$(OBJDIR)\libstx_libwidg2.dll
+	copy ..\..\..\libwidg2\$(OBJDIR)\libstx_libwidg2.dll *.*
+
+..\..\..\libwidg2\$(OBJDIR)\libstx_libwidg2.dll: $(FORCE)
+	pushd ..\..\..\libwidg2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+libstx_libtool.dll: ..\..\..\libtool\$(OBJDIR)\libstx_libtool.dll
+	copy ..\..\..\libtool\$(OBJDIR)\libstx_libtool.dll *.*
+
+..\..\..\libtool\$(OBJDIR)\libstx_libtool.dll: $(FORCE)
+	pushd ..\..\..\libtool & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+libstx_libjava.dll: ..\..\$(OBJDIR)\libstx_libjava.dll
+	copy ..\..\$(OBJDIR)\libstx_libjava.dll *.*
+
+..\..\$(OBJDIR)\libstx_libjava.dll: $(FORCE)
+	pushd ..\.. & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+      
+
+
+sources\NUL: 
+	mkdir sources
+
+show:
+	@echo LFLAGS= $(LFLAGS)
+	@echo ALLOBJ= $(ALLOBJ)
+	@echo PROJECT= $(PROJECT)
+	@echo APP_IMPORTLIBS= $(APP_IMPORTLIBS)
+	@echo ALLLIB= $(ALLLIB)
+	@echo DEFFILE= $(DEFFILE)
+	@echo ALLRES= $(ALLRES)
+
+!ifdef USEBC
+
+$(PROJECT_CONSOLE): $(ALLOBJFILES) $(OBJS) $(RESFILES) $(DEFFILE) $(LIBFILES)
+	$(APP_LINKER) $(LFLAGS) $(LFLAGS_APPTYPE) $(CRT_STARTUP) $(ALLOBJ), $(PROJECT_CONSOLE),, $(ALLLIB), $(DEFFILE), $(RESFILES)
+
+$(PROJECT_NOCONSOLE): $(ALLOBJFILES) $(OBJS) $(RESFILES) $(DEFFILE) $(LIBFILES)
+	$(APP_LINKER) $(LFLAGS) $(LFLAGS_APPTYPE) $(CRT_STARTUP) $(ALLOBJ), $(PROJECT_NOCONSOLE),, $(ALLLIB), $(DEFFILE), $(RESFILES)
+
+!else
+! ifdef USEVC
+
+$(PROJECT_CONSOLE): $(ALLOBJFILES) $(OBJS) $(RESFILES) $(DEFFILE) $(LIBFILES)
+	$(APP_LINKER) $(LFLAGS) $(LFLAGS_APPTYPE) $(CRT_STARTUP) $(ALLOBJ) /OUT:"$(PROJECT_CONSOLE)" \
+	    /MANIFEST /MANIFESTFILE:"$(PROJECT_CONSOLE).manifest" \
+	    /PDB:"$(PROJECT_CONSOLE).pdb" \
+	    /SUBSYSTEM:CONSOLE $(ALLLIB) $(RESFILES)
+
+$(PROJECT_NOCONSOLE): $(ALLOBJFILES) $(OBJS) $(RESFILES) $(DEFFILE) $(LIBFILES)
+	$(APP_LINKER) $(LFLAGS) $(LFLAGS_APPTYPE) $(CRT_STARTUP) $(ALLOBJ) /OUT:"$(PROJECT_NOCONSOLE)" \
+	    /MANIFEST /MANIFESTFILE:"$(PROJECT_NOCONSOLE).manifest" \
+	    /PDB:"$(PROJECT_NOCONSOLE).pdb" \
+	    /SUBSYSTEM:WINDOWS $(ALLLIB) $(RESFILES)
+
+! else
+!  ifdef USELCC
+
+$(PROJECT_CONSOLE): $(ALLOBJFILES) $(OBJS) $(RESFILES) $(DEFFILE) $(LIBFILES)
+	$(APP_LINKER) -subsystem console $(LFLAGS) $(LFLAGS_APPTYPE) $(CRT_STARTUP) $(ALLOBJ) -o "$(PROJECT_CONSOLE)" $(ALLLIB) $(RESFILES)
+
+$(PROJECT_NOCONSOLE): $(ALLOBJFILES) $(OBJS) $(RESFILES) $(DEFFILE) $(LIBFILES)
+	$(APP_LINKER) -subsystem windows $(LFLAGS) $(LFLAGS_APPTYPE) $(CRT_STARTUP) $(ALLOBJ) -o "$(PROJECT_NOCONSOLE)" $(ALLLIB) $(RESFILES)
+
+!  else
+!   ifdef USETCC
+
+$(PROJECT_CONSOLE): $(ALLOBJFILES) $(OBJS) $(RESFILES) $(DEFFILE) $(LIBFILES)
+	$(APP_LINKER) $(LFLAGS) $(LFLAGS_APPTYPE) $(CRT_STARTUP) $(ALLOBJ) -o "$(PROJECT_CONSOLE)" $(ALLLIB) $(RESFILES)
+
+$(PROJECT_NOCONSOLE): $(ALLOBJFILES) $(OBJS) $(RESFILES) $(DEFFILE) $(LIBFILES)
+	$(APP_LINKER) $(LFLAGS) $(LFLAGS_APPTYPE) $(CRT_STARTUP) $(ALLOBJ) -o "$(PROJECT_NOCONSOLE)" $(ALLLIB) $(RESFILES)
+
+!   else
+!    if defined(USEMINGW32) || defined(USEMINGW64)
+
+$(PROJECT_CONSOLE): $(ALLOBJFILES) $(OBJS) $(RESFILES) $(DEFFILE) $(LIBFILES) show
+	$(APP_LINKER) $(LFLAGS) $(LFLAGS_APPTYPE) $(CRT_STARTUP) $(ALLOBJ) -o "$(PROJECT_CONSOLE)" $(ALLLIB) $(RESFILES)
+
+$(PROJECT_NOCONSOLE): $(ALLOBJFILES) $(OBJS) $(RESFILES) $(DEFFILE) $(LIBFILES) show
+	$(APP_LINKER) $(LFLAGS) $(LFLAGS_APPTYPE) $(CRT_STARTUP) $(ALLOBJ) -o "$(PROJECT_NOCONSOLE)" $(ALLLIB) $(APP_IMPORTLIBS) $(RESFILES)
+
+!    else
+error error error
+!    endif
+!   endif
+!  endif
+! endif
+!endif
+
+!INCLUDE $(TOP)\rules\stdRules_bc
+
+#
+# additional rules
+#
+chatWin.$(RES): chatWin.rc chat.ico
+
+main.$(O): buildDate.h main.c bc.mak
+
+main.c: $(TOP)\librun\main.c
+	copy $(TOP)\librun\main.c main.c
+
+# now in stdRules.
+#buildDate.h: $(GENDATE_UTILITIY)
+#        $(GENDATE_UTILITIY)
+
+librun.dll: $(TOP)\librun\$(OBJDIR_LIBRUN)\librun.dll
+	copy $(TOP)\librun\$(OBJDIR_LIBRUN)\librun.dll librun.dll
+
+#cs3245.dll
+$(RT_DLL): $(TOP)\support\win32\borland\$(RT_DLL)
+	copy $(TOP)\support\win32\borland\$(RT_DLL) $(RT_DLL)
+
+X11.dll: $(TOP)\support\win32\X11.dll
+	copy $(TOP)\support\win32\X11.dll X11.dll
+
+Xext.dll: $(TOP)\support\win32\Xext.dll
+	copy $(TOP)\support\win32\Xext.dll Xext.dll
+
+symbols.stc: $(TOP)\include\symbols.stc
+	copy $(TOP)\include\symbols.stc symbols.stc
+
+
+java: ant
+
+ant:
+	ant -f java\build.xml
+
+antIfPossible:
+	-ant -f java\build.xml
+
+full::  ant
+
+$(ZLIB):
+	cd $(ZLIB_DIR)
+	$(MAKE) $(MAKE_ZLIB_ARG) $(ZLIB)
+	cd ..\..\libjava
+
+$(BZ2LIB):
+	cd $(BZ2LIB_DIR)
+	$(MAKE) $(MAKE_BZ2LIB_ARG) bz2.lib
+	cd ..\..\libjava
+
+support\fdlibm\libfdm.lib:
+	cd support\fdlibm
+	$(MAKE) -f Makefile.bcc
+	cd ..\..
+
+
+
+
+
+clean::
+	-del genDate.exe genDate.com
+	-del c0x32.dll
+	-del c0x32.lib
+	-del buildDate.h
+	-del $(PROJECT)
+	-del install_chat.exe
+	-del stx.lib
+	-del stx.dll
+	-del $(RT_DLL)
+	-del $(REQUIRED_FILES)
+	-del main.c
+	-del *.log
+	-del *.$(RES)
+	-rmdir /S /Q resources
+	-rmdir /S /Q $(OBJDIR)
+
+clobber:: clean
+	-del *.dll *.exe *.com
+
+postBuildCleanup::
+	@rem  stupid win-make does not allow empty
+
+# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
+$(OUTDIR)Chat.$(O) Chat.$(H): Chat.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)ChatStart.$(O) ChatStart.$(H): ChatStart.st $(INCLUDE_TOP)\stx\libbasic\StandaloneStartup.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)ChatWindow.$(O) ChatWindow.$(H): ChatWindow.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)stx_libjava_examples_chat.$(O) stx_libjava_examples_chat.$(H): stx_libjava_examples_chat.st $(INCLUDE_TOP)\stx\libbasic\ApplicationDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+
+# ENDMAKEDEPEND --- do not remove this line
+
+# **Must be at end**
+
+# Enforce recompilation of package definition class if Mercurial working
+# copy state changes. Together with --guessVersion it ensures that package
+# definition class always contains correct binary revision string.
+!IFDEF HGROOT
+$(OUTDIR)stx_libjava_examples_chat.$(O): $(HGROOT)\.hg\dirstate
+!ENDIF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/bmake.bat	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,12 @@
+@REM -------
+@REM make using Borland bcc32
+@REM type bmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+make.exe -N -f bc.mak  %DEFINES% %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/builder/baseline.rbspec	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,38 @@
+
+# generated from project definition
+
+# load package dependencies
+load 'package.deps.rake'
+
+# kludge: clear some invalid dependencies of libwidg
+# (should be fixed in baseline)
+clear "stx:libwidg" => "stx:libui"
+clear "stx:libwidg2" => "stx:libui"
+
+project :'chat:baseline' do
+  # preamble
+  
+  # --------
+
+  package "stx:libbasic"
+  package "stx:libbasic2"
+  package "stx:libcomp"
+  package "stx:libbasic3"
+  package "stx:libview"
+  package "stx:libui"
+  package "stx:libview2"
+  package "stx:goodies/sunit"
+  package "stx:libwidg"
+  package "stx:libhtml"
+  package "stx:libwidg2"
+  package "stx:libtool"
+  package "stx:libjava"
+
+
+  application "stx:libjava/examples/chat"
+
+  # postamble
+  
+  # ---------
+
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/builder/package.deps.rake	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,82 @@
+
+# Package dependencies.
+# Automatically generated by project defintion.
+
+task "stx:libtool" => "stx:libbasic"
+task "stx:libtool" => "stx:libbasic2"
+task "stx:libtool" => "stx:libbasic3"
+task "stx:libtool" => "stx:libcomp"
+task "stx:libtool" => "stx:libui"
+task "stx:libtool" => "stx:libview"
+task "stx:libtool" => "stx:libview2"
+task "stx:libtool" => "stx:libwidg"
+task "stx:libtool" => "stx:libwidg2"
+task "stx:libtool" => "stx:libwidg2"
+task "stx:libtool" => "stx:libwidg2"
+task "stx:libtool" => "stx:libwidg2"
+
+task "stx:libcomp" => "stx:libbasic"
+
+task "stx:libbasic3" => "stx:libbasic"
+task "stx:libbasic3" => "stx:libbasic2"
+
+task "stx:libwidg2" => "stx:libbasic"
+task "stx:libwidg2" => "stx:libbasic2"
+task "stx:libwidg2" => "stx:libview"
+task "stx:libwidg2" => "stx:libview2"
+task "stx:libwidg2" => "stx:libwidg"
+task "stx:libwidg2" => "stx:libui"
+
+task "stx:libhtml" => "stx:libbasic"
+task "stx:libhtml" => "stx:libview"
+task "stx:libhtml" => "stx:libwidg"
+
+task "stx:libbasic2" => "stx:libbasic"
+
+
+task "stx:libview2" => "stx:libbasic"
+task "stx:libview2" => "stx:libbasic2"
+task "stx:libview2" => "stx:libview"
+task "stx:libview2" => "stx:libui"
+
+task "stx:goodies/sunit" => "stx:libbasic"
+task "stx:goodies/sunit" => "stx:libview2"
+task "stx:goodies/sunit" => "stx:libbasic2"
+task "stx:goodies/sunit" => "stx:libview"
+
+task "stx:libjava" => "stx:goodies/sunit"
+task "stx:libjava" => "stx:libbasic"
+task "stx:libjava" => "stx:libbasic2"
+task "stx:libjava" => "stx:libbasic3"
+task "stx:libjava" => "stx:libview"
+task "stx:libjava" => "stx:libcomp"
+task "stx:libjava" => "stx:libhtml"
+task "stx:libjava" => "stx:libtool"
+task "stx:libjava" => "stx:libview2"
+task "stx:libjava" => "stx:libwidg"
+task "stx:libjava" => "stx:libwidg2"
+
+task "stx:libwidg" => "stx:libbasic"
+task "stx:libwidg" => "stx:libview"
+task "stx:libwidg" => "stx:libview2"
+task "stx:libwidg" => "stx:libbasic2"
+task "stx:libwidg" => "stx:libbasic3"
+task "stx:libwidg" => "stx:libui"
+
+task "stx:libui" => "stx:libbasic"
+task "stx:libui" => "stx:libview"
+
+task "stx:libview" => "stx:libbasic"
+task "stx:libview" => "stx:libbasic2"
+
+task "stx:libjava/examples/chat" => "stx:libbasic"
+task "stx:libjava/examples/chat" => "stx:libview2"
+task "stx:libjava/examples/chat" => "stx:libbasic2"
+task "stx:libjava/examples/chat" => "stx:libjava"
+task "stx:libjava/examples/chat" => "stx:libcomp"
+task "stx:libjava/examples/chat" => "stx:libview"
+task "stx:libjava/examples/chat" => "stx:libwidg"
+task "stx:libjava/examples/chat" => "stx:libwidg2"
+task "stx:libjava/examples/chat" => "stx:libui"
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/chat.nsi	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,206 @@
+; $Header$
+; Script generated by ProjectDefinition.
+
+!define PRODUCT_NAME "Chat"
+!define PRODUCT_FILENAME "Chat"
+!define PRODUCT_VERSION "6.2.3.0"
+!define PRODUCT_PUBLISHER "eXept Software AG"
+!define PRODUCT_WEB_SITE "http://www.exept.de"
+!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_FILENAME}"
+!define PRODUCT_UNINST_ROOT_KEY "HKLM"
+
+!define STX_ROOT "..\..\..\.."
+
+SetCompressor /solid lzma
+
+!include "MUI2.nsh"
+!include "x64.nsh"
+
+; MUI Settings
+
+!define MUI_WELCOMEPAGE_TITLE_3LINES
+!define MUI_ABORTWARNING
+!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
+;; !define MUI_ICON "nil.ico"
+!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
+;; !define MUI_UNICON "nil.ico"
+
+; Language Selection Dialog Settings
+!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
+!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
+!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
+
+; Welcome page
+!insertmacro MUI_PAGE_WELCOME
+; License page
+; !define MUI_LICENSEPAGE_CHECKBOX
+
+
+!insertmacro MUI_PAGE_COMPONENTS
+; Directory page
+!insertmacro MUI_PAGE_DIRECTORY
+; Instfiles page
+!insertmacro MUI_PAGE_INSTFILES
+; Finish page
+!insertmacro MUI_PAGE_FINISH
+
+; Uninstaller pages
+!insertmacro MUI_UNPAGE_INSTFILES
+
+; Language files
+!insertmacro MUI_LANGUAGE "English"
+!insertmacro MUI_LANGUAGE "German"
+
+; MUI end ------
+
+
+
+Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
+VIProductVersion "${PRODUCT_VERSION}.0"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${PRODUCT_NAME}"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "${PRODUCT_PUBLISHER}"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "6.2.32767.32767"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${PRODUCT_NAME} Installer"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "${PRODUCT_VERSION}"
+VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "Copyright Jan Vrany 2013"
+
+
+OutFile "ChatSetup.exe"
+InstallDir "$PROGRAMFILES\chat"
+ShowInstDetails show
+ShowUnInstDetails show
+
+Function .onInit
+  !insertmacro MUI_LANGDLL_DISPLAY
+FunctionEnd
+
+InstType Full
+InstType Partial
+
+Section "Programme" Section1
+  SectionIn 1 2
+  SetOutPath "$INSTDIR\bin"
+  SetOverwrite ifnewer
+  File "chat.exe"
+  File "*.dll"
+  File "symbols.stc"
+  File "*.stx"
+  File "*.rc"
+  File /r /x CVS /x ".*" resources
+
+
+
+
+
+  WriteRegStr HKCR "Stx.Chat.1" "" "Chat File"
+  WriteRegStr HKCR "Stx.Chat.1\DefaultIcon" "" '$INSTDIR\bin\chat.exe,0'
+  WriteRegStr HKCR "Stx.Chat.1\Shell\open" "" $(appOpen)
+  WriteRegStr HKCR "Stx.Chat.1\Shell\open\command" "" '"$INSTDIR\bin\chat.exe" -- "%1"'
+SectionEnd
+
+;; Section "Online-Documentation for Chat" Section2
+;;   SectionIn 1
+;;   SetOutPath "$INSTDIR\doc"
+;;   SetOverwrite ifnewer
+;;   File /r /x CVS "${STX_ROOT}\stx\chat\doc\*"
+;; SectionEnd
+
+;; Section "Chat Libraries and Demos" Section3
+;;   SectionIn 1
+;;   SetOutPath "$INSTDIR\lib"
+;;   SetOverwrite ifnewer
+;; ;   File /r /x CVS "${STX_ROOT}\stx\chat\examples\*"
+;; SectionEnd
+;; 
+;; Section "Chat Reports and Printing" Section4
+;;   SectionIn 1
+;;   SetOutPath "$INSTDIR\reportGenerator"
+;;   SetOverwrite ifnewer
+;; ;  File /r /x CVS "..\reportGenerator\java" "..\reportGenerator\rules" "..\reportGenerator\*.xml" "..\reportGenerator\*.xslt" "..\reportGenerator\CloseApp.exe" "..\reportGenerator\expecco.jpg"
+;; SectionEnd
+
+
+
+
+
+
+
+
+Section -AdditionalIcons
+  SetOutPath "$INSTDIR\bin"
+  WriteIniStr "$INSTDIR\${PRODUCT_FILENAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
+  CreateDirectory "$SMPROGRAMS\${PRODUCT_FILENAME}"
+  CreateShortCut "$SMPROGRAMS\${PRODUCT_FILENAME}\chat.lnk" "$INSTDIR\bin\chat.exe"
+  CreateShortCut "$DESKTOP\chat.lnk" "$INSTDIR\bin\chat.exe"
+  CreateShortCut "$SMPROGRAMS\${PRODUCT_FILENAME}\Website.lnk" "$INSTDIR\${PRODUCT_FILENAME}.url"
+  CreateShortCut "$SMPROGRAMS\${PRODUCT_FILENAME}\Uninstall.lnk" "$INSTDIR\uninst.exe"
+SectionEnd
+
+Section -Post
+  WriteUninstaller "$INSTDIR\uninst.exe"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
+SectionEnd
+
+LangString appOpen ${LANG_GERMAN}  "Mit Chat öffnen"
+LangString appOpen ${LANG_ENGLISH} "Open with Chat"
+
+LangString DESC_Section1 ${LANG_ENGLISH} "Program components of Chat"
+LangString DESC_Section1 ${LANG_GERMAN}  "Alle Programmkomponenten von Chat"
+;; LangString DESC_Section2 ${LANG_ENGLISH} "Online-Documentation of Chat"
+;; LangString DESC_Section2 ${LANG_GERMAN}  "Online-Dokumentation zu Chat"
+;; LangString DESC_Section3 ${LANG_ENGLISH} "Libraries and Demo Projects"
+;; LangString DESC_Section3 ${LANG_GERMAN}  "Bibliotheken und Beispielprojekte"
+;; LangString DESC_Section4 ${LANG_ENGLISH} "Logfile Printing and Report Generation"
+;; LangString DESC_Section4 ${LANG_GERMAN}  "Drucken und Report-Generierung aus Log-Dateien"
+;; LangString DESC_Section3 ${LANG_ENGLISH} "Sources of ST/X (Base-System)"
+;; LangString DESC_Section3 ${LANG_GERMAN}  "Quellcode von ST/X (Basis-System)"
+;; LangString DESC_Section4 ${LANG_ENGLISH} "Sources of Chat"
+;; LangString DESC_Section4 ${LANG_GERMAN}  "Quellcode von Chat"
+
+
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+  !insertmacro MUI_DESCRIPTION_TEXT ${Section1} $(DESC_Section1)
+;;   !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
+;;  !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3)
+;;  !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4)
+
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+
+
+Function un.onUninstSuccess
+  HideWindow
+  MessageBox MB_ICONINFORMATION|MB_OK "Chat wurde erfolgreich deinstalliert"
+FunctionEnd
+
+Function un.onInit
+!insertmacro MUI_UNGETLANGUAGE
+  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Möchten Sie Chat und alle seine Komponenten deinstallieren?" IDYES +2
+  Abort
+FunctionEnd
+
+Section Uninstall
+  Delete "$INSTDIR\${PRODUCT_FILENAME}.url"
+  Delete "$INSTDIR\uninst.exe"
+
+    Delete "$INSTDIR\*"
+    RMDir /r "$INSTDIR"
+
+  Delete "$SMPROGRAMS\${PRODUCT_FILENAME}\Uninstall.lnk"
+  Delete "$SMPROGRAMS\${PRODUCT_FILENAME}\Website.lnk"
+  Delete "$SMPROGRAMS\${PRODUCT_FILENAME}\chat.lnk"
+  Delete "$DESKTOP\chat.lnk"
+
+  RMDir "$SMPROGRAMS\${PRODUCT_FILENAME}"
+
+  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
+  DeleteRegKey HKCR "Stx.Chat.1"
+
+
+
+  SetAutoClose true
+SectionEnd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/chatWinRC.rc	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,49 @@
+//
+// DO NOT EDIT 
+// automagically generated from the projectDefinition: stx_libjava_examples_chat.
+//
+#define IDR_MAINFRAME   128
+#define IDR_SPLASH      129
+
+#if (__BORLANDC__)
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#endif
+
+#pragma code_page(1252)
+
+
+
+VS_VERSION_INFO VERSIONINFO
+  FILEVERSION     6,2,32767,32767
+  PRODUCTVERSION  6,2,3,0
+#if (__BORLANDC__)
+  FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
+  FILEFLAGS       VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
+  FILEOS          VOS_NT_WINDOWS32
+  FILETYPE        VFT_DLL
+  FILESUBTYPE     VS_USER_DEFINED
+#else
+  FILEFLAGSMASK 0x3fL
+#endif
+
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    BLOCK "040904E4"
+    BEGIN
+      VALUE "CompanyName", "SWING Research Group\0"
+      VALUE "FileDescription", "Very Simple Jabber Client\0"
+      VALUE "FileVersion", "6.2.32767.32767\0"
+      VALUE "InternalName", "stx:libjava/examples/chat\0"
+      VALUE "LegalCopyright", "Copyright Jan Vrany 2013\0"
+      VALUE "ProductName", "Chat\0"
+      VALUE "ProductVersion", "6.2.3.0\0"
+      VALUE "ProductDate", "Mon, 23 Sep 2013 23:11:09 GMT\0"
+    END
+  END
+
+  BLOCK "VarFileInfo"
+  BEGIN                               //  Language   |    Translation
+    VALUE "Translation", 0x409, 0x4E4 // U.S. English, Windows Multilingual
+  END
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/lccmake.bat	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,8 @@
+@REM -------
+@REM make using lcc compiler
+@REM type lccmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+make.exe -N -f bc.mak -DUSELCC=1 %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/mingwmake.bat	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,16 @@
+@REM -------
+@REM make using mingw gnu compiler
+@REM type mingwmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+
+@pushd ..\..\..\rules
+@call find_mingw.bat
+@popd
+make.exe -N -f bc.mak %DEFINES% %USEMINGW_ARG% %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/modules.c	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,26 @@
+/* $Header$
+ *
+ * DO NOT EDIT 
+ * automagically generated from the projectDefinition: stx_libjava_examples_chat.
+ *
+ * Warning: once you modify this file, do not rerun
+ * stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+ */
+typedef void (*vf)();
+
+extern void _Chat_Init();
+extern void _ChatStart_Init();
+extern void _ChatWindow_Init();
+extern void _stx_137libjava_137examples_137chat_Init();
+
+
+static vf modules[] = {
+    _Chat_Init,
+_ChatStart_Init,
+_ChatWindow_Init,
+_stx_137libjava_137examples_137chat_Init,
+
+    (vf)0
+};
+
+vf *__modules__ = modules;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/modules.stx	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,31 @@
+# $Header$
+#
+# DO NOT EDIT 
+# automagically generated from the projectDefinition: stx_libjava_examples_chat.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# This file is (currently) only used with win-95 / win-NT versions of STX.
+# It lists the dll's which are to be loaded at startup time.
+# Notice, lines starting with a "#" are comments.
+# Lines starting with a "*" are treated as comments by the VM, but are usually loaded
+# by the application at the very beginning.
+#
+# All classes loaded at startup time will be present as precompiled classes.
+# Others might be autoloaded or loaded explicit using "Smalltalk loadPackage:xxx".
+#
+libstx_libbasic
+libstx_libbasic2
+libstx_libcomp
+libstx_libbasic3
+libstx_libview
+libstx_libui
+libstx_libview2
+libstx_goodies_sunit
+libstx_libwidg
+libstx_libhtml
+libstx_libwidg2
+libstx_libtool
+libstx_libjava
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/stx_libjava_examples_chat.st	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,243 @@
+"{ Package: 'stx:libjava/examples/chat' }"
+
+ApplicationDefinition subclass:#stx_libjava_examples_chat
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'* Projects & Packages *'
+!
+
+
+!stx_libjava_examples_chat class methodsFor:'description'!
+
+excludedFromPreRequisites
+    "list all packages which should be ignored in the automatic
+     preRequisites scan. See #preRequisites for more."
+
+    ^ #(
+    )
+!
+
+isGUIApplication
+    "return true, if this is a GUI application.
+     (these need more libraries and use a different startup procedure)"
+
+    ^ true
+!
+
+mandatoryPreRequisites
+    "list all required mandatory packages.
+     Packages are mandatory, if they contain superclasses of the package's classes
+     or classes which are extended by this package.
+     This list can be maintained manually or (better) generated and
+     updated by scanning the superclass hierarchies
+     (the browser has a menu function for that)"
+
+    ^ #(
+        #'stx:libbasic'    "ApplicationDefinition - superclass of stx_libjava_examples_chat "
+        #'stx:libview2'    "ApplicationModel - superclass of Chat "
+    )
+!
+
+referencedPreRequisites
+    "list all packages containing classes referenced by the packages's members.
+     This list can be maintained manually or (better) generated and
+     updated by looking for global variable accesses
+     (the browser has a menu function for that)
+     However, often too much is found, and you may want to explicitely
+     exclude individual packages in the #excludedFromPreRequisites method."
+
+    ^ #(
+        #'stx:libbasic2'    "UUID - referenced by ChatStart class>>applicationUUID "
+        #'stx:libjava'    "Java - referenced by ChatStart class>>realMain: "
+    )
+!
+
+subProjects
+    "list packages which are known as subprojects.
+     This method is generated automatically; however, when generating automatically,
+     packages are only added - never removed, unless listed in #excludedFromSubProjects."
+
+    ^ #(
+)
+! !
+
+!stx_libjava_examples_chat class methodsFor:'description - compilation'!
+
+additionalRules_bc_dot_mak
+    ^ '
+java: ant
+
+ant:
+        ant -f java\build.xml
+
+antIfPossible:
+        -ant -f java\build.xml
+
+full::  ant
+
+$(ZLIB):
+        cd $(ZLIB_DIR)
+        $(MAKE) $(MAKE_ZLIB_ARG) $(ZLIB)
+        cd ..\..\libjava
+
+$(BZ2LIB):
+        cd $(BZ2LIB_DIR)
+        $(MAKE) $(MAKE_BZ2LIB_ARG) bz2.lib
+        cd ..\..\libjava
+
+support\fdlibm\libfdm.lib:
+        cd support\fdlibm
+        $(MAKE) -f Makefile.bcc
+        cd ..\..
+
+'
+
+    "Modified: / 26-02-2013 / 16:51:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+additionalRules_make_dot_proto
+    ^ '
+java: ant
+
+ant:
+        ant -f java/build.xml
+
+antIfPossible:
+        -ant -f java/build.xml
+
+full::  ant
+
+zlib:
+        cd $(ZLIB_DIR); $(MAKE) $(MAKE_ZLIB_ARG)
+
+support/fdlibm/libfdm.a:
+        $(MAKE) CCCONFOPT="$(CCCONFOPT)" -C support/fdlibm
+
+'
+
+    "Modified: / 26-02-2013 / 16:51:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+additionalTargets_bc_dot_mak
+
+    ^ '$(ZLIB) support\fdlibm\libfdm.lib antIfPossible'
+
+    "Modified: / 15-11-2012 / 23:20:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+additionalTargets_make_dot_proto
+
+    ^ ' zlib support/fdlibm/libfdm.a antIfPossible'
+
+    "Created: / 05-09-2006 / 16:05:12 / cg"
+    "Modified: / 15-11-2012 / 23:20:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!stx_libjava_examples_chat class methodsFor:'description - contents'!
+
+classNamesAndAttributes
+    "lists the classes which are to be included in the project.
+     Each entry in the list may be: a single class-name (symbol),
+     or an array-literal consisting of class name and attributes.
+     Attributes are: #autoload or #<os> where os is one of win32, unix,..."
+
+    ^ #(
+        "<className> or (<className> attributes...) in load order"
+        Chat
+        ChatStart
+        ChatWindow
+        #'stx_libjava_examples_chat'
+    )
+!
+
+extensionMethodNames
+    "lists the extension methods which are to be included in the project.
+     Entries are 2-element array literals, consisting of class-name and selector."
+
+    ^ #(
+    )
+! !
+
+!stx_libjava_examples_chat class methodsFor:'description - java'!
+
+javaBundle
+
+    ^JavaCodeBundle standardPackageBundleFor: self package
+
+    "
+    self javaBundle
+    "
+
+    "Created: / 15-01-2013 / 17:35:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 24-09-2013 / 00:00:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!stx_libjava_examples_chat class methodsFor:'description - project information'!
+
+applicationIconFileName
+    "Return the name (without suffix) of an icon-file (the app's icon); will be included in the rc-resource file"
+
+    ^ nil
+    "/ ^ self applicationName
+!
+
+companyName
+    "Return a companyname which will appear in <lib>.rc"
+
+    ^ 'SWING Research Group'
+
+    "Modified: / 23-09-2013 / 22:30:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+description
+    "Return a description string which will appear in vc.def / bc.def"
+
+    ^ 'Very Simple Jabber Client'
+
+    "Modified: / 23-09-2013 / 22:30:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+legalCopyright
+    "Return a copyright string which will appear in <lib>.rc"
+
+    ^ 'Copyright Jan Vrany 2013'
+
+    "Modified: / 23-09-2013 / 22:29:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+productInstallDirBaseName
+    "Returns a default installDir which will appear in <app>.nsi.
+     This is usually not the one you want to keep"
+
+    ^ (self package asCollectionOfSubstringsSeparatedByAny:':/') last
+!
+
+productName
+    "Return a product name which will appear in <lib>.rc"
+
+    ^ 'Chat'
+
+    "Modified: / 23-09-2013 / 22:30:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!stx_libjava_examples_chat class methodsFor:'description - startup'!
+
+startupClassName
+    "the class that starts the show in its startupSelector method"
+
+    ^ 'ChatStart'
+!
+
+startupSelector
+    "the message that is sent to the startupClass to start the show"
+
+    ^ #'start'        
+! !
+
+!stx_libjava_examples_chat class methodsFor:'documentation'!
+
+version_HG
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/chat/vcmake.bat	Tue Sep 24 00:11:53 2013 +0100
@@ -0,0 +1,20 @@
+@REM -------
+@REM make using Microsoft Visual C compiler
+@REM type vcmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+
+@if not defined VSINSTALLDIR (
+    pushd ..\..\..\rules
+    call vcsetup.bat
+    popd
+)
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+make.exe -N -f bc.mak -DUSEVC=1 %DEFINES% %*
+
+
+
+