Example #1
0
        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));
        }
Example #2
0
        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);
        }
Example #3
0
        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);
                }
            }
        }
Example #4
0
        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;
            }
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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);
            }
        }