# HG changeset patch # User Claus Gittinger # Date 1000279465 -7200 # Node ID 859688212191fe78c98d97b396c0c0630b69e5eb # Parent 9ee01c93e441c952a4d98d35240f81c097345180 initial checkin diff -r 9ee01c93e441 -r 859688212191 WorkspaceApplication.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WorkspaceApplication.st Wed Sep 12 09:24:25 2001 +0200 @@ -0,0 +1,324 @@ +"{ Package: 'stx:libtool' }" + +ToolApplicationModel subclass:#WorkspaceApplication + instanceVariableNames:'' + classVariableNames:'' + poolDictionaries:'' + category:'Interface-Smalltalk' +! + + +!WorkspaceApplication 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:WorkspaceApplication andSelector:#windowSpec + WorkspaceApplication new openInterface:#windowSpec + WorkspaceApplication open + " + + + + ^ + #(#FullSpec + #name: #windowSpec + #window: + #(#WindowSpec + #label: 'Workspace' + #name: 'Workspace' + #min: #(#Point 10 10) + #max: #(#Point 1024 768) + #bounds: #(#Rectangle 170 332 602 573) + #menu: #mainMenu + ) + #component: + #(#SpecCollection + #collection: #( + #(#ArbitraryComponentSpec + #name: 'WorkspaceView' + #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) + #hasHorizontalScrollBar: true + #hasVerticalScrollBar: true + #miniScrollerVertical: false + #hasBorder: false + #component: #Workspace + ) + ) + + ) + ) +! ! + +!WorkspaceApplication 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:WorkspaceApplication andSelector:#mainMenu + (Menu new fromLiteralArrayEncoding:(WorkspaceApplication mainMenu)) startUp + " + + + + ^ + #(#Menu + #( + #(#MenuItem + #label: 'File' + #translateLabel: true + #submenu: + #(#Menu + #( + #(#MenuItem + #label: 'New' + #translateLabel: true + #value: #menuNew + #isVisible: false + ) + #(#MenuItem + #label: '-' + #isVisible: false + ) + #(#MenuItem + #label: 'Load File...' + #translateLabel: true + #value: #menuLoad + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Save As...' + #translateLabel: true + #value: #menuSaveAs + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Exit' + #translateLabel: true + #value: #closeRequest + ) + ) + nil + nil + ) + ) + #(#MenuItem + #label: 'Edit' + #translateLabel: true + #submenu: + #(#Menu + #( + #(#MenuItem + #label: 'Copy' + #translateLabel: true + #value: #copySelection + ) + #(#MenuItem + #label: 'Cut' + #translateLabel: true + #value: #cutSelection + ) + #(#MenuItem + #label: 'Paste' + #translateLabel: true + #value: #paste + ) + ) + nil + nil + ) + ) + #(#MenuItem + #label: 'Smalltalk' + #translateLabel: true + #submenu: + #(#Menu + #( + #(#MenuItem + #label: 'DoIt' + #translateLabel: true + #value: #doIt + ) + #(#MenuItem + #label: 'PrintIt' + #translateLabel: true + #value: #printIt + ) + #(#MenuItem + #label: 'InspectIt' + #translateLabel: true + #value: #inspectIt + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Browse' + #translateLabel: true + #value: #browseIt + ) + ) + nil + nil + ) + ) + #(#MenuItem + #label: 'Help' + #translateLabel: true + #startGroup: #right + #submenu: + #(#Menu + #( + #(#MenuItem + #label: 'Documentation' + #translateLabel: true + #value: #openDocumentation + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'About this Application' + #translateLabel: true + #value: #openAboutThisApplication + ) + ) + nil + nil + ) + ) + ) + nil + nil + ) +! ! + +!WorkspaceApplication methodsFor:'accessing'! + +workspaceView + ^ (builder componentAt:#WorkspaceView) +! ! + +!WorkspaceApplication methodsFor:'initialization & release'! + +closeRequest + (self askIfModified:'Close without saving ?' yesButton:'Close') ifFalse:[ + ^ self + ]. + + ^ super closeRequest +! + +postBuildWith:aBuilder + "This is a hook method generated by the Browser. + 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.)" + + "/ add any code here ... + + ^ super postBuildWith:aBuilder +! ! + +!WorkspaceApplication methodsFor:'menu actions'! + +browseIt + self workspaceView browseIt +! + +copySelection + self workspaceView copySelection +! + +cutSelection + self workspaceView cutSelection +! + +doIt + self workspaceView doIt +! + +inspectIt + self workspaceView inspectIt +! + +menuLoad + |file| + + (self askIfModified:'Text was modified. Load anyway ?' yesButton:'Load'). + file := Dialog requestFileName:'Load file:'. + file size > 0 ifTrue:[ + self workspaceView contents:file asFilename contentsOfEntireFile. + ] +! + +menuSaveAs + |file| + + (self askIfModified:'Text was modified. Save anyway ?' yesButton:'Load'). + file := Dialog requestFileName:'Save file:'. + file size > 0 ifTrue:[ + self workspaceView saveAs:file. + ] +! + +openDocumentation + "opens the documentation file" + + self openHTMLDocument: 'tools/misc/TOP.html#WORKSPACE' +! + +paste + self workspaceView paste +! + +printIt + self workspaceView printIt +! ! + +!WorkspaceApplication methodsFor:'private'! + +askIfModified:question yesButton:yesButtonText + "tell user, that code has been modified - let her confirm" + + |textView| + + textView := self workspaceView. + (textView modified not or:[textView contentsWasSaved]) ifTrue:[ + ^ true + ]. + (Dialog + confirm:(resources string:question) withCRs + yesLabel:(resources at:yesButtonText) + noLabel:(resources at:'Cancel')) + ifTrue:[ + "/ reset modified flag so question is asked only once + textView modified:false. + ^ true + ]. + ^ false + + "Modified: 2.10.1997 / 14:23:47 / stefan" +! ! + +!WorkspaceApplication class methodsFor:'documentation'! + +version + ^ '$Header: /cvs/stx/stx/libtool/WorkspaceApplication.st,v 1.1 2001-09-12 07:24:25 cg Exp $' +! !