package org.ovirt.engine.ui.uicommonweb.models.vms;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.ui.uicommonweb.UICommand;
import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
import org.ovirt.engine.ui.uicommonweb.help.HelpTag;
import org.ovirt.engine.ui.uicommonweb.models.GuideModel;
import org.ovirt.engine.ui.uicompat.ConstantsManager;
import org.ovirt.engine.ui.uicompat.UIConstants;
public class VmGuideModel extends GuideModel<VM> {
public final UIConstants constants = ConstantsManager.getInstance().getConstants();
@Override
protected void onEntityChanged() {
super.onEntityChanged();
if (getEntity() != null) {
startProgress();
AsyncDataProvider.getInstance().getVmDiskList(new AsyncQuery<>(disks -> updateOptions(!disks.isEmpty())), getEntity().getId());
}
}
public void updateOptions(boolean containsDisks) {
getCompulsoryActions().clear();
getOptionalActions().clear();
startProgress();
// Add disk action.
UICommand newDiskAction = new UICommand("NewDisk", this); //$NON-NLS-1$
newDiskAction.setTitle(constants.vmCreateVirtualDiskAction());
UICommand attachDiskAction = new UICommand("AttachDisk", this); //$NON-NLS-1$
attachDiskAction.setTitle(constants.vmAttachVirtualDisksAction());
if (!containsDisks) {
getCompulsoryActions().add(newDiskAction);
getCompulsoryActions().add(attachDiskAction);
} else {
getOptionalActions().add(newDiskAction);
getOptionalActions().add(attachDiskAction);
}
stopProgress();
}
public void newDisk() {
if (getEntity() == null) {
return;
}
addDisk(new NewDiskGuideModel(this),
ConstantsManager.getInstance().getConstants().newVirtualDiskTitle(),
HelpTag.new_virtual_disk, "new_virtual_disk"); //$NON-NLS-1$
}
public void attachDisk() {
if (getEntity() == null) {
return;
}
addDisk(new AttachDiskGuideModel(this),
ConstantsManager.getInstance().getConstants().attachVirtualDiskTitle(),
HelpTag.attach_virtual_disk, "attach_virtual_disk"); //$NON-NLS-1$
}
private void addDisk(AbstractDiskModel model, String title, HelpTag helpTag, String hashName) {
model.setTitle(title);
model.setHelpTag(helpTag);
model.setHashName(hashName); //$NON-NLS-1$
model.setVm(getEntity());
setWindow(model);
UICommand cancelCommand = UICommand.createCancelUiCommand("Cancel", this); //$NON-NLS-1$
model.setCancelCommand(cancelCommand);
model.initialize();
}
protected void cancel() {
setWindow(null);
}
@Override
public void executeCommand(UICommand command) {
super.executeCommand(command);
if ("NewDisk".equals(command.getName())) { //$NON-NLS-1$
newDisk();
}
else if ("AttachDisk".equals(command.getName())) { //$NON-NLS-1$
attachDisk();
}
else if ("Cancel".equals(command.getName())) { //$NON-NLS-1$
cancel();
}
}
}