MenuWindows.java

1
package com.jsql.view.swing.menubar;
2
3
import com.formdev.flatlaf.intellijthemes.FlatDarkFlatIJTheme;
4
import com.formdev.flatlaf.intellijthemes.FlatHighContrastIJTheme;
5
import com.formdev.flatlaf.intellijthemes.FlatLightFlatIJTheme;
6
import com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTGitHubDarkIJTheme;
7
import com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTGitHubIJTheme;
8
import com.formdev.flatlaf.themes.FlatMacDarkLaf;
9
import com.formdev.flatlaf.themes.FlatMacLightLaf;
10
import com.jsql.model.InjectionModel;
11
import com.jsql.util.I18nUtil;
12
import com.jsql.util.LogLevelUtil;
13
import com.jsql.util.PreferencesUtil;
14
import com.jsql.view.swing.action.ActionNewWindow;
15
import com.jsql.view.swing.dialog.translate.Language;
16
import com.jsql.view.swing.panel.PanelPreferences;
17
import com.jsql.view.swing.sql.SqlEngine;
18
import com.jsql.view.swing.tab.TabHeader;
19
import com.jsql.view.swing.util.I18nViewUtil;
20
import com.jsql.view.swing.util.MediatorHelper;
21
import com.jsql.view.swing.util.RadioItemPreventClose;
22
import com.jsql.view.swing.util.UiUtil;
23
import org.apache.logging.log4j.LogManager;
24
import org.apache.logging.log4j.Logger;
25
26
import javax.swing.*;
27
import java.awt.*;
28
import java.awt.event.ActionEvent;
29
import java.awt.event.InputEvent;
30
import java.awt.event.KeyEvent;
31
import java.awt.event.MouseEvent;
32
import java.util.AbstractMap;
33
import java.util.Arrays;
34
import java.util.Locale;
35
import java.util.concurrent.atomic.AtomicBoolean;
36
import java.util.concurrent.atomic.AtomicInteger;
37
import java.util.prefs.Preferences;
38
39
public class MenuWindows extends JMenu {
40
41
    private static final Logger LOGGER = LogManager.getRootLogger();
42
43
    private static final String I18N_SQL_ENGINE = "MENUBAR_SQL_ENGINE";
44
    private static final String I18N_PREFERENCES = "MENUBAR_PREFERENCES";
45
    private final AppMenubar appMenubar;
46
47
    private final JMenu menuView;
48
49
    public MenuWindows(AppMenubar appMenubar) {
50
        super(I18nUtil.valueByKey("MENUBAR_WINDOWS"));
51
        this.appMenubar = appMenubar;
52
53 1 1. <init> : removed call to com/jsql/view/swing/menubar/MenuWindows::setName → NO_COVERAGE
        this.setName("menuWindows");
54 1 1. <init> : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
        I18nViewUtil.addComponentForKey("MENUBAR_WINDOWS", this);
55 1 1. <init> : removed call to com/jsql/view/swing/menubar/MenuWindows::setMnemonic → NO_COVERAGE
        this.setMnemonic('W');
56
57
        JMenuItem itemNewWindows = new JMenuItem(new ActionNewWindow());
58 1 1. <init> : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
        I18nViewUtil.addComponentForKey("NEW_WINDOW_MENU", itemNewWindows);
59
60
        this.add(itemNewWindows);
61
        var menuAppearance = new JMenu(I18nUtil.valueByKey("MENUBAR_APPEARANCE"));
62 1 1. <init> : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
        I18nViewUtil.addComponentForKey("MENUBAR_APPEARANCE", menuAppearance);
63 1 1. <init> : removed call to javax/swing/JMenu::setMnemonic → NO_COVERAGE
        menuAppearance.setMnemonic('A');
64
65
        JMenuItem itemNewWindows4k = new JMenuItem(
66
            new ActionNewWindow("New 4K Window", "-Dsun.java2d.uiScale=2.5")
67
        );
68
        menuAppearance.add(itemNewWindows4k);
69
70
        var groupRadio = new ButtonGroup();
71
        var menuThemes = new JMenu(I18nUtil.valueByKey("MENUBAR_THEMES"));
72 1 1. <init> : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
        I18nViewUtil.addComponentForKey("MENUBAR_THEMES", menuAppearance);
73 1 1. <init> : removed call to javax/swing/JMenu::setMnemonic → NO_COVERAGE
        menuThemes.setMnemonic('T');
74
75
        Arrays.asList(
76
            new AbstractMap.SimpleEntry<>(FlatLightFlatIJTheme.class.getName(), "IntelliJ"),
77
            new AbstractMap.SimpleEntry<>(FlatDarkFlatIJTheme.class.getName(), "IntelliJ Dark"),
78
            new AbstractMap.SimpleEntry<>(FlatMacLightLaf.class.getName(), "macOS"),
79
            new AbstractMap.SimpleEntry<>(FlatMacDarkLaf.class.getName(), "macOS Dark"),
80
            new AbstractMap.SimpleEntry<>(FlatMTGitHubIJTheme.class.getName(), "GitHub"),
81
            new AbstractMap.SimpleEntry<>(FlatMTGitHubDarkIJTheme.class.getName(), "GitHub Dark"),
82
            new AbstractMap.SimpleEntry<>(FlatHighContrastIJTheme.class.getName(), "High contrast")
83 1 1. <init> : removed call to java/util/List::forEach → NO_COVERAGE
        ).forEach(entry -> {
84
            JMenuItem item = new RadioItemPreventClose(
85
                new AbstractAction() {
86
                    @Override
87
                    public void actionPerformed(ActionEvent e) {
88 1 1. actionPerformed : removed call to com/jsql/view/swing/menubar/AppMenubar::applyTheme → NO_COVERAGE
                        AppMenubar.applyTheme(entry.getKey());
89
                    }
90
                }
91
            );
92 1 1. lambda$new$0 : removed call to javax/swing/JMenuItem::setText → NO_COVERAGE
            item.setText(entry.getValue());
93 1 1. lambda$new$0 : removed call to javax/swing/JMenuItem::setSelected → NO_COVERAGE
            item.setSelected(entry.getKey().equals(MediatorHelper.model().getMediatorUtils().getPreferencesUtil().getThemeFlatLafName()));
94 1 1. lambda$new$0 : removed call to javax/swing/ButtonGroup::add → NO_COVERAGE
            groupRadio.add(item);
95
            menuThemes.add(item);
96
        });
97
98
        this.add(itemNewWindows);
99
        this.add(menuAppearance);
100
        this.add(menuThemes);
101
        this.add(new JSeparator());
102
        this.add(this.initMenuTranslation());
103
        this.add(new JSeparator());
104
105
        this.menuView = new JMenu(I18nUtil.valueByKey("MENUBAR_VIEW"));
106 1 1. <init> : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
        I18nViewUtil.addComponentForKey("MENUBAR_VIEW", this.menuView);
107 1 1. <init> : removed call to javax/swing/JMenu::setMnemonic → NO_COVERAGE
        this.menuView.setMnemonic('V');
108
109
        AtomicInteger accelerator = new AtomicInteger(0x31);
110
        AtomicInteger tabPosition = new AtomicInteger();
111 1 1. <init> : removed call to java/util/List::forEach → NO_COVERAGE
        MediatorHelper.frame().getTabManagers().getIconsTabs().forEach(entry -> {
112
            var menuItem = new JMenuItem(I18nUtil.valueByKey(entry.getKeyLabel()), entry.getIcon());
113 1 1. lambda$new$2 : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
            I18nViewUtil.addComponentForKey(entry.getKeyLabel(), menuItem);
114 1 1. lambda$new$2 : removed call to javax/swing/JMenuItem::setName → NO_COVERAGE
            menuItem.setName(entry.getKeyLabel());  // required by card manager switch
115
            this.menuView.add(menuItem);
116
117 1 1. lambda$new$2 : removed call to javax/swing/JMenuItem::setAccelerator → NO_COVERAGE
            menuItem.setAccelerator(KeyStroke.getKeyStroke(
118
                KeyEvent.getExtendedKeyCodeForChar(accelerator.getAndIncrement()),
119
                InputEvent.CTRL_DOWN_MASK
120
            ));
121
122
            final var position = tabPosition.get();  // required by closure
123 1 1. lambda$new$2 : removed call to javax/swing/JMenuItem::addActionListener → NO_COVERAGE
            menuItem.addActionListener(actionEvent -> {  // setAction() could set action+text+icon but i18n not easy
124
                CardLayout cardLayout = (CardLayout) MediatorHelper.tabManagersCards().getLayout();
125 1 1. lambda$new$1 : removed call to java/awt/CardLayout::show → NO_COVERAGE
                cardLayout.show(MediatorHelper.tabManagersCards(), menuItem.getName());
126 1 1. lambda$new$1 : removed call to com/jsql/view/swing/tab/TabManagers::setSelectedIndex → NO_COVERAGE
                MediatorHelper.frame().getTabManagers().setSelectedIndex(position);
127
            });
128
            tabPosition.getAndIncrement();
129
        });
130
131
        this.add(this.menuView);
132
133
        Preferences preferences = Preferences.userRoot().node(InjectionModel.class.getName());
134
135
        var menuPanel = new JMenu(I18nUtil.valueByKey("MENUBAR_PANEL"));
136 1 1. <init> : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
        I18nViewUtil.addComponentForKey("MENUBAR_PANEL", menuPanel);
137 1 1. <init> : removed call to javax/swing/JMenu::setMnemonic → NO_COVERAGE
        menuPanel.setMnemonic('C');
138
139
        Arrays.asList(
140
            new ModelCheckboxMenu(
141
                "CONSOLE_CHUNK_LABEL",
142
                PreferencesUtil.CHUNK_VISIBLE,
143 1 1. lambda$new$3 : removed call to com/jsql/view/swing/panel/PanelConsoles::insertChunkTab → NO_COVERAGE
                () -> MediatorHelper.panelConsoles().insertChunkTab(),
144
                UiUtil.CHUNK.getIcon()
145
            ),
146
            new ModelCheckboxMenu(
147
                "CONSOLE_BINARY_LABEL",
148
                PreferencesUtil.BINARY_VISIBLE,
149 1 1. lambda$new$4 : removed call to com/jsql/view/swing/panel/PanelConsoles::insertBooleanTab → NO_COVERAGE
                () -> MediatorHelper.panelConsoles().insertBooleanTab(),
150
                UiUtil.BINARY.getIcon()
151
            ),
152
            new ModelCheckboxMenu(
153
                "CONSOLE_NETWORK_LABEL",
154
                PreferencesUtil.NETWORK_VISIBLE,
155 1 1. lambda$new$5 : removed call to com/jsql/view/swing/panel/PanelConsoles::insertNetworkTab → NO_COVERAGE
                () -> MediatorHelper.panelConsoles().insertNetworkTab(),
156
                UiUtil.NETWORK.getIcon()
157
            ),
158
            new ModelCheckboxMenu(
159
                "CONSOLE_JAVA_LABEL",
160
                PreferencesUtil.JAVA_VISIBLE,
161 1 1. lambda$new$6 : removed call to com/jsql/view/swing/panel/PanelConsoles::insertJavaTab → NO_COVERAGE
                () -> MediatorHelper.panelConsoles().insertJavaTab(),
162
                UiUtil.CUP.getIcon()
163
            )
164 1 1. <init> : removed call to java/util/List::forEach → NO_COVERAGE
        ).forEach(model -> {
165
            var menuItem = new JCheckBoxMenuItem(
166
                I18nUtil.valueByKey(model.i18n),
167
                model.icon,
168
                preferences.getBoolean(model.keyPref, true)
169
            ) {
170
                @Override
171
                protected void processMouseEvent(MouseEvent e) {
172 1 1. processMouseEvent : negated conditional → NO_COVERAGE
                    if (!RadioItemPreventClose.preventClose(e, this)) {
173 1 1. processMouseEvent : removed call to javax/swing/JCheckBoxMenuItem::processMouseEvent → NO_COVERAGE
                        super.processMouseEvent(e);
174
                    }
175
                }
176
            };
177 1 1. lambda$new$8 : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
            I18nViewUtil.addComponentForKey(model.i18n, menuItem);
178
            menuPanel.add(menuItem);
179
180 1 1. lambda$new$8 : removed call to com/jsql/view/swing/menubar/MenuWindows$2::addActionListener → NO_COVERAGE
            menuItem.addActionListener(actionEvent -> {
181 1 1. lambda$new$7 : negated conditional → NO_COVERAGE
                if (menuItem.isSelected()) {
182 1 1. lambda$new$7 : removed call to java/lang/Runnable::run → NO_COVERAGE
                    model.runnableInsertTab.run();
183
                } else {
184
                    try {  // fix #95874: IndexOutOfBoundsException on remove()
185 1 1. lambda$new$7 : removed call to com/jsql/view/swing/tab/TabbedPaneWheeled::remove → NO_COVERAGE
                        MediatorHelper.tabConsoles().remove(MediatorHelper.tabConsoles().indexOfTab(model.icon));
186
                    } catch (IndexOutOfBoundsException e) {  // should not occur
187
                        LOGGER.log(LogLevelUtil.CONSOLE_JAVA, e);
188
                    }
189
                }
190
            });
191
        });
192
193
        this.add(menuPanel);
194
        this.add(new JSeparator());
195
        this.add(this.getMenuItemSqlEngine());
196
        this.add(this.getMenuItemPreferences());
197
    }
198
199
    private JMenuItem getMenuItemSqlEngine() {
200
        var itemSqlEngine = new JMenuItem(I18nUtil.valueByKey(MenuWindows.I18N_SQL_ENGINE));
201 1 1. getMenuItemSqlEngine : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
        I18nViewUtil.addComponentForKey(MenuWindows.I18N_SQL_ENGINE, itemSqlEngine);
202 1 1. getMenuItemSqlEngine : removed call to javax/swing/JMenuItem::setName → NO_COVERAGE
        itemSqlEngine.setName("itemSqlEngine");
203 1 1. getMenuItemSqlEngine : removed call to javax/swing/JMenuItem::setMnemonic → NO_COVERAGE
        itemSqlEngine.setMnemonic('S');
204
205
        // Render the SQL Engine dialog behind scene
206
        var titleTabSqlEngine = "SQL Engine";
207
208 1 1. getMenuItemSqlEngine : removed call to javax/swing/JMenuItem::addActionListener → NO_COVERAGE
        itemSqlEngine.addActionListener(actionEvent -> {
209 2 1. lambda$getMenuItemSqlEngine$9 : negated conditional → NO_COVERAGE
2. lambda$getMenuItemSqlEngine$9 : changed conditional boundary → NO_COVERAGE
            for (var i = 0 ; i < MediatorHelper.tabResults().getTabCount() ; i++) {
210 1 1. lambda$getMenuItemSqlEngine$9 : negated conditional → NO_COVERAGE
                if (titleTabSqlEngine.equals(MediatorHelper.tabResults().getTitleAt(i))) {
211 1 1. lambda$getMenuItemSqlEngine$9 : removed call to com/jsql/view/swing/tab/TabResults::setSelectedIndex → NO_COVERAGE
                    MediatorHelper.tabResults().setSelectedIndex(i);
212
                    return;
213
                }
214
            }
215
216 1 1. lambda$getMenuItemSqlEngine$9 : removed call to com/jsql/view/swing/panel/split/SplitNS::initSplitOrientation → NO_COVERAGE
            MediatorHelper.frame().getSplitNS().initSplitOrientation();
217
218
            var panelSqlEngine = new SqlEngine();
219 1 1. lambda$getMenuItemSqlEngine$9 : removed call to com/jsql/view/swing/tab/TabResults::addTab → NO_COVERAGE
            MediatorHelper.tabResults().addTab(titleTabSqlEngine, panelSqlEngine);
220 1 1. lambda$getMenuItemSqlEngine$9 : removed call to com/jsql/view/swing/tab/TabResults::setSelectedComponent → NO_COVERAGE
            MediatorHelper.tabResults().setSelectedComponent(panelSqlEngine);  // Focus on the new tab
221
222
            // Create a custom tab header
223
            var header = new TabHeader(I18nViewUtil.valueByKey(MenuWindows.I18N_SQL_ENGINE), UiUtil.COG.getIcon());
224 1 1. lambda$getMenuItemSqlEngine$9 : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
            I18nViewUtil.addComponentForKey(MenuWindows.I18N_SQL_ENGINE, header.getTabLabel());
225
226
            // Apply the custom header to the tab
227 1 1. lambda$getMenuItemSqlEngine$9 : removed call to com/jsql/view/swing/tab/TabResults::setTabComponentAt → NO_COVERAGE
            MediatorHelper.tabResults().setTabComponentAt(MediatorHelper.tabResults().indexOfComponent(panelSqlEngine), header);
228 1 1. lambda$getMenuItemSqlEngine$9 : removed call to com/jsql/view/swing/tab/TabResults::updateUI → NO_COVERAGE
            MediatorHelper.tabResults().updateUI();  // required: light, open/close prefs, dark => light artifacts
229
        });
230
231 1 1. getMenuItemSqlEngine : replaced return value with null for com/jsql/view/swing/menubar/MenuWindows::getMenuItemSqlEngine → NO_COVERAGE
        return itemSqlEngine;
232
    }
233
234
    private JMenuItem getMenuItemPreferences() {
235
        JMenuItem itemPreferences = new JMenuItem(I18nUtil.valueByKey(MenuWindows.I18N_PREFERENCES), 'P');
236 1 1. getMenuItemPreferences : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
        I18nViewUtil.addComponentForKey(MenuWindows.I18N_PREFERENCES, itemPreferences);
237 1 1. getMenuItemPreferences : removed call to javax/swing/JMenuItem::setName → NO_COVERAGE
        itemPreferences.setName("itemPreferences");
238
239
        // Render the Preferences dialog behind scene
240
        var titleTabPreferences = "Preferences";
241
242 1 1. getMenuItemPreferences : removed call to javax/swing/JMenuItem::addActionListener → NO_COVERAGE
        itemPreferences.addActionListener(actionEvent -> {
243 2 1. lambda$getMenuItemPreferences$10 : changed conditional boundary → NO_COVERAGE
2. lambda$getMenuItemPreferences$10 : negated conditional → NO_COVERAGE
            for (var i = 0 ; i < MediatorHelper.tabResults().getTabCount() ; i++) {
244 1 1. lambda$getMenuItemPreferences$10 : negated conditional → NO_COVERAGE
                if (titleTabPreferences.equals(MediatorHelper.tabResults().getTitleAt(i))) {
245 1 1. lambda$getMenuItemPreferences$10 : removed call to com/jsql/view/swing/tab/TabResults::setSelectedIndex → NO_COVERAGE
                    MediatorHelper.tabResults().setSelectedIndex(i);
246
                    return;
247
                }
248
            }
249
250 1 1. lambda$getMenuItemPreferences$10 : removed call to com/jsql/view/swing/panel/split/SplitNS::initSplitOrientation → NO_COVERAGE
            MediatorHelper.frame().getSplitNS().initSplitOrientation();
251
252
            var panelPreferences = new PanelPreferences();
253 1 1. lambda$getMenuItemPreferences$10 : removed call to com/jsql/view/swing/tab/TabResults::addTab → NO_COVERAGE
            MediatorHelper.tabResults().addTab(titleTabPreferences, panelPreferences);
254 1 1. lambda$getMenuItemPreferences$10 : removed call to com/jsql/view/swing/tab/TabResults::setSelectedComponent → NO_COVERAGE
            MediatorHelper.tabResults().setSelectedComponent(panelPreferences);  // Focus on the new tab
255
256
            // Create a custom tab header
257
            var header = new TabHeader(I18nViewUtil.valueByKey(MenuWindows.I18N_PREFERENCES), UiUtil.COG.getIcon());
258 1 1. lambda$getMenuItemPreferences$10 : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
            I18nViewUtil.addComponentForKey(MenuWindows.I18N_PREFERENCES, header.getTabLabel());
259
260
            // Apply the custom header to the tab
261 1 1. lambda$getMenuItemPreferences$10 : removed call to com/jsql/view/swing/tab/TabResults::setTabComponentAt → NO_COVERAGE
            MediatorHelper.tabResults().setTabComponentAt(MediatorHelper.tabResults().indexOfComponent(panelPreferences), header);
262
263 1 1. lambda$getMenuItemPreferences$10 : removed call to com/jsql/view/swing/tab/TabResults::updateUI → NO_COVERAGE
            MediatorHelper.tabResults().updateUI();  // required: light, open/close prefs, dark => light artifacts
264
        });
265
266 1 1. getMenuItemPreferences : replaced return value with null for com/jsql/view/swing/menubar/MenuWindows::getMenuItemPreferences → NO_COVERAGE
        return itemPreferences;
267
    }
268
269
    private JMenu initMenuTranslation() {
270
        var menuTranslation = new JMenu(I18nUtil.valueByKey("MENUBAR_LANGUAGE"));
271 1 1. initMenuTranslation : removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE
        I18nViewUtil.addComponentForKey("MENUBAR_LANGUAGE", menuTranslation);
272 1 1. initMenuTranslation : removed call to javax/swing/JMenu::setName → NO_COVERAGE
        menuTranslation.setName("menuTranslation");
273 1 1. initMenuTranslation : removed call to javax/swing/JMenu::setMnemonic → NO_COVERAGE
        menuTranslation.setMnemonic('L');
274
275
        var groupRadioLanguage = new ButtonGroup();
276
        var atomicIsAnySelected = new AtomicBoolean(false);
277 1 1. initMenuTranslation : removed call to java/util/List::forEach → NO_COVERAGE
        AppMenubar.MODELS_ITEM.forEach(model -> {
278 3 1. lambda$initMenuTranslation$12 : removed call to java/util/concurrent/atomic/AtomicBoolean::set → NO_COVERAGE
2. lambda$initMenuTranslation$12 : negated conditional → NO_COVERAGE
3. lambda$initMenuTranslation$12 : negated conditional → NO_COVERAGE
            atomicIsAnySelected.set(atomicIsAnySelected.get() || model.getLanguage().isCurrentLanguage());
279 1 1. lambda$initMenuTranslation$12 : removed call to com/jsql/view/swing/menubar/ModelItemTranslate::setMenuItem → NO_COVERAGE
            model.setMenuItem(new RadioItemPreventClose(
280
                model.getLanguage().getMenuItemLabel(),
281
                model.getLanguage().getFlag(),
282
                model.getLanguage().isCurrentLanguage()
283
            ));
284 1 1. lambda$initMenuTranslation$12 : removed call to javax/swing/JMenuItem::addActionListener → NO_COVERAGE
            model.getMenuItem().addActionListener(actionEvent -> {
285 1 1. lambda$initMenuTranslation$11 : removed call to com/jsql/view/swing/menubar/AppMenubar::switchLocale → NO_COVERAGE
                this.appMenubar.switchLocale(
286 1 1. lambda$initMenuTranslation$11 : negated conditional → NO_COVERAGE
                    model.getLanguage() == Language.EN
287
                    ? Locale.ROOT  // required as no bundle 'en'
288
                    : Locale.forLanguageTag(model.getLanguage().getLanguageTag())
289
                );
290 1 1. lambda$initMenuTranslation$11 : removed call to com/jsql/util/PreferencesUtil::persist → NO_COVERAGE
                MediatorHelper.model().getMediatorUtils().getPreferencesUtil().withLanguageTag(model.getLanguage().getLanguageTag()).persist();
291
            });
292
            menuTranslation.add(model.getMenuItem());
293 1 1. lambda$initMenuTranslation$12 : removed call to javax/swing/ButtonGroup::add → NO_COVERAGE
            groupRadioLanguage.add(model.getMenuItem());
294
        });
295
296 2 1. lambda$initMenuTranslation$13 : replaced boolean return with true for com/jsql/view/swing/menubar/MenuWindows::lambda$initMenuTranslation$13 → NO_COVERAGE
2. lambda$initMenuTranslation$13 : negated conditional → NO_COVERAGE
        AppMenubar.MODELS_ITEM.stream().filter(model -> model.getLanguage() == Language.EN)
297 1 1. initMenuTranslation : removed call to java/util/stream/Stream::forEach → NO_COVERAGE
        .forEach(modelItem -> {
298 2 1. lambda$initMenuTranslation$14 : negated conditional → NO_COVERAGE
2. lambda$initMenuTranslation$14 : removed call to javax/swing/JMenuItem::setSelected → NO_COVERAGE
            modelItem.getMenuItem().setSelected(!atomicIsAnySelected.get());
299 1 1. lambda$initMenuTranslation$14 : removed call to javax/swing/JMenuItem::setName → NO_COVERAGE
            modelItem.getMenuItem().setName("itemEnglish");
300
        });
301 2 1. lambda$initMenuTranslation$15 : negated conditional → NO_COVERAGE
2. lambda$initMenuTranslation$15 : replaced boolean return with true for com/jsql/view/swing/menubar/MenuWindows::lambda$initMenuTranslation$15 → NO_COVERAGE
        AppMenubar.MODELS_ITEM.stream().filter(model -> model.getLanguage() == Language.RU)
302 2 1. initMenuTranslation : removed call to java/util/stream/Stream::forEach → NO_COVERAGE
2. lambda$initMenuTranslation$16 : removed call to javax/swing/JMenuItem::setName → NO_COVERAGE
        .forEach(modelItem -> modelItem.getMenuItem().setName("itemRussian"));
303 2 1. lambda$initMenuTranslation$17 : replaced boolean return with true for com/jsql/view/swing/menubar/MenuWindows::lambda$initMenuTranslation$17 → NO_COVERAGE
2. lambda$initMenuTranslation$17 : negated conditional → NO_COVERAGE
        AppMenubar.MODELS_ITEM.stream().filter(model -> model.getLanguage() == Language.AR)
304 2 1. initMenuTranslation : removed call to java/util/stream/Stream::forEach → NO_COVERAGE
2. lambda$initMenuTranslation$18 : removed call to javax/swing/JMenuItem::setComponentOrientation → NO_COVERAGE
        .forEach(modelItem -> modelItem.getMenuItem().setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT));
305
306 1 1. initMenuTranslation : replaced return value with null for com/jsql/view/swing/menubar/MenuWindows::initMenuTranslation → NO_COVERAGE
        return menuTranslation;
307
    }
