GUI.java

1
// Copyright © 2004-2006 University of Helsinki, Department of Computer Science
2
// Copyright © 2012 various contributors
3
// This software is released under GNU Lesser General Public License 2.1.
4
// The license text is at http://www.gnu.org/licenses/lgpl-2.1.html
5
6
package fi.helsinki.cs.titokone;
7
8
import javax.swing.*;
9
import javax.swing.border.*;
10
import javax.swing.event.*;
11
import javax.swing.filechooser.FileFilter;
12
import javax.swing.table.DefaultTableModel;
13
import java.awt.*;
14
import java.awt.event.*;
15
import java.io.*;
16
import java.util.*;
17
import java.util.logging.Logger;
18
19
/**
20
 * Class GUI is namely the class that implements the Graphical User Interface.
21
 * It uses methods in GUIBrain to fire certain actions, such as compiling and
22
 * running the programs. If GUIBrain wants to inform GUI about something, like
23
 * new register values or about a new symbol in symbol table, then an Event of
24
 * some kind if fired. Various ActionListeners are added here to catch those
25
 * events.
26
 * <p/>
27
 * This GUI has three views hardcoded, one for the state when no file has been
28
 * opened, one for the state when a symbolic code file has been opened and one
29
 * one for the state when a binary code file has been opened. The view can be
30
 * changed with setView(int) method and once it is launched, the GUI's view is
31
 * changed into the selected view's basic state. A basic state for a view means
32
 * which of the buttons are enabled and which of the menuselections are enabled
33
 * for a certain view.
34
 */
35
36
public class GUI extends JFrame implements ActionListener {
37
38
    GUI thisGUI;
39
40
    GUIBrain guibrain;
41
42
    /**
43
     * This holds (@link rightSplitPane rightSplitPane) and
44
     * (@link leftPane leftPane).
45
     */
46
    JSplitPane mainSplitPane;
47
    ;
48
49
    /**
50
     * What this holds, depends on the view of this gui. If it's 1, then this
51
     * is empty. If it's 2, then this holds (@link codeTableScrollPane codeTableScrollPane).
52
     * If it's 3, then this holds (@link dataAndInstructionsTableSplitPane
53
     * dataAndInstructionsTableSplitPane).
54
     */
55
    JPanel leftPanel;
56
    /**
57
     * This holds (@link upperRightPanel upperRightPanel) and (@link commentListScrollPane
58
     * commentListScrollPane).
59
     */
60
    JSplitPane rightSplitPane;
61
    /**
62
     * This holds (@link registersTableScrollPane registersTableScrollPane),
63
     * (@link symbolTableScrollPane symbolTableScrollPane) and (@link ioPanel
64
     * ioPanel).
65
     */
66
    JPanel upperRightPanel;
67
68
    /**
69
     * This holds (@link codeTable codeTable).
70
     */
71
    JScrollPane codeTableScrollPane;
72
    /**
73
     * This table is used to visualize the K91 source code.
74
     */
75
    JTableX codeTable;
76 5
    Object[] codeTableIdentifiers = {""};
77
78
    /**
79
     * This holds (@link instructionsTable instructionsTable)
80
     */
81
    JScrollPane instructionsTableScrollPane;
82
    /**
83
     * This table is used to visualize the instructions side of Titokone's memory by showing
84
     * its numeric contents and their symbolic equivalencies.
85
     */
86
    JTableX instructionsTable;
87
    //Object[] instructionsTableIdentifiers = {"Line", "Binary command", "Symbolic command"};
88 9
    Object[] instructionsTableIdentifiers = {"", "", ""};
89
90
    /**
91
     * This holds (@link dataTable dataTable).
92
     */
93
    JScrollPane dataTableScrollPane;
94
    /**
95
     * This table is used to visualize the data side of Titokone's memory by showing its numeric
96
     * contents and their symbolic equivalencies.
97
     */
98
    JTableX dataTable;
99
    //Object[] dataTableIdentifiers = {"Line", "Binary command", "Symbolic command"};
100 9
    Object[] dataTableIdentifiers = {"", "", ""};
101
102
    /**
103
     * This holds (@link instructionsTableScrollPane instructionsTableScrollPane) and
104
     * (@link dataTableScrollPane dataTableScrollPane).
105
     */
106
    JSplitPane dataAndInstructionsTableSplitPane;
107
108
    /**
109
     * This holds @link registersTable.
110
     */
111
    JScrollPane registersTableScrollPane;
112
    /**
113
     * This table is used to visualize the contents of Titokone's registers. There's one row for
114
     * each of there registers: R0, R1, R2, R3, R4, R5, SP, FP and PC.
115
     */
116
    JTableX registersTable;
117 7
    Object[] registersTableIdentifiers = {"", ""};
118
119
    /**
120
     * This holds (@link symbolTable symbolTable).
121
     */
122
    JScrollPane symbolTableScrollPane;
123
    /**
124
     * This table is used to visualize the symbols that are declared in source code, and their values.
125
     * There's one row for each symbol.
126
     */
127
    JTableX symbolTable;
128 7
    Object[] symbolTableIdentifiers = {"", ""};
129
130
131
    /**
132
     * This has symbol name as key and its row in the symbolTable as value. Thus it's easy to find
133
     * out if a symbol is already included in symbolTable and a new row is not needed.
134
     */
135
    HashMap<String, Integer> symbolsHashMap;
136
137
138
    /**
139
     * This holds (@link inputPanel) and (@link outputPanel).
140
     */
141
    JPanel ioPanel;
142
143
    /**
144
     * This holds (@link outputScrollPane).
145
     */
146
    JPanel outputPanel;
147
    /**
148
     * This holds (@link outputTextArea).
149
     */
150
    JScrollPane outputScrollPane;
151
    /**
152
     * This text area is used to visualize the output data that Titokone sends to CRT.
153
     */
154
    JTextArea outputTextArea;
155
156
    /**
157
     * This holds (@link enterNumberLabel enterNumberLabel), (@link inputField inputField)
158
     * and (@link enterNumberButton enterNumberButton).
159
     */
160
    JPanel inputPanel;
161
    /**
162
     * This is used to show for example errors, when an invalid number is given etc.
163
     */
164
    JLabel enterNumberLabel;
165
    /**
166
     * The number that will be sent to Titokone as KBD data is given here.
167
     */
168
    JTextField inputField;
169
    /**
170
     * This sends the number to GUIBrain, which checks if it's valid and then sends it to Titokone.
171
     */
172
    JButton enterNumberButton;
173
174
    /**
175
     * This holds (@link commentList commentList).
176
     */
177
    JScrollPane commentListScrollPane;
178
    /**
179
     * The comments are shown here.
180
     */
181
    JList commentList;
182
183
184
    JButton openFileButton;
185
    JButton compileButton;
186
    JButton runButton;
187
    JButton continueButton;
188
    JButton continueToEndButton;
189
    JButton stopButton;
190
    JToggleButton lineByLineToggleButton;
191
    JToggleButton showCommentsToggleButton;
192
    JToggleButton showAnimationToggleButton;
193
    JToggleButton showDisplayToggleButton;
194
195
    JLabel statusBar;
196
197
    JPopupMenu dataTablePopupMenu;
198
199
    JMenu fileMenu;
200
    JMenuItem openFile;
201
    JMenuItem compileMenuItem;
202
    JMenuItem runMenuItem;
203
    JMenuItem continueMenuItem;
204
    JMenuItem continueToEndMenuItem;
205
    JMenuItem stopMenuItem;
206
    JMenuItem eraseMem;
207
    JMenuItem quit;
208
209
    JMenu optionsMenu;
210
    JMenu setMemSize;
211
    JMenu configureFileSystem;
212
    JMenuItem selectDefaultStdinFile;
213
    JMenuItem selectDefaultStdoutFile;
214
    JMenuItem setCompilingOptions;
215
    JMenuItem setRunningOptions;
216
    JMenuItem selectLanguageFromFile;
217
218
    JMenu setLanguage;
219
220
    JMenu helpMenu;
221
    JMenuItem manual;
222
    JMenuItem about;
223
224
    JFrame animatorFrame;
225
    Animator animator;
226
    JSlider animatorSpeedSlider;
227
    JButton animatorContinueButton;
228
229
    JFrame displayFrame;
230
    Display display;
231
232
    public static final int ANIMATOR_SPEED_MIN = 0;
233
    public static final int ANIMATOR_SPEED_MAX = 100;
234
235
    public static final short R0 = 0,
236
            R1 = 1,
237
            R2 = 2,
238
            R3 = 3,
239
            R4 = 4,
240
            R5 = 5,
241
            R6 = 6,   // r6 == sp
242
            R7 = 7,   // r7 == fp
243
            SP = 6,   // ^^
244
            FP = 7,   // ^^
245
            PC = 8;
246
247
248
    public static final short COMPILE_COMMAND = 0,
249
            RUN_COMMAND = 1,
250
            STOP_COMMAND = 2,
251
            CONTINUE_COMMAND = 3,
252
            CONTINUE_WITHOUT_PAUSES_COMMAND = 4,
253
            INPUT_FIELD = 5,
254
            CODE_TABLE_EDITING = 6,
255
            OPEN_FILE_COMMAND = 7;
256
257
258 3
    private int activeView = 0;
259
260
261
    private JFileChooser generalFileDialog;
262
263
    private GUIRunSettingsDialog setRunningOptionsDialog;
264
    private GUICompileSettingsDialog setCompilingOptionsDialog;
265
266
    private GUIHTMLDialog aboutDialog, manualDialog;
267
268 6
    private Font tableFont = new Font("Courier", java.awt.Font.PLAIN, 12);
269
270 2
    private Border blacklined = BorderFactory.createLineBorder(Color.black);
271
272
273
    private static final int COMMENT_LIST_SIZE = 100;
274
275
    private Logger logger;
276
277
    public static final String resourceHomeDir = "fi/helsinki/cs/titokone/";
278
    public static final String imgDir = "fi/helsinki/cs/titokone/img";
279
280
    /**
281
     * This is called when ActionEvent of some kind is fired.
282
     */
283
    public void actionPerformed(ActionEvent e) {
284
285
        /* This next if-statement is true,when user has pushed apply-button in
286
           'set running options' dialog.
287
        */
288 3
        if (e.getActionCommand().equals(GUIRunSettingsDialog.APPLY)) {
289 4
            guibrain.menuSetRunningOption(GUIBrain.LINE_BY_LINE, setRunningOptionsDialog.lineByLineCheckBox.isSelected());
290 4
            guibrain.menuSetRunningOption(GUIBrain.COMMENTED, setRunningOptionsDialog.showCommentsCheckBox.isSelected());
291 4
            guibrain.menuSetRunningOption(GUIBrain.ANIMATED, setRunningOptionsDialog.showAnimationCheckBox.isSelected());
292
        }
293
294
        /* And this if-statement is true,when user has pushed apply-button in
295
           'set compiling options' dialog.
296
        */
297 3
        else if (e.getActionCommand().equals(GUICompileSettingsDialog.APPLY)) {
298 4
            guibrain.menuSetCompilingOption(GUIBrain.PAUSED, setCompilingOptionsDialog.lineByLineCheckBox.isSelected());
299 4
            guibrain.menuSetCompilingOption(GUIBrain.COMMENTED, setCompilingOptionsDialog.showCommentsCheckBox.isSelected());
300
        }
301
    }
302
303
304
    public GUI() {
305 1
        thisGUI = this;
306
        logger = Logger.getLogger(getClass().getPackage().getName());
307 1
        print("Initializing setRunningOptionsDialog...");
308 4
        setRunningOptionsDialog = new GUIRunSettingsDialog(this, false);
309 3
        setRunningOptionsDialog.addComponentListener(new ComponentListener() {
310
            public void componentShown(ComponentEvent e) {
311
            }
312
313
            public void componentHidden(ComponentEvent e) {
314 1
                guibrain.refreshRunningOptions();
315
            }
316
317
            public void componentMoved(ComponentEvent e) {
318
            }
319
320
            public void componentResized(ComponentEvent e) {
321
            }
322
        });
323
324 1
        print("Initializing setCompilingOptionsDialog...");
325 4
        setCompilingOptionsDialog = new GUICompileSettingsDialog(this, false);
326 3
        setCompilingOptionsDialog.addComponentListener(new ComponentListener() {
327
            public void componentShown(ComponentEvent e) {
328
            }
329
330
            public void componentHidden(ComponentEvent e) {
331 1
                guibrain.refreshCompilingOptions();
332
            }
333
334
            public void componentMoved(ComponentEvent e) {
335
            }
336
337
            public void componentResized(ComponentEvent e) {
338
            }
339
        });
340
341 1
        print("Initializing symbolsHashMap...");
342 2
        symbolsHashMap = new HashMap<String, Integer>();
343
344 1
        print("Initializing GUI...");
345 1
        initGUI();
346
347
348 1
        initAnimator();
349 1
        initDisplay();
350
351 1
        print("Initializing GUIBrain...");
352 2
        guibrain = new GUIBrain(this, animator, display);
353 1
        print("Inserting menubar...");
354 1
        insertMenuBar(this);
355 3
        disable(GUI.COMPILE_COMMAND);
356 3
        disable(GUI.RUN_COMMAND);
357 3
        disable(GUI.CONTINUE_COMMAND);
358 3
        disable(GUI.CONTINUE_WITHOUT_PAUSES_COMMAND);
359 3
        disable(GUI.STOP_COMMAND);
360 3
        disable(GUI.OPEN_FILE_COMMAND);
361
362 1
        print("Packing...");
363 1
        this.pack();
364
365 3
        rightSplitPane.setDividerLocation(0.5);
366 3
        setGUIView(1);
367
368
369 1
        print("Setting visible...");
370 3
        this.setVisible(true);
371
372
373 1
        print("Setting title...");
374 1
        setTitle("Titokone v1.300");
375
376 3
        addWindowListener(new WindowAdapter() {
377
            public void windowClosing(WindowEvent e) {
378 3
                System.exit(0);
379
            }
380
        }
381
        );
382
383
384
        try {
385 2
            generalFileDialog = new JFileChooser();
386 2
            generalFileDialog.setCurrentDirectory(new File("."));
387
        } catch (NullPointerException e) {
388 1
            System.out.println("Exiting due to a bug in a recent Java version.\n" +
389
                    "Please start again.");
390 3
            System.exit(0);
391
        }
392 3
        enable(GUI.OPEN_FILE_COMMAND);
393
394 4
        manualDialog = new GUIHTMLDialog(this, false, "en/manual.html");
395 4
        aboutDialog = new GUIHTMLDialog(this, false, "en/about.html");
396
397 1
        print("Updating texts...");
398 1
        updateAllTexts();
399
400
401 1
        print("Complete!");
402
403
    }
404
405
406
    public void setGUIView(int view) {
407
408 3
        leftPanel = new JPanel(new BorderLayout());
409
410 3
        if (view == 1) {
411 1
            mainSplitPane.setLeftComponent(leftPanel);
412 1
            validate();
413 3
        } else if (view == 2) {
414
415 1
            leftPanel.add(codeTableScrollPane);
416 1
            mainSplitPane.setLeftComponent(leftPanel);
417 1
            validate();
418 3
        } else if (view == 3) {
419 1
            leftPanel.add(dataAndInstructionsTableSplitPane);
420 1
            mainSplitPane.setLeftComponent(leftPanel);
421 1
            validate();
422
            int dividerLocation;
423
424
            /* Set the location of divider between data and instructions table */
425 1
            dividerLocation = instructionsTable.getHeight();
426 2
            dividerLocation += dataAndInstructionsTableSplitPane.getDividerSize();
427 3
            dividerLocation += instructionsTable.getTableHeader().getHeight();
428 6
            if (dividerLocation > leftPanel.getHeight() / 2) {
429 4
                dividerLocation = leftPanel.getHeight() / 2;
430
            }
431 1
            dataAndInstructionsTableSplitPane.setDividerLocation(dividerLocation);
432 1
            leftPanel.invalidate();
433
434
        }
435 1
        activeView = view;
436 3
        mainSplitPane.setDividerLocation(0.5);
437
    }
438
439
440
    /**
441
     * GUIBrain can call this method to reset GUI, which means that all tables
442
     * (except registers table) are emptied and all their rows are unselected.
443
     */
444
    public void resetAll() {
445
446 1
        unselectAll();
447 1
        insertSymbolTable(null);
448
        //((DefaultListModel)commentList.getModel()).clear();
449 1
        outputTextArea.setText("");
450
    }
451
452
453
    /**
454
     * Unselects all selected rows in every table.
455
     */
456
    public void unselectAll() {
457
458 1
        codeTable.unselectAllRows();
459 1
        instructionsTable.unselectAllRows();
460 1
        dataTable.unselectAllRows();
461 1
        registersTable.unselectAllRows();
462 1
        symbolTable.unselectAllRows();
463 1
        this.repaint();
464
    }
465
466
467
    /**
468
     * Inserts a text into status bar at the bottom of the screen.
469
     *
470
     * @param str The text to be inserted.
471
     */
472
    public void updateStatusBar(String str) {
473 1
        if (str == null) {
474 1
            statusBar.setText(" ");
475
        } else {
476 5
            statusBar.setText(str + " ");
477
        }
478
479 1
        statusBar.validate();
480
    }
481
482
483
    /**
484
     * Updates a value of a register in registersTable.
485
     *
486
     * @param reg      The register to be updated. Valid values are R1, R2, R3, R3, R4,
487
     *                 R5, R6, R7, SP and FP. (R6==SP and R7==FP).
488
     * @param newValue The new value.
489
     */
490
    public void updateReg(short reg, int newValue) {
491 2
        updateReg(reg, new Integer(newValue));
492
    }
493
494
495
    /**
496
     * Updates a register value.
497
     *
498
     * @param reg      The register to be updated.
499
     * @param newValue The new value.
500
     */
501
    public void updateReg(short reg, Integer newValue) {
502 1
        if (newValue == null) {
503
            return;
504
        }
505 1
        DefaultTableModel registersTableModel = (DefaultTableModel) registersTable.getModel();
506 8
        registersTable.setValueAt("" + newValue.intValue(), reg, 1);
507
    }
508
509
510
    /**
511
     * Inserts data into code table. The data must be provided as a String-array, where
512
     * one element corresponds to one line of original data. One element will be shown
513
     * as one row in GUI.
514
     *
515
     * @param src The data to be shown and one element corresponds to one line.
516
     */
517
    public void insertToCodeTable(String[] src) {
518
519
        int rows = src.length;
520 2
        Object[][] tableContents = new Object[rows][1];
521 5
        for (int i = 0; i < rows; i++) {
522 2
            tableContents[i][0] = src[i];
523
        }
524
525 1
        DefaultTableModel codeTableModel = (DefaultTableModel) codeTable.getModel();
526 1
        codeTableModel.setDataVector(tableContents, codeTableIdentifiers);
527 8
        codeTable.getColumnModel().getColumn(0).setPreferredWidth(codeTable.getMaxTextLengthInColumn(0));
528
    }
529
530
531
    private static final int lineColumnSize = 50;
532
    private static final int numericValueColumnSize = 100;
533
    private static final int cellMargin = 6;
534
535
536
    /**
537
     * Inserts data to instructionsTable. The data must be provided so that the dimension
538
     * of both parameter is same. If they aren't, then false is returned and no insertion
539
     * made. The second column will be filled with binaryCommand's contents and the third
540
     * column with symbolicCommand's contents. The first column will contain line numbers
541
     * which are 0...N, where N is size of the table.
542
     *
543
     * @param binaryCommand   Contents of the second column.
544
     * @param symbolicCommand Contents of the third column.
545
     * @return True if operation was successful.
546
     *         False if the dimension of the parameters is not same.
547
     */
548
    public boolean insertToInstructionsTable(String[] binaryCommand, String[] symbolicCommand) {
549
550 1
        if (binaryCommand.length != symbolicCommand.length) {
551 3
            return false;
552
        }
553
        int rows = binaryCommand.length;
554 2
        Object[][] tableContents = new Object[rows][3];
555 5
        for (int i = 0; i < rows; i++) {
556 6
            tableContents[i][0] = "" + i;
557 2
            tableContents[i][1] = binaryCommand[i];
558 2
            tableContents[i][2] = symbolicCommand[i];
559
        }
560
561 1
        DefaultTableModel instructionsTableModel = (DefaultTableModel) instructionsTable.getModel();
562 1
        instructionsTableModel.setDataVector(tableContents, instructionsTableIdentifiers);
563 7
        instructionsTable.getColumnModel().getColumn(0).setPreferredWidth(lineColumnSize);
564 7
        instructionsTable.getColumnModel().getColumn(1).setPreferredWidth(numericValueColumnSize);
565 2
        if (rows > 0) {
566 11
            instructionsTable.getColumnModel().getColumn(2).setPreferredWidth(instructionsTable.getMaxTextLengthInColumn(2) + cellMargin);
567
        } else {
568 7
            instructionsTable.getColumnModel().getColumn(2).setPreferredWidth(0);
569
        }
570
        //instructionsTable.validate();
571 3
        return true;
572
    }
573
574
575
    /**
576
     * Functionality of this method is exactly similar to insertToInstructionsTable(String[],String[]),
577
     * but here the first parameter's type is int[]. That's for convenience, because otherwise
578
     * it would require an additional for-loop to convert int[] to String[].
579
     *
580
     * @param binaryCommand   Contents of the second column.
581
     * @param symbolicCommand Contents of the third column.
582
     * @return True if operation was successful.
583
     *         False if the dimension of the parameters is not same.
584
     */
585
    public boolean insertToInstructionsTable(int[] binaryCommand, String[] symbolicCommand) {
586
587 1
        if (binaryCommand.length != symbolicCommand.length) {
588 3
            return false;
589
        }
590
        int rows = binaryCommand.length;
591 2
        Object[][] tableContents = new Object[rows][3];
592 5
        for (int i = 0; i < rows; i++) {
593 6
            tableContents[i][0] = "" + i;
594 6
            tableContents[i][1] = "" + binaryCommand[i];
595 2
            tableContents[i][2] = symbolicCommand[i];
596
        }
597
598 1
        DefaultTableModel instructionsTableModel = (DefaultTableModel) instructionsTable.getModel();
599 1
        instructionsTableModel.setDataVector(tableContents, instructionsTableIdentifiers);
600 7
        instructionsTable.getColumnModel().getColumn(0).setPreferredWidth(lineColumnSize);
601 7
        instructionsTable.getColumnModel().getColumn(1).setPreferredWidth(numericValueColumnSize);
602 2
        if (rows > 0) {
603 11
            instructionsTable.getColumnModel().getColumn(2).setPreferredWidth(instructionsTable.getMaxTextLengthInColumn(2) + cellMargin);
604
        } else {
605 7
            instructionsTable.getColumnModel().getColumn(2).setPreferredWidth(0);
606
        }
607 3
        return true;
608
    }
609
610
611
    /**
612
     * Functionality of this method is exactly similar to insertToInstructionsTable(String[],String[]),
613
     * but here the first parameter would be an array of empty Strings. Thus the second column
614
     * will empty after calling this method.
615
     *
616
     * @param symbolicCommand Contents of the third column.
617
     * @return True if operation was successful.
618
     *         False if the dimension of the parameters is not same.
619
     */
620
    public boolean insertToInstructionsTable(String[] symbolicCommand) {
621
        String[] empty = new String[symbolicCommand.length];
622 2
        return insertToInstructionsTable(empty, symbolicCommand);
623
    }
624
625
626
    /**
627
     * Updates contents of a line in either instructions table or data table. Parameter lineNumber
628
     * decides which one to update - lines 0...N are rows in instructionsTable and lines N+1...N+P
629
     * are rows in dataTable, where N is the row count of instructionsTable and P is the row count
630
     * of dataTable.
631
     *
632
     * @param lineNumber      The line number of the row to update. Lines 0...N are rows in instructionsTable
633
     *                        and lines N+1...N+P are rows in dataTable, where N is the row count of
634
     *                        instructionsTable and P is the row count of dataTable.
635
     * @param binaryCommand   The content of the node in the second column.
636
     * @param symbolicCommand The content of the node in the third column.
637
     */
638
    public boolean updateInstructionsAndDataTableLine(int lineNumber, int binaryCommand, String symbolicCommand) {
639
640 2
        if (lineNumber < 0) {
641 3
            return false;
642 3
        } else if (lineNumber < instructionsTable.getRowCount()) {
643 8
            ((DefaultTableModel) instructionsTable.getModel()).setValueAt("" + binaryCommand, lineNumber, 1);
644 4
            ((DefaultTableModel) instructionsTable.getModel()).setValueAt(symbolicCommand, lineNumber, 2);
645 3
            return true;
646 5
        } else if (lineNumber < instructionsTable.getRowCount() + dataTable.getRowCount()) {
647 2
            lineNumber = lineNumber - instructionsTable.getRowCount();
648 8
            ((DefaultTableModel) dataTable.getModel()).setValueAt("" + binaryCommand, lineNumber, 1);
649 4
            ((DefaultTableModel) dataTable.getModel()).setValueAt(symbolicCommand, lineNumber, 2);
650 3
            return true;
651
        } else {
652 3
            return false;
653
        }
654
    }
655
656
657
    /**
658
     * Functionality of this method is otherwise similar to updateInstructionsAndDataTableLine(int,int,String),
659
     * but this one doesn't change the third column. This version is useful during compilation, where
660
     * the contents of the third column are set, but the second column is empty at first and as the compilation
661
     * goes on, it's contents are updated.
662
     *
663
     * @param lineNumber    The line number of the row to update. Lines 0...N are rows in instructionsTable
664
     *                      and lines N+1...N+P are rows in dataTable, where N is the row count of
665
     *                      instructionsTable and P is the row count of dataTable.
666
     * @param binaryCommand The content of the node in the second column.
667
     * @return True if the operation was successful.
668
     *         False is there's was no such line as lineNumber.
669
     */
670
    public boolean updateInstructionsAndDataTableLine(int lineNumber, int binaryCommand) {
671
672 2
        if (lineNumber < 0) {
673 3
            return false;
674 3
        } else if (lineNumber < instructionsTable.getRowCount()) {
675 1
            DefaultTableModel instructionsTableModel = (DefaultTableModel) instructionsTable.getModel();
676 7
            instructionsTableModel.setValueAt("" + binaryCommand, lineNumber, 1);
677 6
            int newTextLength = instructionsTable.getTextLength(lineNumber, 1) + cellMargin;
678
679 7
            if (newTextLength > instructionsTable.getColumnModel().getColumn(1).getWidth()) {
680 5
                instructionsTable.getColumnModel().getColumn(1).setPreferredWidth(newTextLength);
681 5
                dataTable.getColumnModel().getColumn(1).setPreferredWidth(newTextLength);
682
            }
683
684 1
            validate();
685
686 3
            return true;
687 5
        } else if (lineNumber < instructionsTable.getRowCount() + dataTable.getRowCount()) {
688 2
            lineNumber = lineNumber - instructionsTable.getRowCount();
689 1
            DefaultTableModel dataTableModel = (DefaultTableModel) dataTable.getModel();
690 7
            dataTableModel.setValueAt("" + binaryCommand, lineNumber, 1);
691 6
            int newTextLength = dataTable.getTextLength(lineNumber, 1) + cellMargin;
692
693 7
            if (newTextLength > dataTable.getColumnModel().getColumn(1).getWidth()) {
694 5
                instructionsTable.getColumnModel().getColumn(1).setPreferredWidth(newTextLength);
695 5
                dataTable.getColumnModel().getColumn(1).setPreferredWidth(newTextLength);
696
            }
697
698 1
            validate();
699
700 3
            return true;
701
        } else {
702 3
            return false;
703
        }
704
    }
705
706
707
    /**
708
     * Inserts data into data table. Parameter dataContents is inserted into the
709
     * second column and the third column will be left empty. The first column holds
710
     * numbers, which are line numbers. They will be calculated so that the first
711
     * element will be one greater than the last element of instructionsTable. Because
712
     * of this, this method should only be called AFTER calling insertToInstructionsTable()
713
     * or otherwise line numbers will not be correct.
714
     *
715
     * @param dataContents Contents of the second column.
716
     */
717
    public void insertToDataTable(String[] dataContents) {
718
719
        int rows = dataContents.length;
720 1
        int instructionsTableRowCount = instructionsTable.getRowCount();
721
722 2
        Object[][] tableContents = new Object[rows][3];
723 5
        for (int i = 0; i < rows; i++) {
724 7
            tableContents[i][0] = "" + (i + instructionsTableRowCount);
725 6
            tableContents[i][1] = "" + dataContents[i];
726 2
            tableContents[i][2] = "";
727
        }
728
729 1
        DefaultTableModel dataTableModel = (DefaultTableModel) dataTable.getModel();
730 1
        dataTableModel.setDataVector(tableContents, dataTableIdentifiers);
731
732 7
        dataTable.getColumnModel().getColumn(0).setPreferredWidth(lineColumnSize);
733 7
        dataTable.getColumnModel().getColumn(1).setPreferredWidth(numericValueColumnSize);
734
735 3
        int instructionsTableMaxTextLength = instructionsTable.getMaxTextLengthInColumn(2);
736
737
        int dataTableMaxTextLength;
738 2
        if (rows > 0) {
739 3
            dataTableMaxTextLength = dataTable.getMaxTextLengthInColumn(2);
740
        } else {
741 2
            dataTableMaxTextLength = 0;
742
        }
743
744 2
        if (instructionsTableMaxTextLength > dataTableMaxTextLength) {
745 8
            instructionsTable.getColumnModel().getColumn(2).setPreferredWidth(instructionsTableMaxTextLength + cellMargin);
746 8
            dataTable.getColumnModel().getColumn(2).setPreferredWidth(instructionsTableMaxTextLength + cellMargin);
747
        } else {
748 8
            instructionsTable.getColumnModel().getColumn(2).setPreferredWidth(dataTableMaxTextLength + cellMargin);
749 8
            dataTable.getColumnModel().getColumn(2).setPreferredWidth(dataTableMaxTextLength + cellMargin);
750
        }
751
752
    }
753
754
755
    /**
756
     * Functionally this is exactly similar to insertToDataTable(String[]), but this
757
     * just takes int[] as parameter. This is here just for convenience, because
758
     * converting a String-table to int-table would require an extra for-loop.
759
     * The data array determines the length of the contents to be inserted.
760
     * If symbolic is shorter than data, the remaining spaces are filled with
761
     * empty strings.
762
     *
763
     * @param data Contents of the second column.
764
     */
765
    public void insertToDataTable(int[] data, String[] symbolic) {
766
767
        int rows = data.length;
768 1
        int instructionsTableRowCount = instructionsTable.getRowCount();
769
770 2
        Object[][] tableContents = new Object[rows][3];
771 5
        for (int i = 0; i < rows; i++) {
772 7
            tableContents[i][0] = "" + (i + instructionsTableRowCount);
773 6
            tableContents[i][1] = "" + data[i];
774 2
            if (symbolic.length > i) {
775 6
                tableContents[i][2] = "" + symbolic[i];
776
            } else {
777 2
                tableContents[i][2] = "";
778
            }
779
        }
780
781 1
        DefaultTableModel dataTableModel = (DefaultTableModel) dataTable.getModel();
782 1
        dataTableModel.setDataVector(tableContents, dataTableIdentifiers);
783
784 7
        dataTable.getColumnModel().getColumn(0).setPreferredWidth(lineColumnSize);
785 7
        dataTable.getColumnModel().getColumn(1).setPreferredWidth(numericValueColumnSize);
786
787 3
        int instructionsTableMaxTextLength = instructionsTable.getMaxTextLengthInColumn(2);
788
789
        int dataTableMaxTextLength;
790 2
        if (rows > 0) {
791 3
            dataTableMaxTextLength = dataTable.getMaxTextLengthInColumn(2);
792
        } else {
793 2
            dataTableMaxTextLength = 0;
794
        }
795
796 2
        if (instructionsTableMaxTextLength > dataTableMaxTextLength) {
797 8
            instructionsTable.getColumnModel().getColumn(2).setPreferredWidth(instructionsTableMaxTextLength + cellMargin);
798 8
            dataTable.getColumnModel().getColumn(2).setPreferredWidth(instructionsTableMaxTextLength + cellMargin);
799
        } else {
800 8
            instructionsTable.getColumnModel().getColumn(2).setPreferredWidth(dataTableMaxTextLength + cellMargin);
801 8
            dataTable.getColumnModel().getColumn(2).setPreferredWidth(dataTableMaxTextLength + cellMargin);
802
        }
803
    }
804
805
806
    /**
807
     * Inserts symbols and their values into symbol table. A symbol's name is given
808
     * in symbolsAndValues[x][0] and its value in symbolsAndValues[x][1]. This method
809
     * first makes the table and its HashMap empty and then enters the symbol and
810
     * the values into both the table and its HashMap.
811
     *
812
     * @param symbolsAndValues A symbol's name is given in symbolsAndValues[x][0] and
813
     *                         its value in symbolsAndValues[x][1].
814
     *                         This can be null, in which case symbol table will be
815
     *                         set empty.
816
     * @return Returns false if parameter is not of correct form. It MUST be of such
817
     *         type where the size of the second dimension is precisely two.
818
     *         It can however be null, which means an empty symbol table.
819
     */
820
    public boolean insertSymbolTable(String[][] symbolsAndValues) {
821
822
        /* These are declared just to make the code clearer. They are used to get
823
           symbol names and values from symbolsAndValues[][].
824
        */
825 2
        final int NAME = 0;
826 2
        final int VALUE = 1;
827
828 1
        symbolsHashMap.clear();
829 1
        DefaultTableModel symbolTableModel = (DefaultTableModel) symbolTable.getModel();
830
831
        /* Null parameter equals to setting an empty symbol table. */
832 2
        if (symbolsAndValues == null || symbolsAndValues.length == 0) {
833 1
            symbolTableModel.setDataVector(null, symbolTableIdentifiers);
834 3
            return true;
835
        }
836 5
        if (symbolsAndValues[0].length != 2) {
837 3
            return false;
838
        }
839
840
        int numOfSymbols = symbolsAndValues.length;
841
842
843 2
        Object[][] tableContents = new Object[numOfSymbols][2];
844 5
        for (int row = 0; row < numOfSymbols; row++) {
845 4
            tableContents[row][0] = symbolsAndValues[row][NAME];
846 4
            tableContents[row][1] = symbolsAndValues[row][VALUE];
847 4
            symbolsHashMap.put(symbolsAndValues[row][NAME], new Integer(row));
848
        }
849 1
        symbolTableModel.setDataVector(tableContents, symbolTableIdentifiers);
850 3
        return true;
851
    }
852
853
854
    /**
855
     * Updates the value of a symbol if it already exists, or adds a new row
856
     * and inserts the symbol and its value there.
857
     */
858
    public void updateRowInSymbolTable(String symbolName, Integer symbolValue) {
859
860
        /* Object row tells the row in GUI's symbol table, where symbolName has been
861
           saved or it's null if it hasn't been saved there yet.
862
        */
863 1
        Integer row = (Integer) symbolsHashMap.get(symbolName);
864 1
        DefaultTableModel symbolTableModel = (DefaultTableModel) symbolTable.getModel();
865
866 1
        if (row != null) {
867
            /* symbolName is already in symbol table so a new row is not needed. The old
868
               value is just updated if there's any. Note that symbolValue may also be null,
869
               which means that the symbol was found, but not yet set. In that case the
870
               value in GUI is not modified.
871
            */
872 1
            if (symbolValue != null) {
873 4
                symbolTableModel.setValueAt(symbolValue, row.intValue(), 1);
874
            }
875
        } else {
876
            /* symbolName is not in symbol table so now a new is needed
877
            */
878 1
            DefaultTableModel tableModel = (DefaultTableModel) symbolTable.getModel();
879
            String[] data;
880 1
            if (symbolValue == null) {
881 6
                data = new String[]{symbolName, ""};
882
            } else {
883 10
                data = new String[]{symbolName, "" + symbolValue};
884
            }
885 1
            tableModel.addRow(data);
886
887 5
            row = new Integer(symbolTable.getRowCount() - 1);
888 1
            symbolsHashMap.put(symbolName, row);
889
        }
890
    }
891
892
893
    /**
894
     * Adds a comment into the comment list.
895
     */
896
    public void addComment(String comment) {
897 1
        if (comment == null) {
898
            return;
899
        }
900
901 1
        DefaultListModel commentListModel = (DefaultListModel) commentList.getModel();
902 1
        int numberOfComponents = commentListModel.size();
903
904
        /* Comment list is not allowed to grow over COMMENT_LIST_SIZE */
905 3
        if (numberOfComponents == COMMENT_LIST_SIZE) {
906 4
            commentListModel.removeElementAt(numberOfComponents - 1);
907
        }
908 3
        commentListModel.add(0, comment);
909 3
        commentList.setSelectedIndex(0);
910
    }
911
912
913
    /**
914
     * Adds a number into the text area on the right side of the screen.
915
     */
916
    public void addOutputData(int outputValue) {
917 7
        outputTextArea.insert(outputValue + "\n", 0);
918
919
        /*      // This commented code implements this method in a way that it adds a new row
920
                // at the end of the TextArea. It's not removed since it may be useful.
921
922
        outputTextArea.append(outputValue + "\n");
923
        int height = outputTextArea.getHeight();
924
        int viewHeight = (int)outputScrollPane.getHeight();
925
        int newY = 0;
926
        if (height-viewHeight > 0) {
927
          newY = height-viewHeight+3;
928
        }
929
        outputScrollPane.getViewport().setViewPosition(new Point(0, newY));
930
        */
931
    }
932
933
934
    /**
935
     * Enables or disables a given command.
936
     *
937
     * @param command The command to be set. It can be RUN_COMMAND, STOP_COMMAND,
938
     *                COMPILE_COMMAND, CONTINUE_COMMAND, CONTINUE_WITHOUT_PAUSES_COMMAND
939
     *                INPUT_FIELD.
940
     * @param b       'True' to enable the command. 'False' to disable it.
941
     */
942
    public void setEnabled(short command, boolean b) {
943
        switch (command) {
944
            case RUN_COMMAND:
945 1
                runMenuItem.setEnabled(b);
946 1
                runButton.setEnabled(b);
947
                break;
948
            case STOP_COMMAND:
949 1
                stopMenuItem.setEnabled(b);
950 1
                stopButton.setEnabled(b);
951
                break;
952
            case COMPILE_COMMAND:
953 1
                compileMenuItem.setEnabled(b);
954 1
                compileButton.setEnabled(b);
955
                break;
956
            case CONTINUE_COMMAND:
957 1
                continueMenuItem.setEnabled(b);
958 1
                continueButton.setEnabled(b);
959 1
                animatorContinueButton.setEnabled(b);
960
                break;
961
            case CONTINUE_WITHOUT_PAUSES_COMMAND:
962 1
                continueToEndMenuItem.setEnabled(b);
963 1
                continueToEndButton.setEnabled(b);
964
                break;
965
            case INPUT_FIELD:
966 1
                enterNumberLabel.setEnabled(b);
967 1
                inputField.setEnabled(b);
968 1
                enterNumberButton.setEnabled(b);
969 1
                inputField.setText("");
970 1
                if (b) {
971 3
                    inputPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.red), "KBD"));
972 1
                    instructionsTable.setSelectionBackground(Color.yellow);
973
                }
