• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 package ohos.devtools.views.layout;
17 
18 import com.intellij.openapi.util.IconLoader;
19 import com.intellij.ui.JBColor;
20 import com.intellij.ui.components.JBLabel;
21 import com.intellij.ui.components.JBLayeredPane;
22 import com.intellij.ui.components.JBPanel;
23 import net.miginfocom.swing.MigLayout;
24 import ohos.devtools.datasources.utils.plugin.service.PlugManager;
25 import ohos.devtools.datasources.utils.profilerlog.ProfilerLogManager;
26 import ohos.devtools.datasources.utils.quartzmanager.QuartzManager;
27 import ohos.devtools.datasources.utils.session.service.SessionManager;
28 import ohos.devtools.views.common.Constant;
29 import ohos.devtools.views.common.LayoutConstants;
30 import ohos.devtools.views.common.UtConstant;
31 import ohos.devtools.views.common.customcomp.GraphicsLinePanel;
32 import ohos.devtools.views.layout.chartview.ProfilerChartsView;
33 import ohos.devtools.views.layout.utils.EventTrackUtils;
34 import ohos.devtools.views.layout.utils.OpenFileDialogUtils;
35 import org.apache.logging.log4j.LogManager;
36 import org.apache.logging.log4j.Logger;
37 
38 import javax.swing.BorderFactory;
39 import javax.swing.JButton;
40 import java.awt.BorderLayout;
41 import java.awt.Color;
42 import java.awt.Component;
43 import java.awt.Dimension;
44 import java.awt.Font;
45 import java.awt.GridLayout;
46 import java.awt.event.FocusEvent;
47 import java.awt.event.MouseEvent;
48 import java.awt.event.MouseListener;
49 import java.util.Objects;
50 
51 import static ohos.devtools.views.common.Constant.DEVICE_REFRESH;
52 
53 /**
54  * TaskPanel
55  *
56  * @since 2021/11/22
57  */
58 public class TaskPanel extends JBLayeredPane implements MouseListener {
59     private static final Logger LOGGER = LogManager.getLogger(TaskPanel.class);
60     private static final String TAB_STR = "NewTask-Configure";
61     private static final String TAB_CLOSE_STR = "x";
62     private static final String TAB_ADD_STR = "+";
63     private static final String TASK_SCENE_STR = "Task scene";
64     private static final String TASK_SCENE_TIP_STR = "Choose the most suitable scene.";
65     private static final String CHOOSE_BTN_STR = "Choose";
66     private static final String OPEN_FILE_STR = "Open File";
67     private static final String APPLICATION_TITLE_STR = "Application Tuning";
68     private static final String SYSTEM_TITLE_STR = "System Tuning";
69     private static final String DISTRIBUTED_TITLE_STR = "Distributed Scenario";
70     private static final String APPLICATION_TIP_STR = "<html>Application Tuning<br/><br/>"
71         + "Use the performance profiler to check the CPU,memory,network and energy status of the application</html>";
72     private static final String SYSTEM_TIP_STR = "<html>System Tuning<br/><br/>"
73         + "Collect system-wide performance traces from Harmony devices from a variety of data sources</html>";
74     private static final String DISTRIBUTED_TIP_STR =
75         "<html>Distributed Scenario<br/><br/>" + "Collect performance data for distributed scenarios</html>";
76     private static final String GPU_TIP_STR =
77         "<html>GPU Counter<br/><br/>" + "Collect performance data for GPU Counter</html>";
78 
79     private JBPanel parentPanel;
80     private JBPanel welcomePanel;
81     private JBPanel tabPanel;
82     private JBPanel tabLeftPanel;
83     private JBPanel tabRightPanel;
84     private JBLabel tabText;
85     private JBLabel tabCloseBtn;
86     private JButton tabAddBtn;
87     private JBPanel tabContainer;
88     private JBPanel tabItem;
89     private JBLabel taskSceneLabel;
90     private JBLabel taskSceneLabelTip;
91     private JBLabel applicationBtn;
92     private JBLabel systemBtn;
93     private JBLabel distributedBtn;
94     private JBLabel tipIconLabel;
95     private JBLabel tipInfoLabel;
96     private JButton chooseBtn;
97     private JButton openFileBtn;
98     private JBPanel btnPanel;
99     private GraphicsLinePanel graphicsLineUp;
100     private GraphicsLinePanel graphicsLineDown;
101     private Long localSessionId;
102 
103     /**
104      * Task Panel
105      */
TaskPanel()106     public TaskPanel() {
107         super();
108     }
109 
110     /**
111      * Task Panel
112      *
113      * @param containerPanel JBPanel
114      * @param welcomePanel WelcomePanel
115      */
TaskPanel(JBPanel containerPanel, WelcomePanel welcomePanel)116     public TaskPanel(JBPanel containerPanel, WelcomePanel welcomePanel) {
117         EventTrackUtils.getInstance().trackTaskPage();
118         parentPanel = containerPanel;
119         this.welcomePanel = welcomePanel;
120         initComponents();
121         initTab(containerPanel);
122         initTaskSceneItems();
123         addEventListener();
124     }
125 
126     /**
127      * initComponents
128      */
initComponents()129     private void initComponents() {
130         if (ProfilerLogManager.isInfoEnabled()) {
131             LOGGER.info("initComponents");
132         }
133         // init tabPanel
134         tabPanel = new JBPanel();
135         tabLeftPanel = new JBPanel();
136         tabRightPanel = new JBPanel();
137         tabRightPanel.setName(UtConstant.UT_TASK_PANEL_CLOSE);
138         tabText = new JBLabel(TAB_STR);
139         tabCloseBtn = new JBLabel(TAB_CLOSE_STR);
140         tabAddBtn = new JButton(TAB_ADD_STR);
141         // init tab
142         tabContainer = new JBPanel(new BorderLayout());
143         tabContainer.setOpaque(true);
144         tabContainer.setBackground(JBColor.background().darker());
145         tabItem = new JBPanel();
146         // init items
147         taskSceneLabel = new JBLabel(TASK_SCENE_STR);
148         taskSceneLabelTip = new JBLabel(TASK_SCENE_TIP_STR);
149         applicationBtn = new JBLabel(IconLoader.getIcon("/images/application_tuning.png", getClass()));
150         systemBtn = new JBLabel(IconLoader.getIcon("/images/system_tuning.png", getClass()));
151         distributedBtn = new JBLabel(IconLoader.getIcon("/images/distributed_scenario.png", getClass()));
152         tipIconLabel = new JBLabel(IconLoader.getIcon("/images/application_tuning.png", getClass()));
153         tipInfoLabel = new JBLabel(APPLICATION_TIP_STR);
154         graphicsLineUp = new GraphicsLinePanel();
155         graphicsLineDown = new GraphicsLinePanel();
156         chooseBtn = new JButton(CHOOSE_BTN_STR);
157         openFileBtn = new JButton(OPEN_FILE_STR);
158     }
159 
160     /**
161      * setTabAttributes
162      *
163      * @param containerPanel containerPanel
164      */
initTab(JBPanel containerPanel)165     private void initTab(JBPanel containerPanel) {
166         if (ProfilerLogManager.isInfoEnabled()) {
167             LOGGER.info("initTab");
168         }
169         setPanelData();
170         containerPanel.setLayout(new BorderLayout());
171         tabAddBtn.setFont(new Font(Font.DIALOG, Font.PLAIN, LayoutConstants.DEVICES_HEIGHT));
172         tabAddBtn.setBorderPainted(false);
173         tabAddBtn.setBounds(LayoutConstants.NUMBER_X_ADD * Constant.jtasksTab.getTabCount(), LayoutConstants.NUMBER_Y,
174             LayoutConstants.BUTTON_HEIGHT, LayoutConstants.BUTTON_HEIGHT);
175         Constant.jtasksTab.setBounds(0, 0, containerPanel.getWidth(), containerPanel.getHeight());
176         this.add(Constant.jtasksTab);
177         containerPanel.add(this);
178         double result = Constant.jtasksTab.getTabCount() * LayoutConstants.NUMBER_X;
179         if (result > containerPanel.getWidth()) {
180             for (int index = 0; index < Constant.jtasksTab.getTabCount(); index++) {
181                 Object tabObj = Constant.jtasksTab.getTabComponentAt(index);
182                 if (tabObj instanceof JBPanel) {
183                     ((JBPanel) tabObj).getComponents()[0].setPreferredSize(new Dimension(
184                         (((containerPanel.getWidth() - LayoutConstants.MEMORY_WIDTH) / Constant.jtasksTab.getTabCount())
185                             - LayoutConstants.TASK_DEC_NUM) - LayoutConstants.JAVA_HEIGHT,
186                         LayoutConstants.JAVA_HEIGHT));
187                 }
188                 Constant.jtasksTab.getTabComponentAt(index).setPreferredSize(new Dimension(
189                     ((containerPanel.getWidth() - LayoutConstants.MEMORY_WIDTH) / Constant.jtasksTab.getTabCount())
190                         - LayoutConstants.TASK_DEC_NUM, LayoutConstants.JAVA_HEIGHT));
191                 tabAddBtn.setBounds(containerPanel.getWidth() - LayoutConstants.TASK_LABEL_X, LayoutConstants.NUMBER_Y,
192                     LayoutConstants.BUTTON_HEIGHT, LayoutConstants.BUTTON_HEIGHT);
193             }
194         }
195     }
196 
197     /**
198      * setPanelData
199      */
setPanelData()200     private void setPanelData() {
201         if (ProfilerLogManager.isInfoEnabled()) {
202             LOGGER.info("setPanelData");
203         }
204         tabItem.setLayout(new MigLayout("insets 0", "[grow,fill]", "15[fill,fill]20[]push[][][]20[]"));
205         tabPanel.setOpaque(false);
206         tabPanel.setPreferredSize(new Dimension(LayoutConstants.JPA_LABEL_WIDTH, LayoutConstants.DEVICES_HEIGHT));
207         tabLeftPanel.setOpaque(false);
208         tabLeftPanel.setLayout(null);
209         tabLeftPanel.setPreferredSize(new Dimension(LayoutConstants.JP_LEFT_WIDTH, LayoutConstants.JP_LEFT_HEIGHT));
210         tabRightPanel.setOpaque(false);
211         tabRightPanel.setLayout(new GridLayout());
212         tabRightPanel.setPreferredSize(new Dimension(LayoutConstants.JP_RIGHT_WIDTH, LayoutConstants.JP_RIGHT_HEIGHT));
213         tabPanel.setLayout(new BorderLayout());
214         tabPanel.add(tabLeftPanel, BorderLayout.WEST);
215         tabPanel.add(tabRightPanel, BorderLayout.CENTER);
216         tabText.setBounds(0, 0, LayoutConstants.JP_SET_WIDTH, LayoutConstants.JP_SET_HEIGHT);
217         tabLeftPanel.add(tabText);
218         tabRightPanel.add(tabCloseBtn);
219         tabCloseBtn.setHorizontalAlignment(JBLabel.RIGHT);
220         tabCloseBtn.setName(TAB_CLOSE_STR);
221         tipIconLabel
222             .setBounds(LayoutConstants.DEVICES_X, LayoutConstants.DESCRIPTION_NUMBER, LayoutConstants.HIGTHSCEECS,
223                 LayoutConstants.HIGTHSCEECS);
224         tipInfoLabel
225             .setBounds(LayoutConstants.JAVA_WIDTH, LayoutConstants.DESCRIPTION_NUMBER, LayoutConstants.APP_LABEL_WIDTH,
226                 LayoutConstants.JLABEL_SIZE);
227         Font fontTaskTun = new Font(Font.DIALOG, Font.BOLD, LayoutConstants.TUN_LABEL_FONT);
228         tipInfoLabel.setFont(fontTaskTun);
229         tabContainer.add(tabItem);
230         Constant.jtasksTab.addTab("TaskTab", tabContainer);
231         Constant.jtasksTab.setTabComponentAt(Constant.jtasksTab.indexOfComponent(tabContainer), tabPanel);
232     }
233 
234     /**
235      * init TaskScene Items
236      */
initTaskSceneItems()237     private void initTaskSceneItems() {
238         if (ProfilerLogManager.isInfoEnabled()) {
239             LOGGER.info("initTaskSceneItems");
240         }
241         setButtonAttr();
242         setApplicationBtnData();
243         setSystemBtnData();
244         distributedBtn.setText(DISTRIBUTED_TITLE_STR);
245         distributedBtn.setName(UtConstant.UT_TASK_PANEL_DISTRIBUTED);
246         distributedBtn.setPreferredSize(new Dimension(210, 155));
247         distributedBtn.setFont(new Font(Font.DIALOG, Font.PLAIN, 14));
248         distributedBtn.setVerticalTextPosition(JBLabel.BOTTOM);
249         distributedBtn.setHorizontalTextPosition(JBLabel.CENTER);
250         distributedBtn.setOpaque(true);
251         distributedBtn.setBackground(JBColor.background());
252         JBPanel taskScenePanel = new JBPanel(new MigLayout("insets 0"));
253         taskScenePanel.setOpaque(false);
254         taskScenePanel.add(taskSceneLabel, "gap 15");
255         taskScenePanel.add(taskSceneLabelTip);
256         JBPanel sceneButtonPanel = new JBPanel(new MigLayout("insets 0"));
257         sceneButtonPanel.add(applicationBtn, "gap 15");
258         sceneButtonPanel.add(systemBtn, "gap 15");
259         sceneButtonPanel.setOpaque(false);
260         sceneButtonPanel.add(distributedBtn, "gap 15");
261         JBPanel tipPanel = new JBPanel(new MigLayout("insets 0"));
262         tipPanel.add(tipIconLabel, "gap 30");
263         tipPanel.add(tipInfoLabel);
264         tipPanel.setOpaque(false);
265         btnPanel = new JBPanel(new MigLayout("insets 0", "push[]15[]15", "[fill, fill]"));
266         btnPanel.add(openFileBtn);
267         btnPanel.add(chooseBtn);
268         btnPanel.setOpaque(false);
269         tabItem.add(taskScenePanel, "wrap, height 30!");
270         tabItem.add(sceneButtonPanel, "wrap, height 150!");
271         tabItem.add(graphicsLineUp, "wrap, height 10!, gapx 15 15");
272         tabItem.add(tipPanel, "wrap");
273         tabItem.add(graphicsLineDown, "wrap, height 10!, gapy 10, gapx 15 15");
274         tabItem.add(btnPanel, "wrap, span, height 40!");
275         tabItem.setOpaque(true);
276         tabItem.setBackground(JBColor.background().darker());
277     }
278 
279     /**
280      * setSystemBtnData
281      */
setSystemBtnData()282     private void setSystemBtnData() {
283         if (ProfilerLogManager.isInfoEnabled()) {
284             LOGGER.info("setSystemBtnData");
285         }
286         systemBtn.setText(SYSTEM_TITLE_STR);
287         systemBtn.setName(UtConstant.UT_TASK_PANEL_SYSTEM);
288         systemBtn.setPreferredSize(new Dimension(210, 155));
289         systemBtn.setFont(new Font(Font.DIALOG, Font.PLAIN, 14));
290         systemBtn.setVerticalTextPosition(JBLabel.BOTTOM);
291         systemBtn.setHorizontalTextPosition(JBLabel.CENTER);
292         systemBtn.setOpaque(true);
293         systemBtn.setBackground(JBColor.background());
294     }
295 
296     /**
297      * setApplicationBtnData
298      */
setApplicationBtnData()299     private void setApplicationBtnData() {
300         if (ProfilerLogManager.isInfoEnabled()) {
301             LOGGER.info("setApplicationBtnData");
302         }
303         taskSceneLabel.setFont(new Font(Font.DIALOG, Font.BOLD, 24));
304         taskSceneLabel.setForeground(JBColor.foreground().brighter());
305         taskSceneLabelTip.setFont(new Font(Font.DIALOG, Font.PLAIN, 14));
306         applicationBtn.setText(APPLICATION_TITLE_STR);
307         applicationBtn.setName(UtConstant.UT_TASK_PANEL_APPLICATION);
308         applicationBtn.setPreferredSize(new Dimension(210, 155));
309         applicationBtn.setFont(new Font(Font.DIALOG, Font.PLAIN, 14));
310         applicationBtn.setVerticalTextPosition(JBLabel.BOTTOM);
311         applicationBtn.setHorizontalTextPosition(JBLabel.CENTER);
312         applicationBtn.setOpaque(true);
313         applicationBtn.setBackground(JBColor.background());
314         applicationBtn.setForeground(JBColor.foreground().brighter());
315         applicationBtn.setBorder(BorderFactory.createLineBorder(new Color(0, 117, 255), 2));
316     }
317 
318     /**
319      * addEventListener
320      */
addEventListener()321     private void addEventListener() {
322         tabCloseBtn.addMouseListener(this);
323         applicationBtn.addMouseListener(this);
324         systemBtn.addMouseListener(this);
325         distributedBtn.addMouseListener(this);
326         openFileBtn.addMouseListener(this);
327         chooseBtn.addMouseListener(this);
328     }
329 
330     /**
331      * setButtonAttr
332      */
setButtonAttr()333     private void setButtonAttr() {
334         chooseBtn.setName(UtConstant.UT_TASK_PANEL_CHOOSE);
335         chooseBtn.setFont(new Font(Font.DIALOG, Font.PLAIN, LayoutConstants.OPTION_FONT));
336         chooseBtn.setFocusPainted(false);
337         chooseBtn.setOpaque(false);
338         chooseBtn.setPreferredSize(new Dimension(140, 40));
339         openFileBtn.setName(UtConstant.UT_TASK_PANEL_OPEN_FILE);
340         openFileBtn.setFont(new Font(Font.DIALOG, Font.PLAIN, LayoutConstants.OPTION_FONT));
341         openFileBtn.setOpaque(false);
342         openFileBtn.setFocusPainted(false);
343         openFileBtn.setPreferredSize(new Dimension(140, 40));
344     }
345 
346     @Override
mouseClicked(MouseEvent mouseEvent)347     public void mouseClicked(MouseEvent mouseEvent) {
348     }
349 
350     @Override
mousePressed(MouseEvent mouseEvent)351     public void mousePressed(MouseEvent mouseEvent) {
352     }
353 
354     @Override
mouseReleased(MouseEvent mouseEvent)355     public void mouseReleased(MouseEvent mouseEvent) {
356         String name = mouseEvent.getComponent().getName();
357         if (name.equals(APPLICATION_TITLE_STR)) {
358             tipInfoLabel.setText(APPLICATION_TIP_STR);
359             tipIconLabel.setIcon(IconLoader.getIcon("/images/application_tuning.png", getClass()));
360             applicationBtn.setBorder(BorderFactory.createLineBorder(new Color(0, 117, 255), 2));
361             systemBtn.setBorder(null);
362             distributedBtn.setBorder(null);
363             applicationBtn.setForeground(JBColor.foreground().brighter());
364             systemBtn.setForeground(JBColor.foreground());
365             distributedBtn.setForeground(JBColor.foreground());
366         }
367         if (name.equals(SYSTEM_TITLE_STR)) {
368             tipInfoLabel.setText(SYSTEM_TIP_STR);
369             tipIconLabel.setIcon(IconLoader.getIcon("/images/system_tuning.png", getClass()));
370             applicationBtn.setBorder(null);
371             systemBtn.setBorder(BorderFactory.createLineBorder(new Color(0, 117, 255), 2));
372             distributedBtn.setBorder(null);
373             applicationBtn.setForeground(JBColor.foreground());
374             systemBtn.setForeground(JBColor.foreground().brighter());
375             distributedBtn.setForeground(JBColor.foreground());
376         }
377         if (name.equals(DISTRIBUTED_TITLE_STR)) {
378             tipInfoLabel.setText(DISTRIBUTED_TIP_STR);
379             tipIconLabel.setIcon(IconLoader.getIcon("/images/distributed_scenario.png", getClass()));
380             applicationBtn.setBorder(null);
381             systemBtn.setBorder(null);
382             distributedBtn.setBorder(BorderFactory.createLineBorder(new Color(0, 117, 255), 2));
383             applicationBtn.setForeground(JBColor.foreground());
384             systemBtn.setForeground(JBColor.foreground());
385             distributedBtn.setForeground(JBColor.foreground().brighter());
386         }
387         mouseReleasedExtra(name);
388     }
389 
390     /**
391      * mouseReleasedExtra
392      *
393      * @param name name
394      */
mouseReleasedExtra(String name)395     private void mouseReleasedExtra(String name) {
396         if (name.equals(CHOOSE_BTN_STR)) {
397             chooseBtn.dispatchEvent(new FocusEvent(chooseBtn, FocusEvent.FOCUS_GAINED, true));
398             chooseBtn.requestFocusInWindow();
399             tabItem.setVisible(false);
400             setTabContainer();
401             tabContainer.repaint();
402         }
403         if (name.equals(OPEN_FILE_STR)) {
404             OpenFileDialogUtils.getInstance().showFileOpenDialog(tabItem, this);
405         }
406         if (name.equals(TAB_CLOSE_STR)) {
407             removeAll();
408             HomePanel.setTaskIsOpen(false);
409             Constant.jtasksTab.remove(Constant.jtasksTab.indexOfTabComponent(tabPanel));
410             add(Constant.jtasksTab);
411             parentPanel.add(this);
412             parentPanel.repaint();
413             Constant.jtasksTab.updateUI();
414             if (Constant.jtasksTab.getTabCount() == 0) {
415                 if (localSessionId != null && localSessionId != 0L) {
416                     SessionManager sessionManager = SessionManager.getInstance();
417                     sessionManager.deleteSession(localSessionId);
418                 }
419                 removeAll();
420                 Constant.jtasksTab = null;
421                 Component[] components = parentPanel.getComponents();
422                 for (Component item : components) {
423                     if (item instanceof TaskPanel) {
424                         parentPanel.remove(item);
425                     }
426                 }
427                 welcomePanel.setVisible(true);
428             }
429             QuartzManager.getInstance().deleteExecutor(DEVICE_REFRESH);
430             PlugManager.getInstance().clearProfilerMonitorItemMap();
431             ProfilerChartsView profilerChartsView = ProfilerChartsView.sessionMap.get(localSessionId);
432             if (Objects.nonNull(profilerChartsView)) {
433                 profilerChartsView.getPublisher().stopRefresh(false);
434             }
435         }
436     }
437 
438     /**
439      * setTabContainer
440      */
setTabContainer()441     private void setTabContainer() {
442         if (tipInfoLabel.getText().contains(APPLICATION_TITLE_STR)) {
443             ApplicationConfigPanel taskScenePanel = new ApplicationConfigPanel(this);
444             tabContainer.setLayout(new BorderLayout());
445             tabContainer.setOpaque(true);
446             tabContainer.setBackground(JBColor.background().darker());
447             tabContainer.add(taskScenePanel);
448         } else if (tipInfoLabel.getText().contains(SYSTEM_TITLE_STR)) {
449             SystemConfigPanel configPanel = new SystemConfigPanel(this);
450             tabContainer.setLayout(new BorderLayout());
451             tabContainer.setOpaque(true);
452             tabContainer.setBackground(JBColor.background().darker());
453             tabContainer.add(configPanel);
454         } else if (tipInfoLabel.getText().contains(DISTRIBUTED_TITLE_STR)) {
455             DistributedConfigPanel configPanel = new DistributedConfigPanel(this);
456             tabContainer.setLayout(new BorderLayout());
457             tabContainer.setOpaque(true);
458             tabContainer.setBackground(JBColor.background().darker());
459             tabContainer.add(configPanel);
460         } else {
461             // Distributed Scenario
462             tabItem.setVisible(true);
463         }
464     }
465 
466     @Override
mouseEntered(MouseEvent mouseEvent)467     public void mouseEntered(MouseEvent mouseEvent) {
468     }
469 
470     @Override
mouseExited(MouseEvent mouseEvent)471     public void mouseExited(MouseEvent mouseEvent) {
472     }
473 
getTabCloseBtn()474     public JBLabel getTabCloseBtn() {
475         return tabCloseBtn;
476     }
477 
478     /**
479      * getChooseButton
480      *
481      * @return JButton
482      */
getChooseButton()483     public JButton getChooseButton() {
484         return chooseBtn;
485     }
486 
getTabContainer()487     public JBPanel getTabContainer() {
488         return tabContainer;
489     }
490 
getTabItem()491     public JBPanel getTabItem() {
492         return tabItem;
493     }
494 
getTabRightPanel()495     public JBPanel getTabRightPanel() {
496         return tabRightPanel;
497     }
498 
getTabLeftPanel()499     public JBPanel getTabLeftPanel() {
500         return tabLeftPanel;
501     }
502 
getTabAddBtn()503     public JButton getTabAddBtn() {
504         return tabAddBtn;
505     }
506 
getBtnPanel()507     public JBPanel getBtnPanel() {
508         return btnPanel;
509     }
510 
setLocalSessionId(Long localSessionId)511     public void setLocalSessionId(Long localSessionId) {
512         this.localSessionId = localSessionId;
513     }
514 
getLocalSessionId()515     public Long getLocalSessionId() {
516         return localSessionId;
517     }
518 }
519