# # $Id: spin.icn,v 1.4 2004/11/11 19:53:42 rparlett Exp $ # # This file is in the public domain. # # Author: Robert Parlett (parlett@dial.pipex.com) # package gui link graphics $include "guih.icn" # # This class is the base class for all spin components. It just provides the up/down # buttons and two abstract methods which are invoked to implement those actions. # class Spin : Component(up, down) # # This method must be overridden to do something to the component when the # up button is pressed. # abstract method do_increment() # # This method must be overridden to do something to the component when the # down button is pressed. # abstract method do_decrement() method on_up(ev) go_up(ev) end method on_down(ev) go_down(ev) end method go_up(e) do_increment() fire(SELECTION_CHANGED_EVENT, e) end method go_down(ev) do_decrement() fire(SELECTION_CHANGED_EVENT, e) end initially() self.Component.initially() self.up := IconButton() self.up.connect(self, "on_up", BUTTON_PRESS_EVENT) self.up.connect(self, "on_up", BUTTON_HELD_EVENT) self.up.toggle_draw_border() self.up.set_img(img_style("tiny_arrow_up")) self.up.clear_accepts_focus() self.add(up) self.down := IconButton() self.down.connect(self, "on_down", BUTTON_PRESS_EVENT) self.down.connect(self, "on_down", BUTTON_HELD_EVENT) self.down.toggle_draw_border() self.down.set_img(img_style("tiny_arrow_down")) self.down.clear_accepts_focus() self.add(down) end