RANDOM TECH BUZZ-PHRASE GENERATOR Everyone knows how important it is in your future careers to get financial backing for your engineering ideas. The biggest key to making venture capitalists beg you to take their money is a good project name. The project name can't be too long, but has to be catchy and have all the latest buzz-words incorporated. To help you in the future, we are going to build a buzz-phrase generator. The buzz-phrase generator should create sets of three words chosen randomly from one of three word pools. The buzz-phrase GUI should consist of a main window (JFrame) which displays the randomly generated buzz-phrase in a JLabel. There should also be two buttons, one of which prints a histogram (described further below) and one that generates a new buzz-phrase. Finally there should be a text entry field (JtextField) that allows the user to input new words into the word pools. The entry field should be 10 columns wide. A suggested layout for a 175 x 135 panel would be: +=====================================================+ | +===================+ | | | Make new phrase | | | +===================+ | | | | Distributed Client/Server Computing | | | | +===================+ | | | Print Histogram | | | +===================+ | | | | Enter new Word: | | +==================================+ | | | | | | +==================================+ | +=====================================================+ Pushing the "Make new phrase" button causes a random word to be chosen from each of the word pools. The first word comes from pool 1, the second from pool 2 and the third from pool 3. Each word pool has a histogram associated with it. The histogram simply counts how many times a each word in the word pool has been used. Each of the words should be concatenated together and then displayed in the JLabel as shown by the phrase: "Distributed Client/Server Computing" in the example screen above. The JLabel should display: Nada Nada Nada prior the user pressing the Make new phrase button for the first time. Pushing the Print Histogram button causes each word pool to print its associated histogram. For each word in the word pool, the word should be printed on a separate line along with an asterisk for each time the word was used. Each word pool's histogram should be prefaced with a line that identifies whether it is word pool 1, 2 or 3. A sample output is shown below: Histogram for word list 1 Distributed |* Integrated |** Quantum |*** Fred |*** Histogram for word list 2 Client/Server |*** Enterprise |*** User-Centered |** Bob |* Histogram for word list 3 Computing |** System |*** Application |* Optimization |** Sally |* This output is printed to standard out (System.out) Entering a word in the word entry field allows you to add one additional word to a word pool. The word entered should be assigned to the first word pool that can accept it. Each word pool has a final entry that is an empty string. You should replace that empty string with the word entered by the user. After all three word pools are full, you should ignore any other text entry events. You should signal the user by resetting the entry field text to the empty string ("") if the word was accepted, but leaving the old word there if the word pools are full. A typical scenario might be: The user starts up the application. The GUI makes all its components and then displays them. The user then enters a text string. The GUI then asks word pool 1 if it can add a new word. If true, the GUI asks word pool 1 to add the new word. If the answer is false, it then proceeds to ask the same things of word pool's 2 and 3. If all the word pools answer false, then the word is ignored. The user then presses the "Make New Phrase" button. The GUI asks each of the 3 word pools to provide a randomly chosen word. As each word pool returns the word, it asks its associated histogram data to record the word use. The words are concatenated and displayed in the JLabel. The user then presses the Print histogram button. The GUI asks each of the 3 word pools to print its histogram. The word pools print thier list number and then for each word in the word pool, it prints the word, a vertical bar and then asks the histogram to print the asterisks representing the usage for that word. This continues for all the words in the word list. Place your main routine in BuzzPhraseGUI. The main method should only have 2 lines. One that constructs the BuzzPhraseGUI object and one that displays the GUI. Use the following word pool lists: word list 1 {"Distributed", "Quantum", "Integrated","Net-Enabled", "Parallel","Synchronized",""} word list 2 {"Client/Server", "Enterprise", "User-Centered","Wireless","Digital","Enabled","Incremental",""} word list 3 {"Computing","System","Application","Optimization", "Hardware",""} TURN-IN: WordPool.java HistogramData.java BuzzPhraseGUI.java