Clover coverage report - clover
Coverage timestamp: Sat Oct 8 2005 22:54:17 EDT
file stats: LOC: 95   Methods: 5
NCLOC: 84   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
ExpressionEditor.java 30% 71.1% 80% 65%
coverage coverage
 1   
 package abbot.editor.editors;
 2   
 
 3   
 import java.awt.*;
 4   
 import java.awt.event.*;
 5   
 import javax.swing.JTextArea;
 6   
 import javax.swing.JButton;
 7   
 import javax.swing.KeyStroke;
 8   
 import java.util.Collection;
 9   
 
 10   
 import abbot.i18n.Strings;
 11   
 import abbot.script.Expression;
 12   
 import abbot.editor.widgets.TextFormat;
 13   
 
 14   
 /** A Expression only has its description available for editing. */
 15   
 
 16   
 public class ExpressionEditor extends StepEditor {
 17   
 
 18   
     private Expression step;
 19   
     private JTextArea expr;
 20   
     private JButton run;
 21   
     private Color DEFAULT_FG;
 22   
     private JTextArea status;
 23   
 
 24  1
     public ExpressionEditor(Expression step) {
 25  1
         super(step);
 26  1
         this.step = step;
 27  1
         remove(getComponentCount()-1);
 28  1
         expr = addTextArea(null, step.getExpression());
 29  1
         expr.setName("expression.text");
 30  1
         expr.setColumns(80);
 31  1
         expr.setToolTipText(Strings.get("expression.text.tip"));
 32  1
         expr.setLineWrap(false);
 33  1
         run = addButton(Strings.get("expression.eval"));
 34  1
         run.setToolTipText(Strings.get("expression.eval.tip"));
 35  1
         DEFAULT_FG = expr.getForeground();
 36  1
         expr.addKeyListener(new KeyAdapter() {
 37  7
             public void keyReleased(KeyEvent e) {
 38  7
                 if (e.getKeyCode() == KeyEvent.VK_ENTER
 39   
                     && (e.getModifiers() & InputEvent.SHIFT_MASK) != 0) {
 40  0
                     run.doClick();
 41   
                 }
 42   
             }
 43   
         });
 44   
         // TODO: properly format for readability
 45  1
         status = new JTextArea();
 46  1
         status.setBorder(null);
 47  1
         status.setForeground(Color.red);
 48  1
         status.setBackground(getBackground());
 49  1
         status.setLineWrap(true);
 50  1
         status.setEditable(false);
 51  1
         add(status);
 52   
     }
 53   
 
 54  1
     public Dimension getPreferredSize() {
 55  1
         Insets insets = getInsets();
 56  1
         Dimension size = super.getPreferredSize();
 57  1
         size.width = expr.getPreferredSize().width;
 58  1
         if (insets != null) {
 59  1
             size.width += insets.left + insets.right;
 60   
         }
 61  1
         return size;
 62   
     }
 63   
 
 64  6
     public void actionPerformed(ActionEvent ev) {
 65  6
         if (ev.getSource() == expr) {
 66  6
             expr.setForeground(DEFAULT_FG);
 67  6
             expr.setToolTipText(Strings.get("expression.text.tip"));
 68  6
             step.setExpression(expr.getText());
 69  6
             status.setText("");
 70  6
             fireStepChanged();
 71   
         }
 72  0
         else if (ev.getSource() == run) {
 73  0
             expr.setForeground(DEFAULT_FG);
 74  0
             expr.setToolTipText(Strings.get("expression.text.tip"));
 75  0
             status.setText("");
 76  0
             new Thread("expression runner") {
 77  0
                 public void run() {
 78  0
                     try {
 79  0
                         step.run();
 80   
                     }
 81   
                     catch(Throwable e) {
 82  0
                         if (e instanceof bsh.EvalError)
 83  0
                             expr.setForeground(Color.red);
 84  0
                         status.setText(e.getMessage());
 85   
                     }
 86  0
                     fireStepChanged();
 87   
                 }
 88   
             }.start();
 89   
         }
 90   
         else {
 91  0
             super.actionPerformed(ev);
 92   
         }
 93   
     }
 94   
 }
 95