Package views

Source Code of views.Gui

package views;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.IOException;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.KeyStroke;

import application.Application;

import model.Model;


public class Gui extends JFrame  implements PropertyChangeListener {
 
  //--------------------------------------------------------------------
  // Members

  private Model model;

  public String regExFilePath = null;
  public String textFilePath = null;
 
  private FileManager fileManager = null;
  private ResultPanel resultPanel;
  private CreationPanel creationPanel;
  private RegExTextPanel regExTextPanel;
  private TextPanel textPanel;
  private RegExTreePanel regExTreePanel;
  private ExportPanel exportPanel;
  private JTabbedPane jTabbedPane = null;
  private JSplitPane jSplitPane = null;
  private JSplitPane jSplitPaneText = null;
  private JPanel jPanel = null;
  private JMenuBar jMenuBar = null;
  private JMenu jMenuFile = null;
  private JMenu jMenuRegEx = null;
  private JMenu jMenuHelp = null;
  private JMenu jMenuView = null;
  private JMenuItem jAbout = null;
  private JMenuItem jHelpItem = null;
  private JMenuItem jOpenRegEx = null;
  private JMenuItem jSaveRegEx = null;
  private JMenuItem jOpenText = null;
  private JMenuItem jSaveText = null;
  private JMenuItem jExit = null;
  private JMenuItem jOptions = null;
  private JMenuItem jApplyRegEx = null;
  private JMenuItem jUndo = null;
  private JMenuItem jRedo = null;
  private JRadioButtonMenuItem jGenerate = null;
  private JRadioButtonMenuItem jLearn = null;
  private JRadioButtonMenuItem jResult = null;
  private JRadioButtonMenuItem jExport = null;
 
  public Model getModel()
  {
    return model;
  }

 
 
  //  --------------------------------------------------------------------
  // Construction methods
  public Gui() {
   
    // first generate the model
    model = new Model(Application.settings.getUndoLevel());
    model.addPropertyChangeListener(this);
   
    //then add these views to this Frame
    fileManager = new FileManager(model,Application.settings.getLastPath());
    initialize();
  }
 
  private void initialize() {
        this.setSize(new java.awt.Dimension(800,600));
        this.setIconImage(new ImageIcon(this.getClass().getClassLoader().getResource("images/logo_gtl.png")).getImage());
        this.setJMenuBar(getjMenuBar());
        this.setContentPane(getJSplitPane());
        this.setDefaultCloseOperation(javax.swing.JFrame.DO_NOTHING_ON_CLOSE);
        this.setTitle("GTLRegEx");
        this.addWindowListener(new java.awt.event.WindowAdapter() {
          public void windowClosing(java.awt.event.WindowEvent e) {
            onExit();
          }
        });
        this.initFrameSize();
  }
 
  private void initFrameSize() {
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    int xwin = getSize().width;
    int ywin = getSize().height;
    setBounds((screenSize.width-xwin)/2,(screenSize.height-ywin)/2,xwin,ywin);
  }
 
  /**
   * Method called on exit to perform the last operations
   * Allows user to cancel the exit process
   */
  public void onExit() {
    if (!askToSave() && Application.settings.hidePanel()) {
      if(this.fileManager.getDefaultPath()!= null)
        Application.settings.setLastPath(this.fileManager.getDefaultPath());
      Application.settings.save();
      Application.exit();
    }
  }
 
  /**
   * This method checks whehther or not files have been saved
   * and allow the user to cancel its choice of exiting
   * @return boolean to abort
   */
  private boolean askToSave() {
    if(Application.settings.getAskForSave()) {
      boolean abort = false;
      if (model.isRegExModified()) {
        fileManager.setFileType("rgx");
        abort = fileManager.askToSave();
      }
      if (model.isTextModified() && !abort) {
        fileManager.setFileType("txt");
        abort = fileManager.askToSave();
      }
      return abort;
    }
    return false;
  }
 
  //--------------------------------------------------------------------
  // Menus
 