974 1
                if (!b) {
975 3
                    inputPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.gray), "KBD"));
976 2
                    instructionsTable.setSelectionBackground(registersTable.getSelectionBackground());
977
                }
978
979
                break;
980
            case CODE_TABLE_EDITING:
981 1
                codeTable.setEnabled(b);
982
                break;
983
            case OPEN_FILE_COMMAND:
984 1
                openFile.setEnabled(b);
985 1
                openFileButton.setEnabled(b);
986
        }
987
    }
988
989
990
    /**
991
     * Enables a command.
992
     *
993
     * @param command The command to be enabled. It can be RUN_COMMAND, STOP_COMMAND,
994
     *                COMPILE_COMMAND, CONTINUE_COMMAND, CONTINUE_WITHOUT_PAUSES_COMMAND
995
     *                INPUT_FIELD.
996
     */
997
    public void enable(short command) {
998 3
        setEnabled(command, true);
999
    }
1000
1001
1002
    /**
1003
     * Disables a command.
1004
     *
1005
     * @param command The command to be Disabled. It can be RUN_COMMAND, STOP_COMMAND,
1006
     *                COMPILE_COMMAND, CONTINUE_COMMAND, CONTINUE_WITHOUT_PAUSES_COMMAND
1007
     *                INPUT_FIELD.
1008
     */
1009
    public void disable(short command) {
1010 3
        setEnabled(command, false);
1011
    }
1012
1013
1014
    /**
1015
     * paused compiling - used in setSelected() method
1016
     */
1017
    public static final short OPTION_COMPILING_PAUSED = 0;
1018
    /**
1019
     * commented compiling - used in setSelected() method
1020
     */
1021
    public static final short OPTION_COMPILING_COMMENTED = 1;
1022
    /**
1023
     * paused running - used in setSelected() method
1024
     */
1025
    public static final short OPTION_RUNNING_PAUSED = 2;
1026
    /**
1027
     * commented running - used in setSelected() method
1028
     */
1029
    public static final short OPTION_RUNNING_COMMENTED = 3;
1030
    /**
1031
     * animated running - used in setSelected() method
1032
     */
1033
    public static final short OPTION_RUNNING_ANIMATED = 4;
1034
1035
1036
    /**
1037
     * Sets a certain option selected or unselected in GUI. Note that this doesn't
1038
     * take any position on what the options does. GUIBrain uses this method to
1039
     * to synchronize GUI for settings loaded from settings file.
1040
     */
