FileSelectionBox.st
author claus
Sat, 08 Jan 1994 18:27:56 +0100
changeset 21 9ef599238fea
parent 12 1c8e8c53e8cf
child 38 4b9b70b2cc87
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     1
"
5
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1990 by Claus Gittinger
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     4
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    11
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    12
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    13
ListSelectionBox subclass:#FileSelectionBox
12
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    14
       instanceVariableNames:'patternField'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    15
       classVariableNames:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    16
       poolDictionaries:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    17
       category:'Views-Interactors'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
FileSelectionBox comment:'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    21
5
claus
parents: 3
diff changeset
    22
COPYRIGHT (c) 1990 by Claus Gittinger
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    23
              All Rights Reserved
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    24
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
    25
$Header: /cvs/stx/stx/libwidg/FileSelectionBox.st,v 1.6 1994-01-08 17:27:15 claus Exp $
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    26
written Jan 90 by claus
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    27
'!
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    28
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    29
!FileSelectionBox class methodsFor:'documentation'!
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    30
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    31
documentation
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    32
"
12
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    33
this class implements file selection boxes. Instances show a list of
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    34
files, and perform an action block with the selected pathname as
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    35
argument when ok is clicked.
12
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    36
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    37
There is an optional PatternField, which shows itself when a pattern
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    38
is defined. If there is such a pattern, only files matching the pattern
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    39
will be shown in the list (and directories).
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    40
"
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    41
! !
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    42
12
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    43
!FileSelectionBox class methodsFor:'defaults'!
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    44
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    45
listViewType
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    46
    "return the type of listView - using a FileSelectionList here"
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    47
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    48
    ^ FileSelectionList
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    49
! !
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    50
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    51
!FileSelectionBox methodsFor:'initialization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    52
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    53
initialize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    54
    super initialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    55
3
claus
parents: 0
diff changeset
    56
    labelField extent:(0.7 @ labelField height).
claus
parents: 0
diff changeset
    57
    labelField label:(resources string:'select a file:').
claus
parents: 0
diff changeset
    58
    labelField adjust:#left.
claus
parents: 0
diff changeset
    59
claus
parents: 0
diff changeset
    60
    patternField := EditField
claus
parents: 0
diff changeset
    61
                        origin:(0.7 @ labelField origin y)
claus
parents: 0
diff changeset
    62
                        corner:(1.0 @ labelField corner y)
claus
parents: 0
diff changeset
    63
                            in:self.
claus
parents: 0
diff changeset
    64
    patternField initialText:'*'.
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
    65
    patternField leaveAction:[:reason | 
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
    66
        selectionList pattern:patternField contents. 
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
    67
        self updateList
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
    68
    ].
3
claus
parents: 0
diff changeset
    69
    patternField hidden:true.
claus
parents: 0
diff changeset
    70
12
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    71
    selectionList action:[:line |
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    72
        |entry|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    73
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    74
        entry := selectionList selectionValue.
12
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    75
        enterField contents:entry
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    76
    ].
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    77
    selectionList doubleClickAction:[:line |
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    78
        |entry|
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    79
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    80
        entry := selectionList selectionValue.
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    81
        enterField contents:entry.
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    82
        self okPressed
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    83
    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    84
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    85
    "FileSelectionBox new show"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    86
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    87
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
    88
!FileSelectionBox methodsFor:'private'!
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
    89
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
    90
updateList
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
    91
    selectionList updateList
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
    92
! !
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
    93
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    94
!FileSelectionBox methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    95
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    96
directory:nameOrDirectory
12
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    97
    "change the directory shown in the list"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    98
12
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
    99
    selectionList directory:nameOrDirectory
3
claus
parents: 0
diff changeset
   100
!
claus
parents: 0
diff changeset
   101
claus
parents: 0
diff changeset
   102
pattern:aPattern
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   103
    "set the pattern - this enables the PatternField."
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   104
3
claus
parents: 0
diff changeset
   105
    patternField initialText:aPattern.
12
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
   106
    selectionList pattern:aPattern.
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
   107
    aPattern isNil ifTrue:[
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
   108
        patternField hidden:true.
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
   109
        realized ifTrue:[
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
   110
            patternField hide.
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
   111
        ]
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
   112
    ] ifFalse:[
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
   113
        patternField hidden:false.
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
   114
        realized ifTrue:[
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
   115
            patternField realize.
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
   116
        ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   117
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   118
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   119
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   120
!FileSelectionBox methodsFor:'user interaction'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   121
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   122
okPressed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   123
    "redefined, since action will be evaluated with full path as argument
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   124
     (instead of enterfields contents only as inherited by EnterBox"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   125
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   126
    |absPath|
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   127
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   128
    self hideAndEvaluate:[:string |
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
        okAction notNil ifTrue:[
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   130
            (string startsWith:(Filename separator)) ifTrue:[
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   131
                absPath := string
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   132
            ] ifFalse:[
12
1c8e8c53e8cf *** empty log message ***
claus
parents: 7
diff changeset
   133
                absPath := selectionList directory pathName , Filename separator asString , string
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   134
            ].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   135
            okAction value:absPath
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   136
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   137
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   138
! !