@Override
  public void onReceive(Object msg) throws Exception {

    if (msg instanceof UpdateAllGUI) {
      updateAllGui(getSelectedDates());
    }

    if (msg instanceof AddSelectedDatesRequest) {
      AddSelectedDatesRequest gsdr = (AddSelectedDatesRequest) msg;

      SelectorComponent component = this.view.selector_components.get(gsdr.message);
      Collection<SelectedDate> dates = component.getSelectedDates();
      selectedActor.tell(new AddDatesMessage(dates));

      updateAllGui(getSelectedDates());
    }

    if (msg instanceof SetVisibleMessage) {
      javax.swing.SwingUtilities.invokeLater(
          new Runnable() {

            @Override
            public void run() {
              GUITest.showComponent(view);
            }
          });
    }

    if (msg instanceof RemoveDateActionEvent) {
      RemoveDateActionEvent rdae = (RemoveDateActionEvent) msg;

      List<SelectedDate> l = new ArrayList<SelectedDate>();
      l.add(rdae.date);
      RemoveSelectedDatesMessage rsdm = new RemoveSelectedDatesMessage(l);
      selectedActor.tell(rsdm);

      // update the componentes
      updateAllGui(getSelectedDates());
    }

    if (msg instanceof UPDATEUI) {
      // trick to get the stupid view to refresh
      Dimension size = this.view.getSize();
      size.height += 1;
      this.view.setSize(size);
      size.height -= 1;
      this.view.setSize(size);
      System.out.println("revalidate");
    }

    if (msg instanceof RemoveAllDates) {
      @SuppressWarnings("unused")
      RemoveAllDates rdae = (RemoveAllDates) msg;
      selectedActor.tell(new RemoveAllDates());
      updateAllGui(new ArrayList<SelectedDate>());
    }

    if (msg instanceof RemoveSelectedDatesMessage) {
      System.out.println("messaged was told");
      selectedActor.tell(msg);
      updateAllGui(this.getSelectedDates());
    }

    if (msg instanceof SetMaster) {
      this.master = ((SetMaster) msg).ref;
    }
  }