package aliview.aligner; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.io.File; import java.io.IOException; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.swing.border.BevelBorder; import javax.swing.border.EmptyBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import utils.FileUtilities; import aliview.AliViewWindow; import aliview.externalcommands.CommandItem; import aliview.settings.Settings; import javax.swing.JCheckBox; import org.apache.log4j.Logger; public class AliItemPanel extends JPanel{ private static final Logger logger = Logger.getLogger(AliItemPanel.class); JRadioButton radioIsActivated; public AliItemPanel(final CommandItem alignItem){ final JPanel aliItemPanel = this; // this.setPreferredSize(new Dimension(650,100)); // this.setMaximumSize(new Dimension(650,140)); aliItemPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); GridBagLayout gbl_aliItemPanel = new GridBagLayout(); gbl_aliItemPanel.columnWidths = new int[] {0, 100, 400}; gbl_aliItemPanel.rowHeights = new int[] {0, 25, 30}; gbl_aliItemPanel.columnWeights = new double[]{0.0, 0.0, 1.0}; gbl_aliItemPanel.rowWeights = new double[]{0.0, 0.0, 1.0}; aliItemPanel.setLayout(gbl_aliItemPanel); JLabel lblItemName = new JLabel("Display name:"); lblItemName.setHorizontalAlignment(SwingConstants.LEFT); GridBagConstraints gbc_lblItemName = new GridBagConstraints(); gbc_lblItemName.anchor = GridBagConstraints.WEST; gbc_lblItemName.insets = new Insets(0, 0, 5, 5); gbc_lblItemName.gridx = 1; gbc_lblItemName.gridy = 0; add(lblItemName, gbc_lblItemName); JLabel lblProgram = new JLabel("Program:"); lblProgram.setHorizontalAlignment(SwingConstants.LEFT); GridBagConstraints gbc_lblProgram = new GridBagConstraints(); gbc_lblProgram.fill = GridBagConstraints.HORIZONTAL; gbc_lblProgram.insets = new Insets(0, 0, 5, 0); gbc_lblProgram.gridx = 2; gbc_lblProgram.gridy = 0; aliItemPanel.add(lblProgram, gbc_lblProgram); radioIsActivated = new JRadioButton(""); GridBagConstraints gbc_radioIsActivated = new GridBagConstraints(); gbc_radioIsActivated.fill = GridBagConstraints.VERTICAL; gbc_radioIsActivated.insets = new Insets(0, 0, 5, 5); gbc_radioIsActivated.gridx = 0; gbc_radioIsActivated.gridy = 1; radioIsActivated.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { JRadioButton rbtn = (JRadioButton) e.getSource(); alignItem.setActivated(rbtn.isSelected()); //alignItem.getAddAlignCmd().setActivated(rbtn.isSelected()); } }); aliItemPanel.add(radioIsActivated, gbc_radioIsActivated); JTextField txtCommandName = new JTextField(); txtCommandName.setText("mafft"); GridBagConstraints gbc_txtCommandName = new GridBagConstraints(); gbc_txtCommandName.insets = new Insets(0, 0, 5, 5); gbc_txtCommandName.fill = GridBagConstraints.BOTH; gbc_txtCommandName.gridx = 1; gbc_txtCommandName.gridy = 1; aliItemPanel.add(txtCommandName, gbc_txtCommandName); txtCommandName.setColumns(10); txtCommandName.addFocusListener(new FocusListener() { public void focusLost(FocusEvent e) { JTextField txt = (JTextField) e.getSource(); alignItem.setName(txt.getText()); //alignItem.getAddAlignCmd().setName(txt.getText()); } public void focusGained(FocusEvent e) { } }); JPanel panel_1 = new JPanel(); GridBagConstraints gbc_panel_1 = new GridBagConstraints(); gbc_panel_1.insets = new Insets(0, 0, 5, 0); gbc_panel_1.fill = GridBagConstraints.BOTH; gbc_panel_1.gridx = 2; gbc_panel_1.gridy = 1; aliItemPanel.add(panel_1, gbc_panel_1); GridBagLayout gbl_panel_1 = new GridBagLayout(); gbl_panel_1.columnWidths = new int[] {400, 70}; gbl_panel_1.rowHeights = new int[] {25}; gbl_panel_1.columnWeights = new double[]{1.0, 0.0}; gbl_panel_1.rowWeights = new double[]{0.0}; panel_1.setLayout(gbl_panel_1); final JTextField txtProgramFile = new JTextField(); GridBagConstraints gbc_txtfilemafft = new GridBagConstraints(); gbc_txtfilemafft.fill = GridBagConstraints.HORIZONTAL; gbc_txtfilemafft.insets = new Insets(0, 0, 0, 5); gbc_txtfilemafft.gridx = 0; gbc_txtfilemafft.gridy = 0; panel_1.add(txtProgramFile, gbc_txtfilemafft); txtProgramFile.setColumns(10); txtProgramFile.addFocusListener(new FocusListener() { public void focusLost(FocusEvent e){ JTextField txt = (JTextField) e.getSource(); alignItem.setProgramPath(txt.getText()); } public void focusGained(FocusEvent e) { } }); JButton btnBrowseProgram = new JButton("Browse"); btnBrowseProgram.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ String suggestedDir = txtProgramFile.getText(); File suggestedFile = new File(suggestedDir); File selectedFile = FileUtilities.selectOpenFileViaChooser(suggestedFile,aliItemPanel); // check result if(selectedFile != null){ txtProgramFile.setText(selectedFile.getAbsolutePath()); alignItem.setProgramPath(selectedFile.getAbsolutePath()); Settings.putExternalCommandFileDirectory(selectedFile.getAbsolutePath()); } } }); GridBagConstraints gbc_btnBrowseProgram = new GridBagConstraints(); gbc_btnBrowseProgram.insets = new Insets(0, 0, 0, 5); gbc_btnBrowseProgram.anchor = GridBagConstraints.NORTHWEST; gbc_btnBrowseProgram.gridx = 1; gbc_btnBrowseProgram.gridy = 0; panel_1.add(btnBrowseProgram, gbc_btnBrowseProgram); JLabel lblCommandParameters = new JLabel("Command parameters:"); lblCommandParameters.setHorizontalAlignment(SwingConstants.LEFT); GridBagConstraints gbc_lblCommandParameters = new GridBagConstraints(); gbc_lblCommandParameters.fill = GridBagConstraints.VERTICAL; gbc_lblCommandParameters.insets = new Insets(0, 0, 0, 5); gbc_lblCommandParameters.gridx = 1; gbc_lblCommandParameters.gridy = 2; aliItemPanel.add(lblCommandParameters, gbc_lblCommandParameters); JTextArea txtCommand = new JTextArea(); txtCommand.setLineWrap(true); txtCommand.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null)); txtCommand.setRows(2); GridBagConstraints gbc_txtCommand = new GridBagConstraints(); gbc_txtCommand.fill = GridBagConstraints.BOTH; gbc_txtCommand.gridx = 2; gbc_txtCommand.gridy = 2; aliItemPanel.add(txtCommand, gbc_txtCommand); txtCommand.setColumns(10); txtCommand.addFocusListener(new FocusListener() { public void focusLost(FocusEvent e){ JTextArea txt = (JTextArea) e.getSource(); alignItem.setCommand(txt.getText()); } public void focusGained(FocusEvent e) { } }); logger.info("this"+this); logger.info("alignItem"+alignItem); logger.info("alignItem.getName()"+alignItem.getName()); txtCommandName.setText(alignItem.getName()); txtProgramFile.setText(alignItem.getProgramPath()); txtCommand.setText(alignItem.getCommand()); radioIsActivated.setSelected(alignItem.isActivated()); } public JRadioButton getRadioIsActivated() { return radioIsActivated; } }