Tools_HierarchicalProjectList.st
author Claus Gittinger <cg@exept.de>
Thu, 26 Feb 2004 19:57:02 +0100
changeset 5591 273637686948
child 5592 d9730a8d7c52
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5591
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:__NoProject__' }"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ NameSpace: Tools }"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
ProjectList subclass:#HierarchicalProjectList
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:'hierarchicalProjectTree selectedProjectItems packageIcon
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
		hierarchicalProjectList hierarchicalProjectSelection
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
		packageToItemDictionary'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	classVariableNames:''
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
	poolDictionaries:''
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
	category:'Interface-Browsers-New'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
!HierarchicalProjectList class methodsFor:'documentation'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
documentation
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
    Like a ClassList, but shows classes hierarchical.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
    If topClassHolders value is non-nil, only that classes hierarchy
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
    is shown.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
    embeddable application displaying the classes as listed by
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
    the inputGenerator.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
    Provides an outputGenerator, which enumerates the classes and
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
    their protocols (method-categories) in the selected classes.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
    [author:]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	Claus Gittinger (cg@exept.de)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!HierarchicalProjectList class methodsFor:'interface specs'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
windowSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
    "This resource specification was automatically generated
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
     by the UIPainter of ST/X."
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    "Do not manually edit this!! If it is corrupted,
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
     the UIPainter may not be able to read the specification."
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    "
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
     UIPainter new openOnClass:HierarchicalProjectList andSelector:#windowSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
     HierarchicalProjectList new openInterface:#windowSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
     HierarchicalProjectList open
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    "
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    <resource: #canvas>
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    ^ 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
     #(#FullSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
        #name: #windowSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
        #window: 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
       #(#WindowSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
          #label: 'ProjectList'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
          #name: 'ProjectList'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
          #min: #(#Point 0 0)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
          #max: #(#Point 1024 721)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
          #bounds: #(#Rectangle 16 46 316 346)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
        )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
        #component: 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
       #(#SpecCollection
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
          #collection: #(
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
           #(#HierarchicalListViewSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
              #name: 'HierarchicalListView1'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
              #tabable: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
              #model: #hierarchicalProjectSelection
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
              #menu: #menuHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
              #hasHorizontalScrollBar: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
              #hasVerticalScrollBar: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
              #miniScrollerHorizontal: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
              #listModel: #hierarchicalProjectList
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
              #multipleSelectOk: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
              #highlightMode: #line
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
              #doubleClickSelector: #doubleClicked:
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
              #indicatorSelector: #indicatorPressed:
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
              #properties: 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
             #(#PropertyListDictionary
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
                #dragArgument: nil
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
                #dropArgument: nil
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
                #canDropSelector: #canDrop:
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
                #dropSelector: #doDrop:
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
              )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
            )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
           )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
         
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
        )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
      )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
xxwindowSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    "This resource specification was automatically generated
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
     by the UIPainter of ST/X."
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    "Do not manually edit this!! If it is corrupted,
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
     the UIPainter may not be able to read the specification."
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    "
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
     UIPainter new openOnClass:HierarchicalProjectList andSelector:#windowSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
     HierarchicalProjectList new openInterface:#windowSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
     HierarchicalProjectList open
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    "
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    <resource: #canvas>
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    ^ 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
     #(#FullSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
        #name: #windowSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
        #window: 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
       #(#WindowSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
          #label: 'ProjectList'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
          #name: 'ProjectList'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
          #min: #(#Point 0 0)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
          #max: #(#Point 1024 721)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
          #bounds: #(#Rectangle 12 22 312 322)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
        )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
        #component: 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
       #(#SpecCollection
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
          #collection: #(
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
           #(#SelectionInTreeViewSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
              #name: 'List'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
              #model: #selectedProjectItems
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
              #menu: #menuHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
              #hasHorizontalScrollBar: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
              #hasVerticalScrollBar: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
              #miniScrollerHorizontal: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
              #showRoot: false
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
              #showDirectoryIndicator: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
              #isMultiSelect: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
              #valueChangeSelector: #selectionChangedByClick
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
              #hierarchicalList: #hierarchicalProjectTree
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
              #childrenSelector: #actionToRetrieveChildren
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
              #highlightMode: #line
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
              #doubleClickChannel: #doubleClickChannel
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
            )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
           #(#HierarchicalListViewSpec
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
              #name: 'HierarchicalListView1'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
              #tabable: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
              #hasHorizontalScrollBar: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
              #hasVerticalScrollBar: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
              #miniScrollerHorizontal: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
              #listModel: #hierarchicalProjectList
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
              #multipleSelectOk: true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
              #highlightMode: #line
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
              #doubleClickSelector: #doubleClicked:
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
              #indicatorSelector: #indicatorPressed:
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
              "/ #showLeftIndicators: false
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
            )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
           )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
         
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
        )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
      )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
