| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| package sample.spellcheck.editor; |
| |
| import java.awt.BorderLayout; |
| import java.awt.Container; |
| import java.awt.Dimension; |
| import java.awt.GridLayout; |
| import java.awt.HeadlessException; |
| import java.awt.Toolkit; |
| import java.awt.event.ActionEvent; |
| import java.awt.event.ActionListener; |
| import java.awt.event.KeyEvent; |
| import java.io.File; |
| import java.io.IOException; |
| |
| import javax.swing.JEditorPane; |
| import javax.swing.JFrame; |
| import javax.swing.JMenu; |
| import javax.swing.JMenuBar; |
| import javax.swing.JMenuItem; |
| import javax.swing.JOptionPane; |
| import javax.swing.JScrollPane; |
| import javax.swing.KeyStroke; |
| import javax.swing.WindowConstants; |
| import javax.swing.event.HyperlinkEvent; |
| import javax.swing.event.HyperlinkListener; |
| |
| /** |
| * class sample.google.spellcheck.SuggestionForm |
| * This is the implementation of the GUI |
| */ |
| public class SuggestionForm extends javax.swing.JFrame implements HyperlinkListener { |
| private AsyncPanel asyncPanel; |
| private SyncPanel syncPanel; |
| private JEditorPane helpDisplayPane; |
| |
| private JMenuItem syncMenuItem; |
| private JMenuItem asyncMenuItem; |
| private static final String HELP_FILE_NAME = "/docs/GoogleSpellCheck.html"; |
| |
| |
| public SuggestionForm() throws HeadlessException { |
| asyncPanel = new AsyncPanel(); |
| syncPanel = new SyncPanel(); |
| |
| JMenuBar menuBar; |
| //Create the menu bar. |
| menuBar = new JMenuBar(); |
| |
| JMenu modeMenu = new JMenu("Mode"); |
| modeMenu.setMnemonic(KeyEvent.VK_M); |
| syncMenuItem = new JMenuItem("Sync Mode", KeyEvent.VK_S); |
| syncMenuItem.setAccelerator( |
| KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK)); |
| syncMenuItem.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent e) { |
| setSyncPanel(); |
| } |
| }); |
| asyncMenuItem = new JMenuItem("ASync Mode", KeyEvent.VK_A); |
| asyncMenuItem.setAccelerator( |
| KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK)); |
| asyncMenuItem.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent e) { |
| setAsyncPanel(); |
| } |
| }); |
| modeMenu.add(syncMenuItem); |
| modeMenu.add(asyncMenuItem); |
| |
| JMenu clearMenu = new JMenu("Clear"); |
| clearMenu.setMnemonic(KeyEvent.VK_C); |
| JMenuItem clearMenuItem = new JMenuItem("Clear text boxes"); |
| clearMenuItem.setAccelerator( |
| KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); |
| clearMenuItem.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent e) { |
| asyncPanel.clear(); |
| syncPanel.clear(); |
| } |
| }); |
| clearMenu.add(clearMenuItem); |
| |
| JMenu helpMenu = new JMenu("Help"); |
| JMenuItem mnuItemHelp = new JMenuItem("Show Help"); |
| helpMenu.add(mnuItemHelp); |
| |
| mnuItemHelp.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent e) { |
| showHelp(); |
| } |
| }); |
| |
| menuBar.add(modeMenu); |
| menuBar.add(clearMenu); |
| menuBar.add(helpMenu); |
| |
| this.setJMenuBar(menuBar); |
| |
| this.getContentPane().setLayout(new GridLayout(1, 1)); |
| setAsyncPanel(); |
| |
| |
| } |
| |
| public static void main(String[] args) { |
| SuggestionForm form = new SuggestionForm(); |
| Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); |
| form.setLocation(screenSize.width / 4, |
| screenSize.height / 4); |
| form.setSize(screenSize.width / 2, screenSize.height / 2); |
| form.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); |
| //form.setResizable(false); |
| //form.pack(); |
| form.setVisible(true); |
| } |
| |
| private void setAsyncPanel() { |
| this.getContentPane().removeAll(); |
| this.getContentPane().add(asyncPanel); |
| this.syncMenuItem.setEnabled(true); |
| this.asyncMenuItem.setEnabled(false); |
| this.getContentPane().repaint(); |
| this.setTitle("Google Spell checker - Async Mode"); |
| this.setVisible(true); |
| |
| } |
| |
| private void setSyncPanel() { |
| this.getContentPane().removeAll(); |
| this.getContentPane().add(syncPanel); |
| this.syncMenuItem.setEnabled(false); |
| this.asyncMenuItem.setEnabled(true); |
| this.getContentPane().repaint(); |
| this.setTitle("Google Spell checker - Sync Mode"); |
| this.setVisible(true); |
| } |
| |
| /** |
| * method showHelp |
| */ |
| private void showHelp() { |
| |
| JFrame frame = new JFrame(); |
| Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); |
| frame.setLocation(screenSize.width / 5, |
| screenSize.height / 5); |
| frame.setSize(screenSize.width / 2, screenSize.height / 2); |
| |
| BorderLayout layout = new BorderLayout(); |
| |
| JScrollPane jsp; |
| |
| |
| helpDisplayPane = new JEditorPane(); |
| helpDisplayPane.addHyperlinkListener(this); |
| helpDisplayPane.setEditable(false); |
| helpDisplayPane.setContentType("text/html"); |
| |
| jsp = new JScrollPane(helpDisplayPane); |
| |
| Container contentPane = frame.getContentPane(); |
| contentPane.setLayout(layout); |
| contentPane.add(jsp, BorderLayout.CENTER); |
| String helpDoc = System.getProperty("user.dir") + HELP_FILE_NAME; |
| |
| try { |
| helpDisplayPane.setPage(new File(helpDoc).toURL()); |
| } catch (IOException e) { |
| JOptionPane.showMessageDialog(this, "Help file not detected", "Help file error", |
| JOptionPane.ERROR_MESSAGE); |
| return; |
| } |
| frame.setVisible(true); |
| } |
| |
| |
| public void hyperlinkUpdate(HyperlinkEvent e) { |
| if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { |
| try { |
| String url = e.getURL().toString(); |
| helpDisplayPane.setPage(url); |
| } catch (Exception err) { |
| JOptionPane.showMessageDialog(this, "Help file not detected", err.getMessage(), |
| JOptionPane.ERROR_MESSAGE); |
| } |
| |
| } |
| } |
| } |