@Override public void store(IFrontendActionAsyncCallback callback) { if (getProgress() != null || !validate()) { return; } ArrayList<VdcActionType> actionTypes = new ArrayList<>(); ArrayList<VdcActionParametersBase> paramerterList = new ArrayList<>(); ArrayList<IFrontendActionAsyncCallback> callbacks = new ArrayList<>(); IFrontendActionAsyncCallback onFinishCallback = callback != null ? callback : new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult result) { NewDiskModel diskModel = (NewDiskModel) result.getState(); diskModel.stopProgress(); diskModel.cancel(); } }; List<EntityModel<DiskModel>> disksToAttach = getSelectedDisks(); for (int i = 0; i < disksToAttach.size(); i++) { DiskModel disk = disksToAttach.get(i).getEntity(); /* IDE disks can be activated only when the VM is down. Other disks can be hot plugged. */ boolean activate = false; if (getIsPlugged().getEntity()) { activate = disk.getDisk().getDiskInterface() == DiskInterface.IDE ? getVm().getStatus() == VMStatus.Down : true; } // Disk is attached to VM as read only or not, null is applicable only for floating disks // but this is not a case here. AttachDetachVmDiskParameters parameters = new AttachDetachVmDiskParameters( getVm().getId(), disk.getDisk().getId(), activate, Boolean.TRUE.equals(disk.getDisk().getReadOnly())); actionTypes.add(VdcActionType.AttachDiskToVm); paramerterList.add(parameters); callbacks.add(i == disksToAttach.size() - 1 ? onFinishCallback : null); } startProgress(); Frontend.getInstance().runMultipleActions(actionTypes, paramerterList, callbacks, null, this); }
@Override public void eventRaised(Event<? extends EventArgs> ev, Object sender, EventArgs args) { super.eventRaised(ev, sender, args); if (ev.matchesDefinition(HasEntity.entityChangedEventDefinition)) { if (sender == getIsReadOnly()) { updateScsiPassthroguhChangeability(); } else if (sender == getIsScsiPassthrough()) { updateScsiPassthroguhChangeability(); updateSgIoUnfilteredChangeability(); updateReadOnlyChangeability(); updateScsiReservationChangeability(); } else if (sender == getIsSgIoUnfiltered()) { updateScsiReservationChangeability(); } else if (sender == getDiskStorageType()) { diskStorageType_EntityChanged(); } } else if (ev.matchesDefinition(ListModel.selectedItemChangedEventDefinition)) { if (sender == getVolumeType()) { volumeType_SelectedItemChanged(); } else if (sender == getDiskInterface()) { DiskInterface_SelectedItemChanged(); } else if (sender == getDataCenter()) { datacenter_SelectedItemChanged(); } else if (sender == getStorageDomain()) { storageDomain_SelectedItemChanged(); } } }
@Override public void executeCommand(UICommand command) { super.executeCommand(command); if ("OnSave".equals(command.getName())) { // $NON-NLS-1$ onSave(); } if ("OnForceSave".equals(command.getName())) { // $NON-NLS-1$ onForceSave(); } else if ("CancelConfirm".equals(command.getName())) { // $NON-NLS-1$ cancelConfirm(); } }
private void commonInitialize() { super.initialize(); // Create and set commands UICommand onSaveCommand = new UICommand("OnSave", this); // $NON-NLS-1$ onSaveCommand.setTitle(constants.ok()); onSaveCommand.setIsDefault(true); getCommands().add(onSaveCommand); getCommands().add(getCancelCommand()); // Update data if (getVm() != null) { updateBootableDiskAvailable(); getIsUsingScsiReservation().setIsAvailable(true); } updateDatacenters(); }