Example #1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="obj"></param>
        internal void DefaultShowEditor(DrawingObject obj) {
            m_EditingObject = obj;

            if (obj != null)
                m_LabelBox.Enabled = true;
            var node = obj as DrawingNode;
            if (node != null && node.Label != null)
                m_LabelBox.Text = node.Label.Text;
            else {
                var edge = obj as Edge;
                if (edge != null && edge.Label != null)
                    m_LabelBox.Text = edge.Label.Text;
            }
            Controls.Add(m_LabelBox);
            if (obj != null)
                m_LabelBox.Focus();
        }
Example #2
0
 /// <summary>
 /// 
 /// </summary>
 internal void DefaultCloseEditor() {
     m_LabelBox.Enabled = false;
     m_LabelBox.Text = "";
     m_EditingObject = null;
 }
        FrameworkElement CreateViewboxForDrawingObj(DrawingObject drawingObj) {
            if (drawingObj is Subgraph)
                return null; //todo: add Label support later
            var labeledObj = drawingObj as Drawing.ILabeledObject;
            if (labeledObj == null)
                return null;

            var drawingLabel = labeledObj.Label;
            if (drawingLabel == null)
                return null;

            Viewbox viewbox = null;

            if (_graphCanvas.Dispatcher.CheckAccess())
                viewbox = CreateViewbox(CreateTextBlock(drawingLabel));
            else
                _graphCanvas.Dispatcher.Invoke(() => viewbox = CreateViewbox(CreateTextBlock(drawingLabel)));

            return viewbox;
        }
 void AssignLabelWidthHeight(Microsoft.Msagl.Core.Layout.ILabeledObject labeledGeomObj,
                             DrawingObject drawingObj)
 {
     if (graphObjectsToFrameworkElements.ContainsKey(drawingObj)) {
         FrameworkElement fe = graphObjectsToFrameworkElements[drawingObj];
         labeledGeomObj.Label.Width = fe.Width;
         labeledGeomObj.Label.Height = fe.Height;
     }
 }
        FrameworkElement CreateTextBlockForDrawingObj(DrawingObject drawingObj) {
            Func<DrawingObject, FrameworkElement> registeredCreator;
            if (registeredCreators.TryGetValue(drawingObj, out registeredCreator))
                return registeredCreator(drawingObj);
            if (drawingObj is Subgraph)
                return null; //todo: add Label support later
            var labeledObj = drawingObj as ILabeledObject;
            if (labeledObj == null)
                return null;

            var drawingLabel = labeledObj.Label;
            if (drawingLabel == null)
                return null;

            TextBlock textBlock = null;
            if (_graphCanvas.Dispatcher.CheckAccess())
                textBlock = CreateTextBlock(drawingLabel);
            else
                _graphCanvas.Dispatcher.Invoke(() => textBlock = CreateTextBlock(drawingLabel));

            return textBlock;
        }
 FrameworkElement CreateDefaultFrameworkElementForDrawingObject(DrawingObject drawingObject) {
     lock (this) {
         var textBlock = CreateTextBlockForDrawingObj(drawingObject);
         if (textBlock != null)
             drawingObjectsToFrameworkElements[drawingObject] = textBlock;
         return textBlock;
     }
 }
 public Func<DrawingObject, FrameworkElement> GetLabelCreator(DrawingObject drawingObject) {
     return registeredCreators[drawingObject];
 }
 public void UnregisterLabelCreator(DrawingObject drawingObject) {
     registeredCreators.Remove(drawingObject);
 }
        //        void CreateFrameworkElementForEdgeLabel(DrawingEdge edge) {
        //            var textBlock = CreateTextBlockForDrawingObj(edge);
        //            if (textBlock == null) return;
        //            drawingGraphObjectsToTextBoxes[edge] = textBlock;            
        //            textBlock.Tag = new VLabel(edge, textBlock);
        //        }

        public void RegisterLabelCreator(DrawingObject drawingObject, Func<DrawingObject, FrameworkElement> func) {
            registeredCreators[drawingObject] = func;
        }
 void AssignLabelWidthHeight(Core.Layout.ILabeledObject labeledGeomObj,
                             DrawingObject drawingObj) {
     if (drawingObjectsToFrameworkElements.ContainsKey(drawingObj)) {
         FrameworkElement fe = drawingObjectsToFrameworkElements[drawingObj];
         var size = fe.MeasureDesiredSize();
         labeledGeomObj.Label.Width = size.Width;
         labeledGeomObj.Label.Height = size.Height;
     }
 }
        private void ReadLabel(DrawingObject parent) {
            CheckToken(Tokens.Label);
            bool hasLabel = !this.xmlReader.IsEmptyElement;
            if (hasLabel) {
                XmlRead();
                Label label = new Label {
                    Text = ReadStringElement(Tokens.Text),
                    FontName = ReadStringElement(Tokens.FontName),
                    FontColor = ReadColorElement(Tokens.FontColor),
                    FontStyle = TokenIs(Tokens.FontStyle) ? (FontStyle)ReadIntElement(Tokens.FontStyle) : FontStyle.Regular,
                    FontSize = ReadDoubleElement(Tokens.FontSize),
                    Width = ReadDoubleElement(Tokens.Width),
                    Height = ReadDoubleElement(Tokens.Height),
                    Owner = parent
                };
                ((ILabeledObject) parent).Label = label;

                ReadEndElement();
            }
            else {
                var node = parent as Node;
                if (node != null){//we still need a label!
                    Label label = new Label {
                        Text = node.Id,                       
                        Owner = parent
                    };
                    ((ILabeledObject) parent).Label = label;
                }
                xmlReader.Skip();
            }
        }