private void construct(VKUserDto user) {
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds(screenSize.width / 3, screenSize.height / 4, 300, 400);
        setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.gridwidth = 2;
        gbc.gridheight = 7;
        gbc.weighty = 0.9;
        gbc.weightx = 1.0;
        gbc.fill = GridBagConstraints.BOTH;

        JScrollPane scrollPane = new JScrollPane();
        JScrollBar verticalScrollBar = scrollPane.getVerticalScrollBar();
        DialogPanel dialogPanel = new DialogPanel(user, scrollPane.getViewport(), verticalScrollBar);
        dialogPanel.requestFocus();
        scrollPane.setViewportView(dialogPanel);
        scrollPane.setPreferredSize(new Dimension(10, 10));        //aligning (expanding to borders from the tiny dot)
        verticalScrollBar.setUnitIncrement(16);    //speed up scroll
        add(scrollPane, gbc);

        gbc = new GridBagConstraints();
        JTextArea textArea = new JTextArea();
        gbc.gridx = 0;
        gbc.gridy = 9;
        gbc.gridheight = 2;
        gbc.weightx = 0.8;
        gbc.weighty = 0.1;
        gbc.fill = GridBagConstraints.BOTH;
        textArea.setText(TYPE_YOUR_MESSAGE_HERE);
        textArea.addFocusListener(new FocusAdapter() {
            @Override
            public void focusGained(FocusEvent e) {
                if (textArea.getText().equals(TYPE_YOUR_MESSAGE_HERE)) {
                    textArea.setText("");
                }
            }

            @Override
            public void focusLost(FocusEvent e) {
                if (textArea.getText().equals("")) {
                    textArea.setText(TYPE_YOUR_MESSAGE_HERE);
                }
            }
        });
        textArea.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                if (e.getKeyText((int)e.getKeyChar()).equals("Enter") && e.isShiftDown()){
                    String text = textArea.getText();
                    if (!text.isEmpty() && !text.equals(TYPE_YOUR_MESSAGE_HERE))
                        new Thread(() -> ModelManager.getInstance().sendMessage(user.getId(), text)).start();
                }
            }
        });
        textArea.setLineWrap(true);
        textArea.setRows(3);
        scrollPane = new JScrollPane(textArea);
        add(scrollPane, gbc);

        gbc = new GridBagConstraints();
        JButton sendButton = new JButton("Send");
        sendButton.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String text = textArea.getText();
                if (!text.isEmpty() && !text.equals(TYPE_YOUR_MESSAGE_HERE))
                    new Thread(() -> ModelManager.getInstance().sendMessage(user.getId(), text)).start();
                textArea.setText(TYPE_YOUR_MESSAGE_HERE);
            }
        });
        gbc.gridx = 1;
        gbc.gridy = 9;
        gbc.gridheight = 2;
        gbc.fill = GridBagConstraints.BOTH;
        add(sendButton, gbc);
//        setResizable(false);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

        setVisible(true);
        SwingUtilities.invokeLater(() -> {
            revalidate();
            verticalScrollBar.revalidate();
            verticalScrollBar.setValue(verticalScrollBar.getMaximum());
        });
    }