Documentation

Trace:

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
applications:replace_menu [2018/02/07 07:05]
admin created
applications:replace_menu [2020/07/03 12:44] (current)
cduncan Edited for English grammar (capitalization, punctuation, correct verb conjugation)
Line 1: Line 1:
 ~~NOTRANS~~ ~~NOTRANS~~
 +~~Title: Replace Standard Application Menu~~
 +
 +The standard menu creates and configures the menu and toolbar automatically. It adds default menus like //File//, //Edit//, //Help// and default menu items like //​Login/​Logout//,​ //Exit//, //About//. All application workscreens will be added by the application to the menu. Every workscreen has its own menu item and/or toolbar button.
 +
 +The menu forwards most actions to the application because the application is responsible for the security and workscreen management.
 +
 +If you don't like the standard menu handling or layout, it's very easy to replace the standard menu with your own implementation.
 +
 +==== Extending the Menu ====
 +
 +The menu class defines default methods that are used by the application,​ so it's important to extend the class. The class has a constructor with the application as parameter. The constructor delegates the configuration to the method.
 +
 +<file java>
 +protected void configureApplication()
 +</​file>​
 +
 +Override this method if your application should get a custom style. The default implementation sets an UIBorderLayout for the application pane and adds the content pane to the application pane with CENTER constraint.
 +
 +It's possible to add the content pane to your hierarchy (e.g., a tabset) and use a different layout for the application pane. There aren't any limits.
 +
 +The menu class will be created by ProjX via 
 +
 +<file java>
 +protected Menu createMenu() throws Throwable
 +</​file>​
 +
 +This method checks the menu class parameter (see [[applications:​customize_application|Customize an Application]]) and creates a default menu instance if no user-defined class was set.
 +
 +
 +==== Useful Methods ====
 +
 +The menu has some relevant methods:
 +
 +<file java>
 +public void createStandardMenu()
 +public void addItem(String pId, String pAction, ...)
 +</​file>​
 +
 +The createStandardMenu method will be called by the application after menu creation. It recreates the whole menu and adds only standard items. It doesn'​t add any workscreens. The standard menu contains File, Edit and About menus and toolbar buttons. The standard toolbar contains Exit, Login/​Logout and Save, Reload (if connected).
 +
 +The method delegates the creation of the menubar to the method:
 +
 +<file java>
 +protected void createStandardMenuBar()
 +</​file>​
 +
 +and toolbar creation to
 +
 +<file java>
 +protected void createStandardToolBar()
 +</​file>​
 +
 +Simply override createStandardToolBar and don't call the parent method to hide the toolbar.
 +\\ 
 +The workscreen items will be added by the application after successful login. The method:
 + 
 +<file java>
 +public void addItem(String pId, ...)
 +</​file>​
 +
 +will be called for every workscreen. It delegates item creation to
 +
 +<file java>
 +protected IMenuItem addMenuItem(String pId, String pGroupId, ...)
 +</​file>​
 +
 +and
 +
 +<file java>
 +protected IButton addToolBarButton(String pId, ...)
 +</​file>​
 +\\ 
 +But there are more useful methods for you. All methods that start with **create**, are helper methods, e.g.,
 +
 +<file java>
 +public UIMenuItem createMenuItem(String pAction, ...)
 +public UIButton createToolBarButton(String pAction, ...)
 +public UIToggleButton createToolBarToggleButton(String pAction, ...)
 +</​file>​
 +
 +and there are also some **configure** methods:
 +
 +<file java>
 +protected <T extends AbstractUIMenuItem<?>>​ T configureMenuItem(...)
 +protected <T extends AbstractUIButton<?>>​ T configureToolBarButton
 +</​file>​
 +
 +Sometimes it's enough to override the configure methods instead of create methods because every create method calls a configure method.
 +
 +==== Access With ID ====
 +
 +Every item should have an ID because the item access is managed with IDs. There are a lot of default IDs, e.g., //​Menu.FILE//,​ //​Menu.FILE_LOGIN//​.
 +
 +If you need access to an item, simply use
 +
 +<file java>
 +public IComponent[] get(String pId)
 +</​file>​
 +
 +The method returns all mapped items for the given ID. Sometimes an ID maps multiple items because one item is the menu item and another one is the toolbar button.
 +
 +If you add custom items to the menu, simply map them with
 +
 +<file java>
 +public IComponent[] put(String pId, IComponent... pComponent)
 +</​file>​
 +\\ 
 +The menu class has methods for item control:
 +
 +<file java>
 +public void removeItem(String pId)
 +public void setItemVisible(String pId, boolean pVisible)
 +public void setItemEnabled(String pId, boolean pEnable)
 +public boolean isSelected(String pId)
 +</​file>​
 +
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information