1041
    public void setSelected(short option, boolean b) {
1042
        switch (option) {
1043
            case OPTION_COMPILING_PAUSED:
1044 1
                setCompilingOptionsDialog.lineByLineCheckBox.setSelected(b);
1045
                break;
1046
            case OPTION_COMPILING_COMMENTED:
1047 1
                setCompilingOptionsDialog.showCommentsCheckBox.setSelected(b);
1048
                break;
1049
            case OPTION_RUNNING_PAUSED:
1050 1
                lineByLineToggleButton.setSelected(b);
1051 1
                setRunningOptionsDialog.lineByLineCheckBox.setSelected(b);
1052
                //if(!b)
1053
                //  setSelected(OPTION_RUNNING_ANIMATED, false);
1054
                break;
1055
            case OPTION_RUNNING_COMMENTED:
1056 1
                showCommentsToggleButton.setSelected(b);
1057 1
                setRunningOptionsDialog.showCommentsCheckBox.setSelected(b);
1058
                break;
1059
            case OPTION_RUNNING_ANIMATED:
1060 1
                showAnimationToggleButton.setSelected(b);
1061 1
                setRunningOptionsDialog.showAnimationCheckBox.setSelected(b);
1062
                //if(b)
1063
                //  setSelected(OPTION_RUNNING_PAUSED, true);
1064
                break;
1065
        }
1066
    }
1067
1068
1069
    /**
1070
     * No table - used in setGUIView() method
1071
     */
1072
    public static final short NONE = 1;
1073
    /**
1074
     * Code table - used in centerToLine(), selectRow() and setGUIView() methods
1075
     */
1076
    public static final short CODE_TABLE = 2;
1077
    /**
1078
     * Instructions and data table - used in centerToLine(), selectRow() and setGUIView() methods
1079
     */
1080
    public static final short INSTRUCTIONS_AND_DATA_TABLE = 3;
1081
1082
1083
    /**
1084
     * Sets the viewport of a certain table so that the given line is visible.
1085
     *
1086
     * @param line  Number of the line, that is wanted to be visible.
1087
     * @param table The table. Valid values for this parameter are CODE_TABLE
1088
     *              and INSTRUCTIONS_AND_DATA_TABLE
1089
     * @return True if the operation was successful.
1090
     *         False if the line number was not valid - ie there's no such line
1091
     *         in the table or there's no such table.
1092
     */
1093
    public boolean centerToLine(int line, short table) {
1094
        JScrollPane activeScrollPane = null;
1095
        JTableX activeTable = null;
1096
1097
        switch (table) {
1098
            case CODE_TABLE:
1099
1100
                /* Check if there's no such line */
1101 5
                if (line >= codeTable.getRowCount() || line < 0) {
1102 3
                    return false;
1103
                }
1104
                activeScrollPane = codeTableScrollPane;
1105
                activeTable = codeTable;
1106
                break;
1107
1108
1109
            case INSTRUCTIONS_AND_DATA_TABLE:
1110
1111
                /* Check if there's no such line */
1112 7
                if (line >= (instructionsTable.getRowCount() + dataTable.getRowCount()) || line < 0) {
1113 3
                    return false;
1114
                }
1115
1116
1117 3
                if (line < instructionsTable.getRowCount()) {
1118
                    activeScrollPane = instructionsTableScrollPane;
1119
                    activeTable = instructionsTable;
1120
                } else {
1121
                    activeScrollPane = dataTableScrollPane;
1122
                    activeTable = dataTable;
1123 2
                    line -= instructionsTable.getRowCount();
1124
                }
1125
                break;
1126
1127
1128
            default:
1129
                break;
1130
        }
1131
1132 2
        if (activeScrollPane == null || activeTable == null) {
1133 3
            return false;
1134
        }
1135
1136 4
        int tableViewHeight = activeScrollPane.getHeight() - activeTable.getTableHeader().getHeight();
1137
        int y;
1138
1139 3
        if (tableViewHeight > activeTable.getHeight()) {
1140 2
            y = 0;
1141
        } else {
1142 11
            y = line * activeTable.getRowHeight() - tableViewHeight / 2 + activeTable.getRowHeight() / 2;
1143 4
            y = (y < 0) ? 0 : y;
1144 4
            if (y + tableViewHeight > activeTable.getHeight()) {
1145 7
                y = activeTable.getHeight() - tableViewHeight + activeTable.getRowMargin() + 2;
1146
                /* I don't know where that number 2 comes from, but I included it there, because the viewport
1147
doesn't go to exactly right place without it. Otherwise it'd be misplaced by two pixels. :) */
1148
            }
1149
        }
1150
1151
        // GuiThreader seems to call this from a non-EDT thread.
1152
        final JScrollPane finalActiveScrollPane = activeScrollPane;
1153
        final int finalY = y;
1154 5
        SwingUtilities.invokeLater(new Runnable() {
1155
            @Override
1156
            public void run()
1157
            {
1158 5
                finalActiveScrollPane.getViewport().setViewPosition(new Point(0, finalY));
1159
            }
1160
        });
1161 3
        return true;
1162
1163
    }
1164
1165
1166
    /**
1167
     * Selects a row from code table or from instructions and data table. Instructions
1168
     * and data table, although two tables, are treated as one. Suppose that instructions
1169
     * table is n rows and data table is m rows. This is treated as one table of length
1170
     * n+m rows and its n first rows are same as instruction table's rows and m next
1171
     * rows are same as data table's rows.
1172
     *
1173
     * @param table The desired table. Proper values are CODE_TABLE and
1174
     *              INSTRUCTIONS_AND_DATA_TABLE.
1175
     * @param line  Line to be selected.
1176
     */
1177
    public void selectLine(int line, short table) {
1178
1179 2
        if (line < 0) {
1180
            return;
1181
        }
1182
1183
        switch (table) {
1184
            case CODE_TABLE:
1185 3
                if (line > codeTable.getRowCount()) {
1186
                    return;
1187
                }
1188 3
                centerToLine(line, CODE_TABLE);
1189 1
                codeTable.selectRow(line);
1190
                break;
1191
1192
            case INSTRUCTIONS_AND_DATA_TABLE:
1193 5
                if (line >= (instructionsTable.getRowCount() + dataTable.getRowCount())) {
1194
                    return;
1195
                }
1196
1197 3
                if (line < instructionsTable.getRowCount()) {
1198 3
                    centerToLine(line, INSTRUCTIONS_AND_DATA_TABLE);
1199 1
                    instructionsTable.selectRow(line);
1200 2
                } else if (line == instructionsTable.getRowCount()) {
1201 1
                    instructionsTable.unselectAllRows();
1202 3
                    dataTable.selectRow(line - instructionsTable.getRowCount());
1203 7
                    dataTableScrollPane.getViewport().setViewPosition(new Point(0, 0));
1204
                } else {
1205 2
                    int dataTableRow = line - instructionsTable.getRowCount();
1206 3
                    centerToLine(line, INSTRUCTIONS_AND_DATA_TABLE);
1207 1
                    dataTable.selectRow(dataTableRow);
1208
1209
                }
1210
                break;
1211
1212
            default:
1213
                break;
1214
        }
1215 1
        this.repaint();
1216
    }
1217
1218
1219
    public void showAnimator() {
1220 3
        animatorFrame.setVisible(true);
1221
    }
1222
1223
    public void hideAnimator() {
1224 3
        animatorFrame.setVisible(false);
1225
    }
1226
1227
1228
    /**
1229
     * Changes the text which is shown in KBD-frame above the text field. If
1230
     * the new text is an empty string, then the label will disappear.
1231
     *
1232
     * @param newText The new text to be shown. If this is empty, then the label
1233
     *                will disappear.
1234
     */
1235
    public void changeTextInEnterNumberLabel(String newText) {
1236 1
        enterNumberLabel.setText(newText);
1237
    }
1238
1239
1240
    /**
1241
     * Updates all texts that are shown in GUI to be shown in current language. If
1242
     * language hasn't changed since last call of this method, then nothing will
1243
     * happen, but if it has, then all the text will appear in it. GUIBrain calls
1244
     * this method in setLanguage() method.
1245
     */
1246
    public void updateAllTexts() {
1247 3
        fileMenu.setText(new Message("File").toString());
1248 3
        openFile.setText(new Message("Open").toString());
1249 3
        compileMenuItem.setText(new Message("Compile").toString());
1250 3
        runMenuItem.setText(new Message("Run").toString());
1251 3
        continueMenuItem.setText(new Message("Continue").toString());
1252 3
        continueToEndMenuItem.setText(new Message("Continue without pauses").toString());
1253 3
        stopMenuItem.setText(new Message("Stop").toString());
1254 3
        eraseMem.setText(new Message("Erase memory").toString());
1255 3
        quit.setText(new Message("Exit").toString());
1256 3
        optionsMenu.setText(new Message("Options").toString());
1257 3
        setMemSize.setText(new Message("Set memory size").toString());
1258 3
        helpMenu.setText(new Message("Help").toString());
1259 3
        manual.setText(new Message("Manual").toString());
1260 3
        about.setText(new Message("About").toString());
1261 3
        setCompilingOptions.setText(new Message("Set compiling options").toString());
1262 3
        setRunningOptions.setText(new Message("Set running options").toString());
1263 3
        configureFileSystem.setText(new Message("Configure file system").toString());
1264 3
        selectDefaultStdinFile.setText(new Message("Select default stdin file").toString());
1265 3
        selectDefaultStdoutFile.setText(new Message("Select default stdout file").toString());
1266 3
        setLanguage.setText(new Message("Set language").toString());
1267 3
        selectLanguageFromFile.setText(new Message("Select from a file...").toString());
1268
1269 15
        instructionsTable.setToolTipTextForColumns(new String[]{
1270
                new Message("Line").toString(),
1271
                new Message("Numeric value").toString(),
1272
                new Message("Symbolic content").toString()
1273
        });
1274
1275 15
        dataTable.setToolTipTextForColumns(new String[]{
1276
                new Message("Line").toString(),
1277
                new Message("Numeric value").toString(),
1278
                new Message("Symbolic content").toString()
1279
        });
1280
1281 3
        openFileButton.setToolTipText(new Message("Open a new file").toString());
1282 3
        compileButton.setToolTipText(new Message("Compile the opened file").toString());
1283 3
        runButton.setToolTipText(new Message("Run the loaded program").toString());
1284 3
        continueButton.setToolTipText(new Message("Continue current operation").toString());
1285 3
        continueToEndButton.setToolTipText(new Message("Continue current operation without pauses").toString());
1286 3
        stopButton.setToolTipText(new Message("Stop current operation").toString());
1287 3
        lineByLineToggleButton.setToolTipText(new Message("Enable/disable line by line execution").toString());
1288 3
        showCommentsToggleButton.setToolTipText(new Message("Enable/disable extra comments while execution").toString());
1289 3
        showAnimationToggleButton.setToolTipText(new Message("Enable/disable animated execution").toString());
1290 3
        showDisplayToggleButton.setToolTipText(new Message("Show/hide video graphics display").toString());
1291
1292 3
        enterNumberButton.setText(new Message("Enter").toString());
1293
1294 4
        ((TitledBorder) symbolTableScrollPane.getBorder()).setTitle(new Message("Symbol table").toString());
1295 4
        ((TitledBorder) registersTableScrollPane.getBorder()).setTitle(new Message("Registers").toString());
1296
1297
1298 3
        UIManager.put("FileChooser.lookInLabelText", new Message("Look in:").toString());
1299 3
        UIManager.put("FileChooser.lookInLabelMnemonic", new Message("Look in:").toString());
1300 3
        UIManager.put("FileChooser.fileNameLabelText", new Message("File name:").toString());
1301 3
        UIManager.put("FileChooser.fileNameLabelMnemonic", new Message("File name:").toString());
1302 3
        UIManager.put("FileChooser.filesOfTypeLabelText", new Message("Files of type:").toString());
1303 3
        UIManager.put("FileChooser.filesOfTypeLabelMnemonic", new Message("Files of type:").toString());
1304 3
        UIManager.put("FileChooser.upFolderToolTipText", new Message("Up one level").toString());
1305 3
        UIManager.put("FileChooser.upFolderAccessibleName", new Message("Up").toString());
1306 3
        UIManager.put("FileChooser.homeFolderToolTipText", new Message("Desktop").toString());
1307 3
        UIManager.put("FileChooser.homeFolderAccessibleName", new Message("Desktop").toString());
1308 3
        UIManager.put("FileChooser.newFolderToolTipText", new Message("Create new folder").toString());
1309 3
        UIManager.put("FileChooser.newFolderAccessibleName", new Message("New folder").toString());
1310 3
        UIManager.put("FileChooser.listViewButtonToolTipText", new Message("List").toString());
1311 3
        UIManager.put("FileChooser.listViewButtonAccessibleName", new Message("List").toString());
1312 3
        UIManager.put("FileChooser.detailsViewButtonToolTipText", new Message("Details").toString());
1313 3
        UIManager.put("FileChooser.detailsViewButtonAccessibleName", new Message("Details").toString());
1314 3
        UIManager.put("FileChooser.cancelButtonText", new Message("Cancel").toString());
1315 3
        UIManager.put("FileChooser.cancelButtonMnemonic", new Message("Cancel").toString());
1316 3
        UIManager.put("FileChooser.openButtonText", new Message("Open").toString());
1317 3
        UIManager.put("FileChooser.openButtonMnemonic", new Message("Open").toString());
1318 3
        UIManager.put("FileChooser.acceptAllFileFilterText", new Message("All files").toString());
1319 3
        UIManager.put("FileChooser.FileChooser.openButtonText", new Message("Open").toString());
1320 3
        UIManager.put("FileChooser.openButtonToolTipText", new Message("Open the selected file").toString());
1321 3
        UIManager.put("FileChooser.cancelButtonToolTipText", new Message("Abort file selection").toString());
1322
1323 1
        generalFileDialog.updateUI(); // Title updates done for each show..().
1324
1325 1
        setRunningOptionsDialog.updateAllTexts();
1326 1
        setCompilingOptionsDialog.updateAllTexts();
1327 1
        aboutDialog.updateAllTexts();
1328 3
        aboutDialog.setTitle(new Message("About").toString());
1329 1
        manualDialog.updateAllTexts();
1330 3
        manualDialog.setTitle(new Message("Manual").toString());
1331
1332 3
        UIManager.put("OptionPane.yesButtonText", new Message("Yes").toString());
1333 3
        UIManager.put("OptionPane.noButtonText", new Message("No").toString());
1334
1335 1
        invalidate();
1336 1
        validate();
1337 1
        repaint();
1338
    }
1339
1340
1341
    /**
1342
     * Shows an error in a message dialog.
1343
     *
1344
     * @param errorMsg The message to be shown.
1345
     */
1346
    public void showError(String errorMsg) {
1347 5
        JOptionPane.showMessageDialog(null, errorMsg, new Message("Error").toString(), JOptionPane.ERROR_MESSAGE);
1348
    }
1349
1350
1351
    public String[] getCodeTableContents() {
1352
1353 2
        Vector codeTableContents = ((DefaultTableModel) codeTable.getModel()).getDataVector();
1354 1
        String[] codeTableContentsString = new String[codeTableContents.size()];
1355
1356 2
        int i = 0;
1357 4
        for (Enumeration e = codeTableContents.elements(); e.hasMoreElements(); i++) {
1358 4
            codeTableContentsString[i] = (String) ((Vector) e.nextElement()).get(0);
1359
        }
1360 1
        return codeTableContentsString;
1361
    }
1362
1363
1364
// Private methods. ---------------------------------------------------
1365
1366
1367
    /**
1368
     * This is just a private assistance method for the creator. This prepares
1369
     * all the graphical tables,lists and such as well as puts them into the
1370
     * main frame. This won't be accessed but once in the creator method.
1371
     */
1372
    private void initGUI() {
1373
1374 5
        codeTable = new JTableX(new DefaultTableModel(codeTableIdentifiers, 0));
1375 1
        codeTable.setFont(tableFont);
1376 3
        codeTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
1377 3
        codeTable.setEnabled(false);
1378 3
        codeTable.setShowGrid(false);
1379 7
        ((DefaultCellEditor) codeTable.getDefaultEditor(codeTable.getColumnClass(0))).addCellEditorListener(new CellEditorListener() {
1380
            public void editingCanceled(ChangeEvent e) {
1381
            }
1382
1383
            public void editingStopped(ChangeEvent e) {
1384 8
                codeTable.getColumnModel().getColumn(0).setPreferredWidth(codeTable.getMaxTextLengthInColumn(0));
1385 1
                guibrain.saveSource();
1386
            }
1387
        });
1388
1389 6
        ((DefaultCellEditor) codeTable.getDefaultEditor(codeTable.getColumnClass(0))).getComponent().setFont(tableFont);
1390 2
        codeTableScrollPane = new JScrollPane(codeTable);
1391 1
        codeTableScrollPane.setForeground(Color.black);
1392
1393 5
        instructionsTable = new JTableX(new DefaultTableModel(instructionsTableIdentifiers, 0));
1394 1
        instructionsTable.setFont(tableFont);
1395 3
        instructionsTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
1396 3
        instructionsTable.setEnabled(false);
1397 9
        instructionsTable.setToolTipTextForColumns(new String[]{"Line", "Numeric value", "Symbolic content"});
1398 2
        instructionsTableScrollPane = new JScrollPane(instructionsTable);
1399
1400 5
        dataTable = new JTableX(new DefaultTableModel(dataTableIdentifiers, 0));
1401 1
        dataTable.setFont(tableFont);
1402 3
        dataTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
1403 3
        dataTable.setEnabled(false);
1404 9
        dataTable.setToolTipTextForColumns(new String[]{"Line", "Numeric value", "Symbolic content"});
1405 3
        dataTable.setRowSelectionAllowed(false);
1406 2
        dataTableScrollPane = new JScrollPane(dataTable);
1407
1408 3
        dataTable.setDoubleBuffered(true);
1409 3
        dataTableScrollPane.setDoubleBuffered(true);
1410
1411 2
        dataTablePopupMenu = new JPopupMenu();
1412 3
        JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem("Show symbolic", true);
1413 3
        menuItem.addActionListener(new ActionListener() {
1414
            public void actionPerformed(ActionEvent e) {
1415 3
                if (((JCheckBoxMenuItem) e.getSource()).getState()) {
1416 20
                    int maxTextLength = (dataTable.getMaxTextLengthInColumn(2) > instructionsTable.getMaxTextLengthInColumn(2)) ?
1417
                            (dataTable.getMaxTextLengthInColumn(2) + cellMargin) :
1418
                            (instructionsTable.getMaxTextLengthInColumn(2) + cellMargin);
1419 5
                    dataTable.getColumnModel().getColumn(2).setPreferredWidth(maxTextLength);
1420
                } else {
1421 7
                    dataTable.getColumnModel().getColumn(2).setMinWidth(0);
1422 7
                    dataTable.getColumnModel().getColumn(2).setPreferredWidth(0);
1423
                }
1424
            }
1425
        });
1426 1
        dataTablePopupMenu.add(menuItem);
1427
1428
1429 2
        MouseListener dataTablePopupListener = new MouseAdapter() {
1430
            public void mousePressed(MouseEvent e) {
1431 1
                maybeShowPopup(e);
1432
            }
1433
1434
            public void mouseReleased(MouseEvent e) {
1435 1
                maybeShowPopup(e);
1436
            }
1437
1438
            private void maybeShowPopup(MouseEvent e) {
1439 2
                if (e.isPopupTrigger()) {
1440 4
                    dataTablePopupMenu.show(e.getComponent(), e.getX(), e.getY());
1441
                }
1442
            }
1443
        };
1444 1
        dataTable.addMouseListener(dataTablePopupListener);
1445
1446 4
        dataAndInstructionsTableSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
1447 1
        dataAndInstructionsTableSplitPane.setTopComponent(instructionsTableScrollPane);
1448 1
        dataAndInstructionsTableSplitPane.setBottomComponent(dataTableScrollPane);
1449 3
        dataAndInstructionsTableSplitPane.setOneTouchExpandable(true);
1450
1451 2
        statusBar = new JLabel();
1452 3
        commentList = new JList(new DefaultListModel());
1453 4
        ((DefaultListModel) commentList.getModel()).ensureCapacity(COMMENT_LIST_SIZE);
1454
1455 11
        symbolTable = new JTableX(new DefaultTableModel(new String[]{"", ""}, 0));
1456 3
        symbolTable.setEnabled(false);
1457 1
        symbolTable.setFont(tableFont);
1458 3
        symbolTable.setRowSelectionAllowed(false);
1459 2
        symbolTableScrollPane = new JScrollPane(symbolTable);
1460 2
        symbolTableScrollPane.setBorder(BorderFactory.createTitledBorder(blacklined, "Symbol table"));
1461 6
        symbolTableScrollPane.setMinimumSize(new Dimension(200, 150));
1462
1463 74
        String[][] regTableContents = new String[][]
1464
                {{"R0", "0"}, {"R1", "0"}, {"R2", "0"}, {"R3", "0"}, {"R4", "0"},
1465
                        {"R5", "0"}, {"SP", "0"}, {"FP", "0"}, {"PC", "0"}};
1466
1467 3
        registersTable = new JTableX(new DefaultTableModel(regTableContents, registersTableIdentifiers));
1468 3
        registersTable.setEnabled(false);
1469 1
        registersTable.setFont(tableFont);
1470 3
        registersTable.setRowSelectionAllowed(false);
1471 7
        registersTable.getColumnModel().getColumn(0).setMinWidth(1);
1472 11
        registersTable.getColumnModel().getColumn(0).setPreferredWidth(registersTable.getMaxTextLengthInColumn(0) + cellMargin);
1473 2
        registersTableScrollPane = new JScrollPane(registersTable);
1474 6
        registersTableScrollPane.setPreferredSize(new Dimension(140, 150));
1475 2
        registersTableScrollPane.setBorder(BorderFactory.createTitledBorder(blacklined, "Registers"));
1476
1477 3
        ioPanel = new JPanel(new BorderLayout());
1478 3
        inputPanel = new JPanel(new BorderLayout());
1479 3
        outputPanel = new JPanel(new BorderLayout());
1480
1481 6
        outputTextArea = new JTextArea(1, 7);
1482 3
        outputTextArea.setLineWrap(true);
1483 3
        outputTextArea.setWrapStyleWord(true);
1484 3
        outputTextArea.setEditable(false);
1485
1486 2
        enterNumberLabel = new JLabel("");
1487 6
        enterNumberLabel.setSize(new Dimension(100, 100));
1488
1489 4
        inputField = new JTextField(11);
1490 3
        inputField.addKeyListener(new KeyListener() {
1491
            public void keyPressed(KeyEvent e) {
1492
            }
1493
1494
            public void keyReleased(KeyEvent e) {
1495 4
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
1496 1
                    enterInput();
1497
                }
1498
            }
1499
1500
            public void keyTyped(KeyEvent e) {
1501
            }
1502
        });
