package test;

import javax.swing.*;
import java.awt.*;

/**

*/

public class SplitPaneSwitchComponentOrientation
  extends JFrame
{
    JLabel status = new JLabel();

    public SplitPaneSwitchComponentOrientation()
    {
        JPanel red = new ColorPanel(Color.RED, "Red");
        JPanel green = new ColorPanel(Color.GREEN, "Green");
        JSplitPane split = new JSplitPane();
        split.setLeftComponent(red);
        split.setRightComponent(green);
        JButton b = new JButton("Switch");
        Container contentPane = getContentPane();
        contentPane.setLayout(new FlowLayout());
        contentPane.add(split);
        contentPane.add(b);
        contentPane.add(status);
        b.addActionListener(e -> switchOrientation(split));
        setBounds(100, 100, 400, 400);
        setVisible(true);
    }

    static class ColorPanel
      extends JPanel
    {
        String name;

        ColorPanel(Color c, String name)
        {
            this.name = name;
            setBackground(c);
            setPreferredSize(new Dimension(100, 100));
        }

        @Override
        public String toString()
        {
            return name;
        }
    }

    void switchOrientation(JSplitPane sp)
    {
        ComponentOrientation co = sp.getComponentOrientation();
        if (co.isLeftToRight()) {
            sp.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        } else {
            sp.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
        }
        StringBuilder sb = new StringBuilder();
        sb.append("Left=");
        sb.append(sp.getLeftComponent());
        sb.append(" Right=");
        sb.append(sp.getRightComponent());
        status.setText(sb.toString());
        System.err.println(sb.toString());
    }

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(SplitPaneSwitchComponentOrientation::new);
    }
}
