package nodebox.client.port;
import nodebox.client.NodeBoxDocument;
import nodebox.node.Port;
import nodebox.ui.Theme;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TextControl extends AbstractPortControl implements ActionListener {
private JTextField textField;
private JButton externalWindowButton;
public TextControl(String nodePath, Port port) {
super(nodePath, port);
setLayout(new BorderLayout(0, 0));
textField = new JTextField();
textField.putClientProperty("JComponent.sizeVariant", "small");
textField.setFont(Theme.SMALL_BOLD_FONT);
textField.addActionListener(this);
externalWindowButton = new JButton("...");
externalWindowButton.putClientProperty("JComponent.sizeVariant", "small");
externalWindowButton.putClientProperty("JButton.buttonType", "gradient");
externalWindowButton.setFont(Theme.SMALL_BOLD_FONT);
externalWindowButton.addActionListener(this);
add(textField, BorderLayout.CENTER);
add(externalWindowButton, BorderLayout.EAST);
setValueForControl(port.getValue());
}
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
textField.setEnabled(enabled);
externalWindowButton.setEnabled(enabled);
}
public void setValueForControl(Object v) {
textField.setText(v.toString());
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == textField) {
setPortValue(textField.getText());
} else if (e.getSource() == externalWindowButton) {
NodeBoxDocument doc = NodeBoxDocument.getCurrentDocument();
if (doc == null) throw new RuntimeException("No current active document.");
// TextWindow window = new TextWindow(port);
// window.setLocationRelativeTo(this);
// window.setVisible(true);
// doc.addPortEditor(window);
}
}
}