1. First of all, Model and View are mixed in my Context object, which I don't want.
Well you could separate out your context object, into two separate objects one that contains model information and one that contains view(gui) information.
You said each node needs its own top-level frame for modal windows, how important is it that each node's modal windows not block other node's windows?
If its not that important, you could do each node as a panel.
However my problem is that I've several objects that must be available for all of them. For example, because I want to be able to show modal dialogs, I need to have the top level JFrame available for each node. Also, because I must be able to add and remove nodes, I must be able to access the navigation tree from any node. Those are the View objects that must be available.
In my app I have done what I said... the base frame (actually an internal frame) has split pane one side with the JTree(lhs), the otherside with a JPanel with information for each node(Rhs). The rhs changes as different nodes are selected. Modal windows would just be child windows to this frame (honestly I'm not sure how it works with internal frames if it blocks all of them, or if it has to be a child to the main desktop window, in my case its not important).
If you implemented/extended a JTree a child node should have access to its parent easily enough through getParent().
2. Secondly, not all properties of Context can be final because after creation they must be set by the child data objects. This means they can be null, or set with wrong values.
I don't think it would be useful to make the properties of your context object "constants." I'm not sure what the problem is with values being set null, or with "wrong values." You're going to have to do checking/validation to make sure the data is right/not null (or just handle nulls as a legitimate value) thats just a part of coding (if I'm wrong here please someone tell me what I'm missing, it would make life much easier).
-Tad