package jsmith.simplecause1; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import javax.swing.table.*; public class RadioChoicePanel extends JPanel implements ActionListener{ JPanel buttonPanel[] = new JPanel[10]; ButtonGroup buttonGroup[] = new ButtonGroup[10]; JRadioButton causeButton[][] = new JRadioButton[10][10]; JLabel lablesForPanels[] = new JLabel[10]; int numButtonGroups; //A vector of Integers that have the number of options for each group Vector numOptions; int sourceI; int sourceJ; Integer oldValues[] = new Integer[2]; Integer newValues[] = new Integer[2]; Vector titlesForPanels; //int selectionCount; boolean allSelectedFlag; int numberGroups; Vector previouslySelectedPanels; JLabel lables[] = new JLabel[10]; Vector lablesOfOptions; AbstractTableModel stateTable; RadioChoicePanel (int numberOfButtonGroups, Vector numberOfOptions, Vector lables, Vector titles) { allSelectedFlag = false; // selectionCount = 0; previouslySelectedPanels = new Vector(); numberGroups = numberOfButtonGroups; setBackground(Color.white); titlesForPanels = new Vector(); titlesForPanels = titles; stateTable = new DefaultTableModel(10,10); for(int i = 0; i < 10; ++i){ for(int j = 0; j < 10; ++j){ stateTable.setValueAt(new Integer(0), i, j); } } newValues[0] = new Integer(-1); newValues[1] = new Integer(-1); numButtonGroups = numberOfButtonGroups; numOptions = numberOfOptions; lablesOfOptions = lables; setLayout(new GridLayout(numberOfButtonGroups,1)); for(int i = 0; i < numberOfButtonGroups; ++i){ buttonPanel[i] = new JPanel(); buttonPanel[i].setBackground(Color.white); buttonGroup[i] = new ButtonGroup(); // System.out.println("i = " + i); for(int j = 0; j < (int)((Integer)numOptions.elementAt(i)).intValue(); ++j) { causeButton[i][j] = new JRadioButton( (String)((Vector)(lablesOfOptions.elementAt(i))).elementAt(j), false); causeButton[i][j].setBackground(Color.white); causeButton[i][j].addActionListener(this); buttonGroup[i].add(causeButton[i][j]); buttonPanel[i].add(causeButton[i][j]); // System.out.println("j = " + j); } // System.out.println((String)titlesForPanels.elementAt(i)); // add(new JLabel((String)titlesForPanels.elementAt(i))); add(buttonPanel[i]); } } public void actionPerformed(ActionEvent evt){ Object source = evt.getSource(); for(int i = 0; i < numButtonGroups; ++i){ for(int j = 0; j < (int)((Integer)numOptions.elementAt(i)).intValue(); ++ j){ if(source == causeButton[i][j]){ sourceI = i; sourceJ = j; // System.out.println("Source I = " + i + " Source J = " + j); } } } boolean testFlag = false; int holdInt = 0; for(int i = 0; i < previouslySelectedPanels.size(); ++i){ if(((Integer)previouslySelectedPanels.elementAt(i)).intValue() == sourceI){ testFlag = true; // holdInt = i; // System.out.println("test = true"); } } if(testFlag == false){ previouslySelectedPanels.addElement(new Integer(sourceI)); } // selectionCount = selectionCount + 1; oldValues[0] = newValues[0]; oldValues[1] = newValues[1]; newValues[0] = new Integer(sourceI); newValues[1] = new Integer(sourceJ); for(int j = 0; j < 10; ++j){ stateTable.setValueAt(new Integer(0), sourceI, j); } stateTable.setValueAt(new Integer(1), sourceI, sourceJ); // System.out.println("row = " + sourceI); // for(int j = 0; j < 10; ++j){ // System.out.println("value( " + j + ") = " + // stateTable.getValueAt(sourceI, j)); // } if(previouslySelectedPanels.size() > (numberGroups - 1)){ this.firePropertyChange("Option Choosen", oldValues, newValues); } } public TableModel getState(){ return stateTable; } }