code: def InitUI(self):
          
          if self.data_type in ['orient', 'ages']:
              belongs_to = []
          else:
              parent_table_name = self.parent_type + "s"
              if parent_table_name in self.contribution.tables:
                  belongs_to = sorted(self.contribution.tables[parent_table_name].df.index.unique())
              else:
                  belongs_to = []
  
          self.choices = {}
          if self.data_type in ['specimens', 'samples', 'sites']:
              self.choices = {1: (belongs_to, False)}
          if self.data_type == 'orient':
              self.choices = {1: (['g', 'b'], False)}
          if self.data_type == 'ages':
              for level in ['specimen', 'sample', 'site', 'location']:
                  if level in self.grid.col_labels:
                      level_names = []
                      if level + "s" in self.contribution.tables:
                          level_names = list(self.contribution.tables[level+"s"].df.index.unique())
                      num = self.grid.col_labels.index(level)
                      self.choices[num] = (level_names, False)
          # Bind left click to drop-down menu popping out
          self.grid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK,
                         lambda event: self.on_left_click(event, self.grid, self.choices))
  
          cols = self.grid.GetNumberCols()
          col_labels = [self.grid.GetColLabelValue(col) for col in range(cols)]
  
          # check if any additional columns have controlled vocabularies
          # if so, get the vocabulary list
          for col_number, label in enumerate(col_labels):
              self.add_drop_down(col_number, label)
docs: Initialize interface for drop down menu