Как мне легко показать / скрыть взгляды в гриффоне - PullRequest
5 голосов
/ 05 декабря 2010

Во-первых: я в шоке, что мне нужно задать этот вопрос.Нигде в документации не объясняется, как следует использовать новый «WindowManager» ... Я пытался разобраться с этим несколько часов, и у меня до сих пор нет удовлетворительного способа сделать что-то столь тривиальное, как это:

def vName = 'Error'
if (!app.views[vName]) { //I just want to create it once, otherwise I'd just change it's model and want to show() it!
  buildMVCGroup(vName, vName, errorCode: 500, message: "fail detected ;-)") //ok, this indeed shows the idem (as it's an "frame(/**/show: true,/*...*/", but I dont want to create it each time
}

//    app.windowManager.show(app.views.Error) //fails, show() want's an Window, and app.views.Error is of ErrorView type
//    app.views.Error.visible = true //won't display the view
//    app.views.Error.show() // there is no such method

Мне также нужен хороший способ скрыть, что-то вроде:

//in controller
def view
def hideAction = {
  //view.hide() //fails, no such method...
}

Еще один способ сделать меня счастливым - это простой способ "когда пользователь нажимает кнопку ОК (в ErrorView")избавьтесь от этой MVCGroup. Я искал и читал примеры довольно давно сегодня, но до сих пор не могу понять, как кодировать такой простой поток приложений, хм ...

Большое спасибо заранее за любую идеюо том, как это сделать, ура

Ответы [ 4 ]

4 голосов
/ 01 марта 2011

Для кадров - что я сделал ...

На мой взгляд, я предоставляю имя для кадра

application(name: 'login', ...

Затем в контроллере яdo

app.windowManager.hide(app.windowManager.findWindow('login')) app.windowManager.show(app.windowManager.findWindow('workspace'))

Итак ... я удостоверяюсь, что я "назову" все мои представления, а затем я могу легко показать / скрыть с помощью оконного менеджера ...

Ваше право на документы.Я надеюсь, что то, что я делаю, является «правильным делом».

2 голосов
/ 05 декабря 2010

Это действительно так. Он вызывает функцию setVisible, которая есть в большинстве JComponents.

show () / hide () - синтаксический сахар в Groovy / Griffon, который когда-то был в J2SE, но долгое время считался устаревшим.

1 голос
/ 05 декабря 2010

Хорошо, я нашел довольно хорошее решение для этого:

application(/**/){
  //...
  myError = dialog(/**/){
    //thats my error window
  }
}

А потом в контроллере я бы просто:

view.myError.visible = true

Это довольно элегантно для такой вещи, надеюсьэто "правильно": -)

0 голосов
/ 28 ноября 2011

Другой вариант - использовать CardLayout для каждого экрана, который вы хотите отобразить. Тогда вы можете легко показать / скрыть экраны. Это в сочетании с MigLayout для отдельных карт работает очень хорошо.

...