!HierarchicalProjectList class methodsFor:'plugIn spec'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
aspectSelectors
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    "This resource specification was automatically generated
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
     by the UIPainter of ST/X."
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    "Do not manually edit this. If it is corrupted,
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
     the UIPainter may not be able to read the specification."
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    "Return a description of exported aspects;
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
     these can be connected to aspects of an embedding application
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
     (if this app is embedded in a subCanvas)."
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    ^ #(
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
	#(#doubleClickChannel #action )
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
	#forceGeneratorTrigger
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
	#hideUnloadedClasses
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
	#immediateUpdate
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
	#inGeneratorHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
	#menuHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
	#organizerMode
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
	#outGeneratorHolder
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
	#selectedProjects
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
	#selectionChangeCondition
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
	#slaveMode
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
	#updateTrigger
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
      ).
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
!HierarchicalProjectList methodsFor:'aspects'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
generateHierarchicalProjectTree
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    |anchor|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    self projectList value isNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
	self updateList.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
	self projectList value isNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
	    ^ nil.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
	]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    anchor := ProjectItem new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    anchor package:''.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    anchor label:nil.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
    packageToItemDictionary := IdentityDictionary new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
    packageToItemDictionary at:'' asSymbol put:anchor.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
    self projectList value do:[:eachPackageString |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
	|package|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
	package := eachPackageString asSymbol.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
	(packageToItemDictionary includesKey:package) ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
	    self addPackage:package 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
	].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
"/    Smalltalk allClassesDo:[:eachClass |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
"/        |package|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
"/
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
"/        package := eachClass package asSymbol.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
"/        (packageToItemDictionary includesKey:package) ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
"/            self addPackage:package 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
"/        ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
"/    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
    anchor recursiveSortChildren:[:i1 :i2 | i1 label asLowercase < i2 label asLowercase].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    anchor expand.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    ^ anchor
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
hierarchicalProjectList
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
    |anchor |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
    hierarchicalProjectList isNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
	hierarchicalProjectList := HierarchicalList new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
	hierarchicalProjectList showRoot:false.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
	(self slaveMode value ~~ true) ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
	    anchor := self generateHierarchicalProjectTree.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
	    hierarchicalProjectList root:anchor.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
	    listValid := true
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
	] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
	    listValid := false
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
	]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
    ^ hierarchicalProjectList
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
hierarchicalProjectSelection
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
    hierarchicalProjectSelection isNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
	hierarchicalProjectSelection := #() asValue.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
	hierarchicalProjectSelection addDependent:self.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
    ^ hierarchicalProjectSelection.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
