def METHOD_NAME(self, master):
    """create dialog body.
    return entry that should have initial focus.
    This method should be overridden, and is called
    by the __init__ method.
    """
    count = 0
    entryList = []
    self.balloonList = []
    for property in self.propertyList:
        propertySet = self.propertyDict[property]
        # Widget
        widget = propertySet.get('widget', None)
        # Get initial value
        initialvalue = widget[property]
        # Type of entry
        entryType = propertySet.get('type', 'real')
        # Is None an allowable value?
        fAllowNone = propertySet.get('fNone', 0)
        # Help string specified?
        helpString = propertySet.get('help', None)
        # Create label
        label = tk.Label(master, text=property, justify=tk.LEFT)
        label.grid(row=count, column=0, padx=5, sticky=tk.W)
        # Create entry
        entry = Pmw.EntryField(master, entry_justify=tk.RIGHT)
        entry.grid(row=count, column=1, padx=5, sticky=tk.W + tk.E)
        if initialvalue is None:
            entry.insert(0, 'None')
        else:
            entry.insert(0, initialvalue)
        # Create balloon for help
        balloon = Pmw.Balloon(state='balloon')
        self.balloonList.append(balloon)
        # extra info if None is allowed value
        if helpString is None:
            if fAllowNone:
                extra = ' or None'
            else:
                extra = ''
        # Set up help string and validator based upon type
        if entryType == 'real':
            # Only allow real numbers
            if fAllowNone:
                entry['validate'] = {'validator': self.realOrNone}
            else:
                entry['validate'] = {'validator': 'real'}
            if helpString is None:
                helpString = 'Enter a floating point number' + extra + '.'
        elif entryType == 'integer':
            # Only allow integer values
            if fAllowNone:
                entry['validate'] = {'validator': self.intOrNone}
            else:
                entry['validate'] = {'validator': 'integer'}
            if helpString is None:
                helpString = f'Enter an integer{extra}.'
        else:
            # Anything goes with a string widget
            if helpString is None:
                helpString = f'Enter a string{extra}.'
        # Bind balloon with help string to entry
        balloon.bind(entry, helpString)
        # Create callback to execute whenever a value is changed
        modifiedCallback = (lambda f=self.modified, w=widget, e=entry,
                            p=property, t=entryType, fn=fAllowNone:
                            f(w, e, p, t, fn))
        entry['modifiedcommand'] = modifiedCallback
        # Keep track of the entrys
        entryList.append(entry)
        count += 1
    # Set initial focus
    if len(entryList) > 0:
        entry = entryList[0]
        entry.select_range(0, tk.END)
        # Set initial focus to first entry in the list
        return entryList[0]
    else:
        # Just set initial focus to self
        return self