Как показать вторую группу MVC в виде диалогового окна в гриффоне - PullRequest
4 голосов
/ 13 апреля 2009

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

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

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

Ответы [ 2 ]

0 голосов
/ 15 апреля 2009

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

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

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

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

view.loginDialog.visible = true

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

0 голосов
/ 14 апреля 2009

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

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