For the push button power switch, look at the circuit referenced in
this post.
So far as keeping the processor in sleep mode goes, that's software controlled, obviously. You'll need to shutdown everything except the signal that tells your MCU that mains power has returned. See the attached schematic snippet for how I did this for a project. Note that the MCU is powered from the 3V button cell when the primary power source is absent. An LTC4412 OR-ing controller IC handles the switch over between the two power sources. It doesn't sound like your project will be battery powered while it is sleeping but it will still have a similar signal that tells it that it needs to be in low power mode.
The LPM signal goes to the MCU's INT1 pin, which is a high-priority interrupt. When the interrupt is triggered, in the case of my project, I just set a global variable based on the pin's value. My project is completely interrupt driven so the main() function is nothing more than a state machine that keys-off of that variable (and some other conditions) and controls the MCU's sleep mode based on it.
I can post my project source if you're interested. It's not my best effort (I kind of hacked it out over a weekend) but it sounds like what I did is going to be very similar to what you are going to do. In my case I kept the RTC enabled but you might not need that.