How can I make my custom board use the programmer selected in "Tools->Programmer" when the Upload button is pushed?
Make sure you do not have a protocol listed in the boards.txt file. If the uploader sees protocol is null then it will fall back to using the same code that "Upload using programmer" does. 

Relevant code in SerialUploader.java:

    if (usingProgrammer || prefs.get("upload.protocol") == null) {
      return uploadUsingProgrammer(buildPath, className);
    }