Package com.dci.intellij.dbn.execution.method.ui

Source Code of com.dci.intellij.dbn.execution.method.ui.MethodExecutionTypeAttributeForm

package com.dci.intellij.dbn.execution.method.ui;

import com.dci.intellij.dbn.common.ui.DBNForm;
import com.dci.intellij.dbn.common.ui.DBNFormImpl;
import com.dci.intellij.dbn.common.util.CommonUtil;
import com.dci.intellij.dbn.data.editor.ui.TextFieldWithPopup;
import com.dci.intellij.dbn.data.type.DBDataType;
import com.dci.intellij.dbn.data.type.DBNativeDataType;
import com.dci.intellij.dbn.data.type.DataTypeDefinition;
import com.dci.intellij.dbn.data.type.GenericDataType;
import com.dci.intellij.dbn.object.DBArgument;
import com.dci.intellij.dbn.object.DBTypeAttribute;
import com.intellij.util.ui.UIUtil;

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.DocumentListener;
import java.awt.BorderLayout;
import java.awt.Dimension;

public class MethodExecutionTypeAttributeForm extends DBNFormImpl implements DBNForm {
    private JLabel attributeTypeLabel;
    private JLabel attributeLabel;
    private JPanel mainPanel;
    private JPanel attributePanel;
    private JPanel inputFieldPanel;

    private JComponent inputComponent;
    private JTextField inputTextField;

    private DBArgument argument;
    private DBTypeAttribute typeAttribute;
    private MethodExecutionForm executionComponent;

    public MethodExecutionTypeAttributeForm(DBArgument argument, DBTypeAttribute typeAttribute, MethodExecutionForm executionComponent) {
        this.argument = argument;
        this.typeAttribute = typeAttribute;
        this.executionComponent = executionComponent;
        attributeLabel.setText(typeAttribute.getName());
        attributeLabel.setIcon(typeAttribute.getIcon());
        attributeTypeLabel.setForeground(UIUtil.getInactiveTextColor());
        attributeTypeLabel.setText(typeAttribute.getDataType().getQualifiedName());

        DBDataType dataType = typeAttribute.getDataType();
        DBNativeDataType nativeDataType = dataType.getNativeDataType();
        DataTypeDefinition dataTypeDefinition = nativeDataType.getDataTypeDefinition();
        GenericDataType genericDataType = dataTypeDefinition.getGenericDataType();


        if (genericDataType == GenericDataType.DATE_TIME) {
            TextFieldWithPopup inputField = new TextFieldWithPopup(argument.getProject());
            inputField.setPreferredSize(new Dimension(200, -1));
            inputField.createCalendarPopup(false);
            inputComponent  = inputField;
            inputTextField = inputField.getTextField();

        } else {
            inputTextField = new JTextField();
            inputTextField.setPreferredSize(new Dimension(200, -1));
            inputComponent = inputTextField;
        }
        String value = executionComponent.getExecutionInput().getInputValue(argument, typeAttribute);
        inputTextField.setText(value);
        inputTextField.setDisabledTextColor(inputTextField.getForeground());
        inputFieldPanel.add(inputComponent, BorderLayout.CENTER);
    }

    public JPanel getComponent() {
        return mainPanel;
    }

    public void updateExecutionInput() {
        String value = CommonUtil.nullIfEmpty(inputTextField.getText());
        executionComponent.getExecutionInput().setInputValue(argument, typeAttribute, value);
    }

    protected int[] getMetrics(int[] metrics) {
        if (metrics == null) metrics = new int[]{0, 0};
        return new int[] {
                (int) Math.max(metrics[0], attributePanel.getPreferredSize().getWidth()),
                (int) Math.max(metrics[1], inputComponent.getPreferredSize().getWidth())};
    }

    protected void adjustMetrics(int[] metrics) {
        attributePanel.setPreferredSize(new Dimension(metrics[0], attributePanel.getHeight()));
        inputComponent.setPreferredSize(new Dimension(metrics[1], inputComponent.getHeight()));
    }

    public void addDocumentListener(DocumentListener documentListener){
        inputTextField.getDocument().addDocumentListener(documentListener);
    }

    public void dispose() {
        super.dispose();
        argument = null;
        typeAttribute = null;
        executionComponent = null;
    }
}
TOP

Related Classes of com.dci.intellij.dbn.execution.method.ui.MethodExecutionTypeAttributeForm

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.