1
2
3
4
5
6
7
8
9
10
11 package com.jsql.view.swing.tab;
12
13 import com.jsql.util.I18nUtil;
14 import com.jsql.view.swing.text.JToolTipI18n;
15 import com.jsql.view.swing.util.I18nViewUtil;
16 import com.jsql.view.swing.util.MediatorHelper;
17 import com.jsql.view.swing.util.ModelSvgIcon;
18 import com.jsql.view.swing.util.UiUtil;
19
20 import javax.swing.*;
21 import java.awt.*;
22 import java.awt.event.MouseAdapter;
23 import java.awt.event.MouseEvent;
24 import java.util.Arrays;
25 import java.util.List;
26 import java.util.concurrent.atomic.AtomicInteger;
27 import java.util.concurrent.atomic.AtomicReference;
28
29
30
31
32 public class TabManagers extends TabbedPaneWheeled {
33
34 public static final String TAB_MANAGERS = "tabManagers";
35
36 private final transient List<ModelSvgIcon> iconsTabs = Arrays.asList(
37 UiUtil.DATABASE_BOLD, UiUtil.ADMIN, UiUtil.DOWNLOAD, UiUtil.TERMINAL, UiUtil.LOCK, UiUtil.TEXTFIELD, UiUtil.BATCH
38 );
39
40
41
42
43 public TabManagers() {
44 this.setName(TabManagers.TAB_MANAGERS);
45 this.setMaximumSize(new Dimension(this.getMaximumSize().width, 35));
46 this.setPreferredSize(new Dimension(this.getPreferredSize().width, 35));
47
48 AtomicInteger indexTab = new AtomicInteger();
49 this.iconsTabs.forEach(modelSvgIcon -> this.buildI18nTab(modelSvgIcon, indexTab.getAndIncrement()));
50 this.addChangeListener(e -> {
51 CardLayout cardLayout = (CardLayout) MediatorHelper.tabManagersCards().getLayout();
52 cardLayout.show(MediatorHelper.tabManagersCards(), this.getTabComponentAt(this.getSelectedIndex()).getName());
53 });
54 }
55
56 private void buildI18nTab(ModelSvgIcon modelSvgIcon, int index) {
57 Icon icon = modelSvgIcon.getIcon();
58 String keyLabel = modelSvgIcon.getKeyLabel();
59 String keyTooltip = modelSvgIcon.getKeyTooltip();
60 AtomicReference<JToolTipI18n> tooltipAtomic = new AtomicReference<>(new JToolTipI18n(I18nUtil.valueByKey(keyTooltip)));
61 JLabel labelTab = new JLabel(I18nUtil.valueByKey(keyLabel), icon, SwingConstants.CENTER) {
62 @Override
63 public JToolTip createToolTip() {
64 tooltipAtomic.set(new JToolTipI18n(I18nUtil.valueByKey(keyTooltip)));
65 return tooltipAtomic.get();
66 }
67 };
68
69 labelTab.setName(keyLabel);
70 labelTab.addMouseListener(new MouseAdapter() {
71 @Override
72 public void mousePressed(MouseEvent e) {
73 CardLayout cardLayout = (CardLayout) MediatorHelper.tabManagersCards().getLayout();
74 cardLayout.show(MediatorHelper.tabManagersCards(), TabManagers.this.getTabComponentAt(index).getName());
75 TabManagers.this.setSelectedIndex(index);
76 }
77 });
78
79 this.addTab(I18nUtil.valueByKey(keyLabel), icon, null);
80 this.setTabComponentAt(
81 this.indexOfTab(I18nUtil.valueByKey(keyLabel)),
82 labelTab
83 );
84
85 I18nViewUtil.addComponentForKey(keyLabel, labelTab);
86 I18nViewUtil.addComponentForKey(keyTooltip, tooltipAtomic.get());
87
88 labelTab.setToolTipText(I18nUtil.valueByKey(keyTooltip));
89 }
90
91 public List<ModelSvgIcon> getIconsTabs() {
92 return this.iconsTabs;
93 }
94 }