internal static void AddSiblingToNodeControl(NodeControl node_control)
        {
            List <ConnectorControl> connectors_both;
            List <ConnectorControl> connectors_to;
            List <ConnectorControl> connectors_from;

            GetAdjoiningConnectors(node_control.scene_rendering_control, node_control, out connectors_both, out connectors_to, out connectors_from);

            double left   = node_control.scene_data.CentreX;
            double top    = node_control.scene_data.CentreY;
            double width  = node_control.scene_data.Width;
            double height = node_control.scene_data.Height;

            top += 1.5 * height;

            NodeControlSceneData scene_data = new NodeControlSceneData();
            object      content             = new StringNodeContent("Sibling node");
            NodeControl node_new            = node_control.scene_rendering_control.AddNewNodeControl(content, left, top, width, height);

            if (connectors_to.Count > 0)
            {
                NodeControl node_control_parent = connectors_to[connectors_to.Count - 1].node_from;

                ConnectorControl connector_new = new ConnectorControl(node_control.scene_rendering_control);
                connector_new.SetNodes(node_control_parent, node_new);
                node_control.scene_rendering_control.AddNewConnectorControl(connector_new);
            }

            node_control.scene_rendering_control.SetSelectedNodeControl(node_new, false);
        }
        void NodeControl_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            //Logging.Info("NodeControl_PreviewKeyDown");

            if (false)
            {
            }

            else if (Key.Insert == e.Key)
            {
                NodeControl node_control = (NodeControl)sender;

                if (KeyboardTools.IsCTRLDown())
                {
                    object content = new StringNodeContent("Child node");
                    NodeControlAddingByKeyboard.AddChildToNodeControl(node_control, content);
                }
                else
                {
                    NodeControlAddingByKeyboard.AddSiblingToNodeControl(node_control);
                }

                e.Handled = true;
            }
        }
