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 MainModelProvider<VmTemplate, TemplateListModel> getTemplateListProvider( ... final Provider<TemplateBackupPopupPresenterWidget> 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 AbstractModelBoundPopupPresenterWidget<TemplateBackupModel, TemplateBackupPopupPresenterWidget.ViewDef> { public interface ViewDef extends AbstractModelBoundPopupPresenterWidget.ViewDef<TemplateBackupModel> { } @Inject public TemplateBackupPopupPresenterWidget(EventBus eventBus, ViewDef view) { super(eventBus, view); } } --- public class TemplateBackupPopupView extends AbstractModelBoundPopupView<TemplateBackupModel> 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()); > tempVar2.setIsCancel(true); > model.getCommands().add(tempVar2); > > } > ======================================================== > > _______________________________________________ > Devel mailing list > Devel@ovirt.org > http://lists.ovirt.org/mailman/listinfo/devel _______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel