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; } }
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); } } } }