package org.japura.examples.gui;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.LayoutManager;
public abstract class AbstractExample {
private JFrame frame;
private JPanel rootPanel;
protected JFrame getFrame() {
if (frame == null) {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBackground(Color.WHITE);
}
return frame;
}
public void show() {
getFrame().pack();
getFrame().setLocationRelativeTo(null);
getFrame().setVisible(true);
}
protected JPanel buildRootPanel() {
JPanel panel = new JPanel();
panel.setLayout(buildRootLayout());
panel.setBackground(Color.WHITE);
return panel;
}
protected LayoutManager buildRootLayout() {
return new FlowLayout();
}
protected JPanel getRootPanel() {
if (rootPanel == null) {
rootPanel = buildRootPanel();
rootPanel.add(buildExampleComponent());
}
return rootPanel;
}
protected abstract Component buildExampleComponent();
public void runExample() {
JPanel panel = getRootPanel();
getFrame().add(panel);
show();
}
public void initializeNimbus() {
try {
for (UIManager.LookAndFeelInfo info : UIManager
.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
}
catch (UnsupportedLookAndFeelException e) {
// handle exception
}
catch (ClassNotFoundException e) {
// handle exception
}
catch (InstantiationException e) {
// handle exception
}
catch (IllegalAccessException e) {
// handle exception
}
}
}