Beispiel #1
0
        protected override void OnPaint(PaintEventArgs e)
        {
            if (Map == null || Map.Image == null)
            {
                return;
            }

            // TODO: fix this
            if (Map.Image.PixelFormat == PixelFormat.Undefined)
            {
                log.Error("Map image is broken - bug!");
                return;
            }

            e.Graphics.DrawImageUnscaled(Map.Image, 0, 0);

            //Trace.WriteLine("OnPaint " + onPaint++);
            foreach (IMapTool tool in tools)
            {
                if (tool.IsActive)
                {
                    tool.OnPaint(e);
                }
            }
            SelectTool.OnPaint(e);

            base.OnPaint(e);
        }
        public void DefaultMapControlTools()
        {
            InitializeControls();

            // check for all default tools
            IMapTool mapTool = mapControl.SelectTool;

            Assert.IsNotNull(mapTool);
            SelectTool selectTool = mapTool as SelectTool;

            Assert.IsNotNull(selectTool);

            mapTool = mapControl.MoveTool;
            Assert.IsNotNull(mapTool);

            MoveTool moveTool = mapTool as MoveTool;

            Assert.IsNotNull(moveTool);
            Assert.AreEqual(FallOffPolicyRule.None, moveTool.FallOffPolicy);

            mapTool = mapControl.GetToolByName("CurvePoint");
            Assert.IsNotNull(mapTool);
            CurvePointTool curvePointTool = mapTool as CurvePointTool;

            Assert.IsNotNull(curvePointTool);
        }
Beispiel #3
0
            /// <summary>
            /// Applied before OnLeftClickDown runs.
            /// </summary>
            internal static bool Prefix(Vector3 cursor_pos, SelectTool __instance)
            {
                int cell = Grid.PosToCell(cursor_pos);

                if (Grid.IsValidCell(cell))
                {
                    var hits  = __instance.hits;
                    int index = __instance.hitCycleCount;
                    if (GetAllSelectables(cell, cursor_pos, __instance.prevIntersectionGroup,
                                          hits))
                    {
                        index = 0;
                    }
                    var target = GetIndexedSelectable(hits, ref index, __instance.layerMask,
                                                      __instance.selected);
                    __instance.hitCycleCount = index;
                    // Try Aze's override
                    var newTarget = __instance.GetObjectUnderCursor <KSelectable>(true);
                    if (newTarget != null)
                    {
                        target = newTarget;
                    }
                    __instance.Select(target);
                }
                __instance.selectedCell = cell;
                return(false);
            }
Beispiel #4
0
        protected override void OnPaint(PaintEventArgs e)
        {
            //HACK: check if this works and then move this code/logic elsewhere
            if (!DelayedEventHandlerController.FireEvents)
            {
                return;//stop painting..
            }
            if (Map == null || Map.Image == null)
            {
                return;
            }

            // TODO: fix this
            if (Map.Image.PixelFormat == PixelFormat.Undefined)
            {
                Log.Error("Map image is broken - bug!");
                return;
            }

            e.Graphics.DrawImageUnscaled(Map.Image, 0, 0);

            foreach (var tool in tools.Where(tool => tool.IsActive))
            {
                tool.OnPaint(e);
            }
            SelectTool.OnPaint(e);

            base.OnPaint(e);
        }
Beispiel #5
0
 private void RefreshSelectTool()
 {
     if (SelectTool != null)
     {
         SelectTool.RefreshFeatureInteractors();
     }
 }
Beispiel #6
0
        /// <summary>
        /// 实现圆选择查询
        /// </summary>
        /// <param name="control">地图视图控件</param>
        /// <param name="dataType">选择数据时的数据类型过滤</param>
        /// <param name="attctr">属性视图控件</param>
        /// <param name="seltype">查询选择方式:圆查询 </param>
        public CirSelectToolClass(MapGIS.GISControl.MapControl control, SelectDataType dataType, AttControl attctr, SelectType seltype)
            : base()
        {
            this.mapCtrl    = control;
            this.dataType   = dataType;
            this.attCtrl    = attctr;
            this.selectType = seltype;

            //查询选择项
            SelectOption selOpt = new SelectOption();

            selOpt.DataType  = dataType;               //选择数据时的类型过滤类型
            selOpt.SelMode   = SelectMode.Multiply;    //选择模式
            selOpt.UnMode    = UnionMode.Xor;          //结果数据合并模式
            selOpt.LayerCtrl = SelectLayerControl.All; //选择数据时的图层过滤类型

            //创建圆交互工具
            selTool           = new SelectTool(control, selectType, selOpt, SpaQueryMode.MBRIntersect, control.Transformation);
            selTool.Selected += new SelectTool.SelectHandler(selTool_Selected);
            this.Active      += new ToolEventHandler(CirSelectToolClass_Active);
            this.Unactive    += new ToolEventHandler(CirSelectToolClass_Unactive);
            this.Cancel      += new ToolEventHandler(CirSelectToolClass_Cancel);
            this.PreRefresh  += new ToolEventHandler(CirSelectToolClass_PreRefresh);
            this.PostRefresh += new ToolEventHandler(CirSelectToolClass_PostRefresh);
        }
