package org.isatools.isacreator.assayselection; import org.isatools.isacreator.common.DropDownComponent; import org.isatools.isacreator.common.UIHelper; import org.isatools.isacreator.configuration.RecommendedOntology; import org.isatools.isacreator.effects.components.RoundedJTextField; import org.isatools.isacreator.gui.listeners.propertychange.OntologySelectedEvent; import org.isatools.isacreator.gui.listeners.propertychange.OntologySelectionCancelledEvent; import org.isatools.isacreator.ontologyselectiontool.OntologySelectionTool; import javax.swing.*; import javax.swing.border.EmptyBorder; import javax.swing.text.JTextComponent; import java.awt.*; import java.util.*; import java.util.List; public class CustomAssaySelectionUI extends JPanel implements AssaySelectionInterface { private JTextField measurementField, technologyField, platformField; private JLabel status; public void createGUI() { setLayout(new BorderLayout()); setPreferredSize(new Dimension(750, 510)); JPanel fieldPanel = new JPanel(); fieldPanel.setBorder(new EmptyBorder(90, 90, 90, 90)); fieldPanel.setPreferredSize(new Dimension(300, 250)); fieldPanel.setLayout(new BoxLayout(fieldPanel, BoxLayout.PAGE_AXIS)); JPanel measurementFieldContainer = new JPanel(new GridLayout(1, 2)); measurementField = new RoundedJTextField(8); JComponent measurementOntologyComponent = createField(measurementField); measurementFieldContainer.add(UIHelper.createLabel("Measurement Type")); measurementFieldContainer.add(measurementOntologyComponent); fieldPanel.add(measurementFieldContainer); fieldPanel.add(Box.createVerticalStrut(10)); JPanel technologyFieldContainer = new JPanel(new GridLayout(1, 2)); technologyField= new RoundedJTextField(8); JComponent technologyOntologyComponent = createField(technologyField); technologyFieldContainer.add(UIHelper.createLabel("Technology (optional)")); technologyFieldContainer.add(technologyOntologyComponent); fieldPanel.add(technologyFieldContainer); fieldPanel.add(Box.createVerticalStrut(10)); JPanel platformFieldContainer = new JPanel(new GridLayout(1, 2)); platformFieldContainer.add(UIHelper.createLabel("Platform (optional)")); platformField = new RoundedJTextField(10); UIHelper.renderComponent(platformField, UIHelper.VER_11_BOLD, UIHelper.DARK_GREEN_COLOR, false); platformFieldContainer.add(platformField); fieldPanel.add(platformFieldContainer); status = UIHelper.createLabel("", UIHelper.VER_12_BOLD, UIHelper.RED_COLOR); fieldPanel.add(Box.createVerticalStrut(30)); fieldPanel.add(status); add(fieldPanel, BorderLayout.NORTH); } private JComponent createField(JTextField field) { UIHelper.renderComponent(field, UIHelper.VER_11_BOLD, UIHelper.DARK_GREEN_COLOR, false); return createOntologyDropDown(field, false, false, null); } private JComponent createOntologyDropDown(JTextComponent field, boolean allowsMultiple, boolean forceOntology, Map<String, RecommendedOntology> recommendedOntologySource) { OntologySelectionTool ontologySelectionTool = new OntologySelectionTool(allowsMultiple, forceOntology, recommendedOntologySource); ontologySelectionTool.createGUI(); DropDownComponent dropdown = new DropDownComponent(field, ontologySelectionTool, DropDownComponent.ONTOLOGY); ontologySelectionTool.addPropertyChangeListener("selectedOntology", new OntologySelectedEvent(ontologySelectionTool, dropdown, field)); ontologySelectionTool.addPropertyChangeListener("noSelectedOntology", new OntologySelectionCancelledEvent(ontologySelectionTool, dropdown)); return dropdown; } public boolean valid() { if (measurementField.getText().isEmpty()) { status.setText("A Measurement Type must be provided..."); return false; } status.setText(""); return true; } public List<AssaySelection> getAssaysToDefine() { return Collections.singletonList(new AssaySelection(measurementField.getText(), technologyField.getText(), platformField.getText())); } }