package de.hhu.ba.yoshikoWrapper.gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import org.cytoscape.application.CyApplicationManager; import org.cytoscape.model.CyColumn; import org.cytoscape.model.CyNetwork; import de.hhu.ba.yoshikoWrapper.core.Core; @SuppressWarnings("serial") //will never be serialized public class ColumnMapper extends ComfortPanel{ //Symbolic links private CyApplicationManager cy; //Swing components private JComboBox<CyColumn> editingCostMapper; private JComboBox<CyColumn> permanentMapper; private JComboBox<CyColumn> forbiddenMapper; private JCheckBox useMappingCost; private JCheckBox useMappingPerm; private JCheckBox useMappingForb; private JButton updateColumns; public ColumnMapper() { this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS)); cy = Core.getApplicationManager(); //SWING COMPONENTS editingCostMapper = new JComboBox<CyColumn>(); permanentMapper = new JComboBox<CyColumn>(); forbiddenMapper = new JComboBox<CyColumn>(); useMappingCost = new JCheckBox("Map modification costs"); useMappingPerm = new JCheckBox("Map edges as permanent"); useMappingForb = new JCheckBox("Map edges as forbidden"); updateColumns = new JButton("Update Columns!"); this.addAll(useMappingCost,editingCostMapper,useMappingPerm,permanentMapper,useMappingForb,forbiddenMapper,updateColumns); //Initial call to get table values updateValues(); //Add a focus listener to update values updateColumns.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { updateValues(); //shitty temporary solution } }); } public void updateValues() { CyNetwork net = cy.getCurrentNetwork(); if (net != null) { //Check if a network is loaded //Clear entries editingCostMapper.removeAllItems(); for (CyColumn c : net.getDefaultEdgeTable().getColumns()){ //Only add columns with numeric values if (c.getType() == Integer.class || c.getType() == Double.class) { editingCostMapper.addItem(c); } } forbiddenMapper.removeAllItems(); for (CyColumn c : net.getDefaultEdgeTable().getColumns()){ //Only add columns with boolean values if (c.getType() == Boolean.class) { forbiddenMapper.addItem(c); } } permanentMapper.removeAllItems(); for (CyColumn c : net.getDefaultEdgeTable().getColumns()){ //Only add columns with boolean values if (c.getType() == Boolean.class) { permanentMapper.addItem(c); } } } } public CyColumn getEditingCostColumn() { if (useMappingCost.isSelected()) { return editingCostMapper.getItemAt(editingCostMapper.getSelectedIndex()); } return null; } public CyColumn getForbiddenColumn() { if (useMappingForb.isSelected()) { return forbiddenMapper.getItemAt(forbiddenMapper.getSelectedIndex()); } return null; } public CyColumn getPermanentColumn() { if (useMappingPerm.isSelected()) { return permanentMapper.getItemAt(permanentMapper.getSelectedIndex()); } return null; } }