Rolodex Function Diagram

Rolodex Function Diagram


This file contains the function diagram for the Rolodex Tool. The notation is a simplified textual version of the standard function diagramming style discussed in the design diagram handout. The function calling hierarchy is shown by indenting called functions to the right. E.g., near the top of the main function diagram, main calls RolodexTool (the constructor), which in turn calls Rolodex, which in turn calls CardList.

The function diagram is shown in two major sections:

Functions invoked directly from main have their names printed in blue in the diagram. If one looks in the Java code for function main, the blue-colored functions are called directly from there. Function names shown in black type in the diagram are subsidiary functions invoked by the functions called directly from main.

The functions invoked from main perform the following principle processing:

Following the main function diagram is the event-based section of the function diagram.

main
 |
 |-- Screen
 |
 |-- RolodexTool
 |----- File
 |----- Edit
 |----- Rolodex
 |--------- CardList
 |--------- AddInputErrors
 |--------- DeleteInputErrors
 |--------- ChangeInputErrors
 |
 |-- RolodexMenuUI
 |----- super (= View)
 |----- JMenuBar
 |----- FileMenu
 |--------- super (= View)
 |--------- JMenu
 |----- Editmenu
 |--------- super (= View)
 |--------- JMenu
 |----- RolodexMenu
 |--------- super (= View)
 |--------- JMenu
 |
 |----- constructDialogs
 |--------- AddCardDialog
 |------------- super (= View)
 |------------- JTextField
 |------------- AddCardButtons
 |----------------- super
 |----------------- JButton
 |----------------- OKAddButtonListener
 |----------------- ClearAddButtonListener
 |----------------- CancelAddButtonListener
 |------------- Box
 |
 |--------- DeleteCardDialog
 |------------- super (= View)
 |------------- JTextField
 |------------- OKDeleteButtonListener
 |------------- CancelDeleteButtonListener
 |------------- Box
 |
 |--------- ConfirmChangeDialog
 |------------- super (= AddCardDialog)
 |------------- ConfirmChangeButtons
 |----------------- super (= AddCardButtons)
 |----------------- OKConfirmChangeButtonListener
 |
 |--------- ChangeCardDialog
 |------------- super
 |------------- JTextField
 |------------- OKChangeButtonListener
 |------------- CancelChangeButtonListener
 |------------- Box
 |
 |--------- FoundCardsDialog
 |------------- super
 |------------- JLabel
 |------------- JLabel.setAlignment
 |------------- JTextField
 |------------- FoundCardButtons
 |------------- Box
 |
 |--------- FindCardDialog
 |------------- super
 |------------- JTextField
 |------------- OKFindButtonListener
 |------------- CancelFindButtonListener
 |------------- Box
 |
 |--------- NoFoundCardsDialog
 |------------- super (= View)
 |------------- Box
 |
 |--------- ErrorMessageDialog
 |------------- super (= View)
 |------------- JLabel[]
 |------------- Box
 |
 |--------- EmptyDialog
 |------------- JPanel
 |
 |-- RolodexMenuUI.compose
 |----- mvp.Window
 |----- composeMenuBar
 |--------- composeFileMenu
 |------------- FileMenu.compose
 |----------------- JMenuItem
 |----------------- ActionListener
 |----------------- JMenuItem.addActionListener
 |----------------- JMenu.add
 |--------- composeEditMenu
 |------------- EditMenu.compose
 |----------------- JMenuItem
 |----------------- ActionListener
 |----------------- JMenuItem.addActionListener
 |----------------- JMenu.add
 |--------- composeRolodexMenu
 |------------- RolodexMenu.compose
 |----------------- JMenuItem
 |----------------- ActionListener
 |----------------- JMenuItem.addActionListener
 |----------------- JMenu.add
 |
 |----- mvp.Window.setJMenuBar
 |----- mvp.Window.composeDataArea
 |--------- JLayeredPane
 |--------- Dimension
 |--------- JLayeredPane.setPreferredSize
 |--------- composeDialogs
 |------------- composeAndInsert
 |----------------- View.compose, dispatches to -->
 |
 |--------------------- AddCardDialog.compose
 |------------------------- JPanel
 |------------------------- JPanel.setOpaque
 |------------------------- JPanel.add
 |------------------------- Box.createVerticalStrut
 |------------------------- Box.add
 |------------------------- JLabel
 |------------------------- setAlignmentX
 |------------------------- setFont
 |------------------------- setForeground
 |------------------------- composeLabels
 |----------------------------- Box.createVerticalStrut
 |----------------------------- Box.add
 |----------------------------- addLabel
 |--------------------------------- Box.createVerticalGlue
 |--------------------------------- Box.add
 |--------------------------------- JLabel
 |--------------------------------- JLabel.setAlignmentX
 |--------------------------------- JLabel.setFont
 |--------------------------------- JLabel.setForeground
 |------------------------- composeTextFields
 |----------------------------- Box.createVerticalStrut
 |----------------------------- Box.add
 |------------------------- composePair
 |----------------------------- Box.createHorizontalStrut
 |----------------------------- Box.add
 |------------------------- AddCardButtons.compose
 |----------------------------- Box
 |----------------------------- Box.createHorizontalStrut
 |----------------------------- Box.add
 |----------------------------- JButton.addActionListener
 |------------------------- AddCardButtons.getWidget
 |
 |--------------------- DeleteCardDialog.compose
 |------------------------- JPanel
 |------------------------- JPanel.setOpaque
 |------------------------- JPanel.add
 |------------------------- Box.createVerticalStrut
 |------------------------- Box.add
 |------------------------- JLabel
 |------------------------- setAlignmentX
 |------------------------- setFont
 |------------------------- setForeground
 |------------------------- composeButtons
 |----------------------------- Box
 |----------------------------- Box.createHorizontalStrut
 |----------------------------- Box.add
 |----------------------------- JButton.addActionListener
 |
 |--------------------- ChangeCardDialog.compose
 |------------------------- JPanel
 |------------------------- JPanel.setOpaque
 |------------------------- JPanel.add
 |------------------------- Box.createVerticalStrut
 |------------------------- Box.add
 |------------------------- JLabel
 |------------------------- setAlignmentX
 |------------------------- setFont
 |------------------------- setForeground
 |------------------------- composeButtons
 |----------------------------- Box
 |----------------------------- Box.createHorizontalStrut
 |----------------------------- Box.add
 |----------------------------- JButton.addActionListener
 |
 |--------------------- ConfirmChangeDialog.compose
 |------------------------- super.compose (= AddCardDialog)
 |------------------------- JLabel.setText
 |
 |--------------------- FoundCardsDialog.compose
 |------------------------- JPanel
 |------------------------- JPanel.setOpaque
 |------------------------- JPanel.add
 |------------------------- Box.createVerticalStrut
 |------------------------- Box.add
 |------------------------- composeTopMessages
 |----------------------------- Box.add
 |----------------------------- JLabel
 |----------------------------- setLabelProerties
 |--------------------------------- setAlignmentX
 |--------------------------------- setFont
 |--------------------------------- setForeground
 |------------------------- composeLabels
 |----------------------------- Box.createVerticalStrut
 |----------------------------- Box.add
 |----------------------------- addLabel
 |--------------------------------- Box.createVerticalGlue
 |--------------------------------- Box.add
 |--------------------------------- JLabel
 |--------------------------------- JLabel.setAlignmentX
 |--------------------------------- JLabel.setFont
 |--------------------------------- JLabel.setForeground
 |------------------------- composeTextFields
 |----------------------------- Box.createVerticalStrut
 |----------------------------- Box.add
 |------------------------- composePair
 |----------------------------- Box.createHorizontalStrut
 |----------------------------- Box.add
 |------------------------- FoundCardsButtons.compose
 |----------------------------- Box
 |----------------------------- Box.createHorizontalStrut
 |----------------------------- Box.add
 |----------------------------- JButton.addActionListener
 |------------------------- FoundCardsButtons.getWidget
 |
 |--------------------- FindCardDialog.compose
 |------------------------- JPanel
 |------------------------- JPanel.setOpaque
 |------------------------- JPanel.add
 |------------------------- Box.createVerticalStrut
 |------------------------- Box.add
 |------------------------- JLabel
 |------------------------- setAlignmentX
 |------------------------- setFont
 |------------------------- setForeground
 |------------------------- composeButtons
 |----------------------------- Box
 |----------------------------- Box.createHorizontalStrut
 |----------------------------- Box.add
 |----------------------------- JButton.addActionListener
 |
 |--------------------- NoCardsFoundDialog.compose
 |------------------------- JPanel
 |------------------------- JPanel.setOpaque
 |------------------------- JPanel.add
 |------------------------- Box.createVerticalStrut
 |------------------------- Box.add
 |------------------------- JLabel
 |------------------------- setAlignmentX
 |------------------------- setFont
 |------------------------- setForeground
 |
 |--------------------- ErrorDialog.compose
 |------------------------- JPanel
 |------------------------- JPanel.setOpaque
 |------------------------- JPanel.add
 |------------------------- Box.createVerticalStrut
 |------------------------- Box.add
 |------------------------- JLabel
 |------------------------- setAlignmentX
 |------------------------- setFont
 |------------------------- setForeground
 |--------------------- EmptyDialog.compose
 |------------------------- JPanel.setOpaque1
 |----------------- View.getWidget
 |----------------- mvp.Widget.setBounds
 |----------------- JLayeredPane.add
 |
 |----- mvp.Window.getContentPane
 |----- Container.add
 |----- RolodexMenuUI.showEmptyDialog
 |--------- EmptyDialog.getWidget
 |--------- JLayeredPane.moveToFront
 |----- mvp.Window.setTitle
 |----- mvp.Window.pack
 |
 |-- RolodexTool.setView
 |
 |-- RolodexMenuUI.show

