GUI.java

1
/**
2
 * SpamSchutz - simple way to protect your mail addresses from naïve spammers
3
 * Copyright (C) 2011, Aiki IT
4
 * <p/>
5
 * This program is free software: you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License as published by
7
 * the Free Software Foundation, either version 3 of the License, or
8
 * (at your option) any later version.
9
 * <p/>
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 * <p/>
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
 */
18
package de.aikiit.spamprotector;
19
20
import com.google.common.annotations.VisibleForTesting;
21
import de.aikiit.spamprotector.converter.SpamProtector;
22
23
import javax.swing.*;
24
import java.awt.*;
25
import java.time.LocalDate;
26
27
import static de.aikiit.spamprotector.util.LocalizationHelper.getBundleString;
28
import static de.aikiit.spamprotector.util.LocalizationHelper.getParameterizedBundleString;
29
30
/**
31
 * This class contains the main UI of this application (both input windows
32
 * and all command buttons).
33
 */
34
class GUI extends JPanel {
35
36
    /**
37
     * Constant to define the dimension of a text box.
38
     */
39
    private static final Dimension BOX_DIMENSION = new Dimension(300, 200);
40
41
    @VisibleForTesting
42
    static final LocalDate now = LocalDate.now();
43
44
    /**
45
     * Launches and configures the main UI component.
46
     */
47
    GUI() {
48 1 1. <init> : removed call to javax/swing/SwingUtilities::invokeLater → NO_COVERAGE
        SwingUtilities.invokeLater(this::init);
49
    }
50
51
    /**
52
     * Internal helper to initialize the UI depending on the surrounding this
53
     * application is started.
54
     */
55
    private void init() {
56
        // command help
57
        final JPanel buttonArea = new JPanel();
58
        JButton help = new JButton(getBundleString("spamschutz.ui.help"));
59 1 1. init : removed call to javax/swing/JButton::setMnemonic → NO_COVERAGE
        help.setMnemonic(getBundleString("spamschutz.ui.help.mnemonic").charAt(0));
60 2 1. lambda$init$0 : removed call to javax/swing/JOptionPane::showMessageDialog → NO_COVERAGE
2. init : removed call to javax/swing/JButton::addActionListener → NO_COVERAGE
        help.addActionListener(e -> JOptionPane.showMessageDialog(null, getParameterizedBundleString("spamschutz.ui.help.text",
61
                        String.valueOf(now.getYear()),
62
                        // TODO remove me, once #94 is resolved
63
                        de.aikiit.spamprotector.util.Version.VERSION),
64
                getBundleString("spamschutz.ui.help.title"),
65
                JOptionPane.INFORMATION_MESSAGE));
66
67
        final JTextField input = new JTextField();
68 1 1. init : removed call to javax/swing/JTextField::setSize → NO_COVERAGE
        input.setSize(BOX_DIMENSION);
69 1 1. init : removed call to javax/swing/JTextField::setPreferredSize → NO_COVERAGE
        input.setPreferredSize(BOX_DIMENSION);
70
        final JTextField output = new JTextField(getBundleString("spamschutz.ui.default.output"));
71 1 1. init : removed call to javax/swing/JTextField::setSize → NO_COVERAGE
        output.setSize(BOX_DIMENSION);
72 1 1. init : removed call to javax/swing/JTextField::setPreferredSize → NO_COVERAGE
        output.setPreferredSize(BOX_DIMENSION);
73
74
        // read input field
75
        final JButton start = new JButton(getBundleString("spamschutz.ui.button.rtl"));
76 1 1. init : removed call to javax/swing/JButton::setMnemonic → NO_COVERAGE
        start.setMnemonic(getBundleString("spamschutz.ui.button.rtl.mnemonic").charAt(0));
77 2 1. init : removed call to javax/swing/JButton::addActionListener → NO_COVERAGE
2. lambda$init$1 : removed call to javax/swing/JTextField::setText → NO_COVERAGE
        start.addActionListener(e -> output.setText(SpamProtector.toEncoded(input.getText())));
78
79
        // read output field
80
        final JButton revert = new JButton(getBundleString("spamschutz.ui.button.ltr"));
81 1 1. init : removed call to javax/swing/JButton::setMnemonic → NO_COVERAGE
        revert.setMnemonic(getBundleString("spamschutz.ui.button.ltr.mnemonic").charAt(0));
82 2 1. init : removed call to javax/swing/JButton::addActionListener → NO_COVERAGE
2. lambda$init$2 : removed call to javax/swing/JTextField::setText → NO_COVERAGE
        revert.addActionListener(e -> input.setText(SpamProtector.toPlain(output.getText())));
83
84
        final JButton reset = new JButton(getBundleString("spamschutz.ui.reset"));
85 1 1. init : removed call to javax/swing/JButton::setMnemonic → NO_COVERAGE
        reset.setMnemonic(getBundleString("spamschutz.ui.reset.mnemonic").charAt(0));
86 1 1. init : removed call to javax/swing/JButton::addActionListener → NO_COVERAGE
        reset.addActionListener(e -> {
87 1 1. lambda$init$3 : removed call to javax/swing/JTextField::setText → NO_COVERAGE
            input.setText("");
88 1 1. lambda$init$3 : removed call to javax/swing/JTextField::setText → NO_COVERAGE
            output.setText("");
89
        });
90
91
        buttonArea.add(revert);
92
        buttonArea.add(start);
93
        buttonArea.add(reset);
94
95
        // fields
96
        final JPanel ioArea = new JPanel(new FlowLayout());
97
98
        final JLabel inputLabel = new JLabel(getBundleString("spamschutz.ui.input"));
99 1 1. init : removed call to javax/swing/JLabel::setDisplayedMnemonic → NO_COVERAGE
        inputLabel.setDisplayedMnemonic(getBundleString("spamschutz.ui.input.mnemonic").charAt(0));
100 1 1. init : removed call to javax/swing/JLabel::setLabelFor → NO_COVERAGE
        inputLabel.setLabelFor(input);
101
        ioArea.add(inputLabel);
102
        ioArea.add(input);
103
104
        final JLabel outputLabel = new JLabel(getBundleString("spamschutz.ui.output"));
105 1 1. init : removed call to javax/swing/JLabel::setDisplayedMnemonic → NO_COVERAGE
        outputLabel.setDisplayedMnemonic(getBundleString("spamschutz.ui.output.mnemonic").charAt(0));
106 1 1. init : removed call to javax/swing/JLabel::setLabelFor → NO_COVERAGE
        outputLabel.setLabelFor(output);
107
        ioArea.add(outputLabel);
108
        ioArea.add(output);
109
110
        // window layout
111 1 1. init : removed call to de/aikiit/spamprotector/GUI::setLayout → NO_COVERAGE
        this.setLayout(new BorderLayout());
112 1 1. init : removed call to de/aikiit/spamprotector/GUI::add → NO_COVERAGE
        this.add(buttonArea, BorderLayout.NORTH);
113 1 1. init : removed call to de/aikiit/spamprotector/GUI::add → NO_COVERAGE
        this.add(ioArea, BorderLayout.CENTER);
114
115
        final JButton end = new JButton(getBundleString("spamschutz.ui.end"));
116 1 1. init : removed call to javax/swing/JButton::setMnemonic → NO_COVERAGE
        end.setMnemonic(getBundleString("spamschutz.ui.end.mnemonic").charAt(0));
117 2 1. lambda$init$4 : removed call to java/lang/System::exit → NO_COVERAGE
2. init : removed call to javax/swing/JButton::addActionListener → NO_COVERAGE
        end.addActionListener(e -> System.exit(0));
118
        buttonArea.add(end);
119
        buttonArea.add(help);
120 1 1. init : removed call to de/aikiit/spamprotector/GUI::setVisible → NO_COVERAGE
        this.setVisible(true);
121
    }
122
}

