Как показать вторую группу MVC в виде диалогового окна в грифоне

Я вижу, как создать вторую группу MVC, например.

def (loginPaneModel, loginPaneView, loginPaneController) =
      createMVCGroup('LoginPane', 'LoginPane', [:]);
view.loginPanel = loginPaneView.loginPanel

Но я не хочу показывать как часть моего главного окна. Я хочу, чтобы он выскочил над ним. Что я призываю для этого? Спасибо!


person greymatter    schedule 13.04.2009    source источник


Ответы (2)


Самый простой способ — использовать панель просмотра в качестве корня диалога в родительской группе MVC. В представлении для группы, в которой ваш фрагмент кода является контроллером, вы можете сделать что-то вроде этого...

application(title:'your app', ....) {
  // your existing code...

  loginDialog = dialog(title:'Login Panel', visible:false) {
    panel(loginPanel)
  }
}

И тогда, когда вам нужно показать диалог (в том же контроллере)

view.loginDialog.visible = true

Вложение диалогового окна в другое окно имеет побочный эффект установки владельца диалогового окна во фрейм или диалоговое окно родителя. Наличие диалогового окна, принадлежащего другому диалоговому окну/окну, является причиной того, что диалоговое окно связано с родителем и всегда плавает поверх этого родителя. Он также будет подниматься/опускаться вместе с родителем.

person shemnon    schedule 15.04.2009

Ну вроде нужна только первая строчка. Этого было достаточно, чтобы открыть окно. Я считаю, что ключевым моментом было сделать представление кадром.

def frame = frame(title:'Login', pack:true, locationByPlatform:true) {
     ...
}
frame.pack()
frame.show()
person greymatter    schedule 14.04.2009