package com.bc.ceres.swing;
import com.jidesoft.utils.Lm;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import javax.swing.border.EmptyBorder;
import java.awt.BorderLayout;
public class GridGuiTest {
public static void main(String[] args) {
Lm.verifyLicense("Brockmann Consult", "BEAM", "lCzfhklpZ9ryjomwWxfdupxIcuIoCxg2");
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true,
createGridPanel(),
createGridPanel());
JFrame frame = new JFrame(Grid.class.getSimpleName());
frame.getContentPane().add(splitPane, BorderLayout.WEST);
frame.getContentPane().add(createGridPanel(), BorderLayout.CENTER);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(340, 340);
frame.setVisible(true);
}
static JPanel createGridPanel() {
Grid grid = new Grid(4, true) /* {
@Override
protected JCheckBox createHeaderRowSelector() {
TristateCheckBox tristateCheckBox = new TristateCheckBox();
tristateCheckBox.setMixed(true);
tristateCheckBox.set
return tristateCheckBox;
}
@Override
protected void adjustHeaderRowSelector(JCheckBox headerRowSelector, int selectedDataRowCount) {
TristateCheckBox tristateCheckBox = (TristateCheckBox) headerRowSelector;
if (selectedDataRowCount == 0) {
tristateCheckBox.setState(TristateCheckBox.STATE_UNSELECTED);
} else if (selectedDataRowCount == getDataRowCount()) {
tristateCheckBox.setState(TristateCheckBox.STATE_SELECTED);
} else {
tristateCheckBox.setState(TristateCheckBox.STATE_MIXED);
}
System.out.println("tristateCheckBox.state = " + tristateCheckBox.getState());
}
}*/;
grid.getLayout().setTablePadding(4, 2);
grid.getLayout().setColumnFill(1, TableLayout.Fill.HORIZONTAL);
grid.getLayout().setColumnWeightX(1, 1.0);
grid.setHeaderRow(new JLabel("<html><b>Name</b>"),
new JLabel("<html><b>Method</b>"),
new JLabel("<html><b>Parameters</b>"));
ListControlBar gridControlBar = ListControlBar.create(ListControlBar.HORIZONTAL, grid, new GridController(grid));
JPanel panel = new JPanel(new BorderLayout(4, 4));
panel.setBorder(new EmptyBorder(4, 4, 4, 4));
panel.add(new JScrollPane(grid), BorderLayout.CENTER);
panel.add(gridControlBar, BorderLayout.SOUTH);
return panel;
}
static class GridController extends ListControlBar.AbstractListController {
final Grid grid;
final static Object[] valueSet = {genName(), genName(), genName(), genName(), genName()};
private GridController(Grid grid) {
this.grid = grid;
}
@Override
public boolean addRow(int index) {
grid.addDataRow(new JTextField(genName(), 8), new JComboBox<>(valueSet), new JLabel(genName()));
return true;
}
@Override
public boolean removeRows(int[] indices) {
grid.removeDataRows(indices);
return true;
}
@Override
public boolean moveRowUp(int index) {
grid.moveDataRowUp(index);
return true;
}
@Override
public boolean moveRowDown(int index) {
grid.moveDataRowDown(index);
return true;
}
}
public static String genName() {
int n = 3 + (int) (Math.random() * 8);
char[] str = new char[n];
char[] voc = new char[]{'a', 'a', 'a', 'e', 'e', 'e', 'e', 'e', 'i', 'i', 'o', 'o', 'u', 'u', 'y'};
for (int i = 0; i < str.length; i++) {
if (i % 2 == 0) {
str[i] = voc[(int) (Math.random() * voc.length)];
} else {
str[i] = (char) ('a' + (int) (('z' - 'a') * Math.random()));
}
}
str[0] = Character.toUpperCase(str[0]);
return new String(str);
}
}