Tools__NavigationHistory.st
author fm
Tue, 29 Sep 2009 17:11:46 +0200
changeset 8804 905811d4c5d7
parent 8778 32f043901469
child 8818 ffb1e1c2215f
permissions -rw-r--r--
changed: #version_SVN
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8778
32f043901469 initial checkin
fm
parents:
diff changeset
     1
"{ Package: 'cvut:stx/goodies/libtool3' }"
32f043901469 initial checkin
fm
parents:
diff changeset
     2
32f043901469 initial checkin
fm
parents:
diff changeset
     3
"{ NameSpace: Tools }"
32f043901469 initial checkin
fm
parents:
diff changeset
     4
32f043901469 initial checkin
fm
parents:
diff changeset
     5
Object subclass:#NavigationHistory
32f043901469 initial checkin
fm
parents:
diff changeset
     6
	instanceVariableNames:'items position'
32f043901469 initial checkin
fm
parents:
diff changeset
     7
	classVariableNames:''
32f043901469 initial checkin
fm
parents:
diff changeset
     8
	poolDictionaries:''
32f043901469 initial checkin
fm
parents:
diff changeset
     9
	category:'Interface-History'
32f043901469 initial checkin
fm
parents:
diff changeset
    10
!
32f043901469 initial checkin
fm
parents:
diff changeset
    11
32f043901469 initial checkin
fm
parents:
diff changeset
    12
32f043901469 initial checkin
fm
parents:
diff changeset
    13
!NavigationHistory class methodsFor:'instance creation'!
32f043901469 initial checkin
fm
parents:
diff changeset
    14
32f043901469 initial checkin
fm
parents:
diff changeset
    15
new
32f043901469 initial checkin
fm
parents:
diff changeset
    16
    ^ self basicNew initialize.
32f043901469 initial checkin
fm
parents:
diff changeset
    17
32f043901469 initial checkin
fm
parents:
diff changeset
    18
    "Created: / 21-02-2008 / 15:26:05 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    19
! !
32f043901469 initial checkin
fm
parents:
diff changeset
    20
32f043901469 initial checkin
fm
parents:
diff changeset
    21
!NavigationHistory methodsFor:'accessing'!
32f043901469 initial checkin
fm
parents:
diff changeset
    22
32f043901469 initial checkin
fm
parents:
diff changeset
    23
currentItem
32f043901469 initial checkin
fm
parents:
diff changeset
    24
32f043901469 initial checkin
fm
parents:
diff changeset
    25
    ^(position between:1 and: items size) 
32f043901469 initial checkin
fm
parents:
diff changeset
    26
        ifTrue:[items at: position]
32f043901469 initial checkin
fm
parents:
diff changeset
    27
        ifFalse:[nil]
32f043901469 initial checkin
fm
parents:
diff changeset
    28
32f043901469 initial checkin
fm
parents:
diff changeset
    29
    "Created: / 27-02-2008 / 08:46:37 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    30
!
32f043901469 initial checkin
fm
parents:
diff changeset
    31
32f043901469 initial checkin
fm
parents:
diff changeset
    32
currentItem: anObject
32f043901469 initial checkin
fm
parents:
diff changeset
    33
32f043901469 initial checkin
fm
parents:
diff changeset
    34
    self goTo: anObject
32f043901469 initial checkin
fm
parents:
diff changeset
    35
32f043901469 initial checkin
fm
parents:
diff changeset
    36
    "Created: / 27-02-2008 / 08:47:04 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    37
!
32f043901469 initial checkin
fm
parents:
diff changeset
    38
32f043901469 initial checkin
fm
parents:
diff changeset
    39
goBackItems
32f043901469 initial checkin
fm
parents:
diff changeset
    40
    ^ (items copyTo:position - 1) reverse
32f043901469 initial checkin
fm
parents:
diff changeset
    41
32f043901469 initial checkin
fm
parents:
diff changeset
    42
    "Created: / 27-02-2008 / 11:52:12 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    43
!
32f043901469 initial checkin
fm
parents:
diff changeset
    44
32f043901469 initial checkin
fm
parents:
diff changeset
    45
goForwardItems
32f043901469 initial checkin
fm
parents:
diff changeset
    46
    ^ items copyFrom:position + 1
32f043901469 initial checkin
fm
parents:
diff changeset
    47
32f043901469 initial checkin
fm
parents:
diff changeset
    48
    "Created: / 27-02-2008 / 11:52:26 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    49
! !
32f043901469 initial checkin
fm
parents:
diff changeset
    50
32f043901469 initial checkin
fm
parents:
diff changeset
    51
!NavigationHistory methodsFor:'initialization'!
32f043901469 initial checkin
fm
parents:
diff changeset
    52
32f043901469 initial checkin
fm
parents:
diff changeset
    53
initialize
32f043901469 initial checkin
fm
parents:
diff changeset
    54
    "Invoked when a new instance is created."
32f043901469 initial checkin
fm
parents:
diff changeset
    55
32f043901469 initial checkin
fm
parents:
diff changeset
    56
    "/ please change as required (and remove this comment)
