|
This page contains information about how to use and exploit the MaxBase bean.
Use of the MaxBase class with plain Jdk import nrio.MaxBase;
Is required in your Java source file.
What you can do with the MaxBase Bean
- First off, you can invoke some public MaxBase methods, read and write MaxBase properties in order to accomplish tasks such as having a query start automatically.
- Another option is to replace MaxBase add & modify panels (the ones created with the VFD) so you can have a more strict control on the entered data, and their source. Usually, however, you should create your forms using VFD, the Visual Form Designer, and pass them to a MaxBase instance via the setCustomForm(String) method.
- A mechanism is provided to let your add & modify panels communicate with different MaxBase beans (say you want to retrieve a list of suppliers to present to the user when setting up the on sale items' add panel).
- Finally, you can add your own features to MaxBase in a way that works also with applets (no need for external INI files that would break the virtual sandbox).
A different approach to the problem, or how is structured a typical Java application exploiting MaxBase
MaxBase allows you to do many things, therefore it may be intimidating for the developer that is just approaching MaxBase development to start working with it. In the next few paragraphs we´ll try to give you some guidelines, then you should refer to these HTML pages in order to learn more about the details.
The first thing to consider is that MaxBase, usually, is not the starting point of your application.
Exception to the rule: It is a good thing to have MaxBase as the starting point of your application only if what you´re trying to do doesn´t involve multiple tables and if you don´t need to do much more than what MaxBase already does; in this case, you may be better off just creating some plugins to complement MaxBase API offerings and/or producing some VFD classes to be used in your forms.
If, however, you are creating a complex application that does several other things beside letting the user work with MaxBase, you probably want to use MaxBase as an object to which you can send commands and from which you can query results, but which is anyway not the fulcrum of your application. In this case you should create an object that instantiates one or more MaxBase instances and communicates with them when it needs to do so. Typically, in Effe-Elle System´s projects, we have a java.awt.Window that serves many purposes (eg. letting the user setting options or browsing some stats), and we implement in it the LPInterface interface, which allows us to coordinate all of the MaxBase instances (eg. connecting two tables).
But this is just the beginning -- often we need to customize how the user interacts with data, and therefore we need to create new VFD components. VFD components are small Java objects that can be put in forms using VFD (the Visual Form Designer, that ships with some predefined components); they are the workhorse of the application, because they can communicate with the main application (via LPInterface methods) and they can even veto the saving/modifying of records. Examples of VFD components: an ID code creator that creates unique IDs basing on other fields values, a java.awt.Choice representing currency names that updates the price value in another field, and so on. The advantages of creating VFD components are evident: you only need to write a small set of methods and you can re-use those components at will.
Finally, there is a number of MaxBase-related technologies that will help you write the remaining parts of your application: there are classes to print reports, to convert file formats, to connect to dbs without opening MaxBase instances.
Here you will find all of the MaxBase methods and properties that you can call/set/poll.
Class nrio.MaxBase
java.lang.Object | +----java.awt.Component | +----java.awt.Container | +----java.awt.Window | +----java.awt.Frame | +----nrio.MaxBase
public class MaxBase extends Frame implements ActionListener, WindowListener, ComponentListener
MaxBase, beside being a Java application, can be used also as a JavaBean or as a plain Java class to be reused in your programs; by letting the developer call one of its nearly fourty methods, MaxBase allows for deep and high-level customization of its features: it is by no means closed to third party modifications!
You may want, as an example, to use it inside an applet in order to let web users browse a database with a rich and effective GUI, or you may use it locally in your programs as an editor for dbs, adding only some custom features like (again, an example) pre-defined forms, automatic generation and printing of invoices, etc. By using an LPInterface object you can link together several instances of MaxBase, each one working in its own thread (multithreading and synchronization of the objects is handled automatically by Java and MaxBase).
Since MaxBase discends from java.awt.Frame, it makes sense to add features to it, instead of incorporating it into other objects, therefore you tipically have one object of type LPInterface (it may or may not be visible) that spawns one or more MaxBase instances (each one most likely having a set of customized menus and features) handling message traffic from and to the forementioned MaxBase instances.
Several methods require an index type. Here are all the valid values for such methods:
ISAM00 = ISAM indexing, duplicate and null values are allowed. ISAM11 = ISAM indexing, duplicate and null values are NOT allowed. ISAM10 = ISAM indexing, duplicate values are NOT allowed, null values are. ISAM01 = ISAM indexing, duplicate values are allowed, null values are NOT. B+TREE00 = B+TREE indexing, duplicate and null values are allowed. B+TREE11 = B+TREE indexing, duplicate and null values are NOT allowed. B+TREE10 = B+TREE indexing, duplicate values are NOT allowed, null values are. B+TREE01 = B+TREE indexing, duplicate values are allowed, null values are NOT. NONE0 = No indexing, null values are allowed. NONE1 = No indexing, null values are NOT allowed.
Other items that will be mentioned in this page are AMInterface, MBPluginFactory and LPInterface. In short, AMInterface is a custom add/modify/browse form that is not created with the Visual Form Designer (there may be times when you need something drastically different from a VFD form); LPInterface is an object that acts as a message dispatcher among several MaxBase instances; MBPluginFactory is an interface used when you need to add features to MaxBase.
APPLETMENUS Public constant that defines a precise subset of menus to be activated in MaxBase (the ones used when MaxBase is running inside a web browser). BROWSEMENUS Public constant that defines a precise subset of menus to be activated in MaxBase (the ones used when MaxBase is running inside a web browser, minus the record adding/modifying/deleting features). FULLMENUS Public constant that activates all of the menu voices (same as MaxBase when used as an application outside of a web browser). STATICDBMENUS Public constant that defines a precise subset of menus to be activated in MaxBase (same as FULLMENUS, minus the db login/logout and some other features).
MaxBase() Bare-bone constructor. MaxBase(MBAParam, URL) Constructor, typically used when MaxBase is launched from an applet. MaxBase(String, LPInterface, AMInterface) Constructor, typically used when MaxBase is launched from an application (not an applet).
addField(String, int, String, String) Adds a field to the currently loaded database. addMenuItems(String[]) Adds custom menu items to the MaxBase menus. dbinfo() Gets information about the fields of the currently loaded database. deleRec(String[], boolean) (Un)Deletes records from the database. delField(String) Deletes a field from the currently loaded database. deselectAll() Deselects all of the selected rows (only affects MaxBase in line view mode). disableMenuItems(String[]) Disables menu items. disconnect() Logs out from the currently loaded database. enableMenuItems(String[]) Enables menu items. externAddStore(String[][]) Used by objects implementing AMInterface: adds a record to the currently loaded database. externModiStore(String[][]) Used by objects implementing AMInterface: modifies a record of the currently loaded database. formView() Puts MaxBase in form view mode. getActiveDB() Returns the currently loaded database. getExternalAddModi() Returns (if present) the currently in use external add/modify/browse panel. getLpParent() Returns the object implementing LPInterface and controlling this MaxBase instance. getMBFilter() Returns the currently in use filter conditions. getPluginFactory() Returns the currently in use Plugin Factory (object that adds custom features to a MaxBase instance). isApplet() Gets information about MaxBase being used as an applet. isLineViewMode() Gets information about MaxBase being set in line view mode (as opposed to form view mode). isTipActive() Gets information about MaxBase tips being active. isToolBarVisible() Is the icon ToolBar currently being shown on screen? lineView() Puts MaxBase in line view mode. loadRecWithFilter(String, String, String, boolean, String) Gets a number of records from the currently loaded database. modifyFieldIndex(String, String) Modifies a field indexing strategy on-the-fly for the currently loaded database. modifyFieldLength(String, int) Modifies on-the-fly a field length for the currently loaded database. modifyFieldName(String, String) Modifies on-the-fly a field name for the currently loaded database. peekSelected() Returns the currently selected records (if any). refreshView() Forces a query refresh. saveFilter() Saves visualization options for the currently in use database table. selectAll() Selects all records (only works when MaxBase is in line view mode). setActiveDB(String) Logs in to a database. setCustomForm(String) Forces MaxBase to use a specific form (in form view, or for adding/modifying records). setExternalAddModi(AMInterface) Sets the external add/modify panel. setLpParent(LPInterface) Sets the controlling object (implementing LPInterface). setMaxBaseFields(boolean[], int[], int[]) Sets visual properties for all of the fields. setMenuLevel(int) Sets the menus to a specific and predefined level (some features enabled, some other disabled). setPluginFactory(MBPluginFactory) Sets the Plugin Factory (object implementing custom features). setQuery(String, int) Sets both the new filter conditions and the field on which the database must be ordered on. setTipActive(boolean) Enables or disables MaxBase tips. setToolBarVisible(boolean) Set this to false if you want to hide the icon ToolBar. shutDown() Closes all database activities.
FULLMENUS
public static final int FULLMENUS
Public constant to be used with the setMenuLevel(int) method, enabling all menu items.
STATICDBMENUS
public static final int STATICDBMENUS
Public constant to be used with the setMenuLevel(int) method, disabling the following menu items: New Login.. Logout Delete this DB DB structure Database and file utilities Form designer
APPLETMENUS
public static final int APPLETMENUS
Public constant to be used with the setMenuLevel(int) method, disabling the following menu items: New Login.. Logout Delete this DB DB structure Database and file utilities Form designer Add a plugin.. Remove plugins.. Save plugins information Load form
BROWSEMENUS
public static final int BROWSEMENUS
Public constant to be used with the setMenuLevel(int) method, disabling the following menu items: New Login.. Logout Delete this DB DB structure Database and file utilities Form designer Add a plugin.. Remove plugins.. Save plugins information Load form Add Modify Delete Pack DB
MaxBase
public MaxBase()
Bare-bone constructor. After this method, MaxBase will not be shown and no database will be loaded.
MaxBase
public MaxBase(String sDBName, LPInterface LP, AMInterface AM)
Constructor, typically used when MaxBase is launched from an application (not an applet).
Parameters:
sDBName is a string that represents a file or an URL (with the syntax mbase://host:port(password)). LP is an object of type LPInterface. AM is an object of type AMInterface.
MaxBase
public MaxBase(MBAParam m, URL main_url)
Constructor, typically used when MaxBase is launched from an applet. The main_url parameter tells MaxBase where to find icons for the images of the toolbar (you then need to create there a directory labeled nrio and unzip there the .gif files you find into the jar under the nrio directory).
addField
public void addField(String rTName, int rTLen, String rTSel, String alignment)
Adds a field to the currently loaded database. Parameters: rTName is the name of the field. rTLen is the length of the field. rTSel is the index type for this field. alignment is a string representing the alignment of this field in line view mode as it would be expressed in a Label (int), and can be one of Label.LEFT, Label.RIGHT, Label.CENTER. Basically, it is a string representing a number.
addMenuItems
public void addMenuItems(String s[])
Adds custom menu items to the MaxBase menus. Each string must be composed of three parts: The first is the menu on which to add this item (the string must be the same as the one shown on screen) The second is a character, "|" (the pipe), that allows MaxBase to divide the menu from the item The last one is the real menu item.
dbinfo
public String[][] dbinfo()
Gets information about the fields of the currently loaded database. The array returned exactly mimics the one returned by the JRXDbase method.
deleRec
public String deleRec(String sRecords[], boolean bDelete)
(Un)Deletes records from the database. The sRecords array must contain the database references, bDelete indicates whether we're deleting or undeleting items.
delField
public void delField(String fieldName)
Deletes a field from the currently loaded database.
deselectAll
public void deselectAll()
Deselects all of the selected rows (only affects MaxBase in line view mode).
disableMenuItems
public void disableMenuItems(String s[])
Selectively disables menu items; the array is composed by strings that exactly mimic the ones shown on the menus.
disconnect
public void disconnect()
Logs out from the currently loaded database.
enableMenuItems
public void enableMenuItems(String s[])
Selectively enables menu items; the array is composed by strings that exactly mimic the ones shown on the menus.
externAddStore
public void externAddStore(String sAddArr[][])
Used by objects implementing AMInterface: adds a record to the currently loaded database.
externModiStore
public void externModiStore(String sModiArr[][])
Used by objects implementing AMInterface: modifies a record of the currently loaded database.
Note: the [0][0] position of the array must be set to one of the MBIOComponent data entry result values (OK, STAY, ABORT, OKSTAY).
formView
public void formView()
Puts MaxBase in form view mode.
getActiveDB
public String getActiveDB()
Returns the currently loaded database. If the return string ends in ".dat", the database is local, otherwise it's in the form mbase://host.
getExternalAddModi
public AMInterface getExternalAddModi()
Returns (if present) the currently in use external add/modify/browse panel.
getLpParent
public LPInterface getLpParent()
Returns the object implementing LPInterface and controlling this MaxBase instance.
getMBFilter
public String getMBFilter()
Returns the currently in use filter conditions in one string.
getPluginFactory
public MBPluginFactory getPluginFactory()
Returns the currently in use Plugin Factory (object that adds custom features to a MaxBase instance).
isApplet
public boolean isApplet()
Gets information about MaxBase being used as an applet.
isLineViewMode
public boolean isLineViewMode()
Gets information about MaxBase being set in line view mode (as opposed to form view mode).
isTipActive
public boolean isTipActive()
Gets information about MaxBase tips being active.
isToolBarVisible
public boolean isToolBarVisible()
Returns true if the icon toolbar is being shown on screen.
lineView
public void lineView()
Puts MaxBase in line view mode.
loadRecWithFilter
public String[][] loadRecWithFilter(String sIdx, String sHowManyRec, String sStart, boolean bForward, String sFilt)
Gets a number of records from the currently loaded database. Parameters: sIdx is the index on which to order the data set, sHowManyRec indicates how many records to return (max.); you can specify "ALL". sStart is the record from which to start loading records. Valid values can be numeric or you can use the "LAST" keyword -- which means "start from the last record in the archive". sFilt is the filter to be used.
modifyFieldIndex
public void modifyFieldIndex(String fieldName, String newIndex)
Modifies a field indexing strategy on-the-fly for the currently loaded database.
modifyFieldLength
public void modifyFieldLength(String fieldName, int newLength)
Modifies on-the-fly a field length for the currently loaded database.
modifyFieldName
public void modifyFieldName(String oldName, String newName)
Modifies on-the-fly a field name for the currently loaded database.
peekSelected
public String[][] peekSelected()
Returns the currently selected records (if any) with the same data array as the loadrecwithfilter method (and yes, this means that in the [0][1]-th element you have the total number of records returned).
refreshView
public void refreshView()
Forces a query refresh.
saveFilter
public void saveFilter()
Saves information about colors and fonts used, active filter and ordering information for the currently in use database table. You should call this method before closing your application if you want MaxBase to reload those settings the next time you restart it (by default, MaxBase doesn´t save anything on exit if it is instantiated as an object).
selectAll
public void selectAll()
Selects all records (only works when MaxBase is in line view mode).
setActiveDB
public void setActiveDB(String dbName)
Logs in to a database, logging out from the current one (if a database is being accessed, of course). Parameter: dbName: the path of the database (if a local db), or its URL (if the db is on the network).
setCustomForm
public void setCustomForm(String s)
Forces MaxBase to use a specific form (in form view, or for adding/modifying records). The parameter string should be taken from a .mfr file (produced by the Visual Form Designer).
setExternalAddModi
public void setExternalAddModi(AMInterface ami)
Sets the external add/modify panel.
setLpParent
public void setLpParent(LPInterface lpi)
Sets the controlling object (implementing LPInterface).
setMaxBaseFields
public void setMaxBaseFields(boolean bVisible[], int iAlign[], int iField[])
Sets visual properties for all of the fields. ialign is a string array, where the array elements represent the alignment of the fields in line view mode as they would be expressed in a Label (int), and can be one of Label.LEFT, Label.RIGHT, Label.CENTER. Basically, they are strings representing numbers.
setMenuLevel
public void setMenuLevel(int mtype)
Sets the menus to a specific and predefined level (some features enabled, some other disabled). The constant representing the menu levels are specified right here in the MaxBase object. After you have set a specific menu level, you can still enable/disable specific menu items.
setPluginFactory
public void setPluginFactory(MBPluginFactory mbpf)
Sets the Plugin Factory (object implementing custom features).
setQuery
public void setQuery(String query, int orderby)
Sets both the new filter conditions and the field on which the database must be ordered on.
setTipActive
public void setTipActive(boolean active)
Enables or disables MaxBase tips.
setToolBarVisible
public void setToolBarVisible(boolean visible)
Enables or disables the MaxBase icon toolbar.
shutDown
public void shutDown()
Closes all database activities. |