public override void OnApplyTemplate() { base.OnApplyTemplate(); TextBox textBox = null; foreach (var tb in VisualTreeHelperUtil.GetControlsDecendant <TextBox>(this).Where(uie => uie.Focusable)) { textBox = tb; tb.GotFocus += (sender, e) => OnControlGotFous((UIElement)sender); tb.LostFocus += delegate { IsOrHisChildrenAreFocused = IsOrHisChildrenAreFocused; if (SelectedItem == null) { SelectedItem = Items[0]; } }; } if (textBox != null) { textBox.Focus(); textBox.SelectAll(); } }
private void PropertiesListView_LostFocus(object sender, RoutedEventArgs e) { if (Designer.IsFocused || VisualTreeHelperUtil.GetFocusedElement(Designer) != null) { Designer.OnSelectionChanged(); } }
internal ListViewItem GetListViewItem(PropertyBase property) { return((from lvi in VisualTreeHelperUtil.GetControlsDecendant <ListViewItem>(propertiesListView) let uiProperty = lvi.Content as UIProperty where uiProperty != null && uiProperty.BusinessInstance == property select lvi).First()); }
private static void OnAttachedPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { UniformBoard panel = VisualTreeHelperUtil.GetParent(d, (parent) => parent is UniformBoard) as UniformBoard; if (panel != null) { RefreshPanel(panel); } }
internal ListViewItem GetListViewItem(ComplexProperty complexProperty, out int index) { var value = (from lvi in VisualTreeHelperUtil.GetControlsDecendant <ListViewItem>(propertiesListView) let uiRelatedProperty = lvi.Content as UIRelatedProperty where uiRelatedProperty != null select new { ListViewItem = lvi, UIRelatedProperty = uiRelatedProperty }).Select((lvi, i) => new { ListViewItem = lvi, Index = i }).First(lvi => lvi.ListViewItem.UIRelatedProperty.BusinessInstance == complexProperty); index = value.Index; return(value.ListViewItem.ListViewItem); }
private bool RenameProperty(object listViewItem) { var editableTextBlock = VisualTreeHelperUtil.GetControlsDecendant <EditableTextBlock>(listViewItem).First(); if (editableTextBlock != null) { editableTextBlock.Edit(); return(true); } return(false); }
public static ExecutedRoutedEventHandler AddAssociationExecuted(UIElement parent, Func <CSDLView> getCSDLView, Func <DesignerView> getDesignerView, UIEntityType defaultEntityType1, Action <UIAssociation> specialActionToDoWhenNewItemAdded) { return((object sender, ExecutedRoutedEventArgs e) => { var csdlView = getCSDLView(); var designerView = getDesignerView(); var addAssociationWindow = new AddAssociationWindow { Owner = VisualTreeHelperUtil.GetControlAscendant <Window>(parent), DataContext = csdlView, NavigationProperty1EntityType = defaultEntityType1 }; switch (addAssociationWindow.ShowDialog()) { case true: var uiAssociation = csdlView.AddAssociation(addAssociationWindow.AssociationName, addAssociationWindow.NavigationProperty1Name, addAssociationWindow.NavigationProperty1EntityType, addAssociationWindow.NavigationProperty1Cardinality.Value, addAssociationWindow.NavigationProperty2Name, addAssociationWindow.NavigationProperty2EntityType, addAssociationWindow.NavigationProperty2Cardinality.Value); SizeChangedEventHandler actionToDoWhenNewItemAdded = null; bool drawAssociation = false; DesignerCanvas designerCanvas = parent as DesignerCanvas; if (designerCanvas == null) { designerCanvas = VisualTreeHelperUtil.GetControlAscendant <DesignerCanvas>(parent); } var navigationProperty1EntityTypeDesigner = designerCanvas.GetTypeDesigner(uiAssociation.NavigationProperty1.ParentType); var navigationProperty2EntityTypeDesigner = designerCanvas.GetTypeDesigner(uiAssociation.NavigationProperty2.ParentType); actionToDoWhenNewItemAdded = (object o, SizeChangedEventArgs scea) => { if (designerView.ContainsEntityType(uiAssociation.NavigationProperty1.ParentType) && designerView.ContainsEntityType(uiAssociation.NavigationProperty2.ParentType)) { if (drawAssociation) { navigationProperty1EntityTypeDesigner.DrawAssociation(navigationProperty2EntityTypeDesigner, uiAssociation.NavigationProperty1.BusinessInstance as NavigationProperty); } else { drawAssociation = true; } } if (specialActionToDoWhenNewItemAdded != null) { specialActionToDoWhenNewItemAdded(uiAssociation); } ((ListView)o).SizeChanged -= actionToDoWhenNewItemAdded; }; navigationProperty1EntityTypeDesigner.propertiesListView.SizeChanged += actionToDoWhenNewItemAdded; if (navigationProperty2EntityTypeDesigner != null) { navigationProperty2EntityTypeDesigner.propertiesListView.SizeChanged += actionToDoWhenNewItemAdded; } break; } }); }
private void PropertiesGrid_SizeChanged(object sender, SizeChangedEventArgs e) { var scrollViewer = VisualTreeHelperUtil.GetControlAscendant <ScrollViewer>(this); var maxWidth = scrollViewer.ActualWidth - 10; if (propertiesGrid.ActualWidth > maxWidth) { propertiesGrid.Width = maxWidth; } else if (propertiesGrid.ActualWidth != maxWidth) { propertiesGrid.Width = double.NaN; } }
private void RearrangeHistoryControls() { foreach (var item in listview.Items) { ListViewItem lvItem = listview.ContainerFromItem(item) as ListViewItem; if (lvItem != null) { Expander expander = VisualTreeHelperUtil.GetFrameworkElementByName <Expander>(lvItem); expander.IsExpanded = false; } } }
internal ListViewItem GetListViewItem(NavigationProperty navigationProperty, out int index) { foreach (ListViewItem lvia in VisualTreeHelperUtil.GetControlsDecendant <ListViewItem>(propertiesListView)) { lvia.ToString(); } var value = (from lvi in VisualTreeHelperUtil.GetControlsDecendant <ListViewItem>(propertiesListView) let uiRelatedProperty = lvi.Content as UIRelatedProperty where uiRelatedProperty != null select new { ListViewItem = lvi, UIRelatedProperty = uiRelatedProperty }).Select((lvi, i) => new { ListViewItem = lvi, Index = i }).First(lvi => lvi.ListViewItem.UIRelatedProperty.BusinessInstance == navigationProperty); index = value.Index; // +navigationProperty.EntityType.ComplexProperties.Count; return(value.ListViewItem.ListViewItem); }
protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnPreviewMouseLeftButtonDown(e); foreach (var relation in VisualTreeHelperUtil.GetControlsDecendant <RelationBase>(this)) { relation.IsSelected = false; } var typeDesigner = VisualTreeHelperUtil.GetControlAscendant <TypeBaseDesigner>(e.OriginalSource); _moveEntityType = typeDesigner != null && VisualTreeHelperUtil.GetControlAscendant <ListView>(e.OriginalSource) == null && VisualTreeHelperUtil.GetControlAscendant <TextBox>(e.OriginalSource) == null; if (_moveEntityType) { _moveEntityTypeStartPoint = e.GetPosition(this); Cursor = Cursors.ScrollAll; } }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var separator = (MenuSeparator)value; var items = VisualTreeHelperUtil.GetControlAscendant <ItemsControl>(separator).Items.OfType <FrameworkElement>(); bool visibleBefore = false; bool visibleAfter = false; bool before = true; foreach (var item in items) { if (item is Separator) { if (item == separator) { before = false; } else if (item.IsVisible) { if (before) { visibleBefore = false; } else { break; } } } else if (item.IsVisible) { if (before) { visibleBefore = true; } else { visibleAfter = true; } } } return(visibleBefore && visibleAfter ? Visibility.Visible : Visibility.Collapsed); }
protected virtual void Rename(object originalSource) { if (_groupRightClick) { return; } var editableTextBlock = originalSource as EditableTextBlock; if (editableTextBlock != null) { editableTextBlock.Edit(); return; } if (originalSource == this) { if (propertiesListView.SelectedItem != null) { var listViewItem = GetListViewItem(((UIProperty)propertiesListView.SelectedItem).BusinessInstance); if (listViewItem.IsFocused && RenameProperty(listViewItem)) { return; } } var selectedControl = VisualTreeHelperUtil.GetFocusedElement(this); editableTextBlock = selectedControl as EditableTextBlock; if (editableTextBlock != null) { editableTextBlock.Edit(); return; } if (selectedControl is System.Windows.Controls.ListViewItem && RenameProperty(selectedControl)) { return; } entityHeaderEditableTextBlock.Edit(); return; } if (originalSource is System.Windows.Controls.ListViewItem) { RenameProperty(originalSource); } }
protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnPreviewMouseLeftButtonDown(e); if (VisualTreeHelperUtil.GetControlAscendant <TextBox>(e.OriginalSource) == null || VisualTreeHelperUtil.GetControlAscendant <EditableTextBlock>(e.OriginalSource) == null) { if (!(e.OriginalSource is FrameworkElement)) { return; } FrameworkElement control = (FrameworkElement)e.OriginalSource; while ((control = VisualTreeHelperUtil.GetControlAscendant <Grid>(control)) != null) { if (control.Name == "grdHeader") { ClickOnTheHeader(); break; } } } }
internal void DrawAssociation(TypeBaseDesigner otherTypeDesigner, NavigationProperty navigationProperty) { var csdlAssociation = navigationProperty.Association; int otherTypeDesignerItemIndex; var otherNavigationProperty = csdlAssociation.PropertiesEnd.First(np => np != navigationProperty); var otherListViewItem = otherTypeDesigner.GetListViewItem(otherNavigationProperty, out otherTypeDesignerItemIndex); int typeDesignerItemIndex; var typeDesignerListViewItem = GetListViewItem(navigationProperty, out typeDesignerItemIndex); ICSharpCode.Data.EDMDesigner.Core.UI.UserControls.Relations.Association association; if (csdlAssociation.PropertyEnd1 == navigationProperty) { association = new ICSharpCode.Data.EDMDesigner.Core.UI.UserControls.Relations.Association(csdlAssociation, Designer, this, otherTypeDesigner, typeDesignerListViewItem, otherListViewItem, typeDesignerItemIndex, otherTypeDesignerItemIndex); } else { association = new ICSharpCode.Data.EDMDesigner.Core.UI.UserControls.Relations.Association(csdlAssociation, Designer, otherTypeDesigner, this, otherListViewItem, typeDesignerListViewItem, otherTypeDesignerItemIndex, typeDesignerItemIndex); } var relationContener = new RelationContener(association); Designer.Children.Add(relationContener); relationContener.SetBinding(Canvas.LeftProperty, new Binding { Source = association, Path = new PropertyPath("CanvasLeft") }); relationContener.SetBinding(Canvas.TopProperty, new Binding { Source = association, Path = new PropertyPath("CanvasTop") }); AddRelationContenerByRelatedProperty(UIType.Properties[navigationProperty], relationContener); otherTypeDesigner.AddRelationContenerByRelatedProperty(otherTypeDesigner.UIType.Properties[otherNavigationProperty], relationContener); NotifyCollectionChangedEventHandler mappingCollectionChanged = delegate { VisualTreeHelperUtil.GetControlsDecendant <EditableTextBlock>(otherListViewItem).First().GetBindingExpression(EditableTextBlock.OpacityProperty).UpdateTarget(); VisualTreeHelperUtil.GetControlsDecendant <EditableTextBlock>(typeDesignerListViewItem).First().GetBindingExpression(EditableTextBlock.OpacityProperty).UpdateTarget(); }; csdlAssociation.PropertyEnd1.Mapping.CollectionChanged += mappingCollectionChanged; csdlAssociation.PropertyEnd2.Mapping.CollectionChanged += mappingCollectionChanged; }
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); if (VisualTreeHelperUtil.GetControlAscendant <EntityTypeDesigner>(e.OriginalSource) == null) { if (UITypeToAdd == null) { UnselectAllTypes(); _startSelectionPoint = e.GetPosition(this); _isSelecting = true; } else { AddType(UITypeToAdd, e.GetPosition(this)); UITypeToAdd = null; } } else { UITypeToAdd = null; } Container.Selection = null; }
protected TypeBaseDesigner(IUIType uiType) { InitializeComponent(); UIType = uiType; DataContext = UIType; InitContextMenuCommandBindings(); entityTypeExpander.PreviewMouseDown += (sender, e) => { if (e.LeftButton == MouseButtonState.Pressed && (MoreThanOneTypeSelected || !(VisualTreeHelperUtil.GetControlAscendant <ListView>(e.OriginalSource) == propertiesListView))) { SelectOrUnselect(); } else if (!IsSelected) { IsSelected = true; } }; if (!Init) { SizeChangedEventHandler sizeChangedHandler = null; sizeChangedHandler = delegate { DrawRelations(); SizeChanged -= sizeChangedHandler; }; SizeChanged += sizeChangedHandler; } SizeChanged += delegate { OnMove(); }; uiType.RelatedPropertyDeleted += uiRelatedProperty => { if (RelationsContenerByRelatedProperty.ContainsKey(uiRelatedProperty)) { Designer.Children.Remove(RelationsContenerByRelatedProperty[uiRelatedProperty]); RelationsContenerByRelatedProperty.Remove(uiRelatedProperty); } }; var uiEntityType = uiType as UIEntityType; if (uiEntityType != null) { uiEntityType.AbstractChanged += delegate { entityTypeExpander.GetBindingExpression(TypeBaseExpander.BorderBrushProperty).UpdateTarget(); } } ; }
private void InitContextMenuCommandBindings() { CommandBindings.AddRange( new[] { new CommandBinding(AddScalarPropertyCommand, delegate { var addScalarPropertyWindow = new AddScalarPropertyWindow { Owner = Application.Current.MainWindow }; switch (addScalarPropertyWindow.ShowDialog()) { case true: var uiScalarProperty = UIType.AddScalarProperty(addScalarPropertyWindow.PropertyName, addScalarPropertyWindow.PropertyType.Value); SizeChangedEventHandler actionToDoWhenNewItemAdded = null; actionToDoWhenNewItemAdded = delegate { propertiesListView.SelectedValue = uiScalarProperty; GetListViewItem(uiScalarProperty.BusinessInstance as ScalarProperty).Focus(); propertiesListView.SizeChanged -= actionToDoWhenNewItemAdded; }; propertiesListView.SizeChanged += actionToDoWhenNewItemAdded; break; } }, (sender, e) => e.CanExecute = ApplyNotVisibleIfMoreThanOneTypeSelected(ContextMenu.GetMenuItem(MENUITEM_ADD, MENUITEM_ADD_SCALAR_PROPERTY)) ), new CommandBinding(AddComplexPropertyCommand, delegate { var addComplexPropertyWindow = new AddComplexPropertyWindow(ComplexTypesAllowedForComplexProperty) { Owner = Application.Current.MainWindow, DataContext = UIType.View }; switch (addComplexPropertyWindow.ShowDialog()) { case true: var uiComplexType = addComplexPropertyWindow.PropertyType; var businessComplexType = uiComplexType.BusinessInstance; var uiComplexProperty = UIType.AddComplexProperty(addComplexPropertyWindow.PropertyName, businessComplexType); DrawComplexPropertyRelationAfterAddedComplexProperty(uiComplexType, uiComplexProperty); break; } }, (sender, e) => e.CanExecute = ApplyNotVisibleIfMoreThanOneTypeSelected(ContextMenu.GetMenuItem(MENUITEM_ADD, MENUITEM_ADD_COMPLEX_PROPERTY)) && ComplexTypesAllowedForComplexProperty.Any() ), new CommandBinding(RenameCommand, (sender, e) => Rename(e.OriginalSource), (sender, e) => { var renameMenuItem = ContextMenu.GetMenuItem(MENUITEM_RENAME); if (SetVisibility(renameMenuItem, () => ApplyNotVisibleIfMoreThanOneTypeSelected(renameMenuItem) && !_groupRightClick)) { e.CanExecute = (e.OriginalSource == this || propertiesListView.SelectedItems.Count == 1); } else { e.CanExecute = false; } } ), new CommandBinding(DeleteCommand, (sender, e) => Delete(e.OriginalSource), (sender, e) => { var deleteMenuItem = ContextMenu.GetMenuItem(MENUITEM_DELETE); if (SetVisibility(deleteMenuItem, () => AllowDelete(deleteMenuItem))) { e.CanExecute = true; } else { e.CanExecute = false; } } ), new CommandBinding(DesignerCanvas.RemoveFromDesignerCommand, delegate { Designer.RemoveFromDesigner(); }, (sender, e) => e.CanExecute = SetVisibility(ContextMenu.GetMenuItem(MENUITEM_REMOVE_FROM_DESIGNER), () => !PropertiesTreeViewFocused) ), new CommandBinding(CutCommand, delegate { CutSelectedProperties(); }, (sender, e) => e.CanExecute = ApplyCutCopyVisible(ContextMenu.GetMenuItem(MENUITEM_CUT)) ), new CommandBinding(CopyCommand, delegate { CopySelectedProperties(); }, (sender, e) => e.CanExecute = ApplyCutCopyVisible(ContextMenu.GetMenuItem(MENUITEM_COPY)) ), new CommandBinding(PasteCommand, delegate { PasteClipboardProperties(); }, (sender, e) => e.CanExecute = ApplyPasteVisible() && CanPaste() ), //new CommandBinding(PropertiesCommand, // delegate // { // var focusedObject = VisualTreeHelperUtil.GetFocusedElement(this); // if (VisualTreeHelperUtil.IsAscendant(propertiesListView, focusedObject)) // Designer.Container.ShowPropertiesTab((UIProperty)propertiesListView.SelectedItem); // else // Designer.Container.ShowPropertiesTab(UIType); // }, // (sender, e) => // { // var propertiesMenuItem = ContextMenu.GetMenuItem(MENUITEM_PROPERTIES); // if (SetVisibility(propertiesMenuItem, () => ApplyNotVisibleIfMoreThanOneTypeSelected(propertiesMenuItem) && !_groupRightClick && (!PropertiesTreeViewFocused || propertiesListView.SelectedItems.Count == 1))) // e.CanExecute = true; // else // e.CanExecute = false; // } //), new CommandBinding(MappingCommand, delegate { var focusedObject = VisualTreeHelperUtil.GetFocusedElement(this); Designer.Container.ShowMappingTab(UIType); }, (sender, e) => { var mappingMenuItem = ContextMenu.GetMenuItem(MENUITEM_MAPPING); if (SetVisibility(mappingMenuItem, () => ApplyNotVisibleIfMoreThanOneTypeSelected(mappingMenuItem) && !_groupRightClick && (!PropertiesTreeViewFocused || propertiesListView.SelectedItems.Count == 1))) { e.CanExecute = true; } else { e.CanExecute = false; } } ), new CommandBinding(ShowBaseTypeCommand, delegate { Designer.UITypeToAdd = Designer.EDMView.CSDL.EntityTypes[((EntityType)UIType.BusinessInstance).BaseType]; }, (sender, e) => { var showBaseMenuItem = ContextMenu.GetMenuItem(MENUITEM_SHOW_BASE_TYPE); var entityType = UIType.BusinessInstance as EntityType; if (SetVisibility(showBaseMenuItem, () => ApplyNotVisibleIfMoreThanOneTypeSelected(showBaseMenuItem) && !_groupRightClick && (!PropertiesTreeViewFocused || propertiesListView.SelectedItems.Count == 1) && entityType != null && entityType.BaseType != null)) { e.CanExecute = !Designer.DesignerView.ContainsEntityType(entityType.BaseType); } else { e.CanExecute = false; } } ), new CommandBinding(ShowRelatedTypeCommand, delegate { Designer.UITypeToAdd = ((UIRelatedProperty)propertiesListView.SelectedItem).RelatedType; }, (sender, e) => { var showRelatedTypeMenuItem = ContextMenu.GetMenuItem(MENUITEM_SHOW_RELATED_TYPE); if (SetVisibility(showRelatedTypeMenuItem, () => ApplyNotVisibleIfMoreThanOneTypeSelected(showRelatedTypeMenuItem) && propertiesListView.SelectedItems.Count == 1 && propertiesListView.SelectedItem is UIRelatedProperty && !_groupRightClick)) { e.CanExecute = !Designer.DesignerView.ContainsEntityType(((UIRelatedProperty)propertiesListView.SelectedItem).RelatedType); } else { e.CanExecute = false; } } ), new CommandBinding(ShowOtherTabsCommand, delegate { }, (sender, e) => { var showOtherTabsMenuItem = ContextMenu.GetMenuItem(MENUITEM_SHOW_OTHER_TABS); var designerViews = Designer.EDMView.DesignerViews.Except(new [] { Designer.DesignerView }).Where(dv => dv.TypeDesignersLocations.Any(tdl => tdl.UIType.BusinessInstance == UIType.BusinessInstance)); e.CanExecute = designerViews.Any(); if (e.CanExecute) { ShowDesignerCanvasPreviews(Designer.EDMView, UIType, showOtherTabsMenuItem, designerViews); } else { showOtherTabsMenuItem.Items.Clear(); } } ) //new CommandBinding(ShowOtherTabsItemCommand, (sender, e) => ((IEDMDesignerWindow)VisualTreeHelperUtil.GetControlAscendant<Window>(this)).CurrentDesignerView = (DesignerView)e.Parameter) } ); var uiEntityType = UIType as UIEntityType; if (uiEntityType == null) { MenuItem addNavigationPropertyMenuItem = ContextMenu.GetMenuItem(MENUITEM_ADD, MENUITEM_ADD_NAVIGATION_PROPERTY); if (addNavigationPropertyMenuItem != null) { addNavigationPropertyMenuItem.Visibility = Visibility.Collapsed; } } else { CommandBindings.Add(new CommandBinding(AddNavigationPropertyCommand, DesignerCanvas.AddAssociationExecuted(this, () => UIType.View, () => Designer.DesignerView, uiEntityType, (UIAssociation uiAssociation) => { if (uiAssociation.NavigationProperty1.ParentType == UIType) { propertiesListView.SelectedValue = uiAssociation.NavigationProperty1; GetListViewItem(uiAssociation.NavigationProperty1.BusinessInstance).Focus(); } } ), (sender, e) => e.CanExecute = ApplyNotVisibleIfMoreThanOneTypeSelected(ContextMenu.GetMenuItem(MENUITEM_ADD, MENUITEM_ADD_NAVIGATION_PROPERTY)) )); } ContextMenuOpening += (sender, e) => { if (MoreThanOneTypeSelected && (_groupRightClick || PropertiesTreeViewFocused)) { e.Handled = true; } ApplyNotVisibleIfMoreThanOneTypeSelected(ContextMenu.GetMenuItem(MENUITEM_ADD)); }; }