308
309
    public void switchLocaleFromPreferences() {
310
        AppMenubar.MODELS_ITEM.stream()
311 2 1. lambda$switchLocaleFromPreferences$19 : replaced boolean return with false for com/jsql/view/swing/menubar/MenuWindows::lambda$switchLocaleFromPreferences$19 → NO_COVERAGE
2. lambda$switchLocaleFromPreferences$19 : replaced boolean return with true for com/jsql/view/swing/menubar/MenuWindows::lambda$switchLocaleFromPreferences$19 → NO_COVERAGE
        .filter(model -> model.getLanguage().getLanguageTag().equals(
312
            MediatorHelper.model().getMediatorUtils().getPreferencesUtil().getLanguageTag()
313
        ))
314 2 1. lambda$switchLocaleFromPreferences$20 : removed call to javax/swing/JMenuItem::doClick → NO_COVERAGE
2. switchLocaleFromPreferences : removed call to java/util/stream/Stream::forEach → NO_COVERAGE
        .forEach(modelItem -> modelItem.getMenuItem().doClick());
315
    }
316
317
318
    // Getter and setter
319
320
    public JMenu getMenuView() {
321 1 1. getMenuView : replaced return value with null for com/jsql/view/swing/menubar/MenuWindows::getMenuView → NO_COVERAGE
        return this.menuView;
322
    }
