JFrameView.java

1
/*******************************************************************************
2
 * Copyhacked (H) 2012-2025.
3
 * This program and the accompanying materials
4
 * are made available under no term at all, use it like
5
 * you want, but share and discuss it
6
 * every time possible with every body.
7
 * 
8
 * Contributors:
9
 *      ron190 at ymail dot com - initial implementation
10
 ******************************************************************************/
11
package com.jsql.view.swing;
12
13
import com.jsql.model.InjectionModel;
14
import com.jsql.util.*;
15
import com.jsql.view.swing.action.HotkeyUtil;
16
import com.jsql.view.subscriber.SubscriberView;
17
import com.jsql.view.swing.menubar.AppMenubar;
18
import com.jsql.view.swing.panel.PanelAddressBar;
19
import com.jsql.view.swing.panel.split.SplitNS;
20
import com.jsql.view.swing.terminal.AbstractExploit;
21
import com.jsql.view.swing.tab.TabManagers;
22
import com.jsql.view.swing.util.MediatorHelper;
23
import com.jsql.view.swing.util.UiUtil;
24
import org.apache.commons.lang3.SystemUtils;
25
import org.apache.logging.log4j.LogManager;
26
import org.apache.logging.log4j.Logger;
27
28
import javax.swing.*;
29
import java.awt.*;
30
import java.awt.event.WindowAdapter;
31
import java.awt.event.WindowEvent;
32
import java.util.HashMap;
33
import java.util.Map;
34
import java.util.UUID;
35
import java.util.prefs.Preferences;
36
import java.util.stream.Stream;
37
38
/**
39
 * View in the MVC pattern, defines all the components
40
 * and process actions sent by the model.<br>
41
 * Main groups of components:<br>
42
 * - at the top: textfield inputs,<br>
43
 * - at the center: tree on the left, table on the right,<br>
44
 * - at the bottom: information labels.
45
 */