1503
1504 2
        enterNumberButton = new JButton("Enter");
1505 1
        enterNumberButton.addActionListener(enterNumberButtonActionListener);
1506
1507 2
        outputScrollPane = new JScrollPane(outputTextArea);
1508 6
        outputScrollPane.setPreferredSize(new Dimension(30, 300));
1509 2
        outputScrollPane.setBorder(BorderFactory.createTitledBorder(blacklined, "CRT"));
1510 1
        outputPanel.add(outputScrollPane, BorderLayout.CENTER);
1511
1512 1
        inputPanel.add(enterNumberLabel, BorderLayout.NORTH);
1513 1
        inputPanel.add(inputField, BorderLayout.CENTER);
1514 1
        inputPanel.add(enterNumberButton, BorderLayout.SOUTH);
1515 2
        inputPanel.setBorder(BorderFactory.createTitledBorder(blacklined, "KBD"));
1516
1517 1
        ioPanel.add(outputPanel, BorderLayout.CENTER);
1518 1
        ioPanel.add(inputPanel, BorderLayout.SOUTH);
1519
1520 3
        upperRightPanel = new JPanel(new BorderLayout());
1521 1
        upperRightPanel.add(registersTableScrollPane, BorderLayout.EAST);
1522 1
        upperRightPanel.add(symbolTableScrollPane, BorderLayout.CENTER);
1523 1
        upperRightPanel.add(ioPanel, BorderLayout.WEST);
1524
1525 2
        commentListScrollPane = new JScrollPane(commentList);
1526 6
        commentListScrollPane.setPreferredSize(new Dimension(1, 50));
1527 3
        commentList.setDoubleBuffered(true);
1528 3
        commentListScrollPane.setDoubleBuffered(true);
1529
1530
        /*commentList.addListSelectionListener( new ListSelectionListener() {
1531
         public void valueChanged( ListSelectionEvent e ) {
1532
           JList src = (JList)(e.getSource());
1533
           String str = (String)src.getSelectedValue();
1534
1535
           if (str != null) {
1536
             Integer line = null;
1537
             int i = 1;
1538
             while (true) {
1539
               try {
1540
                 line = new Integer(str.substring(0,i));
1541
1542
               }
1543
               catch (NumberFormatException excp) {
1544
                 break;
1545
               }
1546
               catch (IndexOutOfBoundsException excp2) {
1547
                 break;
1548
               }
1549
               i++;
1550
             }
1551
1552
             if (line != null) {
1553
               if (activeView == 3) {
1554
                 centerToLine(line.intValue(),INSTRUCTIONS_AND_DATA_TABLE);
1555
               }
1556
             }
1557
           }
1558
         }
1559
       } );*/
1560
1561 4
        rightSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, upperRightPanel, commentListScrollPane);
1562 3
        rightSplitPane.setResizeWeight(0.5);
1563
1564
1565 3
        leftPanel = new JPanel(new BorderLayout());
1566 4
        mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightSplitPane);
1567 3
        mainSplitPane.setResizeWeight(0.5);
1568
1569 3
        getContentPane().setLayout(new BorderLayout());
1570 2
        getContentPane().add(mainSplitPane, BorderLayout.CENTER);
1571 3
        getContentPane().add(makeToolBar(), BorderLayout.NORTH);
1572
1573 4
        statusBar.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
1574 2
        getContentPane().add(statusBar, BorderLayout.SOUTH);
1575
1576 3
        disable(INPUT_FIELD);
1577 3
        setGUIView(1);
1578
1579
    }
1580
1581
1582
    private void enterInput() {
1583
        String input;
1584 1
        input = inputField.getText();
1585
1586 2
        if (guibrain.enterInput(input) == false) {
1587
            return;
1588
        }
1589
1590 1
        guibrain.continueTask();
1591
    }
1592
1593
1594
    private void initAnimator() {
1595
1596
        try {
1597 2
            animator = new Animator();
1598
        } catch (IOException e) {
1599 2
            System.out.println(e.getMessage());
1600
        }
1601
1602 2
        animatorFrame = new JFrame();
1603 5
        animatorFrame.setSize(810, 636);
1604 1
        animatorFrame.setTitle("Animator");
1605 3
        animatorFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
1606
1607 10
        animatorSpeedSlider = new JSlider(JSlider.HORIZONTAL, ANIMATOR_SPEED_MIN, ANIMATOR_SPEED_MAX, 50);
1608 1
        Hashtable<Integer, JLabel> labelTable = new Hashtable<Integer, JLabel>();
1609 5
        labelTable.put(new Integer(0), new JLabel("Slow"));
1610 5
        labelTable.put(new Integer(ANIMATOR_SPEED_MAX), new JLabel("Fast"));
1611 1
        animatorSpeedSlider.setLabelTable(labelTable);
1612
1613 3
        animatorSpeedSlider.setPaintLabels(true);
1614 3
        animatorSpeedSlider.addChangeListener(new ChangeListener() {
1615
            public void stateChanged(ChangeEvent e) {
1616 4
                int speed = ANIMATOR_SPEED_MAX - animatorSpeedSlider.getValue();
1617 1
                animator.setAnimationDelay(speed);
1618
            }
1619
        });
1620
1621 2
        animatorContinueButton = new JButton();
1622
        try {
1623 5
            animatorContinueButton.setIcon(
1624
                    new ImageIcon(getClass().getClassLoader().getResource(imgDir + "/StepForward24.gif"), "Continue")
1625
            );
1626
        } catch (Exception e) {
1627
        }
1628 1
        animatorContinueButton.setToolTipText("Continue operation");
1629 10
        animatorContinueButton.setMargin(new Insets(0, 0, 0, 0));
1630 1
        animatorContinueButton.addActionListener(continueCommandActionListener);
1631
1632 2
        JPanel animatorToolBarPanel = new JPanel(new BorderLayout());
1633 1
        animatorToolBarPanel.add(animatorSpeedSlider, BorderLayout.CENTER);
1634 1
        animatorToolBarPanel.add(animatorContinueButton, BorderLayout.WEST);
1635 2
        JPanel animatorPanel = new JPanel(new BorderLayout());
1636 1
        animatorPanel.add(animator, BorderLayout.CENTER);
1637 1
        animatorPanel.add(animatorToolBarPanel, BorderLayout.NORTH);
1638
1639 2
        animatorFrame.getContentPane().add(animatorPanel);
1640
1641
    }
1642
1643
    private void initDisplay() {
1644 2
        int scale = 4;
1645
1646 2
        display = new Display();
1647 2
        displayFrame = new JFrame();
1648 7
        displayFrame.setSize(scale * display.X, scale * display.Y);
1649 14
        displayFrame.setTitle(display.X + "x" + display.Y + " @" + display.DEFAULT_START);
1650 3
        displayFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
1651 3
        displayFrame.addWindowListener(new WindowAdapter() {
1652
            public void windowClosing(WindowEvent we) {
1653 3
                display.setUpdates(false);
1654 3
                showDisplayToggleButton.setSelected(false);
1655
            }
1656
        });
1657
1658
1659 2
        displayFrame.getContentPane().add(display);
1660
1661 2
        new Thread(display).start();
1662
1663
    }
1664
1665
    /**
1666
     * Inserts the menu into main window.
1667
     *
1668
     * @param destFrame The frame the menu bar will be inserted.
1669
     */
1670
    private void insertMenuBar(JFrame destFrame) {
1671
1672 1
        JMenuBar mainMenuBar = new JMenuBar();
1673 2
        fileMenu = new JMenu("File");
1674 2
        openFile = fileMenu.add("Open");
1675 3
        openFile.setEnabled(false);
1676 2
        compileMenuItem = fileMenu.add("Compile");
1677 2
        runMenuItem = fileMenu.add("Run");
1678 2
        continueMenuItem = fileMenu.add("Continue");
1679 2
        continueToEndMenuItem = fileMenu.add("Continue without interruptions");
1680 2
        stopMenuItem = fileMenu.add("Stop");
1681 2
        eraseMem = fileMenu.add("Erase memory");
1682 2
        quit = fileMenu.add("Exit");
1683
1684
1685 2
        optionsMenu = new JMenu("Options");
1686
1687 2
        setMemSize = new JMenu("Set memory size");
1688 1
        JMenuItem setMemTo512 = setMemSize.add("512");
1689 1
        JMenuItem setMemTo1024 = setMemSize.add("1024");
1690 1
        JMenuItem setMemTo2048 = setMemSize.add("2048");
1691 1
        JMenuItem setMemTo4096 = setMemSize.add("4096");
1692 1
        JMenuItem setMemTo8192 = setMemSize.add("8192");
1693 1
        JMenuItem setMemTo16384 = setMemSize.add("16384");
1694 1
        JMenuItem setMemTo32768 = setMemSize.add("32768");
1695 1
        JMenuItem setMemTo65536 = setMemSize.add("65536");
1696 1
        optionsMenu.add(setMemSize);
1697
1698 2
        configureFileSystem = new JMenu("Configure file system");
1699 2
        selectDefaultStdinFile = configureFileSystem.add("Select default stdin file");
1700 2
        selectDefaultStdoutFile = configureFileSystem.add("Select default stdout file");
1701 1
        optionsMenu.add(configureFileSystem);
1702
1703 2
        setCompilingOptions = optionsMenu.add("Set compiling options");
1704 2
        setRunningOptions = optionsMenu.add("Set running options");
1705
1706 2
        setLanguage = new JMenu("Set language");
1707 1
        String[] languages = guibrain.getAvailableLanguages();
1708 5
        for (int i = 0; i < languages.length; i++) {
1709 1
            JMenuItem newLanguage = setLanguage.add(languages[i]);
1710 1
            newLanguage.addActionListener(setLanguageActionListener);
1711
1712
        }
1713 2
        selectLanguageFromFile = setLanguage.add("Select from file...");
1714 1
        optionsMenu.add(setLanguage);
1715
1716
1717 2
        helpMenu = new JMenu("Help");
1718 2
        manual = helpMenu.add("Manual");
1719 2
        about = helpMenu.add("About");
1720
1721 1
        mainMenuBar.add(fileMenu);
1722 1
        mainMenuBar.add(optionsMenu);
1723 1
        mainMenuBar.add(helpMenu);
1724 1
        destFrame.setJMenuBar(mainMenuBar);
1725
1726
1727 6
        openFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
1728 6
        compileMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_K, InputEvent.CTRL_MASK));
1729 6
        runMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, InputEvent.CTRL_MASK));
1730 6
        continueMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));
1731 6
        continueToEndMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.CTRL_MASK));
1732 6
        eraseMem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK));
1733 6
        stopMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0));
1734 6
        quit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK));
1735 6
        manual.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
1736
1737
1738 1
        openFile.addActionListener(openCommandActionListener);
1739 1
        compileMenuItem.addActionListener(compileCommandActionListener);
1740 1
        runMenuItem.addActionListener(runCommandActionListener);
1741 1
        continueMenuItem.addActionListener(continueCommandActionListener);
1742 1
        continueToEndMenuItem.addActionListener(continueToEndCommandActionListener);
1743 1
        setCompilingOptions.addActionListener(setCompilingOptionsCommandActionListener);
1744 1
        setRunningOptions.addActionListener(setRunningOptionsCommandActionListener);
1745 1
        stopMenuItem.addActionListener(stopCommandActionListener);
1746 1
        selectDefaultStdinFile.addActionListener(selectStdinFileActionListener);
1747 1
        selectDefaultStdoutFile.addActionListener(selectStdoutFileActionListener);
1748 1
        eraseMem.addActionListener(eraseMemoryActionListener);
1749 4
        setMemTo512.addActionListener(new SetMemSizeActionListener(9));
1750 4
        setMemTo1024.addActionListener(new SetMemSizeActionListener(10));
1751 4
        setMemTo2048.addActionListener(new SetMemSizeActionListener(11));
1752 4
        setMemTo4096.addActionListener(new SetMemSizeActionListener(12));
1753 4
        setMemTo8192.addActionListener(new SetMemSizeActionListener(13));
1754 4
        setMemTo16384.addActionListener(new SetMemSizeActionListener(14));
1755 4
        setMemTo32768.addActionListener(new SetMemSizeActionListener(15));
1756 4
        setMemTo65536.addActionListener(new SetMemSizeActionListener(16));
1757 1
        selectLanguageFromFile.addActionListener(selectLanguageFromFileActionListener);
1758 1
        about.addActionListener(aboutActionListener);
1759 1
        manual.addActionListener(manualActionListener);
1760 1
        quit.addActionListener(quitActionListener);
1761
1762
1763
    }
1764
1765
1766
    /**
1767
     * This creates the toolbar of this program and returns it.
1768
     */
1769
    private JToolBar makeToolBar() {
1770
1771
        JToolBar toolbar;
1772
1773 1
        toolbar = new JToolBar("Toolbar");
1774
1775 2
        openFileButton = new JButton();
1776
        try {
1777 5
            openFileButton.setIcon(
1778
                    new ImageIcon(getClass().getClassLoader().getResource(imgDir + "/Open24.gif"), "Open file")
1779
            );
1780
        } catch (Exception e) {
1781
        }
1782 1
        openFileButton.setToolTipText("Open a file");
1783 10
        openFileButton.setMargin(new Insets(0, 0, 0, 0));
1784 3
        openFileButton.setMnemonic(KeyEvent.VK_O);
1785 3
        openFileButton.setEnabled(false);
1786 1
        toolbar.add(openFileButton);
1787
1788 1
        toolbar.addSeparator();
1789
1790 2
        compileButton = new JButton();
1791
        try {
1792 5
            compileButton.setIcon(
1793
                    new ImageIcon(getClass().getClassLoader().getResource(imgDir + "/Compile24.gif"), "Compile")
1794
            );
1795
        } catch (Exception e) {
1796
        }
1797 1
        compileButton.setToolTipText("Compile the program");
1798 10
        compileButton.setMargin(new Insets(0, 0, 0, 0));
1799 1
        toolbar.add(compileButton);
1800
1801 2
        runButton = new JButton();
1802
        try {
1803 5
            runButton.setIcon(
1804
                    new ImageIcon(getClass().getClassLoader().getResource(imgDir + "/Run24.gif"), "Run")
1805
            );
1806
        } catch (Exception e) {
1807
        }
1808 1
        runButton.setToolTipText("Run the program");
1809 10
        runButton.setMargin(new Insets(0, 0, 0, 0));
1810 1
        toolbar.add(runButton);
1811
1812 2
        continueButton = new JButton();
1813
        try {
1814 5
            continueButton.setIcon(
1815
                    new ImageIcon(getClass().getClassLoader().getResource(imgDir + "/StepForward24.gif"), "Continue")
1816
            );
1817
        } catch (Exception e) {
1818
        }
1819 1
        continueButton.setToolTipText("Continue operation");
1820 10
        continueButton.setMargin(new Insets(0, 0, 0, 0));
1821 1
        toolbar.add(continueButton);
1822
1823 2
        continueToEndButton = new JButton();
1824
        try {
1825 5
            continueToEndButton.setIcon(
1826
                    new ImageIcon(getClass().getClassLoader().getResource(imgDir + "/FastForward24.gif"), "Continue w/o pauses")
1827
            );
1828
        } catch (Exception e) {
1829
        }
1830 1
        continueToEndButton.setToolTipText("Continue operation without pauses");
1831 10
        continueToEndButton.setMargin(new Insets(0, 0, 0, 0));
1832 1
        toolbar.add(continueToEndButton);
1833
1834 2
        stopButton = new JButton();
1835
        try {
1836 5
            stopButton.setIcon(
1837
                    new ImageIcon(getClass().getClassLoader().getResource(imgDir + "/Stop24.gif"), "Stop")
1838
            );
1839
        } catch (Exception e) {
1840
        }
1841 1
        stopButton.setToolTipText("Stop the current operation");
1842 10
        stopButton.setMargin(new Insets(0, 0, 0, 0));
1843 1
        toolbar.add(stopButton);
1844
1845 1
        toolbar.addSeparator();
1846
1847
1848 2
        lineByLineToggleButton = new JToggleButton();
1849
        try {
1850 6
            lineByLineToggleButton = new JToggleButton(
1851
                    new ImageIcon(getClass().getClassLoader().getResource(imgDir + "/RowInsertAfter24.gif"), "Run line by line")
1852
            );
1853
        } catch (Exception e) {
1854
        }
1855 1
        lineByLineToggleButton.setToolTipText("Enable/disable line by line execution");
1856 10
        lineByLineToggleButton.setMargin(new Insets(0, 0, 0, 0));
1857 1
        toolbar.add(lineByLineToggleButton);
1858
1859 2
        showCommentsToggleButton = new JToggleButton();
1860
        try {
1861 6
            showCommentsToggleButton = new JToggleButton(
1862
                    new ImageIcon(getClass().getClassLoader().getResource(imgDir + "/History24.gif"), "Show comments")
1863
            );
1864
        } catch (Exception e) {
1865
        }
1866 1
        showCommentsToggleButton.setToolTipText("Enable/disable extra comments while execution");
1867 10
        showCommentsToggleButton.setMargin(new Insets(0, 0, 0, 0));
1868 1
        toolbar.add(showCommentsToggleButton);
1869
1870 2
        showAnimationToggleButton = new JToggleButton();
1871
        try {
1872 6
            showAnimationToggleButton = new JToggleButton(
1873
                    new ImageIcon(getClass().getClassLoader().getResource(imgDir + "/Movie24.gif"), "Show comments")
1874
            );
1875
        } catch (Exception e) {
1876
        }
1877 1
        showAnimationToggleButton.setToolTipText("Enable/disable animated execution");
1878 10
        showAnimationToggleButton.setMargin(new Insets(0, 0, 0, 0));
1879 1
        toolbar.add(showAnimationToggleButton);
1880
1881 1
        toolbar.addSeparator();
1882
1883 2
        showDisplayToggleButton = new JToggleButton();
1884
        try {
1885 6
            showDisplayToggleButton = new JToggleButton(
1886
                    new ImageIcon(getClass().getClassLoader().getResource(imgDir + "/Display.gif"), "Show display")
1887
            );
1888
        } catch (Exception e) {
1889
        }
1890 1
        showDisplayToggleButton.setToolTipText("Show/hide video graphics display");
1891 10
        showDisplayToggleButton.setMargin(new Insets(0, 0, 0, 0));
1892 1
        toolbar.add(showDisplayToggleButton);
1893
1894 3
        toolbar.setFloatable(false);
1895
1896 1
        openFileButton.addActionListener(openCommandActionListener);
1897 1
        compileButton.addActionListener(compileCommandActionListener);
1898 1
        runButton.addActionListener(runCommandActionListener);
1899 1
        continueButton.addActionListener(continueCommandActionListener);
1900 1
        continueToEndButton.addActionListener(continueToEndCommandActionListener);
1901 1
        stopButton.addActionListener(stopCommandActionListener);
1902 3
        lineByLineToggleButton.addActionListener(new ActionListener() {
1903
            public void actionPerformed(ActionEvent e) {
1904 2
                boolean b = ((JToggleButton) e.getSource()).isSelected();
1905 3
                guibrain.menuSetRunningOption(GUIBrain.LINE_BY_LINE, b);
1906
            }
1907
        });
1908 3
        showCommentsToggleButton.addActionListener(new ActionListener() {
1909
            public void actionPerformed(ActionEvent e) {
1910 2
                boolean b = ((JToggleButton) e.getSource()).isSelected();
1911 3
                guibrain.menuSetRunningOption(GUIBrain.COMMENTED, b);
1912
            }
1913
        });
1914 3
        showAnimationToggleButton.addActionListener(new ActionListener() {
1915
            public void actionPerformed(ActionEvent e) {
1916 2
                boolean b = ((JToggleButton) e.getSource()).isSelected();
1917 3
                guibrain.menuSetRunningOption(GUIBrain.ANIMATED, b);
1918
            }
1919
        });
1920 3
        showDisplayToggleButton.addActionListener(new ActionListener() {
1921
            public void actionPerformed(ActionEvent e) {
1922 2
                boolean b = ((JToggleButton) e.getSource()).isSelected();
1923 1
                display.setUpdates(b);
1924 1
                displayFrame.setVisible(b);
1925
            }
1926
        });
1927
1928 1
        return toolbar;
1929
    }
