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.interaction.SubscriberInteraction;
16
import com.jsql.view.swing.action.HotkeyUtil;
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 SubscriberInteraction subscriber = new SubscriberInteraction("com.jsql.view.swing.interaction");
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().getPreferencesUtil().getThemeFlatLafName());  // refresh missing components
74 1 1. lambda$new$0 : negated conditional → NO_COVERAGE
            if (injectionModel.getMediatorUtils().getProxyUtil().isNotLive(GitUtil.ShowOnConsole.YES)) {  // network access
75
                return;
76
            }
77 1 1. lambda$new$0 : negated conditional → NO_COVERAGE
            if (injectionModel.getMediatorUtils().getPreferencesUtil().isCheckingUpdate()) {
78 1 1. lambda$new$0 : removed call to com/jsql/util/GitUtil::checkUpdate → NO_COVERAGE
                injectionModel.getMediatorUtils().getGitUtil().checkUpdate(GitUtil.ShowOnConsole.NO);
79
            }
80 1 1. lambda$new$0 : negated conditional → NO_COVERAGE
            if (injectionModel.getMediatorUtils().getPreferencesUtil().isShowNews()) {  // disabled when UT only
81 1 1. lambda$new$0 : removed call to com/jsql/util/GitUtil::showNews → NO_COVERAGE
                injectionModel.getMediatorUtils().getGitUtil().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(
127
                        Math.max(0.0, Math.min(1.0, nsProportion))
128
                    );
129 1 1. lambda$windowOpened$0 : removed call to javax/swing/JSplitPane::setDividerLocation → NO_COVERAGE
                    JFrameView.this.splitNS.getSplitEW().setDividerLocation(
130
                        Math.max(0.0, Math.min(1.0, ewProportion))
131
                    );
132 1 1. lambda$windowOpened$0 : removed call to javax/swing/JSplitPane::setDividerLocation → NO_COVERAGE
                    MediatorHelper.panelConsoles().getNetworkSplitPane().setDividerLocation(
133 1 1. lambda$windowOpened$0 : negated conditional → NO_COVERAGE
                        ComponentOrientation.getOrientation(I18nUtil.getCurrentLocale()).isLeftToRight()
134
                        ? 0.33
135
                        : 0.66
136
                    );
137
                });
138
            }
139
140
            @Override