Beispiel #7
0
        static Gtk.Toolbar CreateToolbar(CircuitEditor editor)
        {
            Gtk.Toolbar toolbar = new Gtk.Toolbar();

            SelectTool selectTool = new SelectTool(editor, toolbar);
            WireTool   wireTool   = new WireTool(editor, toolbar);
            // FIXME: Make this be selected with a callback or something
            //editor.CurrentTool = selectTool;

            // FIXME: We don't want to new the components here!!
            ComponentTool andTool = new ComponentTool(ComponentType.And, "And gate", editor, toolbar);

            ComponentTool notTool = new ComponentTool(ComponentType.Not, "Not gate", editor, toolbar);

            ComponentTool orTool = new ComponentTool(ComponentType.Or, "Or gate", editor, toolbar);

            ToolButton xorTool = new ToolButton(
                Util.Icon.XorGate(), "Xor Gate"
                );

            SeparatorToolItem sep = new SeparatorToolItem();

            toolbar.Insert(selectTool, 0);
            toolbar.Insert(wireTool, 1);
            toolbar.Insert(sep, 2);
            toolbar.Insert(andTool, 3);
            toolbar.Insert(notTool, 4);
            toolbar.Insert(orTool, 5);
            toolbar.Insert(xorTool, 6);

            return(toolbar);
        }
Beispiel #8
0
        private void SetNewTool(SelectTool tool)
        {
            currentTool = tool;

            NewSelectTool?.Invoke(tool);

            UpdateSelectedTransformTool();
        }
        public SelectionViewModel(ViewModelMain owner)
            : base(owner)
        {
            DeselectCommand  = new RelayCommand(Deselect, SelectionIsNotEmpty);
            SelectAllCommand = new RelayCommand(SelectAll, CanSelectAll);

            selectTool = new SelectTool(Owner.BitmapManager);
        }
Beispiel #10
0
        public void SelectAll(object parameter)
        {
            SelectTool select = new SelectTool();

            var oldSelection = new List <Coordinates>(Owner.BitmapManager.ActiveDocument.ActiveSelection.SelectedPoints);

            Owner.BitmapManager.ActiveDocument.ActiveSelection.SetSelection(select.GetAllSelection(), SelectionType.New);
            SelectionHelpers.AddSelectionUndoStep(Owner.BitmapManager.ActiveDocument, oldSelection, SelectionType.New);
        }
Beispiel #11
0
 protected override void OnPrefabInit()
 {
     defaultLayerMask = (1 | LayerMask.GetMask("World", "Pickupable", "Place", "PlaceWithDepth", "BlockSelection", "Construction", "Selection"));
     layerMask        = defaultLayerMask;
     selectMarker     = Util.KInstantiateUI <SelectMarker>(EntityPrefabs.Instance.SelectMarker, GameScreenManager.Instance.worldSpaceCanvas, false);
     selectMarker.gameObject.SetActive(false);
     populateHitsList = true;
     Instance         = this;
 }
 //private Button btn;
 private void Awake()
 {
     //PlayerTransform = GameObject.FindGameObjectWithTag("Player").transform;
     //Debug.Log(PlayerTransform.name);
     //realCamera = transform.GetChild(0).GetComponent<Camera>();
     tool = GameObject.FindObjectOfType <SelectTool>();
     //freeLook = GameObject.FindObjectOfType<CinemachineFreeLook>();
     stateCamera = GameObject.FindObjectOfType <CinemachineStateDrivenCamera>();
 }
 public Instance3D(Model3D model)
 {
     m_SelectTool = new SelectTool();
     m_Model      = model;
     UpdateTransform();
     objectColor.Ambient     = Color.Gray;
     objectColor.Diffuse     = Color.White;
     fullBrightColor.Ambient = Color.White;
     fullBrightColor.Diffuse = Color.White;
 }
 /// <summary>
 /// Constructor.  Requires a model filename to initialize properly.
 /// </summary>
 /// <param name="tfn"></param>
 public Instance3D(TagFileName tfn)
 {
     m_SelectTool = new SelectTool();
     SetModel(tfn);
     UpdateTransform();
     objectColor.Ambient     = Color.Gray;
     objectColor.Diffuse     = Color.White;
     fullBrightColor.Ambient = Color.White;
     fullBrightColor.Diffuse = Color.White;
 }