updateTreeSelection
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
    "/ must expand items as required
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
    |itemsToSelect oldSelection newSelection|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
    itemsToSelect := OrderedCollection new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
    (self selectedProjects value ? #()) do:[:eachSelectedProject |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
	|item child|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
	item := hierarchicalProjectList root.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
	(eachSelectedProject asCollectionOfSubstringsSeparatedByAny:':/') do:[:part |
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
	    item expand.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
	    child := item detect:[:child | child label = part] ifNone:nil.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
	    child notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
		item := child.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
	    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
	].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
	itemsToSelect add:child.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
    oldSelection := hierarchicalProjectSelection value.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
    newSelection := itemsToSelect collect:[:eachItem | hierarchicalProjectList identityIndexOf:eachItem].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
    oldSelection ~= newSelection ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
	hierarchicalProjectSelection value:newSelection.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
!HierarchicalProjectList methodsFor:'change & update'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
delayedUpdate:something with:aParameter from:changedObject
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
    |cls sel oldMethod newMethod newPackage|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
    self inSlaveModeOrInvisible ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
	super delayedUpdate:something with:aParameter from:changedObject.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
	^ self.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
"/    (self slaveMode value == true) ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
"/        super delayedUpdate:something with:aParameter from:changedObject.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
"/        ^ self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
"/    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
    changedObject == updateTrigger ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
	hierarchicalProjectList := nil.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
	self hierarchicalProjectList.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
	self updateTreeSelection.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
	^ self        
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
    changedObject == slaveMode ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
	listValid ~~ true ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
	    self enqueueDelayedUpdateList
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
	].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
	"/ self invalidateList.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
	self updateTreeSelection.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
	^  self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
    changedObject == hierarchicalProjectSelection ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
	self updateSelectionFromTree.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
	^ self        
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
"/    changedObject == self selectedProjects ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
"/        "/ update the trees selection as appropriate
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
"/        self updateTreeSelection.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
"/    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
    changedObject == projectList ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
	"/ update the tree
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
	self hierarchicalProjectList root:(self generateHierarchicalProjectTree).
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
	^ self.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
        
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
    super delayedUpdate:something with:aParameter from:changedObject
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
    "Created: / 17.2.2000 / 23:41:02 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
    "Modified: / 26.2.2000 / 01:21:49 / cg"
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
enqueueDelayedAddPackage:package
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
    NewSystemBrowser synchronousUpdate == true ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
	self addPackage:package.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
	^ self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
    ^ self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
	enqueueMessage:#addPackage:
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
	for:self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
	arguments:(Array with:package)
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
update:something with:aParameter from:changedObject
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
    something == #methodTrap ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
	"/ dont care for that.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
	^ self.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
    changedObject == organizerMode ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
	"/ dont care for that.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
	^ self.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
    super update:something with:aParameter from:changedObject
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
updateSelectionFromTree
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
    |treeSelection|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
    treeSelection := hierarchicalProjectSelection value 
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
		    collect:[:eachIndex |  |item|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
				    item := hierarchicalProjectList at:eachIndex ifAbsent:nil.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
				    item package
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
			    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
    treeSelection asSet ~= (self selectedProjects value ? #()) asSet ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
	self selectedProjects value:treeSelection.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
    ]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
!HierarchicalProjectList methodsFor:'private'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
addPackage:package
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
    |i p pp l parentPackage parentItem idx|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
    i:= packageToItemDictionary at:package asSymbol ifAbsent:nil.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
    i isNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
	i := ProjectItem new.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
	i package:package.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
	packageToItemDictionary at:package asSymbol put:i.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
	package size > 0 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
	    "/ find the parent ...
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
	    p := package asCollectionOfSubstringsSeparatedByAny:':/.'.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
	    pp := p copyWithoutLast:1.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
	    l := (pp asStringWith:$/) size.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
	    parentPackage := package copyTo:l.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
	    parentItem := self addPackage:parentPackage asSymbol .
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
	    parentPackage size == 0 ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
		idx := 1.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
	    ] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
		idx := parentPackage size + 2
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
	    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
	    i label:(package copyFrom:idx).
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
	    parentItem add:i sortBlock:[:i1 :i2 | i1 label asLowercase < i2 label asLowercase].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
	    "/ TODO: special items for classes, resources etc.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
        
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
	]
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
    ^ i
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
release
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
    super release.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
    hierarchicalProjectSelection removeDependent:self.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   415
!HierarchicalProjectList methodsFor:'user actions'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   417
doubleClicked:anIndex
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
    |item|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
    item := hierarchicalProjectList at:anIndex ifAbsent:nil.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
    item isNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
	^ self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
    ].        
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
    (item canExpand not or:[item isExpanded]) ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
	doubleClickChannel notNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
	    doubleClickChannel value:anIndex.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
	].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
	^ self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
    item expand.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
indicatorPressed:anIndex
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
    |item sensor|
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
    item := hierarchicalProjectList at:anIndex ifAbsent:nil.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
    item isNil ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   441
	^ self
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
    sensor := self window sensor.
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   445
    (sensor ctrlDown or:[sensor shiftDown]) ifTrue:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
	item recursiveToggleExpand
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
    ] ifFalse:[
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
	item toggleExpand
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   449
    ].
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   450
! !
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
!HierarchicalProjectList class methodsFor:'documentation'!
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
version
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   455
    ^ '$Header: /cvs/stx/stx/libtool/Tools_HierarchicalProjectList.st,v 1.1 2004-02-26 18:56:30 cg Exp $'
273637686948 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
! !