Mutations

48

1.1
Location : <init>
Killed by : none
removed call to javax/swing/SwingUtilities::invokeLater → NO_COVERAGE

59

1.1
Location : init
Killed by : none
removed call to javax/swing/JButton::setMnemonic → NO_COVERAGE

60

1.1
Location : lambda$init$0
Killed by : none
removed call to javax/swing/JOptionPane::showMessageDialog → NO_COVERAGE

2.2
Location : init
Killed by : none
removed call to javax/swing/JButton::addActionListener → NO_COVERAGE

68

1.1
Location : init
Killed by : none
removed call to javax/swing/JTextField::setSize → NO_COVERAGE

69

1.1
Location : init
Killed by : none
removed call to javax/swing/JTextField::setPreferredSize → NO_COVERAGE

71

1.1
Location : init
Killed by : none
removed call to javax/swing/JTextField::setSize → NO_COVERAGE

72

1.1
Location : init
Killed by : none
removed call to javax/swing/JTextField::setPreferredSize → NO_COVERAGE

76

1.1
Location : init
Killed by : none
removed call to javax/swing/JButton::setMnemonic → NO_COVERAGE

77

1.1
Location : init
Killed by : none
removed call to javax/swing/JButton::addActionListener → NO_COVERAGE

2.2
Location : lambda$init$1
Killed by : none
removed call to javax/swing/JTextField::setText → NO_COVERAGE

