internal static string DisplayVesselResourceTotals(ModDockedVessel modDockedVessel, List<string> selectedResources)
    {
      string displayAmount = "";
      double currAmount = 0;
      double totAmount = 0;
      try
      {
        List<ModDockedVessel> modDockedVessels = new List<ModDockedVessel>();
        modDockedVessels.Add(modDockedVessel);
        foreach (Part part in SMAddon.smController.GetSelectedVesselsParts(modDockedVessels, selectedResources))
        {
          currAmount += part.Resources[selectedResources[0]].amount;
          totAmount += part.Resources[selectedResources[0]].maxAmount;
        }
      }
      catch (Exception ex)
      {
        Utilities.LogMessage(String.Format(" in DisplayVesselResourceTotals().  Error:  {0}", ex.ToString()), "Error", true);
      }
      displayAmount = string.Format("({0}/{1})", currAmount.ToString("#######0"), totAmount.ToString("######0"));

      return displayAmount;
    }
    private static string GetResourceDescription(List<string> SelectedResources, ModDockedVessel modDockedVvessel)
    {
      string strDescription = "";

      strDescription = DisplayVesselResourceTotals(modDockedVvessel, SelectedResources) + " - " + modDockedVvessel.VesselName;
      return strDescription;
    }
 private static bool IsVesselSelectable(string SelectedResource, SMAddon.XFERDirection xferMode, ModDockedVessel modDockedVessel)
 {
   bool isSelectable = true;
   if (xferMode == SMAddon.XFERDirection.SourceToTarget)
   {
     if (SMAddon.smController.SelectedVesselsTarget.Contains(modDockedVessel))
       isSelectable = false;
   }
   else
   {
     if (SMAddon.smController.SelectedVesselsSource.Contains(modDockedVessel))
       isSelectable = false;
   }
   return isSelectable;
 }
 private static GUIStyle GetVesselButtonStyle(SMAddon.XFERDirection xferMode, ModDockedVessel modDockedVessel)
 {
   GUIStyle style = SMStyle.ButtonSourceStyle;
   if (xferMode == SMAddon.XFERDirection.SourceToTarget)
   {
     if (SMAddon.smController.SelectedVesselsSource.Contains(modDockedVessel))
       style = SMStyle.ButtonToggledSourceStyle;
     else
       style = SMStyle.ButtonSourceStyle;
   }
   else
   {
     if (SMAddon.smController.SelectedVesselsTarget.Contains(modDockedVessel))
       style = SMStyle.ButtonToggledTargetStyle;
     else
       style = SMStyle.ButtonTargetStyle;
   }
   return style;
 }
 private static void VesselButtonToggled(SMAddon.XFERDirection xferMode, ModDockedVessel modVessel)
 {
   string step = "Vessel Button Toggled";
   try
   {
     if (xferMode == SMAddon.XFERDirection.SourceToTarget)
     {
       // Now lets update the list...
       if (SMAddon.smController.SelectedVesselsSource.Contains(modVessel))
         SMAddon.smController.SelectedVesselsSource.Remove(modVessel);
       else
         SMAddon.smController.SelectedVesselsSource.Add(modVessel);
       SMAddon.smController.SelectedPartsSource = SMAddon.smController.GetSelectedVesselsParts(SMAddon.smController.SelectedVesselsSource, SMAddon.smController.SelectedResources);
     }
     else
     {
       if (SMAddon.smController.SelectedVesselsTarget.Contains(modVessel))
         SMAddon.smController.SelectedVesselsTarget.Remove(modVessel);
       else
         SMAddon.smController.SelectedVesselsTarget.Add(modVessel);
       SMAddon.smController.SelectedPartsTarget = SMAddon.smController.GetSelectedVesselsParts(SMAddon.smController.SelectedVesselsTarget, SMAddon.smController.SelectedResources);
     }
     WindowManifest.ReconcileSelectedXferParts(SMAddon.smController.SelectedResources);
     step = "Set Xfer amounts?";
     foreach (TransferResource modResource in SMAddon.smController.ResourcesToXfer)
     {
       modResource.srcXferAmount = TransferResource.CalcMaxResourceXferAmt(SMAddon.smController.SelectedPartsSource, SMAddon.smController.SelectedPartsTarget, modResource.ResourceName);
       modResource.tgtXferAmount = TransferResource.CalcMaxResourceXferAmt(SMAddon.smController.SelectedPartsTarget, SMAddon.smController.SelectedPartsSource, modResource.ResourceName);
     }
   }
   catch (Exception ex)
   {
     if (!SMAddon.frameErrTripped)
     {
       Utilities.LogMessage("Error in WindowTransfer.VesselButtonToggled (" + xferMode.ToString() + ") at step:  " + step + ".  Error:  " + ex.ToString(), "Error", true);
       SMAddon.frameErrTripped = true;
     }
   }
 }