323
}

Mutations

53

1.1
Location : <init>
Killed by : none
removed call to com/jsql/view/swing/menubar/MenuWindows::setName → NO_COVERAGE

54

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

55

1.1
Location : <init>
Killed by : none
removed call to com/jsql/view/swing/menubar/MenuWindows::setMnemonic → NO_COVERAGE

58

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

62

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

63

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

72

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

73

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

83

1.1
Location : <init>
Killed by : none
removed call to java/util/List::forEach → NO_COVERAGE

88

1.1
Location : actionPerformed
Killed by : none
removed call to com/jsql/view/swing/menubar/AppMenubar::applyTheme → NO_COVERAGE

92

1.1
Location : lambda$new$0
Killed by : none
removed call to javax/swing/JMenuItem::setText → NO_COVERAGE

93

1.1
Location : lambda$new$0
Killed by : none
removed call to javax/swing/JMenuItem::setSelected → NO_COVERAGE

94

1.1
Location : lambda$new$0
Killed by : none
removed call to javax/swing/ButtonGroup::add → NO_COVERAGE

106

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

107

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

111

1.1
Location : <init>
Killed by : none
removed call to java/util/List::forEach → NO_COVERAGE

113

1.1
Location : lambda$new$2
Killed by : none
removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE

114

1.1
Location : lambda$new$2
Killed by : none
removed call to javax/swing/JMenuItem::setName → NO_COVERAGE

