import java.util.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JComponent;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.Dimension;
import java.awt.GridLayout;
public class Formulas extends JPanel
{
private boolean ALLOW_COLUMN_SELECTION = false;
private boolean ALLOW_ROW_SELECTION = true;
static String[] columnName = null;
static String[][] data = null;
static Formulas contentPane;
static JFrame frame;
public Formulas()
{
super(new GridLayout(1,0));
columnName = new String[1];
columnName[0] = "Formula";
int total = production.Ptable.size() +
pattern.Ttable.size() +
ESList.CTable.size();
data = new String[total][1];
int index = 0;
if(grammar.storeOriginals)
{ Iterator vars = (production.Ptable.values()).iterator();
while(vars.hasNext())
{ production p = (production) (vars.next());
data[index][0] = p.formula.toString();
index++;
}
vars = (pattern.Ttable.values()).iterator();
while(vars.hasNext())
{ pattern p = (pattern) (vars.next());
data[index][0] = p.formula.toString();
index++;
}
for(int k = 0; k < ESList.CTable.size(); k++)
{ node n = (node) (ESList.CTable.get(k));
data[index][0] = n.toString();
index++;
}
}
else
{ for(; index < grammar.originals.size(); index++)
{ data[index][0] = (String) grammar.originals.get(index);
}
}
final JTable table = new JTable(data, columnName);
table.setPreferredScrollableViewportSize(new Dimension(500, 250));
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
if (ALLOW_ROW_SELECTION) // true by default
{ ListSelectionModel rowSM = table.getSelectionModel();
rowSM.addListSelectionListener(new ListSelectionListener()
{ public void valueChanged(ListSelectionEvent e)
{
}
});
}
else
{ table.setRowSelectionAllowed(false);
}
if (ALLOW_COLUMN_SELECTION) // false by default
{ table.setColumnSelectionAllowed(true);
ListSelectionModel colSM = table.getColumnModel().getSelectionModel();
colSM.addListSelectionListener(new ListSelectionListener()
{ public void valueChanged(ListSelectionEvent e)
{
}
});
}
// Create the scroll pane and add the table to it
JScrollPane scrollPane = new JScrollPane(table,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
// Add the scroll pane to this panel
add(scrollPane);
}
public static void createAndShowGUI()
{
// Create and set up the window
frame = new JFrame("Propagation Formulas");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// Create and set up the content pane
contentPane = new Formulas();
contentPane.setOpaque(true); // content panes must be opaque
frame.setContentPane(contentPane);
// Display the window
frame.pack();
frame.setVisible(true);
}
}