/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package org.jlab.groot.matrix;

import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JSlider;
import net.miginfocom.swing.MigLayout;
import org.jlab.groot.ui.RangeSlider;

/**
 *
 * @author gavalian
 */
public class SparseIndexPane extends JPanel {
    
    int indexRank = 0;
    int[] dimensions = null;
    int   numberOrder = 0;
    
    List  sliders     = new ArrayList();    
    JComboBox       selectionBin = null;
    JComboBox     selectionOrder = null;
    
    JComboBox       selectionBinY = null;
    JComboBox     selectionOrderY = null;
    
    public SparseIndexPane(int[] dims, int vectorSize){
        super();
        dimensions = dims;
        this.setBorder(BorderFactory.createTitledBorder("Grid Index"));        
        this.setLayout(new MigLayout());
        this.numberOrder = vectorSize;
        initUI();
    }
    
    private void initUI(){
        
        for(int i = 0; i < dimensions.length; i++){
            //JSlider sl = new JSlider(JSlider.HORIZONTAL,
            //        0, dimensions[i]-1, 0);
            RangeSlider sl = new RangeSlider(
                    0, dimensions[i]-1);
            sl.setUpperValue(dimensions[i]-1);
            sl.setValue(0);
            
            sl.setMajorTickSpacing(2);
            sl.setMinorTickSpacing(1);
            sl.setPaintTicks(true);
            sl.setPaintLabels(true);
            sl.setSnapToTicks(true);
            sliders.add(sl);
            
            this.add(new JLabel("DIM "+i +" : "));
            this.add(sl,"wrap, pushx, growx");

        }
        
        String[] choises = new String[dimensions.length];
        String[] choisesOrder = new String[this.numberOrder];

        for(int i = 0; i < choises.length; i++) choises[i] = (new Integer(i)).toString();
        this.selectionBin = new JComboBox(choises);


        for(int i = 0; i < this.numberOrder; i++) choisesOrder[i] = (new Integer(i)).toString();
        
        this.selectionOrder = new JComboBox(choisesOrder);
        this.add(new JLabel(""));
        this.add( new JSeparator(),"wrap, pushx, growx");
        this.add(new JLabel("X dimension : "));
        this.add(this.selectionBin,"split 3, growx");
        this.add(new JLabel("Vector : "));
        this.add(this.selectionOrder,"growx");
        
        
/*        this.add(this.selectionBin," wrap, pushx, growx");
        this.add(new JLabel("Vector : "));
        this.add(this.selectionOrder," wrap, pushx, growx");        
*/
    }
    
    public int[] getBins(){
        int[] index = new int[this.sliders.size()];
        for(int i = 0; i < index.length;i++) index[i] = sliders.get(i).getValue();
        return index;
    }
    
    public int[] getBinsMin(){
        int[] index = new int[this.sliders.size()];
        for(int i = 0; i < index.length;i++) index[i] = sliders.get(i).getValue();
        return index;
    }
    
    public int[] getBinsMax(){
        int[] index = new int[this.sliders.size()];
        for(int i = 0; i < index.length;i++) index[i] = sliders.get(i).getUpperValue();
        return index;
    }
    
    
    public int getSelectedBin(){
        String token = (String) this.selectionBin.getSelectedItem();
        return Integer.parseInt(token);
    }
    
    public int getSelectedOrder(){
        String token = (String) this.selectionOrder.getSelectedItem();
        return Integer.parseInt(token);
    }
    
    public static void main(String[] args){
        JFrame frame = new JFrame();
        SparseIndexPane pane = new SparseIndexPane(new int[]{10,15,20},2);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(pane);
        frame.pack();
        frame.setVisible(true);
    }
    
}

 

Ads help maintain this website.