117

1.1
Location : lambda$new$2
Killed by : none
removed call to javax/swing/JMenuItem::setAccelerator → NO_COVERAGE

123

1.1
Location : lambda$new$2
Killed by : none
removed call to javax/swing/JMenuItem::addActionListener → NO_COVERAGE

125

1.1
Location : lambda$new$1
Killed by : none
removed call to java/awt/CardLayout::show → NO_COVERAGE

126

1.1
Location : lambda$new$1
Killed by : none
removed call to com/jsql/view/swing/tab/TabManagers::setSelectedIndex → NO_COVERAGE

136

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

137

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

143

1.1
Location : lambda$new$3
Killed by : none
removed call to com/jsql/view/swing/panel/PanelConsoles::insertChunkTab → NO_COVERAGE

149

1.1
Location : lambda$new$4
Killed by : none
removed call to com/jsql/view/swing/panel/PanelConsoles::insertBooleanTab → NO_COVERAGE

155

1.1
Location : lambda$new$5
Killed by : none
removed call to com/jsql/view/swing/panel/PanelConsoles::insertNetworkTab → NO_COVERAGE

161

1.1
Location : lambda$new$6
Killed by : none
removed call to com/jsql/view/swing/panel/PanelConsoles::insertJavaTab → NO_COVERAGE

