From 61dd815dc0d8ac5b2c5ebfce95c60ee568ae2464 Mon Sep 17 00:00:00 2001 From: jmis Date: Tue, 21 Sep 2010 22:01:44 -0400 Subject: [PATCH] #14 - Have the ability to kill a repl command that is spewing data to the repl window --- .../org/enclojure/ide/repl/repl_panel.clj | 2 ++ .../org/enclojure/ide/repl/ReplPanel.form | 21 +++++++++-- .../org/enclojure/ide/repl/ReplPanel.java | 33 ++++++++++++++++-- .../org/enclojure/ide/resources/interrupt.png | Bin 0 -> 1251 bytes .../main/clojure/org/enclojure/repl/main.clj | 16 ++++----- 5 files changed, 58 insertions(+), 14 deletions(-) create mode 100644 org-enclojure-repl-client/src/main/resources/org/enclojure/ide/resources/interrupt.png diff --git a/org-enclojure-repl-client/src/main/clojure/org/enclojure/ide/repl/repl_panel.clj b/org-enclojure-repl-client/src/main/clojure/org/enclojure/ide/repl/repl_panel.clj index 87f9c6c..57d1dd1 100755 --- a/org-enclojure-repl-client/src/main/clojure/org/enclojure/ide/repl/repl_panel.clj +++ b/org-enclojure-repl-client/src/main/clojure/org/enclojure/ide/repl/repl_panel.clj @@ -204,6 +204,8 @@ (.setSelected (.printStackTraceToggleButton repl-pane) bv) (.setSelected (.stackTraceOnErrorMenu repl-pane) bv))) +(defn interrupt-repl [repl-id] + ((:repl-fn (org.enclojure.ide.repl.repl-manager/get-repl-config repl-id)) ":INTERRUPT")) (defn check-repl-form? ([expr repl-id] diff --git a/org-enclojure-repl-client/src/main/java/org/enclojure/ide/repl/ReplPanel.form b/org-enclojure-repl-client/src/main/java/org/enclojure/ide/repl/ReplPanel.form index 09bf82e..6023ba2 100755 --- a/org-enclojure-repl-client/src/main/java/org/enclojure/ide/repl/ReplPanel.form +++ b/org-enclojure-repl-client/src/main/java/org/enclojure/ide/repl/ReplPanel.form @@ -28,14 +28,14 @@ - + - - + + @@ -207,6 +207,21 @@ + + + + + + + + + + + + + + + diff --git a/org-enclojure-repl-client/src/main/java/org/enclojure/ide/repl/ReplPanel.java b/org-enclojure-repl-client/src/main/java/org/enclojure/ide/repl/ReplPanel.java index 28d6ce0..feaac1e 100755 --- a/org-enclojure-repl-client/src/main/java/org/enclojure/ide/repl/ReplPanel.java +++ b/org-enclojure-repl-client/src/main/java/org/enclojure/ide/repl/ReplPanel.java @@ -45,6 +45,7 @@ */ public class ReplPanel extends javax.swing.JPanel { public int _promptPos = 0; + volatile IFn _interruptReplFn = (IFn)RT.var("org.enclojure.ide.repl.repl-panel", "interrupt-repl"); volatile IFn _evaluateInReplFn = (IFn)RT.var("org.enclojure.ide.repl.repl-panel", "evaluate-in-repl"); volatile IFn _processKeyEventFunc = (IFn)RT.var("org.enclojure.ide.repl.repl-panel", "process-key-input"); volatile IFn _dispShowHistoryEventsFunc = (IFn)RT.var("org.enclojure.ide.repl.repl-panel", "show-repl-history"); @@ -387,6 +388,7 @@ private void initComponents() { clearReplHistoryButton = new javax.swing.JButton(); replStartupSettingsButton = new javax.swing.JButton(); replResetButton = new javax.swing.JButton(); + replInterruptButton = new javax.swing.JButton(); jToolBar1.setRollover(true); @@ -493,6 +495,19 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); replTooBar.add(replResetButton); + replInterruptButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/enclojure/ide/resources/interrupt.png"))); // NOI18N + replInterruptButton.setToolTipText("Interrupt Processing"); + replInterruptButton.setFocusable(false); + replInterruptButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + replInterruptButton.setLabel(""); + replInterruptButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + replInterruptButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + replInterruptButtonActionPerformed(evt); + } + }); + replTooBar.add(replInterruptButton); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( @@ -500,12 +515,12 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addGroup(layout.createSequentialGroup() .addComponent(replTooBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 524, Short.MAX_VALUE)) + .addComponent(jTabbedPane1)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 177, Short.MAX_VALUE) - .addComponent(replTooBar, javax.swing.GroupLayout.DEFAULT_SIZE, 177, Short.MAX_VALUE) + .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 219, Short.MAX_VALUE) + .addComponent(replTooBar, javax.swing.GroupLayout.DEFAULT_SIZE, 219, Short.MAX_VALUE) ); }// //GEN-END:initComponents @@ -545,6 +560,17 @@ private void clearReplHistoryButtonActionPerformed(java.awt.event.ActionEvent ev clearReplHistoryActionPerformed(evt); }//GEN-LAST:event_clearReplHistoryButtonActionPerformed + private void replInterruptButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_replInterruptButtonActionPerformed + try + { + _interruptReplFn.invoke(this._replID); + } + catch (Exception ex) + { + Logger.getLogger(ReplPanel.class.getName()).log(Level.SEVERE, null, ex); + } + }//GEN-LAST:event_replInterruptButtonActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables public javax.swing.JEditorPane _replErrorPane; @@ -559,6 +585,7 @@ private void clearReplHistoryButtonActionPerformed(java.awt.event.ActionEvent ev public javax.swing.JButton printStackTraceButton; public javax.swing.JToggleButton printStackTraceToggleButton; public javax.swing.JButton replHistoryButton; + public javax.swing.JButton replInterruptButton; public javax.swing.JButton replResetButton; public javax.swing.JButton replStartupSettingsButton; public javax.swing.JToolBar replTooBar; diff --git a/org-enclojure-repl-client/src/main/resources/org/enclojure/ide/resources/interrupt.png b/org-enclojure-repl-client/src/main/resources/org/enclojure/ide/resources/interrupt.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a51534e0bbd5f83896df9441d638cb3923557f GIT binary patch literal 1251 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstPBjy3;{kN zu0Zj(GAclF6pV(z2n>OD`Ke(H42%pVL4LviM>b#x{?4unOahz*9+AZi415Pcm~qF% z?6*Kc$r9IylHmNblJdl&REB`W%)AmkKi3e2GGjecJyXxFKM#P4JUm?-Lo|YO&o}Zh zD6p^u{QJN7=)zS