Help with app design

Sep 2, 2008 at 3:38 AM
Edited Sep 2, 2008 at 3:41 AM
wow, ok so copy-paste from word does NOT work well lol

Hi,

I'm quite new to CAB and SCSF and would like some advice with an application I am developing.
The application will utilize CAB, SCSF+Contrib, NetTiers and Infragistics. I might later use the Infragistic CAB controls instead of the regular ones, but for now I only need their ComboBox, WinGrid, WinTree etc controls.

The main design of my application consists of:
  • a banner across the top that will display the name of the application and the logged in user
  • a STATIC menu bar below the banner that has 7 root menus (that correspond to the 7 business modules) and each root menu has submenus that will allow quick access to specific screens inside each module,
  • a main area that will display the modules,
  • a status bar.
I also might have a toolbar under the menu for module specific commands, but for now I want to keep the design very simple.

The menu is static and items will never be added or removed, just enabled/disabled depending on the role of the logged in user.

When a user starts the application they will be presented with a login screen where they enter their credentials and are allowed access to the application. Depending on their privileges, some modules/menu items might be disabled. Users will load different modules by selecting menu items under the respective module menu (ex. under root menu "Orders", users can "Create Order", Modify Order", "Print Orders"). Selecting any of these will load the Orders module and display the screen that corresponds to the function the user requested.

I have spent quite a bit of time reading and trying to understand CAB and boy is it not a weekend task.  So far, I have created the SCSF solution with a separate Layout module, created the banner, menu, main workspace, status bar, and have two empty modules.

Some problems that I have are:

  • How do I control what modules are loaded into the application when it starts up? I don't want the Administration module loaded for a non-admin user, while an admin user would be able to access all modules. Also, I only want modules to be displayed after a user has clicked to launch them from the menu. I figure that I need to remove the lines that create the new workitem and add it to the root workitem in the ModuleInit for each module I don't want loaded.
  • How do I load the module I want based on user selection from the menu? This is along the same line the previous question. At this point, in "ShellLayoutView" I handle the menu click event that launches the ShellLayoutViewPresenter method and now I don't know if I am suppose to create the workitem for the module I want to display, add it to the root workitem and run the workItem.Controller.Run() method. Just like in ModuleInit.
  • Since, I have 7 different modules, each one of them can be loaded at the same time (possibly even more than one of each - if this is difficult then only one of each will suffice), I need a way to display what modules are loaded and let the user switch between them.  I thought of something like the document thing in the TestSuite application.  I want to have as much area as possible available for each module as the application is very data centric.
Sorry for the long post. I know some information may be vague and confusing, but I appreciate any input and I can provide further details.

Thank You