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 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 _______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel