Package com.dci.intellij.dbn.object.filter.name.ui

Source Code of com.dci.intellij.dbn.object.filter.name.ui.EditFilterConditionForm

package com.dci.intellij.dbn.object.filter.name.ui;

import com.dci.intellij.dbn.common.ui.ComboBoxSelectionKeyListener;
import com.dci.intellij.dbn.common.ui.DBNForm;
import com.dci.intellij.dbn.common.ui.DBNFormImpl;
import com.dci.intellij.dbn.object.common.DBObjectType;
import com.dci.intellij.dbn.object.filter.name.CompoundFilterCondition;
import com.dci.intellij.dbn.object.filter.name.ConditionJoinType;
import com.dci.intellij.dbn.object.filter.name.ConditionOperator;
import com.dci.intellij.dbn.object.filter.name.SimpleFilterCondition;
import com.intellij.openapi.ui.ComboBox;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class EditFilterConditionForm extends DBNFormImpl implements DBNForm {
    private JPanel mainPanel;
    private JTextField textPatternTextField;
    private JLabel objectNameLabel;
    private ComboBox operatorComboBox;
    private JRadioButton joinTypeAndRadioButton;
    private JRadioButton joinTypeOrRadioButton;
    private JPanel joinTypePanel;
    private JLabel wildcardsHintLabel;

    private SimpleFilterCondition condition;
    public enum Operation {CREATE, EDIT, JOIN}

    public EditFilterConditionForm(CompoundFilterCondition parentCondition, SimpleFilterCondition condition, DBObjectType objectType, Operation operation) {
        this.condition = condition == null ? new SimpleFilterCondition(ConditionOperator.EQUAL, "") : condition;
        joinTypePanel.setVisible(false);
        if (operation == Operation.JOIN) {
            joinTypePanel.setVisible(true);
            if (parentCondition!= null && parentCondition.getJoinType() == ConditionJoinType.AND) {
                joinTypeOrRadioButton.setSelected(true);
            } else {
                joinTypeAndRadioButton.setSelected(true);
            }
        } else if (operation == Operation.CREATE) {
            if (parentCondition != null && parentCondition.getConditions().size() == 1) {
                joinTypePanel.setVisible(true);
                joinTypeAndRadioButton.setSelected(true);
            }
        }

        objectNameLabel.setIcon(objectType.getIcon());
        objectNameLabel.setText(objectType.getName().toUpperCase() + "_NAME");

        operatorComboBox.setModel(new DefaultComboBoxModel(ConditionOperator.values()));
        if (operation == Operation.EDIT) {
            textPatternTextField.setText(condition.getText());
            operatorComboBox.setSelectedItem(condition.getOperator());

        }
        textPatternTextField.selectAll();
        textPatternTextField.setToolTipText("<html>While editing, <br> " +
                "press <b>Up/Down</b> keys to change the operator</html>");
        textPatternTextField.addKeyListener(ComboBoxSelectionKeyListener.create(operatorComboBox, false));

        //wildcardsHintLabel.setIcon(Icons.COMMON_INFO);
        //wildcardsHintLabel.setDisabledIcon(Icons.COMMON_INFO_DISABLED);
        showHideWildcardHint();

        operatorComboBox.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                showHideWildcardHint();
            }
        });
    }

    private void showHideWildcardHint() {
        ConditionOperator operator = (ConditionOperator) operatorComboBox.getSelectedItem();
        wildcardsHintLabel.setEnabled(operator.allowsWildcards());
    }

    public JComponent getFocusComponent() {
        return textPatternTextField;
    }

    public SimpleFilterCondition getCondition() {
        condition.setOperator((ConditionOperator) operatorComboBox.getSelectedItem());
        condition.setText(textPatternTextField.getText().trim());
        return condition;
    }

    public ConditionJoinType getJoinType() {
        return
            joinTypeAndRadioButton.isSelected() ? ConditionJoinType.AND :
            joinTypeOrRadioButton.isSelected() ? ConditionJoinType.OR : null;
    }

    public JComponent getComponent() {
        return mainPanel;
    }

    public void dispose() {
        super.dispose();
        condition = null;
    }
}
TOP

Related Classes of com.dci.intellij.dbn.object.filter.name.ui.EditFilterConditionForm

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.