141
            public void windowClosing(WindowEvent e) {
142 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                preferences.putBoolean(PreferencesUtil.IS_MAXIMIZED, JFrameView.this.isMaximized);
143
144
                int ewDividerLocation = JFrameView.this.splitNS.getSplitEW().getDividerLocation();
145
                int ewHeight = JFrameView.this.splitNS.getSplitEW().getWidth();
146 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;
147 1 1. windowClosing : Replaced double division with multiplication → NO_COVERAGE
                double ewLocationProportionCapped = Math.max(0.0, Math.min(1.0,
148
                    ewProportion / 100.0
149
                ));
150
151
                int nsDividerLocation = JFrameView.this.splitNS.getDividerLocation();
152
                int nsHeight = JFrameView.this.splitNS.getHeight();
153 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;
154 1 1. windowClosing : Replaced double division with multiplication → NO_COVERAGE
                double nsLocationProportionCapped = Math.max(0.0, Math.min(1.0,
155
                    nsProportion / 100.0
156
                ));
157
158
                // Divider location changes when window is maximized, instead stores location percentage between 0.0 and 1.0
159 1 1. windowClosing : removed call to java/util/prefs/Preferences::putDouble → NO_COVERAGE
                preferences.putDouble(PreferencesUtil.NS_SPLIT, nsLocationProportionCapped);
160 1 1. windowClosing : removed call to java/util/prefs/Preferences::putDouble → NO_COVERAGE
                preferences.putDouble(PreferencesUtil.EW_SPLIT, ewLocationProportionCapped);
161
162 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                preferences.putBoolean(PreferencesUtil.BINARY_VISIBLE, false);
163 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                preferences.putBoolean(PreferencesUtil.CHUNK_VISIBLE, false);
164 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                preferences.putBoolean(PreferencesUtil.NETWORK_VISIBLE, false);
165 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                preferences.putBoolean(PreferencesUtil.JAVA_VISIBLE, false);
166 2 1. windowClosing : negated conditional → NO_COVERAGE
2. windowClosing : changed conditional boundary → NO_COVERAGE
                for (var i = 0 ; i < MediatorHelper.tabConsoles().getTabCount() ; i++) {
167 1 1. windowClosing : negated conditional → NO_COVERAGE
                    if ("CONSOLE_BINARY_LABEL".equals(MediatorHelper.tabConsoles().getTabComponentAt(i).getName())) {
168 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                        preferences.putBoolean(PreferencesUtil.BINARY_VISIBLE, true);
169 1 1. windowClosing : negated conditional → NO_COVERAGE
                    } else if ("CONSOLE_CHUNK_LABEL".equals(MediatorHelper.tabConsoles().getTabComponentAt(i).getName())) {
170 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                        preferences.putBoolean(PreferencesUtil.CHUNK_VISIBLE, true);
171 1 1. windowClosing : negated conditional → NO_COVERAGE
                    } else if ("CONSOLE_NETWORK_LABEL".equals(MediatorHelper.tabConsoles().getTabComponentAt(i).getName())) {
172 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                        preferences.putBoolean(PreferencesUtil.NETWORK_VISIBLE, true);
173 1 1. windowClosing : negated conditional → NO_COVERAGE
                    } else if ("CONSOLE_JAVA_LABEL".equals(MediatorHelper.tabConsoles().getTabComponentAt(i).getName())) {
174 1 1. windowClosing : removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE
                        preferences.putBoolean(PreferencesUtil.JAVA_VISIBLE, true);
175
                    }
176
                }
177
            }
178
        });
179
        
180 1 1. initWindow : removed call to com/jsql/view/swing/JFrameView::setSize → NO_COVERAGE
        this.setSize(1024, 768);
181 1 1. initWindow : removed call to com/jsql/view/swing/JFrameView::setLocationRelativeTo → NO_COVERAGE
        this.setLocationRelativeTo(null);  // center the window
182 1 1. initWindow : removed call to com/jsql/view/swing/JFrameView::setDefaultCloseOperation → NO_COVERAGE
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
183
    }
184
185
    private void initShortcuts() {
186 1 1. initShortcuts : removed call to com/jsql/view/swing/action/HotkeyUtil::addShortcut → NO_COVERAGE
        HotkeyUtil.addShortcut(this.getRootPane(), MediatorHelper.tabResults());
187 1 1. initShortcuts : removed call to com/jsql/view/swing/action/HotkeyUtil::addTextFieldShortcutSelectAll → NO_COVERAGE
        HotkeyUtil.addTextFieldShortcutSelectAll();
188
    }
189
190
    public void resetInterface() {  // Empty the interface
191 1 1. resetInterface : removed call to java/util/Map::clear → NO_COVERAGE
        this.mapUuidShell.clear();
192 1 1. resetInterface : removed call to com/jsql/view/swing/panel/address/PanelTrailingAddress::reset → NO_COVERAGE
        MediatorHelper.panelAddressBar().getPanelTrailingAddress().reset();
193 1 1. resetInterface : removed call to com/jsql/view/swing/panel/PanelConsoles::reset → NO_COVERAGE
        MediatorHelper.panelConsoles().reset();
194 1 1. resetInterface : removed call to com/jsql/view/swing/tree/TreeDatabase::reset → NO_COVERAGE
        MediatorHelper.treeDatabase().reset();
195
        
196 2 1. resetInterface : negated conditional → NO_COVERAGE
2. resetInterface : changed conditional boundary → NO_COVERAGE
        for (var i = 0 ; i < MediatorHelper.tabConsoles().getTabCount() ; i++) {
197
            var tabComponent = MediatorHelper.tabConsoles().getTabComponentAt(i);
198 1 1. resetInterface : negated conditional → NO_COVERAGE
            if (tabComponent != null) {
199 1 1. resetInterface : removed call to java/awt/Component::setFont → NO_COVERAGE
                tabComponent.setFont(tabComponent.getFont().deriveFont(Font.PLAIN));
200
            }
201
        }
202
        
203 1 1. resetInterface : removed call to java/util/stream/Stream::forEach → NO_COVERAGE
        Stream.of(MediatorHelper.managerFile(), MediatorHelper.managerExploit()).forEach(managerList -> {
204 1 1. lambda$resetInterface$2 : removed call to com/jsql/view/swing/manager/AbstractManagerList::setButtonEnable → NO_COVERAGE
            managerList.setButtonEnable(false);
205 1 1. lambda$resetInterface$2 : removed call to com/jsql/view/swing/manager/AbstractManagerList::changePrivilegeIcon → NO_COVERAGE
            managerList.changePrivilegeIcon(UiUtil.SQUARE.getIcon());
206
        });
207
    }
