Package org.gephi.ui.filters.plugin.attribute

Source Code of org.gephi.ui.filters.plugin.attribute.EqualNumberPanel

/*
Copyright 2008-2010 Gephi
Authors : Mathieu Bastian <mathieu.bastian@gephi.org>
Website : http://www.gephi.org

This file is part of Gephi.

Gephi is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

Gephi is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with Gephi.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.gephi.ui.filters.plugin.attribute;

import java.text.DecimalFormat;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.gephi.filters.plugin.attribute.AttributeEqualBuilder.EqualNumberFilter;
import org.gephi.filters.spi.FilterProperty;
import org.openide.util.WeakListeners;

/**
*
* @author Mathieu Bastian
*/
public class EqualNumberPanel extends javax.swing.JPanel implements ChangeListener {

    private EqualNumberFilter filter;

    public EqualNumberPanel() {
        initComponents();
    }

    public void stateChanged(ChangeEvent evt) {
        FilterProperty match = filter.getProperties()[1];
        try {
            match.setValue((Number) valueSpinner.getValue());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void setup(EqualNumberFilter f) {
        this.filter = f;
        new Thread(new Runnable() {

            public void run() {
                setToolTipText(filter.getName() + " '" + filter.getColumn().getTitle() + "'");
                Number match = filter.getMatch();
                Number stepSize = null;
                final Comparable min = (Comparable) filter.getMinimun();
                final Comparable max = (Comparable) filter.getMaximum();
                switch (filter.getColumn().getType()) {
                    case DOUBLE:
                        match = (match != null ? match : new Double((Double) min));
                        stepSize = new Double(.1);
                        break;
                    case FLOAT:
                        match = (match != null ? match : new Float((Float) min));
                        stepSize = new Float(.1f);
                        break;
                    case LONG:
                        match = (match != null ? match : new Long((Long) min));
                        stepSize = new Long(1l);
                        break;
                    case INT:
                        match = (match != null ? match : new Integer((Integer) min));
                        stepSize = 1;
                        break;
                    default:
                        throw new IllegalArgumentException("Column must be number");
                }
                Number minNumber = (Number) min;
                Number maxNumber = (Number) max;
                if (match.doubleValue() < minNumber.doubleValue()) {
                    match = minNumber;
                    filter.getProperties()[1].setValue(minNumber);
                } else if (match.doubleValue() > maxNumber.doubleValue()) {
                    match = maxNumber;
                    filter.getProperties()[1].setValue(maxNumber);
                }

                final SpinnerNumberModel model = new SpinnerNumberModel(match, min, max, stepSize);
                SwingUtilities.invokeLater(new Runnable() {

                    public void run() {
                        if (min.equals(Double.NEGATIVE_INFINITY) || min.equals(Integer.MIN_VALUE)) {
                            minLabel.setText("");
                            maxLabel.setText("");
                        } else {
                            DecimalFormat df = new DecimalFormat();
                            df.setMaximumFractionDigits(5);
                            minLabel.setText(df.format(min));
                            maxLabel.setText(df.format(max));
                        }


                        valueSpinner.setModel(model);
                        model.addChangeListener(WeakListeners.change(EqualNumberPanel.this, model));
                    }
                });
            }
        }).start();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        labelValue = new javax.swing.JLabel();
        valueSpinner = new javax.swing.JSpinner();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        minLabel = new javax.swing.JLabel();
        maxLabel = new javax.swing.JLabel();

        setLayout(new java.awt.GridBagLayout());

        labelValue.setText(org.openide.util.NbBundle.getMessage(EqualNumberPanel.class, "EqualNumberPanel.labelValue.text")); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
        add(labelValue, gridBagConstraints);

        valueSpinner.setPreferredSize(new java.awt.Dimension(75, 20));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        add(valueSpinner, gridBagConstraints);

        jLabel1.setFont(new java.awt.Font("Tahoma", 0, 10));
        jLabel1.setText(org.openide.util.NbBundle.getMessage(EqualNumberPanel.class, "EqualNumberPanel.jLabel1.text")); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
        add(jLabel1, gridBagConstraints);

        jLabel2.setFont(new java.awt.Font("Tahoma", 0, 10));
        jLabel2.setText(org.openide.util.NbBundle.getMessage(EqualNumberPanel.class, "EqualNumberPanel.jLabel2.text")); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
        add(jLabel2, gridBagConstraints);

        minLabel.setFont(new java.awt.Font("Tahoma", 0, 10));
        minLabel.setText(org.openide.util.NbBundle.getMessage(EqualNumberPanel.class, "EqualNumberPanel.minLabel.text")); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
        add(minLabel, gridBagConstraints);

        maxLabel.setFont(new java.awt.Font("Tahoma", 0, 10));
        maxLabel.setText(org.openide.util.NbBundle.getMessage(EqualNumberPanel.class, "EqualNumberPanel.maxLabel.text")); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
        add(maxLabel, gridBagConstraints);
    }// </editor-fold>//GEN-END:initComponents
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel labelValue;
    private javax.swing.JLabel maxLabel;
    private javax.swing.JLabel minLabel;
    private javax.swing.JSpinner valueSpinner;
    // End of variables declaration//GEN-END:variables
}
TOP

Related Classes of org.gephi.ui.filters.plugin.attribute.EqualNumberPanel

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.