internal void showDialog(List <ExperimentStorage> targets, ExperimentData experimentData)
        {
            NE_Helper.log("start");
            this.targets = targets;
            exp          = experimentData;
            NE_Helper.log("init done");
            if (exp == null || targets == null || targets.Count == 0)
            {
                this.enabled = false;
                return;
            }
            // Highlight source part
            sourcePart = exp.store.getPart();
            sourcePart.SetHighlightColor(dullOrange);
            sourcePart.SetHighlightType(Part.HighlightType.AlwaysOn);
            sourcePart.SetHighlight(true, false);

            // Create a list of destination parts and highlight them
            for (int i = 0, count = targets.Count; i < count; i++)
            {
                Part p = targets[i].part;
                if (p == sourcePart || destinationParts.Contains(p))
                {
                    continue;
                }
                destinationParts.Add(p);
                p.SetHighlightColor(dullCyan);
                p.SetHighlightType(Part.HighlightType.AlwaysOn);
                p.SetHighlight(true, false);
            }

            smInfo = ScreenMessages.PostScreenMessage(Localizer.Format("#ne_Select_a_part_to_transfer_1_to_ESC_to_cancel", exp.getAbbreviation()),
                                                      15, ScreenMessageStyle.UPPER_CENTER);
            smInfo.color = Color.cyan;
            this.enabled = true;
            NE_Helper.LockUI();
        }