I can think of three options.

This is all happening between the top and bottom switch.

1 - Remember direction of travel:
If the gate is going down, write a value to a variable or EEPROM so the after you stop the gate , the next time the button is pushed, read the stored value and have that value equal down. Use the same method but a different value for up.

2 - Toggle reverse/start/stop:
If the gate is in motion - push button to stop - remember the direction of travel. Push button again and the gate reverses.. If not going the way you want it to push the button two more times.

3 - GET ANOTHER BUTTON!