I do not have much time for a more complete answer, unfortunately, but I would try uitable to create a table and define a CellSelectionCallback to get the date.
Here is a bit to get you started:
dates = calendar; dates(~any(dates,2),:) = []; fh = figure; uh = uitable('parent',fh,'data',dates,'ColumnWidth',repmat({20},1,7),... 'ColumnName',{'S','M','T','W','T','F','S'});
Jonas
source share