package name.admitriev.jhelper.ui;
import com.intellij.openapi.ui.ComboBox;
import net.egork.chelper.task.StreamConfiguration;
import org.jdesktop.swingx.VerticalLayout;
import javax.swing.*;
/**
* Panel for configuration input or output for Task.
*/
public class StreamConfigurationPanel extends JPanel {
private ComboBox<StreamConfiguration.StreamType> type;
private JTextField fileName;
public StreamConfigurationPanel(
StreamConfiguration configuration,
StreamConfiguration.StreamType[] allowedTypes,
String defaultFileName,
SizeChangedListener listener
) {
super(new VerticalLayout());
type = new ComboBox<>(allowedTypes);
type.setSelectedItem(configuration.type);
type.addActionListener(
e -> {
fileName.setVisible(((StreamConfiguration.StreamType) type.getSelectedItem()).hasStringParameter);
if (listener != null) {
listener.sizeChanged();
}
}
);
fileName = new JTextField(configuration.type.hasStringParameter ? configuration.fileName : defaultFileName);
fileName.setVisible(((StreamConfiguration.StreamType) type.getSelectedItem()).hasStringParameter);
add(type);
add(fileName);
}
public StreamConfiguration getStreamConfiguration() {
return new StreamConfiguration((StreamConfiguration.StreamType) type.getSelectedItem(), fileName.getText());
}
@FunctionalInterface
public interface SizeChangedListener {
void sizeChanged();
}
}