public void Configure(TransformManagerDataControl transformManagerDataControl)
        {
            var previousPositionManager = transformManagerDataControl.GUIMapPositionManager as AbstractGuiMapPositionManager;

            this.transformManagerDataControl = transformManagerDataControl;

            if (previousPositionManager != null && MapEditor.Current != null)
            {
                var rect       = new Rect(-500, -1000, 1000, 1000);
                var screenRect = rect.ToPoints().Select(p => previousPositionManager.ToScreenPoint(MapEditor.Current, p)).ToArray().ToRect();

                GuiMapPositionManagerUtility.InsertDefaults(transformManagerDataControl.ParameterDescription, transformManagerDataControl, true);
                UpdateValues();
                previousPositionManager.updateNotifier.Dispose();
                var previousScreenRect = rect.ToPoints().Select(p => ToScreenPoint(MapEditor.Current, p)).ToArray().ToRect();
                OnRectChanged(MapEditor.Current, previousScreenRect, screenRect);
            }
            else
            {
                GuiMapPositionManagerUtility.InsertDefaults(transformManagerDataControl.ParameterDescription, transformManagerDataControl, false);
                UpdateValues();
            }

            updateNotifier = this.transformManagerDataControl.Subscribe(this);
        }
コード例 #2
0
            public ChangeParameterTool(TransformManagerDataControl transformManagerDataControl, params KeyValuePair <string, object>[] newValues)
            {
                this.transformManagerDataControl = transformManagerDataControl;
                this.newValues = newValues;

                this.oldValues = new Dictionary <string, object>();
                foreach (var kv in newValues)
                {
                    oldValues[kv.Key] = transformManagerDataControl.ContainsParameter(kv.Key) ? transformManagerDataControl[kv.Key] : null;
                }
            }
コード例 #3
0
        public static T GetValue <T>(this TransformManagerDataControl transformManagerDataControl, T @default, Converter <T>[] converters, params string[] names)
        {
            var value = names.Where(n => transformManagerDataControl.ContainsParameter(n))
                        .Select(n => transformManagerDataControl[n]).DefaultIfEmpty(@default).First();

            if (value is T)
            {
                return((T)value);
            }

            if (converters != null)
            {
                var validConverter = converters.Where(c => c.OriginType == value.GetType());
                if (validConverter.Any())
                {
                    return(validConverter.First().Convert(value));
                }
            }

            return(@default);
        }
        public IGuiMapPositionManager CreateInstance(ITransformManagerDescriptor element, TransformManagerDataControl transformManagerDataControl)
        {
            var elem = (IGuiMapPositionManager)Activator.CreateInstance(guiMapPositionManagers.Find(g => g.ForType == element.Type).GetType());

            elem.Configure(transformManagerDataControl);
            return(elem);
        }
コード例 #5
0
 public static void InsertDefaults(Dictionary <string, ParameterDescription> parameterDescriptions, TransformManagerDataControl into, bool overriding)
 {
     foreach (var param in parameterDescriptions)
     {
         if (!into.ContainsParameter(param.Key) || overriding)
         {
             into[param.Key] = param.Value.DefaultValue;
         }
     }
 }
コード例 #6
0
 public static T GetValue <T>(this TransformManagerDataControl transformManagerDataControl, T @default, params string[] names)
 {
     return(transformManagerDataControl.GetValue(@default, null, names));
 }
コード例 #7
0
 public ExtElementRefDataControl(ExtElemReference extElemReference) : base(extElemReference)
 {
     this.extElemReference = extElemReference;
     type = getReferenceType(extElemReference.getTargetId());
     this.transformManagerDataControl = new TransformManagerDataControl(this);
 }
コード例 #8
0
        public ExtElementRefDataControl(ExtElemReference extElemReference) : base(extElemReference)
        {
            this.extElemReference = extElemReference;
            type = getReferenceType(extElemReference.getTargetId());
            this.transformManagerDataControl = new TransformManagerDataControl(this);

            geoActionDataControls = new ListDataControl <ExtElementRefDataControl, GeoActionDataControl>(this, extElemReference.Actions, new []
            {
                new ListDataControl <ExtElementRefDataControl, GeoActionDataControl> .ElementFactoryView
                {
                    Titles =
                    {
                        { GeoElementDataControl.ENTER_ACTION,   "Geo.Create.Title.EnterAction"  },
                        { GeoElementDataControl.EXIT_ACTION,    "Geo.Create.Title.ExitAction"   },
                        { GeoElementDataControl.LOOK_TO_ACTION, "Geo.Create.Title.LookToAction" }
                    },
                    Messages =
                    {
                        { GeoElementDataControl.ENTER_ACTION,   "Geo.Create.Message.EnterAction"  },
                        { GeoElementDataControl.EXIT_ACTION,    "Geo.Create.Message.ExitAction"   },
                        { GeoElementDataControl.LOOK_TO_ACTION, "Geo.Create.Message.LookToAction" }
                    },
                    Errors =
                    {
                        { GeoElementDataControl.ENTER_ACTION,   "Geo.Create.Error.EnterAction"  },
                        { GeoElementDataControl.EXIT_ACTION,    "Geo.Create.Error.ExitAction"   },
                        { GeoElementDataControl.LOOK_TO_ACTION, "Geo.Create.Error.LookToAction" }
                    },
                    ElementFactory = new DefaultElementFactory <GeoActionDataControl>(new DefaultElementFactory <GeoActionDataControl> .ElementCreator()
                    {
                        TypeDescriptors = new []
                        {
                            new TD
                            {
                                Type        = GeoElementDataControl.ENTER_ACTION,
                                ContentType = typeof(EnterAction)
                            },
                            new TD
                            {
                                Type        = GeoElementDataControl.EXIT_ACTION,
                                ContentType = typeof(ExitAction)
                            },
                            new TD
                            {
                                Type        = GeoElementDataControl.LOOK_TO_ACTION,
                                ContentType = typeof(InspectAction)
                            }
                        },
                        CreateDataControl = action => new GeoActionDataControl(action as GeoAction),
                        CreateElement     = (type, id, _) =>
                        {
                            switch (type)
                            {
                            case GeoElementDataControl.ENTER_ACTION:   return(new GeoActionDataControl(new EnterAction()));

                            case GeoElementDataControl.EXIT_ACTION:    return(new GeoActionDataControl(new ExitAction()));

                            case GeoElementDataControl.LOOK_TO_ACTION: return(new GeoActionDataControl(new LookToAction()));

                            default: return(null);
                            }
                        }
                    })
                }
            });
        }