Re: [ovirt-devel] popup dialog
which type does result.getReturnValue() got, And how could I set it in the backend. 在 8/14/14, 21:57, Vojtech Szocs vsz...@redhat.com 写入: - Original Message - From: Leaboy wlblea...@126.com To: Vojtech Szocs vsz...@redhat.com Cc: devel@ovirt.org Sent: Thursday, August 14, 2014 2:12:37 PM Subject: Re: [ovirt-devel] popup dialog Hi: you said that ,I have done, and the dialog Can display, and I can pass a parameter from dialog To the backend executeCommand(). Now the question is, after executeCommand(), Hou could I get the return value in the frontend. For example, when I clicked backup button, A dialog is display, now I type some parameters into The dialog, click OK button, the backend executeCommand() Do something, now, I need some value from executeCommand() to frontend. Sorry, I missed that your question was about executing backend command (I thought you referred to Model.executeCommand) ... Backup dialog's OK button is represented by: UICommand tempVar = new UICommand(OnBackup, this); When user clicks OK button, that ^^ UICommand is executed. Model's executeCommand should route flow to some onBackup() method, I assume you already did this: // inside TemplateListModel#executeCommand ... else if (OnBackup.equals(command.getName())) { onBackup(); } ... // inside TemplateListModel private void onBackup() { TemplateBackupModel windowModel = (TemplateBackupModel) getWindow(); // do nothing if windowModel is already doing something -or- if // windowModel validation failed (i.e. bad/missing user input) if (windowModel.getProgress() != null || !windowModel.validate()) { return; } // this replaces dialog content UI with progress animated image // to indicate that a call to backend is about to be initiated windowModel.startProgress(null); // on backend, assume you have TemplateBackupCommand that works // with parameter type TemplateBackupParameters TemplateBackupParameters params = new TemplateBackupParameters(); // update params according to window model params.setFoo(windowModel.getFoo().getEntity()); // this is the async callback executed when backend command // (TemplateBackupCommand in our case) has done its job IFrontendActionAsyncCallback callback = new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult result) { TemplateListModel listModel = (TemplateListModel) result.getState(); listModel.postOnBackup(result.getReturnValue()); } }; // call backend Frontend.getInstance().runAction( VdcActionType.TemplateBackup, params, callback, this); } // still inside TemplateListModel private void postOnBackup(VdcReturnValueBase returnValue) { // at this point, backend has replied with returnValue, // we can remove progress animated image in dialog getWindow().stopProgress(); // if the backend operation was successful, close the // dialog (otherwise the dialog will remain open) if (returnValue != null returnValue.getSucceeded()) { setWindow(null); } } Regards, Vojtech 在 8/14/14, 19:48, Vojtech Szocs vsz...@redhat.com 写入: - Original Message - From: Leaboy wlblea...@126.com To: Vojtech Szocs vsz...@redhat.com Cc: devel@ovirt.org Sent: Thursday, August 14, 2014 6:19:17 AM Subject: Re: [ovirt-devel] popup dialog Hi,Vojtech Szocs: Thanks for your help, I have let it work, The Error I got just because I miss the step 3 you noted. Another question is how could I got the returnValue after executeCommand , and let the returnValue display on the oher Popup dialog. Please add this into MainTabTemplateView: ... getTable().addActionButton(new WebAdminButtonDefinitionVmTemplate(constants.templateBackup()) { @Override protected UICommand resolveCommand() { return getMainModel().getTemplateBackupCommand(); } }); ... This adds a button under Template main tab. When clicked, it executes given command (getTemplateBackupCommand) on model (TemplateListModel). Model's executeCommand() ensures that backup() method is called. Inside backup() method, you call setWindow(model) which triggers an event - UI infra handles this event and uses getModelPopup (see TemplateModule) to resolve window model to GWTP PresenterWidget which is then revealed as popup. This is how dialogs work in UiCommon / UI (GWTP) infra. how could I got the returnValue after executeCommand As I wrote above, executeCommand() just calls appropriate method (like backup) on the list model. That method has no return value (void) since it uses setWindow(model) to trigger event to notify UI infra to reveal a dialog. If you need to pass data to dialog, for example: ... TemplateBackupModel model = new TemplateBackupModel(); setWindow(model); ... set window model's
Re: [ovirt-devel] popup dialog
- Original Message - From: Leaboy wlblea...@126.com To: Vojtech Szocs vsz...@redhat.com Cc: devel@ovirt.org Sent: Friday, August 15, 2014 9:31:34 AM Subject: Re: [ovirt-devel] popup dialog which type does result.getReturnValue() got, public void executed(FrontendActionAsyncResult result) { ... } result.getReturnValue() returns VdcReturnValueBase result.getReturnValue().getActionReturnValue() returns the result of backend command (action) execution For example, your backend command does this: getReturnValue().setActionReturnValue(obj); Then obj is what you get on frontend with: result.getReturnValue().getActionReturnValue(); And how could I set it in the backend. 在 8/14/14, 21:57, Vojtech Szocs vsz...@redhat.com 写入: - Original Message - From: Leaboy wlblea...@126.com To: Vojtech Szocs vsz...@redhat.com Cc: devel@ovirt.org Sent: Thursday, August 14, 2014 2:12:37 PM Subject: Re: [ovirt-devel] popup dialog Hi: you said that ,I have done, and the dialog Can display, and I can pass a parameter from dialog To the backend executeCommand(). Now the question is, after executeCommand(), Hou could I get the return value in the frontend. For example, when I clicked backup button, A dialog is display, now I type some parameters into The dialog, click OK button, the backend executeCommand() Do something, now, I need some value from executeCommand() to frontend. Sorry, I missed that your question was about executing backend command (I thought you referred to Model.executeCommand) ... Backup dialog's OK button is represented by: UICommand tempVar = new UICommand(OnBackup, this); When user clicks OK button, that ^^ UICommand is executed. Model's executeCommand should route flow to some onBackup() method, I assume you already did this: // inside TemplateListModel#executeCommand ... else if (OnBackup.equals(command.getName())) { onBackup(); } ... // inside TemplateListModel private void onBackup() { TemplateBackupModel windowModel = (TemplateBackupModel) getWindow(); // do nothing if windowModel is already doing something -or- if // windowModel validation failed (i.e. bad/missing user input) if (windowModel.getProgress() != null || !windowModel.validate()) { return; } // this replaces dialog content UI with progress animated image // to indicate that a call to backend is about to be initiated windowModel.startProgress(null); // on backend, assume you have TemplateBackupCommand that works // with parameter type TemplateBackupParameters TemplateBackupParameters params = new TemplateBackupParameters(); // update params according to window model params.setFoo(windowModel.getFoo().getEntity()); // this is the async callback executed when backend command // (TemplateBackupCommand in our case) has done its job IFrontendActionAsyncCallback callback = new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult result) { TemplateListModel listModel = (TemplateListModel) result.getState(); listModel.postOnBackup(result.getReturnValue()); } }; // call backend Frontend.getInstance().runAction( VdcActionType.TemplateBackup, params, callback, this); } // still inside TemplateListModel private void postOnBackup(VdcReturnValueBase returnValue) { // at this point, backend has replied with returnValue, // we can remove progress animated image in dialog getWindow().stopProgress(); // if the backend operation was successful, close the // dialog (otherwise the dialog will remain open) if (returnValue != null returnValue.getSucceeded()) { setWindow(null); } } Regards, Vojtech 在 8/14/14, 19:48, Vojtech Szocs vsz...@redhat.com 写入: - Original Message - From: Leaboy wlblea...@126.com To: Vojtech Szocs vsz...@redhat.com Cc: devel@ovirt.org Sent: Thursday, August 14, 2014 6:19:17 AM Subject: Re: [ovirt-devel] popup dialog Hi,Vojtech Szocs: Thanks for your help, I have let it work, The Error I got just because I miss the step 3 you noted. Another question is how could I got the returnValue after executeCommand , and let the returnValue display on the oher Popup dialog. Please add this into MainTabTemplateView: ... getTable().addActionButton(new WebAdminButtonDefinitionVmTemplate(constants.templateBackup()) { @Override protected UICommand resolveCommand() { return getMainModel().getTemplateBackupCommand(); } }); ... This adds a button under Template main tab. When clicked, it executes given command (getTemplateBackupCommand) on model (TemplateListModel). Model's executeCommand() ensures that backup() method
Re: [ovirt-devel] popup dialog
Yes, I have done that, thanks. 在 8/15/14, 20:13, Vojtech Szocs vsz...@redhat.com 写入: - Original Message - From: Leaboy wlblea...@126.com To: Vojtech Szocs vsz...@redhat.com Cc: devel@ovirt.org Sent: Friday, August 15, 2014 9:31:34 AM Subject: Re: [ovirt-devel] popup dialog which type does result.getReturnValue() got, public void executed(FrontendActionAsyncResult result) { ... } result.getReturnValue() returns VdcReturnValueBase result.getReturnValue().getActionReturnValue() returns the result of backend command (action) execution For example, your backend command does this: getReturnValue().setActionReturnValue(obj); Then obj is what you get on frontend with: result.getReturnValue().getActionReturnValue(); And how could I set it in the backend. 在 8/14/14, 21:57, Vojtech Szocs vsz...@redhat.com 写入: - Original Message - From: Leaboy wlblea...@126.com To: Vojtech Szocs vsz...@redhat.com Cc: devel@ovirt.org Sent: Thursday, August 14, 2014 2:12:37 PM Subject: Re: [ovirt-devel] popup dialog Hi: you said that ,I have done, and the dialog Can display, and I can pass a parameter from dialog To the backend executeCommand(). Now the question is, after executeCommand(), Hou could I get the return value in the frontend. For example, when I clicked backup button, A dialog is display, now I type some parameters into The dialog, click OK button, the backend executeCommand() Do something, now, I need some value from executeCommand() to frontend. Sorry, I missed that your question was about executing backend command (I thought you referred to Model.executeCommand) ... Backup dialog's OK button is represented by: UICommand tempVar = new UICommand(OnBackup, this); When user clicks OK button, that ^^ UICommand is executed. Model's executeCommand should route flow to some onBackup() method, I assume you already did this: // inside TemplateListModel#executeCommand ... else if (OnBackup.equals(command.getName())) { onBackup(); } ... // inside TemplateListModel private void onBackup() { TemplateBackupModel windowModel = (TemplateBackupModel) getWindow(); // do nothing if windowModel is already doing something -or- if // windowModel validation failed (i.e. bad/missing user input) if (windowModel.getProgress() != null || !windowModel.validate()) { return; } // this replaces dialog content UI with progress animated image // to indicate that a call to backend is about to be initiated windowModel.startProgress(null); // on backend, assume you have TemplateBackupCommand that works // with parameter type TemplateBackupParameters TemplateBackupParameters params = new TemplateBackupParameters(); // update params according to window model params.setFoo(windowModel.getFoo().getEntity()); // this is the async callback executed when backend command // (TemplateBackupCommand in our case) has done its job IFrontendActionAsyncCallback callback = new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult result) { TemplateListModel listModel = (TemplateListModel) result.getState(); listModel.postOnBackup(result.getReturnValue()); } }; // call backend Frontend.getInstance().runAction( VdcActionType.TemplateBackup, params, callback, this); } // still inside TemplateListModel private void postOnBackup(VdcReturnValueBase returnValue) { // at this point, backend has replied with returnValue, // we can remove progress animated image in dialog getWindow().stopProgress(); // if the backend operation was successful, close the // dialog (otherwise the dialog will remain open) if (returnValue != null returnValue.getSucceeded()) { setWindow(null); } } Regards, Vojtech 在 8/14/14, 19:48, Vojtech Szocs vsz...@redhat.com 写入: - Original Message - From: Leaboy wlblea...@126.com To: Vojtech Szocs vsz...@redhat.com Cc: devel@ovirt.org Sent: Thursday, August 14, 2014 6:19:17 AM Subject: Re: [ovirt-devel] popup dialog Hi,Vojtech Szocs: Thanks for your help, I have let it work, The Error I got just because I miss the step 3 you noted. Another question is how could I got the returnValue after executeCommand , and let the returnValue display on the oher Popup dialog. Please add this into MainTabTemplateView: ... getTable().addActionButton(new WebAdminButtonDefinitionVmTemplate(constants.templateBackup()) { @Override protected UICommand resolveCommand() { return getMainModel().getTemplateBackupCommand(); } }); ... This adds a button under Template main tab. When clicked, it executes given command (getTemplateBackupCommand
Re: [ovirt-devel] popup dialog
- Original Message - From: Leaboy wlblea...@126.com To: Vojtech Szocs vsz...@redhat.com Cc: devel@ovirt.org Sent: Thursday, August 14, 2014 2:12:37 PM Subject: Re: [ovirt-devel] popup dialog Hi: you said that ,I have done, and the dialog Can display, and I can pass a parameter from dialog To the backend executeCommand(). Now the question is, after executeCommand(), Hou could I get the return value in the frontend. For example, when I clicked backup button, A dialog is display, now I type some parameters into The dialog, click OK button, the backend executeCommand() Do something, now, I need some value from executeCommand() to frontend. Sorry, I missed that your question was about executing backend command (I thought you referred to Model.executeCommand) ... Backup dialog's OK button is represented by: UICommand tempVar = new UICommand(OnBackup, this); When user clicks OK button, that ^^ UICommand is executed. Model's executeCommand should route flow to some onBackup() method, I assume you already did this: // inside TemplateListModel#executeCommand ... else if (OnBackup.equals(command.getName())) { onBackup(); } ... // inside TemplateListModel private void onBackup() { TemplateBackupModel windowModel = (TemplateBackupModel) getWindow(); // do nothing if windowModel is already doing something -or- if // windowModel validation failed (i.e. bad/missing user input) if (windowModel.getProgress() != null || !windowModel.validate()) { return; } // this replaces dialog content UI with progress animated image // to indicate that a call to backend is about to be initiated windowModel.startProgress(null); // on backend, assume you have TemplateBackupCommand that works // with parameter type TemplateBackupParameters TemplateBackupParameters params = new TemplateBackupParameters(); // update params according to window model params.setFoo(windowModel.getFoo().getEntity()); // this is the async callback executed when backend command // (TemplateBackupCommand in our case) has done its job IFrontendActionAsyncCallback callback = new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult result) { TemplateListModel listModel = (TemplateListModel) result.getState(); listModel.postOnBackup(result.getReturnValue()); } }; // call backend Frontend.getInstance().runAction( VdcActionType.TemplateBackup, params, callback, this); } // still inside TemplateListModel private void postOnBackup(VdcReturnValueBase returnValue) { // at this point, backend has replied with returnValue, // we can remove progress animated image in dialog getWindow().stopProgress(); // if the backend operation was successful, close the // dialog (otherwise the dialog will remain open) if (returnValue != null returnValue.getSucceeded()) { setWindow(null); } } Regards, Vojtech 在 8/14/14, 19:48, Vojtech Szocs vsz...@redhat.com 写入: - Original Message - From: Leaboy wlblea...@126.com To: Vojtech Szocs vsz...@redhat.com Cc: devel@ovirt.org Sent: Thursday, August 14, 2014 6:19:17 AM Subject: Re: [ovirt-devel] popup dialog Hi,Vojtech Szocs: Thanks for your help, I have let it work, The Error I got just because I miss the step 3 you noted. Another question is how could I got the returnValue after executeCommand , and let the returnValue display on the oher Popup dialog. Please add this into MainTabTemplateView: ... getTable().addActionButton(new WebAdminButtonDefinitionVmTemplate(constants.templateBackup()) { @Override protected UICommand resolveCommand() { return getMainModel().getTemplateBackupCommand(); } }); ... This adds a button under Template main tab. When clicked, it executes given command (getTemplateBackupCommand) on model (TemplateListModel). Model's executeCommand() ensures that backup() method is called. Inside backup() method, you call setWindow(model) which triggers an event - UI infra handles this event and uses getModelPopup (see TemplateModule) to resolve window model to GWTP PresenterWidget which is then revealed as popup. This is how dialogs work in UiCommon / UI (GWTP) infra. how could I got the returnValue after executeCommand As I wrote above, executeCommand() just calls appropriate method (like backup) on the list model. That method has no return value (void) since it uses setWindow(model) to trigger event to notify UI infra to reveal a dialog. If you need to pass data to dialog, for example: ... TemplateBackupModel model = new TemplateBackupModel(); setWindow(model); ... set window model's title, help tag, hash name ... model.setSomeData(abc); model.doSomething(); ... In other words, after you call setWindow(model) you
Re: [ovirt-devel] popup dialog
Hi, in order to add new dialog, follow these steps: 1, create UiCommon model for the dialog, I see you already did this (TemplateBackupModel) - however from your code I don't understand why is there an unused _asyncQuery inside model constructor 2, modify existing list model to trigger your new dialog, I see you also did this (second code snippet), I assume you put that code inside TemplateListModel: // inside TemplateListModel#backup - this method should be private // since UI code executes this method via associated UICommand ... TemplateBackupModel model = new TemplateBackupModel(); setWindow(model); model.setTitle(ConstantsManager.getInstance().getConstants().templateBackupTitle()); model.setHelpTag(HelpTag.template_backup); model.setHashName(template_backup);//$NON-NLS-1$ ... now, expose UICommand that triggers your dialog like this: public UICommand getTemplateBackupCommand() { return privateTemplateBackupCommand; } private void setTemplateBackupCommand(UICommand value) { privateExportCommand = value; } // inside TemplateListModel constructor ... setTemplateBackupCommand(new UICommand(TemplateBackup, this)); //$NON-NLS-1$ ... // inside TemplateListModel#executeCommand ... else if (command == getTemplateBackupCommand()) { backup(); } ... 3, tell UI (GWTP) infra how to handle your dialog model - in this particular case, edit TemplateModule#getTemplateListProvider: ... if (lastExecutedCommand == model.getEditCommand()) { return popupProvider.get(); } else if (lastExecutedCommand == getModel().getExportCommand()) { return exportPopupProvider.get(); } else if (lastExecutedCommand == getModel().getTemplateBackupCommand()) { return templateBackupProvider.get(); } else { return super.getModelPopup(source, lastExecutedCommand, windowModel); } ... now, add parameter to TemplateModule#getTemplateListProvider: @Provides @Singleton public MainModelProviderVmTemplate, TemplateListModel getTemplateListProvider( ... final ProviderTemplateBackupPopupPresenterWidget templateBackupPopupProvider) { ... 4, create PresenterWidget View for your dialog, this is the visual part of the dialog (dialog model just encapsulates the dialog logic) public class TemplateBackupPopupPresenterWidget extends AbstractModelBoundPopupPresenterWidgetTemplateBackupModel, TemplateBackupPopupPresenterWidget.ViewDef { public interface ViewDef extends AbstractModelBoundPopupPresenterWidget.ViewDefTemplateBackupModel { } @Inject public TemplateBackupPopupPresenterWidget(EventBus eventBus, ViewDef view) { super(eventBus, view); } } --- public class TemplateBackupPopupView extends AbstractModelBoundPopupViewTemplateBackupModel implements TemplateBackupPopupPresenterWidget.ViewDef { // you can get some inspiration from VmExportPopupView } 5, you are done :) Vojtech - Original Message - From: 力波 王 wlblea...@126.com To: devel@ovirt.org Sent: Tuesday, August 12, 2014 7:57:24 AM Subject: [ovirt-devel] popup dialog Hi, everyone: I add a button, named backup in the Template Tab, And the click event is ok. Now I want add a dialog after clicked the button, So, I add a model , but the dialog didn’t display at all. So, I want to know is there some necessary class need To modify or add? The model code is like this: TemplateBackupModel.java public class TemplateBackupModel extends Model { private EntityModel privatePassword; public EntityModel getPassword() { return privatePassword; } public void setPassword(EntityModel value) { privatePassword = value; } public TemplateBackupModel(){ setPassword(new EntityModel()); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { @Override public void onSuccess(Object model, Object result) { } }; } @Override public void eventRaised(Event ev, Object sender, EventArgs args) { super.eventRaised(ev, sender, args); } public boolean validate(){ return true; } } And created a model in the backup button click callback like this: public void backup() { if (getWindow() != null) { return; } TemplateBackupModel model = new TemplateBackupModel(); setWindow(model); model.setTitle(TemplateBackup);//$NON-NLS-1$ model.setHashName(TemplateBackup);//$NON-NLS-1$ UICommand tempVar = new UICommand(OnBackup, this); //$NON-NLS-1$ tempVar.setTitle(ConstantsManager.getInstance().getConstants().ok()); tempVar.setIsDefault(true); model.getCommands().add(tempVar); UICommand tempVar2 = new UICommand(Cancel, this); //$NON-NLS-1$ tempVar2.setTitle(ConstantsManager.getInstance().getConstants().cancel());
Re: [ovirt-devel] popup dialog
Hi, forgot to mention, one more thing needs to be done: // in PresenterModule bindPresenterWidget(TemplateBackupPopupPresenterWidget.class, TemplateBackupPopupPresenterWidget.ViewDef.class, TemplateBackupPopupView.class); (Above binds popup PresenterWidget/View within GIN DI context.) Regards, Vojtech - Original Message - From: Vojtech Szocs vsz...@redhat.com To: 力波 王 wlblea...@126.com Cc: devel@ovirt.org Sent: Wednesday, August 13, 2014 6:00:08 PM Subject: Re: [ovirt-devel] popup dialog Hi, in order to add new dialog, follow these steps: 1, create UiCommon model for the dialog, I see you already did this (TemplateBackupModel) - however from your code I don't understand why is there an unused _asyncQuery inside model constructor 2, modify existing list model to trigger your new dialog, I see you also did this (second code snippet), I assume you put that code inside TemplateListModel: // inside TemplateListModel#backup - this method should be private // since UI code executes this method via associated UICommand ... TemplateBackupModel model = new TemplateBackupModel(); setWindow(model); model.setTitle(ConstantsManager.getInstance().getConstants().templateBackupTitle()); model.setHelpTag(HelpTag.template_backup); model.setHashName(template_backup);//$NON-NLS-1$ ... now, expose UICommand that triggers your dialog like this: public UICommand getTemplateBackupCommand() { return privateTemplateBackupCommand; } private void setTemplateBackupCommand(UICommand value) { privateExportCommand = value; } // inside TemplateListModel constructor ... setTemplateBackupCommand(new UICommand(TemplateBackup, this)); //$NON-NLS-1$ ... // inside TemplateListModel#executeCommand ... else if (command == getTemplateBackupCommand()) { backup(); } ... 3, tell UI (GWTP) infra how to handle your dialog model - in this particular case, edit TemplateModule#getTemplateListProvider: ... if (lastExecutedCommand == model.getEditCommand()) { return popupProvider.get(); } else if (lastExecutedCommand == getModel().getExportCommand()) { return exportPopupProvider.get(); } else if (lastExecutedCommand == getModel().getTemplateBackupCommand()) { return templateBackupProvider.get(); } else { return super.getModelPopup(source, lastExecutedCommand, windowModel); } ... now, add parameter to TemplateModule#getTemplateListProvider: @Provides @Singleton public MainModelProviderVmTemplate, TemplateListModel getTemplateListProvider( ... final ProviderTemplateBackupPopupPresenterWidget templateBackupPopupProvider) { ... 4, create PresenterWidget View for your dialog, this is the visual part of the dialog (dialog model just encapsulates the dialog logic) public class TemplateBackupPopupPresenterWidget extends AbstractModelBoundPopupPresenterWidgetTemplateBackupModel, TemplateBackupPopupPresenterWidget.ViewDef { public interface ViewDef extends AbstractModelBoundPopupPresenterWidget.ViewDefTemplateBackupModel { } @Inject public TemplateBackupPopupPresenterWidget(EventBus eventBus, ViewDef view) { super(eventBus, view); } } --- public class TemplateBackupPopupView extends AbstractModelBoundPopupViewTemplateBackupModel implements TemplateBackupPopupPresenterWidget.ViewDef { // you can get some inspiration from VmExportPopupView } 5, you are done :) Vojtech - Original Message - From: 力波 王 wlblea...@126.com To: devel@ovirt.org Sent: Tuesday, August 12, 2014 7:57:24 AM Subject: [ovirt-devel] popup dialog Hi, everyone: I add a button, named backup in the Template Tab, And the click event is ok. Now I want add a dialog after clicked the button, So, I add a model , but the dialog didn’t display at all. So, I want to know is there some necessary class need To modify or add? The model code is like this: TemplateBackupModel.java public class TemplateBackupModel extends Model { private EntityModel privatePassword; public EntityModel getPassword() { return privatePassword; } public void setPassword(EntityModel value) { privatePassword = value; } public TemplateBackupModel(){ setPassword(new EntityModel()); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { @Override public void onSuccess(Object model, Object result) { } }; } @Override public void eventRaised(Event ev, Object sender, EventArgs args) { super.eventRaised(ev, sender, args); } public boolean validate(){ return true
Re: [ovirt-devel] popup dialog
Hi,Vojtech Szocs: Thanks for your help, I have let it work, The Error I got just because I miss the step 3 you noted. Another question is how could I got the returnValue after executeCommand , and let the returnValue display on the oher Popup dialog. 在 8/14/14, 0:07, Vojtech Szocs vsz...@redhat.com 写入: Hi, forgot to mention, one more thing needs to be done: // in PresenterModule bindPresenterWidget(TemplateBackupPopupPresenterWidget.class, TemplateBackupPopupPresenterWidget.ViewDef.class, TemplateBackupPopupView.class); (Above binds popup PresenterWidget/View within GIN DI context.) Regards, Vojtech - Original Message - From: Vojtech Szocs vsz...@redhat.com To: 力波 王 wlblea...@126.com Cc: devel@ovirt.org Sent: Wednesday, August 13, 2014 6:00:08 PM Subject: Re: [ovirt-devel] popup dialog Hi, in order to add new dialog, follow these steps: 1, create UiCommon model for the dialog, I see you already did this (TemplateBackupModel) - however from your code I don't understand why is there an unused _asyncQuery inside model constructor 2, modify existing list model to trigger your new dialog, I see you also did this (second code snippet), I assume you put that code inside TemplateListModel: // inside TemplateListModel#backup - this method should be private // since UI code executes this method via associated UICommand ... TemplateBackupModel model = new TemplateBackupModel(); setWindow(model); model.setTitle(ConstantsManager.getInstance().getConstants().templateBack upTitle()); model.setHelpTag(HelpTag.template_backup); model.setHashName(template_backup);//$NON-NLS-1$ ... now, expose UICommand that triggers your dialog like this: public UICommand getTemplateBackupCommand() { return privateTemplateBackupCommand; } private void setTemplateBackupCommand(UICommand value) { privateExportCommand = value; } // inside TemplateListModel constructor ... setTemplateBackupCommand(new UICommand(TemplateBackup, this)); //$NON-NLS-1$ ... // inside TemplateListModel#executeCommand ... else if (command == getTemplateBackupCommand()) { backup(); } ... 3, tell UI (GWTP) infra how to handle your dialog model - in this particular case, edit TemplateModule#getTemplateListProvider: ... if (lastExecutedCommand == model.getEditCommand()) { return popupProvider.get(); } else if (lastExecutedCommand == getModel().getExportCommand()) { return exportPopupProvider.get(); } else if (lastExecutedCommand == getModel().getTemplateBackupCommand()) { return templateBackupProvider.get(); } else { return super.getModelPopup(source, lastExecutedCommand, windowModel); } ... now, add parameter to TemplateModule#getTemplateListProvider: @Provides @Singleton public MainModelProviderVmTemplate, TemplateListModel getTemplateListProvider( ... final ProviderTemplateBackupPopupPresenterWidget templateBackupPopupProvider) { ... 4, create PresenterWidget View for your dialog, this is the visual part of the dialog (dialog model just encapsulates the dialog logic) public class TemplateBackupPopupPresenterWidget extends AbstractModelBoundPopupPresenterWidgetTemplateBackupModel, TemplateBackupPopupPresenterWidget.ViewDef { public interface ViewDef extends AbstractModelBoundPopupPresenterWidget.ViewDefTemplateBackupModel { } @Inject public TemplateBackupPopupPresenterWidget(EventBus eventBus, ViewDef view) { super(eventBus, view); } } --- public class TemplateBackupPopupView extends AbstractModelBoundPopupViewTemplateBackupModel implements TemplateBackupPopupPresenterWidget.ViewDef { // you can get some inspiration from VmExportPopupView } 5, you are done :) Vojtech - Original Message - From: 力波 王 wlblea...@126.com To: devel@ovirt.org Sent: Tuesday, August 12, 2014 7:57:24 AM Subject: [ovirt-devel] popup dialog Hi, everyone: I add a button, named backup in the Template Tab, And the click event is ok. Now I want add a dialog after clicked the button, So, I add a model , but the dialog didn’t display at all. So, I want to know is there some necessary class need To modify or add? The model code is like this: TemplateBackupModel.java public class TemplateBackupModel extends Model { private EntityModel privatePassword; public EntityModel getPassword() { return privatePassword; } public void setPassword(EntityModel value) { privatePassword = value; } public TemplateBackupModel(){ setPassword(new EntityModel()); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { @Override public void