예제 #1
0
        public static void LayouterTopology(int LayerDistance, int RowDistance, FlowLayouter.FlowDirection Direction, int SpringRate, int Repulsion, int RepulsionRange, int Friction, int Mass, Boolean Fit,
                                            int FitX0, int FitY0, int FitX1, int FitY1, Dataweb.NShape.WinFormsUI.Display Display, int Timeout, LayouterType Type, Dataweb.NShape.Project Project)
        {
            switch (Type)
            {
            case LayouterType.Expansion:
                break;

            case LayouterType.Flow:
                FlowLayouter flowLayouter = new FlowLayouter(Project);
                flowLayouter.Direction     = Direction;
                flowLayouter.LayerDistance = LayerDistance;
                flowLayouter.RowDistance   = RowDistance;
                flowLayouter.AllShapes     = Display.Diagram.Shapes;
                flowLayouter.Shapes        = Display.Diagram.Shapes;

                flowLayouter.Prepare();
                flowLayouter.Execute(Timeout);

                if (Fit)
                {
                    flowLayouter.Fit(FitX0, FitY0, FitX1, FitY1);
                }

                break;

            case LayouterType.Grid:
                break;

            case LayouterType.Repulsion:
                RepulsionLayouter repulsionLayouter = new RepulsionLayouter(Project);
                repulsionLayouter.SpringRate     = SpringRate;     //8
                repulsionLayouter.Repulsion      = Repulsion;      //3
                repulsionLayouter.RepulsionRange = RepulsionRange; //600
                repulsionLayouter.Friction       = Friction;       //0
                repulsionLayouter.Mass           = Mass;           //50
                repulsionLayouter.AllShapes      = Display.Diagram.Shapes;
                repulsionLayouter.Shapes         = Display.Diagram.Shapes;

                repulsionLayouter.Prepare();

                repulsionLayouter.Execute(Timeout);

                if (Fit)
                {
                    repulsionLayouter.Fit(FitX0, FitY0, FitX1, FitY1);
                }

                break;

            default:
                break;
            }
        }
예제 #2
0
        private void PrepareLayouter()
        {
            switch ((string)currentPanel.Tag)
            {
            case "Expansion":                     // Distribution
                if (layouter == null || !(layouter is ExpansionLayouter))
                {
                    layouter = new ExpansionLayouter(Project);
                }
                ExpansionLayouter dl = (ExpansionLayouter)layouter;
                dl.HorizontalCompression = horizontalCompressionTrackBar.Value;
                dl.VerticalCompression   = verticalCompressionTrackBar.Value;
                break;

            case "Alignment":
                if (layouter == null || !(layouter is GridLayouter))
                {
                    layouter = new GridLayouter(Project);
                }
                GridLayouter gl = (GridLayouter)layouter;
                gl.CoarsenessX = columnDistanceTrackBar.Value;
                gl.CoarsenessY = rowDistanceTrackBar.Value;

                /* gl.ColumnDistance = columnDistanceTrackBar.Value;
                 * gl.RowDistance = rowDistanceTrackBar.Value; */
                break;

            case "Clusters":
                if (layouter == null || !(layouter is RepulsionLayouter))
                {
                    layouter = new RepulsionLayouter(Project);
                }
                RepulsionLayouter rl = (RepulsionLayouter)layouter;
                // The default distance between connected elements should be 100 display units.
                // The default distance between unconnected elements should be 300 display units.
                rl.Friction       = 0;                   // 300;
                rl.Repulsion      = repulsionStrengthTrackBar.Value;
                rl.RepulsionRange = repulsionRangeTrackBar.Value;
                rl.SpringRate     = attractionStrengthTrackBar.Value;
                // Two unconnected elements at the same position should move to their default distance
                // within two steps
                rl.Mass = 50;
                break;

            case "Flow":
                if (layouter == null || !(layouter is FlowLayouter))
                {
                    layouter = new FlowLayouter(Project);
                }
                FlowLayouter fl = (FlowLayouter)layouter;
                if (bottomUpRadioButton.Checked)
                {
                    fl.Direction = FlowLayouter.FlowDirection.BottomUp;
                }
                else if (leftToRightRadioButton.Checked)
                {
                    fl.Direction = FlowLayouter.FlowDirection.LeftToRight;
                }
                else if (topDownRadioButton.Checked)
                {
                    fl.Direction = FlowLayouter.FlowDirection.TopDown;
                }
                else if (rightToLeftRadioButton.Checked)
                {
                    fl.Direction = FlowLayouter.FlowDirection.RightToLeft;
                }
                fl.LayerDistance = flowLayerDistanceTrackBar.Value;
                fl.RowDistance   = flowRowDistanceTrackBar.Value;
                break;

            default:
                Debug.Assert(false);
                break;
            }
        }
예제 #3
0
		private void PrepareLayouter()
		{
			switch ((string) currentPanel.Tag) {
				case "Expansion": // Distribution
					if (layouter == null || !(layouter is ExpansionLayouter))
						layouter = new ExpansionLayouter(Project);
					ExpansionLayouter dl = (ExpansionLayouter) layouter;
					dl.HorizontalCompression = horizontalCompressionTrackBar.Value;
					dl.VerticalCompression = verticalCompressionTrackBar.Value;
					break;
				case "Alignment":
					if (layouter == null || !(layouter is GridLayouter))
						layouter = new GridLayouter(Project);
					GridLayouter gl = (GridLayouter) layouter;
					gl.CoarsenessX = columnDistanceTrackBar.Value;
					gl.CoarsenessY = rowDistanceTrackBar.Value;
					/* gl.ColumnDistance = columnDistanceTrackBar.Value;
					gl.RowDistance = rowDistanceTrackBar.Value; */
					break;
				case "Clusters":
					if (layouter == null || !(layouter is RepulsionLayouter))
						layouter = new RepulsionLayouter(Project);
					RepulsionLayouter rl = (RepulsionLayouter) layouter;
					// The default distance between connected elements should be 100 display units.
					// The default distance between unconnected elements should be 300 display units.
					rl.Friction = 0; // 300;
					rl.Repulsion = repulsionStrengthTrackBar.Value;
					rl.RepulsionRange = repulsionRangeTrackBar.Value;
					rl.SpringRate = attractionStrengthTrackBar.Value;
					// Two unconnected elements at the same position should move to their default distance 
					// within two steps
					rl.Mass = 50;
					break;
				case "Flow":
					if (layouter == null || !(layouter is FlowLayouter))
						layouter = new FlowLayouter(Project);
					FlowLayouter fl = (FlowLayouter) layouter;
					if (bottomUpRadioButton.Checked) fl.Direction = FlowLayouter.FlowDirection.BottomUp;
					else if (leftToRightRadioButton.Checked) fl.Direction = FlowLayouter.FlowDirection.LeftToRight;
					else if (topDownRadioButton.Checked) fl.Direction = FlowLayouter.FlowDirection.TopDown;
					else if (rightToLeftRadioButton.Checked) fl.Direction = FlowLayouter.FlowDirection.RightToLeft;
					fl.LayerDistance = flowLayerDistanceTrackBar.Value;
					fl.RowDistance = flowRowDistanceTrackBar.Value;
					break;
				default:
					Debug.Assert(false);
					break;
			}
		}