/[eiffelstudio]/branches/Eiffel_57_docking/Src/Eiffel/interface/new_graphical/case_tool/eiffel_view/cluster_figure.e
ViewVC logotype

Diff of /branches/Eiffel_57_docking/Src/Eiffel/interface/new_graphical/case_tool/eiffel_view/cluster_figure.e

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/Src/bench/Eiffel/interface/new_graphical/case_tool/bon/cluster_figure.e revision 34581 by manus, Fri Oct 4 23:49:44 2002 UTC trunk/Src/bench/Eiffel/interface/new_graphical/case_tool/eiffel_view/cluster_figure.e revision 47281 by bennob, Tue Dec 28 19:31:21 2004 UTC
# Line 1  Line 1 
1  indexing  indexing
2          description:          description: "Common functionality for all views of ES_CLUSTERs"
3                  "Graphical representations of clusters without%N%          author: ""
                 %commitment to any notation."  
4          date: "$Date$"          date: "$Date$"
5          revision: "$Revision$"          revision: "$Revision$"
6    
7  deferred class  deferred class
8          CLUSTER_FIGURE          EIFFEL_CLUSTER_FIGURE
9            
10  inherit  inherit
11          LINKABLE_FIGURE          EG_RESIZABLE_CLUSTER_FIGURE
                 undefine  
                         position_on_figure  
12                  redefine                  redefine
13                          set_origin,                          default_create,
14                            initialize,
15                            model,
16                          world,                          world,
17                          cluster_figure                          on_linkable_add,
18                            on_handle_start,
19                            on_handle_end,
20                            recycle
21                  end                  end
22                    
23          LINKABLE_FIGURE_GROUP          EB_CONSTANTS
                 rename  
                         cluster_figures as subclusters,  
                         class_figures as classes  
24                  undefine                  undefine
25                          default_create,                          default_create
                         is_equal  
26                  end                  end
27                    
28  feature {NONE} -- Initialization  feature {NONE} -- Initialization
29    
30          make_with_cluster (lace_cluster: CLUSTER_I) is          default_create is
31                          -- Initialize `Current' with lace_cluster.                          -- Create an CLUSTER_FIGURE.
                 require  
                         lace_cluster_not_void: lace_cluster /= Void  
32                  do                  do
33                          default_create                          Precursor {EG_RESIZABLE_CLUSTER_FIGURE}
34                          create layout                          
35                          create subclusters.make                          set_accept_cursor (cursors.cur_cluster)
36                          create classes.make                          set_deny_cursor (cursors.cur_x_cluster)
37                          create saved_subclusters.make                          
38                          create saved_classes.make                          start_actions.extend (agent save_position)
39                          cluster_i := lace_cluster                          end_actions.extend (agent extend_history)
40                          set_name (cluster_i.name_in_upper)                          move_actions.extend (agent on_move)
                         initialize  
                         create {CLUSTER_FIGURE_STONE} pebble.make (Current)  
                         set_accept_cursor (Cursors.cur_Cluster)  
                         set_deny_cursor (Cursors.Cur_x_cluster)  
                         build_figure  
41                  end                  end
42                    
43          initialize is          initialize is
44                  deferred                          -- Initialize `Current' with `model'.
                 end  
   
 feature -- Access  
   
         parent: LINKABLE_FIGURE_GROUP  
                         -- Figure group containing `Current'.  
   
         world: CLUSTER_DIAGRAM is  
                         -- World `Current' belongs to.  
45                  do                  do
46                          Result ?= Precursor                          Precursor {EG_RESIZABLE_CLUSTER_FIGURE}
47                  end                          set_pebble (create {CLUSTER_STONE}.make (model.cluster_i))
48                            model.needed_on_diagram_changed_actions.extend (agent on_needed_on_diagram_changed)
         cluster_i: CLUSTER_I  
                         -- Cluster this figure is a representation of.  
   
         resizer_bottom_right: EV_MOVE_HANDLE is  
                         -- Mover of `Current'.  
                 deferred  
                 end  
   
         resizer_top_left: EV_MOVE_HANDLE is  
                         -- Mover of `Current'.  
                 deferred  
