Exemple #1
0
        public static void Start(ref GrayOutDesignerExceptActiveArea grayOut, ServiceContainer services,
                                 UIElement activeContainer, Rect activeRectInActiveContainer)
        {
            Debug.Assert(services != null);
            Debug.Assert(activeContainer != null);
            DesignPanel   designPanel   = services.GetService <IDesignPanel>() as DesignPanel;
            OptionService optionService = services.GetService <OptionService>();

            if (designPanel != null && grayOut == null && optionService != null &&
                optionService.GrayOutDesignSurfaceExceptParentContainerWhenDragging)
            {
                grayOut = new GrayOutDesignerExceptActiveArea();
                grayOut.designSurfaceRectangle = new RectangleGeometry(
                    new Rect(0, 0, ((Border)designPanel.Child).Child.RenderSize.Width,
                             ((Border)designPanel.Child).Child.RenderSize.Height));
                grayOut.designPanel        = designPanel;
                grayOut.adornerPanel       = new AdornerPanel();
                grayOut.adornerPanel.Order = AdornerOrder.BehindForeground;
                grayOut.adornerPanel.SetAdornedElement(designPanel.Context.RootItem.View, null);
                grayOut.adornerPanel.Children.Add(grayOut);
                grayOut.ActiveAreaGeometry = new RectangleGeometry(activeRectInActiveContainer, 0, 0,
                                                                   (Transform)activeContainer.TransformToVisual(grayOut.adornerPanel.AdornedElement));
                Animate(grayOut.GrayOutBrush, Brush.OpacityProperty, MaxOpacity);
                designPanel.Adorners.Add(grayOut.adornerPanel);
            }
        }
Exemple #2
0
        public override Point PlacePoint(Point point)
        {
            if (surface == null)
            {
                return(base.PlacePoint(point));
            }

            DesignPanel designPanel = ExtendedItem.Services.DesignPanel as DesignPanel;

            if (designPanel == null || !designPanel.UseRasterPlacement)
            {
                return(base.PlacePoint(point));
            }

            if (Keyboard.IsKeyDown(Key.LeftCtrl))
            {
                surface.Children.Clear();
                rasterDrawn = false;
                return(base.PlacePoint(point));
            }

            drawRaster();

            point.Y = ((int)point.Y / raster) * raster;
            point.X = ((int)point.X / raster) * raster;

            return(point);
        }
Exemple #3
0
        public object ToContract(Control control)
        {
            var content = DesignPanel.GetContent(control);
            var view    = content.ToNative(true);

            return(FrameworkElementAdapters.ViewToContractAdapter(view));
        }
        internal static void Start(ref InfoTextEnterArea grayOut, ServiceContainer services, UIElement activeContainer, Rect activeRectInActiveContainer, string text)
        {
            Debug.Assert(services != null);
            Debug.Assert(activeContainer != null);
            DesignPanel   designPanel   = services.GetService <IDesignPanel>() as DesignPanel;
            OptionService optionService = services.GetService <OptionService>();

            if (designPanel != null && grayOut == null && optionService != null && optionService.GrayOutDesignSurfaceExceptParentContainerWhenDragging)
            {
                grayOut = new InfoTextEnterArea();
                grayOut.designSurfaceRectangle = new RectangleGeometry(
                    new Rect(0, 0, ((Border)designPanel.Child).Child.RenderSize.Width, ((Border)designPanel.Child).Child.RenderSize.Height));
                grayOut.designPanel        = designPanel;
                grayOut.adornerPanel       = new AdornerPanel();
                grayOut.adornerPanel.Order = AdornerOrder.Background;
                grayOut.adornerPanel.SetAdornedElement(designPanel.Context.RootItem.View, null);
                grayOut.ActiveAreaGeometry = new RectangleGeometry(activeRectInActiveContainer, 0, 0, (Transform)activeContainer.TransformToVisual(grayOut.adornerPanel.AdornedElement));
                var tb = new TextBlock()
                {
                    Text = text
                };
                tb.FontSize            = 10;
                tb.ClipToBounds        = true;
                tb.Width               = ((FrameworkElement)activeContainer).ActualWidth;
                tb.Height              = ((FrameworkElement)activeContainer).ActualHeight;
                tb.VerticalAlignment   = VerticalAlignment.Top;
                tb.HorizontalAlignment = HorizontalAlignment.Left;
                tb.RenderTransform     = (Transform)activeContainer.TransformToVisual(grayOut.adornerPanel.AdornedElement);
                grayOut.adornerPanel.Children.Add(tb);

                designPanel.Adorners.Add(grayOut.adornerPanel);
            }
        }