32f043901469 initial checkin
fm
parents:
diff changeset
    57
    "/ items := nil.
32f043901469 initial checkin
fm
parents:
diff changeset
    58
    "/ position := nil.
32f043901469 initial checkin
fm
parents:
diff changeset
    59
32f043901469 initial checkin
fm
parents:
diff changeset
    60
    "/ super initialize.   -- commented since inherited method does nothing
32f043901469 initial checkin
fm
parents:
diff changeset
    61
    items := OrderedCollection new.
32f043901469 initial checkin
fm
parents:
diff changeset
    62
    position := 0
32f043901469 initial checkin
fm
parents:
diff changeset
    63
32f043901469 initial checkin
fm
parents:
diff changeset
    64
    "Created: / 21-02-2008 / 15:26:05 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    65
! !
32f043901469 initial checkin
fm
parents:
diff changeset
    66
32f043901469 initial checkin
fm
parents:
diff changeset
    67
!NavigationHistory methodsFor:'menu & menu actions'!
32f043901469 initial checkin
fm
parents:
diff changeset
    68
32f043901469 initial checkin
fm
parents:
diff changeset
    69
goBackMenu
32f043901469 initial checkin
fm
parents:
diff changeset
    70
    |menu|
32f043901469 initial checkin
fm
parents:
diff changeset
    71
32f043901469 initial checkin
fm
parents:
diff changeset
    72
    menu := Menu new.
32f043901469 initial checkin
fm
parents:
diff changeset
    73
    self goBackItems do:[:item | 
32f043901469 initial checkin
fm
parents:
diff changeset
    74
        menu addItem:(MenuItem label:item displayString value:[ self goTo:item ])
32f043901469 initial checkin
fm
parents:
diff changeset
    75
    ].
32f043901469 initial checkin
fm
parents:
diff changeset
    76
    ^ menu
32f043901469 initial checkin
fm
parents:
diff changeset
    77
32f043901469 initial checkin
fm
parents:
diff changeset
    78
    "Created: / 22-02-2008 / 16:57:46 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    79
    "Modified: / 27-02-2008 / 11:52:12 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    80
!
32f043901469 initial checkin
fm
parents:
diff changeset
    81
32f043901469 initial checkin
fm
parents:
diff changeset
    82
goForwardMenu
32f043901469 initial checkin
fm
parents:
diff changeset
    83
    |menu|
32f043901469 initial checkin
fm
parents:
diff changeset
    84
32f043901469 initial checkin
fm
parents:
diff changeset
    85
    menu := Menu new.
32f043901469 initial checkin
fm
parents:
diff changeset
    86
    self goForwardItems do:[:item | 
32f043901469 initial checkin
fm
parents:
diff changeset
    87
        menu addItem:(MenuItem label:item displayString value:[ self goTo:item ])
32f043901469 initial checkin
fm
parents:
diff changeset
    88
    ].
32f043901469 initial checkin
fm
parents:
diff changeset
    89
    ^ menu
32f043901469 initial checkin
fm
parents:
diff changeset
    90
32f043901469 initial checkin
fm
parents:
diff changeset
    91
    "Created: / 22-02-2008 / 16:58:11 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    92
    "Modified: / 27-02-2008 / 11:52:26 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    93
! !
32f043901469 initial checkin
fm
parents:
diff changeset
    94
32f043901469 initial checkin
fm
parents:
diff changeset
    95
!NavigationHistory methodsFor:'navigation'!
32f043901469 initial checkin
fm
parents:
diff changeset
    96
32f043901469 initial checkin
fm
parents:
diff changeset
    97
goBack
32f043901469 initial checkin
fm
parents:
diff changeset
    98
32f043901469 initial checkin
fm
parents:
diff changeset
    99
    | value |
32f043901469 initial checkin
fm
parents:
diff changeset
   100
    position := (position - 1) max: 1.
32f043901469 initial checkin
fm
parents:
diff changeset
   101
    self changed: #currentItem with: (value := self currentItem).
32f043901469 initial checkin
fm
parents:
diff changeset
   102
    ^value
32f043901469 initial checkin
fm
parents:
diff changeset
   103
32f043901469 initial checkin
fm
parents:
diff changeset
   104
    "Created: / 21-02-2008 / 16:37:37 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   105
    "Modified: / 27-02-2008 / 08:48:14 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   106
!
32f043901469 initial checkin
fm
parents:
diff changeset
   107
32f043901469 initial checkin
fm
parents:
diff changeset
   108
goForward
32f043901469 initial checkin
fm
parents:
diff changeset
   109
32f043901469 initial checkin
fm
parents:
diff changeset
   110
    | value |
32f043901469 initial checkin
fm
parents:
diff changeset
   111
    position := (position + 1) min: items size.
32f043901469 initial checkin
fm
parents:
diff changeset
   112
    self changed: #currentItem with: (value := self currentItem).
32f043901469 initial checkin
fm
parents:
diff changeset
   113
    ^value
32f043901469 initial checkin
fm
parents:
diff changeset
   114