49                  end                  end
50                    
51    
52          resizer_top_right: EV_MOVE_HANDLE is  feature -- Status report
                         -- Mover of `Current'.  
                 deferred  
                 end  
   
         resizer_bottom_left: EV_MOVE_HANDLE is  
                         -- Mover of `Current'.  
                 deferred  
                 end  
   
         name_mover: EV_MOVE_HANDLE is  
                         -- Mover of `Current' name.  
                 deferred  
                 end  
53    
54          center_point: EV_RELATIVE_POINT is          is_iconified: BOOLEAN
55                          -- Point at the center of `body', origin of `name_mover'.                          -- Is `Current' iconified.
56                  deferred                  
57                  end  feature -- Access
58    
59          cluster_figure: CLUSTER_FIGURE is          model: ES_CLUSTER
60                          -- Cluster figure `Current' is in directly.                          -- Model for `Current'.
61                          -- Void if none or more than one.                          
62            world: EIFFEL_WORLD is
63                            -- World `Current' is part of.
64                  do                  do
65                          Result ?= parent                          Result ?= Precursor {EG_RESIZABLE_CLUSTER_FIGURE}
66                  end                  end
67                    
68  feature -- Element change  feature -- Element change
69    
70          add_class (a_class: CLASS_FIGURE) is          recycle is
71                          -- Add `a_class' to `classes'.                          -- Free `Current's resources.
                 require  
                         a_class_not_void: a_class /= Void  
                 do  
                         classes.extend (a_class)  
                         a_class.set_cluster (Current)  
                         a_class.set_origin (point)  
                 ensure  
                         a_class_added: classes.has (a_class)  
                 end  
   
         remove_class (a_class: CLASS_FIGURE) is  
                         -- Remove `a_class' from `classes'.  
                 require  
                         a_class_not_void: a_class /= Void  
                 do  
                         classes.prune_all (a_class)  
                 ensure  
                         a_class_removed: not classes.has (a_class)  
                 end  
           
         add_all_classes is  
                         -- Add class figures representing all items  
                         -- in `cluster_i'.  
                 do  
                         world.include_classes_of_cluster (Current, True)  
                 end  
   
         add_subcluster (a_cluster: CLUSTER_FIGURE) is  
                         -- Add `a_cluster' to `subclusters'.  
                 require  
                         a_cluster_not_void: a_cluster /= Void  
                 do  
                         if not subclusters.has (a_cluster) then  
                                 subclusters.extend (a_cluster)  
                                 a_cluster.set_parent (Current)  
                         -- EA:  a_cluster.point.set_origin (point)  
                                 a_cluster.point.change_origin (point)  
                         end  
                 ensure  
                         a_cluster_added: subclusters.has (a_cluster)  
                 end  
   
         remove_subcluster (a_cluster: CLUSTER_FIGURE) is  
                         -- Remove `a_cluster' from `subclusters'.  
                 require  
                         a_cluster_not_void: a_cluster /= Void  
72                  do                  do
73                          subclusters.prune_all (a_cluster)                          Precursor {EG_RESIZABLE_CLUSTER_FIGURE}
74                          a_cluster.set_parent (Void)                          start_actions.prune_all (agent save_position)
75                  ensure                          end_actions.prune_all (agent extend_history)
76                          a_cluster_removed: not subclusters.has (a_cluster)                          move_actions.prune_all (agent on_move)
77                  end                          model.needed_on_diagram_changed_actions.prune_all (agent on_needed_on_diagram_changed)
78                    end
79          set_parent (p: LINKABLE_FIGURE_GROUP) is                  
80                          -- Assign `p' to `parent'.                  
81                          -- `p' can be Void if `Current' is a top-level cluster in diagram.          apply_right_angles is
82                  do                          -- Apply right angles to all links in `links' and all elements in `Current'.
                         parent := p  
                         if p = Void and then world /= Void then  
                                 point.set_origin (world.point)  
                         end  
                 ensure  
                         parent_assigned: parent = p  
                 end  
   
         remove_from_diagram (exclude_needed: BOOLEAN) is  
                         -- Remove `Current' from its diagram, exclude it if `exclude_needed'.  