Exemple #5
0
        public override void BeforeSetPosition(PlacementOperation operation)
        {
            base.BeforeSetPosition(operation);
            if (surface == null)
            {
                return;
            }

            DesignPanel designPanel = ExtendedItem.Services.DesignPanel as DesignPanel;

            if (designPanel == null || !designPanel.UseRasterPlacement)
            {
                return;
            }

            if (Keyboard.IsKeyDown(Key.LeftCtrl))
            {
                surface.Children.Clear();
                rasterDrawn = false;
                return;
            }

            drawRaster();

            var bounds = operation.PlacedItems[0].Bounds;

            bounds.Y      = ((int)bounds.Y / raster) * raster;
            bounds.X      = ((int)bounds.X / raster) * raster;
            bounds.Width  = Convert.ToInt32((bounds.Width / raster)) * raster;
            bounds.Height = Convert.ToInt32((bounds.Height / raster)) * raster;
            operation.PlacedItems[0].Bounds = bounds;
        }
Exemple #6
0
        protected override void OnInitialized()
        {
            base.OnInitialized();

            panel             = ExtendedItem.Context.Services.DesignPanel as DesignPanel;
            panel.ContextMenu = new RightClickContextMenu(ExtendedItem);
        }
        protected override void OnInitialized()
        {
            base.OnInitialized();
            element            = ExtendedItem.Component as FrameworkElement;
            editor             = new InPlaceEditor(ExtendedItem);
            editor.DataContext = element;
            editor.Visibility  = Visibility.Hidden;            // Hide the editor first, It's visibility is governed by mouse events.

            placement = new RelativePlacement(HorizontalAlignment.Left, VerticalAlignment.Top);
            adornerPanel.Children.Add(editor);
            Adorners.Add(adornerPanel);

            designPanel = ExtendedItem.Services.GetService <IDesignPanel>() as DesignPanel;
            Debug.Assert(designPanel != null);

            /* Add mouse event handlers */
            designPanel.PreviewMouseLeftButtonDown += MouseDown;
            designPanel.MouseLeftButtonUp          += MouseUp;
            designPanel.PreviewMouseMove           += MouseMove;

            /* To update the position of Editor in case of resize operation */
            ExtendedItem.PropertyChanged += PropertyChanged;

            eventsAdded = true;
        }
Exemple #8
0
        //private void TreeView_MouseMove(object sender, MouseEventArgs e)
        //{
        //    if (e.LeftButton == MouseButtonState.Pressed && ToolBoxView.SelectedItem is IControl controlItem)
        //    {
        //        var data = new DataObject();
        //        data.SetData("control", controlItem);
        //        DragDrop.DoDragDrop(sender as DependencyObject, data, DragDropEffects.Copy);
        //    }
        //}

        private void UserControl_KeyDown(object sender, KeyEventArgs e)
        {
            if ((e.Key == Key.Back || e.Key == Key.Delete))
            {
                DesignPanel.RemoveChildren();
            }
        }
Exemple #9
0
 private void CreateDesignerHost()
 {
     _designerViewContent = new FormsDesignerViewContent(this);
     _designerViewContent.Reload();
     _designPanel      = new DesignPanel(_designerViewContent.DesignSurface);
     _designPanel.Dock = DockStyle.Fill;
     Controls.Add(_designPanel);
 }
