public void update() {
   listenersEnabled = false;
   try {
     Date startDate = model.getStartDate();
     startDateSelection.setDate(startDate);
     final PeriodModel periodModel = getPeriodModel();
     periodChooser.setPeriodModel(periodModel);
     periodChooser.setDate(startDate);
     Date endDate = model.getEndDate();
     periodPanel.setVisible(periodModel.getSize() > 0);
     endDateSelection.setDate(DateTools.subDay(endDate));
   } finally {
     listenersEnabled = true;
   }
 }
  public IntervalChooserPanel(RaplaContext sm, CalendarModel model) throws RaplaException {
    super(sm);
    this.model = model;

    periodChooser = new PeriodChooser(getContext(), PeriodChooser.START_AND_END);
    periodChooser.setWeekOfPeriodVisible(false);

    startDateSelection = createRaplaCalendar();
    endDateSelection = createRaplaCalendar();
    // prevButton.setText("<");
    // nextButton.setText(">");
    double pre = TableLayout.PREFERRED;
    double[][] sizes = {{5, pre, 5, pre, 5, 0.9, 0.02}, {pre}};
    TableLayout tableLayout = new TableLayout(sizes);

    int todayWidth = (int) Math.max(40, startTodayButton.getPreferredSize().getWidth());

    startTodayButton.setPreferredSize(new Dimension(todayWidth, 20));
    endTodayButton.setPreferredSize(new Dimension(todayWidth, 20));

    panel.setLayout(tableLayout);

    JPanel startPanel = new JPanel();
    TitledBorder titleBorder = BorderFactory.createTitledBorder(getString("start_date"));
    startPanel.setBorder(titleBorder);

    startPanel.add(startDateSelection);
    // BJO 00000042
    startPanel.add(startTodayButton);
    startPanel.add(prevStartButton);
    startPanel.add(nextStartButton);
    startTodayButton.addActionListener(listener);
    prevStartButton.addActionListener(listener);
    nextStartButton.addActionListener(listener);
    // BJO 00000042
    panel.add(startPanel, "1,0");

    JPanel endPanel = new JPanel();
    titleBorder = BorderFactory.createTitledBorder(getString("end_date"));
    endPanel.setBorder(titleBorder);
    endPanel.add(endDateSelection);
    // BJO 00000042
    endPanel.add(endTodayButton);
    endPanel.add(prevEndButton);
    endPanel.add(nextEndButton);
    endTodayButton.addActionListener(listener);
    prevEndButton.addActionListener(listener);
    nextEndButton.addActionListener(listener);
    // BJO 00000042
    panel.add(endPanel, "3,0");

    periodPanel = new JPanel(new GridLayout(1, 1));
    titleBorder = BorderFactory.createTitledBorder(getString("period"));
    periodPanel.setBorder(titleBorder);
    periodPanel.add(periodChooser);

    panel.add(periodPanel, "5,0");
    periodChooser.addActionListener(listener);

    startDateSelection.addDateChangeListener(listener);
    endDateSelection.addDateChangeListener(listener);
    update();
  }