Package com.dci.intellij.dbn.editor.data.ui.table.renderer

Source Code of com.dci.intellij.dbn.editor.data.ui.table.renderer.DatasetEditorTableGutterRenderer

package com.dci.intellij.dbn.editor.data.ui.table.renderer;

import com.dci.intellij.dbn.common.Icons;
import com.dci.intellij.dbn.data.ui.table.basic.BasicTableGutter;
import com.dci.intellij.dbn.data.ui.table.basic.BasicTableGutterCellRenderer;
import com.dci.intellij.dbn.editor.data.model.DatasetEditorModel;
import com.dci.intellij.dbn.editor.data.model.DatasetEditorModelRow;
import com.dci.intellij.dbn.editor.data.ui.table.DatasetEditorTable;
import com.intellij.openapi.editor.colors.EditorColorsManager;
import com.intellij.openapi.editor.colors.EditorFontType;
import com.intellij.ui.border.CustomLineBorder;
import com.intellij.util.ui.UIUtil;

import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListCellRenderer;
import javax.swing.SwingConstants;
import javax.swing.border.Border;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;

public class DatasetEditorTableGutterRenderer extends JPanel implements ListCellRenderer {
    public static final Color PANEL_BACKGROUND = UIUtil.getPanelBackground();
    private JLabel textLabel;
    private JLabel imageLabel;
    private JPanel textPanel;
    private static final Cursor HAND_CURSOR = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);

    private Border border = new CompoundBorder(new CustomLineBorder(UIUtil.getPanelBackground(), 0, 0, 1, 1), new EmptyBorder(0, 3, 0, 3));

    public DatasetEditorTableGutterRenderer() {
        setBackground(UIUtil.getPanelBackground());
        setBorder(border);
        setLayout(new BorderLayout());
        textLabel = new JLabel();
        textLabel.setFont(EditorColorsManager.getInstance().getGlobalScheme().getFont(EditorFontType.PLAIN));
        imageLabel = new JLabel();

        textPanel = new JPanel(new BorderLayout());
        textPanel.setBorder(new EmptyBorder(0,0,0,3));
        textPanel.add(textLabel, BorderLayout.EAST);
        add(textPanel, BorderLayout.CENTER);
        add(imageLabel, BorderLayout.EAST);
        textLabel.setHorizontalTextPosition(SwingConstants.RIGHT);
        textLabel.setCursor(HAND_CURSOR);
    }

    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        BasicTableGutter tableGutter = (BasicTableGutter) list;
        DatasetEditorModel model = (DatasetEditorModel) list.getModel();
        DatasetEditorModelRow row = model.getRowAtIndex(index);
        DatasetEditorTable table = (DatasetEditorTable) tableGutter.getTable();
        if (row != null) {
            Icon icon =
                    row.isNew() ? Icons.DATA_EDITOR_ROW_NEW :
                            row.isInsert() ? Icons.DATA_EDITOR_ROW_INSERT :
                                    row.isDeleted() ? Icons.DATA_EDITOR_ROW_DELETED :
                                            row.isModified() ? Icons.DATA_EDITOR_ROW_MODIFIED :
                                                    table.getModel().isModified() ? Icons.DATA_EDITOR_ROW_DEFAULT : null;

            textLabel.setText(Integer.toString(row.getIndex() + 1));
            if (imageLabel.getIcon() != icon) {
                imageLabel.setIcon(icon);
            }
        }
        //lText.setFont(isSelected ? BOLD_FONT : REGULAR_FONT);

        boolean isCaretRow = table.getCellSelectionEnabled() && table.getSelectedRow() == index && table.getSelectedRowCount() == 1;
        Color background = isSelected ?
                BasicTableGutterCellRenderer.Colors.SELECTION_BACKGROUND_COLOR :
                isCaretRow ?
                        BasicTableGutterCellRenderer.Colors.CARET_ROW_COLOR :
                        PANEL_BACKGROUND;
        setBackground(background);
        textPanel.setBackground(background);
        textLabel.setForeground(isSelected ? BasicTableGutterCellRenderer.Colors.SELECTION_FOREGROUND_COLOR : BasicTableGutterCellRenderer.Colors.LINE_NUMBER_COLOR);
        return this;
    }
}
TOP

Related Classes of com.dci.intellij.dbn.editor.data.ui.table.renderer.DatasetEditorTableGutterRenderer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.