private void OnRemove() {
    ConfirmationModel model = (ConfirmationModel) getWindow();

    if (model.getProgress() != null) {
      return;
    }

    java.util.ArrayList<VdcActionParametersBase> list =
        new java.util.ArrayList<VdcActionParametersBase>();
    for (Object item : getSelectedItems()) {
      VmNetworkInterface a = (VmNetworkInterface) item;
      list.add(
          new RemoveVmTemplateInterfaceParameters(getEntityStronglyTyped().getId(), a.getId()));
    }

    model.StartProgress(null);

    Frontend.RunMultipleAction(
        VdcActionType.RemoveVmTemplateInterface,
        list,
        new IFrontendMultipleActionAsyncCallback() {
          @Override
          public void Executed(FrontendMultipleActionAsyncResult result) {

            ConfirmationModel localModel = (ConfirmationModel) result.getState();
            localModel.StopProgress();
            Cancel();
          }
        },
        model);
  }
  private void remove() {
    if (getWindow() != null) {
      return;
    }

    ConfirmationModel model = new ConfirmationModel();
    setWindow(model);
    model.setTitle("Remove Network Interface(s)");
    model.setMessage("Network Interface(s)");

    java.util.ArrayList<String> items = new java.util.ArrayList<String>();
    for (Object item : getSelectedItems()) {
      VmNetworkInterface a = (VmNetworkInterface) item;
      items.add(a.getName());
    }
    model.setItems(items);

    UICommand tempVar = new UICommand("OnRemove", this);
    tempVar.setTitle("OK");
    tempVar.setIsDefault(true);
    model.getCommands().add(tempVar);
    UICommand tempVar2 = new UICommand("Cancel", this);
    tempVar2.setTitle("Cancel");
    tempVar2.setIsCancel(true);
    model.getCommands().add(tempVar2);
  }
  /**
   * Synchronize the VM's {@link VmNetworkInterface}s with the ones from the snapshot.<br>
   * All existing NICs will be deleted, and the ones from the snapshot re-added.<br>
   * In case a MAC address is already in use, the user will be issued a warning in the audit log.
   *
   * @param nics The nics from snapshot.
   */
  protected void synchronizeNics(
      Guid vmId, List<VmNetworkInterface> nics, CompensationContext compensationContext) {
    VmInterfaceManager vmInterfaceManager = new VmInterfaceManager();

    vmInterfaceManager.removeAll(true, vmId);
    for (VmNetworkInterface vmInterface : nics) {
      // These fields are not saved in the OVF, so fill them with reasonable values.
      vmInterface.setId(Guid.NewGuid());
      vmInterface.setVmId(vmId);

      vmInterfaceManager.add(vmInterface, compensationContext);
    }
  }
  public void PostGetClusterNetworkList_Edit(java.util.ArrayList<network> network_list) {
    VmNetworkInterface nic = (VmNetworkInterface) getSelectedItem();
    int nicCount = Linq.<VmNetworkInterface>Cast(getItems()).size();
    java.util.ArrayList<network> networks = new java.util.ArrayList<network>();
    for (network a : network_list) {
      if (a.getStatus() == NetworkStatus.Operational) {
        networks.add(a);
      }
    }

    VmInterfaceModel model = (VmInterfaceModel) getWindow();
    model.getNetwork().setItems(networks);
    network network = null;
    for (network a : networks) {
      if (StringHelper.stringsEqual(a.getname(), nic.getNetworkName())) {
        network = a;
        break;
      }
    }
    model.getNetwork().setSelectedItem(network);

    Integer selectedNicType = nic.getType();
    java.util.ArrayList<VmInterfaceType> nicTypes =
        DataProvider.GetNicTypeList(
            getEntityStronglyTyped().getos(),
            VmInterfaceType.forValue(selectedNicType) == VmInterfaceType.rtl8139_pv);
    model.getNicType().setItems(nicTypes);

    if (selectedNicType == null || !nicTypes.contains(VmInterfaceType.forValue(selectedNicType))) {
      selectedNicType = DataProvider.GetDefaultNicType(getEntityStronglyTyped().getos()).getValue();
    }

    model.getNicType().setSelectedItem(VmInterfaceType.forValue(selectedNicType));

    model.getName().setEntity(nic.getName());
    model.getMAC().setIsAvailable(false);

    UICommand tempVar = new UICommand("OnSave", this);
    tempVar.setTitle("OK");
    tempVar.setIsDefault(true);
    model.getCommands().add(tempVar);
    UICommand tempVar2 = new UICommand("Cancel", this);
    tempVar2.setTitle("Cancel");
    tempVar2.setIsCancel(true);
    model.getCommands().add(tempVar2);
  }
  private void OnSave() {
    VmInterfaceModel model = (VmInterfaceModel) getWindow();
    VmNetworkInterface nic =
        model.getIsNew()
            ? new VmNetworkInterface()
            : (VmNetworkInterface) Cloner.clone((VmNetworkInterface) getSelectedItem());

    if (!model.Validate()) {
      return;
    }

    // Save changes.
    nic.setName((String) model.getName().getEntity());
    nic.setNetworkName(((network) model.getNetwork().getSelectedItem()).getname());
    if (model.getNicType().getSelectedItem() == null) {
      nic.setType(null);
    } else {
      nic.setType(((VmInterfaceType) model.getNicType().getSelectedItem()).getValue());
    }
    nic.setMacAddress(
        model.getMAC().getIsChangable()
            ? (model.getMAC().getEntity() == null
                ? null
                : ((String) (model.getMAC().getEntity())).toLowerCase())
            : model.getIsNew() ? "" : nic.getMacAddress());

    if (model.getIsNew()) {
      Frontend.RunMultipleAction(
          VdcActionType.AddVmTemplateInterface,
          new java.util.ArrayList<VdcActionParametersBase>(
              java.util.Arrays.asList(
                  new VdcActionParametersBase[] {
                    new AddVmTemplateInterfaceParameters(getEntityStronglyTyped().getId(), nic)
                  })),
          new IFrontendMultipleActionAsyncCallback() {
            @Override
            public void Executed(FrontendMultipleActionAsyncResult result) {

              Cancel();
            }
          },
          null);
    } else {
      Frontend.RunMultipleAction(
          VdcActionType.UpdateVmTemplateInterface,
          new java.util.ArrayList<VdcActionParametersBase>(
              java.util.Arrays.asList(
                  new VdcActionParametersBase[] {
                    new AddVmTemplateInterfaceParameters(getEntityStronglyTyped().getId(), nic)
                  })),
          new IFrontendMultipleActionAsyncCallback() {
            @Override
            public void Executed(FrontendMultipleActionAsyncResult result) {

              Cancel();
            }
          },
          null);
    }
  }