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(a)126.com>
To: devel(a)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(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/devel