[Seaside] General subclassing question with regards to callbacks...

Richard E. Flower rickf at ca-flower.com
Tue Nov 11 07:28:12 UTC 2008


Hi all...

I'm stumped once again -- it's probably just another ST thing that is  
throwing me for a loop..
Anyway, I've got a generic 'edit/add' widget that shows a list of  
records and then depending
on the personality selected (by the parent menu), it invokes either  
the vanilla 'add' class
to draw the form for a new record OR we render the 'editSelector'  
class who squirrels away the 'clickBlock'
for later (in case the user clicks/selects a particular user).  So, my  
initialize method and friends for the
EditSelector class looks like :

EditSelector>>initialize
	super initialize.
	userSelector := Admin_User_RecordSelector on: self.
	userEditor   := Admin_User_EditExecutor on: self.
	self userSelector clickBlock: [ : each |
		self userEditor user: each.
		self call: self userEditor.
	].

EditSelector>>renderContentOn:  html
	html render: userSelector.

While the above 'clickBlock' is valid, how its used elsewhere is not.  
See use of onClick:
below and above.. I would like to be able to determine once the user  
presses on
a row to select that user and perform an operation on them (whether it  
be delete or edit).
Anyway, the clickBlock which will handle the task portion of it is  
failing indicating that
the wrong argument count was specified (expects 1, got 0).  Any ideas?  
Hope this makes
sense!

-- Rick

Admin_User_RecordSelector >>initialize

	super initialize.
	clickBlock := nil.
	columns := OrderedCollection new
		add: (WAReportColumn selector: #familyId title: 'Family ID');  
"selector gets performed on your data item"
		add: (WAReportColumn selector: #nameLast title: 'Family Last Name ');
		yourself.

Admin_User_RecordSelector >>renderContentOn:  html

	"Get the current list of users to show..."
	self rows: (self users).
	html break.
      html paragraph class: 'legend_lookalike'; with: 'Select a Family  
to Edit - click on a family name'.
	super renderContentOn: html.

Admin_User_RecordSelector >>renderRowNumber: index item: row on: html

	"Override the onClick: method to do what we want..."
	html tableRow id: 'row' , index asString;
		class:  (self classForRowNumber: index);
		script: (self componentScriptOn: index);
		 onClick: [ self clickBlock ];
		with: [columns
				do: [:ea | self
						renderColumn: ea
						row: row
						on: html]]


More information about the seaside mailing list