164

1.1
Location : <init>
Killed by : none
removed call to java/util/List::forEach → NO_COVERAGE

172

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

173

1.1
Location : processMouseEvent
Killed by : none
removed call to javax/swing/JCheckBoxMenuItem::processMouseEvent → NO_COVERAGE

177

1.1
Location : lambda$new$8
Killed by : none
removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE

180

1.1
Location : lambda$new$8
Killed by : none
removed call to com/jsql/view/swing/menubar/MenuWindows$2::addActionListener → NO_COVERAGE

181

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

182

1.1
Location : lambda$new$7
Killed by : none
removed call to java/lang/Runnable::run → NO_COVERAGE

185

1.1
Location : lambda$new$7
Killed by : none
removed call to com/jsql/view/swing/tab/TabbedPaneWheeled::remove → NO_COVERAGE

201

1.1
Location : getMenuItemSqlEngine
Killed by : none
removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE

202

1.1
Location : getMenuItemSqlEngine
Killed by : none
removed call to javax/swing/JMenuItem::setName → NO_COVERAGE

203

1.1
Location : getMenuItemSqlEngine
Killed by : none
removed call to javax/swing/JMenuItem::setMnemonic → NO_COVERAGE

208

1.1
Location : getMenuItemSqlEngine
Killed by : none
removed call to javax/swing/JMenuItem::addActionListener → NO_COVERAGE

