/// <summary> /// Executes in two distinct scenarios. /// /// 1. If disposing is true, the method has been called directly /// or indirectly by a user's code via the Dispose method. /// Both managed and unmanaged resources can be disposed. /// /// 2. If disposing is false, the method has been called by the /// runtime from inside the finalizer and you should not reference (access) /// other managed objects, as they already have been garbage collected. /// Only unmanaged resources can be disposed. /// </summary> /// <param name="disposing"></param> /// <remarks> /// If any exceptions are thrown, that is fine. /// If the method is being done in a finalizer, it will be ignored. /// If it is thrown by client code calling Dispose, /// it needs to be handled by fixing the bug. /// /// If subclasses override this method, they should call the base implementation. /// </remarks> protected override void Dispose(bool disposing) { //Debug.WriteLineIf(!disposing, "****************** " + GetType().Name + " 'disposing' is false. ******************"); // Must not be run more than once. if (IsDisposed) { return; } base.Dispose(disposing); if (disposing) { // Dispose managed resources here. if (m_vc != null) { m_vc.Dispose(); } } // Dispose unmanaged resources here, whether disposing is true or false. m_vc = null; m_text = null; m_slice = null; }
public SummaryCommandControl(SummarySlice slice) { // This call is required by the Windows.Forms Form Designer. InitializeComponent(); m_slice = slice; m_hotLinkFont = new Font(MiscUtils.StandardSansSerif, (float)10.0, FontStyle.Underline); m_timer = new System.Windows.Forms.Timer(); m_timer.Interval = 400; // ms m_timer.Tick += new EventHandler(m_timer_Tick); }
public SummaryCommandControl(SummarySlice slice) { // This call is required by the Windows.Forms Form Designer. InitializeComponent(); m_slice = slice; m_hotLinkFont = new Font(MiscUtils.StandardSansSerif, (float)10.0, FontStyle.Underline); m_timer = new System.Windows.Forms.Timer(); m_timer.Interval = 400; // ms m_timer.Tick += new EventHandler(m_timer_Tick); }
/// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose(bool disposing) { System.Diagnostics.Debug.WriteLineIf(!disposing, "****** Missing Dispose() call for " + GetType().Name + ". ****** "); // Must not be run more than once. if (IsDisposed) { return; } if (disposing) { if (m_timer != null) { m_timer.Stop(); m_timer.Tick -= new EventHandler(m_timer_Tick); m_timer.Dispose(); } if (components != null) { components.Dispose(); } if (m_hotLinkFont != null) { m_hotLinkFont.Dispose(); } } m_hotLinkFont = null; m_timer = null; m_menu = null; // Client is responsible for this. m_slice = null; // Client is responsible for this. m_buttonDrawnEnabled = null; m_buttonMenuItems.Clear(); m_buttonMenuItems = null; base.Dispose(disposing); }
public static Slice Create(FdoCache cache, string editor, int flid, XmlNode node, ICmObject obj, StringTable stringTbl, IPersistenceProvider persistenceProvider, Mediator mediator, XmlNode caller, ObjSeqHashMap reuseMap) { Slice slice; switch(editor) { case "multistring": // first, these are the most common slices. { if (flid == 0) throw new ApplicationException("field attribute required for multistring " + node.OuterXml); string wsSpec = XmlUtils.GetOptionalAttributeValue(node, "ws"); int wsMagic = WritingSystemServices.GetMagicWsIdFromName(wsSpec); if (wsMagic == 0) throw new ApplicationException( "ws must be 'all vernacular', 'all analysis', 'analysis vernacular', or 'vernacular analysis'" + " it said '" + wsSpec + "'."); bool forceIncludeEnglish = XmlUtils.GetOptionalBooleanAttributeValue(node, "forceIncludeEnglish", false); bool spellCheck = XmlUtils.GetOptionalBooleanAttributeValue(node, "spell", true); // Either the part or the caller can specify that it isn't editable. // (The part may 'know' this, e.g. because it's a virtual attr not capable of editing; // more commonly the caller knows there isn't enough context for safe editing. bool editable = XmlUtils.GetOptionalBooleanAttributeValue(caller, "editable", true) && XmlUtils.GetOptionalBooleanAttributeValue(node, "editable", true); string optionalWsSpec = XmlUtils.GetOptionalAttributeValue(node, "optionalWs"); int wsMagicOptional = WritingSystemServices.GetMagicWsIdFromName(optionalWsSpec); MultiStringSlice msSlice = reuseMap.GetSliceToReuse("MultiStringSlice") as MultiStringSlice; if (msSlice == null) slice = new MultiStringSlice(obj, flid, wsMagic, wsMagicOptional, forceIncludeEnglish, editable, spellCheck); else { slice = msSlice; msSlice.Reuse(obj, flid, wsMagic, wsMagicOptional, forceIncludeEnglish, editable, spellCheck); } break; } case "defaultvectorreference": // second most common. { var rvSlice = reuseMap.GetSliceToReuse("ReferenceVectorSlice") as ReferenceVectorSlice; if (rvSlice == null) slice = new ReferenceVectorSlice(cache, obj, flid); else { slice = rvSlice; rvSlice.Reuse(obj, flid); } break; } case "possvectorreference": { var prvSlice = reuseMap.GetSliceToReuse("PossibilityReferenceVectorSlice") as PossibilityReferenceVectorSlice; if (prvSlice == null) slice = new PossibilityReferenceVectorSlice(cache, obj, flid); else { slice = prvSlice; prvSlice.Reuse(obj, flid); } break; } case "semdomvectorreference": { var prvSlice = reuseMap.GetSliceToReuse("SemanticDomainReferenceVectorSlice") as SemanticDomainReferenceVectorSlice; if (prvSlice == null) slice = new SemanticDomainReferenceVectorSlice(cache, obj, flid); else { slice = prvSlice; prvSlice.Reuse(obj, flid); } break; } case "string": { if (flid == 0) throw new ApplicationException("field attribute required for basic properties " + node.OuterXml); int ws = GetWs(mediator, cache, node); if (ws != 0) slice = new StringSlice(obj, flid, ws); else slice = new StringSlice(obj, flid); var fShowWsLabel = XmlUtils.GetOptionalBooleanAttributeValue(node, "labelws", false); if (fShowWsLabel) (slice as StringSlice).ShowWsLabel = true; int wsEmpty = GetWs(mediator, cache, node, "wsempty"); if (wsEmpty != 0) (slice as StringSlice).DefaultWs = wsEmpty; break; } case "jtview": { string layout = XmlUtils.GetOptionalAttributeValue(caller, "param"); if (layout == null) layout = XmlUtils.GetManditoryAttributeValue(node, "layout"); // Editable if BOTH the caller (part ref) AND the node itself (the slice) say so...or at least if neither says not. bool editable = XmlUtils.GetOptionalBooleanAttributeValue(caller, "editable", true) && XmlUtils.GetOptionalBooleanAttributeValue(node, "editable", true); slice = new ViewSlice(new XmlView(obj.Hvo, layout, stringTbl, editable)); break; } case "summary": { slice = new SummarySlice(); break; } case "enumcombobox": { slice = new EnumComboSlice(cache, obj, flid, stringTbl, node["deParams"]); break; } case "referencecombobox": { slice = new ReferenceComboBoxSlice(cache, obj, flid, persistenceProvider); break; } case "typeaheadrefatomic": { slice = new AtomicRefTypeAheadSlice(obj, flid); break; } case "msareferencecombobox": { slice = new MSAReferenceComboBoxSlice(cache, obj, flid, persistenceProvider); break; } case "lit": // was "message" { string message = XmlUtils.GetManditoryAttributeValue(node, "message"); if (stringTbl != null) { string sTranslate = XmlUtils.GetOptionalAttributeValue(node, "translate", ""); if (sTranslate.Trim().ToLower() != "do not translate") message = stringTbl.LocalizeLiteralValue(message); } slice = new MessageSlice(message); break; } case "picture": { slice = new PictureSlice((ICmPicture)obj); break; } case "image": { try { slice = new ImageSlice(FwDirectoryFinder.CodeDirectory, XmlUtils.GetManditoryAttributeValue(node, "param1")); } catch (Exception error) { slice = new MessageSlice(String.Format(DetailControlsStrings.ksImageSliceFailed, error.Message)); } break; } case "checkbox": { slice = new CheckboxSlice(cache, obj, flid, node); break; } case "checkboxwithrefresh": { slice = new CheckboxRefreshSlice(cache, obj, flid, node); break; } case "time": { slice = new DateSlice(cache, obj, flid); break; } case "integer": // produced in the auto-generated parts from the conceptual model case "int": // was "integer" { slice = new IntegerSlice(cache, obj, flid); break; } case "gendate": { slice = new GenDateSlice(cache, obj, flid); break; } case "morphtypeatomicreference": { slice = new MorphTypeAtomicReferenceSlice(cache, obj, flid); break; } case "atomicreferencepos": { slice = new AtomicReferencePOSSlice(cache, obj, flid, persistenceProvider, mediator); break; } case "possatomicreference": { slice = new PossibilityAtomicReferenceSlice(cache, obj, flid); break; } case "atomicreferenceposdisabled": { slice = new AutomicReferencePOSDisabledSlice(cache, obj, flid, persistenceProvider, mediator); break; } case "defaultatomicreference": { slice = new AtomicReferenceSlice(cache, obj, flid); break; } case "defaultatomicreferencedisabled": { slice = new AtomicReferenceDisabledSlice(cache, obj, flid); break; } case "derivmsareference": { slice = new DerivMSAReferenceSlice(cache, obj, flid); break; } case "inflmsareference": { slice = new InflMSAReferenceSlice(cache, obj, flid); break; } case "phoneenvreference": { slice = new PhoneEnvReferenceSlice(cache, obj, flid); break; } case "sttext": { slice = new StTextSlice(obj, flid, GetWs(mediator, cache, node)); break; } case "custom": { slice = (Slice)DynamicLoader.CreateObject(node); break; } case "customwithparams": { slice = (Slice)DynamicLoader.CreateObject(node, new object[]{cache, editor, flid, node, obj, stringTbl, persistenceProvider, GetWs(mediator, cache, node)}); break; } case "ghostvector": { slice = new GhostReferenceVectorSlice(cache, obj, node); break; } case "command": { slice = new CommandSlice(node["deParams"]); break; } case null: //grouping nodes do not necessarily have any editor { slice = new Slice(); break; } case "message": // case "integer": // added back in to behave as "int" above throw new Exception("use of obsolete editor type (message->lit, integer->int)"); case "autocustom": slice = MakeAutoCustomSlice(cache, obj, caller); if (slice == null) return null; break; case "defaultvectorreferencedisabled": // second most common. { ReferenceVectorDisabledSlice rvSlice = reuseMap.GetSliceToReuse("ReferenceVectorDisabledSlice") as ReferenceVectorDisabledSlice; if (rvSlice == null) slice = new ReferenceVectorDisabledSlice(cache, obj, flid); else { slice = rvSlice; rvSlice.Reuse(obj, flid); } break; } default: { //Since the editor has not been implemented yet, //is there a bitmap file that we can show for this editor? //Such bitmaps belong in the distFiles xde directory string fwCodeDir = FwDirectoryFinder.CodeDirectory; string editorBitmapRelativePath = "xde/" + editor + ".bmp"; if(File.Exists(Path.Combine(fwCodeDir, editorBitmapRelativePath))) slice = new ImageSlice(fwCodeDir, editorBitmapRelativePath); else slice = new MessageSlice(String.Format(DetailControlsStrings.ksBadEditorType, editor)); break; } } slice.AccessibleName = editor; return slice; }
/// <summary></summary> public static Slice Create(FdoCache cache, string editor, int flid, XmlNode node, ICmObject obj, StringTable stringTbl, IPersistenceProvider persistenceProvider, Mediator mediator, XmlNode caller, ObjSeqHashMap reuseMap) { Slice slice; switch (editor) { case "multistring": // first, these are the most common slices. { if (flid == 0) { throw new ApplicationException("field attribute required for multistring " + node.OuterXml); } string wsSpec = XmlUtils.GetOptionalAttributeValue(node, "ws"); int wsMagic = WritingSystemServices.GetMagicWsIdFromName(wsSpec); if (wsMagic == 0) { throw new ApplicationException( "ws must be 'all vernacular', 'all analysis', 'analysis vernacular', or 'vernacular analysis'" + " it said '" + wsSpec + "'."); } bool forceIncludeEnglish = XmlUtils.GetOptionalBooleanAttributeValue(node, "forceIncludeEnglish", false); bool spellCheck = XmlUtils.GetOptionalBooleanAttributeValue(node, "spell", true); // Either the part or the caller can specify that it isn't editable. // (The part may 'know' this, e.g. because it's a virtual attr not capable of editing; // more commonly the caller knows there isn't enough context for safe editing. bool editable = XmlUtils.GetOptionalBooleanAttributeValue(caller, "editable", true) && XmlUtils.GetOptionalBooleanAttributeValue(node, "editable", true); string optionalWsSpec = XmlUtils.GetOptionalAttributeValue(node, "optionalWs"); int wsMagicOptional = WritingSystemServices.GetMagicWsIdFromName(optionalWsSpec); MultiStringSlice msSlice = reuseMap.GetSliceToReuse("MultiStringSlice") as MultiStringSlice; if (msSlice == null) { slice = new MultiStringSlice(obj, flid, wsMagic, wsMagicOptional, forceIncludeEnglish, editable, spellCheck); } else { slice = msSlice; msSlice.Reuse(obj, flid, wsMagic, wsMagicOptional, forceIncludeEnglish, editable, spellCheck); } break; } case "defaultvectorreference": // second most common. { var rvSlice = reuseMap.GetSliceToReuse("ReferenceVectorSlice") as ReferenceVectorSlice; if (rvSlice == null) { slice = new ReferenceVectorSlice(cache, obj, flid); } else { slice = rvSlice; rvSlice.Reuse(obj, flid); } break; } case "possvectorreference": { var prvSlice = reuseMap.GetSliceToReuse("PossibilityReferenceVectorSlice") as PossibilityReferenceVectorSlice; if (prvSlice == null) { slice = new PossibilityReferenceVectorSlice(cache, obj, flid); } else { slice = prvSlice; prvSlice.Reuse(obj, flid); } break; } case "semdomvectorreference": { var prvSlice = reuseMap.GetSliceToReuse("SemanticDomainReferenceVectorSlice") as SemanticDomainReferenceVectorSlice; if (prvSlice == null) { slice = new SemanticDomainReferenceVectorSlice(cache, obj, flid); } else { slice = prvSlice; prvSlice.Reuse(obj, flid); } break; } case "string": { if (flid == 0) { throw new ApplicationException("field attribute required for basic properties " + node.OuterXml); } int ws = GetWs(mediator, cache, node); if (ws != 0) { slice = new StringSlice(obj, flid, ws); } else { slice = new StringSlice(obj, flid); } var fShowWsLabel = XmlUtils.GetOptionalBooleanAttributeValue(node, "labelws", false); if (fShowWsLabel) { (slice as StringSlice).ShowWsLabel = true; } int wsEmpty = GetWs(mediator, cache, node, "wsempty"); if (wsEmpty != 0) { (slice as StringSlice).DefaultWs = wsEmpty; } break; } case "jtview": { string layout = XmlUtils.GetOptionalAttributeValue(caller, "param"); if (layout == null) { layout = XmlUtils.GetManditoryAttributeValue(node, "layout"); } // Editable if BOTH the caller (part ref) AND the node itself (the slice) say so...or at least if neither says not. bool editable = XmlUtils.GetOptionalBooleanAttributeValue(caller, "editable", true) && XmlUtils.GetOptionalBooleanAttributeValue(node, "editable", true); slice = new ViewSlice(new XmlView(obj.Hvo, layout, stringTbl, editable)); break; } case "summary": { slice = new SummarySlice(); break; } case "enumcombobox": { slice = new EnumComboSlice(cache, obj, flid, stringTbl, node["deParams"]); break; } case "referencecombobox": { slice = new ReferenceComboBoxSlice(cache, obj, flid, persistenceProvider); break; } case "typeaheadrefatomic": { slice = new AtomicRefTypeAheadSlice(obj, flid); break; } case "msareferencecombobox": { slice = new MSAReferenceComboBoxSlice(cache, obj, flid, persistenceProvider); break; } case "lit": // was "message" { string message = XmlUtils.GetManditoryAttributeValue(node, "message"); if (stringTbl != null) { string sTranslate = XmlUtils.GetOptionalAttributeValue(node, "translate", ""); if (sTranslate.Trim().ToLower() != "do not translate") { message = stringTbl.LocalizeLiteralValue(message); } } slice = new MessageSlice(message); break; } case "picture": { slice = new PictureSlice((ICmPicture)obj); break; } case "image": { try { slice = new ImageSlice(DirectoryFinder.FWCodeDirectory, XmlUtils.GetManditoryAttributeValue(node, "param1")); } catch (Exception error) { slice = new MessageSlice(String.Format(DetailControlsStrings.ksImageSliceFailed, error.Message)); } break; } case "checkbox": { slice = new CheckboxSlice(cache, obj, flid, node); break; } case "checkboxwithrefresh": { slice = new CheckboxRefreshSlice(cache, obj, flid, node); break; } case "time": { slice = new DateSlice(cache, obj, flid); break; } case "integer": // produced in the auto-generated parts from the conceptual model case "int": // was "integer" { slice = new IntegerSlice(cache, obj, flid); break; } case "gendate": { slice = new GenDateSlice(cache, obj, flid); break; } case "morphtypeatomicreference": { slice = new MorphTypeAtomicReferenceSlice(cache, obj, flid); break; } case "atomicreferencepos": { slice = new AtomicReferencePOSSlice(cache, obj, flid, persistenceProvider, mediator); break; } case "possatomicreference": { slice = new PossibilityAtomicReferenceSlice(cache, obj, flid); break; } case "atomicreferenceposdisabled": { slice = new AutomicReferencePOSDisabledSlice(cache, obj, flid, persistenceProvider, mediator); break; } case "defaultatomicreference": { slice = new AtomicReferenceSlice(cache, obj, flid); break; } case "defaultatomicreferencedisabled": { slice = new AtomicReferenceDisabledSlice(cache, obj, flid); break; } case "derivmsareference": { slice = new DerivMSAReferenceSlice(cache, obj, flid); break; } case "inflmsareference": { slice = new InflMSAReferenceSlice(cache, obj, flid); break; } case "phoneenvreference": { slice = new PhoneEnvReferenceSlice(cache, obj, flid); break; } case "sttext": { slice = new StTextSlice(obj, flid, GetWs(mediator, cache, node)); break; } case "custom": { slice = (Slice)DynamicLoader.CreateObject(node); break; } case "customwithparams": { slice = (Slice)DynamicLoader.CreateObject(node, new object[] { cache, editor, flid, node, obj, stringTbl, persistenceProvider, GetWs(mediator, cache, node) }); break; } case "ghostvector": { slice = new GhostReferenceVectorSlice(cache, obj, node); break; } case "command": { slice = new CommandSlice(node["deParams"]); break; } case null: //grouping nodes do not necessarily have any editor { slice = new Slice(); break; } case "message": // case "integer": // added back in to behave as "int" above throw new Exception("use of obsolete editor type (message->lit, integer->int)"); case "autocustom": slice = MakeAutoCustomSlice(cache, obj, caller); if (slice == null) { return(null); } break; case "defaultvectorreferencedisabled": // second most common. { ReferenceVectorDisabledSlice rvSlice = reuseMap.GetSliceToReuse("ReferenceVectorDisabledSlice") as ReferenceVectorDisabledSlice; if (rvSlice == null) { slice = new ReferenceVectorDisabledSlice(cache, obj, flid); } else { slice = rvSlice; rvSlice.Reuse(obj, flid); } break; } default: { //Since the editor has not been implemented yet, //is there a bitmap file that we can show for this editor? //Such bitmaps belong in the distFiles xde directory string fwCodeDir = DirectoryFinder.FWCodeDirectory; string editorBitmapRelativePath = "xde/" + editor + ".bmp"; if (File.Exists(Path.Combine(fwCodeDir, editorBitmapRelativePath))) { slice = new ImageSlice(fwCodeDir, editorBitmapRelativePath); } else { slice = new MessageSlice(String.Format(DetailControlsStrings.ksBadEditorType, editor)); } break; } } slice.AccessibleName = editor; return(slice); }
/// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { System.Diagnostics.Debug.WriteLineIf(!disposing, "****** Missing Dispose() call for " + GetType().Name + ". ****** "); // Must not be run more than once. if (IsDisposed) return; if( disposing ) { if (m_timer != null) { m_timer.Stop(); m_timer.Tick -= new EventHandler(m_timer_Tick); m_timer.Dispose(); } if(components != null) { components.Dispose(); } if (m_hotLinkFont != null) m_hotLinkFont.Dispose(); } m_hotLinkFont = null; m_timer = null; m_menu = null; // Client is responsible for this. m_slice = null; // Client is responsible for this. m_buttonDrawnEnabled = null; m_buttonMenuItems.Clear(); m_buttonMenuItems = null; base.Dispose( disposing ); }
public static Slice Create(FdoCache cache, string editor, int flid, XmlNode node, ICmObject obj, StringTable stringTbl, IPersistenceProvider persistenceProvider, Mediator mediator, XmlNode caller) { Slice slice = null; switch (editor) { case "string": { if (flid == 0) { throw new ApplicationException("field attribute required for basic properties " + node.OuterXml); } int ws = GetWs(mediator, cache, node); if (ws != 0) { slice = new StringSlice(obj.Hvo, flid, ws); } else { slice = new StringSlice(obj.Hvo, flid); } break; } case "multistring": { if (flid == 0) { throw new ApplicationException("field attribute required for multistring " + node.OuterXml); } string wsSpec = XmlUtils.GetOptionalAttributeValue(node, "ws"); int wsMagic; wsMagic = LangProject.GetMagicWsIdFromName(wsSpec); if (wsMagic == 0) { throw new ApplicationException( "ws must be 'all vernacular', 'all analysis', 'analysis vernacular', or 'vernacular analysis'" + " it said '" + wsSpec + "'."); } bool forceIncludeEnglish = XmlUtils.GetOptionalBooleanAttributeValue(node, "forceIncludeEnglish", false); bool spellCheck = XmlUtils.GetOptionalBooleanAttributeValue(node, "spell", true); bool editable = XmlUtils.GetOptionalBooleanAttributeValue(caller, "editable", true); slice = new MultiStringSlice(obj.Hvo, flid, wsMagic, forceIncludeEnglish, editable, spellCheck); break; } case "jtview": { string layout = XmlUtils.GetOptionalAttributeValue(caller, "param"); if (layout == null) { layout = XmlUtils.GetManditoryAttributeValue(node, "layout"); } // Editable if BOTH the caller (part ref) AND the node itself (the slice) say so...or at least if neither says not. bool editable = XmlUtils.GetOptionalBooleanAttributeValue(caller, "editable", true) && XmlUtils.GetOptionalBooleanAttributeValue(node, "editable", true); slice = new ViewSlice(new XmlView(obj.Hvo, layout, stringTbl, editable)); break; } case "summary": { slice = new SummarySlice(obj, caller, node, stringTbl); break; } case "enumcombobox": { slice = new EnumComboSlice(cache, obj, flid, stringTbl, node["deParams"]); break; } case "referencecombobox": { slice = new ReferenceComboBoxSlice(cache, obj, flid, persistenceProvider, mediator); break; } case "typeaheadrefatomic": { slice = new AtomicRefTypeAheadSlice(obj.Hvo, flid); break; } case "msareferencecombobox": { slice = new MSAReferenceComboBoxSlice(cache, obj, flid, persistenceProvider, mediator); break; } case "lit": // was "message" { string message = XmlUtils.GetManditoryAttributeValue(node, "message"); if (stringTbl != null) { string sTranslate = XmlUtils.GetOptionalAttributeValue(node, "translate", ""); if (sTranslate.Trim().ToLower() != "do not translate") { message = stringTbl.LocalizeLiteralValue(message); } } slice = new MessageSlice(message); break; } case "picture": { slice = new PictureSlice((FDO.Cellar.CmPicture)obj); break; } case "image": { try { slice = new ImageSlice(DirectoryFinder.FWCodeDirectory, XmlUtils.GetManditoryAttributeValue(node, "param1")); } catch (Exception error) { slice = new MessageSlice(String.Format(DetailControlsStrings.ksImageSliceFailed, error.Message)); } break; } case "checkbox": { slice = new CheckboxSlice(cache, obj, flid, node); break; } case "time": { slice = new DateSlice(cache, obj, flid); break; } case "integer": // produced in the auto-generated parts from the conceptual model case "int": // was "integer" { slice = new IntegerSlice(cache, obj, flid); break; } case "morphtypeatomicreference": { slice = new MorphTypeAtomicReferenceSlice(cache, obj, flid, node, persistenceProvider, mediator, stringTbl); break; } case "atomicreferencepos": { slice = new AtomicReferencePOSSlice(cache, obj, flid, persistenceProvider, mediator); break; } case "defaultatomicreference": { slice = new AtomicReferenceSlice(cache, obj, flid, node, persistenceProvider, mediator, stringTbl); break; } case "derivmsareference": { slice = new DerivMSAReferenceSlice(cache, obj, flid, node, persistenceProvider, mediator, stringTbl); break; } case "inflmsareference": { slice = new InflMSAReferenceSlice(cache, obj, flid, node, persistenceProvider, mediator, stringTbl); break; } case "defaultvectorreference": { slice = new ReferenceVectorSlice(cache, obj, flid, node, persistenceProvider, mediator, stringTbl); break; } case "phoneenvreference": { slice = new PhoneEnvReferenceSlice(cache, obj, flid, node, persistenceProvider, mediator, stringTbl); break; } case "sttext": { slice = new StTextSlice(obj.Hvo, flid, GetWs(mediator, cache, node)); break; } case "custom": { slice = (Slice)DynamicLoader.CreateObject(node); break; } case "customwithparams": { slice = (Slice)DynamicLoader.CreateObject(node, new object[] { cache, editor, flid, node, obj, stringTbl, persistenceProvider, GetWs(mediator, cache, node) }); break; } case "command": { slice = new CommandSlice(node["deParams"]); break; } case null: //grouping nodes do not necessarily have any editor { slice = new Slice(); break; } case "message": // case "integer": // added back in to behave as "int" above throw new Exception("use of obsolete editor type (message->lit, integer->int)"); case "autocustom": slice = MakeAutoCustomSlice(cache, node, obj, caller); if (slice == null) { return(null); } break; default: { //Since the editor has not been implemented yet, //is there a bitmap file that we can show for this editor? //Such bitmaps belong in the distFiles xde directory string fwCodeDir = DirectoryFinder.FWCodeDirectory; string editorBitmapRelativePath = @"xde\" + editor + ".bmp"; if (System.IO.File.Exists(Path.Combine(fwCodeDir, editorBitmapRelativePath))) { slice = new ImageSlice(fwCodeDir, editorBitmapRelativePath); } else { slice = new MessageSlice(String.Format(DetailControlsStrings.ksBadEditorType, editor)); } break; } } slice.AccessibleName = editor; return(slice); }
public SummaryXmlView(int hvo, string label, StringTable stringTbl, SummarySlice slice) : base(hvo, label, stringTbl, false) { m_slice = slice; }
public LiteralLabelView(string text, SummarySlice slice) { m_text = text; m_slice = slice; }
/// <summary> /// Executes in two distinct scenarios. /// /// 1. If disposing is true, the method has been called directly /// or indirectly by a user's code via the Dispose method. /// Both managed and unmanaged resources can be disposed. /// /// 2. If disposing is false, the method has been called by the /// runtime from inside the finalizer and you should not reference (access) /// other managed objects, as they already have been garbage collected. /// Only unmanaged resources can be disposed. /// </summary> /// <param name="disposing"></param> /// <remarks> /// If any exceptions are thrown, that is fine. /// If the method is being done in a finalizer, it will be ignored. /// If it is thrown by client code calling Dispose, /// it needs to be handled by fixing the bug. /// /// If subclasses override this method, they should call the base implementation. /// </remarks> protected override void Dispose(bool disposing) { //Debug.WriteLineIf(!disposing, "****************** " + GetType().Name + " 'disposing' is false. ******************"); // Must not be run more than once. if (IsDisposed) return; base.Dispose(disposing); if (disposing) { // Dispose managed resources here. } // Dispose unmanaged resources here, whether disposing is true or false. m_slice = null; }
public SummaryXmlView(int hvo, string label, StringTable stringTbl, SummarySlice slice) : base( hvo, label, stringTbl, false) { m_slice = slice; }
public LiteralLabelView(string text, SummarySlice slice) { m_text = text; m_slice = slice; }
public static Slice Create(FdoCache cache, string editor, int flid, XmlNode node, ICmObject obj, StringTable stringTbl, IPersistenceProvider persistenceProvider, Mediator mediator, XmlNode caller) { Slice slice = null; switch(editor) { case "string": { if (flid == 0) throw new ApplicationException("field attribute required for basic properties " + node.OuterXml); int ws = GetWs(mediator, cache, node); if (ws != 0) slice = new StringSlice(obj.Hvo, flid, ws); else slice = new StringSlice(obj.Hvo, flid); break; } case "multistring": { if (flid == 0) throw new ApplicationException("field attribute required for multistring " + node.OuterXml); string wsSpec = XmlUtils.GetOptionalAttributeValue(node, "ws"); int wsMagic; wsMagic = LangProject.GetMagicWsIdFromName(wsSpec); if (wsMagic == 0) throw new ApplicationException( "ws must be 'all vernacular', 'all analysis', 'analysis vernacular', or 'vernacular analysis'" + " it said '" + wsSpec + "'."); bool forceIncludeEnglish = XmlUtils.GetOptionalBooleanAttributeValue(node, "forceIncludeEnglish", false); bool spellCheck = XmlUtils.GetOptionalBooleanAttributeValue(node, "spell", true); bool editable = XmlUtils.GetOptionalBooleanAttributeValue(caller, "editable", true); slice = new MultiStringSlice(obj.Hvo, flid, wsMagic, forceIncludeEnglish, editable, spellCheck); break; } case "jtview": { string layout = XmlUtils.GetOptionalAttributeValue(caller, "param"); if (layout == null) layout = XmlUtils.GetManditoryAttributeValue(node, "layout"); // Editable if BOTH the caller (part ref) AND the node itself (the slice) say so...or at least if neither says not. bool editable = XmlUtils.GetOptionalBooleanAttributeValue(caller, "editable", true) && XmlUtils.GetOptionalBooleanAttributeValue(node, "editable", true); slice = new ViewSlice(new XmlView(obj.Hvo, layout, stringTbl, editable)); break; } case "summary": { slice = new SummarySlice(obj, caller, node, stringTbl); break; } case "enumcombobox": { slice = new EnumComboSlice(cache, obj, flid, stringTbl, node["deParams"]); break; } case "referencecombobox": { slice = new ReferenceComboBoxSlice(cache, obj, flid, persistenceProvider, mediator); break; } case "typeaheadrefatomic": { slice = new AtomicRefTypeAheadSlice(obj.Hvo, flid); break; } case "msareferencecombobox": { slice = new MSAReferenceComboBoxSlice(cache, obj, flid, persistenceProvider, mediator); break; } case "lit": // was "message" { string message = XmlUtils.GetManditoryAttributeValue(node, "message"); if (stringTbl != null) { string sTranslate = XmlUtils.GetOptionalAttributeValue(node, "translate", ""); if (sTranslate.Trim().ToLower() != "do not translate") message = stringTbl.LocalizeLiteralValue(message); } slice = new MessageSlice(message); break; } case "picture": { slice = new PictureSlice((FDO.Cellar.CmPicture) obj); break; } case "image": { try { slice = new ImageSlice(DirectoryFinder.FWCodeDirectory, XmlUtils.GetManditoryAttributeValue(node, "param1")); } catch (Exception error) { slice = new MessageSlice(String.Format(DetailControlsStrings.ksImageSliceFailed, error.Message)); } break; } case "checkbox": { slice = new CheckboxSlice(cache, obj, flid, node); break; } case "time": { slice = new DateSlice(cache, obj, flid); break; } case "integer": // produced in the auto-generated parts from the conceptual model case "int": // was "integer" { slice = new IntegerSlice(cache, obj, flid); break; } case "morphtypeatomicreference": { slice = new MorphTypeAtomicReferenceSlice(cache, obj, flid, node, persistenceProvider, mediator, stringTbl); break; } case "atomicreferencepos": { slice = new AtomicReferencePOSSlice(cache, obj, flid, persistenceProvider, mediator); break; } case "defaultatomicreference": { slice = new AtomicReferenceSlice(cache, obj, flid, node, persistenceProvider, mediator, stringTbl); break; } case "derivmsareference": { slice = new DerivMSAReferenceSlice(cache, obj, flid, node, persistenceProvider, mediator, stringTbl); break; } case "inflmsareference": { slice = new InflMSAReferenceSlice(cache, obj, flid, node, persistenceProvider, mediator, stringTbl); break; } case "defaultvectorreference": { slice = new ReferenceVectorSlice(cache, obj, flid, node, persistenceProvider, mediator, stringTbl); break; } case "phoneenvreference": { slice = new PhoneEnvReferenceSlice(cache, obj, flid, node, persistenceProvider, mediator, stringTbl); break; } case "sttext": { slice = new StTextSlice(obj.Hvo, flid, GetWs(mediator, cache, node)); break; } case "custom": { slice = (Slice)DynamicLoader.CreateObject(node); break; } case "customwithparams": { slice = (Slice)DynamicLoader.CreateObject(node, new object[]{cache, editor, flid, node, obj, stringTbl, persistenceProvider, GetWs(mediator, cache, node)}); break; } case "command": { slice = new CommandSlice(node["deParams"]); break; } case null: //grouping nodes do not necessarily have any editor { slice = new Slice(); break; } case "message": // case "integer": // added back in to behave as "int" above throw new Exception("use of obsolete editor type (message->lit, integer->int)"); case "autocustom": slice = MakeAutoCustomSlice(cache, node, obj, caller); if (slice == null) return null; break; default: { //Since the editor has not been implemented yet, //is there a bitmap file that we can show for this editor? //Such bitmaps belong in the distFiles xde directory string fwCodeDir = DirectoryFinder.FWCodeDirectory; string editorBitmapRelativePath = @"xde\" + editor + ".bmp"; if(System.IO.File.Exists(Path.Combine(fwCodeDir, editorBitmapRelativePath))) slice = new ImageSlice(fwCodeDir, editorBitmapRelativePath); else slice = new MessageSlice(String.Format(DetailControlsStrings.ksBadEditorType, editor)); break; } } slice.AccessibleName = editor; return slice; }