83                  local                  local
84                          d: CLUSTER_DIAGRAM                          l_item: EIFFEL_LINK_FIGURE
85                          saved_cursor: CURSOR                          l_links: like links
86                          cf: CLASS_FIGURE                          i, nb: INTEGER
87                  do                          clu: EIFFEL_CLUSTER_FIGURE
88                          d := world                          cla: EIFFEL_CLASS_FIGURE
89                          if d.center_cluster /= Current then                  do
90                                  saved_subclusters.wipe_out                          from
91                                  saved_classes.wipe_out                                  l_links := links
92                                            i := 1
93                                  from                                  nb := l_links.count
94                                          classes.start                          until
95                                  until                                  i > nb
96                                          classes.after                          loop
97                                  loop                                  l_item ?= l_links.i_th (i)
98                                          cf := classes.item                                  if l_item /= Void then
99                                          classes.forth                                          l_item.apply_right_angles
                                         saved_cursor := classes.cursor  
                                         saved_classes.extend (cf)  
                                         cf.remove_from_diagram (exclude_needed)  
                                         classes.go_to (saved_cursor)  
                                 end  
           
                                 if exclude_needed then  
                                         d.exclude_cluster (cluster_i)  
                                 else  
                                         d.remove_cluster (cluster_i)      
100                                  end                                  end
101                                    i := i + 1
102                          end                          end
103                  end                          from
104                                            start
105          recursive_remove_from_diagram (exclude_needed: BOOLEAN) is                          until
106                          -- Remove `Current' from its diagram, exclude it if `exclude_needed',                                  after
107                          -- and remove subclusters as well.                          loop
108                  local                                  clu ?= item
109                          d: CLUSTER_DIAGRAM                                  if clu /= Void then
110                          saved_cursor: CURSOR                                          clu.apply_right_angles
                         cf: CLASS_FIGURE  
                         clf: CLUSTER_FIGURE  
                 do  
                         d := world  
                         if d.center_cluster /= Current then  
                                 saved_subclusters.wipe_out  
                                 saved_classes.wipe_out  
           
                                 from  
                                         subclusters.start  
                                 until  
                                         subclusters.after  
                                 loop  
                                         clf := subclusters.item  
                                         subclusters.forth                                
                                         saved_cursor := subclusters.cursor  
                                         saved_subclusters.extend (clf)  
                                         clf.recursive_remove_from_diagram (exclude_needed)  
                                         subclusters.go_to (saved_cursor)  
                                 end  
           
                                 from  
                                         classes.start  
                                 until  
                                         classes.after  
                                 loop  
                                         cf := classes.item  
                                         classes.forth  
                                         saved_cursor := classes.cursor  
                                         saved_classes.extend (cf)  
                                         cf.remove_from_diagram (exclude_needed)  
                                         classes.go_to (saved_cursor)  
                                 end  
           
                                 if exclude_needed then  
                                         d.exclude_cluster (cluster_i)  
111                                  else                                  else
112                                          d.remove_cluster (cluster_i)                                              cla ?= item
113                                            if cla /= Void then
114                                                    cla.apply_right_angles
115                                            end
116                                  end                                  end
117                                    forth
118                          end                          end
119                  end                  end
120    
121          put_back_on_diagram (d: CONTEXT_DIAGRAM) is  feature {EG_LAYOUT} -- Layouting
                         -- Put `Current' back on `d'.  
                 local  
                         cd: CLUSTER_DIAGRAM  
                 do  
                         cd ?= d  
                         if cd /= Void then  
                                 cd.add_cluster_figure (Current, False)  
