private void tv_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { scenario.SelectedNode = tv.SelectedItem as SceneNodeModel; var nodeType = scenario.SelectedNodeType; var handler = scenario.GetNodeTypeHandler(nodeType); btnAddItem.IsEnabled = handler?.SupportsObjectOperation(ObjectOperation.Add, nodeType) ?? false; btnDeleteItem.IsEnabled = handler?.SupportsObjectOperation(ObjectOperation.Remove, nodeType) ?? false; btnCopyItem.IsEnabled = handler?.SupportsObjectOperation(ObjectOperation.Copy, nodeType) ?? false; }
public void SelectObject(SceneNodeModel node, int itemIndex) { if (node == null || !isReady) { return; } if (itemIndex < 0) { return; } var handler = scenario.GetNodeTypeHandler(scenario.SelectedNodeType); renderer.SetSelectedElement(handler?.GetElement(node, itemIndex)); }
public void ShowProperties(SceneNodeModel node, int itemIndex) { context = new MetaContext(scenario.Xml, scenario.ScenarioTag.CacheFile, scenario.ScenarioTag, scenario.MetadataStream); Visibility = Visibility.Hidden; rootNode = null; altNodes.Clear(); var nodeType = node?.NodeType ?? NodeType.None; var handler = scenario.GetNodeTypeHandler(nodeType); var details = handler?.GetPropertiesLocator(node, itemIndex); if (details == null) { CurrentItem = null; return; } rootNode = details.RootNode; baseAddress = details.BaseAddress; if (details.AdditionalNodes != null) { altNodes.AddRange(details.AdditionalNodes); } CurrentItem = details.TargetObject; Reload(); Visibility = Visibility.Visible; }