"Yikes", you're thinking, "a long question!" Please read on; it covers a
general topic many should find relevant.
I'm re-doing the architecture of a large program, and want input on the best
way to manage panels & program sections, and whether multi-threading is a good
strategy for me.
Basically, my program has a data-entry section, and a historical data display
section. Each "section" can involve many different panels. No data acquisition,
nor any real-time issues.
The data-entry section is well-served by the use of popups: it locks the user
from doing other things until the task at hand is completed in the required logical
sequence. However, the use of popups prevents browsing of the historical data while
deciding what info to enter.
So, what I think I want is two (or more) "parallel" windows -- one for data-entry,
and one (or more) other(s) for data display. I'd like popups to limit the users activity
within each parallel section, but not lock out activity in the other section.
Sticking with only two parallel sections for now, I envision them residing as
two child panels within a parent panel, or just as two top-level panels.
My options seem to be:
a) Split it into two programs and have the data-viewing program launch a new
app to enter data (or vice versa). The challenge here is to not confuse the user,
to keep the 2 apps coordinated (e.g. close both apps together, and manage user
id & rights between them) and to share the data efficiently.
b) Multi-thread the program. I think this solves the problem of a popup locking
any activity anywhere within the whole app. Seems daunting, and possibly
unnecessary since there is no "real-time" element to the program.
c) Don't use popups. Manually code in all the panel management, controlling
access to each panel as a new one is displayed based on the current state.
Seems like a lot of work to track & manage manually.
What is the best path to take? Any proven principles or practices to guide me?
Thanks in advance for your input.