package org.kevoree.library.javase.latex;
import org.kevoree.annotation.*;
import org.kevoree.framework.AbstractComponentType;
import org.kevoree.framework.MessagePort;
import org.kevoree.framework.message.StdKevoreeMessage;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.UUID;
/**
* User: Erwan Daubert - erwan.daubert@gmail.com
* Date: 22/11/11
* Time: 20:51
*
* @author Erwan Daubert
* @version 1.0
*/
@Provides({
@ProvidedPort(name = "callback", type = PortType.MESSAGE)
})
@Requires({
@RequiredPort(name = "compile", type = PortType.MESSAGE, optional = true),
@RequiredPort(name = "clean", type = PortType.MESSAGE, optional = true)
})
@Library(name = "JavaSE")
@ComponentType
public class LatexCompilerTester extends AbstractComponentType {
private MyFrame frame = null;
@Start
public void start () {
frame = new MyFrame("compile", "clean");
frame.setVisible(true);
}
@Stop
public void stop () {
frame.dispose();
frame = null;
}
@Update
public void update () {
}
@Port(name = "callback")
public void callback (Object message) {
if (message instanceof StdKevoreeMessage) {
for (String key : ((StdKevoreeMessage) message).getKeys()) {
System.out.println(key + ":" + ((StdKevoreeMessage) message).getValue(key));
}
}
}
private class MyFrame extends JFrame {
private JButton on, off;
private String onText;
private String offText;
// private JTextPane screen;
// private JTextArea inputTextField;
public MyFrame (final String onText, final String offText) {
this.onText = onText;
this.offText = offText;
//setPreferredSize(new Dimension(SWITCH_WIDTH, SWITCH_HEIGHT));
//setLayout(new FlowLayout());
on = new JButton(onText);
on.addActionListener(new ActionListener() {
@Override
public void actionPerformed (ActionEvent e) {
if (isPortBinded("compile")) {
StdKevoreeMessage msg = new StdKevoreeMessage();
msg.putValue("id", UUID.randomUUID());
msg.putValue("file", "/home/edaubert/Documents/these/articles/CCGrid2012/CCGrid2012.tex");
getPortByName("compile", MessagePort.class).process(msg);
}
}
});
off = new JButton(offText);
off.addActionListener(new ActionListener() {
@Override
public void actionPerformed (ActionEvent e) {
if (isPortBinded("clean")) {
StdKevoreeMessage msg = new StdKevoreeMessage();
msg.putValue("id", UUID.randomUUID());
msg.putValue("file", "/home/edaubert/Documents/these/articles/CCGrid2012/CCGrid2012.tex");
getPortByName("clean", MessagePort.class).process(msg);
}
}
});
ButtonGroup bg = new ButtonGroup();
bg.add(on);
bg.add(off);
setLayout(new FlowLayout());
add(on);
add(off);
// add(screen);
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
pack();
setVisible(true);
}
@Override
public void repaint () {
on.setText(onText);
off.setText(offText);
super.repaint();
}
/**
* @param onText the onText to set
*/
public final void setOnText (String onText) {
this.onText = onText;
}
/**
* @param offText the offText to set
*/
public final void setOffText (String offText) {
this.offText = offText;
}
}
}