209

1.1
Location : lambda$getMenuItemSqlEngine$9
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : lambda$getMenuItemSqlEngine$9
Killed by : none
changed conditional boundary → NO_COVERAGE

210

1.1
Location : lambda$getMenuItemSqlEngine$9
Killed by : none
negated conditional → NO_COVERAGE

211

1.1
Location : lambda$getMenuItemSqlEngine$9
Killed by : none
removed call to com/jsql/view/swing/tab/TabResults::setSelectedIndex → NO_COVERAGE

216

1.1
Location : lambda$getMenuItemSqlEngine$9
Killed by : none
removed call to com/jsql/view/swing/panel/split/SplitNS::initSplitOrientation → NO_COVERAGE

219

1.1
Location : lambda$getMenuItemSqlEngine$9
Killed by : none
removed call to com/jsql/view/swing/tab/TabResults::addTab → NO_COVERAGE

220

1.1
Location : lambda$getMenuItemSqlEngine$9
Killed by : none
removed call to com/jsql/view/swing/tab/TabResults::setSelectedComponent → NO_COVERAGE

224

1.1
Location : lambda$getMenuItemSqlEngine$9
Killed by : none
removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE

227

1.1
Location : lambda$getMenuItemSqlEngine$9
Killed by : none
removed call to com/jsql/view/swing/tab/TabResults::setTabComponentAt → NO_COVERAGE

