anchor.diff:  handle_event(#wx{id=?wxID_CLOSE}, State) ->
       {stop, normal, State};
   
  -handle_event(Help = #wx{id=?wxID_HELP}, State = #state{parent=Parent}) ->
  -    Parent ! Help,
  +handle_event(Help = #wx{id=?wxID_HELP}, State) ->
  +    observer ! Help,
       {noreply, State};
   
   handle_event(#wx{id=?GOTO_ENTRY, event=#wxCommand{cmdString=Str}},
  
positive.code: get_row(From, Row, Col, Table) ->
      case lists:nth(Row+1, Table) of
  	[Object|_] when Col =:= all ->
  	    From ! {self(), io_lib:format("~w", [Object])};
  	[Object|_] when tuple_size(Object) >= Col ->
  	    From ! {self(), io_lib:format("~w", [element(Col, Object)])};
  	_ ->
  	    From ! {self(), ""}
      end.
  
negative.code:     Timer = observer_lib:interval_dialog(Grid, Timer0, 10, 5*60),
      {noreply, State#state{timer=Timer}};
  
  handle_event(_Event, State) ->
      %io:format("~p:~p, handle event ~p\n", [?MODULE, ?LINE, Event]),
      {noreply, State}.
  
  handle_sync_event(_Event, _Obj, _State) ->
      %io:format("~p:~p, handle sync_event ~p\n", [?MODULE, ?LINE, Event]),
      ok.
  
  handle_call(_Event, _From, State) ->
      %io:format("~p:~p, handle call (~p) ~p\n", [?MODULE, ?LINE, From, Event]),
      {noreply, State}.
  
  handle_cast(_Event, State) ->
      %io:format("~p:~p, handle cast ~p\n", [?MODULE, ?LINE, Event]),
      {noreply, State}.
  
  handle_info({no_rows, N}, State = #state{grid=Grid, status=StatusBar}) ->
  