The following functions are all triggered by a left-mouse-up event on a menu item or push button. The double vertical line along the left of the diagram indicates event-based invocation, per the diagramming conventions discussed in the design diagram handout. The function names shown in red are those invoked directly by an event. The indented function names in black are subsidiary functions called from the event-invoked functions. All event-based invocation happens after the main thread has terminated.

||-- ("File New" JMenuItem).actionPerformed
||----- FileStub.newFile
||--------- System.out.println
||
||-- ("File Open" JMenuItem).actionPerformed
||----- FileStub.open
||--------- System.out.println
||
||-- ("File Save" JMenuItem).actionPerformed
||----- FileStub.save
||--------- System.out.println
||
||-- ("File Save As" JMenuItem).actionPerformed
||----- FileStub.saveAs
||--------- System.out.println
||
||-- ("File Print" JMenuItem).actionPerformed
||----- FileStub.print
||--------- System.out.println
||
||-- ("File Exit" JMenuItem).actionPerformed
||----- FileStub.exit
||--------- System.out.println
||
||
||-- ("Edit Undo" JMenuItem).actionPerformed
||----- EditStub.undo
||--------- System.out.println
||
||-- ("Edit Cut" JMenuItem).actionPerformed
||----- EditStub.cut
||--------- System.out.println
||
||-- ("Edit Copy" JMenuItem).actionPerformed
||----- EditStub.copy
||--------- System.out.println
||
||-- ("Edit Paste" JMenuItem).actionPerformed
||----- EditStub.paste
||--------- System.out.println
||
||
||-- ("Rolodex Add" JMenuItem).actionPerformed
||----- RolodexMenuUI.showAddCardDialog
||--------- AddCardDialog.getWidget
||--------- JLayeredPane.moveToFront
||
||-- ("Rolodex Delete" JMenuItem).actionPerformed
||----- RolodexMenuUI.showDeleteCardDialog
||--------- DeleteCardDialog.getWidget
||-------- JLayeredPane.moveToFront
||
||-- ("Rolodex Change" JMenuItem).actionPerformed
||----- RolodexMenuUI.showChangeCardDialog
||--------- ChangeCardDialog.getWidget
||--------- JLayeredPane.moveToFront
||
||-- ("Rolodex Find" JMenuItem).actionPerformed
||----- RolodexMenuUI.showFindCardDialog
||--------- FindCardDialog.getWidget
||--------- JLayeredPane.moveToFront
||
||
||-- OKAddButtonListener.actionPerformed
||----- AddCardDialog.getName
||--------- JTextField.getText
||----- Name
||----- AddCardDialog.getId
||--------- JTextField.getText
||--------- Integer
||--------- NumberFormatException
||----- Id
||----- AddCardDialog.getAge
||--------- JTextField.getText
||--------- Integer
||--------- NumberFormatException
||----- Age
||----- AddCardDialog.getSex
||--------- JTextField.getText
||----- Sex
||----- AddCardDialog.getAddress
||--------- JTextField.getText
||----- Address
||----- Card
||----- Rolodex.add
||--------- AddInputErrors.clear
||--------- Card.getId
||--------- Roldex.find
||--------- AddInputErrors.setAlreadyThereError
||--------- validateAddInput
||------------- Card.getName.stringValue.length
||------------- AddInputErrors.setNameError
||------------- Card.getId.integerValue.intValue
||------------- AddInputErrors.setIdError
||------------- Card.getAge.integerValue.intValue
||------------- AddInputErrors.setAgeError
||------------- Card.getSex.isValid
||------------- AddInputErrors.setSexError
||------------- Card.getAddr.stringValue.length
||------------- AddInputErrors.setAddressError
||--------- AddInputErrors.anyErrors.booleanValue
||--------- CardList.add
||----- AddInputErrors
||----- AddInputErrors.getErrorList
||----- RolodexMenuUI.showErrorDialog
||--------- ErrorMessageDialog.clearMessages
||--------- ErrorMessageDialog.setMessages
||------------- StringList.iterator
||------------- Iterator.hasNext
||------------- Iterator.next
||------------- setMessage
||----------------- JLabel.setText
||--------- ErrorMessageDialog.getWidget
||--------- JLayeredPane.moveToFront
||
||-- ClearAddButtonListener
||----- AddCardDialog.clear
||--------- JTextField.setText
||
||-- CancelAddButtonListener
||----- RolodexMenuUI.showEmptyDialog
||
||-- OKDeleteButtonListener.actionPerformed
||----- DeleteCardDialog.getId
||--------- JTextField.getText
||--------- Integer
||--------- NumberFormatException
||----- Id
||----- Rolodex.delete
||----- DeleteInputError
||----- DeleteInputError.getNotThereErrorMessage
||----- RolodexMenuUI.showErrorDialog
||
||-- CancelDeleteButtonListener
||----- RolodexMenuUI.showEmptyDialog
||
||-- OKChangeButtonListener.actionPerformed
||----- ChangeCardDialog.getId
||--------- JTextField.getText
||----- Id
||----- Rolodex.find
||----- DeleteInputError
||----- DeleteInputError.getNotThereErrorMessage
||----- RolodexMenuUI.showConfirmChangeDialog
||--------- ConfirmChangeDialog.getWidget
||--------- JLayeredPane.moveToFront
||----- ConfirmChangeDialog.showCardAndSaveId
||--------- Card.getName
||--------- Name.stringValue
||--------- Card.getId
||--------- Id.stringValue
||--------- Card.getAge
||--------- Age.stringValue
||--------- Card.getSex
||--------- Sex.stringValue
||--------- Card.getAddress
||--------- Address.stringValue
||--------- JTextField.setText
||
||-- CancelChangeButtonListener
||----- RolodexMenuUI.showEmptyDialog
||
||-- OKConfirmChangeListener.actionPerformed
||----- ConfirmChangeDialog.getName
||--------- JTextField.getText
||----- Name
||----- ConfirmChangeDialog.getId
||--------- JTextField.getText
||--------- Integer
||--------- NumberFormatException
||----- Id
||----- ConfirmChangeDialog.getAge
||--------- JTextField.getText
||--------- Integer
||--------- NumberFormatException
||----- Age
||----- ConfirmChangeDialog.getSex
||--------- JTextField.getText
||----- Sex
||----- ConfirmChangeDialog.getAddress
||--------- JTextField.getText
||----- Address
||----- Card
||----- Rolodex.change
||----- ChangeInputErrors
||----- ChangeInputErrors.getErrorList
||----- AddInputErrors
||----- AddInputErrors.getErrorList
||----- RolodexMenuUI.showErrorDialog
||
||-- OKFindButtonListener.actionPerformed
||----- CardList
||----- FindCardDialog.getName
||--------- JTextField.getText
||----- Name
||----- Rolodex.find
||----- CardList.size
||----- RolodexMenuUI.showNoFoundDialog
||--------- NoCardsFoundDialog.getWidget
||--------- JLayeredPane.moveToFront
||----- RolodexMenuUI.showFoundDialog
||--------- FoundCardsDialog.getWidget
||--------- JLayeredPane.moveToFront
||----- FoundCardsDialog.showResults
||--------- CardList.size
||--------- setNextPrevEnabled
||------------- JButton.setEnabled
||--------- showNumberOfCards
||------------- Integer.toString
||------------- JLabel.setText
||--------- next
||------------- CardList.size
||------------- showWhichChard
||------------- CardList.get
||------------- showCardData
||----------------- Card.getName
||----------------- Name.stringValue
||----------------- Card.getId
||----------------- Id.stringValue
||----------------- Card.getAge
||----------------- Age.stringValue
||----------------- Card.getSex
||----------------- Sex.stringValue
||----------------- Card.getAddress
||----------------- Address.stringValue
||----------------- JTextField.setText
||
||-- CancelFindButtonListener
||----- RolodexMenuUI.showEmptyDialog
||
||-- NextCardButtonListener.actionPerformed
||----- FoundCardsDialog.next
||
||-- PreviousCardButtonListener.actionPerformed
||----- FoundCardsDialog.previous
||--------- showWhichChard
||--------- CardList.get
||--------- showCardData
||
||-- DoneFindButtonListener.actionPerformed
||----- RolodexMenuUI.showEmptyDialog