228

1.1
Location : lambda$getMenuItemSqlEngine$9
Killed by : none
removed call to com/jsql/view/swing/tab/TabResults::updateUI → NO_COVERAGE

231

1.1
Location : getMenuItemSqlEngine
Killed by : none
replaced return value with null for com/jsql/view/swing/menubar/MenuWindows::getMenuItemSqlEngine → NO_COVERAGE

236

1.1
Location : getMenuItemPreferences
Killed by : none
removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE

237

1.1
Location : getMenuItemPreferences
Killed by : none
removed call to javax/swing/JMenuItem::setName → NO_COVERAGE

242

1.1
Location : getMenuItemPreferences
Killed by : none
removed call to javax/swing/JMenuItem::addActionListener → NO_COVERAGE

243

1.1
Location : lambda$getMenuItemPreferences$10
Killed by : none
changed conditional boundary → NO_COVERAGE

2.2
Location : lambda$getMenuItemPreferences$10
Killed by : none
negated conditional → NO_COVERAGE

244

1.1
Location : lambda$getMenuItemPreferences$10
Killed by : none
negated conditional → NO_COVERAGE

245

1.1
Location : lambda$getMenuItemPreferences$10
Killed by : none
removed call to com/jsql/view/swing/tab/TabResults::setSelectedIndex → NO_COVERAGE

250

1.1
Location : lambda$getMenuItemPreferences$10
Killed by : none
removed call to com/jsql/view/swing/panel/split/SplitNS::initSplitOrientation → NO_COVERAGE

253

1.1
Location : lambda$getMenuItemPreferences$10
Killed by : none
removed call to com/jsql/view/swing/tab/TabResults::addTab → NO_COVERAGE

254

1.1
Location : lambda$getMenuItemPreferences$10
Killed by : none
removed call to com/jsql/view/swing/tab/TabResults::setSelectedComponent → NO_COVERAGE

258

1.1
Location : lambda$getMenuItemPreferences$10
Killed by : none
removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE

