use of com.github.weisj.darklaf.ui.DemoPanel in project darklaf by weisJ.
the class TableDemo method createComponent.
@Override
public JComponent createComponent() {
String[] columns = { "Id", "Name", "Hourly Rate", "Part Time", "Components" };
Object[][] data = { { 1, "John", 40.0, false, "Item" }, { 2, "Rambo", 70.0, false, 10 }, { 3, "Zorro", 60.0, true, "cell" } };
Class<?>[] columnClasses = { Integer.class, String.class, Double.class, Boolean.class, Object.class };
AtomicBoolean editable = new AtomicBoolean(true);
TableModel model = new DefaultTableModel() {
@Override
public int getColumnCount() {
return columns.length;
}
@Override
public int getRowCount() {
return 40;
}
@Override
public Class<?> getColumnClass(final int columnIndex) {
return columnIndex < columnClasses.length ? columnClasses[columnIndex] : Object.class;
}
@Override
public Object getValueAt(final int row, final int column) {
return data[Math.min(row, data.length - 1)][Math.min(column, columns.length - 1)];
}
@Override
public void setValueAt(final Object aValue, final int row, final int column) {
data[Math.min(row, data.length - 1)][Math.min(column, columns.length - 1)] = aValue;
}
@Override
public String getColumnName(final int column) {
return columns[column];
}
@Override
public boolean isCellEditable(final int row, final int column) {
return editable.get();
}
};
JTable table = new JTable(model) {
final TableCellEditor comboEditor = new DarkTableCellEditor(new JComboBox<>());
final TableCellEditor spinnerEditor = new DarkTableCellEditor(new JSpinner());
@Override
public TableCellEditor getCellEditor(final int row, final int column) {
if (row == 0 && column == 4) {
return comboEditor;
} else if (row == 1 && column == 4) {
return spinnerEditor;
} else {
return super.getCellEditor(row, column);
}
}
};
JTableHeader header = table.getTableHeader();
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setBorder(BorderFactory.createEmptyBorder());
DemoPanel panel = new DemoPanel(new OverlayScrollPane(scrollPane), new BorderLayout(), 10);
JPanel controlPanel = panel.addControls(3);
controlPanel.add(new JCheckBox("enabled") {
{
setSelected(table.isEnabled());
addActionListener(e -> table.setEnabled(isSelected()));
}
});
controlPanel.add(new JCheckBox(PropertyKey.EDITABLE) {
{
setSelected(editable.get());
addActionListener(e -> {
editable.set(isSelected());
table.repaint();
});
}
});
controlPanel.add(new JCheckBox("horizontal lines") {
{
setSelected(table.getShowHorizontalLines());
addActionListener(e -> table.setShowHorizontalLines(isSelected()));
}
});
controlPanel.add(new JCheckBox("vertical lines") {
{
setSelected(table.getShowVerticalLines());
addActionListener(e -> table.setShowVerticalLines(isSelected()));
}
});
controlPanel.add(new JCheckBox("LeftToRight") {
{
setSelected(table.getComponentOrientation().isLeftToRight());
addActionListener(e -> table.setComponentOrientation(isSelected() ? ComponentOrientation.LEFT_TO_RIGHT : ComponentOrientation.RIGHT_TO_LEFT));
}
});
controlPanel.add(new JCheckBox(DarkTableUI.KEY_ALTERNATE_ROW_COLOR) {
{
setSelected(PropertyUtil.getBooleanProperty(table, DarkTableUI.KEY_ALTERNATE_ROW_COLOR));
addActionListener(e -> table.putClientProperty(DarkTableUI.KEY_ALTERNATE_ROW_COLOR, isSelected()));
}
});
controlPanel.add(new JCheckBox("reordering") {
{
setSelected(header.getReorderingAllowed());
addActionListener(e -> header.setReorderingAllowed(isSelected()));
}
});
controlPanel.add(new JCheckBox("cell selection") {
{
setSelected(table.getCellSelectionEnabled());
addActionListener(e -> table.setCellSelectionEnabled(isSelected()));
}
});
controlPanel.add(new JCheckBox("column selection") {
{
setSelected(table.getColumnSelectionAllowed());
addActionListener(e -> table.setColumnSelectionAllowed(isSelected()));
table.addPropertyChangeListener(e -> setSelected(table.getColumnSelectionAllowed()));
}
});
controlPanel.add(new JCheckBox("row selection") {
{
setSelected(table.getRowSelectionAllowed());
addActionListener(e -> table.setRowSelectionAllowed(isSelected()));
table.addPropertyChangeListener(e -> setSelected(table.getRowSelectionAllowed()));
}
});
controlPanel.add(new JCheckBox(DarkTableUI.KEY_RENDER_BOOLEAN_AS_CHECKBOX) {
{
setSelected(PropertyUtil.getBooleanProperty(table, DarkTableUI.KEY_RENDER_BOOLEAN_AS_CHECKBOX));
addActionListener(e -> table.putClientProperty(DarkTableUI.KEY_RENDER_BOOLEAN_AS_CHECKBOX, isSelected()));
}
}, "span");
controlPanel.add(new JLabel(DarkTableUI.KEY_BOOLEAN_RENDER_TYPE + ":", JLabel.RIGHT));
controlPanel.add(new JComboBox<String>() {
{
addItem(DarkTableUI.RENDER_TYPE_CHECKBOX);
addItem(DarkTableUI.RENDER_TYPE_RADIOBUTTON);
setSelectedItem(table.getClientProperty(DarkTableUI.KEY_BOOLEAN_RENDER_TYPE));
addItemListener(e -> table.putClientProperty(DarkTableUI.KEY_BOOLEAN_RENDER_TYPE, e.getItem()));
}
});
controlPanel = panel.addControls(3);
controlPanel.add(new JLabel("Row height:"));
controlPanel.add(new JSpinner() {
{
setValue(table.getRowHeight());
addChangeListener(e -> table.setRowHeight(Integer.parseInt(getValue().toString())));
}
});
return panel;
}
use of com.github.weisj.darklaf.ui.DemoPanel in project darklaf by weisJ.
the class TriCheckBoxDemo method createComponent.
@Override
public JComponent createComponent() {
TristateCheckBox button = new TristateCheckBox("Test TriCheckBox");
DemoPanel panel = new DemoPanel(button);
JPanel controlPanel = panel.addControls(1);
controlPanel.add(new JCheckBox("enabled") {
{
setSelected(button.isEnabled());
addActionListener(e -> button.setEnabled(isSelected()));
}
});
controlPanel.add(new JCheckBox("LeftToRight") {
{
setSelected(button.getComponentOrientation().isLeftToRight());
addActionListener(e -> button.setComponentOrientation(isSelected() ? ComponentOrientation.LEFT_TO_RIGHT : ComponentOrientation.RIGHT_TO_LEFT));
}
});
controlPanel.add(new JCheckBox("Rollover") {
{
setSelected(button.isRolloverEnabled());
addActionListener(e -> button.setRolloverEnabled(isSelected()));
}
});
controlPanel.add(new JCheckBox(DarkToggleButtonUI.KEY_IS_TREE_EDITOR) {
{
setSelected(false);
addActionListener(e -> button.putClientProperty(DarkToggleButtonUI.KEY_IS_TREE_EDITOR, isSelected()));
}
});
controlPanel.add(new JCheckBox(DarkToggleButtonUI.KEY_IS_TABLE_EDITOR) {
{
setSelected(false);
addActionListener(e -> button.putClientProperty(DarkToggleButtonUI.KEY_IS_TABLE_EDITOR, isSelected()));
}
});
return panel;
}
use of com.github.weisj.darklaf.ui.DemoPanel in project darklaf by weisJ.
the class IconDemo method createComponent.
@Override
public JComponent createComponent() {
iconPanel = new JPanel(new GridLayout(3, 2, LayoutHelper.getDefaultSpacing(), LayoutHelper.getDefaultSpacing()));
iconPanel.setBorder(LayoutHelper.createEmptyContainerBorder());
UIManager.put("TestIcon.color", new Color(255, 35, 181));
IconLoader iconLoader = IconLoader.get(IconDemo.class);
UIAwareIcon uiAwareImageIcon = iconLoader.getUIAwareIcon("aware_image_icon.png");
UIAwareIcon uiAwareImageIconDual = uiAwareImageIcon.getDual();
UIAwareIcon uiAwareIcon = iconLoader.getUIAwareIcon("aware_icon.svg");
UIAwareIcon uiAwareIconDual = uiAwareIcon.getDual();
Icon themedIcon = iconLoader.getIcon("themed_icon.svg", 16, 16, true);
Icon imageIcon = iconLoader.getIcon("image_icon.png");
iconPanel.add(new JLabel("Aware image icon", uiAwareImageIcon, JLabel.LEFT));
iconPanel.add(new JLabel("Aware image icon (dual)", uiAwareImageIconDual, JLabel.LEFT));
iconPanel.add(new JLabel("Aware svg icon", uiAwareIcon, JLabel.LEFT));
iconPanel.add(new JLabel("Aware svg icon (dual)", uiAwareIconDual, JLabel.LEFT));
iconPanel.add(new JLabel("Themed icon", themedIcon, JLabel.LEFT));
iconPanel.add(new JLabel("Image icon", imageIcon, JLabel.LEFT));
DemoPanel panel = new DemoPanel(iconPanel, new BorderLayout(), 0);
JPanel controlPanel = panel.addControls();
controlPanel.add(new JToggleButton("Light/Dark") {
{
LafManager.addThemeChangeListener((ThemeInstalledListener) e -> setSelected(Theme.isDark(e.getNewTheme())));
putClientProperty("JToggleButton.variant", "slider");
addActionListener(e -> updateAwareIconStyle());
}
});
controlPanel.add(new QuickColorChooser("Themed icon color", UIManager.getColor("TestIcon.color"), this::updateThemedIconColor));
return panel;
}
use of com.github.weisj.darklaf.ui.DemoPanel in project darklaf by weisJ.
the class IconEditorDemo method createComponent.
@Override
public JComponent createComponent() {
IconEditor editor = new IconEditor(AllIconsDemo.loadIcons(16, false).stream().map(p -> new Pair<>(p.getFirst(), p.getSecond())).collect(Collectors.toList()));
DemoPanel panel = new DemoPanel(editor, new BorderLayout(), 0);
JPanel controls = panel.addControls();
controls.add(new JCheckBox("Show add/remove controls") {
{
setSelected(editor.isShowEditorAddRemoveControls());
addActionListener(e -> editor.setShowEditorAddRemoveControls(isSelected()));
}
});
return panel;
}
use of com.github.weisj.darklaf.ui.DemoPanel in project darklaf by weisJ.
the class RotatableIconDemo method createComponent.
@Override
public JComponent createComponent() {
final int size = 25;
RotatableIcon rotateIcon = new RotatableIcon(((DarkSVGIcon) DemoResources.FOLDER_ICON).derive(size, size));
rotateIcon.setOrientation(Alignment.EAST);
JLabel iconLabel = new JLabel(rotateIcon);
DemoPanel panel = new DemoPanel(iconLabel);
Alignment[] orientations = new Alignment[8];
orientations[0] = Alignment.NORTH;
for (int i = 1; i <= 7; i++) {
orientations[i] = orientations[i - 1].clockwise();
}
int spacing = 360 / orientations.length;
JSlider slider = new JSlider(0, (orientations.length - 1) * spacing);
slider.setMajorTickSpacing(spacing);
slider.setSnapToTicks(true);
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setValue(rotateIcon.getOrientation().getIndex() * spacing);
slider.addChangeListener(e -> {
if (!slider.isEnabled())
return;
rotateIcon.setOrientation(orientations[slider.getValue() / spacing]);
iconLabel.repaint();
});
Timer timer = new Timer(1000, e -> {
Alignment orientation = rotateIcon.getOrientation().clockwise();
rotateIcon.setOrientation(orientation);
slider.setValue(orientation.getDegreeAngle());
iconLabel.repaint();
});
timer.setRepeats(true);
JCheckBox checkBox = new JCheckBox("Auto rotate");
checkBox.setSelected(false);
checkBox.addActionListener(e -> {
slider.setEnabled(!checkBox.isSelected());
if (checkBox.isSelected()) {
rotateIcon.setOrientation(Alignment.NORTH);
timer.start();
} else {
timer.stop();
}
});
JComponent controls = panel.addControls(new GridBagLayout());
controls.add(slider);
controls = panel.addControls(Box.createHorizontalBox());
controls.add(checkBox);
controls.add(Box.createHorizontalGlue());
controls = panel.addControls(new BorderLayout());
AtomicReference<Icon> nextIcon = new AtomicReference<>(rotateIcon.getIcon());
JList<AllIconsDemo.NamedIcon<? extends Icon>> list = AllIconsDemo.createIconJList(size);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.addListSelectionListener(e -> nextIcon.set(list.getSelectedValue().getSecond()));
controls.add(new OverlayScrollPane(list));
Box box = Box.createHorizontalBox();
box.add(Box.createHorizontalGlue());
JButton apply = new JButton("Change Icon");
apply.addActionListener(e -> {
rotateIcon.setIcon(nextIcon.get());
iconLabel.repaint();
});
box.add(apply);
box.add(Box.createHorizontalGlue());
controls = panel.addControls(new BorderLayout());
controls.add(box);
return panel;
}
Aggregations