diff --git a/pdex/src/processing/mode/experimental/ASTGenerator.java b/pdex/src/processing/mode/experimental/ASTGenerator.java index bb9ac4de4..adfd923d1 100644 --- a/pdex/src/processing/mode/experimental/ASTGenerator.java +++ b/pdex/src/processing/mode/experimental/ASTGenerator.java @@ -982,7 +982,8 @@ public class ASTGenerator { } private void showPredictions(final String word) { - if(sketchOutline.isVisible()) return; + if (sketchOutline != null) + if (sketchOutline.isVisible()) return; Collections.sort(candidates); CompletionCandidate[][] candi = new CompletionCandidate[candidates.size()][1]; DefaultListModel defListModel = new DefaultListModel(); diff --git a/pdex/src/processing/mode/experimental/DebugEditor.java b/pdex/src/processing/mode/experimental/DebugEditor.java index b4d8f6abc..0f9cc92cb 100755 --- a/pdex/src/processing/mode/experimental/DebugEditor.java +++ b/pdex/src/processing/mode/experimental/DebugEditor.java @@ -161,6 +161,11 @@ public class DebugEditor extends JavaEditor implements ActionListener { */ protected JMenuItem showOutline; + /** + * Enable/Disable error logging + */ + protected JCheckBoxMenuItem writeErrorLog; + public DebugEditor(Base base, String path, EditorState state, Mode mode) { super(base, path, state, mode); @@ -313,10 +318,12 @@ public class DebugEditor extends JavaEditor implements ActionListener { // Added temporarily to dump error log. TODO: Remove this later public void internalCloseRunner(){ - writeErrorsToFile(); + if(enableErrorLogging) writeErrorsToFile(); super.internalCloseRunner(); } + protected boolean enableErrorLogging = false; + private void writeErrorsToFile(){ if (errorCheckerService.tempErrorLog.size() == 0) return; @@ -528,6 +535,17 @@ public class DebugEditor extends JavaEditor implements ActionListener { showOutline.addActionListener(this); debugMenu.add(showOutline); + writeErrorLog = new JCheckBoxMenuItem("Write Errors to Log"); + writeErrorLog.setSelected(enableErrorLogging); + writeErrorLog.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + enableErrorLogging = !enableErrorLogging; + } + }); + debugMenu.add(writeErrorLog); + + return debugMenu; } diff --git a/pdex/src/processing/mode/experimental/SketchOutline.java b/pdex/src/processing/mode/experimental/SketchOutline.java index df99e1da8..b135a6fbc 100644 --- a/pdex/src/processing/mode/experimental/SketchOutline.java +++ b/pdex/src/processing/mode/experimental/SketchOutline.java @@ -21,6 +21,8 @@ import javax.swing.JTextField; import javax.swing.JTree; import javax.swing.ScrollPaneConstants; import javax.swing.SwingWorker; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; @@ -177,27 +179,43 @@ public class SketchOutline { } soTree.setSelectionRow(x); } - else { - SwingWorker worker = new SwingWorker() { - protected Object doInBackground() throws Exception { - return null; - } + } + }); + + searchField.getDocument().addDocumentListener(new DocumentListener() { - protected void done() { - String text = searchField.getText().toLowerCase(); - tempNode = new DefaultMutableTreeNode(); - filterTree(text, tempNode, soNode); - soTree.setModel(new DefaultTreeModel(tempNode)); - ((DefaultTreeModel) soTree.getModel()).reload(); - for (int i = 0; i < soTree.getRowCount(); i++) { - soTree.expandRow(i); - } - internalSelection = true; - soTree.setSelectionRow(0); + public void insertUpdate(DocumentEvent e) { + updateSelection(); + } + + public void removeUpdate(DocumentEvent e) { + updateSelection(); + } + + public void changedUpdate(DocumentEvent e) { + updateSelection(); + } + + private void updateSelection(){ + SwingWorker worker = new SwingWorker() { + protected Object doInBackground() throws Exception { + return null; + } + + protected void done() { + String text = searchField.getText().toLowerCase(); + tempNode = new DefaultMutableTreeNode(); + filterTree(text, tempNode, soNode); + soTree.setModel(new DefaultTreeModel(tempNode)); + ((DefaultTreeModel) soTree.getModel()).reload(); + for (int i = 0; i < soTree.getRowCount(); i++) { + soTree.expandRow(i); } - }; - worker.execute(); - } + internalSelection = true; + soTree.setSelectionRow(0); + } + }; + worker.execute(); } });