122    
123                                  from          set_to_minimum_size is
124                                          saved_subclusters.start                          -- Set `Current's to `minimum_size'.
125                                  until                  deferred
                                         saved_subclusters.after  
                                 loop  
                                         saved_subclusters.item.put_back_on_diagram (d)  
                                         saved_subclusters.forth  
                                 end  
           
                                 from  
                                         saved_classes.start  
                                 until  
                                         saved_classes.after  
                                 loop  
                                         saved_classes.item.put_back_on_diagram (d)  
                                         saved_classes.forth  
                                 end  
                         end  
126                  end                  end
127                    
128    feature {EIFFEL_WORLD} -- Show/Hide
129    
130          change_origin (new_origin: EV_RELATIVE_POINT) is          disable_shown is
131                          -- Set the point this figure is relative to.                          -- Hide `Current'.
132                          -- Do not change absolute coordinates.                  deferred
133                  do                  ensure
134                          point.change_origin (new_origin)                          set: not is_shown
135                  end                  end
136                    
137            enable_shown is
138                            -- Show `Current'.
139                    deferred
140                    ensure
141                            set: is_shown
142                    end
143                    
144            is_shown: BOOLEAN
145                            -- Is `Current' shown?
146                    
147    feature {EIFFEL_CLUSTER_FIGURE} -- Expand/Collapse
148    
149  feature -- Status report          collapse is
150                            -- Hide all elements in `Current' and minimize `Current'.
         iconified: BOOLEAN  
                         -- Is `Current' iconified?  
   
         is_subcluster_of (other: CLUSTER_FIGURE): BOOLEAN is  
                         -- Is Current a subcluster of `other' (directly or not)?  
                 require  
                         other_not_void: other /= Void  
151                  local                  local
152                          tmp: CLUSTER_FIGURE                          linkable_figure: EG_LINKABLE_FIGURE
153                            cluster_figure: EIFFEL_CLUSTER_FIGURE
154                            e_item: ES_ITEM
155                  do                  do
                         Result := other = Current  