Beispiel #15
0
        public void GetFeatureInteractorForLayerWithoutFeatureEditorShouldNotGiveErrorMessage_Tools8065()
        {
            var tool  = new SelectTool();
            var layer = new RegularGridCoverageLayer();

            Assert.IsNotNull(layer.FeatureEditor);

            // No message should be generated and null should be returned
            TestHelper.AssertLogMessagesCount(() => Assert.IsNull(tool.GetFeatureInteractor(layer, null)), 0);
        }
 public Instance3D(PromDecal promdecal)
 {
     m_SelectTool = new SelectTool();
     UpdateTransform();
     this.decal              = promdecal;
     objectColor.Ambient     = Color.Gray;
     objectColor.Diffuse     = Color.White;
     fullBrightColor.Ambient = Color.White;
     fullBrightColor.Diffuse = Color.White;
     bDecalMode              = true;
 }
Beispiel #17
0
        static Gtk.Toolbar CreateToolbar(CircuitEditor editor)
        {
            Gtk.Toolbar toolbar = new Gtk.Toolbar();

            SelectTool selectTool = new SelectTool(editor);
            WireTool   wireTool   = new WireTool(editor);
            // FIXME: Make this be selected with a callback or something
            //editor.CurrentTool = selectTool;

            // FIXME: We want something better for this...
            ComponentTool <AndGateInstance> andTool = new ComponentTool <AndGateInstance>(default, editor);
Beispiel #18
0
        private void map_MapRendered(Graphics g)
        {
            // TODO: review, migrated from GeometryEditor
            if (g == null)
            {
                return;
            }

            //UserLayer.Render(g, this.mapbox.Map);
            // always draw trackers when they exist -> full redraw when trackers are deleted
            SelectTool.Render(g, Map);
            zoomHistoryTool.MapRendered(Map);
        }
        public void LoadResourceModel(string ResourcePath)
        {
            Stream st = Assembly.GetExecutingAssembly().GetManifestResourceStream(ResourcePath);

            utilityModel = Mesh.FromStream(st, MeshFlags.Managed, MdxRender.Dev);

            Matrix pitch = new Matrix();
            Matrix yaw   = new Matrix();

            yaw.RotateZ((float)Math.PI);
            pitch.RotateX((float)Math.PI / 2);
            SelectTool.TransformMesh(utilityModel, Matrix.Multiply(pitch, yaw));
        }
Beispiel #20
0
        public void DeActiveSelectionShouldResetMultiSelectionMode()
        {
            MapControl mapControl = new MapControl();

            SelectTool selectTool = mapControl.SelectTool;

            selectTool.MultiSelectionMode = MultiSelectionMode.Lasso;

            mapControl.ActivateTool(selectTool);
            Assert.AreEqual(MultiSelectionMode.Lasso, selectTool.MultiSelectionMode);

            mapControl.ActivateTool(mapControl.MoveTool);
            Assert.AreEqual(MultiSelectionMode.Rectangle, selectTool.MultiSelectionMode);
        }
Beispiel #21
0
        /// <summary>
        /// Initializes the device.
        /// </summary>
        public static void Initialize(Control renderTarget, Pool.Pool pool)
        {
            tagPool = pool;
            if (d3dInitialized)
            {
                MdxRender.Device.Dispose();
            }

            RenderCore.renderTarget = renderTarget;
            int adapter = Manager.Adapters.Default.Adapter;

            caps = Manager.GetDeviceCaps(adapter, DeviceType);

            pp.PresentationInterval   = PresentInterval.Default;
            pp.Windowed               = true;// !MdxRender.FullScreen;
            pp.SwapEffect             = SwapEffect.Discard;
            pp.EnableAutoDepthStencil = true;
            pp.AutoDepthStencilFormat = GetDepthFormat(adapter);
            //pp.MultiSample = GetMultiSampleType(adapter);
            //pp.MultiSampleQuality = 0;

            CreateFlags flags;

            flags = CreateFlags.SoftwareVertexProcessing;
            if (caps.DeviceCaps.SupportsHardwareTransformAndLight)
            {
                flags = CreateFlags.HardwareVertexProcessing;
            }

            // Disable built in events.

            Device.IsUsingEventHandlers = false;
            MdxRender.Device            = new Device(adapter, DeviceType, renderTarget, flags, pp);
            SetupDevice();

            //MdxRender.Device.DeviceResizing += new System.ComponentModel.CancelEventHandler(device_DeviceResizing);
            //MdxRender.Device.DeviceReset += new EventHandler(device_DeviceReset);

            camera = new Camera.Camera();
            MdxRender.FrameTimer = new FPSCounter(50);
            SelectTool.InitializeHandleModel();
            Billboard.LoadResources(0.5f, 0.5f);
            fontFPS   = new DXFont(MdxRender.Device, new Font("Arial", 12, FontStyle.Bold));
            DebugFont = new Microsoft.DirectX.Direct3D.Font(MdxRender.Device, new Font("Arial", 12, FontStyle.Bold));
            console   = new DebugConsole.DebugConsole(MdxRender.Device);

            d3dInitialized = true;
        }
        public Instance3D(BillboardModel bb)
        {
            int texture_index = MdxRender.SM.m_TextureManager.GetBillboardTextureIndex(bb);

            m_SelectTool      = new SelectTool();
            m_Model           = MdxRender.MM.ArrowModel;
            m_BillboardMatrix = new Matrix();
            billboard         = new Billboard(0.5f, 0.5f, texture_index);
            UpdateTransform();
            objectColor.Ambient     = Color.Gray;
            objectColor.Diffuse     = Color.White;
            fullBrightColor.Ambient = Color.White;
            fullBrightColor.Diffuse = Color.White;
            bBillboardMode          = true;
            billboardCount++;
        }
        public void LoadArrow(string ResourcePath)
        {
            Stream st = Assembly.GetExecutingAssembly().GetManifestResourceStream(ResourcePath);

            utilityModel = Mesh.FromStream(st, MeshFlags.Managed, MdxRender.Dev);

            Matrix scale = new Matrix();

            scale.Scale(0.2f, 0.2f, 0.2f);
            Matrix pitch = new Matrix();
            Matrix yaw   = new Matrix();

            yaw.RotateZ((float)Math.PI);
            //pitch.RotateX((float)Math.PI/2);
            SelectTool.TransformMesh(utilityModel, scale);
        }
Beispiel #24
0
        ///// <summary>
        ///// Retrieves an appropriate multi sample format from the manager.
        ///// </summary>
        //private static MultiSampleType GetMultiSampleType(int adapter)
        //{
        //  if (Manager.CheckDeviceMultiSampleType(adapter, DeviceType, Format.X8R8G8B8, !FullScreen, MultiSampleType.FourSamples))
        //    return MultiSampleType.FourSamples;
        //  else if (Manager.CheckDeviceMultiSampleType(adapter, DeviceType, Format.X8R8G8B8, !FullScreen, MultiSampleType.TwoSamples))
        //    return MultiSampleType.TwoSamples;
        //  else if (Manager.CheckDeviceMultiSampleType(adapter, DeviceType, Format.X8R8G8B8, !FullScreen, MultiSampleType.NonMaskable))
        //    return MultiSampleType.NonMaskable;
        //  else
        //    return MultiSampleType.None;
        //}

        public static void PerformDeviceReset(int sizeX, int sizeY)
        {
            int res;

            MdxRender.Device.CheckCooperativeLevel(out res);

            //clean up unmanaged resources
            fontFPS.OnLostDevice();
            DebugFont.OnLostDevice();
            tagPool.OnLostDevice();
            console.OnLostDevice();
            SelectTool.OnLostDevice();
            Billboard.OnLostDevice();
            foreach (SceneState scene in scenes)
            {
                scene.Instance.OnDeviceLost();
            }

            //reset the device with new viewport dimensions
            pp.BackBufferWidth  = sizeX;
            pp.BackBufferHeight = sizeY;
            //MdxRender.Device.Reset(pp);

            //re-create unmanaged resources
            fontFPS.OnResetDevice();
            DebugFont.OnResetDevice();
            tagPool.OnResetDevice();
            console.OnResetDevice();
            SelectTool.OnResetDevice();
            Billboard.OnResetDevice();
            foreach (SceneState scene in scenes)
            {
                scene.Instance.OnDeviceReset();
            }

            //re-init any state variables we need
            SetupDevice();
            UpdateViewTransform();
            MdxRender.Device.Transform.World = Matrix.Identity;
            MdxRender.Device.Transform.View  = camera.GetViewMatrix();
        }
Beispiel #25
0
        public void ActualDeleteTriggersBeginEdit()
        {
            MapControl mapControl = new MapControl();

            SelectTool selectTool = mapControl.SelectTool;

            VectorLayer       vectorLayer = new VectorLayer();
            FeatureCollection layer2Data  = new FeatureCollection();

            vectorLayer.DataSource = layer2Data;
            layer2Data.FeatureType = typeof(Feature);

            layer2Data.Add(new Point(4, 5));
            layer2Data.Add(new Point(0, 1));
            mapControl.Map.Layers.Add(vectorLayer);

            var featureMutator = mocks.StrictMock <IFeatureEditor>();
            var editableObject = mocks.StrictMock <IEditableObject>();

            featureMutator.Expect(fm => fm.EditableObject).Return(editableObject).Repeat.Any();
            featureMutator.Expect(fm => fm.AllowDeletion()).Return(true).Repeat.Any();
            featureMutator.Expect(fm => fm.Delete()).Repeat.Once();
            editableObject.Expect(eo => eo.BeginEdit(null)).IgnoreArguments().Repeat.Once(); //expect BeginEdit!
            editableObject.Expect(eo => eo.EndEdit()).IgnoreArguments().Repeat.Once();

            mocks.ReplayAll();

            selectTool.Select((IFeature)layer2Data.Features[0]);

            selectTool.FeatureEditors.Clear();
            selectTool.FeatureEditors.Add(featureMutator); //inject our own feature editor

            var deleteTool = (DeleteTool)mapControl.GetToolByType(typeof(DeleteTool));

            deleteTool.DeleteSelection();

            mocks.VerifyAll();
        }
Beispiel #26
0
        public void CanDeleteWithoutEditableObject()
        {
            MapControl mapControl = new MapControl();

            SelectTool selectTool = mapControl.SelectTool;
            //mapControl.ActivateTool(selectTool);

            VectorLayer       vectorLayer = new VectorLayer();
            FeatureCollection layer2Data  = new FeatureCollection();

            vectorLayer.DataSource = layer2Data;
            layer2Data.FeatureType = typeof(Feature);

            layer2Data.Add(new Point(4, 5));
            layer2Data.Add(new Point(0, 1));
            mapControl.Map.Layers.Add(vectorLayer);

            selectTool.Select((IFeature)layer2Data.Features[0]);

            DeleteTool deleteTool = (DeleteTool)mapControl.GetToolByType(typeof(DeleteTool));

            deleteTool.DeleteSelection();
        }
Beispiel #27
0
        static Gtk.Toolbar CreateToolbar(CircuitEditor editor)
        {
            Gtk.Toolbar toolbar = new Gtk.Toolbar();

            SelectTool selectTool = new SelectTool(editor, toolbar);
            WireTool   wireTool   = new WireTool(editor, toolbar);
            // FIXME: Make this be selected with a callback or something
            //editor.CurrentTool = selectTool;

            ComponentTool constantTool = new ComponentTool(ComponentType.Constant, "Constant", editor, toolbar);

            ComponentTool bufferTool = new ComponentTool(ComponentType.Buffer, "Buffer gate", editor, toolbar);
            ComponentTool notTool    = new ComponentTool(ComponentType.Not, "Not gate", editor, toolbar);

            ComponentTool andTool = new ComponentTool(ComponentType.And, "And gate", editor, toolbar);

            ComponentTool orTool = new ComponentTool(ComponentType.Or, "Or gate", editor, toolbar);

            ComponentTool xorTool = new ComponentTool(ComponentType.Xor, "Xor gate", editor, toolbar);

            SeparatorToolItem sep = new SeparatorToolItem();

            int index = 0;

            toolbar.Insert(selectTool, index++);
            toolbar.Insert(wireTool, index++);
            toolbar.Insert(sep, index++);
            toolbar.Insert(constantTool, index++);
            toolbar.Insert(bufferTool, index++);
            toolbar.Insert(notTool, index++);
            toolbar.Insert(andTool, index++);
            toolbar.Insert(orTool, index++);
            toolbar.Insert(xorTool, index++);

            return(toolbar);
        }
Beispiel #28
0
 private void OnNewSelectTool(SelectTool newTool)
 {
     UpdateVisibleTools();
 }
Beispiel #29
0
        public void SelectAll(object parameter)
        {
            SelectTool select = new SelectTool();

            Owner.BitmapManager.ActiveDocument.ActiveSelection.SetSelection(select.GetAllSelection(), SelectionType.New);
        }
Beispiel #30
0
        /// <summary>
        /// Initializes a new map
        /// </summary>
        public MapControl()
        {
            SetStyle(
                ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw |
                ControlStyles.UserPaint, true);

            LostFocus += MapBox_LostFocus;
            AllowDrop  = true;

            tools = new EventedList <IMapTool>();

            tools.CollectionChanged += tools_CollectionChanged;

            var northArrowTool = new NorthArrowTool(this);

            northArrowTool.Anchor  = AnchorStyles.Right | AnchorStyles.Top;
            northArrowTool.Visible = false; // activate using commands
            Tools.Add(northArrowTool);

            var scaleBarTool = new ScaleBarTool(this);

            scaleBarTool.Size    = new Size(230, 50);
            scaleBarTool.Anchor  = AnchorStyles.Right | AnchorStyles.Bottom;
            scaleBarTool.Visible = true;
            Tools.Add(scaleBarTool);

            legendTool = new LegendTool(this)
            {
                Anchor = AnchorStyles.Left | AnchorStyles.Top, Visible = false
            };
            Tools.Add(legendTool);

            queryTool = new QueryTool(this);
            Tools.Add(queryTool);

            // add commonly used tools

            zoomHistoryTool = new ZoomHistoryTool(this);
            Tools.Add(zoomHistoryTool);

            panZoomTool = new PanZoomTool(this);
            Tools.Add(panZoomTool);

            wheelZoomTool = new ZoomUsingMouseWheelTool(this);
            wheelZoomTool.WheelZoomMagnitude = 0.8;
            Tools.Add(wheelZoomTool);

            rectangleZoomTool = new ZoomUsingRectangleTool(this);
            Tools.Add(rectangleZoomTool);

            fixedZoomInTool = new FixedZoomInTool(this);
            Tools.Add(fixedZoomInTool);

            fixedZoomOutTool = new FixedZoomOutTool(this);
            Tools.Add(fixedZoomOutTool);

            selectTool = new SelectTool {
                IsActive = true
            };
            Tools.Add(selectTool);

            moveTool               = new MoveTool();
            moveTool.Name          = "Move selected vertices";
            moveTool.FallOffPolicy = FallOffPolicyRule.None;
            Tools.Add(moveTool);

            linearMoveTool               = new MoveTool();
            linearMoveTool.Name          = "Move selected vertices (linear)";
            linearMoveTool.FallOffPolicy = FallOffPolicyRule.Linear;
            Tools.Add(linearMoveTool);

            deleteTool = new DeleteTool();
            Tools.Add(deleteTool);

            measureTool = new MeasureTool(this);
            tools.Add(measureTool);

            profileTool      = new GridProfileTool(this);
            profileTool.Name = "Make grid profile";
            tools.Add(profileTool);

            curvePointTool = new CurvePointTool();
            Tools.Add(curvePointTool);

            snapTool = new SnapTool();
            Tools.Add(snapTool);

            var toolTipTool = new ToolTipTool();

            Tools.Add(toolTipTool);

            MapTool fileHandlerTool = new FileDragHandlerTool();

            Tools.Add(fileHandlerTool);

            Tools.Add(new ExportMapToImageMapTool());

            Width  = 100;
            Height = 100;

            mapPropertyChangedEventHandler =
                new SynchronizedDelayedEventHandler <PropertyChangedEventArgs>(map_PropertyChanged_Delayed)
            {
                FireLastEventOnly = true,
                Delay2            = 300,
                Filter            = (sender, e) => sender is ILayer ||
                                    sender is VectorStyle ||
                                    sender is ITheme,
                SynchronizeInvoke = this,
                Enabled           = false
            };
            mapCollectionChangedEventHandler =
                new SynchronizedDelayedEventHandler <NotifyCollectionChangedEventArgs>(map_CollectionChanged_Delayed)
            {
                FireLastEventOnly = true,
                Delay2            = 300,
                Filter            = (sender, e) => sender is Map ||
                                    sender is ILayer,
                SynchronizeInvoke = this,
                Enabled           = false
            };

            Map = new Map(ClientSize)
            {
                Zoom = 100
            };
        }