Background:
I have extensive experience in web applications, but I have very little or no experience with RCP. Presently, I am working with Java Swing API. Everything is good. The only problem is, I don't feel very confident about my design.
Question:
In web application when we implement MVC, we forward the request to a View. The Controller doesn't care about where to show it. Everything is going to be displayed on a page, typically. But in RCP, we need to know where to show this form/table/etc.. I mean which panel, right or left, up or down. That requires a reference to a container component in which we desire to show the thing. How we should design our code to get that reference?
Take:
I am keeping reference to all first level components in the main class -- that has main() method. And then wherever I need some component, I am doing something like,
JPanel formPanel = MainApp.getMainPanel().getFormPanel();
..
JPanel treePanel = MainApp.getMainPanel().getTreePanel();
Is it okay?
MVC isn't really as much of a thing in RCP, people talk about it but largely it's bullshit.
For sure having a model of your business objects that's separate and had no dependency on any UI code is important. But the lines between Views and Controllers tend to be more blurred I wouldn't sweat it too much.
User interface elements naturally tend to be organized in a tree like you have, though global variables such as your main panel should be avoided.
Lean heavily on the observer pattern.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With