32f043901469 initial checkin
fm
parents:
diff changeset
   115
    "Created: / 21-02-2008 / 16:37:37 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   116
    "Modified: / 27-02-2008 / 08:48:24 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   117
!
32f043901469 initial checkin
fm
parents:
diff changeset
   118
32f043901469 initial checkin
fm
parents:
diff changeset
   119
goTo: navigationHistoryItem
32f043901469 initial checkin
fm
parents:
diff changeset
   120
32f043901469 initial checkin
fm
parents:
diff changeset
   121
    | idx |
32f043901469 initial checkin
fm
parents:
diff changeset
   122
    idx := items indexOf:navigationHistoryItem.
32f043901469 initial checkin
fm
parents:
diff changeset
   123
    idx isZero
32f043901469 initial checkin
fm
parents:
diff changeset
   124
        ifFalse:
32f043901469 initial checkin
fm
parents:
diff changeset
   125
            [position := idx]
32f043901469 initial checkin
fm
parents:
diff changeset
   126
        ifTrue:
32f043901469 initial checkin
fm
parents:
diff changeset
   127
            [position < items size ifTrue:
32f043901469 initial checkin
fm
parents:
diff changeset
   128
                [items removeFromIndex: position + 1 toIndex: items size].
32f043901469 initial checkin
fm
parents:
diff changeset
   129
            items addLast: navigationHistoryItem.
32f043901469 initial checkin
fm
parents:
diff changeset
   130
            position := position + 1].
32f043901469 initial checkin
fm
parents:
diff changeset
   131
    self changed: #value with: navigationHistoryItem.
32f043901469 initial checkin
fm
parents:
diff changeset
   132
    ^navigationHistoryItem
32f043901469 initial checkin
fm
parents:
diff changeset
   133
32f043901469 initial checkin
fm
parents:
diff changeset
   134
    "Created: / 21-02-2008 / 16:40:39 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   135
    "Modified: / 21-02-2008 / 19:12:35 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   136
! !
32f043901469 initial checkin
fm
parents:
diff changeset
   137
32f043901469 initial checkin
fm
parents:
diff changeset
   138
!NavigationHistory methodsFor:'queries'!
32f043901469 initial checkin
fm
parents:
diff changeset
   139
32f043901469 initial checkin
fm
parents:
diff changeset
   140
canGoBack
32f043901469 initial checkin
fm
parents:
diff changeset
   141
32f043901469 initial checkin
fm
parents:
diff changeset
   142
    ^position > 1
32f043901469 initial checkin
fm
parents:
diff changeset
   143
32f043901469 initial checkin
fm
parents:
diff changeset
   144
    "Created: / 21-02-2008 / 16:40:48 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   145
!
32f043901469 initial checkin
fm
parents:
diff changeset
   146
32f043901469 initial checkin
fm
parents:
diff changeset
   147
canGoForward
32f043901469 initial checkin
fm
parents:
diff changeset
   148
32f043901469 initial checkin
fm
parents:
diff changeset
   149
    ^position < items size
32f043901469 initial checkin
fm
parents:
diff changeset
   150
32f043901469 initial checkin
fm
parents:
diff changeset
   151
    "Created: / 21-02-2008 / 16:40:48 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   152
! !
32f043901469 initial checkin
fm
parents:
diff changeset
   153
32f043901469 initial checkin
fm
parents:
diff changeset
   154
!NavigationHistory class methodsFor:'documentation'!
32f043901469 initial checkin
fm
parents:
diff changeset
   155
32f043901469 initial checkin
fm
parents:
diff changeset
   156
version
8804
905811d4c5d7 changed: #version_SVN
fm
parents: 8778
diff changeset
   157
    ^ '$Header: /cvs/stx/stx/libtool/Tools__NavigationHistory.st,v 1.2 2009-09-29 15:11:46 fm Exp $'
905811d4c5d7 changed: #version_SVN
fm
parents: 8778
diff changeset
   158
!
905811d4c5d7 changed: #version_SVN
fm
parents: 8778
diff changeset
   159
905811d4c5d7 changed: #version_SVN
fm
parents: 8778
diff changeset
   160
version_CVS
905811d4c5d7 changed: #version_SVN
fm
parents: 8778
diff changeset
   161
    ^ '$Header: /cvs/stx/stx/libtool/Tools__NavigationHistory.st,v 1.2 2009-09-29 15:11:46 fm Exp $'
905811d4c5d7 changed: #version_SVN
fm
parents: 8778
diff changeset
   162
!
905811d4c5d7 changed: #version_SVN
fm
parents: 8778
diff changeset
   163
905811d4c5d7 changed: #version_SVN
fm
parents: 8778
diff changeset
   164
version_SVN
905811d4c5d7 changed: #version_SVN
fm
parents: 8778
diff changeset
   165
    ^ 'Header: /opt/data/cvs/stx/goodies/libtool3/Tools__NavigationHistory.st,v 1.2 2008-02-27 13:45:21 vranyj1 Exp '
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   166
! !