package ilarkesto.mda.swingeditor;
import ilarkesto.core.scope.In;
import ilarkesto.core.scope.Init;
import ilarkesto.core.scope.Out;
import ilarkesto.swing.Swing;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Workspace extends JPanel {
@In
SaveAction saveAction;
@In
ProcessAction processAction;
@In
NodeListBarPanel nodeListBarPanel;
@In
NodeValuePanel nodeValuePanel;
@Out
Component dialogParent;
private JPanel actionToolbar;
private Dimension frameSize = Swing.getFractionFromScreen(0.9, 0.8);
@Init
public void init() {
setLayout(new BorderLayout());
actionToolbar = new JPanel(new FlowLayout(FlowLayout.RIGHT));
addAction(saveAction);
addAction(processAction);
add(Swing.createVerticalSplit(nodeListBarPanel, nodeValuePanel, (int) (frameSize.height * 0.8)),
BorderLayout.CENTER);
add(actionToolbar, BorderLayout.SOUTH);
dialogParent = this;
}
public void showJFrame() {
setPreferredSize(frameSize);
final JFrame frame = Swing.showInJFrame(this, "Ilarkesto Model Editor", null, false);
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
final int option = JOptionPane.showConfirmDialog(frame,
"You are exiting the modeller WITHOUT SAVING your changes.", "Exit without saving?",
JOptionPane.OK_CANCEL_OPTION);
if (option == JOptionPane.OK_OPTION) System.exit(0);
}
});
}
public void addAction(Action action) {
JButton button = new JButton(action);
actionToolbar.add(button);
}
}