Well… I can confirm that this fully works! ![]()
First I’ll share my code:
@Override
public void performAction(VPAction arg0) {
ApplicationManager vpam = ApplicationManager.instance();
DiagramManager vpdm = vpam.getDiagramManager();
ViewManager vpvm = vpam.getViewManager();
IDiagramUIModel diagram = vpdm.getActiveDiagram();
IETLTableDiagramUIModel etlmodel = null;
IETLTableDiagram etldiagram = null;
IETLTable etltable = null;
IETLTableDiagramColumn etlcol = null;
for (IDiagramElement ide : diagram.toDiagramElementArray()) {
// Get ETL table
if (ide.getShapeType().equals("ETLTable")) {
vpvm.showMessage("Discovered ETL table.");
try {
vpvm.showMessage("Processing table element.");
etltable = (IETLTable) ide.getModelElement();
if (etltable.subDiagramCount() > 0) {
etlmodel = (IETLTableDiagramUIModel) etltable.getSubDiagramAt(0);
}
// Get related diagram
vpvm.showMessage("Get related ETL table diagram");
etldiagram = etlmodel.getEtlTableDiagram();
// Create & add new column
vpvm.showMessage("Creating new column");
etlcol = etldiagram.createETLTableDiagramColumn();
vpvm.showMessage("Adding new column");
etldiagram.addColumn(etlcol);
etlcol.setColumnType(IETLTableDiagramColumn.COLUMN_TYPE_PROPERTY);
etlcol.setColumnValue("Auto added column");
} catch (Exception e) {
vpvm.showMessage("Caught ETL exception: " + e.getMessage());
}
}
}
etlmodel.realCloseDiagram();
vpdm.openDiagram(etlmodel);
}
And this is the result:
I figured I’d share because Peter’s code didn’t show how to get the actual class. But then again, my previous message showed that already.
But yeah, this works!