156                          from                          from
157                                  tmp := cluster_figure                                  start
158                          until                          until
159                                  Result = True or tmp = Void                                  after
160                          loop                          loop
161                                  if other = tmp then                                  linkable_figure ?= item                
162                                          Result := True                                  if linkable_figure /= Void then
163                                            e_item ?= linkable_figure.model
164                                            if e_item = Void or else e_item.is_needed_on_diagram then
165                                                    linkable_figure.hide
166                                                    linkable_figure.disable_sensitive
167                                                    from
168                                                            linkable_figure.links.start
169                                                    until
170                                                            linkable_figure.links.after
171                                                    loop
172                                                            linkable_figure.links.item.hide
173                                                            linkable_figure.links.item.disable_sensitive
174                                                            linkable_figure.links.forth
175                                                    end
176                                                    cluster_figure ?= linkable_figure
177                                                    if cluster_figure /= Void and then not cluster_figure.is_iconified then
178                                                            cluster_figure.collapse
179                                                    end
180                                            end
181                                  end                                  end
182                                  tmp := tmp.cluster_figure                                  forth
183                          end                          end
184                  end                          resizer_top_left.disable_sensitive
185                            resizer_top_right.disable_sensitive
186          recursive_has_class (a_class: CLASS_FIGURE): BOOLEAN is                          resizer_bottom_right.disable_sensitive
187                          -- Does `a_class' belong to `Current' or to one of its subclusters?                          resizer_bottom_left.disable_sensitive
188                  require                  end
189                          a_class_not_void: a_class /= Void                  
190            expand is
191                            -- Show all not iconified elements in `Current'.
192                    local
193                            linkable_figure: EG_LINKABLE_FIGURE
194                            l_other: EG_LINKABLE_FIGURE
195                            l_link: EG_LINK_FIGURE
196                            cluster_figure: EIFFEL_CLUSTER_FIGURE
197                            e_item: ES_ITEM
198                  do                  do
                         Result := classes.has (a_class)  
199                          from                          from
200                                  subclusters.start                                  start
201                          until                          until
202                                  Result or else subclusters.after                                  after
203                          loop                          loop
204                                  Result := subclusters.item.recursive_has_class (a_class)                                  linkable_figure ?= item
205                                  subclusters.forth                                  if linkable_figure /= Void then
206                                            e_item ?= linkable_figure.model
207                                            if e_item = Void or else e_item.is_needed_on_diagram then
208                                                    linkable_figure.show
209                                                    linkable_figure.enable_sensitive
210                                                    from
211                                                            linkable_figure.links.start
212                                                    until
213                                                            linkable_figure.links.after
214                                                    loop
215                                                            l_link := linkable_figure.links.item
216                                                            if l_link.source = linkable_figure then
217                                                                    l_other := l_link.target
218                                                            else
219                                                                    l_other := l_link.source
220                                                            end
221                                                            if l_other.is_show_requested  then
222                                                                    l_link.show
223                                                                    l_link.enable_sensitive
224                                                            end
225                                                            linkable_figure.links.forth
226                                                    end
227                                                    cluster_figure ?= linkable_figure
228                                                    if cluster_figure /= Void and then not cluster_figure.is_iconified then
229                                                            cluster_figure.expand
230                                                    end
231                                            end
232                                    end
233                                    forth
234                          end                          end
235                            resizer_top_left.enable_sensitive
236                            resizer_top_right.enable_sensitive
237                            resizer_bottom_right.enable_sensitive
238                            resizer_bottom_left.enable_sensitive
239                  end                  end
240                    
241    feature {NONE} -- Implementation
242    
243          position_strictly_on_figure (x, y: INTEGER): BOOLEAN is          on_needed_on_diagram_changed is
244                          -- Is the point on (`x', `y') on this figure?                          -- `model'.`is_needed_on_diagram' changed.
245                          -- (excluding its subclusters).                  do
246                  deferred                          if model.is_needed_on_diagram then
247                                    show
248                                    enable_sensitive
249                            else
250                                    hide
251                                    disable_sensitive
252                            end
253                            request_update
254                  end                  end
255    
256  feature -- Status setting          save_position is
257                            -- Make a backup of current coordinates.
         set_origin (a_point: EV_RELATIVE_POINT) is  
                         -- Assign `a_point' to the origin of all  
                         -- figures related to `Current'.  
258                  do                  do
259                          point.change_origin (a_point)                          saved_x := port_x
260                            saved_y := port_y
261                            
262                  end                  end
263                            
264          update is          saved_x, saved_y: INTEGER
265                          -- `Current' has just been moved/resized.                          -- Saved positions.
266                            
267            on_move (ax, ay: INTEGER; x_tilt, y_tilt, pressure: DOUBLE; screen_x, screen_y: INTEGER) is
268                            -- Cluster is moving.
269                  do                  do
270                          from                          world.context_editor.restart_force_directed
271                                  subclusters.start                          if world.is_right_angles then
272                          until                                  apply_right_angles
                                 subclusters.after  
                         loop  
                                 subclusters.item.update  
                                 subclusters.item.move_to_front  
                                 subclusters.forth  
273                          end                          end
                         from  
                                 classes.start  
                         until  
                                 classes.after  
                         loop  
                                 classes.item.update  
                                 classes.forth  
                         end  
                 end  
   
         set_size (a_width, a_height: INTEGER) is  
                         -- Resize `Current' to `a_width', `a_height'.  
                 require  
                         a_width_non_negative: a_width >= 0  
                         a_height_non_negative: a_height >= 0  
                 deferred  
                 end  
   
         set_minimum_bounds (a_left, a_top, a_right, a_bottom: INTEGER) is  
                         -- Assign minimum bounds.  
                 deferred  
                 end  
   
         update_minimum_size is  
                         -- Figures have been added/removed in `Current',  
                         -- minimum size should change.  
                 deferred  
