FileDialog.st
changeset 4728 545cd2c65dfa
parent 4666 2775d69bc8be
child 4729 d2367ffbe952
equal deleted inserted replaced
4727:3e5f6ddd50d8 4728:545cd2c65dfa
     4 	instanceVariableNames:'aspects treeBrowser enableBack enableDirectoryUp enableForward
     4 	instanceVariableNames:'aspects treeBrowser enableBack enableDirectoryUp enableForward
     5 		enableHome directory pattern filterHolder initialText
     5 		enableHome directory pattern filterHolder initialText
     6 		doubleClickAction cancelLabelHolder okLabelHolder startFilename
     6 		doubleClickAction cancelLabelHolder okLabelHolder startFilename
     7 		result filterField filenameField viewFiles filenameLabelHolder
     7 		result filterField filenameField viewFiles filenameLabelHolder
     8 		asLoadDialog newDirectoryVisibilityHolder
     8 		asLoadDialog newDirectoryVisibilityHolder
     9 		appendButtonVisibleHolder multipleSelect appendWasPressed'
     9 		appendButtonVisibleHolder multipleSelect appendWasPressed
       
    10 		buttonPanelVisibleHolder'
    10 	classVariableNames:'LastFileSelectionDirectory'
    11 	classVariableNames:'LastFileSelectionDirectory'
    11 	poolDictionaries:''
    12 	poolDictionaries:''
    12 	category:'Interface-Tools-File'
    13 	category:'Interface-Tools-File'
    13 !
    14 !
    14 
    15 
   582           #bounds: #(#Rectangle 16 46 416 446)
   583           #bounds: #(#Rectangle 16 46 416 446)
   583         )
   584         )
   584         #component: 
   585         #component: 
   585        #(#SpecCollection
   586        #(#SpecCollection
   586           #collection: #(
   587           #collection: #(
   587            #(#MenuPanelSpec
   588            #(#ViewSpec
   588               #name: 'ToolBar1'
   589               #name: 'FilePart'
   589               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 30 0)
   590               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -40 1.0)
   590               #tabable: true
   591               #component: 
   591               #menu: #toolBarMenu
   592              #(#SpecCollection
   592               #textDefault: true
   593                 #collection: #(
   593             )
   594                  #(#MenuPanelSpec
   594            #(#SubCanvasSpec
   595                     #name: 'ToolBar1'
   595               #name: 'DirectoryTreeBrowser'
   596                     #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 30 0)
   596               #layout: #(#LayoutFrame 0 0.0 30 0 0 1.0 -107 1)
   597                     #tabable: true
   597               #tabable: true
   598                     #menu: #toolBarMenu
   598               #hasHorizontalScrollBar: false
   599                     #textDefault: true
   599               #hasVerticalScrollBar: false
   600                   )
   600               #majorKey: #DirectoryTreeBrowser
   601                  #(#SubCanvasSpec
   601               #createNewApplication: true
   602                     #name: 'DirectoryTreeBrowser'
   602               #createNewBuilder: true
   603                     #layout: #(#LayoutFrame 0 0.0 30 0 0 1.0 -67 1)
   603               #postBuildCallback: #postBuildTreeBrowser:
   604                     #tabable: true
   604             )
   605                     #hasHorizontalScrollBar: false
   605            #(#LabelSpec
   606                     #hasVerticalScrollBar: false
   606               #label: 'Filename:'
   607                     #majorKey: #DirectoryTreeBrowser
   607               #name: 'FilenameLabel'
   608                     #createNewApplication: true
   608               #layout: #(#LayoutFrame 3 0 -97 1 73 0 -77 1)
   609                     #createNewBuilder: true
   609               #translateLabel: true
   610                     #postBuildCallback: #postBuildTreeBrowser:
   610               #labelChannel: #filenameLabelHolder
   611                   )
   611               #adjust: #left
   612                  #(#LabelSpec
   612             )
   613                     #label: 'Filename:'
   613            #(#FilenameInputFieldSpec
   614                     #name: 'FilenameLabel'
   614               #name: 'FilenameEntryField'
   615                     #layout: #(#LayoutFrame 3 0 -53 1 73 0 -33 1)
   615               #layout: #(#LayoutFrame 70 0 -96 1 -10 1 -76 1)
   616                     #translateLabel: true
   616               #tabable: true
   617                     #labelChannel: #filenameLabelHolder
   617               #model: #filenameHolder
   618                     #adjust: #left
   618               #immediateAccept: false
   619                   )
   619               #acceptOnPointerLeave: false
   620                  #(#FilenameInputFieldSpec
   620               #postBuildCallback: #postBuildFileNameField:
   621                     #name: 'FilenameEntryField'
   621             )
   622                     #layout: #(#LayoutFrame 70 0 -52 1 -10 1 -32 1)
   622            #(#LabelSpec
   623                     #tabable: true
   623               #label: 'Filter:'
   624                     #model: #filenameHolder
   624               #name: 'FilterLabel'
   625                     #immediateAccept: false
   625               #layout: #(#LayoutFrame 3 0 -70 1 67 0 -50 1)
   626                     #acceptOnPointerLeave: false
   626               #translateLabel: true
   627                     #postBuildCallback: #postBuildFileNameField:
   627               #adjust: #left
   628                   )
   628             )
   629                  #(#LabelSpec
   629            #(#InputFieldSpec
   630                     #label: 'Filter:'
   630               #name: 'FilterEntryField'
   631                     #name: 'FilterLabel'
   631               #layout: #(#LayoutFrame 70 0 -69 1 -10 1 -49 1)
   632                     #layout: #(#LayoutFrame 3 0 -26 1 67 0 -6 1)
   632               #model: #filterHolder
   633                     #translateLabel: true
   633               #immediateAccept: false
   634                     #adjust: #left
   634               #acceptOnReturn: true
   635                   )
   635               #acceptOnTab: true
   636                  #(#InputFieldSpec
   636               #acceptOnLostFocus: true
   637                     #name: 'FilterEntryField'
   637               #acceptOnPointerLeave: false
   638                     #layout: #(#LayoutFrame 70 0 -25 1 -10 1 -5 1)
   638               #postBuildCallback: #postBuildFilterField:
   639                     #model: #filterHolder
       
   640                     #immediateAccept: false
       
   641                     #acceptOnReturn: true
       
   642                     #acceptOnTab: true
       
   643                     #acceptOnLostFocus: true
       
   644                     #acceptOnPointerLeave: false
       
   645                     #postBuildCallback: #postBuildFilterField:
       
   646                   )
       
   647                  )
       
   648                
       
   649               )
   639             )
   650             )
   640            #(#HorizontalPanelViewSpec
   651            #(#HorizontalPanelViewSpec
   641               #name: 'ButtonPanel'
   652               #name: 'ButtonPanel'
   642               #layout: #(#LayoutFrame 0 0.0 -40 1 0 1 0 1)
   653               #layout: #(#LayoutFrame 0 0.0 -40 1 0 1 0 1)
       
   654               #visibilityChannel: #buttonPanelVisibleHolder
   643               #horizontalLayout: #fitSpace
   655               #horizontalLayout: #fitSpace
   644               #verticalLayout: #center
   656               #verticalLayout: #center
   645               #horizontalSpace: 3
   657               #horizontalSpace: 3
   646               #verticalSpace: 3
   658               #verticalSpace: 3
   647               #reverseOrderIfOKAtLeft: true
   659               #reverseOrderIfOKAtLeft: true
   770       )
   782       )
   771 ! !
   783 ! !
   772 
   784 
   773 !FileDialog methodsFor:'accessing'!
   785 !FileDialog methodsFor:'accessing'!
   774 
   786 
       
   787 currentSelectedFiles
       
   788 
       
   789     | selectedFiles|
       
   790 
       
   791     selectedFiles := treeBrowser currentFileNameHolder value.
       
   792     ^ selectedFiles select:[:aFile| aFile isDirectory not].
       
   793 !
       
   794 
       
   795 directory
       
   796     "return the value of the instance variable 'directory' (automatically generated)"
       
   797 
       
   798     ^ directory
       
   799 !
       
   800 
       
   801 directory:something
       
   802     "set the value of the instance variable 'directory' (automatically generated)"
       
   803 
       
   804     directory := something.
       
   805 !
       
   806 
       
   807 initialText
       
   808     "return the value of the instance variable 'initialText' (automatically generated)"
       
   809 
       
   810     ^ initialText
       
   811 !
       
   812 
       
   813 initialText:something
       
   814     "set the value of the instance variable 'initialText' (automatically generated)"
       
   815 
       
   816     initialText := something.
       
   817 !
       
   818 
       
   819 pattern
       
   820     "return the value of the instance variable 'pattern' (automatically generated)"
       
   821 
       
   822     ^ pattern
       
   823 !
       
   824 
       
   825 pattern:something
       
   826     "set the value of the instance variable 'pattern' (automatically generated)"
       
   827 
       
   828     pattern := something.
       
   829 !
       
   830 
       
   831 result
       
   832     "return the value of the instance variable 'result' (automatically generated)"
       
   833 
       
   834     ^ result
       
   835 !
       
   836 
       
   837 result:something
       
   838     "set the value of the instance variable 'result' (automatically generated)"
       
   839 
       
   840     result := something.
       
   841 !
       
   842 
       
   843 selectedDirectories
       
   844 
       
   845     | selectedFiles|
       
   846 
       
   847     selectedFiles := treeBrowser currentFileNameHolder value.
       
   848     ^ selectedFiles select:[:aFile| aFile isDirectory].
       
   849 !
       
   850 
       
   851 startFilename
       
   852     "return the value of the instance variable 'startFilename' (automatically generated)"
       
   853 
       
   854     startFilename isNil ifTrue:[
       
   855         startFilename := Filename currentDirectory asAbsoluteFilename.
       
   856     ].
       
   857     ^ startFilename
       
   858 !
       
   859 
       
   860 startFilename:something
       
   861     "set the value of the instance variable 'startFilename' (automatically generated)"
       
   862 
       
   863     startFilename := something.
       
   864 ! !
       
   865 
       
   866 !FileDialog methodsFor:'accessing-behavior'!
       
   867 
       
   868 asLoadDialog
       
   869 
       
   870     ^ asLoadDialog
       
   871 !
       
   872 
       
   873 asLoadDialog:aBoolean
       
   874 
       
   875     asLoadDialog := aBoolean
       
   876 !
       
   877 
       
   878 doubleClickAction
       
   879     "return the value of the instance variable 'doubleClickAction' (automatically generated)"
       
   880 
       
   881     ^ doubleClickAction
       
   882 !
       
   883 
       
   884 doubleClickAction:something
       
   885     "set the value of the instance variable 'doubleClickAction' (automatically generated)"
       
   886 
       
   887     doubleClickAction := something.
       
   888 !
       
   889 
       
   890 multipleSelect
       
   891     "return the value of the instance variable 'pattern' (automatically generated)"
       
   892 
       
   893     multipleSelect isNil ifTrue:[
       
   894         multipleSelect := true.
       
   895     ].
       
   896     ^ multipleSelect
       
   897 !
       
   898 
       
   899 multipleSelect:aBoolean
       
   900     "set the value of the instance variable 'multipleSelect' (automatically generated)"
       
   901 
       
   902     multipleSelect := aBoolean
       
   903 ! !
       
   904 
       
   905 !FileDialog methodsFor:'accessing-components'!
       
   906 
   775 addButton:aButton
   907 addButton:aButton
   776     DialogBox defaultOKButtonAtLeft ifTrue:[
   908     DialogBox defaultOKButtonAtLeft ifTrue:[
   777         (self componentAt:#ButtonPanel) addSubView:aButton before:(self okButton)
   909         (self componentAt:#ButtonPanel) addSubView:aButton before:(self okButton)
   778     ] ifFalse:[
   910     ] ifFalse:[
   779         (self componentAt:#ButtonPanel) addSubView:aButton after:(self okButton)
   911         (self componentAt:#ButtonPanel) addSubView:aButton after:(self okButton)
   780     ].
   912     ].
   781 !
   913 !
   782 
   914 
   783 appendWasPressed
   915 okButton
   784     "valid after the dialog has been closed: true if append was pressed"
   916     ^ (self componentAt:#okButton) 
   785 
   917 !
   786     ^ appendWasPressed
   918 
   787 !
   919 treeBrowser
   788 
   920     "return the value of the instance variable 'treeBrowser' (automatically generated)"
   789 asLoadDialog
   921 
   790 
   922     ^ treeBrowser
   791     ^ asLoadDialog
   923 ! !
   792 !
   924 
   793 
   925 !FileDialog methodsFor:'accessing-look'!
   794 asLoadDialog:aBoolean
   926 
   795 
   927 hideButtonPanel
   796     asLoadDialog := aBoolean
   928     self buttonPanelVisibleHolder value:false
   797 !
       
   798 
       
   799 currentSelectedFiles
       
   800 
       
   801     | selectedFiles|
       
   802 
       
   803     selectedFiles := treeBrowser currentFileNameHolder value.
       
   804     ^ selectedFiles select:[:aFile| aFile isDirectory not].
       
   805 !
       
   806 
       
   807 directory
       
   808     "return the value of the instance variable 'directory' (automatically generated)"
       
   809 
       
   810     ^ directory
       
   811 !
       
   812 
       
   813 directory:something
       
   814     "set the value of the instance variable 'directory' (automatically generated)"
       
   815 
       
   816     directory := something.
       
   817 !
       
   818 
       
   819 doubleClickAction
       
   820     "return the value of the instance variable 'doubleClickAction' (automatically generated)"
       
   821 
       
   822     ^ doubleClickAction
       
   823 !
       
   824 
       
   825 doubleClickAction:something
       
   826     "set the value of the instance variable 'doubleClickAction' (automatically generated)"
       
   827 
       
   828     doubleClickAction := something.
       
   829 !
       
   830 
       
   831 initialText
       
   832     "return the value of the instance variable 'initialText' (automatically generated)"
       
   833 
       
   834     ^ initialText
       
   835 !
       
   836 
       
   837 initialText:something
       
   838     "set the value of the instance variable 'initialText' (automatically generated)"
       
   839 
       
   840     initialText := something.
       
   841 !
       
   842 
       
   843 multipleSelect
       
   844     "return the value of the instance variable 'pattern' (automatically generated)"
       
   845 
       
   846     multipleSelect isNil ifTrue:[
       
   847         multipleSelect := true.
       
   848     ].
       
   849     ^ multipleSelect
       
   850 !
       
   851 
       
   852 multipleSelect:aBoolean
       
   853     "set the value of the instance variable 'multipleSelect' (automatically generated)"
       
   854 
       
   855     multipleSelect := aBoolean
       
   856 !
   929 !
   857 
   930 
   858 newDirectoryVisibilityHolder
   931 newDirectoryVisibilityHolder
   859     "return the value of the instance variable 'newDirectoryVisibilityHolder' (automatically generated)"
   932     "return the value of the instance variable 'newDirectoryVisibilityHolder' (automatically generated)"
   860 
   933 
   862         newDirectoryVisibilityHolder := true asValue.
   935         newDirectoryVisibilityHolder := true asValue.
   863     ].
   936     ].
   864     ^ newDirectoryVisibilityHolder
   937     ^ newDirectoryVisibilityHolder
   865 !
   938 !
   866 
   939 
   867 okButton
   940 showButtonPanel
   868     ^ (self componentAt:#okButton) 
   941     self buttonPanelVisibleHolder value:true
   869 !
       
   870 
       
   871 pattern
       
   872     "return the value of the instance variable 'pattern' (automatically generated)"
       
   873 
       
   874     ^ pattern
       
   875 !
       
   876 
       
   877 pattern:something
       
   878     "set the value of the instance variable 'pattern' (automatically generated)"
       
   879 
       
   880     pattern := something.
       
   881 !
       
   882 
       
   883 result
       
   884     "return the value of the instance variable 'result' (automatically generated)"
       
   885 
       
   886     ^ result
       
   887 !
       
   888 
       
   889 result:something
       
   890     "set the value of the instance variable 'result' (automatically generated)"
       
   891 
       
   892     result := something.
       
   893 !
       
   894 
       
   895 selectedDirectories
       
   896 
       
   897     | selectedFiles|
       
   898 
       
   899     selectedFiles := treeBrowser currentFileNameHolder value.
       
   900     ^ selectedFiles select:[:aFile| aFile isDirectory].
       
   901 !
       
   902 
       
   903 startFilename
       
   904     "return the value of the instance variable 'startFilename' (automatically generated)"
       
   905 
       
   906     startFilename isNil ifTrue:[
       
   907         startFilename := Filename currentDirectory asAbsoluteFilename.
       
   908     ].
       
   909     ^ startFilename
       
   910 !
       
   911 
       
   912 startFilename:something
       
   913     "set the value of the instance variable 'startFilename' (automatically generated)"
       
   914 
       
   915     startFilename := something.
       
   916 !
       
   917 
       
   918 treeBrowser
       
   919     "return the value of the instance variable 'treeBrowser' (automatically generated)"
       
   920 
       
   921     ^ treeBrowser
       
   922 !
   942 !
   923 
   943 
   924 viewFiles
   944 viewFiles
   925     "return the value of the instance variable 'viewFiles' (automatically generated)"
   945     "return the value of the instance variable 'viewFiles' (automatically generated)"
   926 
   946 
   938 appendButtonVisibleHolder
   958 appendButtonVisibleHolder
   939     appendButtonVisibleHolder isNil ifTrue:[
   959     appendButtonVisibleHolder isNil ifTrue:[
   940         appendButtonVisibleHolder := false asValue.
   960         appendButtonVisibleHolder := false asValue.
   941     ].
   961     ].
   942     ^ appendButtonVisibleHolder
   962     ^ appendButtonVisibleHolder
       
   963 !
       
   964 
       
   965 buttonPanelVisibleHolder
       
   966     buttonPanelVisibleHolder isNil ifTrue:[
       
   967         buttonPanelVisibleHolder := true asValue.
       
   968         buttonPanelVisibleHolder onChangeSend:#buttonPanelVisibilityChanged to:self.
       
   969     ].
       
   970     ^ buttonPanelVisibleHolder.
   943 !
   971 !
   944 
   972 
   945 cancelLabelHolder
   973 cancelLabelHolder
   946     "automatically generated by UIPainter ..."
   974     "automatically generated by UIPainter ..."
   947 
   975 
  1044     ].
  1072     ].
  1045     ^ okLabelHolder.
  1073     ^ okLabelHolder.
  1046 ! !
  1074 ! !
  1047 
  1075 
  1048 !FileDialog methodsFor:'change & update'!
  1076 !FileDialog methodsFor:'change & update'!
       
  1077 
       
  1078 buttonPanelVisibilityChanged
       
  1079     |filePart buttonPanel|
       
  1080 
       
  1081     filePart := builder componentAt:#FilePart.
       
  1082     buttonPanel := builder componentAt:#ButtonPanel.
       
  1083 
       
  1084     buttonPanelVisibleHolder value ifTrue:[
       
  1085         filePart layout bottomOffset:-40
       
  1086     ] ifFalse:[
       
  1087         filePart layout bottomOffset:0
       
  1088     ].
       
  1089     filePart containerChangedSize    "/ force resize
       
  1090 !
  1049 
  1091 
  1050 update:something with:aParameter from:changedObject
  1092 update:something with:aParameter from:changedObject
  1051     "Invoked when an object that I depend upon sends a change notification."
  1093     "Invoked when an object that I depend upon sends a change notification."
  1052 
  1094 
  1053     "stub code automatically generated - please change as required"
  1095     "stub code automatically generated - please change as required"
  1095     ].
  1137     ].
  1096     ^ super update:something with:aParameter from:changedObject
  1138     ^ super update:something with:aParameter from:changedObject
  1097 ! !
  1139 ! !
  1098 
  1140 
  1099 !FileDialog methodsFor:'event handling'!
  1141 !FileDialog methodsFor:'event handling'!
       
  1142 
       
  1143 appendWasPressed
       
  1144     "valid after the dialog has been closed: true if append was pressed"
       
  1145 
       
  1146     ^ appendWasPressed
       
  1147 !
  1100 
  1148 
  1101 processEvent:anEvent
  1149 processEvent:anEvent
  1102     "filter keyboard events.
  1150     "filter keyboard events.
  1103      Return true, if I have eaten the event"
  1151      Return true, if I have eaten the event"
  1104 
  1152 
  1142     treeBrowser multipleSelect:self multipleSelect.
  1190     treeBrowser multipleSelect:self multipleSelect.
  1143     appendWasPressed := false.
  1191     appendWasPressed := false.
  1144     ^ super postBuildWith:aBuilder
  1192     ^ super postBuildWith:aBuilder
  1145 !
  1193 !
  1146 
  1194 
  1147 postOpenWith:aBuilder    
  1195 postOpen
  1148 
  1196 
  1149 "/     self windowGroup addPreEventHook:self.
  1197 "/     self windowGroup addPreEventHook:self.
       
  1198 
       
  1199     self window topView isModal ifFalse:[
       
  1200         self hideButtonPanel
       
  1201     ].
       
  1202 
  1150     treeBrowser currentFileNameHolder addDependent:self.
  1203     treeBrowser currentFileNameHolder addDependent:self.
  1151     treeBrowser doubleClickAction:(self doubleClickAction).
  1204     treeBrowser doubleClickAction:(self doubleClickAction).
  1152     treeBrowser enableBack addDependent:self.
  1205     treeBrowser enableBack addDependent:self.
  1153     treeBrowser enableForward addDependent:self.
  1206     treeBrowser enableForward addDependent:self.
  1154     treeBrowser enableHome addDependent:self.
  1207     treeBrowser enableHome addDependent:self.
  1163         treeBrowser allowFileOperations value:false.
  1216         treeBrowser allowFileOperations value:false.
  1164         self newDirectoryVisibilityHolder value:false.
  1217         self newDirectoryVisibilityHolder value:false.
  1165     ].
  1218     ].
  1166     self filenameHolder value:(self startFilename asString).
  1219     self filenameHolder value:(self startFilename asString).
  1167     self window label:(resources string:((self initialText) ? 'File Dialog')).
  1220     self window label:(resources string:((self initialText) ? 'File Dialog')).
       
  1221 !
       
  1222 
       
  1223 postOpenAsSubcanvasWith:aBuilder    
       
  1224     self postOpen.
       
  1225     ^ super postOpenAsSubcanvasWith:aBuilder
       
  1226 !
       
  1227 
       
  1228 postOpenWith:aBuilder    
       
  1229 
       
  1230     self postOpen.
  1168     ^ super postOpenWith:aBuilder
  1231     ^ super postOpenWith:aBuilder
  1169 ! !
  1232 ! !
  1170 
  1233 
  1171 !FileDialog methodsFor:'private'!
  1234 !FileDialog methodsFor:'private'!
  1172 
  1235 
  1273 ! !
  1336 ! !
  1274 
  1337 
  1275 !FileDialog class methodsFor:'documentation'!
  1338 !FileDialog class methodsFor:'documentation'!
  1276 
  1339 
  1277 version
  1340 version
  1278     ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.27 2003-03-17 13:38:27 martin Exp $'
  1341     ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.28 2003-03-27 08:58:52 cg Exp $'
  1279 ! !
  1342 ! !