private static ChangeableDictionary <int> Setup() { var d = new ChangeableDictionary <int>(); d.Add(2, 20); d.Add(8, 80); d.Add(5, 50); d.Add(0, 0); d.Add(3, 30); d.Add(6, 60); d.Add(4, 40); d.Add(7, 70); d.Add(9, 90); return(d); }
public void Insert() { ChangeableDictionary <int> d = Setup(); d.InsertAndShift(5, 1); d.Add(5, 500); Assert.AreEqual(500, d[5]); Assert.AreEqual(50, d[6]); Assert.AreEqual(80, d[9]); Assert.AreEqual(90, d[10]); }
internal void ReindexWorksheetDictionary() { var index = 0; var worksheets = new ChangeableDictionary <ExcelWorksheet>(); foreach (var entry in _worksheets) { entry.PositionId = index + _pck._worksheetAdd; worksheets.Add(index++, entry); } _worksheets = worksheets; }
internal ExcelWorksheets(ExcelPackage pck, XmlNamespaceManager nsm, XmlNode topNode) : base(nsm, topNode) { _pck = pck; _namespaceManager = nsm; int ix = 0; _worksheets = new ChangeableDictionary <ExcelWorksheet>(); foreach (XmlNode sheetNode in topNode.ChildNodes) { if (sheetNode.NodeType == XmlNodeType.Element) { string name = sheetNode.Attributes["name"].Value; //Get the relationship id string relId = sheetNode.Attributes.GetNamedItem("id", ExcelPackage.schemaRelationships).Value; int sheetID = Convert.ToInt32(sheetNode.Attributes["sheetId"].Value); if (!String.IsNullOrEmpty(relId)) { var sheetRelation = pck.Workbook.Part.GetRelationship(relId); Uri uriWorksheet = UriHelper.ResolvePartUri(pck.Workbook.WorkbookUri, sheetRelation.TargetUri); //add the worksheet int positionID = ix + _pck._worksheetAdd; if (sheetRelation.RelationshipType.EndsWith("chartsheet")) { _worksheets.Add(ix, new ExcelChartsheet(_namespaceManager, _pck, relId, uriWorksheet, name, sheetID, positionID, null)); } else { _worksheets.Add(ix, new ExcelWorksheet(_namespaceManager, _pck, relId, uriWorksheet, name, sheetID, positionID, null)); } ix++; } } } }
private ExcelWorksheet AddSheet(string Name, bool isChart, eChartType?chartType, ExcelPivotTable pivotTableSource = null) { lock (_worksheets) { Name = ValidateFixSheetName(Name); if (GetByName(Name) != null) { throw (new InvalidOperationException(ERR_DUP_WORKSHEET + " : " + Name)); } GetSheetURI(ref Name, out int sheetID, out Uri uriWorksheet, isChart); Packaging.ZipPackagePart worksheetPart = _pck.ZipPackage.CreatePart(uriWorksheet, isChart ? CHARTSHEET_CONTENTTYPE : WORKSHEET_CONTENTTYPE, _pck.Compression); //Create the new, empty worksheet and save it to the package StreamWriter streamWorksheet = new StreamWriter(worksheetPart.GetStream(FileMode.Create, FileAccess.Write)); XmlDocument worksheetXml = CreateNewWorksheet(isChart); worksheetXml.Save(streamWorksheet); _pck.ZipPackage.Flush(); string rel = CreateWorkbookRel(Name, sheetID, uriWorksheet, isChart); int positionID = _worksheets.Count + _pck._worksheetAdd; ExcelWorksheet worksheet; if (isChart) { worksheet = new ExcelChartsheet(_namespaceManager, _pck, rel, uriWorksheet, Name, sheetID, positionID, eWorkSheetHidden.Visible, (eChartType)chartType, pivotTableSource); } else { worksheet = new ExcelWorksheet(_namespaceManager, _pck, rel, uriWorksheet, Name, sheetID, positionID, eWorkSheetHidden.Visible); } _worksheets.Add(_worksheets.Count, worksheet); if (_pck.Workbook.VbaProject != null) { var name = _pck.Workbook.VbaProject.GetModuleNameFromWorksheet(worksheet); _pck.Workbook.VbaProject.Modules.Add(new ExcelVBAModule(worksheet.CodeNameChange) { Name = name, Code = "", Attributes = _pck.Workbook.VbaProject.GetDocumentAttributes(Name, "0{00020820-0000-0000-C000-000000000046}"), Type = eModuleType.Document, HelpContext = 0 }); worksheet.CodeModuleName = name; } return(worksheet); } }
private void UpdateFrom_ <T>(Network.IXenConnection connection, ChangeableDictionary <XenRef <T>, T> target, ObjectChange source) where T : XenObject <T>, new() { XenRef <T> xenref = source.xenref as XenRef <T>; if (xenref == null) { xenref = new XenRef <T>((string)source.xenref); } if (source.value != null) { T to_update = null; lock (target) { if (!target.TryGetValue(xenref, out to_update)) { // add T obj = new T(); obj.Connection = connection; obj.UpdateFrom((T)source.value); obj.opaque_ref = xenref.opaque_ref; target.Add(xenref, obj); } } // Update the object that we found above. Note that this needs to be done out of the // scope of the lock(target), as UpdateFrom is going to fire events. if (to_update != null) { to_update.UpdateFrom((T)source.value); } } else { // delete the source object from our model lock (target) { target.Remove(xenref); } } }