81

1.1
Location : init
Killed by : none
removed call to javax/swing/JButton::setMnemonic → NO_COVERAGE

82

1.1
Location : init
Killed by : none
removed call to javax/swing/JButton::addActionListener → NO_COVERAGE

2.2
Location : lambda$init$2
Killed by : none
removed call to javax/swing/JTextField::setText → NO_COVERAGE

85

1.1
Location : init
Killed by : none
removed call to javax/swing/JButton::setMnemonic → NO_COVERAGE

86

1.1
Location : init
Killed by : none
removed call to javax/swing/JButton::addActionListener → NO_COVERAGE

87

1.1
Location : lambda$init$3
Killed by : none
removed call to javax/swing/JTextField::setText → NO_COVERAGE

88

1.1
Location : lambda$init$3
Killed by : none
removed call to javax/swing/JTextField::setText → NO_COVERAGE

99

1.1
Location : init
Killed by : none
removed call to javax/swing/JLabel::setDisplayedMnemonic → NO_COVERAGE

100

1.1
Location : init
Killed by : none
removed call to javax/swing/JLabel::setLabelFor → NO_COVERAGE

105

1.1
Location : init
Killed by : none
removed call to javax/swing/JLabel::setDisplayedMnemonic → NO_COVERAGE

106

1.1
Location : init
Killed by : none
removed call to javax/swing/JLabel::setLabelFor → NO_COVERAGE

111

1.1
Location : init
Killed by : none
removed call to de/aikiit/spamprotector/GUI::setLayout → NO_COVERAGE

112

1.1
Location : init
Killed by : none
removed call to de/aikiit/spamprotector/GUI::add → NO_COVERAGE

113

1.1
Location : init
Killed by : none
removed call to de/aikiit/spamprotector/GUI::add → NO_COVERAGE

116

1.1
Location : init
Killed by : none
removed call to javax/swing/JButton::setMnemonic → NO_COVERAGE

117

1.1
Location : lambda$init$4
Killed by : none
removed call to java/lang/System::exit → NO_COVERAGE

2.2
Location : init
Killed by : none
removed call to javax/swing/JButton::addActionListener → NO_COVERAGE

120

1.1
Location : init
Killed by : none
removed call to de/aikiit/spamprotector/GUI::setVisible → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.19.3