  /**
   * This method initializes jSplitPane 
   *  
   * @return javax.swing.JSplitPane 
   */
  private JSplitPane getJSplitPane() {
    if (jSplitPane == null) {
      jSplitPane = new JSplitPane();
      jSplitPane.setDividerSize(5);
      jSplitPane.setContinuousLayout(true);
      jSplitPane.setOneTouchExpandable(true);
      jSplitPane.setLeftComponent(getJPanel());
      jSplitPane.setRightComponent(getJTabbedPane());
    }
    return jSplitPane;
 
 
  /**
   * This method initializes jMenuBar 
   *  
   * @return javax.swing.JMenuBar 
   */
  private JMenuBar getjMenuBar() {
    if (jMenuBar == null) {
      jMenuBar = new JMenuBar();
      jMenuBar.add(getJMenuFile());
      jMenuBar.add(getJMenuRegEx());
      jMenuBar.add(getJMenuView());
      jMenuBar.add(getJMenuHelp());
    }
    return jMenuBar;
  }
 
  /**
   * This method initializes jMenuFile 
   *  
   * @return javax.swing.JMenu 
   */
  private JMenu getJMenuFile() {
    if (jMenuFile == null) {
      jMenuFile = new JMenu();
      jMenuFile.setText(Application.messages.getString("MENU_FILE"));
      jMenuFile.add(getJOpenRegEx());
      jMenuFile.add(getJSaveRegEx());
      jMenuFile.addSeparator();
      jMenuFile.add(getJOpenText());
      jMenuFile.add(getJSaveText());
      jMenuFile.addSeparator();
      jMenuFile.add(getJOptions());
      jMenuFile.addSeparator();
      jMenuFile.add(getJExit());
    }
    return jMenuFile;
  }
 
  /**
   * This method initializes jOpenRegEx 
   *  
   * @return javax.swing.JMenuItem 
   */
  private JMenuItem getJOpenRegEx() {
    if (jOpenRegEx == null) {
      jOpenRegEx = new JMenuItem();
      jOpenRegEx.setIcon(new ImageIcon(this.getClass().getClassLoader().getResource("images/folder_open.png")));
      jOpenRegEx.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK));
      jOpenRegEx.setText(Application.messages.getString("MENU_OPEN_REGEX"));
      jOpenRegEx.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          openFile(".rgx");
        }
      });
    }
    return jOpenRegEx;
  }

  /**
   * This method initializes jSaveRegEx 
   *  
   * @return javax.swing.JMenuItem 
   */
  private JMenuItem getJSaveRegEx() {
    if (jSaveRegEx == null) {
      jSaveRegEx = new JMenuItem();
      jSaveRegEx.setIcon(new ImageIcon(this.getClass().getClassLoader().getResource("images/save.png")));
      jSaveRegEx.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK));
      jSaveRegEx.setText(Application.messages.getString("MENU_SAVE_REGEX"));
      jSaveRegEx.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          saveFile(".rgx");
        }
      });
    }
    return jSaveRegEx;
  }

  /**
   * This method initializes jOpenText 
   *  
   * @return javax.swing.JMenuItem 
   */
  private JMenuItem getJOpenText() {
    if (jOpenText == null) {
      jOpenText = new JMenuItem();
      jOpenText.setIcon(new ImageIcon(this.getClass().getClassLoader().getResource("images/folder_open.png")));
      jOpenText.setText(Application.messages.getString("MENU_OPEN_TEXT"));
      jOpenText.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK|KeyEvent.SHIFT_MASK));
      jOpenText.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          openFile(".txt");
        }
      });
    }
    return jOpenText;
  }

  /**
   * This method initializes jSaveText 
   *  
   * @return javax.swing.JMenuItem 
   */
  private JMenuItem getJSaveText() {
    if (jSaveText == null) {
      jSaveText = new JMenuItem();
      jSaveText.setIcon(new ImageIcon(this.getClass().getClassLoader().getResource("images/save.png")));
      jSaveText.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK|KeyEvent.SHIFT_MASK));
      jSaveText.setText(Application.messages.getString("MENU_SAVE_TEXT"));
      jSaveText.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          saveFile(".txt");
        }
      });
    }
    return jSaveText;
  }

  /**
   * This method initializes jExit 
   *  
   * @return javax.swing.JMenuItem 
   */
  private JMenuItem getJOptions() {
    if (jOptions == null) {
      jOptions = new JMenuItem();
      jOptions.setIcon(new ImageIcon(this.getClass().getClassLoader().getResource("images/options.png")));
      jOptions.setText(Application.messages.getString("MENU_OPTIONS"));
      jOptions.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_MASK));
      jOptions.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          onShowOptions();
        }
      });
    }
    return jOptions;
  }
 
  private JMenuItem getJExit() {
    if (jExit == null) {
      jExit = new JMenuItem();
      jExit.setIcon(new ImageIcon(this.getClass().getClassLoader().getResource("images/exit.png")));
      jExit.setText(Application.messages.getString("MENU_EXIT"));
      jExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_MASK));
      jExit.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          onExit();
        }
      });
    }
    return jExit;
  }
 
  /**
   * This method initializes jMenuRegEx 
   *  
   * @return javax.swing.JMenu 
   */
  private JMenu getJMenuRegEx() {
    if (jMenuRegEx == null) {
      jMenuRegEx = new JMenu();
      jMenuRegEx.setText(Application.messages.getString("MENU_REGEX"));
      jMenuRegEx.add(getJUndo());
      jMenuRegEx.add(getJRedo());
      jMenuRegEx.addSeparator();
      jMenuRegEx.add(getJApplyRegEx());
    }
    return jMenuRegEx;
  }
 
  /**
   * This method initializes jMenuAbout 
   *  
   * @return javax.swing.JMenu 
   */
  private JMenu getJMenuHelp() {
    if (jMenuHelp == null) {
      jMenuHelp = new JMenu();
      jMenuHelp.setText(Application.messages.getString("MENU_HELP"));
      jMenuHelp.add(getJHelpItem());
      jMenuHelp.addSeparator();
      jMenuHelp.add(getJAbout());
    }
    return jMenuHelp;
  }
 
  /**
   * This method initializes jMenuItem 
   *  
   * @return javax.swing.JMenuItem 
   */
  private JMenuItem getJAbout() {
    if (jAbout == null) {
      jAbout = new JMenuItem();
      jAbout.setText(Application.messages.getString("MENU_ABOUT"));
      jAbout.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          onAbout();
        }
      });
    }
    return jAbout;
  }
 
  private JMenuItem getJHelpItem() {
    if (jHelpItem == null) {
      jHelpItem = new JMenuItem();
      jHelpItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
      jHelpItem.setText(Application.messages.getString("MENU_HELP_ITEM"));
      jHelpItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          onHelp();
        }
      });
    }
    return jHelpItem;
  }
 
  /**
   * This method initializes jApplyRegEx 
   *  
   * @return javax.swing.JMenuItem 
   */
  private JMenuItem getJApplyRegEx() {
    if (jApplyRegEx == null) {
      jApplyRegEx = new JMenuItem();
      jApplyRegEx.setIcon(new ImageIcon(this.getClass().getClassLoader().getResource("images/apply.png")));
      jApplyRegEx.setText(Application.messages.getString("MENU_APPLY"));
      jApplyRegEx.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, KeyEvent.CTRL_MASK));
      jApplyRegEx.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          model.applyRegEx();
        }
      });
    }
    return jApplyRegEx;
  }

  /**
   * This method initializes jUndo 
   *  
   * @return javax.swing.JMenuItem 
   */
  private JMenuItem getJUndo() {
    if (jUndo == null) {
      jUndo = new JMenuItem();
      jUndo.setIcon(new ImageIcon(this.getClass().getClassLoader().getResource("images/undo.png")));
      jUndo.setText("Undo");
      jUndo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, KeyEvent.CTRL_MASK));
      jUndo.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          model.unDo();
        }
      });
    }
    return jUndo;
  }

  /**
   * This method initializes Redo 
   *  
   * @return javax.swing.JMenuItem 
   */
  private JMenuItem getJRedo() {
    if (jRedo == null) {
      jRedo = new JMenuItem();
      jRedo.setIcon(new ImageIcon(this.getClass().getClassLoader().getResource("images/redo.png")));
      jRedo.setText("Redo");
      jRedo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, KeyEvent.CTRL_MASK));
      jRedo.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          model.reDo();
        }
      });
    }
    return jRedo;
  }
 
  /**
   * This method initializes jMenuView 
   *  
   * @return javax.swing.JMenu 
   */
  private JMenu getJMenuView() {
    if (jMenuView == null) {
      jMenuView = new JMenu();
      jMenuView.setText(Application.messages.getString("MENU_VIEW"));   
      ButtonGroup group = new ButtonGroup();
          group.add(getJGenerate());
          group.add(getJLearn());
          group.add(getJResult());
          group.add(getJExport());
      jMenuView.add(getJGenerate());
      jMenuView.add(getJLearn());
      jMenuView.add(getJResult());
      jMenuView.add(getJExport());
    }
    return jMenuView;
  }

  /**
   * This method initializes jGenerate 
   *  
   * @return javax.swing.JRadioButtonMenuItem 
   */
  private JRadioButtonMenuItem getJGenerate() {
    if (jGenerate == null) {
      jGenerate = new JRadioButtonMenuItem();
      jGenerate.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0));
      jGenerate.setText(Application.messages.getString("MENU_VIEW_GENERATE"));
      jGenerate.setSelected(true);
      jGenerate.addItemListener(new java.awt.event.ItemListener() {
        public void itemStateChanged(java.awt.event.ItemEvent e) {
          if(e.getStateChange() == java.awt.event.ItemEvent.SELECTED)
            getJTabbedPane().setSelectedIndex(0);
        }
      });

    }
    return jGenerate;
  }

  /**
   * This method initializes jLearn 
   *  
   * @return javax.swing.JRadioButtonMenuItem 
   */
  private JRadioButtonMenuItem getJLearn() {
    if (jLearn == null) {
      jLearn = new JRadioButtonMenuItem();
      jLearn.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0));
      jLearn.setText(Application.messages.getString("MENU_VIEW_LEARN"));
      jLearn.addItemListener(new java.awt.event.ItemListener() {
        public void itemStateChanged(java.awt.event.ItemEvent e) {
          if(e.getStateChange() == java.awt.event.ItemEvent.SELECTED)
            getJTabbedPane().setSelectedIndex(1);
        }
      });
     
    }
    return jLearn;
  }

  /**
   * This method initializes jResult 
   *  
   * @return javax.swing.JRadioButtonMenuItem 
   */
  private JRadioButtonMenuItem getJResult() {
    if (jResult == null) {
      jResult = new JRadioButtonMenuItem();
      jResult.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, 0));
      jResult.setText(Application.messages.getString("MENU_VIEW_RESULT"));
      jResult.addItemListener(new java.awt.event.ItemListener() {
        public void itemStateChanged(java.awt.event.ItemEvent e) {
          if(e.getStateChange() == java.awt.event.ItemEvent.SELECTED)
            getJTabbedPane().setSelectedIndex(2);
        }
      });
    }
    return jResult;
  }

  /**
   * This method initializes jExport 
   *  
   * @return javax.swing.JRadioButtonMenuItem 
   */
  private JRadioButtonMenuItem getJExport() {
    if (jExport == null) {
      jExport = new JRadioButtonMenuItem();
      jExport.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0));
      jExport.setText(Application.messages.getString("MENU_VIEW_EXPORT"));
      jExport.addItemListener(new java.awt.event.ItemListener() {
        public void itemStateChanged(java.awt.event.ItemEvent e) {
          if(e.getStateChange() == java.awt.event.ItemEvent.SELECTED)
            getJTabbedPane().setSelectedIndex(3);
        }
      });
    }
    return jExport;
  }
 
  //--------------------------------------------------------------------
  // Content
 
  /**
   * This method initializes jSplitPaneText 
   *  
   * @return javax.swing.JSplitPane 
   */
  private JSplitPane getJSplitPaneText() {
    if (jSplitPaneText == null) {
      jSplitPaneText = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
      jSplitPaneText.setDividerSize(5);
      jSplitPaneText.setContinuousLayout(true);
      jSplitPaneText.setOneTouchExpandable(false);
      jSplitPaneText.setLeftComponent(getRegExTextPanel());
      jSplitPaneText.setRightComponent(getTextPanel());
    }
    return jSplitPaneText;
  }
 
 
  /**
   * This method initializes jTabbedPane 
   *  
   * @return javax.swing.JTabbedPane 
   */
  private JTabbedPane getJTabbedPane() {
    if (jTabbedPane == null) {
      jTabbedPane = new JTabbedPane();
      jTabbedPane.addTab(Application.messages.getString("TAB_GENERATE"), null, getCreationPanel(), null);
      jTabbedPane.addTab(Application.messages.getString("TAB_LEARN"), null, getRegExTreePanel(), null);
      jTabbedPane.addTab(Application.messages.getString("TAB_RESULTS"), null, getResultPanel(), null);
      jTabbedPane.addTab(Application.messages.getString("TAB_EXPORT"), null, getExportPanel(), null);
      jTabbedPane.setSize(400,200);
      jTabbedPane.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent e) {
          onTabedPaneChange();
        }
      });
    }
    return jTabbedPane;
  }
 
  private void onTabedPaneChange()
  { 
    int selectedIndex = this.jTabbedPane.getSelectedIndex();
    switch (selectedIndex) {
    case 0:
      getJGenerate().setSelected(true);
      break;
    case 1:
      getJLearn().setSelected(true);
      break;
    case 2:
      getJResult().setSelected(true);
      break;
    case 3:
      getJExport().setSelected(true);
      break;
    default:
        break;
    }
  }
 
  /**
   * This method initializes jPanel1 
   *  
   * @return javax.swing.JPanel 
   */
  private JPanel getJPanel() {
    if (jPanel == null) {
      jPanel = new JPanel();
      jPanel.setLayout(new BorderLayout());
      jPanel.add(getJSplitPaneText(), null);
    }
    return jPanel;
  }
 
  private ResultPanel getResultPanel() {
    if (resultPanel == null) {
      resultPanel = new ResultPanel(model);
    }
    return resultPanel;
  }
 
  private CreationPanel getCreationPanel() {
    if (creationPanel == null) {
      creationPanel = new CreationPanel(model);
    }
    return creationPanel;
  }
 
  private ExportPanel getExportPanel() {
    if (exportPanel == null) {
      exportPanel = new ExportPanel(model);
    }
    return exportPanel;
  }
 
  private RegExTextPanel getRegExTextPanel() {
    if (regExTextPanel == null) {
      regExTextPanel = new RegExTextPanel(model);
    }
    return regExTextPanel;
  }
 
  private TextPanel getTextPanel() {
    if (textPanel == null) {
      textPanel = new TextPanel(model);
    }
    return textPanel;
  }
 
  private RegExTreePanel getRegExTreePanel() {
    if (regExTreePanel == null) {
      regExTreePanel = new RegExTreePanel(model);
    }
    return regExTreePanel;
  }
 
  /**
   * This method gets the RegEx or Text file 
   */
  public void openFile(String ext) {
    if (ext.equalsIgnoreCase(".rgx"))
      this.model.openRegExFile();
    if (ext.equalsIgnoreCase(".txt"))
      this.model.openTextFile();
  }
 
  /**
   * This method saves the RegEx or Text 
   */
  public void saveFile(String ext) {
    if (ext.equalsIgnoreCase(".rgx"))
      this.model.saveRegExFile();
    if (ext.equalsIgnoreCase(".txt"))
      this.model.saveTextFile();
  }
  public void onShowOptions()  {
    Application.settings.showPanel();
  }
 
  private void onAbout() {
    JOptionPane.showMessageDialog(null,
        Application.messages.getString("ABOUT_TEXT"),
        Application.messages.getString("ABOUT_TITLE"),
        JOptionPane.INFORMATION_MESSAGE,
        new ImageIcon(this.getClass().getClassLoader().getResource("images/about.png")));
  }
 
  private void onHelp() {
    String url = "http://gtlregex.sourceforge.net/?p=4";
    try {
      Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
    }
    catch (IOException e) {
      System.out.println("unable to launch the following link : http://gtlregex.sourceforge.net/?p=4");
    }
//    JOptionPane.showMessageDialog(null,
//        Application.messages.getString("HELP_TEXT"),
//        Application.messages.getString("HELP_TITLE"),
//        JOptionPane.INFORMATION_MESSAGE,
//        new ImageIcon("images/about.png"));
  }
 
  public void propertyChange(PropertyChangeEvent arg0) {
    if (arg0.getPropertyName() == "regEx") {
      jApplyRegEx.setEnabled(false);
    }
    if (arg0.getPropertyName() == "valid" && arg0.getNewValue() == null) {
      jApplyRegEx.setEnabled(true);
    }
   
  }

}

TOP

Related Classes of views.Gui

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.