"Your user interface should be designed with the expectation of future functionality enhancements, and it should establish a framework that will support this with minimal disruption to the users when this occurs."
My GUI has a JTable, above the Name and Location JTextFields and a SearchButton and below the table a JTextField for the customer id and next to it the BookButton.
Carlo Spelgatti<br />Dipl. Informatik Ing. ETH / SCJP / SCJD<br />Ch�ngengass 3<br />8805 Richterswil<br /> <br />P: 044 793 10 50<br />M: 078 698 07 92<br />ICQ: 401810960
I interpreted that as to being able to easily add new functions to the user interface.
So I put all buttons on a JToolBar with Actions to launch them, created a JMenuBar using those same actions, and used abstract base classes for the search dialog content placed as a decorator into the actual dialog itself (which is a framework relegating actions to the panel containing the actual fields) so it can be easily swapped out for another one that has more functionality (like allowing searching on other fields, or different search algorithms).
Different search algorithms are implemented at database level in easily extensible way.
Adding methods to for example modify records instead of booking them would require just a new dialog box and adding a toolbar button and/or menu option.
I'm even considering placing the menu and/or toolbar into classes external to the main window so that they can be swapped out, determining which class to actually load would then depend on a setting in the config file only, requiring no code changes.