/// <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(); }
/// <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(); } }