FileDialog.st
changeset 3953 4fd0ed70cf36
parent 3944 572a808218eb
child 3956 617ef25f6d1e
--- a/FileDialog.st	Tue Oct 08 10:18:50 2002 +0200
+++ b/FileDialog.st	Tue Oct 08 10:20:23 2002 +0200
@@ -3,8 +3,8 @@
 SimpleDialog subclass:#FileDialog
 	instanceVariableNames:'aspects treeBrowser enableBack enableDirectoryUp enableForward
 		enableHome directory pattern filterHolder initialText
-		cancelLabelHolder okLabelHolder startFilename result filterField
-		filenameField viewFiles filenameLabelHolder'
+		doubleClickAction cancelLabelHolder okLabelHolder startFilename
+		result filterField filenameField viewFiles filenameLabelHolder'
 	classVariableNames:'LastFileSelectionDirectory'
 	poolDictionaries:''
 	category:'Interface-Tools-File'
@@ -98,7 +98,6 @@
         defaultFile := defaultNm asFilename.
     ].
     instance := self new.
-"/    defaultDir notNil ifTrue:[instance directory:(defaultDir asFilename)].
     defaultDir notNil ifTrue:[instance directory:defaultFile].
     instance startFilename:defaultFile.
     instance initialText:title.
@@ -106,6 +105,7 @@
     instance okLabelHolder value:okText.
     instance cancelLabelHolder value:abortText.
     instance viewFiles:false.
+    self setDoubleClickActionFor:instance.
 
     instance allButOpenInterface:#windowSpec.
     boxCreatedCallback notNil ifTrue:[boxCreatedCallback value:instance].
@@ -368,7 +368,7 @@
     instance okLabelHolder value:okText.
     instance cancelLabelHolder value:abortText.
     instance viewFiles:true.
-
+    self setDoubleClickActionFor:instance.
     instance allButOpenInterface:#windowSpec.
     boxCreatedCallback notNil ifTrue:[boxCreatedCallback value:instance].
     instance openWindowModal.
@@ -399,6 +399,19 @@
      if no explicit path is specified (see requestFileName:* methods)"
 
     LastFileSelectionDirectory := aDirectoryString
+!
+
+setDoubleClickActionFor:instance
+
+    instance doubleClickAction:[:anIndex|
+        | item |
+        item := instance treeBrowser fileList at:anIndex ifAbsent:nil.
+        item notNil ifTrue:[
+            ((instance viewFiles and:[item isDirectory not]) or:[instance viewFiles not]) ifTrue:[
+                instance doAccept.
+            ]
+        ]
+    ].
 ! !
 
 !FileDialog class methodsFor:'interface specs'!
@@ -619,6 +632,18 @@
     directory := something.
 !
 
+doubleClickAction
+    "return the value of the instance variable 'doubleClickAction' (automatically generated)"
+
+    ^ doubleClickAction
+!
+
+doubleClickAction:something
+    "set the value of the instance variable 'doubleClickAction' (automatically generated)"
+
+    doubleClickAction := something.
+!
+
 initialText
     "return the value of the instance variable 'initialText' (automatically generated)"
 
@@ -924,6 +949,7 @@
 
 "/     self windowGroup addPreEventHook:self.
     treeBrowser currentFileNameHolder addDependent:self.
+    treeBrowser doubleClickAction:(self doubleClickAction).
     treeBrowser enableBack addDependent:self.
     treeBrowser enableForward addDependent:self.
     treeBrowser enableHome addDependent:self.
@@ -1007,5 +1033,5 @@
 !FileDialog class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.6 2002-10-02 09:19:20 mb Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.7 2002-10-08 08:20:23 penk Exp $'
 ! !