I don’t recommend this, because it reeks of using a screwdriver to drive a nail when finding a hammer might take some time but be far more effective. With that warning sternly delivered, here are some guidelines.
* First, I don’t think you need to recompile the NodeXL source code. I believe that just the prebuilt NodeXL Class Libraries, which you have already downloaded, will suffice.
* See the NodeXLApi.chm help file in that download for more details about what I talk about here.
* The essence of your problem is that you need to lay out your vertices in a very specific manner. NodeXL has an extensible family of “layout” classes whose job it is to set the location of each of the graph’s vertices before the
graph is drawn. There is a CircleLayout class, for example, and a GridLayout class. There is no TimelineLayout, but you can create your own.
* To create your custom TimelineLayout, derive it from the abstract class Smrf.NodeXL.Layouts.LayoutBase. You can create your own layout class from scratch, but if you derive from LayoutBase instead, most of the miscellaneous layout details are taken
care of for you.
* When deriving from LayoutBase, all you have to implement is the abstract method LayOutGraphCore(), which sets the IVertex.Location property of each of the graph’s vertices. That’s all it does. You have to compute the locations yourself,
but the rest of NodeXL will take care of drawing the graph for you.
* LayOutGraphCore() is a protected method that is not documented in NodeXLApi.chm. You’ll want to download the source code so you can read the method’s comments. Again, you don’t have to actually recompile the source code.
* When computing the location of the vertices, LayOutGraphCore() needs to be able to identify the special vertices that represent dates. When your application populates your NodeXL group, it should “mark” those vertices using a special
key that you define, like this:
IVertex dateVertex = nodeXLControl.Graph.Vertices.Add();
* Then LayOutGraphCore() can check for this key like so:
Boolean isDateVertex = someVertex.ContainsKey(“ThisIsADateVertex”);
If it’s a date vertex, its Location property should be set so that it falls on your timeline. Otherwise, the Location property should be set to I-don’t-know-what. That’s up to you.
* To use your custom TimeLineLayout, do this:
nodeXLControl.Layout = new TimelineLayout();