Exemplo n.º 3
0
        private static void CreateSampleScene(SceneRenderingControl scene_rendering_control, double x, double y, double skew)
        {
            int N = 300;

            Random random = new Random();

            string[] icon_filenames = new string[] { "papers/binoculars", "papers/boat", "papers/flame", "papers/radioactive", "papers/bread", "papers/news", "papers/music", "papers/percentage", "papers/postit" };

            NodeControl[] ncs = new NodeControl[N];
            for (int i = 0; i < N; ++i)
            {
                object node_content;

                switch (i % 2)
                {
                case 0:
                {
                    IconNodeContent icon_node_content = new IconNodeContent(icon_filenames[random.Next(icon_filenames.Length)]);
                    node_content = icon_node_content;
                    break;
                }

                case 1:
                {
                    StringNodeContent snc = new StringNodeContent();
                    snc.Text     = String.Format("Button {0}", i);
                    node_content = snc;
                    break;
                }

                default:
                    node_content = null;
                    break;
                }

                double raw_angle = 6 * i * Math.PI / 100;
                double distance  = 10 + i * 4 + RandomAugmented.Instance.NextDouble() * 10;
                double left      = x + distance * (-2 + skew) * Math.Sin(raw_angle) + RandomAugmented.Instance.NextDouble() * 30 - 15;
                double top       = y + distance * (+2 + skew) * Math.Cos(raw_angle) + RandomAugmented.Instance.NextDouble() * 30 - 15;

                ncs[i] = scene_rendering_control.AddNewNodeControl(node_content, left, top);

                // A line for this to the prev nc
                if (i > 3 && (i / 2) % 20 == 0)
                {
                    for (int j = 0; j < 3; ++j)
                    {
                        ConnectorControl cc = new ConnectorControl(scene_rendering_control);
                        cc.SetNodes(ncs[i - j], ncs[i]);
                        scene_rendering_control.AddNewConnectorControl(cc);
                    }
                }
            }
        }
        internal void ExploreLibraryInBrainstorm(Library library)
        {
            BrainstormControl brainstorm_control = Instance.OpenNewBrainstorm();

            int WIDTH  = 320;
            int HEIGHT = 240;

            LibraryNodeContent content_library = new LibraryNodeContent(library.WebLibraryDetail.Title, library.WebLibraryDetail.Id);
            NodeControl        node_library    = brainstorm_control.SceneRenderingControl.AddNewNodeControl(content_library, 0, 0, WIDTH, HEIGHT);

            ExpeditionDataSource eds = library.ExpeditionManager.ExpeditionDataSource;

            if (null != eds)
            {
                for (int topic = 0; topic < eds.lda_sampler.NumTopics; ++topic)
                {
                    string           topic_name = eds.GetDescriptionForTopic(topic, false, "\n");
                    ThemeNodeContent tnc        = new ThemeNodeContent(topic_name, library.WebLibraryDetail.Id);
                    NodeControlAddingByKeyboard.AddChildToNodeControl(node_library, tnc);
                }
            }
            else
            {
                {
                    StringNodeContent content_warning = new StringNodeContent("Please run Expedition on your library.");
                    NodeControl       node_warning    = brainstorm_control.SceneRenderingControl.AddNewNodeControl(content_warning, 0, -2 * HEIGHT);
                    brainstorm_control.SceneRenderingControl.AddNewConnectorControl(node_library, node_warning);
                }
                {
                    StringNodeContent content_warning = new StringNodeContent("Then you will get to\nexplore its themes.");
                    NodeControl       node_warning    = brainstorm_control.SceneRenderingControl.AddNewNodeControl(content_warning, -WIDTH, +2 * HEIGHT);
                    brainstorm_control.SceneRenderingControl.AddNewConnectorControl(node_library, node_warning);
                }
                {
                    StringNodeContent content_warning = new StringNodeContent("And you will get to\nexplore its documents.");
                    NodeControl       node_warning    = brainstorm_control.SceneRenderingControl.AddNewNodeControl(content_warning, +WIDTH, +2 * HEIGHT);
                    brainstorm_control.SceneRenderingControl.AddNewConnectorControl(node_library, node_warning);
                }
            }

            brainstorm_control.AutoArrange = true;
        }
        public static void CreateSampleScene_Coordinates(SceneRenderingControl scene_rendering_control)
        {
            int EXTENT = 30;
            int SCALE  = 100;

            NodeControl nx = scene_rendering_control.AddNewNodeControl(new StringNodeContent()
            {
                Text = "nx"
            }, -2 * SCALE * EXTENT, 0, 100, 100);
            NodeControl px = scene_rendering_control.AddNewNodeControl(new StringNodeContent()
            {
                Text = "px"
            }, +2 * SCALE * EXTENT, 0, 100, 100);
            NodeControl ny = scene_rendering_control.AddNewNodeControl(new StringNodeContent()
            {
                Text = "ny"
            }, 0, -2 * SCALE * EXTENT, 100, 100);
            NodeControl py = scene_rendering_control.AddNewNodeControl(new StringNodeContent()
            {
                Text = "py"
            }, 0, +2 * SCALE * EXTENT, 100, 100);

            for (int x = -EXTENT; x <= EXTENT; ++x)
            {
                for (int y = -EXTENT; y <= EXTENT; ++y)
                {
                    double width  = 100 / (1 + Math.Abs(x) + Math.Abs(y));
                    double height = 100 / (1 + Math.Abs(x) + Math.Abs(y));

                    double xpos = x * SCALE;
                    double ypos = y * SCALE;

                    StringNodeContent snc = new StringNodeContent();
                    snc.Text = String.Format("{0} {1}", xpos, ypos);

                    NodeControl node_control = scene_rendering_control.AddNewNodeControl(snc, xpos, ypos, width, height);

                    if (x == -EXTENT)
                    {
                        ConnectorControl cc = new ConnectorControl(scene_rendering_control);
                        cc.SetNodes(nx, node_control);
                        scene_rendering_control.AddNewConnectorControl(cc);
                    }
                    if (x == +EXTENT)
                    {
                        ConnectorControl cc = new ConnectorControl(scene_rendering_control);
                        cc.SetNodes(px, node_control);
                        scene_rendering_control.AddNewConnectorControl(cc);
                    }
                    if (y == -EXTENT)
                    {
                        ConnectorControl cc = new ConnectorControl(scene_rendering_control);
                        cc.SetNodes(ny, node_control);
                        scene_rendering_control.AddNewConnectorControl(cc);
                    }
                    if (y == +EXTENT)
                    {
                        ConnectorControl cc = new ConnectorControl(scene_rendering_control);
                        cc.SetNodes(py, node_control);
                        scene_rendering_control.AddNewConnectorControl(cc);
                    }
                }
            }
        }