private bool AddEnableLayerCommand( IEntityDesignerLayer layer, bool isAlreadyEnabled, out EntityDesignerCommand entityDesignerCommand) { var menuItemText = GetEnableLayerCommandText(layer.Name, isAlreadyEnabled); entityDesignerCommand = new EntityDesignerCommand(menuItemText, (xel, dv, ss, pc, iss) => { ToggleLayerEnabled(layer, xel); }); return(AddCommand(entityDesignerCommand)); }
private static IEnumerable <EntityDesignerCommand> GetCommands(IEntityDesignerLayer layer = null) { var commandsToReturn = new List <EntityDesignerCommand>(); var commandsForLayer = EscherExtensionPointManager.LoadCommandExtensions(layer == null, layer != null); foreach (var lazyFactory in commandsForLayer) { var factory = lazyFactory.Value; if (factory != null) { commandsToReturn.AddRange(factory.Commands); } } return(commandsToReturn); }
private void PersistLayerEnabled(IEntityDesignerLayer layer, bool enable) { var editingContextMgr = PackageManager.Package.DocumentFrameMgr.EditingContextManager; Debug.Assert(editingContextMgr.DoesContextExist(_artifact.Uri), "There should be an existing editing context"); if (editingContextMgr.DoesContextExist(_artifact.Uri)) { var txname = string.Format( CultureInfo.CurrentCulture, enable ? Resources.Tx_LayerEnable : Resources.Tx_LayerDisable, layer.Name); var cpc = new CommandProcessorContext( editingContextMgr.GetNewOrExistingContext(_artifact.Uri), EfiTransactionOriginator.EntityDesignerOriginatorId, txname); var cmd = ModelHelper.CreateSetDesignerPropertyValueCommandFromArtifact( cpc.Artifact, OptionsDesignerInfo.ElementName , string.Format(CultureInfo.CurrentCulture, _propertyNameFormat, layer.Name) , enable.ToString()); if (cmd != null) { CommandProcessor.InvokeSingleCommand(cpc, cmd); } } }
private void UnloadLayer(IEntityDesignerLayer layer) { if (_artifact != null && _artifact.ConceptualModel() != null) { layer.OnBeforeLayerUnloaded(_artifact.ConceptualModel().XObject); } foreach (var command in GetCommands(layer)) { RemoveCommand(command); } layer.ChangeEntityDesignerSelection -= layer_EntityDesignerSelectionChanged; if (_selectionContainer != null) { _selectionContainer.Dispose(); _selectionContainer = null; } }
private void LoadLayer(IEntityDesignerLayer layer, XObject selectedXObject) { if (_artifact != null && _artifact.ConceptualModel() != null) { if (selectedXObject != null) { layer.OnAfterLayerLoaded(selectedXObject); } else { layer.OnAfterLayerLoaded(_artifact.ConceptualModel().XObject); } } if (layer.ServiceProvider != null && PackageManager.Package.DocumentFrameMgr != null && PackageManager.Package.DocumentFrameMgr.EditingContextManager != null) { if (PackageManager.Package.DocumentFrameMgr.EditingContextManager.DoesContextExist(_artifact.Uri)) { var editingContext = PackageManager.Package.DocumentFrameMgr.EditingContextManager.GetNewOrExistingContext( _artifact.Uri); Debug.Assert(editingContext != null, "EditingContext must not be null if we found that a context exists"); if (editingContext != null) { // TODO there should be one independent selection container for each layer. _selectionContainer = new EntityDesignSelectionContainer <LayerSelection>(layer.ServiceProvider, editingContext); } } } layer.ChangeEntityDesignerSelection += layer_EntityDesignerSelectionChanged; foreach (var command in GetCommands(layer)) { AddCommand(command); } }
internal void ToggleLayerEnabled(IEntityDesignerLayer layer, XObject selectedXObject) { LayerState layerState; if (_layer2state.TryGetValue(layer, out layerState)) { layerState.IsEnabled = !layerState.IsEnabled; layerState.EnableCommand.Name = GetEnableLayerCommandText(layer.Name, layerState.IsEnabled); } Debug.Assert(layerState != null, "LayerState is null for layer '" + layer.Name + "'"); if (layerState != null && layerState.IsEnabled) { PersistLayerEnabled(layer, true); LoadLayer(layer, selectedXObject); } else { UnloadLayer(layer); PersistLayerEnabled(layer, false); } }