use of gov.sandia.n2a.eqset.MPart in project n2a by frothga.
the class AddVariable method create.
public static NodeBase create(List<String> path, int index, String name, MNode newPart, boolean nameIsGenerated) {
NodeBase parent = NodeBase.locateNode(path);
if (parent == null)
throw new CannotRedoException();
NodeBase n = parent.child(name);
// Should be blocked by GUI constraints, but this defends against ill-formed model on clipboard.
if (n != null && !(n instanceof NodeVariable))
throw new CannotRedoException();
NodeVariable createdNode = (NodeVariable) n;
// Update database
MPart createdPart = (MPart) parent.source.set(name, "");
createdPart.merge(newPart);
// Update GUI
PanelModel mep = PanelModel.instance;
JTree tree = mep.panelEquations.tree;
FilteredTreeModel model = (FilteredTreeModel) tree.getModel();
boolean alreadyExists = createdNode != null;
if (!alreadyExists)
createdNode = new NodeVariable(createdPart);
// pure create, so about to go into edit mode. This should only happen on first application of the create action, and should only be possible if visibility is already correct.
if (nameIsGenerated)
createdNode.setUserObject("");
FontMetrics fm = createdNode.getFontMetrics(tree);
// preempt initialization
createdNode.updateColumnWidths(fm);
if (!alreadyExists)
model.insertNodeIntoUnfiltered(createdNode, parent, index);
TreeNode[] createdPath = createdNode.getPath();
if (!nameIsGenerated) {
createdNode.build();
createdNode.findConnections();
mep.panelEquations.updateOrder(createdPath);
parent.updateTabStops(fm);
parent.allNodesChanged(model);
}
mep.panelEquations.updateVisibility(createdPath);
return createdNode;
}
use of gov.sandia.n2a.eqset.MPart in project n2a by frothga.
the class AddVariable method destroy.
public static void destroy(List<String> path, boolean canceled, String name) {
// Retrieve created node
NodeBase parent = NodeBase.locateNode(path);
if (parent == null)
throw new CannotUndoException();
NodeVariable createdNode = (NodeVariable) parent.child(name);
PanelModel mep = PanelModel.instance;
JTree tree = mep.panelEquations.tree;
FilteredTreeModel model = (FilteredTreeModel) tree.getModel();
FontMetrics fm = createdNode.getFontMetrics(tree);
TreeNode[] createdPath = createdNode.getPath();
int index = parent.getIndexFiltered(createdNode);
if (canceled)
index--;
MPart mparent = parent.source;
mparent.clear(name);
if (// Node is fully deleted
mparent.child(name) == null) {
model.removeNodeFromParent(createdNode);
((NodePart) parent).findConnections();
} else // Just exposed an overridden node
{
createdNode.build();
createdNode.findConnections();
createdNode.updateColumnWidths(fm);
}
parent.updateTabStops(fm);
parent.allNodesChanged(model);
mep.panelEquations.updateOrder(createdPath);
// includes nodeStructureChanged(), if necessary
mep.panelEquations.updateVisibility(createdPath, index);
}
use of gov.sandia.n2a.eqset.MPart in project n2a by frothga.
the class ChangeAnnotation method redo.
public void redo() {
super.redo();
apply(path, nameBefore, nameAfter, valueAfter, "$metadata", new NodeFactory() {
public NodeBase create(MPart part) {
return new NodeAnnotation(part);
}
});
}
use of gov.sandia.n2a.eqset.MPart in project n2a by frothga.
the class ChangeReference method undo.
public void undo() {
super.undo();
ChangeAnnotation.apply(path, nameAfter, nameBefore, valueBefore, "$reference", new NodeFactory() {
public NodeBase create(MPart part) {
return new NodeReference(part);
}
});
}
use of gov.sandia.n2a.eqset.MPart in project n2a by frothga.
the class ChangeReference method redo.
public void redo() {
super.redo();
ChangeAnnotation.apply(path, nameBefore, nameAfter, valueAfter, "$reference", new NodeFactory() {
public NodeBase create(MPart part) {
return new NodeReference(part);
}
});
}
Aggregations