/// <summary> /// Create a set of minimal options /// </summary> public static BomStructureOptions CreateDefault() { var rec = new BomStructureOptionsRecord(); rec.AllowSubmodelSemanticId.Add(AdminShell.Key.CreateNew( type: "Submodel", local: false, idType: "IRI", value: "http://smart.festo.com/id/type/submodel/BOM/1/1")); var opt = new BomStructureOptions(); opt.Records.Add(rec); return(opt); }
public object FillWithWpfControls( BomStructureOptions bomOptions, object opackage, object osm, object masterDockPanel) { // access _package = opackage as AdminShellPackageEnv; _submodel = osm as AdminShell.Submodel; _bomOptions = bomOptions; var master = masterDockPanel as DockPanel; if (_bomOptions == null || _package == null || _submodel == null || master == null) { return(null); } // set of records helping layouting _bomRecords = new BomStructureOptionsRecordList(_bomOptions?.MatchingRecords(_submodel.semanticId)); // clear some other members (GenericBomControl is not allways created new) _creatorOptions = new GenericBomCreatorOptions(); // apply some global options? foreach (var br in _bomRecords) { if (br.Layout >= 1 && br.Layout <= PresetSettingNames.Length) { _creatorOptions.LayoutIndex = br.Layout - 1; } if (br.Compact.HasValue) { _creatorOptions.CompactLabels = br.Compact.Value; } } // the Submodel elements need to have parents _submodel.SetAllParents(); // prepare options for fast access _bomOptions.Index(); // create TOP controls var spTop = new StackPanel(); spTop.Orientation = Orientation.Horizontal; DockPanel.SetDock(spTop, Dock.Top); master.Children.Add(spTop); var lb1 = new Label(); lb1.Content = "Layout style: "; spTop.Children.Add(lb1); var cbli = new ComboBox(); foreach (var psn in this.PresetSettingNames) { cbli.Items.Add(psn); } cbli.SelectedIndex = _creatorOptions.LayoutIndex; cbli.SelectionChanged += CbLayoutIndex_SelectionChanged; spTop.Children.Add(cbli); var cbcomp = new CheckBox(); cbcomp.Content = "Compact labels"; cbcomp.Margin = new System.Windows.Thickness(10, 0, 10, 0); cbcomp.VerticalContentAlignment = System.Windows.VerticalAlignment.Center; cbcomp.IsChecked = _creatorOptions.CompactLabels; cbcomp.Checked += CbCompactLabels_CheckedChanged; cbcomp.Unchecked += CbCompactLabels_CheckedChanged; spTop.Children.Add(cbcomp); // create BOTTOM controls var legend = GenericBomCreator.GenerateWrapLegend(); DockPanel.SetDock(legend, Dock.Bottom); master.Children.Add(legend); // set default for very small edge label size Microsoft.Msagl.Drawing.Label.DefaultFontSize = 6; // make a Dock panel var dp = new DockPanel(); dp.ClipToBounds = true; dp.MinWidth = 10; dp.MinHeight = 10; // very important: add first the panel, then add graph master.Children.Add(dp); // graph var graph = CreateGraph(_package, _submodel, _creatorOptions); // very important: first bind it, then add graph var viewer = new Microsoft.Msagl.WpfGraphControl.GraphViewer(); viewer.BindToPanel(dp); viewer.MouseDown += Viewer_MouseDown; viewer.MouseMove += Viewer_MouseMove; viewer.MouseUp += Viewer_MouseUp; viewer.ObjectUnderMouseCursorChanged += Viewer_ObjectUnderMouseCursorChanged; viewer.Graph = graph; // make it re-callable theGraph = graph; theViewer = viewer; theReferable = _submodel; // return viewer for advanced manilulation return(viewer); }