1930
1931
1932
/* Next comes ActionListeners that are used with buttons and menuitems in this
1933
   program. Their names are informative enough to tell which objects they are 
1934
   intended to listen.
1935
*/
1936
1937 3
    private ActionListener openCommandActionListener = new ActionListener() {
1938
        public void actionPerformed(ActionEvent e) {
1939
1940 1
            int rv = showOpenFileDialog();
1941
1942 1
            if (rv == JFileChooser.APPROVE_OPTION) {
1943 6
                new GUIThreader(GUIThreader.TASK_OPEN_FILE, guibrain,
1944
                        generalFileDialog.getSelectedFile()).run();
1945
            }
1946
        }
1947
    };
1948
1949 3
    private ActionListener selectStdinFileActionListener = new ActionListener() {
1950
        public void actionPerformed(ActionEvent e) {
1951
1952 1
            int rv = showSelectStdinDialog();
1953 1
            if (rv == JFileChooser.APPROVE_OPTION) {
1954 3
                guibrain.menuSetStdin(generalFileDialog.getSelectedFile());
1955
            }
1956
        }
1957
    };
1958
1959 3
    private ActionListener selectStdoutFileActionListener = new ActionListener() {
1960
        public void actionPerformed(ActionEvent e) {
1961 1
            int rv = showSelectStdoutDialog();
1962 1
            if (rv == JFileChooser.APPROVE_OPTION) {
1963 1
                JOptionPane confirmDialog = new JOptionPane();
1964 8
                String[] param = {(String) UIManager.get("OptionPane.yesButtonText"),
1965
                        (String) UIManager.get("OptionPane.noButtonText")};
1966
1967 8
                int rv2 = confirmDialog.showConfirmDialog(
1968
                        generalFileDialog,
1969
                        new Message("Do you want to overwrite the file? Select {1} to append or {0} to overwrite.", param).toString(),
1970
                        new Message("Overwrite?").toString(),
1971
                        JOptionPane.YES_NO_OPTION
1972
                );
1973 1
                if (rv2 == JOptionPane.YES_OPTION) {
1974 5
                    guibrain.menuSetStdout(generalFileDialog.getSelectedFile(),
1975
                            false);
1976 3
                } else if (rv2 == JOptionPane.NO_OPTION) {
1977 5
                    guibrain.menuSetStdout(generalFileDialog.getSelectedFile(),
1978
                            true);
1979
                }
1980
            }
1981
        }
1982
    };
1983
1984 3
    private ActionListener compileCommandActionListener = new ActionListener() {
1985
        public void actionPerformed(ActionEvent e) {
1986 5
            new Thread(new GUIThreader(GUIThreader.TASK_COMPILE, guibrain)).start();
1987
        }
1988
    };
1989
1990 3
    private ActionListener runCommandActionListener = new ActionListener() {
1991
        public void actionPerformed(ActionEvent e) {
1992 5
            new Thread(new GUIThreader(GUIThreader.TASK_RUN, guibrain)).start();
1993
        }
1994
    };
1995
1996 3
    private ActionListener continueCommandActionListener = new ActionListener() {
1997
        public void actionPerformed(ActionEvent e) {
1998 5
            new Thread(new GUIThreader(GUIThreader.TASK_CONTINUE, guibrain)).start();
1999
        }
2000
    };
2001
2002
2003 3
    private ActionListener continueToEndCommandActionListener = new ActionListener() {
2004
        public void actionPerformed(ActionEvent e) {
2005
2006 1
            guibrain.continueTaskWithoutPauses();
2007
        }
2008
    };
2009
2010 3
    private ActionListener setRunningOptionsCommandActionListener = new ActionListener() {
2011
        public void actionPerformed(ActionEvent e) {
2012
2013 4
            setRunningOptionsDialog.setVisible(true);
2014
        }
2015
    };
2016
2017 3
    private ActionListener setCompilingOptionsCommandActionListener = new ActionListener() {
2018
        public void actionPerformed(ActionEvent e) {
2019
2020 4
            setCompilingOptionsDialog.setVisible(true);
2021
        }
2022
    };
2023
2024 3
    private ActionListener stopCommandActionListener = new ActionListener() {
2025
        public void actionPerformed(ActionEvent e) {
2026 3
            guibrain.menuInterrupt(false);
2027
            //new Thread(new GUIThreader(GUIThreader.TASK_STOP, guibrain)).start();
2028
        }
2029
    };
2030
2031 3
    private ActionListener eraseMemoryActionListener = new ActionListener() {
2032
        public void actionPerformed(ActionEvent e) {
2033 1
            guibrain.menuEraseMemory();
2034
        }
2035
    };
2036
2037 3
    private ActionListener setLanguageActionListener = new ActionListener() {
2038
        public void actionPerformed(ActionEvent e) {
2039 2
            String language = ((JMenuItem) e.getSource()).getText();
2040 1
            guibrain.menuSetLanguage(language);
2041
        }
2042
    };
2043
2044 3
    private ActionListener selectLanguageFromFileActionListener = new ActionListener() {
2045
        public void actionPerformed(ActionEvent e) {
2046
            //openFileDialog.resetChoosableFileFilters();
2047
            //openFileDialog.setAcceptAllFileFilterUsed(true);
2048
2049 1
            int rv = showSelectLanguageFileDialog();
2050 1
            if (rv == JFileChooser.APPROVE_OPTION) {
2051 3
                guibrain.menuSetLanguage(generalFileDialog.getSelectedFile());
2052
            }
2053
        }
2054
    };
2055
2056 3
    private ActionListener aboutActionListener = new ActionListener() {
2057
        public void actionPerformed(ActionEvent e) {
2058 4
            aboutDialog.setVisible(true);
2059
        }
2060
    };
2061
2062 3
    private ActionListener manualActionListener = new ActionListener() {
2063
        public void actionPerformed(ActionEvent e) {
2064 4
            manualDialog.setVisible(true);
2065
        }
2066
    };
2067
2068 3
    private ActionListener enterNumberButtonActionListener = new ActionListener() {
2069
        public void actionPerformed(ActionEvent e) {
2070 1
            enterInput();
2071
2072
2073
        }
2074
    };
2075
2076 3
    private ActionListener quitActionListener = new ActionListener() {
2077
        public void actionPerformed(ActionEvent e) {
2078 1
            guibrain.menuExit();
2079 3
            System.exit(0);
2080
        }
2081
    };
2082
2083
    /* Instances of this class will be created for Options -> Set Memory Size
2084
       menu's menuitems.
2085
    */
2086
    private class SetMemSizeActionListener implements ActionListener {
2087
        private int memsize;
2088
2089 1
        public SetMemSizeActionListener(int memsize) {
2090 1
            this.memsize = memsize;
2091
        }
2092
2093
        public void actionPerformed(ActionEvent e) {
2094 1
            guibrain.menuSetMemorySize(memsize);
2095
        }
2096
    }
2097
2098
    ;
2099
2100
2101 3
    private FileFilter B91FileFilter = new FileFilter() {
2102
        public boolean accept(File f) {
2103 2
            if (f.isDirectory()) {
2104 3
                return true;
2105
            }
2106
2107 1
            String extension = GUIBrain.getExtension(f);
2108 1
            if (extension != null) {
2109 2
                if (extension.equals("b91")) {
2110 3
                    return true;
2111
                } else {
2112 3
                    return false;
2113
                }
2114
            }
2115 3
            return false;
2116
        }
2117
2118
        public String getDescription() {
2119 3
            return new Message("B91 binary").toString();
2120
        }
2121
    };
2122
2123
2124 3
    private FileFilter K91FileFilter = new FileFilter() {
2125
        public boolean accept(File f) {
2126 2
            if (f.isDirectory()) {
2127 3
                return true;
2128
            }
2129
2130 1
            String extension = GUIBrain.getExtension(f);
2131 1
            if (extension != null) {
2132 2
                if (extension.equals("k91")) {
2133 3
                    return true;
2134
                } else {
2135 3
                    return false;
2136
                }
2137
            }
2138 3
            return false;
2139
        }
2140
2141
        public String getDescription() {
2142 3
            return new Message("K91 source").toString();
2143
        }
2144
    };
2145
2146 3
    private FileFilter classFileFilter = new FileFilter() {
2147
        public boolean accept(File f) {
2148 2
            if (f.isDirectory()) {
2149 3
                return true;
2150
            }
2151
2152 1
            String extension = GUIBrain.getExtension(f);
2153 1
            if (extension != null) {
2154 2
                if (extension.equals("class")) {
2155 3
                    return true;
2156
                } else {
2157 3
                    return false;
2158
                }
2159
            }
2160 3
            return false;
2161
        }
2162
2163
        public String getDescription() {
2164 3
            return new Message("Class file").toString();
2165
        }
2166
    };
2167
2168
2169
    /**
2170
     * This method uses the generalFileDialog as a k91/b91 file
2171
     * opening dialog.
2172
     *
2173
     * @return Whatever generalFileDialog.showOpenDialog(thisGUI)
2174
     *         returns.
2175
     */
2176
    private int showOpenFileDialog() {
2177 3
        generalFileDialog.setAcceptAllFileFilterUsed(false);
2178 1
        generalFileDialog.addChoosableFileFilter(B91FileFilter);
2179 1
        generalFileDialog.addChoosableFileFilter(K91FileFilter);
2180 3
        generalFileDialog.setDialogTitle(new Message("Open a new " +
2181
                "file").toString());
2182 2
        return generalFileDialog.showOpenDialog(thisGUI);
2183
    }
2184
2185
    /**
2186
     * This method uses the generalFileDialog as a default stdin
2187
     * file choosing dialog.
2188
     *
2189
     * @return Whatever generalFileDialog.showOpenDialog(thisGUI)
2190
     *         returns.
2191
     */
2192
    private int showSelectStdinDialog() {
2193 3
        generalFileDialog.setAcceptAllFileFilterUsed(true);
2194 3
        generalFileDialog.setDialogTitle(new Message("Select default stdin " +
2195
                "file").toString());
2196 2
        return generalFileDialog.showOpenDialog(thisGUI);
2197
    }
2198
2199
    /**
2200
     * This method uses the generalFileDialog as a default stdout
2201
     * file choosing dialog.
2202
     *
2203
     * @return Whatever generalFileDialog.showOpenDialog(thisGUI)
2204
     *         returns.
2205
     */
2206
    private int showSelectStdoutDialog() {
2207 3
        generalFileDialog.setAcceptAllFileFilterUsed(true);
2208 3
        generalFileDialog.setDialogTitle(new Message("Select default stdout " +
2209
                "file").toString());
2210 2
        return generalFileDialog.showOpenDialog(thisGUI);
2211
    }
2212
2213
    /**
2214
     * This method uses the generalFileDialog as a language file
2215
     * choosing dialog.
2216
     *
2217
     * @return Whatever generalFileDialog.showOpenDialog(thisGUI)
2218
     *         returns.
2219
     */
2220
    private int showSelectLanguageFileDialog() {
2221 1
        generalFileDialog.setFileFilter(classFileFilter);
2222 3
        generalFileDialog.setAcceptAllFileFilterUsed(false);
2223 3
        generalFileDialog.setDialogTitle(new Message("Select language " +
2224
                "file").toString());
2225 2
        return generalFileDialog.showOpenDialog(thisGUI);
2226
    }
2227
2228
    /**
2229
     * This method prints out startup messages. It exists to make it
2230
     * easier to decide whether they should be shown to the user or
2231
     * not.
2232
     */
2233
    private void print(String message) {
2234 1
        System.out.println(message);
2235
    }
2236
2237
} 

Mutations

76

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Removed assignment to member variable codeTableIdentifiers : NO_COVERAGE

88

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Removed assignment to member variable instructionsTableIdentifiers : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

100

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Removed assignment to member variable dataTableIdentifiers : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

117

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Removed assignment to member variable registersTableIdentifiers : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

128

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Removed assignment to member variable symbolTableIdentifiers : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

258

Removed assignment to member variable activeView : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

268

Substituted 0 with 1 : NO_COVERAGE

removed call to java/awt/Font::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Replaced constant value of 12 with 13 : NO_COVERAGE

Substituted 12 with 13 : NO_COVERAGE

Removed assignment to member variable tableFont : NO_COVERAGE

270

removed call to javax/swing/BorderFactory::createLineBorder : NO_COVERAGE

Removed assignment to member variable blacklined : NO_COVERAGE

288

removed call to java/awt/event/ActionEvent::getActionCommand : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

negated conditional : NO_COVERAGE

289

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetRunningOption : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/JCheckBox::isSelected : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

290

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetRunningOption : NO_COVERAGE

removed call to javax/swing/JCheckBox::isSelected : NO_COVERAGE

291

Substituted 4 with 5 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

removed call to javax/swing/JCheckBox::isSelected : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetRunningOption : NO_COVERAGE

297

removed call to java/awt/event/ActionEvent::getActionCommand : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

298

removed call to javax/swing/JCheckBox::isSelected : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetCompilingOption : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

299

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetCompilingOption : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/JCheckBox::isSelected : NO_COVERAGE

305

Removed assignment to member variable thisGUI : NO_COVERAGE

307

removed call to fi/helsinki/cs/titokone/GUI::print : NO_COVERAGE

308

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIRunSettingsDialog::<init> : NO_COVERAGE

Removed assignment to member variable setRunningOptionsDialog : NO_COVERAGE

309

removed call to fi/helsinki/cs/titokone/GUIRunSettingsDialog::addComponentListener : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$1::<init> : NO_COVERAGE

314

removed call to fi/helsinki/cs/titokone/GUIBrain::refreshRunningOptions : NO_COVERAGE

324

removed call to fi/helsinki/cs/titokone/GUI::print : NO_COVERAGE

325

Removed assignment to member variable setCompilingOptionsDialog : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUICompileSettingsDialog::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

326

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUICompileSettingsDialog::addComponentListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$2::<init> : NO_COVERAGE

331

removed call to fi/helsinki/cs/titokone/GUIBrain::refreshCompilingOptions : NO_COVERAGE

341

removed call to fi/helsinki/cs/titokone/GUI::print : NO_COVERAGE

342

removed call to java/util/HashMap::<init> : NO_COVERAGE

Removed assignment to member variable symbolsHashMap : NO_COVERAGE

344

removed call to fi/helsinki/cs/titokone/GUI::print : NO_COVERAGE

345

removed call to fi/helsinki/cs/titokone/GUI::initGUI : NO_COVERAGE

348

removed call to fi/helsinki/cs/titokone/GUI::initAnimator : NO_COVERAGE

349

removed call to fi/helsinki/cs/titokone/GUI::initDisplay : NO_COVERAGE

351

removed call to fi/helsinki/cs/titokone/GUI::print : NO_COVERAGE

352

removed call to fi/helsinki/cs/titokone/GUIBrain::<init> : NO_COVERAGE

Removed assignment to member variable guibrain : NO_COVERAGE

353

removed call to fi/helsinki/cs/titokone/GUI::print : NO_COVERAGE

354

removed call to fi/helsinki/cs/titokone/GUI::insertMenuBar : NO_COVERAGE

355

removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

356

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE

357

Substituted 3 with 4 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE

358

Substituted 4 with 5 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

359

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

360

removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE

Substituted 7 with 8 : NO_COVERAGE

Replaced constant value of 7 with 8 : NO_COVERAGE

362

removed call to fi/helsinki/cs/titokone/GUI::print : NO_COVERAGE

363

removed call to fi/helsinki/cs/titokone/GUI::pack : NO_COVERAGE

365

Replaced constant value of 0.5 with 1.0 : NO_COVERAGE

Substituted 0.5 with 1.0 : NO_COVERAGE

removed call to javax/swing/JSplitPane::setDividerLocation : NO_COVERAGE

366

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::setGUIView : NO_COVERAGE

369

removed call to fi/helsinki/cs/titokone/GUI::print : NO_COVERAGE

370

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::setVisible : NO_COVERAGE

373

removed call to fi/helsinki/cs/titokone/GUI::print : NO_COVERAGE

374

removed call to fi/helsinki/cs/titokone/GUI::setTitle : NO_COVERAGE

376

removed call to fi/helsinki/cs/titokone/GUI::addWindowListener : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$3::<init> : NO_COVERAGE

378

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/System::exit : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

385

removed call to javax/swing/JFileChooser::<init> : NO_COVERAGE

Removed assignment to member variable generalFileDialog : NO_COVERAGE

386

removed call to javax/swing/JFileChooser::setCurrentDirectory : NO_COVERAGE

removed call to java/io/File::<init> : NO_COVERAGE

388

removed call to java/io/PrintStream::println : NO_COVERAGE

390

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/System::exit : NO_COVERAGE

392

Substituted 7 with 8 : NO_COVERAGE

Replaced constant value of 7 with 8 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE

394

removed call to fi/helsinki/cs/titokone/GUIHTMLDialog::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Removed assignment to member variable manualDialog : NO_COVERAGE

395

Substituted 0 with 1 : NO_COVERAGE

Removed assignment to member variable aboutDialog : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIHTMLDialog::<init> : NO_COVERAGE

397

removed call to fi/helsinki/cs/titokone/GUI::print : NO_COVERAGE

398

removed call to fi/helsinki/cs/titokone/GUI::updateAllTexts : NO_COVERAGE

401

removed call to fi/helsinki/cs/titokone/GUI::print : NO_COVERAGE

408

Removed assignment to member variable leftPanel : NO_COVERAGE

removed call to java/awt/BorderLayout::<init> : NO_COVERAGE

removed call to javax/swing/JPanel::<init> : NO_COVERAGE

410

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

negated conditional : NO_COVERAGE

411

removed call to javax/swing/JSplitPane::setLeftComponent : NO_COVERAGE

412

removed call to fi/helsinki/cs/titokone/GUI::validate : NO_COVERAGE

413

Substituted 2 with 3 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

415

removed call to javax/swing/JPanel::add : NO_COVERAGE

416

removed call to javax/swing/JSplitPane::setLeftComponent : NO_COVERAGE

417

removed call to fi/helsinki/cs/titokone/GUI::validate : NO_COVERAGE

418

negated conditional : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

419

removed call to javax/swing/JPanel::add : NO_COVERAGE

420

removed call to javax/swing/JSplitPane::setLeftComponent : NO_COVERAGE

421

removed call to fi/helsinki/cs/titokone/GUI::validate : NO_COVERAGE

425

removed call to fi/helsinki/cs/titokone/JTableX::getHeight : NO_COVERAGE

426

removed call to javax/swing/JSplitPane::getDividerSize : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

427

removed call to javax/swing/table/JTableHeader::getHeight : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getTableHeader : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

428

Replaced integer division with multiplication : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/JPanel::getHeight : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

429

removed call to javax/swing/JPanel::getHeight : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced integer division with multiplication : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

431

removed call to javax/swing/JSplitPane::setDividerLocation : NO_COVERAGE

432

removed call to javax/swing/JPanel::invalidate : NO_COVERAGE

435

Removed assignment to member variable activeView : NO_COVERAGE

436

removed call to javax/swing/JSplitPane::setDividerLocation : NO_COVERAGE

Replaced constant value of 0.5 with 1.0 : NO_COVERAGE

Substituted 0.5 with 1.0 : NO_COVERAGE

446

removed call to fi/helsinki/cs/titokone/GUI::unselectAll : NO_COVERAGE

447

removed call to fi/helsinki/cs/titokone/GUI::insertSymbolTable : NO_COVERAGE

449

removed call to javax/swing/JTextArea::setText : NO_COVERAGE

458

removed call to fi/helsinki/cs/titokone/JTableX::unselectAllRows : NO_COVERAGE

459

removed call to fi/helsinki/cs/titokone/JTableX::unselectAllRows : NO_COVERAGE

460

removed call to fi/helsinki/cs/titokone/JTableX::unselectAllRows : NO_COVERAGE

461

removed call to fi/helsinki/cs/titokone/JTableX::unselectAllRows : NO_COVERAGE

462

removed call to fi/helsinki/cs/titokone/JTableX::unselectAllRows : NO_COVERAGE

