public void InitializeEx( MgaProject project, MgaMetaPart meta, MgaFCO obj, IMgaCommonDecoratorEvents eventSink, ulong parentWnd) { try { Initialize(project, meta, obj); if (name != null) { IntPtr parentHwnd; unchecked { parentHwnd = (IntPtr)(int)parentWnd; } using (Graphics g = Graphics.FromHwnd(parentHwnd)) { Font font = new Font("Arial", 12f, GraphicsUnit.Pixel); LabelSize = g.MeasureString(name, font); } } } catch (Exception ex) { // sometimes the mgafco is inaccessible Trace.TraceWarning(ex.ToString().Replace('\n', '\t')); } }
/// <summary> /// Get the meta object /// </summary> /// <param name="metaPart">MetaPart</param> /// <param name="metaFco">returns the MetaFCO</param> /// <returns>true if succeeded</returns> bool GetMetaFCO(MgaMetaPart metaPart, out MgaMetaFCO metaFco) { metaFco = null; if (metaPart == null) { return(false); } metaFco = metaPart.Role.Kind; return(metaFco != null); }
/// <summary> /// Get the meta object /// </summary> /// <param name="metaPart">MetaPart</param> /// <param name="metaFco">returns the MetaFCO</param> /// <returns>true if succeeded</returns> bool GetMetaFCO(MgaMetaPart metaPart, out MgaMetaFCO metaFco) { metaFco = null; if (metaPart == null) return false; metaFco = metaPart.Role.Kind; return metaFco != null; }
public void InitializeEx( MgaProject project, MgaMetaPart meta, MgaFCO obj, IMgaCommonDecoratorEvents eventSink, ulong parentWnd) { try { Initialize(project, meta, obj); if (name != null) { IntPtr parentHwnd; unchecked { parentHwnd = (IntPtr)(int)parentWnd; } using (Graphics g = Graphics.FromHwnd(parentHwnd)) { LabelSize = g.MeasureString(name, SystemFonts.DefaultFont); } } } catch (Exception ex) { // sometimes the mgafco is inaccessible Trace.TraceWarning(ex.ToString().Replace('\n','\t')); } }
public void Initialize( MgaProject project, MgaMetaPart meta, MgaFCO obj) { // only store temporarily, they might be unavailable later myobj = obj; mymetaobj = null; LastMetaKind = myobj.Meta.Name; // obtain the metaobject GetMetaFCO(meta, out mymetaobj); if (obj != null) { // concrete object name = myobj.Name; if (myobj.Meta.Name == "Task") { // task // get progid check whether it is already in the cache TaskProgId = myobj.StrAttrByName["COMName"]; if (interpreters.Keys.Contains(TaskProgId) == false) { // create an instance ComComponent task = new ComComponent(TaskProgId); interpreters.Add(TaskProgId, task); } // save parameters Parameters = myobj.StrAttrByName["Parameters"]; h = IconHeight; w = IconWidth; } else if (myobj.Meta.Name == "WorkflowRef") { // Workflow reference get the tasks // TODO: get those in the right order workflow.Clear(); MgaReference wfRef = myobj as MgaReference; Queue<string> items = new Queue<string>(); List<MgaAtom> tasks = new List<MgaAtom>(); List<MgaFCO> processed = new List<MgaFCO>(); if (wfRef.Referred != null) { tasks.AddRange(wfRef.Referred.ChildObjects.OfType<MgaAtom>()); MgaAtom StartTask = null; StartTask = tasks. Where(x => x.ExSrcFcos().Count() == 0). FirstOrDefault(); if (StartTask != null) { this.EnqueueTask(StartTask as MgaFCO); processed.Add(StartTask as MgaFCO); MgaFCO NextTask = StartTask.ExDstFcos().FirstOrDefault(); // avoid loops while (NextTask != null && processed.Contains(NextTask) == false) { processed.Add(NextTask as MgaFCO); this.EnqueueTask(NextTask); NextTask = NextTask.ExDstFcos().FirstOrDefault(); } } } h = IconHeight; if (workflow.Count > 0) { w = IconWidth * workflow.Count + TaskPadding * (workflow.Count - 1); } else { w = IconWidth; } } } else { // not a concreter object (maybe in part browser?) name = mymetaobj.DisplayedName; } // to handle color and labelColor settings in GME if (!GetColorPreference(out color, "color")) { color = Color.Black; } if (!GetColorPreference(out labelColor, "nameColor")) { labelColor = Color.Black; } // null them for sure // myobj = null; mymetaobj = null; }
public void Initialize( MgaProject project, MgaMetaPart meta, MgaFCO obj) { // only store temporarily, they might be unavailable later myobj = obj; mymetaobj = null; FCOKind = myobj?.Meta?.Name; MetaKind = meta.Name; // obtain the metaobject GetMetaFCO(meta, out mymetaobj); if (obj != null) { // concrete object name = myobj.Name; if (myobj.Meta.Name == "Task") { // task // get progid check whether it is already in the cache TaskProgId = myobj.StrAttrByName["COMName"]; if (interpreters.Keys.Contains(TaskProgId) == false) { // create an instance ComComponent task = new ComComponent(TaskProgId); interpreters.Add(TaskProgId, task); } // save parameters Parameters = myobj.StrAttrByName["Parameters"]; h = IconHeight; w = IconWidth; } else if (myobj.Meta.Name == "WorkflowRef") { // Workflow reference get the tasks // TODO: get those in the right order workflow.Clear(); MgaReference wfRef = myobj as MgaReference; Queue <string> items = new Queue <string>(); List <MgaAtom> tasks = new List <MgaAtom>(); List <MgaFCO> processed = new List <MgaFCO>(); if (wfRef.Referred != null) { HashSet <string> taskKinds = new HashSet <string>() { "ExecutionTask", "Task" }; tasks.AddRange(wfRef.Referred.ChildObjects.OfType <MgaAtom>().Where(atom => taskKinds.Contains(atom.Meta.Name))); MgaAtom StartTask = null; StartTask = tasks. Where(x => x.ExSrcFcos().Count() == 0). FirstOrDefault(); if (StartTask != null) { this.EnqueueTask(StartTask as MgaFCO); processed.Add(StartTask as MgaFCO); MgaFCO NextTask = StartTask.ExDstFcos().FirstOrDefault(); // avoid loops while (NextTask != null && processed.Contains(NextTask) == false) { processed.Add(NextTask as MgaFCO); this.EnqueueTask(NextTask); NextTask = NextTask.ExDstFcos().FirstOrDefault(); } } } h = IconHeight; if (workflow.Count > 0) { w = IconWidth * workflow.Count + TaskPadding * (workflow.Count - 1); } else { w = IconWidth; } } else if (myobj.Meta.Name == "MetricConstraint") { h = 40; w = 40; MetricConstraint_TargetType = myobj.GetStrAttrByNameDisp("TargetType"); } } else { // not a concreter object (maybe in part browser?) name = mymetaobj.DisplayedName; h = IconHeight; w = IconWidth; if (MetaKind == "MetricConstraint") { h = 40; w = 40; } } // to handle color and labelColor settings in GME if (!GetColorPreference(out color, "color")) { color = Color.Black; } if (!GetColorPreference(out labelColor, "nameColor")) { labelColor = Color.Black; } // null them for sure // myobj = null; mymetaobj = null; }