重构contextmenu实现