Package com.dci.intellij.dbn.object.properties.ui

Source Code of com.dci.intellij.dbn.object.properties.ui.ObjectPropertiesForm

package com.dci.intellij.dbn.object.properties.ui;

import com.dci.intellij.dbn.browser.DatabaseBrowserManager;
import com.dci.intellij.dbn.browser.model.BrowserTreeNode;
import com.dci.intellij.dbn.browser.ui.BrowserSelectionChangeListener;
import com.dci.intellij.dbn.browser.ui.DatabaseBrowserTree;
import com.dci.intellij.dbn.common.event.EventManager;
import com.dci.intellij.dbn.common.thread.BackgroundTask;
import com.dci.intellij.dbn.common.thread.SimpleLaterInvocator;
import com.dci.intellij.dbn.common.ui.DBNForm;
import com.dci.intellij.dbn.common.ui.DBNFormImpl;
import com.dci.intellij.dbn.common.ui.table.DBNTable;
import com.dci.intellij.dbn.common.util.NamingUtil;
import com.dci.intellij.dbn.object.common.DBObject;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.ui.components.JBScrollPane;
import org.jetbrains.annotations.NotNull;

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;

public class ObjectPropertiesForm extends DBNFormImpl implements DBNForm, BrowserSelectionChangeListener {
    private JPanel mainPanel;
    private JLabel objectLabel;
    private JLabel objectTypeLabel;
    private JTable objectPropertiesTable;
    private JBScrollPane objectPropertiesScrollPane;
    private JPanel closeActionPanel;
    private DBObject object;
    private Project project;

    public ObjectPropertiesForm(Project project) {
        this.project = project;
        //ActionToolbar objectPropertiesActionToolbar = ActionUtil.createActionToolbar("", true, "DBNavigator.ActionGroup.Browser.ObjectProperties");
        //closeActionPanel.add(objectPropertiesActionToolbar.getComponent(), BorderLayout.CENTER);
        objectPropertiesTable.setRowHeight(objectPropertiesTable.getRowHeight() + 2);
        objectPropertiesTable.setRowSelectionAllowed(false);
        objectPropertiesTable.setCellSelectionEnabled(true);
        objectPropertiesScrollPane.getViewport().setBackground(objectPropertiesTable.getBackground());
        objectTypeLabel.setText("Object properties:");
        objectLabel.setText("(no object selected)");

        EventManager.subscribe(project, BrowserSelectionChangeListener.TOPIC, this);
    }

    public JComponent getComponent() {
        return mainPanel;
    }

    public void browserSelectionChanged() {
        DatabaseBrowserManager browserManager = DatabaseBrowserManager.getInstance(project);
        if (browserManager.getShowObjectProperties().value()) {
            DatabaseBrowserTree activeBrowserTree = browserManager.getActiveBrowserTree();
            if (activeBrowserTree != null) {
                BrowserTreeNode treeNode = activeBrowserTree.getSelectedNode();
                if (treeNode instanceof DBObject) {
                    DBObject object = (DBObject) treeNode;
                    setObject(object);
                }
            }
        }
    }

    public DBObject getObject() {
        return object;
    }

    public void setObject(final DBObject object) {
        if (!object.equals(this.object)) {
            this.object = object;

            new BackgroundTask(object.getProject(), "Rendering object properties", true) {
                @Override
                public void execute(@NotNull ProgressIndicator progressIndicator) {
                    initProgressIndicator(progressIndicator, true);
                    final ObjectPropertiesTableModel tableModel = new ObjectPropertiesTableModel(object.getPresentableProperties());

                    new SimpleLaterInvocator() {
                        public void execute() {
                            objectLabel.setText(object.getName());
                            objectLabel.setIcon(object.getIcon());
                            objectTypeLabel.setText(NamingUtil.capitalize(object.getTypeName()) + ":");


                            objectPropertiesTable.setModel(tableModel);
                            ((DBNTable) objectPropertiesTable).accommodateColumnsSize();
                            mainPanel.repaint();
                        }
                    }.start();
                }
            }.start();
        }
    }

    public void dispose() {
        EventManager.unsubscribe(this);
        super.dispose();
        object = null;
        project = null;
    }

    private void createUIComponents() {
        objectPropertiesTable = new ObjectPropertiesTable(null, new ObjectPropertiesTableModel());
        objectPropertiesTable.getTableHeader().setReorderingAllowed(false);
        Disposer.register(this, (Disposable) objectPropertiesTable);
    }
}
TOP

Related Classes of com.dci.intellij.dbn.object.properties.ui.ObjectPropertiesForm

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.