Re: [ovirt-devel] popup dialog

2014-08-15 Thread Leaboy
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

2014-08-15 Thread Vojtech Szocs


- 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

2014-08-15 Thread Leaboy
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

2014-08-14 Thread Vojtech Szocs


- 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

2014-08-13 Thread Vojtech Szocs
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

2014-08-13 Thread Vojtech Szocs
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

2014-08-13 Thread Leaboy
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