46
public class JFrameView extends JFrame {
47
48
    private static final Logger LOGGER = LogManager.getRootLogger();
49
50
    /**
51
     * Map of terminal by unique identifier.
52
     */
53
    private final Map<UUID, AbstractExploit> mapUuidShell = new HashMap<>();
54
    private final transient SubscriberView subscriberView = new SubscriberView();
55
    private TabManagers tabManagers;
56
    private boolean isMaximized = false;
57
    private final InjectionModel injectionModel;
58
    private SplitNS splitNS;  // main
59
60
    public JFrameView(InjectionModel injectionModel) {  // Build the GUI: add app icon, tree icons, the 3 main panels
61
        super(StringUtil.APP_NAME);
62
        this.injectionModel = injectionModel;
63 1 1. <init> : removed call to com/jsql/view/swing/util/MediatorHelper::register → NO_COVERAGE
        MediatorHelper.register(this);
64 1 1. <init> : removed call to com/jsql/view/swing/util/UiUtil::prepareGUI → NO_COVERAGE
        UiUtil.prepareGUI();  // Load UI before any component
65 1 1. <init> : removed call to com/jsql/view/swing/JFrameView::initPaneComponents → NO_COVERAGE
        this.initPaneComponents();
66 1 1. <init> : removed call to com/jsql/view/swing/JFrameView::initWindow → NO_COVERAGE
        this.initWindow();
67 1 1. <init> : removed call to com/jsql/view/swing/JFrameView::initShortcuts → NO_COVERAGE
        this.initShortcuts();
68 1 1. <init> : removed call to com/jsql/view/swing/JFrameView::displayVersion → NO_COVERAGE
        this.displayVersion();
69 1 1. <init> : removed call to com/jsql/util/I18nUtil::checkCurrentLanguage → NO_COVERAGE
        I18nUtil.checkCurrentLanguage();
70 1 1. <init> : removed call to com/jsql/view/swing/JFrameView::check4K → NO_COVERAGE
        this.check4K();
71
72 1 1. <init> : removed call to javax/swing/SwingUtilities::invokeLater → NO_COVERAGE
        SwingUtilities.invokeLater(() -> {  // paint native blu svg in theme color behind the scene
73 1 1. lambda$new$0 : removed call to com/jsql/view/swing/menubar/AppMenubar::applyTheme → NO_COVERAGE
            AppMenubar.applyTheme(injectionModel.getMediatorUtils().preferencesUtil().getThemeFlatLafName());  // refresh missing components
74 1 1. lambda$new$0 : negated conditional → NO_COVERAGE
            if (injectionModel.getMediatorUtils().proxyUtil().isNotLive(GitUtil.ShowOnConsole.YES)) {  // network access
75
                return;
76
            }
77 1 1. lambda$new$0 : negated conditional → NO_COVERAGE
            if (injectionModel.getMediatorUtils().preferencesUtil().isCheckingUpdate()) {
78 1 1. lambda$new$0 : removed call to com/jsql/util/GitUtil::checkUpdate → NO_COVERAGE
                injectionModel.getMediatorUtils().gitUtil().checkUpdate(GitUtil.ShowOnConsole.NO);
79
            }
80 1 1. lambda$new$0 : negated conditional → NO_COVERAGE
            if (injectionModel.getMediatorUtils().preferencesUtil().isShowNews()) {  // disabled when UT only
81 1 1. lambda$new$0 : removed call to com/jsql/util/GitUtil::showNews → NO_COVERAGE
                injectionModel.getMediatorUtils().gitUtil().showNews();
82
            }
83 1 1. lambda$new$0 : removed call to com/jsql/view/swing/JFrameView::setVisible → NO_COVERAGE
            this.setVisible(true);
84
            MediatorHelper.panelAddressBar().getTextFieldAddress().requestFocusInWindow();  // required here to get focus
85
        });
86
    }
87
88
    private void initPaneComponents() {
89
        // Define the default panel: each component on a vertical line
90 1 1. initPaneComponents : removed call to java/awt/Container::setLayout → NO_COVERAGE
        this.getContentPane().setLayout(new BoxLayout(this.getContentPane(), BoxLayout.PAGE_AXIS));
91
92
        this.tabManagers = new TabManagers();  // Tab manager linked to cards
93
        this.add(this.tabManagers);
94
95
        var menubar = new AppMenubar();
96 1 1. initPaneComponents : removed call to com/jsql/view/swing/JFrameView::setJMenuBar → NO_COVERAGE
        this.setJMenuBar(menubar);
97 1 1. initPaneComponents : removed call to com/jsql/view/swing/util/MediatorHelper::register → NO_COVERAGE
        MediatorHelper.register(menubar);
98
99
        var panelAddressBar = new PanelAddressBar();  // Textfield at the top
100 1 1. initPaneComponents : removed call to com/jsql/view/swing/util/MediatorHelper::register → NO_COVERAGE
        MediatorHelper.register(panelAddressBar);
101
        this.add(panelAddressBar);
102
103
        var mainPanel = new JPanel(new BorderLayout());  // Main panel for tree and tables in the middle
104
        this.splitNS = new SplitNS();
105
        mainPanel.add(this.splitNS);
106
        this.add(mainPanel);
107
108 1 1. initPaneComponents : removed call to com/jsql/view/swing/menubar/MenuWindows::switchLocaleFromPreferences → NO_COVERAGE
        menubar.getMenuWindows().switchLocaleFromPreferences();
109
    }
110
111
    private void initWindow() {
112 1 1. initWindow : removed call to com/jsql/view/swing/JFrameView::setIconImages → NO_COVERAGE
        this.setIconImages(UiUtil.getIcons());  // define small and large app icons
113
        var preferences = Preferences.userRoot().node(InjectionModel.class.getName());
114 3 1. lambda$initWindow$1 : Replaced bitwise AND with OR → NO_COVERAGE
2. initWindow : removed call to com/jsql/view/swing/JFrameView::addWindowStateListener → NO_COVERAGE
3. lambda$initWindow$1 : negated conditional → NO_COVERAGE
        this.addWindowStateListener(e -> this.isMaximized = (e.getNewState() & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH);
115 1 1. initWindow : removed call to com/jsql/view/swing/JFrameView::addWindowListener → NO_COVERAGE
        this.addWindowListener(new WindowAdapter() {
116
            @Override
117
            public void windowOpened(WindowEvent event) {
118
                double nsProportion = preferences.getDouble(PreferencesUtil.NS_SPLIT, 0.75);
119
                double ewProportion = preferences.getDouble(PreferencesUtil.EW_SPLIT, 0.33);
120 1 1. windowOpened : negated conditional → NO_COVERAGE
                if (preferences.getBoolean(PreferencesUtil.IS_MAXIMIZED, false)) {
121 1 1. windowOpened : removed call to com/jsql/view/swing/JFrameView::setExtendedState → NO_COVERAGE
                    JFrameView.this.setExtendedState(Frame.MAXIMIZED_BOTH);
122
                }
123
                // Proportion means different location relative to whether frame is maximized or not
124
                // Maximizing must wait AWT events to reflect the new divider location proportion
125 1 1. windowOpened : removed call to javax/swing/SwingUtilities::invokeLater → NO_COVERAGE
                SwingUtilities.invokeLater(() -> {
126 1 1. lambda$windowOpened$0 : removed call to com/jsql/view/swing/panel/split/SplitNS::setDividerLocation → NO_COVERAGE
                    JFrameView.this.splitNS.setDividerLocation(Math.clamp(nsProportion, 0.0, 1.0));
127 1 1. lambda$windowOpened$0 : removed call to javax/swing/JSplitPane::setDividerLocation → NO_COVERAGE
                    JFrameView.this.splitNS.getSplitEW().setDividerLocation(Math.clamp(ewProportion, 0.0, 1.0));
128 1 1. lambda$windowOpened$0 : removed call to javax/swing/JSplitPane::setDividerLocation → NO_COVERAGE
                    MediatorHelper.panelConsoles().getNetworkSplitPane().setDividerLocation(
129 1 1. lambda$windowOpened$0 : negated conditional → NO_COVERAGE
                        ComponentOrientation.getOrientation(I18nUtil.getCurrentLocale()).isLeftToRight()
130
                        ? 0.33
131
                        : 0.66
132
                    );
133
                });
134
            }
135
136
            @Override
137
            public void windowClosing(WindowEvent e) {
138 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                preferences.putBoolean(PreferencesUtil.IS_MAXIMIZED, JFrameView.this.isMaximized);
139
140
                int ewDividerLocation = JFrameView.this.splitNS.getSplitEW().getDividerLocation();
141
                int ewHeight = JFrameView.this.splitNS.getSplitEW().getWidth();
142 2 1. windowClosing : Replaced double multiplication with division → NO_COVERAGE
2. windowClosing : Replaced double division with multiplication → NO_COVERAGE
                double ewProportion = 100.0 * ewDividerLocation / ewHeight;
143 1 1. windowClosing : Replaced double division with multiplication → NO_COVERAGE
                double ewLocationProportionCapped = Math.clamp(ewProportion / 100.0, 0.0, 1.0);
144
145
                int nsDividerLocation = JFrameView.this.splitNS.getDividerLocation();
146
                int nsHeight = JFrameView.this.splitNS.getHeight();
147 2 1. windowClosing : Replaced double multiplication with division → NO_COVERAGE
2. windowClosing : Replaced double division with multiplication → NO_COVERAGE
                double nsProportion = 100.0 * nsDividerLocation / nsHeight;
148 1 1. windowClosing : Replaced double division with multiplication → NO_COVERAGE
                double nsLocationProportionCapped = Math.clamp(nsProportion / 100.0, 0.0, 1.0);
149
150
                // Divider location changes when window is maximized, instead stores location percentage between 0.0 and 1.0
151 1 1. windowClosing : removed call to java/util/prefs/Preferences::putDouble → NO_COVERAGE
                preferences.putDouble(PreferencesUtil.NS_SPLIT, nsLocationProportionCapped);
152 1 1. windowClosing : removed call to java/util/prefs/Preferences::putDouble → NO_COVERAGE
                preferences.putDouble(PreferencesUtil.EW_SPLIT, ewLocationProportionCapped);
153
154 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                preferences.putBoolean(PreferencesUtil.BINARY_VISIBLE, false);
155 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                preferences.putBoolean(PreferencesUtil.CHUNK_VISIBLE, false);
156 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                preferences.putBoolean(PreferencesUtil.NETWORK_VISIBLE, false);
157 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                preferences.putBoolean(PreferencesUtil.JAVA_VISIBLE, false);
158 2 1. windowClosing : changed conditional boundary → NO_COVERAGE
2. windowClosing : negated conditional → NO_COVERAGE
                for (var i = 0 ; i < MediatorHelper.tabConsoles().getTabCount() ; i++) {
159 1 1. windowClosing : negated conditional → NO_COVERAGE
                    if ("CONSOLE_BINARY_LABEL".equals(MediatorHelper.tabConsoles().getTabComponentAt(i).getName())) {
160 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                        preferences.putBoolean(PreferencesUtil.BINARY_VISIBLE, true);
161 1 1. windowClosing : negated conditional → NO_COVERAGE
                    } else if ("CONSOLE_CHUNK_LABEL".equals(MediatorHelper.tabConsoles().getTabComponentAt(i).getName())) {
162 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                        preferences.putBoolean(PreferencesUtil.CHUNK_VISIBLE, true);
163 1 1. windowClosing : negated conditional → NO_COVERAGE
                    } else if ("CONSOLE_NETWORK_LABEL".equals(MediatorHelper.tabConsoles().getTabComponentAt(i).getName())) {
164 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                        preferences.putBoolean(PreferencesUtil.NETWORK_VISIBLE, true);
165 1 1. windowClosing : negated conditional → NO_COVERAGE
                    } else if ("CONSOLE_JAVA_LABEL".equals(MediatorHelper.tabConsoles().getTabComponentAt(i).getName())) {
166 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                        preferences.putBoolean(PreferencesUtil.JAVA_VISIBLE, true);
167
                    }
168
                }
169
            }
170
        });
171
        
172 1 1. initWindow : removed call to com/jsql/view/swing/JFrameView::setSize → NO_COVERAGE
        this.setSize(1024, 768);
173 1 1. initWindow : removed call to com/jsql/view/swing/JFrameView::setLocationRelativeTo → NO_COVERAGE
        this.setLocationRelativeTo(null);  // center the window
174 1 1. initWindow : removed call to com/jsql/view/swing/JFrameView::setDefaultCloseOperation → NO_COVERAGE
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
175
    }
176
177
    private void initShortcuts() {
178 1 1. initShortcuts : removed call to com/jsql/view/swing/action/HotkeyUtil::addShortcut → NO_COVERAGE
        HotkeyUtil.addShortcut(this.getRootPane(), MediatorHelper.tabResults());
179 1 1. initShortcuts : removed call to com/jsql/view/swing/action/HotkeyUtil::addTextFieldShortcutSelectAll → NO_COVERAGE
        HotkeyUtil.addTextFieldShortcutSelectAll();
180
    }
181
182
    public void resetInterface() {  // Empty the interface
183 1 1. resetInterface : removed call to java/util/Map::clear → NO_COVERAGE
        this.mapUuidShell.clear();
184 1 1. resetInterface : removed call to com/jsql/view/swing/panel/address/PanelTrailingAddress::reset → NO_COVERAGE
        MediatorHelper.panelAddressBar().getPanelTrailingAddress().reset();
185 1 1. resetInterface : removed call to com/jsql/view/swing/panel/PanelConsoles::reset → NO_COVERAGE
        MediatorHelper.panelConsoles().reset();
186 1 1. resetInterface : removed call to com/jsql/view/swing/tree/TreeDatabase::reset → NO_COVERAGE
        MediatorHelper.treeDatabase().reset();
187
        
188 2 1. resetInterface : negated conditional → NO_COVERAGE
2. resetInterface : changed conditional boundary → NO_COVERAGE
        for (var i = 0 ; i < MediatorHelper.tabConsoles().getTabCount() ; i++) {
189
            var tabComponent = MediatorHelper.tabConsoles().getTabComponentAt(i);
190 1 1. resetInterface : negated conditional → NO_COVERAGE
            if (tabComponent != null) {
191 1 1. resetInterface : removed call to java/awt/Component::setFont → NO_COVERAGE
                tabComponent.setFont(tabComponent.getFont().deriveFont(Font.PLAIN));
192
            }
193
        }
194
        
195 1 1. resetInterface : removed call to java/util/stream/Stream::forEach → NO_COVERAGE
        Stream.of(MediatorHelper.managerFile(), MediatorHelper.managerExploit()).forEach(managerList -> {
196 1 1. lambda$resetInterface$2 : removed call to com/jsql/view/swing/manager/AbstractManagerList::setButtonEnable → NO_COVERAGE
            managerList.setButtonEnable(false);
197 1 1. lambda$resetInterface$2 : removed call to com/jsql/view/swing/manager/AbstractManagerList::changePrivilegeIcon → NO_COVERAGE
            managerList.changePrivilegeIcon(UiUtil.SQUARE.getIcon());
198
        });
199
    }
200
201
    private void displayVersion() {
202
        LOGGER.log(
203
            LogLevelUtil.CONSOLE_DEFAULT,
204
            "{} v{} on Java {}-{}-{}",
205 1 1. lambda$displayVersion$3 : replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$3 → NO_COVERAGE
            () -> StringUtil.APP_NAME,
206 1 1. lambda$displayVersion$4 : replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$4 → NO_COVERAGE
            () -> this.injectionModel.getPropertiesUtil().getVersionJsql(),
207 1 1. lambda$displayVersion$5 : replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$5 → NO_COVERAGE
            () -> SystemUtils.JAVA_VERSION,
208 1 1. lambda$displayVersion$6 : replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$6 → NO_COVERAGE
            () -> SystemUtils.OS_ARCH,
209 1 1. lambda$displayVersion$7 : replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$7 → NO_COVERAGE
            () -> SystemUtils.USER_LANGUAGE
210
        );
211
    }
212
213
    private void check4K() {
214
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
215
        int width = (int) screenSize.getWidth();
216 3 1. check4K : changed conditional boundary → NO_COVERAGE
2. check4K : negated conditional → NO_COVERAGE
3. check4K : negated conditional → NO_COVERAGE
        if (width >= 3840 && !this.injectionModel.getMediatorUtils().preferencesUtil().is4K()) {
217
            LOGGER.log(LogLevelUtil.CONSOLE_ERROR, "Screen compatible with resolution 4K, enable high-definition in Preferences");
218
        }
219
    }
220
221
222
    // Getters and setters
223
224
    public final Map<UUID, AbstractExploit> getMapUuidShell() {
225 1 1. getMapUuidShell : replaced return value with Collections.emptyMap for com/jsql/view/swing/JFrameView::getMapUuidShell → NO_COVERAGE
        return this.mapUuidShell;
226
    }
227
228
    public SubscriberView getSubscriberView() {
229 1 1. getSubscriberView : replaced return value with null for com/jsql/view/swing/JFrameView::getSubscriberView → NO_COVERAGE
        return this.subscriberView;
230
    }
231
232
    public SplitNS getSplitNS() {
233 1 1. getSplitNS : replaced return value with null for com/jsql/view/swing/JFrameView::getSplitNS → NO_COVERAGE
        return this.splitNS;
234
    }
235
236
    public TabManagers getTabManagers() {
237 1 1. getTabManagers : replaced return value with null for com/jsql/view/swing/JFrameView::getTabManagers → NO_COVERAGE
        return this.tabManagers;
238
    }
239
}

Mutations

63

1.1
Location : <init>
Killed by : none
removed call to com/jsql/view/swing/util/MediatorHelper::register → NO_COVERAGE

64

1.1
Location : <init>
Killed by : none
removed call to com/jsql/view/swing/util/UiUtil::prepareGUI → NO_COVERAGE

65

1.1
Location : <init>
Killed by : none
removed call to com/jsql/view/swing/JFrameView::initPaneComponents → NO_COVERAGE

66

1.1
Location : <init>
Killed by : none
removed call to com/jsql/view/swing/JFrameView::initWindow → NO_COVERAGE

67

1.1
Location : <init>
Killed by : none
removed call to com/jsql/view/swing/JFrameView::initShortcuts → NO_COVERAGE

68

1.1
Location : <init>
Killed by : none
removed call to com/jsql/view/swing/JFrameView::displayVersion → NO_COVERAGE

69

1.1
Location : <init>
Killed by : none
removed call to com/jsql/util/I18nUtil::checkCurrentLanguage → NO_COVERAGE

70

1.1
Location : <init>
Killed by : none
removed call to com/jsql/view/swing/JFrameView::check4K → NO_COVERAGE

72

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

73

1.1
Location : lambda$new$0
Killed by : none
removed call to com/jsql/view/swing/menubar/AppMenubar::applyTheme → NO_COVERAGE

74

1.1
Location : lambda$new$0
Killed by : none
negated conditional → NO_COVERAGE

77

1.1
Location : lambda$new$0
Killed by : none
negated conditional → NO_COVERAGE

78

1.1
Location : lambda$new$0
Killed by : none
removed call to com/jsql/util/GitUtil::checkUpdate → NO_COVERAGE

80

1.1
Location : lambda$new$0
Killed by : none
negated conditional → NO_COVERAGE

81

1.1
Location : lambda$new$0
Killed by : none
removed call to com/jsql/util/GitUtil::showNews → NO_COVERAGE

83

1.1
Location : lambda$new$0
Killed by : none
removed call to com/jsql/view/swing/JFrameView::setVisible → NO_COVERAGE

90

1.1
Location : initPaneComponents
Killed by : none
removed call to java/awt/Container::setLayout → NO_COVERAGE

96

1.1
Location : initPaneComponents
Killed by : none
removed call to com/jsql/view/swing/JFrameView::setJMenuBar → NO_COVERAGE

97

1.1
Location : initPaneComponents
Killed by : none
removed call to com/jsql/view/swing/util/MediatorHelper::register → NO_COVERAGE

100

1.1
Location : initPaneComponents
Killed by : none
removed call to com/jsql/view/swing/util/MediatorHelper::register → NO_COVERAGE

108

1.1
Location : initPaneComponents
Killed by : none
removed call to com/jsql/view/swing/menubar/MenuWindows::switchLocaleFromPreferences → NO_COVERAGE

112

1.1
Location : initWindow
Killed by : none
removed call to com/jsql/view/swing/JFrameView::setIconImages → NO_COVERAGE

114

1.1
Location : lambda$initWindow$1
Killed by : none
Replaced bitwise AND with OR → NO_COVERAGE

2.2
Location : initWindow
Killed by : none
removed call to com/jsql/view/swing/JFrameView::addWindowStateListener → NO_COVERAGE

3.3
Location : lambda$initWindow$1
Killed by : none
negated conditional → NO_COVERAGE

115

1.1
Location : initWindow
Killed by : none
removed call to com/jsql/view/swing/JFrameView::addWindowListener → NO_COVERAGE

120

1.1
Location : windowOpened
Killed by : none
negated conditional → NO_COVERAGE

121

1.1
Location : windowOpened
Killed by : none
removed call to com/jsql/view/swing/JFrameView::setExtendedState → NO_COVERAGE

125

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

126

1.1
Location : lambda$windowOpened$0
Killed by : none
removed call to com/jsql/view/swing/panel/split/SplitNS::setDividerLocation → NO_COVERAGE

127

1.1
Location : lambda$windowOpened$0
Killed by : none
removed call to javax/swing/JSplitPane::setDividerLocation → NO_COVERAGE

128

1.1
Location : lambda$windowOpened$0
Killed by : none
removed call to javax/swing/JSplitPane::setDividerLocation → NO_COVERAGE

129

1.1
Location : lambda$windowOpened$0
Killed by : none
negated conditional → NO_COVERAGE

138

1.1
Location : windowClosing
Killed by : none
removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE

142

1.1
Location : windowClosing
Killed by : none
Replaced double multiplication with division → NO_COVERAGE

2.2
Location : windowClosing
Killed by : none
Replaced double division with multiplication → NO_COVERAGE

143

1.1
Location : windowClosing
Killed by : none
Replaced double division with multiplication → NO_COVERAGE

147

1.1
Location : windowClosing
Killed by : none
Replaced double multiplication with division → NO_COVERAGE

2.2
Location : windowClosing
Killed by : none
Replaced double division with multiplication → NO_COVERAGE

148

1.1
Location : windowClosing
Killed by : none
Replaced double division with multiplication → NO_COVERAGE

151

1.1
Location : windowClosing
Killed by : none
removed call to java/util/prefs/Preferences::putDouble → NO_COVERAGE

152

1.1
Location : windowClosing
Killed by : none
removed call to java/util/prefs/Preferences::putDouble → NO_COVERAGE

154

1.1
Location : windowClosing
Killed by : none
removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE

155

1.1
Location : windowClosing
Killed by : none
removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE

156

1.1
Location : windowClosing
Killed by : none
removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE

157

1.1
Location : windowClosing
Killed by : none
removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE

158

1.1
Location : windowClosing
Killed by : none
changed conditional boundary → NO_COVERAGE

2.2
Location : windowClosing
Killed by : none
negated conditional → NO_COVERAGE

159

1.1
Location : windowClosing
Killed by : none
negated conditional → NO_COVERAGE

160

1.1
Location : windowClosing
Killed by : none
removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE

161

1.1
Location : windowClosing
Killed by : none
negated conditional → NO_COVERAGE

162

1.1
Location : windowClosing
Killed by : none
removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE

163

1.1
Location : windowClosing
Killed by : none
negated conditional → NO_COVERAGE

164

1.1
Location : windowClosing
Killed by : none
removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE

165

1.1
Location : windowClosing
Killed by : none
negated conditional → NO_COVERAGE

166

1.1
Location : windowClosing
Killed by : none
removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE

172

1.1
Location : initWindow
Killed by : none
removed call to com/jsql/view/swing/JFrameView::setSize → NO_COVERAGE

173

1.1
Location : initWindow
Killed by : none
removed call to com/jsql/view/swing/JFrameView::setLocationRelativeTo → NO_COVERAGE

174

1.1
Location : initWindow
Killed by : none
removed call to com/jsql/view/swing/JFrameView::setDefaultCloseOperation → NO_COVERAGE

178

1.1
Location : initShortcuts
Killed by : none
removed call to com/jsql/view/swing/action/HotkeyUtil::addShortcut → NO_COVERAGE

179

1.1
Location : initShortcuts
Killed by : none
removed call to com/jsql/view/swing/action/HotkeyUtil::addTextFieldShortcutSelectAll → NO_COVERAGE

183

1.1
Location : resetInterface
Killed by : none
removed call to java/util/Map::clear → NO_COVERAGE

184

1.1
Location : resetInterface
Killed by : none
removed call to com/jsql/view/swing/panel/address/PanelTrailingAddress::reset → NO_COVERAGE

185

1.1
Location : resetInterface
Killed by : none
removed call to com/jsql/view/swing/panel/PanelConsoles::reset → NO_COVERAGE

186

1.1
Location : resetInterface
Killed by : none
removed call to com/jsql/view/swing/tree/TreeDatabase::reset → NO_COVERAGE

188

1.1
Location : resetInterface
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : resetInterface
Killed by : none
changed conditional boundary → NO_COVERAGE

190

1.1
Location : resetInterface
Killed by : none
negated conditional → NO_COVERAGE

191

1.1
Location : resetInterface
Killed by : none
removed call to java/awt/Component::setFont → NO_COVERAGE

195

1.1
Location : resetInterface
Killed by : none
removed call to java/util/stream/Stream::forEach → NO_COVERAGE

196

1.1
Location : lambda$resetInterface$2
Killed by : none
removed call to com/jsql/view/swing/manager/AbstractManagerList::setButtonEnable → NO_COVERAGE

197

1.1
Location : lambda$resetInterface$2
Killed by : none
removed call to com/jsql/view/swing/manager/AbstractManagerList::changePrivilegeIcon → NO_COVERAGE

205

1.1
Location : lambda$displayVersion$3
Killed by : none
replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$3 → NO_COVERAGE

206

1.1
Location : lambda$displayVersion$4
Killed by : none
replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$4 → NO_COVERAGE

207

1.1
Location : lambda$displayVersion$5
Killed by : none
replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$5 → NO_COVERAGE

208

1.1
Location : lambda$displayVersion$6
Killed by : none
replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$6 → NO_COVERAGE

209

1.1
Location : lambda$displayVersion$7
Killed by : none
replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$7 → NO_COVERAGE

216

1.1
Location : check4K
Killed by : none
changed conditional boundary → NO_COVERAGE

2.2
Location : check4K
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : check4K
Killed by : none
negated conditional → NO_COVERAGE

225

1.1
Location : getMapUuidShell
Killed by : none
replaced return value with Collections.emptyMap for com/jsql/view/swing/JFrameView::getMapUuidShell → NO_COVERAGE

229

1.1
Location : getSubscriberView
Killed by : none
replaced return value with null for com/jsql/view/swing/JFrameView::getSubscriberView → NO_COVERAGE

233

1.1
Location : getSplitNS
Killed by : none
replaced return value with null for com/jsql/view/swing/JFrameView::getSplitNS → NO_COVERAGE

237

1.1
Location : getTabManagers
Killed by : none
replaced return value with null for com/jsql/view/swing/JFrameView::getTabManagers → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.22.1