208
209
    private void displayVersion() {
210
        LOGGER.log(
211
            LogLevelUtil.CONSOLE_DEFAULT,
212
            "{} v{} on Java {}-{}-{}",
213 1 1. lambda$displayVersion$3 : replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$3 → NO_COVERAGE
            () -> StringUtil.APP_NAME,
214 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(),
215 1 1. lambda$displayVersion$5 : replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$5 → NO_COVERAGE
            () -> SystemUtils.JAVA_VERSION,
216 1 1. lambda$displayVersion$6 : replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$6 → NO_COVERAGE
            () -> SystemUtils.OS_ARCH,
217 1 1. lambda$displayVersion$7 : replaced return value with null for com/jsql/view/swing/JFrameView::lambda$displayVersion$7 → NO_COVERAGE
            () -> SystemUtils.USER_LANGUAGE
218
        );
219
    }
220
221
    private void check4K() {
222
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
223
        int width = (int) screenSize.getWidth();
224 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().getPreferencesUtil().is4K()) {
225
            LOGGER.log(LogLevelUtil.CONSOLE_ERROR, "Screen compatible with resolution 4K, enable high-definition in Preferences");
226
        }
227
    }
228
229
230
    // Getters and setters
231
232
    public final Map<UUID, AbstractExploit> getMapUuidShell() {
233 1 1. getMapUuidShell : replaced return value with Collections.emptyMap for com/jsql/view/swing/JFrameView::getMapUuidShell → NO_COVERAGE
        return this.mapUuidShell;
234
    }
235
236
    public SubscriberInteraction getSubscriber() {
237 1 1. getSubscriber : replaced return value with null for com/jsql/view/swing/JFrameView::getSubscriber → NO_COVERAGE
        return this.subscriber;
238
    }
239
240
    public SplitNS getSplitNS() {
241 1 1. getSplitNS : replaced return value with null for com/jsql/view/swing/JFrameView::getSplitNS → NO_COVERAGE
        return this.splitNS;
242
    }
243
244
    public TabManagers getTabManagers() {
245 1 1. getTabManagers : replaced return value with null for com/jsql/view/swing/JFrameView::getTabManagers → NO_COVERAGE
        return this.tabManagers;
246
    }
247
}

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

129

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

132

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

133

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

142

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

146

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

147

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

153

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

154

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

159

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

160

1.1
Location : windowClosing
Killed by : none
removed call to java/util/prefs/Preferences::putDouble → 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
removed call to java/util/prefs/Preferences::putBoolean → 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
removed call to java/util/prefs/Preferences::putBoolean → NO_COVERAGE

166

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

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

167

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

168

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

169

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

170

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

171

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

172

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

173

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

174

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

180

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

181

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

182

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

186

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

187

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

191

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

192

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

193

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

194

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

196

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

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

198

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

199

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

203

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

204

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

205

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

213

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

214

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

215

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

216

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

217

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

224

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

233

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

237

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

241

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

245

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.0