[ovirt-devel] popup dialog
Vojtech Szocs
vszocs at redhat.com
Wed Aug 13 16:07:51 UTC 2014
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" <vszocs at redhat.com>
> To: "力波 王" <wlbleaboy at 126.com>
> Cc: devel at 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: "力波 王" <wlbleaboy at 126.com>
> > To: devel at 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 at ovirt.org
> > http://lists.ovirt.org/mailman/listinfo/devel
> _______________________________________________
> Devel mailing list
> Devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/devel
More information about the Devel
mailing list