274                  end                  end
275    
276          set_bounds (a_left, a_top, a_right, a_bottom: INTEGER) is          extend_history is
277                          -- Assign bounds.                          -- Register move in the history.
                 deferred  
                 end  
   
         set_relative_position_and_size (a_x, a_y, a_width, a_height: INTEGER) is  
                         -- Assign bounds.  
                 deferred  
                 end  
   
         iconify is  
                         -- Iconify `Current'.  
                 deferred  
                 ensure  
                         is_iconified: iconified  
                 end  
   
         deiconify is  
                         -- Deiconify `Current'.  
                 deferred  
                 ensure  
                         is_not_iconified: not iconified  
                 end  
   
         mask is  
                         -- `Current' no longer needs to be displayed.  
                 deferred  
                 end  
   
         unmask is  
                         -- `Current' needs to be displayed again.  
                 deferred  
                 end  
   
 feature {CLUSTER_FIGURE} -- Events  
   
         move_to_front is  
                         -- Make `Current' appear in front of its peers.  
                 deferred  
                 end      
   
 feature {NONE} -- Implementation  
   
         external_client_links: LINKED_LIST [CLIENT_SUPPLIER_FIGURE] is  
                         -- Client figures which `supplier' is a figure inside `Current',  
                         -- and `client' is a figure outside `Current'.  
278                  local                  local
279                          class_client_links: LINKED_LIST [CLIENT_SUPPLIER_FIGURE]                          ce: EB_CONTEXT_EDITOR
280                  do                  do
281                          from                          ce := world.context_editor
282                                  classes.start                          world.context_editor.history.do_named_undoable (
283                          until                                          interface_names.t_Diagram_move_cluster_cmd,
284                                  classes.after                                          [<<agent set_port_position (port_x, port_y), agent ce.restart_force_directed>>],
285                          loop                                          [<<agent set_port_position (saved_x, saved_y), agent ce.restart_force_directed>>])
286                                  class_client_links := classes.item.client_figures                          if world.context_editor.is_force_directed_used then
287                                    set_is_fixed (True)
288                            end
289                    end
290                    
291            on_linkable_add (a_linkable: EG_LINKABLE) is
292                            -- `a_linkable' was added to the cluster.
293                    local
294                            l_world: like world
295                            linkable_fig: EG_LINKABLE_FIGURE
296                            link_fig: EG_LINK_FIGURE
297                            scsc: EG_CLUSTER_FIGURE
298                            e_item: ES_ITEM
299                            cs_link: EIFFEL_CLIENT_SUPPLIER_FIGURE
300                            i_link: EIFFEL_INHERITANCE_FIGURE
301                            c_fig: EG_LINKABLE_FIGURE
302                    do
303                            l_world := world
304                            if l_world /= Void then
305                                    linkable_fig ?= l_world.items_to_figure_lookup_table.item (a_linkable)
306                                    check
307                                            linkable_fig_is_in_view_but_not_in_cluster: linkable_fig /= Void not has (linkable_fig)
308                                    end
309                                    extend (linkable_fig)
310                                    linkable_fig.set_cluster (Current)
311                                    
312                                  from                                  from
313                                          class_client_links.start                                          l_world.links.start
314                                  until                                  until
315                                          class_client_links.after                                          l_world.links.after
316                                  loop                                  loop
317                                          if class_client_links.item.client.cluster_figure /= Current then                                          link_fig := l_world.links.item
318                                                  Result.extend (class_client_links.item)                                          if link_fig.source /= Void and then link_fig.target /= Void then
319                                                    e_item ?= link_fig.model
320                                                    if e_item = Void or else e_item.is_needed_on_diagram then
321                                                            scsc := world.smallest_common_supercluster (link_fig.source, link_fig.target)
322                                                            if scsc /= Void and then not scsc.has (link_fig) then
323                                                                    scsc.go_i_th (scsc.number_of_figures)
324                                                                    cs_link ?= link_fig
325                                                                    if cs_link /= Void or else scsc.index = scsc.count then
326                                                                            scsc.put_right (link_fig)
327                                                                    else
328                                                                            from
329                                                                                    i_link := Void
330                                                                                    c_fig := Void
331                                                                            until
332                                                                                    i_link /= Void or else c_fig /= Void
333                                                                            loop
334                                                                                    scsc.forth
335                                                                                    i_link ?= scsc.item
336                                                                                    c_fig ?= scsc.item
337                                                                            end
338                                                                            scsc.put_left (link_fig)
339                                                                    end
340                                                            end
341                                                    end
342                                          end                                          end
343                                          class_client_links.forth                                          l_world.links.forth
344                                  end                                  end
                                 classes.forth  
345                          end                          end
346                          --| FIXME: take subclusters into account as well.                          request_update
347                    end
348                    
349            on_handle_start is
350                            -- User started to move `Current'.
351                    do
352                            was_fixed := is_fixed
353                            if world.context_editor.is_force_directed_used then
354                                    set_is_fixed (True)
355                            end
356                    end
357                    
358            on_handle_end is
359                            -- User ended to move `Current'.
360                    do
361                            set_is_fixed (was_fixed)
362                  end                  end
363    
364          external_supplier_links: LINKED_LIST [CLIENT_SUPPLIER_FIGURE] is          update_links is
365                          -- Client figures which `client' is a figure inside `Current',                          -- Update all links in `Current'.
                         -- and `supplier' is a figure outside `Current'.  