Exemple #10
0
        public void LoadFromFileName(string fileName)
        {
            Stream       stream       = new FileStream(fileName, FileMode.Open);
            BinaryReader binaryReader = new BinaryReader(stream, System.Text.Encoding.Unicode);

            byte[] buffer = binaryReader.ReadBytes((int)stream.Length);

            //string xmlContent = File.ReadAllText(fileName);

            try
            {
                string xmlContent = System.Text.Encoding.Unicode.GetString(buffer);

                binaryReader.Close();
                stream.Close();

                if (xmlContent.IndexOf("<SnControl.Solution>") == -1)
                {
                    xmlContent = File.ReadAllText(fileName);
                }

                string xmlSolutionContent = xmlContent.Substring(xmlContent.IndexOf("<SnControl.Solution>"), xmlContent.IndexOf("</SnControl.Solution>") - xmlContent.IndexOf("<SnControl.Solution>"));
                xmlSolutionContent += "</SnControl.Solution>";
                string xmlFormContent = xmlContent.Substring(xmlContent.IndexOf("<System.Windows.Forms.Form"), xmlContent.IndexOf("</QuerySolution>") - xmlContent.IndexOf("<System.Windows.Forms.Form"));

                XmlSolutionReader xmlSolutionReader = new XmlSolutionReader(_solution);
                _solution = xmlSolutionReader.SetUpSolution(xmlSolutionContent);
                if (_solution == null)
                {
                    Controls.Clear();
                    return;
                }
                SolutionInstance.GetInstance().Solution = _solution;

                IDesignerLoaderProvider loaderProvider = new XmlDesignerLoaderProvider(xmlFormContent);
                IDesignerGenerator      generator      = new XmlDesignerGenerator();

                _designerViewContent = new FormsDesignerViewContent(this, loaderProvider, generator);
                //加载XML内容
                _designerViewContent.Reload();
                _designPanel      = new DesignPanel(_designerViewContent.DesignSurface);
                _designPanel.Dock = DockStyle.Fill;
                Controls.Add(_designPanel);

                if (!_designPanel.SetRootDesigner())
                {
                    Controls.Clear();
                    return;
                }
                _designerViewContent.PropertyContainer.Host = _designPanel.Host;
                _designerViewContent.PropertyContainer.SelectableObjects = _designerViewContent.Host.Container.Components;
            }
            catch (ApplicationException e)
            {
                MessageBox.Show(e.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
		protected override void OnInitialized()
		{
			base.OnInitialized();

            contextMenu = new WrapItemContextMenu(ExtendedItem);
			panel = ExtendedItem.Context.Services.DesignPanel as DesignPanel;
			if (panel != null)
				panel.AddContextMenu(contextMenu);
		}
        protected override void OnInitialized()
        {
            base.OnInitialized();

            contextMenu = new ArrangeItemsContextMenu(ExtendedItem);
            panel       = ExtendedItem.Context.Services.DesignPanel as DesignPanel;
            if (panel != null)
            {
                panel.AddContextMenu(contextMenu);
            }
        }
        protected override void OnInitialized()
        {
            base.OnInitialized();

            contextMenu = new PathContextMenu(ExtendedItem);
            panel       = ExtendedItem.Context.Services.DesignPanel as DesignPanel;
            if (panel != null)
            {
                panel.AddContextMenu(contextMenu, this.GetType().GetCustomAttribute <ExtensionAttribute>().Order);
            }
        }
        public CatalogController(CatalogListPanel clp, DesignPanel dp)
        {
            this.dp     = dp;
            productList = Db.DatabaseController.productList;
            this.clp    = clp;
            //vanillaList = productList;
            productPanelList = new List <CatalogProductPanel>();

            // The standard sorting, ordering and searchqueries are set everytime the program starts.
            currentOrdering = "Naam: A-Z";
            currentSorting  = "Alle";
            currentSearch   = "";
        }
Exemple #15
0
        public override void BeginPlacement(PlacementOperation operation)
        {
            base.BeginPlacement(operation);

            DesignPanel designPanel = ExtendedItem.Services.DesignPanel as DesignPanel;

            if (designPanel != null)
            {
                raster = designPanel.RasterWidth;
            }

            CreateSurface(operation);
        }
 public DesignPanelTests()
 {
     dp               = new DesignPanel();
     dpc              = new DesignPanelController(dp);
     room             = new Room();
     room.productList = new List <Product>();
     lines            = new List <Line>
     {
         new Line(10, 10, 70, 50),
         new Line(70, 50, 30, 10),
         new Line(30, 10, 10, 50),
         new Line(10, 50, 10, 10)
     };
 }
Exemple #17
0
        private void BrowseComponentImageDialog_FileOk(object sender, CancelEventArgs e)
        {
            var image   = new Bitmap(BrowseComponentImageDialog.FileName);
            var control = new ControlWithImage(image, this);

            if (MessageBox.Show("Do you want to make this image transparent?", "Transparent", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                control.Transparent = true;
            }

            DesignPanel.Controls.Add(control);
            control.Level = _lastLevel++;
            DesignPanel.Refresh();
            _addedImages.Add(control);
        }
Exemple #18
0
        public void PlaceProduct_ShouldAddProductToDesignPanel_WhenProductIsDropped()
        {
            //Arrange
            Product     p  = new Chair();
            DesignPanel dp = new DesignPanel();
            Room        r  = new Room();

            dp.rDesign             = r;
            dp.rDesign.productList = new List <Product>();

            //Act
            dp.AddProduct(p);
            int expected = 1;

            //Assert
            Assert.AreEqual(expected, dp.rDesign.productList.Count);
        }
Exemple #19
0
        public void DeleteProduct_ShouldDeleteProductFromDesignPanel_WhenDeleteButtonIsClicked()
        {
            //Arrange
            Product     p  = new Chair();
            DesignPanel dp = new DesignPanel();
            Room        r  = new Room();

            dp.rDesign             = r;
            dp.rDesign.productList = new List <Product>();
            dp.AddProduct(p);

            //Act
            dp.DeleteProduct(p);
            int expected = 0;

            //Assert
            Assert.AreEqual(expected, dp.rDesign.productList.Count);
        }
		protected override void OnInitialized()
		{
			base.OnInitialized();
			element = ExtendedItem.Component as FrameworkElement;
			editor = new InPlaceEditor(ExtendedItem);
			editor.DataContext = element;
			editor.Visibility = Visibility.Hidden; // Hide the editor first, It's visibility is governed by mouse events.
			
			placement = new RelativePlacement(HorizontalAlignment.Left, VerticalAlignment.Top);
			adornerPanel.Children.Add(editor);
			Adorners.Add(adornerPanel);
			
			designPanel = ExtendedItem.Services.GetService<IDesignPanel>() as DesignPanel;
			Debug.Assert(designPanel!=null);
			
			/* Add mouse event handlers */
			designPanel.PreviewMouseLeftButtonDown += MouseDown;
			designPanel.PreviewMouseLeftButtonUp += MouseUp;
			designPanel.PreviewMouseMove += MouseMove;
			
			/* To update the position of Editor in case of resize operation */
			ExtendedItem.PropertyChanged += PropertyChanged;
		}
Exemple #21
0
 public DesignPanelController(DesignPanel dp)
 {
     this.designPanel = dp;
 }
        public override void BeforeSetPosition(PlacementOperation operation)
        {
            base.BeforeSetPosition(operation);
            if (surface == null)
            {
                return;
            }

            DesignPanel designPanel = ExtendedItem.Services.DesignPanel as DesignPanel;

            if (designPanel == null || !designPanel.UseSnaplinePlacement)
            {
                return;
            }

            surface.Children.Clear();
            if (Keyboard.IsKeyDown(Key.LeftCtrl))
            {
                return;
            }

            Rect bounds = Rect.Empty;

            foreach (var item in operation.PlacedItems)
            {
                bounds.Union(item.Bounds);
            }

            var horizontalInput = new List <Snapline>();
            var verticalInput   = new List <Snapline>();
            var info            = operation.PlacedItems[0];

            if (operation.Type == PlacementType.Resize)
            {
                AddLines(bounds, 0, false, horizontalInput, verticalInput, info.ResizeThumbAlignment);
            }
            else
            {
                AddLines(bounds, 0, false, horizontalInput, verticalInput, null);
                if (baseline.HasValue)
                {
                    var textOffset = bounds.Top + baseline.Value;
                    horizontalInput.Add(new Snapline()
                    {
                        Group = 1, Offset = textOffset, Start = bounds.Left, End = bounds.Right
                    });
                }
            }

            // debug
            //foreach (var t in horizontalMap.Concat(horizontalInput)) {
            //    surface.Children.Add(new Line() { X1 = t.Start, X2 = t.End, Y1 = t.Offset, Y2 = t.Offset, Stroke = Brushes.Black });
            //}
            //foreach (var t in verticalMap.Concat(verticalInput)) {
            //    surface.Children.Add(new Line() { X1 = t.Offset, X2 = t.Offset, Y1 = t.Start , Y2 = t.End, Stroke = Brushes.Black });
            //}
            //return;

            List <Snapline> drawLines;
            double          delta;

            if (Snap(horizontalInput, horizontalMap, Accuracy, out drawLines, out delta))
            {
                if (operation.Type == PlacementType.Resize)
                {
                    if (info.ResizeThumbAlignment.Vertical == VerticalAlignment.Top)
                    {
                        bounds.Y     += delta;
                        bounds.Height = Math.Max(0, bounds.Height - delta);
                    }
                    else
                    {
                        bounds.Height = Math.Max(0, bounds.Height + delta);
                    }
                    info.Bounds = bounds;
                }
                else
                {
                    foreach (var item in operation.PlacedItems)
                    {
                        var r = item.Bounds;
                        r.Y        += delta;
                        item.Bounds = r;
                    }
                }

                foreach (var d in drawLines)
                {
                    DrawLine(d.Start, d.Offset, d.End, d.Offset);
                }
            }

            if (Snap(verticalInput, verticalMap, Accuracy, out drawLines, out delta))
            {
                if (operation.Type == PlacementType.Resize)
                {
                    if (info.ResizeThumbAlignment.Horizontal == HorizontalAlignment.Left)
                    {
                        bounds.X    += delta;
                        bounds.Width = Math.Max(0, bounds.Width - delta);
                    }
                    else
                    {
                        bounds.Width = Math.Max(0, bounds.Width + delta);
                    }
                    info.Bounds = bounds;
                }
                else
                {
                    foreach (var item in operation.PlacedItems)
                    {
                        var r = item.Bounds;
                        r.X        += delta;
                        item.Bounds = r;
                    }
                }

                foreach (var d in drawLines)
                {
                    DrawLine(d.Offset, d.Start, d.Offset, d.End);
                }
            }
        }
 public DragController(Product p, DesignPanel dp)
 {
     this.dp = dp;
     this.p  = p;
 }
Exemple #24
0
        public override Point PlacePoint(Point point)
        {
            if (surface == null)
            {
                return(base.PlacePoint(point));
            }

            DesignPanel designPanel = ExtendedItem.Services.DesignPanel as DesignPanel;

            if (designPanel == null || !designPanel.UseSnaplinePlacement)
            {
                return(base.PlacePoint(point));
            }
            ;

            surface.Children.Clear();
            if (Keyboard.IsKeyDown(Key.LeftCtrl))
            {
                return(base.PlacePoint(point));
            }
            ;

            Rect bounds = new Rect(point.X, point.Y, 0, 0);

            var horizontalInput = new List <Snapline>();
            var verticalInput   = new List <Snapline>();

            AddLines(bounds, 0, false, horizontalInput, verticalInput, null);
            if (baseline.HasValue)
            {
                var textOffset = bounds.Top + baseline.Value;
                horizontalInput.Add(new Snapline()
                {
                    Group = 1, Offset = textOffset, Start = bounds.Left, End = bounds.Right
                });
            }

            List <Snapline> drawLines;
            double          delta;

            var newPoint = base.PlacePoint(point);

            if (Snap(horizontalInput, horizontalMap, SnaplineAccuracy, out drawLines, out delta))
            {
                foreach (var d in drawLines)
                {
                    DrawLine(d.Start, d.Offset + d.DrawOffset, d.End, d.Offset + d.DrawOffset);
                }

                point.Y += delta;
            }
            else
            {
                point.Y = newPoint.Y;
            }

            if (Snap(verticalInput, verticalMap, SnaplineAccuracy, out drawLines, out delta))
            {
                foreach (var d in drawLines)
                {
                    DrawLine(d.Offset + d.DrawOffset, d.Start, d.Offset + d.DrawOffset, d.End);
                }

                point.X += delta;
            }
            else
            {
                point.X = newPoint.X;
            }


            return(point);
        }
Exemple #25
0
 private void Designer_KeyDown(object sender, KeyEventArgs e)
 {
     DesignPanel.OnKeyDown(sender, e);
 }