261

1.1
Location : lambda$getMenuItemPreferences$10
Killed by : none
removed call to com/jsql/view/swing/tab/TabResults::setTabComponentAt → NO_COVERAGE

263

1.1
Location : lambda$getMenuItemPreferences$10
Killed by : none
removed call to com/jsql/view/swing/tab/TabResults::updateUI → NO_COVERAGE

266

1.1
Location : getMenuItemPreferences
Killed by : none
replaced return value with null for com/jsql/view/swing/menubar/MenuWindows::getMenuItemPreferences → NO_COVERAGE

271

1.1
Location : initMenuTranslation
Killed by : none
removed call to com/jsql/view/swing/util/I18nViewUtil::addComponentForKey → NO_COVERAGE

272

1.1
Location : initMenuTranslation
Killed by : none
removed call to javax/swing/JMenu::setName → NO_COVERAGE

273

1.1
Location : initMenuTranslation
Killed by : none
removed call to javax/swing/JMenu::setMnemonic → NO_COVERAGE

277

1.1
Location : initMenuTranslation
Killed by : none
removed call to java/util/List::forEach → NO_COVERAGE

278

1.1
Location : lambda$initMenuTranslation$12
Killed by : none
removed call to java/util/concurrent/atomic/AtomicBoolean::set → NO_COVERAGE

2.2
Location : lambda$initMenuTranslation$12
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : lambda$initMenuTranslation$12
Killed by : none
negated conditional → NO_COVERAGE

279

1.1
Location : lambda$initMenuTranslation$12
Killed by : none
removed call to com/jsql/view/swing/menubar/ModelItemTranslate::setMenuItem → NO_COVERAGE

284

1.1
Location : lambda$initMenuTranslation$12
Killed by : none
removed call to javax/swing/JMenuItem::addActionListener → NO_COVERAGE

285

1.1
Location : lambda$initMenuTranslation$11
Killed by : none
removed call to com/jsql/view/swing/menubar/AppMenubar::switchLocale → NO_COVERAGE

286

1.1
Location : lambda$initMenuTranslation$11
Killed by : none
negated conditional → NO_COVERAGE

290

1.1
Location : lambda$initMenuTranslation$11
Killed by : none
removed call to com/jsql/util/PreferencesUtil::persist → NO_COVERAGE

293

1.1
Location : lambda$initMenuTranslation$12
Killed by : none
removed call to javax/swing/ButtonGroup::add → NO_COVERAGE

296

1.1
Location : lambda$initMenuTranslation$13
Killed by : none
replaced boolean return with true for com/jsql/view/swing/menubar/MenuWindows::lambda$initMenuTranslation$13 → NO_COVERAGE

2.2
Location : lambda$initMenuTranslation$13
Killed by : none
negated conditional → NO_COVERAGE

297

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

298

1.1
Location : lambda$initMenuTranslation$14
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : lambda$initMenuTranslation$14
Killed by : none
removed call to javax/swing/JMenuItem::setSelected → NO_COVERAGE

299

1.1
Location : lambda$initMenuTranslation$14
Killed by : none
removed call to javax/swing/JMenuItem::setName → NO_COVERAGE

301

1.1
Location : lambda$initMenuTranslation$15
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : lambda$initMenuTranslation$15
Killed by : none
replaced boolean return with true for com/jsql/view/swing/menubar/MenuWindows::lambda$initMenuTranslation$15 → NO_COVERAGE

302

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

2.2
Location : lambda$initMenuTranslation$16
Killed by : none
removed call to javax/swing/JMenuItem::setName → NO_COVERAGE

303

1.1
Location : lambda$initMenuTranslation$17
Killed by : none
replaced boolean return with true for com/jsql/view/swing/menubar/MenuWindows::lambda$initMenuTranslation$17 → NO_COVERAGE

2.2
Location : lambda$initMenuTranslation$17
Killed by : none
negated conditional → NO_COVERAGE

304

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

2.2
Location : lambda$initMenuTranslation$18
Killed by : none
removed call to javax/swing/JMenuItem::setComponentOrientation → NO_COVERAGE

306

1.1
Location : initMenuTranslation
Killed by : none
replaced return value with null for com/jsql/view/swing/menubar/MenuWindows::initMenuTranslation → NO_COVERAGE

311

1.1
Location : lambda$switchLocaleFromPreferences$19
Killed by : none
replaced boolean return with false for com/jsql/view/swing/menubar/MenuWindows::lambda$switchLocaleFromPreferences$19 → NO_COVERAGE

2.2
Location : lambda$switchLocaleFromPreferences$19
Killed by : none
replaced boolean return with true for com/jsql/view/swing/menubar/MenuWindows::lambda$switchLocaleFromPreferences$19 → NO_COVERAGE

314

1.1
Location : lambda$switchLocaleFromPreferences$20
Killed by : none
removed call to javax/swing/JMenuItem::doClick → NO_COVERAGE

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

321

1.1
Location : getMenuView
Killed by : none
replaced return value with null for com/jsql/view/swing/menubar/MenuWindows::getMenuView → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.19.1