package org.geogebra.desktop.gui.util;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.SystemColor;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import org.geogebra.common.main.App;
public class LayoutUtil {
private static int defaultHgap = 2;
private static int defaultVgap = 3;
public static JPanel flowPanel(Component... comps) {
JPanel p = new JPanel(
new FlowLayout(FlowLayout.LEFT, defaultHgap, defaultVgap));
for (Component comp : comps) {
p.add(comp);
}
return p;
}
// testing left-right support
public static JPanel flowPanel2(App app, Component... comps) {
JPanel p = new JPanel(
new FlowLayout(FlowLayout.LEFT, defaultHgap, defaultVgap));
if (!app.getLocalization().isRightToLeftReadingOrder()) {
for (int i = 0; i < comps.length; i++) {
p.add(comps[i]);
}
} else {
for (int i = comps.length - 1; i >= 0; i--) {
p.add(comps[i]);
}
}
return p;
}
public static JPanel flowPanel(int tab, Component... comps) {
JPanel p = new JPanel(
new FlowLayout(FlowLayout.LEFT, defaultHgap, defaultVgap));
p.add(Box.createHorizontalStrut(tab));
for (Component comp : comps) {
p.add(comp);
}
return p;
}
public static JPanel flowPanel(int hgap, int vgap, int tab,
Component... comps) {
JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT, hgap, vgap));
p.add(Box.createHorizontalStrut(tab));
for (Component comp : comps) {
p.add(comp);
}
return p;
}
public static JPanel flowPanelCenter(int hgap, int vgap, int tab,
Component... comps) {
JPanel p = new JPanel(new FlowLayout(FlowLayout.CENTER, hgap, vgap));
p.add(Box.createHorizontalStrut(tab));
for (Component comp : comps) {
p.add(comp);
}
return p;
}
public static JPanel flowPanelCenter(int hgap, int vgap, int tab,
Color bgColor, Component... comps) {
JPanel p = new JPanel(new FlowLayout(FlowLayout.CENTER, hgap, vgap));
p.add(Box.createHorizontalStrut(tab));
for (Component comp : comps) {
p.add(comp);
}
p.setBackground(bgColor);
return p;
}
public static JPanel flowPanelRight(int hgap, int vgap, int tab,
Component... comps) {
JPanel p = new JPanel(new FlowLayout(FlowLayout.RIGHT, hgap, vgap));
p.add(Box.createHorizontalStrut(tab));
for (Component comp : comps) {
p.add(comp);
}
return p;
}
public static Border titleBorder(String title) {
Border lineBorder = BorderFactory.createCompoundBorder(
BorderFactory.createMatteBorder(0, 0, 1, 0,
SystemColor.controlLtHighlight),
BorderFactory.createMatteBorder(0, 0, 1, 0,
SystemColor.controlShadow));
Border outsideBorder = BorderFactory.createTitledBorder(lineBorder,
title, TitledBorder.LEADING, TitledBorder.TOP); // ,f,SystemColor.DARK_GRAY);
Border insideBorder = BorderFactory.createEmptyBorder(0, 40, 0, 0);
return BorderFactory.createCompoundBorder(outsideBorder, insideBorder);
}
public static class TitlePanel extends JPanel {
private static final long serialVersionUID = 1L;
public TitlePanel() {
this("");
}
public TitlePanel(String title) {
setLayout((new BoxLayout(this, BoxLayout.Y_AXIS)));
setBorder(titleBorder(title));
}
public void setTitle(String title) {
setBorder(titleBorder(title));
}
}
}