Documentation

Trace:

Differences

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

Link to this comparison view

Last revision Both sides next revision
applications:replace_menu [2018/02/07 07:05]
admin created
applications:replace_menu [2018/02/07 07:12]
admin
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 work-screens will be added by the application to the menu. Every work-screen 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 work-screen 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 which 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. Ther 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 re-creates the whole menu and adds only standard items. It doesn'​t add any work-screens. 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 work-screen 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 work-screen. 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 mapps 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