463

removed call to fi/helsinki/cs/titokone/GUI::repaint : NO_COVERAGE

473

negated conditional : NO_COVERAGE

474

removed call to javax/swing/JLabel::setText : NO_COVERAGE

476

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to javax/swing/JLabel::setText : NO_COVERAGE

479

removed call to javax/swing/JLabel::validate : NO_COVERAGE

491

removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE

removed call to java/lang/Integer::<init> : NO_COVERAGE

502

negated conditional : NO_COVERAGE

505

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

506

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/Integer::intValue : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setValueAt : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

520

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

521

changed conditional boundary : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

522

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

525

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

526

removed call to javax/swing/table/DefaultTableModel::setDataVector : NO_COVERAGE

527

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

550

negated conditional : NO_COVERAGE

551

Substituted 0 with 1 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

554

Substituted 3 with 4 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

555

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

556

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

557

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

558

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

561

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

562

removed call to javax/swing/table/DefaultTableModel::setDataVector : NO_COVERAGE

563

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Replaced constant value of 50 with 51 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 50 with 51 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

564

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced constant value of 100 with 101 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 100 with 101 : NO_COVERAGE

565

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

566

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

568

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

571

Substituted 1 with 0 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

587

negated conditional : NO_COVERAGE

588

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

591

Substituted 3 with 4 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

592

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

593

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

594

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

595

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

598

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

599

removed call to javax/swing/table/DefaultTableModel::setDataVector : NO_COVERAGE

600

Substituted 0 with 1 : NO_COVERAGE

Substituted 50 with 51 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Replaced constant value of 50 with 51 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

601

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 100 with 101 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced constant value of 100 with 101 : NO_COVERAGE

602

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

603

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

605

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

607

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

622

removed call to fi/helsinki/cs/titokone/GUI::insertToInstructionsTable : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

640

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

641

Substituted 0 with 1 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

642

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

643

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

removed call to javax/swing/table/DefaultTableModel::setValueAt : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

644

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/table/DefaultTableModel::setValueAt : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

645

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

646

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

647

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

648

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to javax/swing/table/DefaultTableModel::setValueAt : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

649

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

removed call to javax/swing/table/DefaultTableModel::setValueAt : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

650

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

652

Substituted 0 with 1 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

672

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

673

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

674

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

675

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

676

removed call to javax/swing/table/DefaultTableModel::setValueAt : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

677

Replaced constant value of 6 with 7 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getTextLength : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

679

negated conditional : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::getWidth : NO_COVERAGE

680

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

681

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

684

removed call to fi/helsinki/cs/titokone/GUI::validate : NO_COVERAGE

686

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

687

Replaced integer addition with subtraction : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

688

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

689

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

690

removed call to javax/swing/table/DefaultTableModel::setValueAt : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

691

Replaced integer addition with subtraction : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getTextLength : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

693

changed conditional boundary : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::getWidth : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

negated conditional : NO_COVERAGE

694

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

695

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

698

removed call to fi/helsinki/cs/titokone/GUI::validate : NO_COVERAGE

700

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

702

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

720

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

722

Substituted 3 with 4 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

723

Changed increment from 1 to -1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

724

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

725

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

726

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

729

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

730

removed call to javax/swing/table/DefaultTableModel::setDataVector : NO_COVERAGE

732

Replaced constant value of 50 with 51 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 50 with 51 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

733

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 100 with 101 : NO_COVERAGE

Replaced constant value of 100 with 101 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

735

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

738

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

739

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

741

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

744

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

745

Substituted 2 with 3 : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

746

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

748

Substituted 6 with 7 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

749

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

768

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

770

Substituted 3 with 4 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

771

negated conditional : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

772

Replaced integer addition with subtraction : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

773

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

774

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

775

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

777

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

781

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

782

removed call to javax/swing/table/DefaultTableModel::setDataVector : NO_COVERAGE

784

Substituted 50 with 51 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Replaced constant value of 50 with 51 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

785

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 100 with 101 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

Replaced constant value of 100 with 101 : NO_COVERAGE

787

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

790

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

791

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

793

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

796

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

797

Replaced integer addition with subtraction : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

798

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

800

Substituted 6 with 7 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

801

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

825

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

826

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

828

removed call to java/util/HashMap::clear : NO_COVERAGE

829

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

832

negated conditional : NO_COVERAGE

negated conditional : NO_COVERAGE

833

removed call to javax/swing/table/DefaultTableModel::setDataVector : NO_COVERAGE

834

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

836

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

837

Substituted 0 with 1 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

843

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

844

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

845

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

846

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

847

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/Integer::<init> : NO_COVERAGE

removed call to java/util/HashMap::put : NO_COVERAGE

849

removed call to javax/swing/table/DefaultTableModel::setDataVector : NO_COVERAGE

850

Substituted 1 with 0 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

863

removed call to java/util/HashMap::get : NO_COVERAGE

864

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

866

negated conditional : NO_COVERAGE

872

negated conditional : NO_COVERAGE

873

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/Integer::intValue : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/table/DefaultTableModel::setValueAt : NO_COVERAGE

878

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

880

negated conditional : NO_COVERAGE

881

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

883

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

885

removed call to javax/swing/table/DefaultTableModel::addRow : NO_COVERAGE

887

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/Integer::<init> : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

888

removed call to java/util/HashMap::put : NO_COVERAGE

897

negated conditional : NO_COVERAGE

901

removed call to javax/swing/JList::getModel : NO_COVERAGE

902

removed call to javax/swing/DefaultListModel::size : NO_COVERAGE

905

Substituted 100 with 101 : NO_COVERAGE

Replaced constant value of 100 with 101 : NO_COVERAGE

negated conditional : NO_COVERAGE

906

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/DefaultListModel::removeElementAt : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

908

removed call to javax/swing/DefaultListModel::add : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

909

removed call to javax/swing/JList::setSelectedIndex : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

917

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to javax/swing/JTextArea::insert : NO_COVERAGE

945

removed call to javax/swing/JMenuItem::setEnabled : NO_COVERAGE

946

removed call to javax/swing/JButton::setEnabled : NO_COVERAGE

949

removed call to javax/swing/JMenuItem::setEnabled : NO_COVERAGE

950

removed call to javax/swing/JButton::setEnabled : NO_COVERAGE

953

removed call to javax/swing/JMenuItem::setEnabled : NO_COVERAGE

954

removed call to javax/swing/JButton::setEnabled : NO_COVERAGE

957

removed call to javax/swing/JMenuItem::setEnabled : NO_COVERAGE

958

removed call to javax/swing/JButton::setEnabled : NO_COVERAGE

959

removed call to javax/swing/JButton::setEnabled : NO_COVERAGE

962

removed call to javax/swing/JMenuItem::setEnabled : NO_COVERAGE

963

removed call to javax/swing/JButton::setEnabled : NO_COVERAGE

966

removed call to javax/swing/JLabel::setEnabled : NO_COVERAGE

967

removed call to javax/swing/JTextField::setEnabled : NO_COVERAGE

968

removed call to javax/swing/JButton::setEnabled : NO_COVERAGE

969

removed call to javax/swing/JTextField::setText : NO_COVERAGE

970

negated conditional : NO_COVERAGE

971

removed call to javax/swing/BorderFactory::createTitledBorder : NO_COVERAGE

removed call to javax/swing/BorderFactory::createLineBorder : NO_COVERAGE

removed call to javax/swing/JPanel::setBorder : NO_COVERAGE

972

removed call to fi/helsinki/cs/titokone/JTableX::setSelectionBackground : NO_COVERAGE

974

negated conditional : NO_COVERAGE

975

removed call to javax/swing/BorderFactory::createLineBorder : NO_COVERAGE

removed call to javax/swing/JPanel::setBorder : NO_COVERAGE

removed call to javax/swing/BorderFactory::createTitledBorder : NO_COVERAGE

976

removed call to fi/helsinki/cs/titokone/JTableX::getSelectionBackground : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setSelectionBackground : NO_COVERAGE

981

removed call to fi/helsinki/cs/titokone/JTableX::setEnabled : NO_COVERAGE

984

removed call to javax/swing/JMenuItem::setEnabled : NO_COVERAGE

985

removed call to javax/swing/JButton::setEnabled : NO_COVERAGE

998

removed call to fi/helsinki/cs/titokone/GUI::setEnabled : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1010

removed call to fi/helsinki/cs/titokone/GUI::setEnabled : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1044

removed call to javax/swing/JCheckBox::setSelected : NO_COVERAGE

1047

removed call to javax/swing/JCheckBox::setSelected : NO_COVERAGE

1050

removed call to javax/swing/JToggleButton::setSelected : NO_COVERAGE

1051

removed call to javax/swing/JCheckBox::setSelected : NO_COVERAGE

1056

removed call to javax/swing/JToggleButton::setSelected : NO_COVERAGE

1057

removed call to javax/swing/JCheckBox::setSelected : NO_COVERAGE

1060

removed call to javax/swing/JToggleButton::setSelected : NO_COVERAGE

1061

removed call to javax/swing/JCheckBox::setSelected : NO_COVERAGE

1101

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

1102

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

1112

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

negated conditional : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

1113

Substituted 0 with 1 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1117

changed conditional boundary : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

negated conditional : NO_COVERAGE

1123

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

1132

negated conditional : NO_COVERAGE

negated conditional : NO_COVERAGE

1133

Substituted 0 with 1 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1136

removed call to javax/swing/JScrollPane::getHeight : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getTableHeader : NO_COVERAGE

removed call to javax/swing/table/JTableHeader::getHeight : NO_COVERAGE

1139

negated conditional : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getHeight : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

1140

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1142

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced integer division with multiplication : NO_COVERAGE

Replaced integer division with multiplication : NO_COVERAGE

Replaced integer multiplication with division : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowHeight : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowHeight : NO_COVERAGE

1143

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1144

removed call to fi/helsinki/cs/titokone/JTableX::getHeight : NO_COVERAGE

negated conditional : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

1145

removed call to fi/helsinki/cs/titokone/JTableX::getHeight : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowMargin : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

1154

Removed assignment to member variable this$0 : NO_COVERAGE

Removed assignment to member variable val$finalY : NO_COVERAGE

removed call to javax/swing/SwingUtilities::invokeLater : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$4::<init> : NO_COVERAGE

Removed assignment to member variable val$finalActiveScrollPane : NO_COVERAGE

1158

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JScrollPane::getViewport : NO_COVERAGE

removed call to javax/swing/JViewport::setViewPosition : NO_COVERAGE

removed call to java/awt/Point::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1161

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1179

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

1185

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

1188

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::centerToLine : NO_COVERAGE

1189

removed call to fi/helsinki/cs/titokone/JTableX::selectRow : NO_COVERAGE

1193

Replaced integer addition with subtraction : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

negated conditional : NO_COVERAGE

1197

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

1198

Substituted 3 with 4 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::centerToLine : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

1199

removed call to fi/helsinki/cs/titokone/JTableX::selectRow : NO_COVERAGE

1200

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

negated conditional : NO_COVERAGE

1201

removed call to fi/helsinki/cs/titokone/JTableX::unselectAllRows : NO_COVERAGE

1202

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::selectRow : NO_COVERAGE

1203

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/awt/Point::<init> : NO_COVERAGE

removed call to javax/swing/JScrollPane::getViewport : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JViewport::setViewPosition : NO_COVERAGE

1205

removed call to fi/helsinki/cs/titokone/JTableX::getRowCount : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

1206

Substituted 3 with 4 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::centerToLine : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

1207

removed call to fi/helsinki/cs/titokone/JTableX::selectRow : NO_COVERAGE

1215

removed call to fi/helsinki/cs/titokone/GUI::repaint : NO_COVERAGE

1220

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/JFrame::setVisible : NO_COVERAGE

1224

removed call to javax/swing/JFrame::setVisible : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1236

removed call to javax/swing/JLabel::setText : NO_COVERAGE

1247

removed call to javax/swing/JMenu::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1248

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

1249

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

1250

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1251

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1252

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1253

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1254

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

1255

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1256

removed call to javax/swing/JMenu::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1257

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JMenu::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1258

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JMenu::setText : NO_COVERAGE

1259

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1260

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1261

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1262

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

1263

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JMenu::setText : NO_COVERAGE

1264

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1265

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1266

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JMenu::setText : NO_COVERAGE

1267

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JMenuItem::setText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1269

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setToolTipTextForColumns : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

1275

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setToolTipTextForColumns : NO_COVERAGE

1281

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1282

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1283

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

1284

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

1285

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1286

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

1287

removed call to javax/swing/JToggleButton::setToolTipText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1288

removed call to javax/swing/JToggleButton::setToolTipText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1289

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JToggleButton::setToolTipText : NO_COVERAGE

1290

removed call to javax/swing/JToggleButton::setToolTipText : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1292

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JButton::setText : NO_COVERAGE

1294

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/JScrollPane::getBorder : NO_COVERAGE

removed call to javax/swing/border/TitledBorder::setTitle : NO_COVERAGE

1295

removed call to javax/swing/border/TitledBorder::setTitle : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/JScrollPane::getBorder : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1298

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1299

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1300

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

1301

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1302

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

1303

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

1304

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1305

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

1306

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1307

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

1308

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1309

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

1310

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1311

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1312

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1313

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1314

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

1315

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1316

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1317

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1318

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1319

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1320

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

1321

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1323

removed call to javax/swing/JFileChooser::updateUI : NO_COVERAGE

1325

removed call to fi/helsinki/cs/titokone/GUIRunSettingsDialog::updateAllTexts : NO_COVERAGE

1326

removed call to fi/helsinki/cs/titokone/GUICompileSettingsDialog::updateAllTexts : NO_COVERAGE

1327

removed call to fi/helsinki/cs/titokone/GUIHTMLDialog::updateAllTexts : NO_COVERAGE

1328

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIHTMLDialog::setTitle : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1329

removed call to fi/helsinki/cs/titokone/GUIHTMLDialog::updateAllTexts : NO_COVERAGE

1330

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIHTMLDialog::setTitle : NO_COVERAGE

1332

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1333

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/UIManager::put : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1335

removed call to fi/helsinki/cs/titokone/GUI::invalidate : NO_COVERAGE

1336

removed call to fi/helsinki/cs/titokone/GUI::validate : NO_COVERAGE

1337

removed call to fi/helsinki/cs/titokone/GUI::repaint : NO_COVERAGE

1347

removed call to javax/swing/JOptionPane::showMessageDialog : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1353

removed call to fi/helsinki/cs/titokone/JTableX::getModel : NO_COVERAGE

removed call to javax/swing/table/DefaultTableModel::getDataVector : NO_COVERAGE

1354

removed call to java/util/Vector::size : NO_COVERAGE

1356

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1357

removed call to java/util/Enumeration::hasMoreElements : NO_COVERAGE

removed call to java/util/Vector::elements : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

negated conditional : NO_COVERAGE

1358

removed call to java/util/Enumeration::nextElement : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/util/Vector::get : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1360

mutated return of Object value for fi/helsinki/cs/titokone/GUI::getCodeTableContents to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

1374

removed call to fi/helsinki/cs/titokone/JTableX::<init> : NO_COVERAGE

Removed assignment to member variable codeTable : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/table/DefaultTableModel::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1375

removed call to fi/helsinki/cs/titokone/JTableX::setFont : NO_COVERAGE

1376

removed call to fi/helsinki/cs/titokone/JTableX::setAutoResizeMode : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1377

removed call to fi/helsinki/cs/titokone/JTableX::setEnabled : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1378

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setShowGrid : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1379

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$5::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getDefaultEditor : NO_COVERAGE

removed call to javax/swing/DefaultCellEditor::addCellEditorListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnClass : NO_COVERAGE

1384

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1385

removed call to fi/helsinki/cs/titokone/GUIBrain::saveSource : NO_COVERAGE

1389

removed call to java/awt/Component::setFont : NO_COVERAGE

removed call to javax/swing/DefaultCellEditor::getComponent : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getDefaultEditor : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnClass : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1390

Removed assignment to member variable codeTableScrollPane : NO_COVERAGE

removed call to javax/swing/JScrollPane::<init> : NO_COVERAGE

1391

removed call to javax/swing/JScrollPane::setForeground : NO_COVERAGE

1393

removed call to fi/helsinki/cs/titokone/JTableX::<init> : NO_COVERAGE

Removed assignment to member variable instructionsTable : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/table/DefaultTableModel::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1394

removed call to fi/helsinki/cs/titokone/JTableX::setFont : NO_COVERAGE

1395

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setAutoResizeMode : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1396

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setEnabled : NO_COVERAGE

1397

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setToolTipTextForColumns : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1398

removed call to javax/swing/JScrollPane::<init> : NO_COVERAGE

Removed assignment to member variable instructionsTableScrollPane : NO_COVERAGE

1400

Removed assignment to member variable dataTable : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/table/DefaultTableModel::<init> : NO_COVERAGE

1401

removed call to fi/helsinki/cs/titokone/JTableX::setFont : NO_COVERAGE

1402

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setAutoResizeMode : NO_COVERAGE

1403

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setEnabled : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1404

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setToolTipTextForColumns : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

1405

removed call to fi/helsinki/cs/titokone/JTableX::setRowSelectionAllowed : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1406

removed call to javax/swing/JScrollPane::<init> : NO_COVERAGE

Removed assignment to member variable dataTableScrollPane : NO_COVERAGE

1408

removed call to fi/helsinki/cs/titokone/JTableX::setDoubleBuffered : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1409

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/JScrollPane::setDoubleBuffered : NO_COVERAGE

1411

Removed assignment to member variable dataTablePopupMenu : NO_COVERAGE

removed call to javax/swing/JPopupMenu::<init> : NO_COVERAGE

1412

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/JCheckBoxMenuItem::<init> : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1413

removed call to fi/helsinki/cs/titokone/GUI$6::<init> : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to javax/swing/JCheckBoxMenuItem::addActionListener : NO_COVERAGE

1415

negated conditional : NO_COVERAGE

removed call to javax/swing/JCheckBoxMenuItem::getState : NO_COVERAGE

removed call to java/awt/event/ActionEvent::getSource : NO_COVERAGE

1416

Replaced integer addition with subtraction : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

1419

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

1421

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setMinWidth : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

1422

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

1426

removed call to javax/swing/JPopupMenu::add : NO_COVERAGE

1429

removed call to fi/helsinki/cs/titokone/GUI$7::<init> : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

1431

removed call to fi/helsinki/cs/titokone/GUI$7::maybeShowPopup : NO_COVERAGE

1435

removed call to fi/helsinki/cs/titokone/GUI$7::maybeShowPopup : NO_COVERAGE

1439

negated conditional : NO_COVERAGE

removed call to java/awt/event/MouseEvent::isPopupTrigger : NO_COVERAGE

1440

removed call to java/awt/event/MouseEvent::getY : NO_COVERAGE

removed call to java/awt/event/MouseEvent::getX : NO_COVERAGE

removed call to java/awt/event/MouseEvent::getComponent : NO_COVERAGE

removed call to javax/swing/JPopupMenu::show : NO_COVERAGE

1444

removed call to fi/helsinki/cs/titokone/JTableX::addMouseListener : NO_COVERAGE

1446

removed call to javax/swing/JSplitPane::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Removed assignment to member variable dataAndInstructionsTableSplitPane : NO_COVERAGE

1447

removed call to javax/swing/JSplitPane::setTopComponent : NO_COVERAGE

1448

removed call to javax/swing/JSplitPane::setBottomComponent : NO_COVERAGE

1449

removed call to javax/swing/JSplitPane::setOneTouchExpandable : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1451

removed call to javax/swing/JLabel::<init> : NO_COVERAGE

Removed assignment to member variable statusBar : NO_COVERAGE

1452

Removed assignment to member variable commentList : NO_COVERAGE

removed call to javax/swing/DefaultListModel::<init> : NO_COVERAGE

removed call to javax/swing/JList::<init> : NO_COVERAGE

1453

Substituted 100 with 101 : NO_COVERAGE

removed call to javax/swing/DefaultListModel::ensureCapacity : NO_COVERAGE

removed call to javax/swing/JList::getModel : NO_COVERAGE

Replaced constant value of 100 with 101 : NO_COVERAGE

1455

Substituted 1 with 0 : NO_COVERAGE

Removed assignment to member variable symbolTable : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/table/DefaultTableModel::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::<init> : NO_COVERAGE

1456

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setEnabled : NO_COVERAGE

1457

removed call to fi/helsinki/cs/titokone/JTableX::setFont : NO_COVERAGE

1458

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setRowSelectionAllowed : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1459

removed call to javax/swing/JScrollPane::<init> : NO_COVERAGE

Removed assignment to member variable symbolTableScrollPane : NO_COVERAGE

1460

removed call to javax/swing/BorderFactory::createTitledBorder : NO_COVERAGE

removed call to javax/swing/JScrollPane::setBorder : NO_COVERAGE

1461

removed call to java/awt/Dimension::<init> : NO_COVERAGE

Substituted 200 with 201 : NO_COVERAGE

