package eu.ggnet.saft.sample;
import eu.ggnet.saft.sample.support.SimplePane;
import eu.ggnet.saft.sample.support.BasicApplicationController;
import eu.ggnet.saft.sample.support.PanelWithSelfCloser;
import eu.ggnet.saft.sample.support.UnitViewer;
import eu.ggnet.saft.sample.support.MainPanelAddButtons;
import eu.ggnet.saft.sample.support.PanelAsFrame;
import eu.ggnet.saft.sample.support.PaneAsFrameWithSelfCloser;
import eu.ggnet.saft.sample.support.PaneConsumesIdSupplier;
import eu.ggnet.saft.sample.support.SimpleFxmlController;
import eu.ggnet.saft.sample.support.PanelOnceDialog;
import eu.ggnet.saft.sample.support.PaneAsFrame;
import java.util.Random;
import javax.swing.*;
import eu.ggnet.saft.api.ui.IdSupplier;
import eu.ggnet.saft.core.Ui;
import eu.ggnet.saft.core.UiCore;
import lombok.Value;
/**
* Opening a JavaFX Pane as popup Dialog, blocking the hole application.
*
* @author oliver.guenther
*/
public class OpenWithSwing {
private final static String[] NAMES = {"Hans", "Klaus", "Horst", "Charlotte", "Caroline", "Ivet"};
private final static Random R = new Random();
@Value
public final static class S implements IdSupplier {
private final String id;
@Override
public String id() {
return id;
}
}
public static void main(String[] args) {
UiCore.startSwing(() -> {
MainPanelAddButtons main = new MainPanelAddButtons();
JMenu menu = new JMenu("SwingDialogs");
JMenuItem b = new JMenuItem("Once");
b.addActionListener((e) -> Ui.exec(Ui.openSwing(PanelOnceDialog.class)));
menu.add(b);
b = new JMenuItem("Multiple : 1");
b.addActionListener((e) -> Ui.exec(Ui.openSwing(UnitViewer.class, "1")));
menu.add(b);
b = new JMenuItem("Multiple : 2");
b.addActionListener((e) -> Ui.exec(Ui.openSwing(UnitViewer.class, " 2")));
menu.add(b);
b = new JMenuItem("Multiple : 3 , with precall");
b.addActionListener((e) -> Ui.exec(Ui
.call(() -> "Das ist der Riesentext für Unit 3")
.openSwing(UnitViewer.class, "3")
));
menu.add(b);
b = new JMenuItem("SelfCloser");
b.addActionListener((e) -> Ui.openSwing(PanelWithSelfCloser.class).exec());
menu.add(b);
main.getMenuBar().add(menu);
menu = new JMenu("SwingFrames");
b = new JMenuItem("Once");
b.addActionListener((e) -> Ui.exec(Ui.openSwing(PanelAsFrame.class)));
menu.add(b);
main.getMenuBar().add(menu);
menu = new JMenu("JavaFxDialogs");
b = new JMenuItem("Once");
b.addActionListener((e) -> Ui.exec(Ui.openFx(SimplePane.class)));
menu.add(b);
b = new JMenuItem("Mutiple 1 with Title");
b.addActionListener((e) -> Ui.exec(Ui.openFx(SimplePane.class, "1")));
menu.add(b);
b = new JMenuItem("Mutiple 2 with Title");
b.addActionListener((e) -> Ui.exec(Ui.openFx(SimplePane.class, "2")));
menu.add(b);
b = new JMenuItem("Once Fxml");
b.addActionListener((e) -> Ui.exec(Ui.openFxml(SimpleFxmlController.class)));
menu.add(b);
main.getMenuBar().add(menu);
b = new JMenuItem("Consumer with Random Id Supplier");
b.addActionListener((e) -> {
Ui.call(() -> new S(NAMES[R.nextInt(NAMES.length)])).openFx(PaneConsumesIdSupplier.class).exec();
});
menu.add(b);
menu = new JMenu("JavaFxFrames");
b = new JMenuItem("Once");
b.addActionListener((e) -> Ui.exec(Ui.openFx(PaneAsFrame.class)));
menu.add(b);
b = new JMenuItem("Once With Self Closer");
b.addActionListener((e) -> Ui.exec(Ui.openFx(PaneAsFrameWithSelfCloser.class)));
menu.add(b);
b = new JMenuItem("Once Fxml");
b.addActionListener((e) -> Ui.exec(Ui.openFxml(BasicApplicationController.class)));
menu.add(b);
main.getMenuBar().add(menu);
return main;
});
// Ui.openSwing(UnitView.class,"12345").exec();
// ui.openSwing(UnitView.class,"12345").prepare((UnitView v) -> v.setValue("lannnger String")).exec();
// JavaFX Pane in Swing Dialog.
}
}