/* * Copyright (C) 2013 Vinu K.N * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.domainmath.gui.code_editor_dle; import java.awt.BorderLayout; import java.awt.Desktop; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.print.PrinterException; import java.io.*; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.text.Caret; import javax.swing.text.Document; import javax.swing.text.Element; import org.domainmath.gui.MainFrame; import org.domainmath.gui.Util.ScriptFileView; import org.domainmath.gui.StatusPanel; import org.domainmath.gui.about.AboutDlg; import org.domainmath.gui.dialog.find_replace.FindAndReplaceDialog; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; import org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaEditorKit; import org.fife.ui.rsyntaxtextarea.SyntaxConstants; import org.fife.ui.rtextarea.RTextAreaEditorKit; import org.fife.ui.rtextarea.RTextScrollPane; public class DLECodeEditorFrame extends javax.swing.JFrame { public RSyntaxTextArea area; public RTextScrollPane scroll; private String fname; public JTabbedPane fileTab = new JTabbedPane(); private String currentDir; private List fileNameList =Collections.synchronizedList(new ArrayList()); public static int file_index; public DLECodeEditorFrame() { this.setIconImage(icon); initComponents(); this.setSize(600, 400); currentDir=null; fileTab.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); this.popupTab(); add(fileTab); add(new StatusPanel(),BorderLayout.PAGE_END); file_index=0; } public void addFileNameToList(String name) { this.fileNameList.add(name); } public void dirty() { area.getDocument().addDocumentListener( new DocumentListener(){ @Override public void insertUpdate(DocumentEvent e) { } @Override public void removeUpdate(DocumentEvent e) { } @Override public void changedUpdate(DocumentEvent e) { if(fileTab.getTabRunCount() > 0) { String n = fileTab.getTitleAt(fileTab.getSelectedIndex()); if(!n.endsWith("*")) { fileTab.setTitleAt(fileTab.getSelectedIndex(), n+"*"); } } } }); } public void setUpArea() { area =new RSyntaxTextArea(); // area.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON); scroll = new RTextScrollPane(area); scroll.getGutter().setVisible(true); scroll.getGutter().setBookmarkingEnabled(true); scroll.setFoldIndicatorEnabled(true); scroll.setWheelScrollingEnabled(true); } public void initTabComponent(int i) { fileTab.setTabComponentAt(file_index, new ButtonTabComponent(this)); } public void saveAs() { JFileChooser fc = new JFileChooser(); fc.setCurrentDirectory(new File(System.getProperty("user.dir")+File.separator+"works")); fc.setMultiSelectionEnabled(false); fc.setDialogTitle("Save As"); File file; int returnVal = fc.showSaveDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { String path = fc.getSelectedFile().getAbsolutePath(); save(fc.getSelectedFile(),fileTab.getSelectedIndex()); } } public void open(File file ,int index) { try { BufferedReader r = new BufferedReader(new FileReader(file)); try { setUpArea(); fname= file.getName(); if(fname.endsWith(".c") ) { area.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_C); area.setCodeFoldingEnabled(true); }else if(fname.endsWith(".cpp")|| fname.endsWith(".cc") || fname.endsWith(".C")) { area.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_CPLUSPLUS); area.setCodeFoldingEnabled(true); }else if(fname.endsWith(".f") || fname.endsWith(".F") || fname.endsWith(".f90") || fname.endsWith(".F90")) { area.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_FORTRAN); } else { area.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_NONE); } area.read(r, null); r.close(); fileTab.addTab(file.getName(), scroll); initTabComponent(file_index); fileNameList.add(fileTab.getToolTipTextAt(file_index)); fileTab.setToolTipTextAt(file_index, file.getAbsolutePath()); fileTab.setSelectedIndex(file_index); file_index++; dirty(); } catch (IOException ex) { Logger.getLogger(DLECodeEditorFrame.class.getName()).log(Level.SEVERE, null, ex); } } catch (FileNotFoundException ex) { Logger.getLogger(DLECodeEditorFrame.class.getName()).log(Level.SEVERE, null, ex); } } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jToolBar1 = new javax.swing.JToolBar(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jSeparator4 = new javax.swing.JToolBar.Separator(); jButton4 = new javax.swing.JButton(); jButton5 = new javax.swing.JButton(); jSeparator5 = new javax.swing.JToolBar.Separator(); jButton6 = new javax.swing.JButton(); jButton7 = new javax.swing.JButton(); jButton8 = new javax.swing.JButton(); jMenuBar1 = new javax.swing.JMenuBar(); fileMenu = new javax.swing.JMenu(); newFileItem = new javax.swing.JMenuItem(); openItem = new javax.swing.JMenuItem(); jSeparator7 = new javax.swing.JPopupMenu.Separator(); saveFileItem = new javax.swing.JMenuItem(); saveAsFileItem = new javax.swing.JMenuItem(); saveAllItem = new javax.swing.JMenuItem(); jSeparator1 = new javax.swing.JPopupMenu.Separator(); closeItem = new javax.swing.JMenuItem(); closeAllItem = new javax.swing.JMenuItem(); jSeparator8 = new javax.swing.JPopupMenu.Separator(); printFileItem = new javax.swing.JMenuItem(); exitItem = new javax.swing.JMenuItem(); editMenu = new javax.swing.JMenu(); undoItem = new javax.swing.JMenuItem(); redoItem = new javax.swing.JMenuItem(); jSeparator2 = new javax.swing.JPopupMenu.Separator(); cutItem = new javax.swing.JMenuItem(); copyItem = new javax.swing.JMenuItem(); pasteItem = new javax.swing.JMenuItem(); jSeparator3 = new javax.swing.JPopupMenu.Separator(); deleteItem = new javax.swing.JMenuItem(); selectAllItem = new javax.swing.JMenuItem(); jSeparator6 = new javax.swing.JPopupMenu.Separator(); findAndReplaceItem = new javax.swing.JMenuItem(); jSeparator9 = new javax.swing.JPopupMenu.Separator(); jMenuItem2 = new javax.swing.JMenuItem(); jMenuItem3 = new javax.swing.JMenuItem(); jSeparator10 = new javax.swing.JPopupMenu.Separator(); jMenuItem4 = new javax.swing.JMenuItem(); jMenuItem5 = new javax.swing.JMenuItem(); jSeparator11 = new javax.swing.JPopupMenu.Separator(); clearAllMarksItem = new javax.swing.JMenuItem(); jMenuItem1 = new javax.swing.JMenuItem(); jMenu2 = new javax.swing.JMenu(); findItem = new javax.swing.JMenuItem(); replaceItem = new javax.swing.JMenuItem(); gotoItem = new javax.swing.JMenuItem(); jSeparator15 = new javax.swing.JPopupMenu.Separator(); googleItem = new javax.swing.JMenuItem(); wikiItem = new javax.swing.JMenuItem(); jMenu1 = new javax.swing.JMenu(); octFileItem = new javax.swing.JMenuItem(); mexFileItem = new javax.swing.JMenuItem(); exeItem = new javax.swing.JMenuItem(); helpMenu = new javax.swing.JMenu(); forumItem = new javax.swing.JMenuItem(); onlineHelpItem = new javax.swing.JMenuItem(); howToItem = new javax.swing.JMenuItem(); faqItem = new javax.swing.JMenuItem(); jSeparator16 = new javax.swing.JPopupMenu.Separator(); suggestionsItem = new javax.swing.JMenuItem(); reportBugItem1 = new javax.swing.JMenuItem(); feedBackItem1 = new javax.swing.JMenuItem(); jSeparator12 = new javax.swing.JPopupMenu.Separator(); AboutItem = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en"); // NOI18N setTitle(bundle.getString("CodeEditorFrame.title")); // NOI18N setLocationByPlatform(true); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); jToolBar1.setRollover(true); jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/size22x22/document-new.png"))); // NOI18N jButton1.setFocusable(false); jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jToolBar1.add(jButton1); jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/size22x22/document-open.png"))); // NOI18N jButton2.setFocusable(false); jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jToolBar1.add(jButton2); jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/size22x22/document-save-all.png"))); // NOI18N jButton3.setFocusable(false); jButton3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButton3.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jToolBar1.add(jButton3); jToolBar1.add(jSeparator4); jButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/size22x22/edit-undo.png"))); // NOI18N jButton4.setFocusable(false); jButton4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButton4.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); jToolBar1.add(jButton4); jButton5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/size22x22/edit-redo.png"))); // NOI18N jButton5.setFocusable(false); jButton5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButton5.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt); } }); jToolBar1.add(jButton5); jToolBar1.add(jSeparator5); jButton6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/size22x22/edit-cut.png"))); // NOI18N jButton6.setFocusable(false); jButton6.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButton6.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jButton6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton6ActionPerformed(evt); } }); jToolBar1.add(jButton6); jButton7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/size22x22/edit-copy.png"))); // NOI18N jButton7.setFocusable(false); jButton7.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButton7.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jButton7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton7ActionPerformed(evt); } }); jToolBar1.add(jButton7); jButton8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/size22x22/edit-paste.png"))); // NOI18N jButton8.setFocusable(false); jButton8.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButton8.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jButton8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton8ActionPerformed(evt); } }); jToolBar1.add(jButton8); getContentPane().add(jToolBar1, java.awt.BorderLayout.PAGE_START); fileMenu.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en").getString("FileMenu.mnemonic").charAt(0)); fileMenu.setText(bundle.getString("FileMenu.name")); // NOI18N newFileItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK)); newFileItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/document-new.png"))); // NOI18N newFileItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en").getString("newFileItem.mnemonic").charAt(0)); newFileItem.setText("New"); newFileItem.setToolTipText(bundle.getString("newFileItem.tooltip")); // NOI18N newFileItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { newFileItemActionPerformed(evt); } }); fileMenu.add(newFileItem); openItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK)); openItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/document-open.png"))); // NOI18N openItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en").getString("openFileItem.mnemonic").charAt(0)); openItem.setText("Open..."); openItem.setToolTipText("Open File"); openItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { openItemActionPerformed(evt); } }); fileMenu.add(openItem); fileMenu.add(jSeparator7); saveFileItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK)); saveFileItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/document-save.png"))); // NOI18N saveFileItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en").getString("saveFileItem.mnemonic").charAt(0)); saveFileItem.setText("Save "); saveFileItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveFileItemActionPerformed(evt); } }); fileMenu.add(saveFileItem); saveAsFileItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/document-save-as.png"))); // NOI18N saveAsFileItem.setText("Save As..."); saveAsFileItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveAsFileItemActionPerformed(evt); } }); fileMenu.add(saveAsFileItem); saveAllItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); saveAllItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/document-save-all.png"))); // NOI18N saveAllItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en").getString("saveAllItem.mnemonic").charAt(0)); saveAllItem.setText(bundle.getString("saveAllItem.name")); // NOI18N saveAllItem.setToolTipText(bundle.getString("saveAllItem.tooltip")); // NOI18N saveAllItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveAllItemActionPerformed(evt); } }); fileMenu.add(saveAllItem); fileMenu.add(jSeparator1); closeItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W, java.awt.event.InputEvent.ALT_MASK)); closeItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en").getString("closeItem.mnemonic").charAt(0)); closeItem.setText(bundle.getString("closeItem.name")); // NOI18N closeItem.setToolTipText(bundle.getString("closeItem.tooltip")); // NOI18N closeItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { closeItemActionPerformed(evt); } }); fileMenu.add(closeItem); closeAllItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.SHIFT_MASK)); closeAllItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en").getString("closeAllItem.mnemonic").charAt(0)); closeAllItem.setText(bundle.getString("closeAllItem.name")); // NOI18N closeAllItem.setToolTipText(bundle.getString("closeAllItem.tooltip")); // NOI18N closeAllItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { closeAllItemActionPerformed(evt); } }); fileMenu.add(closeAllItem); fileMenu.add(jSeparator8); printFileItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK)); printFileItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/document-print2.png"))); // NOI18N printFileItem.setText("Print"); printFileItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { printFileItemActionPerformed(evt); } }); fileMenu.add(printFileItem); exitItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.ALT_MASK)); exitItem.setText("Exit"); exitItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exitItemActionPerformed(evt); } }); fileMenu.add(exitItem); jMenuBar1.add(fileMenu); editMenu.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en").getString("EditMenu.mnemonic").charAt(0)); editMenu.setText(bundle.getString("EditMenu.name")); // NOI18N undoItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, java.awt.event.InputEvent.CTRL_MASK)); undoItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-undo.png"))); // NOI18N undoItem.setText("Undo"); undoItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { undoItemActionPerformed(evt); } }); editMenu.add(undoItem); redoItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Y, java.awt.event.InputEvent.CTRL_MASK)); redoItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-redo.png"))); // NOI18N redoItem.setText("Redo"); redoItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { redoItemActionPerformed(evt); } }); editMenu.add(redoItem); editMenu.add(jSeparator2); cutItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK)); cutItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-cut.png"))); // NOI18N cutItem.setText("Cut"); cutItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cutItemActionPerformed(evt); } }); editMenu.add(cutItem); copyItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK)); copyItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-copy.png"))); // NOI18N copyItem.setText("Copy"); copyItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { copyItemActionPerformed(evt); } }); editMenu.add(copyItem); pasteItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK)); pasteItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-paste.png"))); // NOI18N pasteItem.setText("Paste"); pasteItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { pasteItemActionPerformed(evt); } }); editMenu.add(pasteItem); editMenu.add(jSeparator3); deleteItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_DELETE, 0)); deleteItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-delete.png"))); // NOI18N deleteItem.setText("Delete"); deleteItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { deleteItemActionPerformed(evt); } }); editMenu.add(deleteItem); selectAllItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK)); selectAllItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-select-all.png"))); // NOI18N selectAllItem.setText("Select All"); selectAllItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { selectAllItemActionPerformed(evt); } }); editMenu.add(selectAllItem); editMenu.add(jSeparator6); findAndReplaceItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK)); findAndReplaceItem.setText("Find and Replace..."); findAndReplaceItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { findAndReplaceItemActionPerformed(evt); } }); editMenu.add(findAndReplaceItem); editMenu.add(jSeparator9); jMenuItem2.setAction(new RSyntaxTextAreaEditorKit.InsertTabAction()); jMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_TAB, java.awt.event.InputEvent.CTRL_MASK)); jMenuItem2.setText("Increase Indent"); jMenuItem2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem2ActionPerformed(evt); } }); editMenu.add(jMenuItem2); jMenuItem3.setAction(new RSyntaxTextAreaEditorKit.DecreaseIndentAction()); jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_TAB, java.awt.event.InputEvent.SHIFT_MASK)); jMenuItem3.setText("Decrease Indent"); editMenu.add(jMenuItem3); editMenu.add(jSeparator10); jMenuItem4.setAction(new RTextAreaEditorKit.UpperSelectionCaseAction()); jMenuItem4.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, java.awt.event.InputEvent.CTRL_MASK)); jMenuItem4.setText("Make Uppercase"); editMenu.add(jMenuItem4); jMenuItem5.setAction(new RTextAreaEditorKit.LowerSelectionCaseAction()); jMenuItem5.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); jMenuItem5.setText("Make Lowercase"); editMenu.add(jMenuItem5); editMenu.add(jSeparator11); clearAllMarksItem.setText("Clear All Marks..."); clearAllMarksItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearAllMarksItemActionPerformed(evt); } }); editMenu.add(clearAllMarksItem); jMenuItem1.setAction( new RSyntaxTextAreaEditorKit.ToggleCommentAction()); jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SLASH, java.awt.event.InputEvent.CTRL_MASK)); jMenuItem1.setText("Toggle Comment"); jMenuItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem1ActionPerformed(evt); } }); editMenu.add(jMenuItem1); jMenuBar1.add(editMenu); jMenu2.setMnemonic('S'); jMenu2.setText("Search"); findItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK)); findItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-find.png"))); // NOI18N findItem.setMnemonic('F'); findItem.setText("Find..."); findItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { findItemActionPerformed(evt); } }); jMenu2.add(findItem); replaceItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_H, java.awt.event.InputEvent.CTRL_MASK)); replaceItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-find-replace.png"))); // NOI18N replaceItem.setText("Replace..."); replaceItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { replaceItemActionPerformed(evt); } }); jMenu2.add(replaceItem); gotoItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); gotoItem.setText("Go To..."); gotoItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { gotoItemActionPerformed(evt); } }); jMenu2.add(gotoItem); jMenu2.add(jSeparator15); googleItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, java.awt.event.InputEvent.CTRL_MASK)); googleItem.setText("Google Search"); googleItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { googleItemActionPerformed(evt); } }); jMenu2.add(googleItem); wikiItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); wikiItem.setText("Wikipedia Search"); wikiItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { wikiItemActionPerformed(evt); } }); jMenu2.add(wikiItem); jMenuBar1.add(jMenu2); jMenu1.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en").getString("buildMenu.mnemonic").charAt(0)); jMenu1.setText(bundle.getString("buildMenu.name")); // NOI18N jMenu1.setToolTipText(bundle.getString("buildMenu.tooltip")); // NOI18N octFileItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F6, 0)); octFileItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en").getString("octFileItem.mnemonic").charAt(0)); octFileItem.setText(bundle.getString("octFileItem.name")); // NOI18N octFileItem.setToolTipText(bundle.getString("octFileItem.tooltip")); // NOI18N octFileItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { octFileItemActionPerformed(evt); } }); jMenu1.add(octFileItem); mexFileItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F6, java.awt.event.InputEvent.SHIFT_MASK)); mexFileItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en").getString("mexFileItem.mnemonic").charAt(0)); mexFileItem.setText(bundle.getString("mexFileItem.name")); // NOI18N mexFileItem.setToolTipText(bundle.getString("mexFileItem.tooltip")); // NOI18N mexFileItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { mexFileItemActionPerformed(evt); } }); jMenu1.add(mexFileItem); exeItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F7, 0)); exeItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/code_editor_dle/resources/DLECodeEditor_en").getString("exeItem.mnemonic").charAt(0)); exeItem.setText(bundle.getString("exeItem.name")); // NOI18N exeItem.setToolTipText(bundle.getString("exeItem.tooltip")); // NOI18N exeItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exeItemActionPerformed(evt); } }); jMenu1.add(exeItem); jMenuBar1.add(jMenu1); java.util.ResourceBundle bundle1 = java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en"); // NOI18N helpMenu.setText(bundle1.getString("helpMenu.name")); // NOI18N forumItem.setText("Forum"); forumItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { forumItemActionPerformed(evt); } }); helpMenu.add(forumItem); onlineHelpItem.setText("Help and Support"); onlineHelpItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { onlineHelpItemActionPerformed(evt); } }); helpMenu.add(onlineHelpItem); howToItem.setText("How to..."); howToItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { howToItemActionPerformed(evt); } }); helpMenu.add(howToItem); faqItem.setText("Online FAQ"); faqItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { faqItemActionPerformed(evt); } }); helpMenu.add(faqItem); helpMenu.add(jSeparator16); suggestionsItem.setText("Suggestions"); suggestionsItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { suggestionsItemActionPerformed(evt); } }); helpMenu.add(suggestionsItem); reportBugItem1.setText(bundle1.getString("reportBugItem.name")); // NOI18N reportBugItem1.setToolTipText(bundle1.getString("reportBugItem.tooltip")); // NOI18N reportBugItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { reportBugItem1ActionPerformed(evt); } }); helpMenu.add(reportBugItem1); feedBackItem1.setText(bundle1.getString("yourFeedbackItem.name")); // NOI18N feedBackItem1.setToolTipText(bundle1.getString("yourFeedbackItem.tooltip")); // NOI18N feedBackItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { feedBackItem1ActionPerformed(evt); } }); helpMenu.add(feedBackItem1); helpMenu.add(jSeparator12); AboutItem.setText(bundle1.getString("aboutItem.name")); // NOI18N AboutItem.setToolTipText(bundle1.getString("aboutItem.tooltip")); // NOI18N AboutItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { AboutItemActionPerformed(evt); } }); helpMenu.add(AboutItem); jMenuBar1.add(helpMenu); setJMenuBar(jMenuBar1); pack(); }// </editor-fold>//GEN-END:initComponents public void open(){ JFileChooser fc = new JFileChooser(); fc.setCurrentDirectory(new File(System.getProperty("user.dir")+File.separator+"works")); if(fileTab.getSelectedIndex() >= 0) { File f = new File(currentDir); fc.setCurrentDirectory(f); } FileNameExtensionFilter filter_c = new FileNameExtensionFilter( "C-Files (*.c)", "c"); FileNameExtensionFilter filter_cpp = new FileNameExtensionFilter( "CPP-Files (*.cc; *.C; *.cpp)", "cc","C","cpp"); FileNameExtensionFilter filter_fortran = new FileNameExtensionFilter( "Fortran-Files (*.f; *.F; *.f90; *.F90)", "f","F","f90","F90"); fc.setFileFilter(filter_fortran); fc.setFileFilter(filter_c); fc.setFileFilter(filter_cpp); fc.setMultiSelectionEnabled(true); fc.setAcceptAllFileFilterUsed(false); fc.setFileView(new ScriptFileView()); File file[]; int returnVal = fc.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { file = fc.getSelectedFiles(); this.setCurrentDir(fc.getCurrentDirectory().getAbsolutePath()); for(int i=0;i<file.length;i++) { if(!fileNameList.contains(file[i].getAbsolutePath())) { open(file[i],i); }else { System.out.println(file[i].getAbsolutePath()+" already open!"); } } } } public String getCurrentDir() { return currentDir; } public void setCurrentDir(String currentDir) { this.currentDir = currentDir; } private void openItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openItemActionPerformed open(); }//GEN-LAST:event_openItemActionPerformed private void save() { if(fileTab.getSelectedIndex()>= 0) { String file = fileTab.getToolTipTextAt(fileTab.getSelectedIndex()); String fl =fileTab.getTitleAt(fileTab.getSelectedIndex()); if(fl.endsWith("*")) { File f =new File(file); save(f,fileTab.getSelectedIndex()); } } } private void saveFileItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveFileItemActionPerformed save(); }//GEN-LAST:event_saveFileItemActionPerformed private void undo() { if(fileTab.getSelectedIndex()>= 0) { RTextScrollPane t =(RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea)t.getTextArea(); selectedArea.undoLastAction(); } } private void redo() { if(fileTab.getSelectedIndex()>= 0) { RTextScrollPane t =(RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea)t.getTextArea(); selectedArea.redoLastAction(); } } private void cut() { if(fileTab.getSelectedIndex()>= 0) { RTextScrollPane t =(RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea)t.getTextArea(); selectedArea.cut(); } } private void copy() { if(fileTab.getSelectedIndex()>= 0) { RTextScrollPane t =(RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea)t.getTextArea(); selectedArea.copy(); } } private void paste() { if(fileTab.getSelectedIndex()>= 0) { RTextScrollPane t =(RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea)t.getTextArea(); selectedArea.paste(); } } private void selectAll() { if(fileTab.getSelectedIndex()>= 0) { RTextScrollPane t =(RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea)t.getTextArea(); selectedArea.selectAll(); } } private void saveAsFileItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveAsFileItemActionPerformed saveAs(); }//GEN-LAST:event_saveAsFileItemActionPerformed private void printFileItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_printFileItemActionPerformed printdoc(); }//GEN-LAST:event_printFileItemActionPerformed private void undoItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_undoItemActionPerformed this.undo(); }//GEN-LAST:event_undoItemActionPerformed private void redoItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_redoItemActionPerformed this.redo(); }//GEN-LAST:event_redoItemActionPerformed private void cutItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cutItemActionPerformed this.cut(); }//GEN-LAST:event_cutItemActionPerformed private void copyItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_copyItemActionPerformed this.copy(); }//GEN-LAST:event_copyItemActionPerformed private void pasteItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pasteItemActionPerformed this.paste(); }//GEN-LAST:event_pasteItemActionPerformed private void selectAllItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectAllItemActionPerformed this.selectAll(); }//GEN-LAST:event_selectAllItemActionPerformed private void deleteItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteItemActionPerformed deleteText(); }//GEN-LAST:event_deleteItemActionPerformed private void newFileItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newFileItemActionPerformed newFile(); }//GEN-LAST:event_newFileItemActionPerformed private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing int i=fileTab.getTabCount()-1; while(i != -1) { askSave(i); i--; } this.dispose(); }//GEN-LAST:event_formWindowClosing private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed newFile(); }//GEN-LAST:event_jButton1ActionPerformed private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed open(); }//GEN-LAST:event_jButton2ActionPerformed private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed for(int i=0;i<fileTab.getTabCount();i++) { String file = fileTab.getToolTipTextAt(i); String fl = fileTab.getTitleAt(i); if(fl.endsWith("*")) { File f =new File(file); save(f,i); } } }//GEN-LAST:event_jButton3ActionPerformed private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed this.undo(); }//GEN-LAST:event_jButton4ActionPerformed private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed this.redo(); }//GEN-LAST:event_jButton5ActionPerformed private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed this.cut(); }//GEN-LAST:event_jButton6ActionPerformed private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed this.copy(); }//GEN-LAST:event_jButton7ActionPerformed private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed this.paste(); }//GEN-LAST:event_jButton8ActionPerformed private void closeItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeItemActionPerformed if(fileTab.getSelectedIndex()>= 0) { askSave(fileTab.getSelectedIndex()); } }//GEN-LAST:event_closeItemActionPerformed private void closeAllItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeAllItemActionPerformed int i=fileTab.getTabCount()-1; while(i != -1) { askSave(i); i--; } }//GEN-LAST:event_closeAllItemActionPerformed private void saveAllItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveAllItemActionPerformed for(int i=0;i<fileTab.getTabCount();i++) { String file = fileTab.getToolTipTextAt(i); String fl = fileTab.getTitleAt(i); if(fl.endsWith("*")) { File f =new File(file); save(f,i); } } }//GEN-LAST:event_saveAllItemActionPerformed public void oct() { String s = fileTab.getToolTipTextAt(fileTab.getSelectedIndex()); File f = new File(s); MainFrame.octavePanel.eval("cd '"+f.getParentFile().getAbsolutePath()+"'"); MainFrame.setDir(f.getParentFile().getAbsolutePath()); MainFrame.octavePanel.outputArea.append("Building "+f.getAbsolutePath()+" ..."+"\n"); MainFrame.evaluateWithOutput("mkoctfile "+f.getName()); String n = f.getName(); String c = n.substring(0, n.lastIndexOf("."))+"()"; MainFrame.octavePanel.evaluate(c); } private void octFileItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_octFileItemActionPerformed if(fileTab.getSelectedIndex()>= 0) { save(); oct(); } }//GEN-LAST:event_octFileItemActionPerformed public void mex() { String s = fileTab.getToolTipTextAt(fileTab.getSelectedIndex()); File f = new File(s); MainFrame.octavePanel.outputArea.append("Building "+f.getAbsolutePath()+" ..."+"\n"); MainFrame.octavePanel.eval("cd '"+f.getParentFile().getAbsolutePath()+"'"); MainFrame.setDir(f.getParentFile().getAbsolutePath()); MainFrame.evaluateWithOutput("mex "+f.getName()); String n = f.getName(); String c = n.substring(0, n.lastIndexOf("."))+"()"; MainFrame.octavePanel.evaluate(c); } private void mexFileItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mexFileItemActionPerformed if(fileTab.getSelectedIndex()>= 0) { save(); mex(); } }//GEN-LAST:event_mexFileItemActionPerformed public void exe() { String s = fileTab.getToolTipTextAt(fileTab.getSelectedIndex()); File f = new File(s); MainFrame.octavePanel.outputArea.append("Building "+f.getAbsolutePath()+" ..."+"\n"); MainFrame.octavePanel.eval("cd '"+f.getParentFile().getAbsolutePath()+"'"); MainFrame.setDir(f.getParentFile().getAbsolutePath()); String n = f.getName(); String p = f.getParentFile().getAbsolutePath()+File.separator; String c = n.substring(0, n.lastIndexOf("."))+".exe"; MainFrame.evaluateWithOutput("mkoctfile --link-stand-alone "+f.getName()+" -o "+p+c); MainFrame.octavePanel.eval("system('"+c+"')"); } private void exeItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exeItemActionPerformed if(fileTab.getSelectedIndex()>= 0) { save(); exe(); } }//GEN-LAST:event_exeItemActionPerformed private void exitItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitItemActionPerformed int i=fileTab.getTabCount()-1; while(i != -1) { askSave(i); i--; } this.dispose(); }//GEN-LAST:event_exitItemActionPerformed private void findAndReplaceItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_findAndReplaceItemActionPerformed if(fileTab.getSelectedIndex()>= 0) { RTextScrollPane t =(RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea)t.getTextArea(); FindAndReplaceDialog find = new FindAndReplaceDialog(this,true,fileTab,selectedArea.getSelectedText()); find.setVisible(true); } }//GEN-LAST:event_findAndReplaceItemActionPerformed private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed if(fileTab.getSelectedIndex()>= 0) { RTextScrollPane t =(RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea)t.getTextArea(); new RSyntaxTextAreaEditorKit.ToggleCommentAction(); } }//GEN-LAST:event_jMenuItem1ActionPerformed private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed // TODO add your handling code here: }//GEN-LAST:event_jMenuItem2ActionPerformed private void clearAllMarksItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearAllMarksItemActionPerformed if(fileTab.getSelectedIndex()>= 0) { RTextScrollPane t =(RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea)t.getTextArea(); selectedArea.removeAllLineHighlights(); } }//GEN-LAST:event_clearAllMarksItemActionPerformed private void findItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_findItemActionPerformed if (fileTab.getTabCount() > 0) { RTextScrollPane t = (RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea) t.getTextArea(); FindAndReplaceDialog find = new FindAndReplaceDialog(this, true, fileTab, selectedArea.getSelectedText()); find.setVisible(true); } }//GEN-LAST:event_findItemActionPerformed private void replaceItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_replaceItemActionPerformed if (fileTab.getTabCount() > 0) { RTextScrollPane t = (RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea) t.getTextArea(); FindAndReplaceDialog find = new FindAndReplaceDialog(this, true, fileTab, selectedArea.getSelectedText()); find.setVisible(true); } }//GEN-LAST:event_replaceItemActionPerformed private int getFirstCharacter(Element row) { if (row == null) return 0; int lastColumnInRow = row.getEndOffset(); return lastColumnInRow; } private void gotoItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_gotoItemActionPerformed if (fileTab.getTabCount() > 0) { String s = JOptionPane.showInputDialog("Line Number:"); RTextScrollPane t = (RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea) t.getTextArea(); try { Element element = selectedArea.getDocument().getDefaultRootElement(); int lineRequested = Integer.parseInt(s); int rowCount = element.getElementCount(); if (lineRequested > rowCount || lineRequested < 0) { setVisible(false); return; } Element row = null; int firstCharacter = 0; int rowNumber = 0; for (int i = 0; i < lineRequested; ++i) { firstCharacter = getFirstCharacter(row); rowNumber = element.getElementIndex(firstCharacter); row = element.getElement(rowNumber); } int lastColumnInRow = row.getEndOffset(); selectedArea.select(firstCharacter, lastColumnInRow - 1); } catch (Exception e) { } } }//GEN-LAST:event_gotoItemActionPerformed private void googleItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_googleItemActionPerformed if (fileTab.getTabCount() > 0) { RTextScrollPane t = (RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea) t.getTextArea(); String s = selectedArea.getSelectedText(); if (!s.equals("")) { String f = "http://www.google.com/search?q=" + s.replaceAll(" ", "+"); setPath(f); } } }//GEN-LAST:event_googleItemActionPerformed private void wikiItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_wikiItemActionPerformed if (fileTab.getTabCount() > 0) { RTextScrollPane t = (RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea) t.getTextArea(); String s = selectedArea.getSelectedText(); if (!s.equals("")) { String f = "http://en.wikipedia.org/wiki/Special:Search?search=" + s.replaceAll(" ", "+"); setPath(f); } } }//GEN-LAST:event_wikiItemActionPerformed private void forumItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_forumItemActionPerformed setPath("http://domainmathide.freeforums.org/"); }//GEN-LAST:event_forumItemActionPerformed private void onlineHelpItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_onlineHelpItemActionPerformed setPath("http://domainmathide.freeforums.org/help-and-support-f5.html"); }//GEN-LAST:event_onlineHelpItemActionPerformed private void howToItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_howToItemActionPerformed setPath("http://domainmathide.freeforums.org/how-to-f9.html"); }//GEN-LAST:event_howToItemActionPerformed private void faqItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_faqItemActionPerformed setPath("http://domainmathide.freeforums.org/faq-f8.html"); }//GEN-LAST:event_faqItemActionPerformed private void suggestionsItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_suggestionsItemActionPerformed setPath("http://domainmathide.freeforums.org/suggestions-f6.html"); }//GEN-LAST:event_suggestionsItemActionPerformed private void reportBugItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_reportBugItem1ActionPerformed setPath("http://domainmathide.freeforums.org/bugs-f3.html"); }//GEN-LAST:event_reportBugItem1ActionPerformed private void feedBackItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_feedBackItem1ActionPerformed setPath("http://domainmathide.freeforums.org/feedback-f4.html"); }//GEN-LAST:event_feedBackItem1ActionPerformed private void AboutItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AboutItemActionPerformed AboutDlg aboutDlg = new AboutDlg(this, true); aboutDlg.setLocationRelativeTo(this); aboutDlg.setVisible(true); }//GEN-LAST:event_AboutItemActionPerformed public void setPath(String path) { try { URI uri = new URI(path); Desktop desktop=Desktop.getDesktop(); desktop.browse(uri); } catch (URISyntaxException | IOException ex) { } } public void newFile() { DLENewFileDialog newFileDlg =new DLENewFileDialog(this,true); newFileDlg.setLocationRelativeTo(this); newFileDlg.setVisible(true); } public void deleteText() { RTextScrollPane t =(RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea textArea = (RSyntaxTextArea) t.getTextArea(); boolean beep = true; if ((textArea != null) && (textArea.isEditable())) { try { Document doc = textArea.getDocument(); Caret caret = textArea.getCaret(); int dot = caret.getDot(); int mark = caret.getMark(); if (dot != mark) { doc.remove(Math.min(dot, mark), Math.abs(dot - mark)); beep = false; } else if (dot < doc.getLength()) { int delChars = 1; if (dot < doc.getLength() - 1) { String dotChars = doc.getText(dot, 2); char c0 = dotChars.charAt(0); char c1 = dotChars.charAt(1); if (c0 >= '\uD800' && c0 <= '\uDBFF' && c1 >= '\uDC00' && c1 <= '\uDFFF') { delChars = 2; } } doc.remove(dot, delChars); beep = false; } } catch (Exception bl) { } } if (beep) UIManager.getLookAndFeel().provideErrorFeedback(textArea); textArea.requestFocusInWindow(); } /** * @param args the command line arguments */ public static void main(String args[]) { /* * Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* * If Nimbus (introduced in Java SE 6) is not available, stay with the * default look and feel. For details see * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(DLECodeEditorFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(DLECodeEditorFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(DLECodeEditorFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(DLECodeEditorFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* * Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new DLECodeEditorFrame().setVisible(true); } }); } public Image icon = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/org/domainmath/gui/resources/DomainMath.png")); // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JMenuItem AboutItem; private javax.swing.JMenuItem clearAllMarksItem; private javax.swing.JMenuItem closeAllItem; private javax.swing.JMenuItem closeItem; private javax.swing.JMenuItem copyItem; private javax.swing.JMenuItem cutItem; private javax.swing.JMenuItem deleteItem; private javax.swing.JMenu editMenu; private javax.swing.JMenuItem exeItem; private javax.swing.JMenuItem exitItem; private javax.swing.JMenuItem faqItem; private javax.swing.JMenuItem feedBackItem1; private javax.swing.JMenu fileMenu; private javax.swing.JMenuItem findAndReplaceItem; private javax.swing.JMenuItem findItem; private javax.swing.JMenuItem forumItem; private javax.swing.JMenuItem googleItem; private javax.swing.JMenuItem gotoItem; private javax.swing.JMenu helpMenu; private javax.swing.JMenuItem howToItem; private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JButton jButton6; private javax.swing.JButton jButton7; private javax.swing.JButton jButton8; private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu2; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenuItem jMenuItem1; private javax.swing.JMenuItem jMenuItem2; private javax.swing.JMenuItem jMenuItem3; private javax.swing.JMenuItem jMenuItem4; private javax.swing.JMenuItem jMenuItem5; private javax.swing.JPopupMenu.Separator jSeparator1; private javax.swing.JPopupMenu.Separator jSeparator10; private javax.swing.JPopupMenu.Separator jSeparator11; private javax.swing.JPopupMenu.Separator jSeparator12; private javax.swing.JPopupMenu.Separator jSeparator15; private javax.swing.JPopupMenu.Separator jSeparator16; private javax.swing.JPopupMenu.Separator jSeparator2; private javax.swing.JPopupMenu.Separator jSeparator3; private javax.swing.JToolBar.Separator jSeparator4; private javax.swing.JToolBar.Separator jSeparator5; private javax.swing.JPopupMenu.Separator jSeparator6; private javax.swing.JPopupMenu.Separator jSeparator7; private javax.swing.JPopupMenu.Separator jSeparator8; private javax.swing.JPopupMenu.Separator jSeparator9; private javax.swing.JToolBar jToolBar1; private javax.swing.JMenuItem mexFileItem; private javax.swing.JMenuItem newFileItem; private javax.swing.JMenuItem octFileItem; private javax.swing.JMenuItem onlineHelpItem; private javax.swing.JMenuItem openItem; private javax.swing.JMenuItem pasteItem; private javax.swing.JMenuItem printFileItem; private javax.swing.JMenuItem redoItem; private javax.swing.JMenuItem replaceItem; private javax.swing.JMenuItem reportBugItem1; private javax.swing.JMenuItem saveAllItem; private javax.swing.JMenuItem saveAsFileItem; private javax.swing.JMenuItem saveFileItem; private javax.swing.JMenuItem selectAllItem; private javax.swing.JMenuItem suggestionsItem; private javax.swing.JMenuItem undoItem; private javax.swing.JMenuItem wikiItem; // End of variables declaration//GEN-END:variables public void save(File file,int index) { try { try (BufferedWriter r = new BufferedWriter(new FileWriter(file))) { this.fileTab.setTitleAt(index,file.getName()); RTextScrollPane t =(RTextScrollPane) fileTab.getComponentAt(index); RSyntaxTextArea a = (RSyntaxTextArea)t.getTextArea(); a.write(r); r.close(); this.setCurrentDir(file.getParent()); } } catch (Exception re) { JOptionPane.showMessageDialog(this,re.toString(),"Error",JOptionPane.ERROR_MESSAGE); } } private void printdoc() { try { RTextScrollPane t =(RTextScrollPane) fileTab.getComponentAt(fileTab.getSelectedIndex()); RSyntaxTextArea selectedArea = (RSyntaxTextArea)t.getTextArea(); selectedArea.print(); } catch (PrinterException ex) { Logger.getLogger(DLECodeEditorFrame.class.getName()).log(Level.SEVERE, null, ex); } } private void popupTab(){ JPopupMenu popup = new JPopupMenu(); JMenuItem pcloseItem = new JMenuItem("Close"); JMenuItem pcloseAllItem = new JMenuItem("Close All"); popup.add(pcloseItem); popup.add(pcloseAllItem); fileTab.addMouseListener(new PopupListener(popup)); pcloseItem.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(fileTab.getSelectedIndex()>= 0) { askSave(fileTab.getSelectedIndex()); } } }); pcloseAllItem.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { int i=fileTab.getTabCount()-1; while(i != -1) { askSave(i); i--; } } }); } public void removeFileNameFromList(int index) { fileNameList.remove(index); } public void askSave(int selectedIndex) { String s = fileTab.getTitleAt(selectedIndex) ; if(s.endsWith("*")) { String f =s.substring(0, s.lastIndexOf("*")); int i = JOptionPane.showConfirmDialog(this, "Do you want to save changes in "+f+" ?", "DomainMath IDE", JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE); if(i == JOptionPane.YES_OPTION) { File file = new File(fileTab.getToolTipTextAt(selectedIndex)); save(file,selectedIndex); }else if (i == JOptionPane.NO_OPTION){ removeFileNameFromList(selectedIndex); fileTab.remove(selectedIndex); file_index--; } }else { fileNameList.remove(selectedIndex); fileTab.remove(selectedIndex); file_index--; } } class PopupListener extends MouseAdapter { JPopupMenu popup; PopupListener(JPopupMenu popupMenu) { popup = popupMenu; } @Override public void mousePressed(MouseEvent e) { maybeShowPopup(e); } @Override public void mouseReleased(MouseEvent e) { maybeShowPopup(e); } private void maybeShowPopup(MouseEvent e) { if (e.isPopupTrigger() && fileTab.getTabCount() > 0) { popup.show(e.getComponent(), e.getX(), e.getY()); } } } }