Replaced constant value of 150 with 151 : NO_COVERAGE

removed call to javax/swing/JScrollPane::setMinimumSize : NO_COVERAGE

Substituted 150 with 151 : NO_COVERAGE

Replaced constant value of 200 with 201 : NO_COVERAGE

1463

Substituted 2 with 3 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 8 with 9 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Replaced constant value of 7 with 8 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 9 with 10 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 7 with 8 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Replaced constant value of 9 with 10 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced constant value of 8 with 9 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 5 with 6 : NO_COVERAGE

Substituted 5 with -1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1467

Removed assignment to member variable registersTable : NO_COVERAGE

removed call to javax/swing/table/DefaultTableModel::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::<init> : NO_COVERAGE

1468

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setEnabled : NO_COVERAGE

1469

removed call to fi/helsinki/cs/titokone/JTableX::setFont : NO_COVERAGE

1470

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::setRowSelectionAllowed : NO_COVERAGE

1471

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setMinWidth : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1472

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getColumnModel : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/JTableX::getMaxTextLengthInColumn : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/table/TableColumnModel::getColumn : NO_COVERAGE

removed call to javax/swing/table/TableColumn::setPreferredWidth : NO_COVERAGE

1473

Removed assignment to member variable registersTableScrollPane : NO_COVERAGE

removed call to javax/swing/JScrollPane::<init> : NO_COVERAGE

1474

removed call to java/awt/Dimension::<init> : NO_COVERAGE

Substituted 150 with 151 : NO_COVERAGE

removed call to javax/swing/JScrollPane::setPreferredSize : NO_COVERAGE

Replaced constant value of 140 with 141 : NO_COVERAGE

Substituted 140 with 141 : NO_COVERAGE

Replaced constant value of 150 with 151 : NO_COVERAGE

1475

removed call to javax/swing/JScrollPane::setBorder : NO_COVERAGE

removed call to javax/swing/BorderFactory::createTitledBorder : NO_COVERAGE

1477

removed call to java/awt/BorderLayout::<init> : NO_COVERAGE

removed call to javax/swing/JPanel::<init> : NO_COVERAGE

Removed assignment to member variable ioPanel : NO_COVERAGE

1478

Removed assignment to member variable inputPanel : NO_COVERAGE

removed call to javax/swing/JPanel::<init> : NO_COVERAGE

removed call to java/awt/BorderLayout::<init> : NO_COVERAGE

1479

removed call to java/awt/BorderLayout::<init> : NO_COVERAGE

Removed assignment to member variable outputPanel : NO_COVERAGE

removed call to javax/swing/JPanel::<init> : NO_COVERAGE

1481

Substituted 1 with 0 : NO_COVERAGE

Substituted 7 with 8 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/JTextArea::<init> : NO_COVERAGE

Replaced constant value of 7 with 8 : NO_COVERAGE

Removed assignment to member variable outputTextArea : NO_COVERAGE

1482

removed call to javax/swing/JTextArea::setLineWrap : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1483

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/JTextArea::setWrapStyleWord : NO_COVERAGE

1484

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JTextArea::setEditable : NO_COVERAGE

1486

Removed assignment to member variable enterNumberLabel : NO_COVERAGE

removed call to javax/swing/JLabel::<init> : NO_COVERAGE

1487

Substituted 100 with 101 : NO_COVERAGE

removed call to java/awt/Dimension::<init> : NO_COVERAGE

Replaced constant value of 100 with 101 : NO_COVERAGE

removed call to javax/swing/JLabel::setSize : NO_COVERAGE

Replaced constant value of 100 with 101 : NO_COVERAGE

Substituted 100 with 101 : NO_COVERAGE

1489

Removed assignment to member variable inputField : NO_COVERAGE

removed call to javax/swing/JTextField::<init> : NO_COVERAGE

Replaced constant value of 11 with 12 : NO_COVERAGE

Substituted 11 with 12 : NO_COVERAGE

1490

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to javax/swing/JTextField::addKeyListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$8::<init> : NO_COVERAGE

1495

negated conditional : NO_COVERAGE

Replaced constant value of 10 with 11 : NO_COVERAGE

removed call to java/awt/event/KeyEvent::getKeyCode : NO_COVERAGE

Substituted 10 with 11 : NO_COVERAGE

1496

removed call to fi/helsinki/cs/titokone/GUI::access$000 : NO_COVERAGE

1504

Removed assignment to member variable enterNumberButton : NO_COVERAGE

removed call to javax/swing/JButton::<init> : NO_COVERAGE

1505

removed call to javax/swing/JButton::addActionListener : NO_COVERAGE

1507

Removed assignment to member variable outputScrollPane : NO_COVERAGE

removed call to javax/swing/JScrollPane::<init> : NO_COVERAGE

1508

removed call to javax/swing/JScrollPane::setPreferredSize : NO_COVERAGE

removed call to java/awt/Dimension::<init> : NO_COVERAGE

Substituted 300 with 301 : NO_COVERAGE

Replaced constant value of 30 with 31 : NO_COVERAGE

Replaced constant value of 300 with 301 : NO_COVERAGE

Substituted 30 with 31 : NO_COVERAGE

1509

removed call to javax/swing/JScrollPane::setBorder : NO_COVERAGE

removed call to javax/swing/BorderFactory::createTitledBorder : NO_COVERAGE

1510

removed call to javax/swing/JPanel::add : NO_COVERAGE

1512

removed call to javax/swing/JPanel::add : NO_COVERAGE

1513

removed call to javax/swing/JPanel::add : NO_COVERAGE

1514

removed call to javax/swing/JPanel::add : NO_COVERAGE

1515

removed call to javax/swing/BorderFactory::createTitledBorder : NO_COVERAGE

removed call to javax/swing/JPanel::setBorder : NO_COVERAGE

1517

removed call to javax/swing/JPanel::add : NO_COVERAGE

1518

removed call to javax/swing/JPanel::add : NO_COVERAGE

1520

removed call to javax/swing/JPanel::<init> : NO_COVERAGE

Removed assignment to member variable upperRightPanel : NO_COVERAGE

removed call to java/awt/BorderLayout::<init> : NO_COVERAGE

1521

removed call to javax/swing/JPanel::add : NO_COVERAGE

1522

removed call to javax/swing/JPanel::add : NO_COVERAGE

1523

removed call to javax/swing/JPanel::add : NO_COVERAGE

1525

removed call to javax/swing/JScrollPane::<init> : NO_COVERAGE

Removed assignment to member variable commentListScrollPane : NO_COVERAGE

1526

Replaced constant value of 50 with 51 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 50 with 51 : NO_COVERAGE

removed call to java/awt/Dimension::<init> : NO_COVERAGE

removed call to javax/swing/JScrollPane::setPreferredSize : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1527

removed call to javax/swing/JList::setDoubleBuffered : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1528

removed call to javax/swing/JScrollPane::setDoubleBuffered : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1561

Removed assignment to member variable rightSplitPane : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JSplitPane::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1562

Substituted 0.5 with 1.0 : NO_COVERAGE

removed call to javax/swing/JSplitPane::setResizeWeight : NO_COVERAGE

Replaced constant value of 0.5 with 1.0 : NO_COVERAGE

1565

removed call to java/awt/BorderLayout::<init> : NO_COVERAGE

Removed assignment to member variable leftPanel : NO_COVERAGE

removed call to javax/swing/JPanel::<init> : NO_COVERAGE

1566

removed call to javax/swing/JSplitPane::<init> : NO_COVERAGE

Removed assignment to member variable mainSplitPane : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1567

Replaced constant value of 0.5 with 1.0 : NO_COVERAGE

Substituted 0.5 with 1.0 : NO_COVERAGE

removed call to javax/swing/JSplitPane::setResizeWeight : NO_COVERAGE

1569

removed call to fi/helsinki/cs/titokone/GUI::getContentPane : NO_COVERAGE

removed call to java/awt/Container::setLayout : NO_COVERAGE

removed call to java/awt/BorderLayout::<init> : NO_COVERAGE

1570

removed call to fi/helsinki/cs/titokone/GUI::getContentPane : NO_COVERAGE

removed call to java/awt/Container::add : NO_COVERAGE

1571

removed call to fi/helsinki/cs/titokone/GUI::makeToolBar : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::getContentPane : NO_COVERAGE

removed call to java/awt/Container::add : NO_COVERAGE

1573

removed call to javax/swing/BorderFactory::createEtchedBorder : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JLabel::setBorder : NO_COVERAGE

1574

removed call to java/awt/Container::add : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::getContentPane : NO_COVERAGE

1576

Substituted 5 with 6 : NO_COVERAGE

Substituted 5 with -1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE

1577

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::setGUIView : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1584

removed call to javax/swing/JTextField::getText : NO_COVERAGE

1586

negated conditional : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIBrain::enterInput : NO_COVERAGE

1590

removed call to fi/helsinki/cs/titokone/GUIBrain::continueTask : NO_COVERAGE

1597

Removed assignment to member variable animator : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Animator::<init> : NO_COVERAGE

1599

removed call to java/io/PrintStream::println : NO_COVERAGE

removed call to java/io/IOException::getMessage : NO_COVERAGE

1602

removed call to javax/swing/JFrame::<init> : NO_COVERAGE

Removed assignment to member variable animatorFrame : NO_COVERAGE

1603

Replaced constant value of 636 with 637 : NO_COVERAGE

Substituted 810 with 811 : NO_COVERAGE

Replaced constant value of 810 with 811 : NO_COVERAGE

Substituted 636 with 637 : NO_COVERAGE

removed call to javax/swing/JFrame::setSize : NO_COVERAGE

1604

removed call to javax/swing/JFrame::setTitle : NO_COVERAGE

1605

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/JFrame::setDefaultCloseOperation : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1607

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 100 with 101 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Removed assignment to member variable animatorSpeedSlider : NO_COVERAGE

Substituted 50 with 51 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Replaced constant value of 100 with 101 : NO_COVERAGE

Replaced constant value of 50 with 51 : NO_COVERAGE

removed call to javax/swing/JSlider::<init> : NO_COVERAGE

1608

removed call to java/util/Hashtable::<init> : NO_COVERAGE

1609

removed call to javax/swing/JLabel::<init> : NO_COVERAGE

removed call to java/util/Hashtable::put : NO_COVERAGE

removed call to java/lang/Integer::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1610

removed call to javax/swing/JLabel::<init> : NO_COVERAGE

Substituted 100 with 101 : NO_COVERAGE

Replaced constant value of 100 with 101 : NO_COVERAGE

removed call to java/util/Hashtable::put : NO_COVERAGE

removed call to java/lang/Integer::<init> : NO_COVERAGE

1611

removed call to javax/swing/JSlider::setLabelTable : NO_COVERAGE

1613

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/JSlider::setPaintLabels : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1614

removed call to javax/swing/JSlider::addChangeListener : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$9::<init> : NO_COVERAGE

1616

removed call to javax/swing/JSlider::getValue : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Substituted 100 with 101 : NO_COVERAGE

Replaced constant value of 100 with 101 : NO_COVERAGE

1617

removed call to fi/helsinki/cs/titokone/Animator::setAnimationDelay : NO_COVERAGE

1621

removed call to javax/swing/JButton::<init> : NO_COVERAGE

Removed assignment to member variable animatorContinueButton : NO_COVERAGE

1623

removed call to java/lang/Class::getClassLoader : NO_COVERAGE

removed call to java/lang/Object::getClass : NO_COVERAGE

removed call to java/lang/ClassLoader::getResource : NO_COVERAGE

removed call to javax/swing/JButton::setIcon : NO_COVERAGE

removed call to javax/swing/ImageIcon::<init> : NO_COVERAGE

1628

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

1629

Substituted 0 with 1 : NO_COVERAGE

removed call to java/awt/Insets::<init> : NO_COVERAGE

removed call to javax/swing/JButton::setMargin : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1630

removed call to javax/swing/JButton::addActionListener : NO_COVERAGE

1632

removed call to java/awt/BorderLayout::<init> : NO_COVERAGE

removed call to javax/swing/JPanel::<init> : NO_COVERAGE

1633

removed call to javax/swing/JPanel::add : NO_COVERAGE

1634

removed call to javax/swing/JPanel::add : NO_COVERAGE

1635

removed call to javax/swing/JPanel::<init> : NO_COVERAGE

removed call to java/awt/BorderLayout::<init> : NO_COVERAGE

1636

removed call to javax/swing/JPanel::add : NO_COVERAGE

1637

removed call to javax/swing/JPanel::add : NO_COVERAGE

1639

removed call to javax/swing/JFrame::getContentPane : NO_COVERAGE

removed call to java/awt/Container::add : NO_COVERAGE

1644

Substituted 4 with 5 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

1646

removed call to fi/helsinki/cs/titokone/Display::<init> : NO_COVERAGE

Removed assignment to member variable display : NO_COVERAGE

1647

removed call to javax/swing/JFrame::<init> : NO_COVERAGE

Removed assignment to member variable displayFrame : NO_COVERAGE

1648

Replaced integer multiplication with division : NO_COVERAGE

Replaced constant value of 120 with 121 : NO_COVERAGE

Substituted 160 with 161 : NO_COVERAGE

removed call to javax/swing/JFrame::setSize : NO_COVERAGE

Replaced constant value of 160 with 161 : NO_COVERAGE

Replaced integer multiplication with division : NO_COVERAGE

Substituted 120 with 121 : NO_COVERAGE

1649

Replaced constant value of 160 with 161 : NO_COVERAGE

Substituted 120 with 121 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to javax/swing/JFrame::setTitle : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Replaced constant value of 120 with 121 : NO_COVERAGE

Substituted 8192 with 8193 : NO_COVERAGE

Replaced constant value of 8192 with 8193 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

Substituted 160 with 161 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

1650

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/JFrame::setDefaultCloseOperation : NO_COVERAGE

1651

removed call to fi/helsinki/cs/titokone/GUI$10::<init> : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to javax/swing/JFrame::addWindowListener : NO_COVERAGE

1653

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Display::setUpdates : NO_COVERAGE

1654

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JToggleButton::setSelected : NO_COVERAGE

1659

removed call to javax/swing/JFrame::getContentPane : NO_COVERAGE

removed call to java/awt/Container::add : NO_COVERAGE

1661

removed call to java/lang/Thread::<init> : NO_COVERAGE

removed call to java/lang/Thread::start : NO_COVERAGE

1672

removed call to javax/swing/JMenuBar::<init> : NO_COVERAGE

1673

removed call to javax/swing/JMenu::<init> : NO_COVERAGE

Removed assignment to member variable fileMenu : NO_COVERAGE

1674

removed call to javax/swing/JMenu::add : NO_COVERAGE

Removed assignment to member variable openFile : NO_COVERAGE

1675

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JMenuItem::setEnabled : NO_COVERAGE

1676

Removed assignment to member variable compileMenuItem : NO_COVERAGE

removed call to javax/swing/JMenu::add : NO_COVERAGE

1677

removed call to javax/swing/JMenu::add : NO_COVERAGE

Removed assignment to member variable runMenuItem : NO_COVERAGE

1678

Removed assignment to member variable continueMenuItem : NO_COVERAGE

removed call to javax/swing/JMenu::add : NO_COVERAGE

1679

Removed assignment to member variable continueToEndMenuItem : NO_COVERAGE

removed call to javax/swing/JMenu::add : NO_COVERAGE

1680

Removed assignment to member variable stopMenuItem : NO_COVERAGE

removed call to javax/swing/JMenu::add : NO_COVERAGE

1681

Removed assignment to member variable eraseMem : NO_COVERAGE

removed call to javax/swing/JMenu::add : NO_COVERAGE

1682

Removed assignment to member variable quit : NO_COVERAGE

removed call to javax/swing/JMenu::add : NO_COVERAGE

1685

removed call to javax/swing/JMenu::<init> : NO_COVERAGE

Removed assignment to member variable optionsMenu : NO_COVERAGE

1687

removed call to javax/swing/JMenu::<init> : NO_COVERAGE

Removed assignment to member variable setMemSize : NO_COVERAGE

1688

removed call to javax/swing/JMenu::add : NO_COVERAGE

1689

removed call to javax/swing/JMenu::add : NO_COVERAGE

1690

removed call to javax/swing/JMenu::add : NO_COVERAGE

1691

removed call to javax/swing/JMenu::add : NO_COVERAGE

1692

removed call to javax/swing/JMenu::add : NO_COVERAGE

1693

removed call to javax/swing/JMenu::add : NO_COVERAGE

1694

removed call to javax/swing/JMenu::add : NO_COVERAGE

1695

removed call to javax/swing/JMenu::add : NO_COVERAGE

1696

removed call to javax/swing/JMenu::add : NO_COVERAGE

1698

Removed assignment to member variable configureFileSystem : NO_COVERAGE

removed call to javax/swing/JMenu::<init> : NO_COVERAGE

1699

removed call to javax/swing/JMenu::add : NO_COVERAGE

Removed assignment to member variable selectDefaultStdinFile : NO_COVERAGE

1700

removed call to javax/swing/JMenu::add : NO_COVERAGE

Removed assignment to member variable selectDefaultStdoutFile : NO_COVERAGE

1701

removed call to javax/swing/JMenu::add : NO_COVERAGE

1703

Removed assignment to member variable setCompilingOptions : NO_COVERAGE

removed call to javax/swing/JMenu::add : NO_COVERAGE

1704

Removed assignment to member variable setRunningOptions : NO_COVERAGE

removed call to javax/swing/JMenu::add : NO_COVERAGE

1706

removed call to javax/swing/JMenu::<init> : NO_COVERAGE

Removed assignment to member variable setLanguage : NO_COVERAGE

1707

removed call to fi/helsinki/cs/titokone/GUIBrain::getAvailableLanguages : NO_COVERAGE

1708

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

1709

removed call to javax/swing/JMenu::add : NO_COVERAGE

1710

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1713

removed call to javax/swing/JMenu::add : NO_COVERAGE

Removed assignment to member variable selectLanguageFromFile : NO_COVERAGE

1714

removed call to javax/swing/JMenu::add : NO_COVERAGE

1717

Removed assignment to member variable helpMenu : NO_COVERAGE

removed call to javax/swing/JMenu::<init> : NO_COVERAGE

1718

Removed assignment to member variable manual : NO_COVERAGE

removed call to javax/swing/JMenu::add : NO_COVERAGE

1719

Removed assignment to member variable about : NO_COVERAGE

removed call to javax/swing/JMenu::add : NO_COVERAGE

1721

removed call to javax/swing/JMenuBar::add : NO_COVERAGE

1722

removed call to javax/swing/JMenuBar::add : NO_COVERAGE

1723

removed call to javax/swing/JMenuBar::add : NO_COVERAGE

1724

removed call to javax/swing/JFrame::setJMenuBar : NO_COVERAGE

1727

Substituted 79 with 80 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced constant value of 79 with 80 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/JMenuItem::setAccelerator : NO_COVERAGE

removed call to javax/swing/KeyStroke::getKeyStroke : NO_COVERAGE

1728

Substituted 2 with 3 : NO_COVERAGE

Replaced constant value of 75 with 76 : NO_COVERAGE

removed call to javax/swing/JMenuItem::setAccelerator : NO_COVERAGE

Substituted 75 with 76 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/KeyStroke::getKeyStroke : NO_COVERAGE

1729

Replaced constant value of 66 with 67 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/JMenuItem::setAccelerator : NO_COVERAGE

Substituted 66 with 67 : NO_COVERAGE

removed call to javax/swing/KeyStroke::getKeyStroke : NO_COVERAGE

1730

removed call to javax/swing/JMenuItem::setAccelerator : NO_COVERAGE

Replaced constant value of 10 with 11 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 10 with 11 : NO_COVERAGE

removed call to javax/swing/KeyStroke::getKeyStroke : NO_COVERAGE

1731

removed call to javax/swing/KeyStroke::getKeyStroke : NO_COVERAGE

Substituted 10 with 11 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced constant value of 10 with 11 : NO_COVERAGE

removed call to javax/swing/JMenuItem::setAccelerator : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

1732

removed call to javax/swing/JMenuItem::setAccelerator : NO_COVERAGE

removed call to javax/swing/KeyStroke::getKeyStroke : NO_COVERAGE

Replaced constant value of 69 with 70 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 69 with 70 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

1733

Substituted 27 with 28 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JMenuItem::setAccelerator : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/KeyStroke::getKeyStroke : NO_COVERAGE

Replaced constant value of 27 with 28 : NO_COVERAGE

1734

Replaced constant value of 81 with 82 : NO_COVERAGE

removed call to javax/swing/JMenuItem::setAccelerator : NO_COVERAGE

Substituted 81 with 82 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to javax/swing/KeyStroke::getKeyStroke : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

1735

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JMenuItem::setAccelerator : NO_COVERAGE

Replaced constant value of 112 with 113 : NO_COVERAGE

removed call to javax/swing/KeyStroke::getKeyStroke : NO_COVERAGE

Substituted 112 with 113 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1738

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1739

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1740

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1741

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1742

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1743

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1744

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1745

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1746

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1747

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1748

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1749

