void CallSelect(w, Col, call_data)
   struct Column_Info *Col;
   Widget w;
   XmListCallbackStruct *call_data;
{
   int i;
   struct Widget_Info *Table;

   if(call_data->reason == XmCR_SINGLE_SELECT ||
      call_data->reason == XmCR_DEFAULT_ACTION ||
      call_data->reason == XmCR_BROWSE_SELECT)
   {
      RefNumber = call_data->item_position;
      printf("chosen Table %d\n", RefNumber);
      XtUnmanageChild(w);
      if (!Col) /* if called from choose_ref_for_table() */
      {
         C.AttTableNumCols = 10;
         C.AttValues = (char **) G_malloc(10 * sizeof(char *));
         C.AttValues[0] = "1";
         C.AttValues[1] = "2";
         C.AttValues[2] = "3";
         C.AttValues[3] = "4";
         C.AttValues[4] = "5";
         C.AttValues[5] = "1";
         C.AttValues[6] = "2";
         C.AttValues[7] = "3";
         C.AttValues[8] = "4";
         C.AttValues[9] = "5";
         C.AttKeys = (char **) G_malloc(1 * sizeof(char *));
         C.AttKeys[0] = "4";
         C.nalloc = 0;
         C.AttTableName = G_store("Table C");
         Create_Edit_Dialog(w, &C);
         XtManageChild(C.AttTable);
      }
      else
      {
	 Table = (struct Widget_Info *) Col->parent_table;
	 i = Col->col_num;
	 /* first unhighlight former highlight list */
	 if(Table->CurrentLinkSet)
	     highlite_links(Table, 0);
         get_link_set(i, Table);
 	 /* now highlight new link set */
	 highlite_links(Table, 1);

	 printf("follow link: %d\n", i);
      }
   }
}
