+ FGPanelAction ();
+ FGPanelAction (int button, int x, int y, int w, int h, bool repeatable);
+ virtual ~FGPanelAction ();
+
+ // Getters.
+ virtual int getButton () const { return _button; }
+ virtual int getX () const { return _x; }
+ virtual int getY () const { return _y; }
+ virtual int getWidth () const { return _w; }
+ virtual int getHeight () const { return _h; }
+
+ // Setters.
+
+ // transfer pointer ownership
+ virtual void addBinding (SGBinding * binding, int updown);
+ virtual void setButton (int button) { _button = button; }
+ virtual void setX (int x) { _x = x; }
+ virtual void setY (int y) { _y = y; }
+ virtual void setWidth (int w) { _w = w; }
+ virtual void setHeight (int h) { _h = h; }
+
+ // Check whether we're in the area.
+ virtual bool inArea (int button, int x, int y)
+ {
+ return (button == _button &&
+ x >= _x &&
+ x < _x + _w &&
+ y >= _y &&
+ y < _y + _h);
+ }
+
+ // Perform the action.
+ virtual bool doAction (int updown);
+
+private:
+ typedef vector<SGBinding *> binding_list_t;
+
+ int _button;
+ int _x;
+ int _y;
+ int _w;
+ int _h;
+ bool _repeatable;
+ int _last_state;
+ binding_list_t _bindings[2];