removed call to fi/helsinki/cs/titokone/GUI$SetMemSizeActionListener::<init> : NO_COVERAGE

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

Replaced constant value of 9 with 10 : NO_COVERAGE

Substituted 9 with 10 : NO_COVERAGE

1750

Substituted 10 with 11 : NO_COVERAGE

Replaced constant value of 10 with 11 : NO_COVERAGE

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$SetMemSizeActionListener::<init> : NO_COVERAGE

1751

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

Replaced constant value of 11 with 12 : NO_COVERAGE

Substituted 11 with 12 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$SetMemSizeActionListener::<init> : NO_COVERAGE

1752

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

Replaced constant value of 12 with 13 : NO_COVERAGE

Substituted 12 with 13 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$SetMemSizeActionListener::<init> : NO_COVERAGE

1753

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$SetMemSizeActionListener::<init> : NO_COVERAGE

Substituted 13 with 14 : NO_COVERAGE

Replaced constant value of 13 with 14 : NO_COVERAGE

1754

Replaced constant value of 14 with 15 : NO_COVERAGE

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$SetMemSizeActionListener::<init> : NO_COVERAGE

Substituted 14 with 15 : NO_COVERAGE

1755

Substituted 15 with 16 : NO_COVERAGE

Replaced constant value of 15 with 16 : NO_COVERAGE

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$SetMemSizeActionListener::<init> : NO_COVERAGE

1756

Substituted 16 with 17 : NO_COVERAGE

Replaced constant value of 16 with 17 : NO_COVERAGE

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$SetMemSizeActionListener::<init> : NO_COVERAGE

1757

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1758

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1759

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1760

removed call to javax/swing/JMenuItem::addActionListener : NO_COVERAGE

1773

removed call to javax/swing/JToolBar::<init> : NO_COVERAGE

1775

removed call to javax/swing/JButton::<init> : NO_COVERAGE

Removed assignment to member variable openFileButton : NO_COVERAGE

1777

removed call to javax/swing/JButton::setIcon : NO_COVERAGE

removed call to java/lang/Class::getClassLoader : NO_COVERAGE

removed call to javax/swing/ImageIcon::<init> : NO_COVERAGE

removed call to java/lang/Object::getClass : NO_COVERAGE

removed call to java/lang/ClassLoader::getResource : NO_COVERAGE

1782

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

1783

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JButton::setMargin : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/awt/Insets::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1784

removed call to javax/swing/JButton::setMnemonic : NO_COVERAGE

Replaced constant value of 79 with 80 : NO_COVERAGE

Substituted 79 with 80 : NO_COVERAGE

1785

removed call to javax/swing/JButton::setEnabled : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1786

removed call to javax/swing/JToolBar::add : NO_COVERAGE

1788

removed call to javax/swing/JToolBar::addSeparator : NO_COVERAGE

1790

Removed assignment to member variable compileButton : NO_COVERAGE

removed call to javax/swing/JButton::<init> : NO_COVERAGE

1792

removed call to javax/swing/ImageIcon::<init> : NO_COVERAGE

removed call to java/lang/Class::getClassLoader : NO_COVERAGE

removed call to java/lang/Object::getClass : NO_COVERAGE

removed call to javax/swing/JButton::setIcon : NO_COVERAGE

removed call to java/lang/ClassLoader::getResource : NO_COVERAGE

1797

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

1798

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/awt/Insets::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JButton::setMargin : NO_COVERAGE

1799

removed call to javax/swing/JToolBar::add : NO_COVERAGE

1801

Removed assignment to member variable runButton : NO_COVERAGE

removed call to javax/swing/JButton::<init> : NO_COVERAGE

1803

removed call to javax/swing/JButton::setIcon : NO_COVERAGE

removed call to javax/swing/ImageIcon::<init> : NO_COVERAGE

removed call to java/lang/Object::getClass : NO_COVERAGE

removed call to java/lang/Class::getClassLoader : NO_COVERAGE

removed call to java/lang/ClassLoader::getResource : NO_COVERAGE

1808

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

1809

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JButton::setMargin : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/awt/Insets::<init> : NO_COVERAGE

1810

removed call to javax/swing/JToolBar::add : NO_COVERAGE

1812

Removed assignment to member variable continueButton : NO_COVERAGE

removed call to javax/swing/JButton::<init> : NO_COVERAGE

1814

removed call to java/lang/Class::getClassLoader : NO_COVERAGE

removed call to java/lang/Object::getClass : NO_COVERAGE

removed call to javax/swing/ImageIcon::<init> : NO_COVERAGE

removed call to javax/swing/JButton::setIcon : NO_COVERAGE

removed call to java/lang/ClassLoader::getResource : NO_COVERAGE

1819

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

1820

removed call to java/awt/Insets::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JButton::setMargin : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1821

removed call to javax/swing/JToolBar::add : NO_COVERAGE

1823

Removed assignment to member variable continueToEndButton : NO_COVERAGE

removed call to javax/swing/JButton::<init> : NO_COVERAGE

1825

removed call to java/lang/Object::getClass : NO_COVERAGE

removed call to javax/swing/ImageIcon::<init> : NO_COVERAGE

removed call to javax/swing/JButton::setIcon : NO_COVERAGE

removed call to java/lang/ClassLoader::getResource : NO_COVERAGE

removed call to java/lang/Class::getClassLoader : NO_COVERAGE

1830

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

1831

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/awt/Insets::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JButton::setMargin : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1832

removed call to javax/swing/JToolBar::add : NO_COVERAGE

1834

removed call to javax/swing/JButton::<init> : NO_COVERAGE

Removed assignment to member variable stopButton : NO_COVERAGE

1836

removed call to java/lang/Object::getClass : NO_COVERAGE

removed call to javax/swing/JButton::setIcon : NO_COVERAGE

removed call to javax/swing/ImageIcon::<init> : NO_COVERAGE

removed call to java/lang/Class::getClassLoader : NO_COVERAGE

removed call to java/lang/ClassLoader::getResource : NO_COVERAGE

1841

removed call to javax/swing/JButton::setToolTipText : NO_COVERAGE

1842

Substituted 0 with 1 : NO_COVERAGE

removed call to java/awt/Insets::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JButton::setMargin : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1843

removed call to javax/swing/JToolBar::add : NO_COVERAGE

1845

removed call to javax/swing/JToolBar::addSeparator : NO_COVERAGE

1848

Removed assignment to member variable lineByLineToggleButton : NO_COVERAGE

removed call to javax/swing/JToggleButton::<init> : NO_COVERAGE

1850

removed call to java/lang/Class::getClassLoader : NO_COVERAGE

removed call to java/lang/Object::getClass : NO_COVERAGE

removed call to javax/swing/JToggleButton::<init> : NO_COVERAGE

removed call to javax/swing/ImageIcon::<init> : NO_COVERAGE

Removed assignment to member variable lineByLineToggleButton : NO_COVERAGE

removed call to java/lang/ClassLoader::getResource : NO_COVERAGE

1855

removed call to javax/swing/JToggleButton::setToolTipText : NO_COVERAGE

1856

removed call to java/awt/Insets::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JToggleButton::setMargin : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1857

removed call to javax/swing/JToolBar::add : NO_COVERAGE

1859

Removed assignment to member variable showCommentsToggleButton : NO_COVERAGE

removed call to javax/swing/JToggleButton::<init> : NO_COVERAGE

1861

Removed assignment to member variable showCommentsToggleButton : NO_COVERAGE

removed call to javax/swing/ImageIcon::<init> : NO_COVERAGE

removed call to javax/swing/JToggleButton::<init> : NO_COVERAGE

removed call to java/lang/ClassLoader::getResource : NO_COVERAGE

removed call to java/lang/Object::getClass : NO_COVERAGE

removed call to java/lang/Class::getClassLoader : NO_COVERAGE

1866

removed call to javax/swing/JToggleButton::setToolTipText : NO_COVERAGE

1867

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JToggleButton::setMargin : NO_COVERAGE

removed call to java/awt/Insets::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1868

removed call to javax/swing/JToolBar::add : NO_COVERAGE

1870

removed call to javax/swing/JToggleButton::<init> : NO_COVERAGE

Removed assignment to member variable showAnimationToggleButton : NO_COVERAGE

1872

removed call to java/lang/Class::getClassLoader : NO_COVERAGE

removed call to java/lang/ClassLoader::getResource : NO_COVERAGE

removed call to javax/swing/ImageIcon::<init> : NO_COVERAGE

removed call to javax/swing/JToggleButton::<init> : NO_COVERAGE

removed call to java/lang/Object::getClass : NO_COVERAGE

Removed assignment to member variable showAnimationToggleButton : NO_COVERAGE

1877

removed call to javax/swing/JToggleButton::setToolTipText : NO_COVERAGE

1878

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JToggleButton::setMargin : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/awt/Insets::<init> : NO_COVERAGE

1879

removed call to javax/swing/JToolBar::add : NO_COVERAGE

1881

removed call to javax/swing/JToolBar::addSeparator : NO_COVERAGE

1883

removed call to javax/swing/JToggleButton::<init> : NO_COVERAGE

Removed assignment to member variable showDisplayToggleButton : NO_COVERAGE

1885

removed call to java/lang/Object::getClass : NO_COVERAGE

Removed assignment to member variable showDisplayToggleButton : NO_COVERAGE

removed call to javax/swing/JToggleButton::<init> : NO_COVERAGE

removed call to java/lang/ClassLoader::getResource : NO_COVERAGE

removed call to java/lang/Class::getClassLoader : NO_COVERAGE

removed call to javax/swing/ImageIcon::<init> : NO_COVERAGE

1890

removed call to javax/swing/JToggleButton::setToolTipText : NO_COVERAGE

1891

removed call to javax/swing/JToggleButton::setMargin : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/awt/Insets::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1892

removed call to javax/swing/JToolBar::add : NO_COVERAGE

1894

removed call to javax/swing/JToolBar::setFloatable : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1896

removed call to javax/swing/JButton::addActionListener : NO_COVERAGE

1897

removed call to javax/swing/JButton::addActionListener : NO_COVERAGE

1898

removed call to javax/swing/JButton::addActionListener : NO_COVERAGE

1899

removed call to javax/swing/JButton::addActionListener : NO_COVERAGE

1900

removed call to javax/swing/JButton::addActionListener : NO_COVERAGE

1901

removed call to javax/swing/JButton::addActionListener : NO_COVERAGE

1902

removed call to javax/swing/JToggleButton::addActionListener : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$11::<init> : NO_COVERAGE

1904

removed call to javax/swing/JToggleButton::isSelected : NO_COVERAGE

removed call to java/awt/event/ActionEvent::getSource : NO_COVERAGE

1905

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetRunningOption : NO_COVERAGE

1908

removed call to javax/swing/JToggleButton::addActionListener : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$12::<init> : NO_COVERAGE

1910

removed call to java/awt/event/ActionEvent::getSource : NO_COVERAGE

removed call to javax/swing/JToggleButton::isSelected : NO_COVERAGE

1911

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetRunningOption : NO_COVERAGE

1914

removed call to javax/swing/JToggleButton::addActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$13::<init> : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

1916

removed call to java/awt/event/ActionEvent::getSource : NO_COVERAGE

removed call to javax/swing/JToggleButton::isSelected : NO_COVERAGE

1917

Substituted 4 with 5 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetRunningOption : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

1920

removed call to fi/helsinki/cs/titokone/GUI$14::<init> : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to javax/swing/JToggleButton::addActionListener : NO_COVERAGE

1922

removed call to java/awt/event/ActionEvent::getSource : NO_COVERAGE

removed call to javax/swing/JToggleButton::isSelected : NO_COVERAGE

1923

removed call to fi/helsinki/cs/titokone/Display::setUpdates : NO_COVERAGE

1924

removed call to javax/swing/JFrame::setVisible : NO_COVERAGE

1928

mutated return of Object value for fi/helsinki/cs/titokone/GUI::makeToolBar to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

1937

Removed assignment to member variable this$0 : NO_COVERAGE

Removed assignment to member variable openCommandActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$15::<init> : NO_COVERAGE

1940

removed call to fi/helsinki/cs/titokone/GUI::access$100 : NO_COVERAGE

1942

negated conditional : NO_COVERAGE

1943

removed call to fi/helsinki/cs/titokone/GUIThreader::run : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIThreader::<init> : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::access$200 : NO_COVERAGE

removed call to javax/swing/JFileChooser::getSelectedFile : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1949

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$16::<init> : NO_COVERAGE

Removed assignment to member variable selectStdinFileActionListener : NO_COVERAGE

1952

removed call to fi/helsinki/cs/titokone/GUI::access$300 : NO_COVERAGE

1953

negated conditional : NO_COVERAGE

1954

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetStdin : NO_COVERAGE

removed call to javax/swing/JFileChooser::getSelectedFile : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::access$200 : NO_COVERAGE

1959

removed call to fi/helsinki/cs/titokone/GUI$17::<init> : NO_COVERAGE

Removed assignment to member variable selectStdoutFileActionListener : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

1961

removed call to fi/helsinki/cs/titokone/GUI::access$400 : NO_COVERAGE

1962

negated conditional : NO_COVERAGE

1963

removed call to javax/swing/JOptionPane::<init> : NO_COVERAGE

1964

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/UIManager::get : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/UIManager::get : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1967

removed call to javax/swing/JOptionPane::showConfirmDialog : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::access$200 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1973

negated conditional : NO_COVERAGE

1974

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetStdout : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::access$200 : NO_COVERAGE

removed call to javax/swing/JFileChooser::getSelectedFile : NO_COVERAGE

1976

Substituted 1 with 0 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1977

Substituted 1 with 0 : NO_COVERAGE

removed call to javax/swing/JFileChooser::getSelectedFile : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetStdout : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::access$200 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1984

removed call to fi/helsinki/cs/titokone/GUI$18::<init> : NO_COVERAGE

Removed assignment to member variable compileCommandActionListener : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

1986

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIThreader::<init> : NO_COVERAGE

removed call to java/lang/Thread::start : NO_COVERAGE

removed call to java/lang/Thread::<init> : NO_COVERAGE

1990

Removed assignment to member variable runCommandActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$19::<init> : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

1992

removed call to fi/helsinki/cs/titokone/GUIThreader::<init> : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

removed call to java/lang/Thread::start : NO_COVERAGE

removed call to java/lang/Thread::<init> : NO_COVERAGE

1996

removed call to fi/helsinki/cs/titokone/GUI$20::<init> : NO_COVERAGE

Removed assignment to member variable continueCommandActionListener : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

1998

Substituted 4 with 5 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIThreader::<init> : NO_COVERAGE

removed call to java/lang/Thread::start : NO_COVERAGE

removed call to java/lang/Thread::<init> : NO_COVERAGE

2003

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$21::<init> : NO_COVERAGE

Removed assignment to member variable continueToEndCommandActionListener : NO_COVERAGE

2006

removed call to fi/helsinki/cs/titokone/GUIBrain::continueTaskWithoutPauses : NO_COVERAGE

2010

Removed assignment to member variable this$0 : NO_COVERAGE

Removed assignment to member variable setRunningOptionsCommandActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$22::<init> : NO_COVERAGE

2013

removed call to fi/helsinki/cs/titokone/GUIRunSettingsDialog::setVisible : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::access$500 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

2017

Removed assignment to member variable setCompilingOptionsCommandActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$23::<init> : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

2020

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::access$600 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUICompileSettingsDialog::setVisible : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

2024

Removed assignment to member variable stopCommandActionListener : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$24::<init> : NO_COVERAGE

2026

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIBrain::menuInterrupt : NO_COVERAGE

2031

removed call to fi/helsinki/cs/titokone/GUI$25::<init> : NO_COVERAGE

Removed assignment to member variable eraseMemoryActionListener : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

2033

removed call to fi/helsinki/cs/titokone/GUIBrain::menuEraseMemory : NO_COVERAGE

2037

Removed assignment to member variable setLanguageActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$26::<init> : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

2039

removed call to java/awt/event/ActionEvent::getSource : NO_COVERAGE

removed call to javax/swing/JMenuItem::getText : NO_COVERAGE

2040

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetLanguage : NO_COVERAGE

2044

Removed assignment to member variable selectLanguageFromFileActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$27::<init> : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

2049

removed call to fi/helsinki/cs/titokone/GUI::access$700 : NO_COVERAGE

2050

negated conditional : NO_COVERAGE

2051

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetLanguage : NO_COVERAGE

removed call to javax/swing/JFileChooser::getSelectedFile : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::access$200 : NO_COVERAGE

2056

Removed assignment to member variable this$0 : NO_COVERAGE

Removed assignment to member variable aboutActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$28::<init> : NO_COVERAGE

2058

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::access$800 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUIHTMLDialog::setVisible : NO_COVERAGE

2062

Removed assignment to member variable manualActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$29::<init> : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

2064

removed call to fi/helsinki/cs/titokone/GUIHTMLDialog::setVisible : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI::access$900 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

2068

removed call to fi/helsinki/cs/titokone/GUI$30::<init> : NO_COVERAGE

Removed assignment to member variable enterNumberButtonActionListener : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

2070

removed call to fi/helsinki/cs/titokone/GUI::access$000 : NO_COVERAGE

2076

Removed assignment to member variable this$0 : NO_COVERAGE

Removed assignment to member variable quitActionListener : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$31::<init> : NO_COVERAGE

2078

removed call to fi/helsinki/cs/titokone/GUIBrain::menuExit : NO_COVERAGE

2079

removed call to java/lang/System::exit : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

2089

Removed assignment to member variable this$0 : NO_COVERAGE

2090

Removed assignment to member variable memsize : NO_COVERAGE

2094

removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetMemorySize : NO_COVERAGE

2101

removed call to fi/helsinki/cs/titokone/GUI$32::<init> : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

Removed assignment to member variable B91FileFilter : NO_COVERAGE

2103

negated conditional : NO_COVERAGE

removed call to java/io/File::isDirectory : NO_COVERAGE

2104

Substituted 1 with 0 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

2107

removed call to fi/helsinki/cs/titokone/GUIBrain::getExtension : NO_COVERAGE

2108

negated conditional : NO_COVERAGE

2109

negated conditional : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

2110

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

2112

Substituted 0 with 1 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

2115

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

2119

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

mutated return of Object value for fi/helsinki/cs/titokone/GUI$32::getDescription to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

2124

Removed assignment to member variable K91FileFilter : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/GUI$33::<init> : NO_COVERAGE

2126

negated conditional : NO_COVERAGE

removed call to java/io/File::isDirectory : NO_COVERAGE

2127

Substituted 1 with 0 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

2130

removed call to fi/helsinki/cs/titokone/GUIBrain::getExtension : NO_COVERAGE

2131

negated conditional : NO_COVERAGE

2132

negated conditional : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

2133

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

2135

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

2138

Substituted 0 with 1 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

2142

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

mutated return of Object value for fi/helsinki/cs/titokone/GUI$33::getDescription to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

2146

removed call to fi/helsinki/cs/titokone/GUI$34::<init> : NO_COVERAGE

Removed assignment to member variable this$0 : NO_COVERAGE

Removed assignment to member variable classFileFilter : NO_COVERAGE

2148

removed call to java/io/File::isDirectory : NO_COVERAGE

negated conditional : NO_COVERAGE

2149

Substituted 1 with 0 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

2152

removed call to fi/helsinki/cs/titokone/GUIBrain::getExtension : NO_COVERAGE

2153

negated conditional : NO_COVERAGE

2154

removed call to java/lang/String::equals : NO_COVERAGE

negated conditional : NO_COVERAGE

2155

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

2157

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

2160

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

2164

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

mutated return of Object value for fi/helsinki/cs/titokone/GUI$34::getDescription to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

2177

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JFileChooser::setAcceptAllFileFilterUsed : NO_COVERAGE

2178

removed call to javax/swing/JFileChooser::addChoosableFileFilter : NO_COVERAGE

2179

removed call to javax/swing/JFileChooser::addChoosableFileFilter : NO_COVERAGE

2180

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JFileChooser::setDialogTitle : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

2182

removed call to javax/swing/JFileChooser::showOpenDialog : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

2193

removed call to javax/swing/JFileChooser::setAcceptAllFileFilterUsed : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

2194

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to javax/swing/JFileChooser::setDialogTitle : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

2196

removed call to javax/swing/JFileChooser::showOpenDialog : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

2207

removed call to javax/swing/JFileChooser::setAcceptAllFileFilterUsed : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

2208

removed call to javax/swing/JFileChooser::setDialogTitle : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

2210

removed call to javax/swing/JFileChooser::showOpenDialog : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

2221

removed call to javax/swing/JFileChooser::setFileFilter : NO_COVERAGE

2222

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to javax/swing/JFileChooser::setAcceptAllFileFilterUsed : NO_COVERAGE

2223

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to javax/swing/JFileChooser::setDialogTitle : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

2225

removed call to javax/swing/JFileChooser::showOpenDialog : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

2234

removed call to java/io/PrintStream::println : NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 0.27