366                  local                  local
367                          class_supplier_links: LINKED_LIST [CLIENT_SUPPLIER_FIGURE]                          i, nb: INTEGER
368                            l_link: EG_LINK_FIGURE
369                  do                  do
370                          from                          from
371                                  classes.start                                  i := 1
372                          until                          until
373                                  classes.after                                  i > nb
374                          loop                          loop
375                                  class_supplier_links := classes.item.supplier_figures                                  l_link ?= i_th (i)
376                                  from                                  if l_link /= Void then
377                                          class_supplier_links.start                                          l_link.update
                                 until  
                                         class_supplier_links.after  
                                 loop  
                                         if class_supplier_links.item.supplier.cluster_figure /= Current then  
                                                 Result.extend (class_supplier_links.item)  
                                         end  
                                         class_supplier_links.forth  
378                                  end                                  end
379                                  classes.forth                                  i := i + 1
380                          end                          end
                         --| FIXME: take subclusters into account as well.  
                 end  
   
         saved_subclusters: LINKED_LIST [CLUSTER_FIGURE]  
                         -- Subclusters backup to undo delete command.  
   
         saved_classes: LINKED_LIST [CLASS_FIGURE]  
                         -- Classes backup to undo delete command.  
   
         on_pebble_request: ANY is  
                         -- New CLUSTER_STONE with `Current' as source.  
                 do  
                         create {CLUSTER_FIGURE_STONE} Result.make (Current)  
                 end  
   
         old_width: INTEGER is  
                         -- Backup of `width' for iconifying.  
                 deferred  
                 end  
   
         old_height: INTEGER is  
                         -- Backup of `height' for iconifying.  
                 deferred  
                 end  
   
         minimum_width: INTEGER is  
                         --  
                 deferred  
381                  end                  end
382                    
383  end -- class CLUSTER_FIGURE  end -- class EIFFEL_CLUSTER_FIGURE
   
   
   
   

Legend:
Removed from v.34581  
changed lines
  Added in v.47281

  ViewVC Help
Powered by ViewVC 1.1.23