package aliview.primer; import java.awt.Color; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.text.DecimalFormat; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.LineBorder; import org.apache.log4j.Logger; public class PrimerPanel extends JPanel { private static final Logger logger = Logger.getLogger(PrimerPanel.class); private Primer primer; private Font baseFont = new Font(Font.MONOSPACED, Font.PLAIN, 10); private LineBorder unselectedBorder = new LineBorder(Color.LIGHT_GRAY); private LineBorder selectedBorder = new LineBorder(Color.DARK_GRAY); private static final DecimalFormat DEC_FORMAT = new DecimalFormat("##.###"); public PrimerPanel(Primer primer) { this.primer = primer; this.setFont(baseFont); GridBagLayout gridBagLayout = new GridBagLayout(); gridBagLayout.columnWidths = new int[]{50, 50, 44, 150, 44, 224, 33, 0, 150, 0}; gridBagLayout.rowHeights = new int[]{50, 0}; gridBagLayout.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE}; gridBagLayout.rowWeights = new double[]{0.0, Double.MIN_VALUE}; setLayout(gridBagLayout); JLabel lblScore = new JLabel("" + primer.getScore()); lblScore.setFont(baseFont); GridBagConstraints gbc_lblScore = new GridBagConstraints(); gbc_lblScore.fill = GridBagConstraints.VERTICAL; gbc_lblScore.insets = new Insets(0, 0, 0, 5); gbc_lblScore.gridx = 0; gbc_lblScore.gridy = 0; add(lblScore, gbc_lblScore); JLabel lblPosition = new JLabel("" + primer.getPosition()); lblPosition.setFont(baseFont); GridBagConstraints gbc_lblPosition = new GridBagConstraints(); gbc_lblPosition.fill = GridBagConstraints.VERTICAL; gbc_lblPosition.insets = new Insets(0, 0, 0, 5); gbc_lblPosition.gridx = 1; gbc_lblPosition.gridy = 0; add(lblPosition, gbc_lblPosition); JLabel lblLength = new JLabel("" + primer.getLength()); lblLength.setFont(new Font("Monospaced", Font.PLAIN, 10)); GridBagConstraints gbc_lblLength = new GridBagConstraints(); gbc_lblLength.insets = new Insets(0, 0, 0, 5); gbc_lblLength.gridx = 2; gbc_lblLength.gridy = 0; add(lblLength, gbc_lblLength); PrimerDisplay primerDisplay = new PrimerDisplay(primer.getSequence()); primerDisplay.addMouseListener(new MouseAdapter() { @Override public void mouseEntered(MouseEvent e) { logger.info("MouseEnter"); } }); GridBagConstraints gbc_primerDisplay = new GridBagConstraints(); gbc_primerDisplay.insets = new Insets(0, 0, 0, 5); gbc_primerDisplay.fill = GridBagConstraints.BOTH; gbc_primerDisplay.gridx = 3; gbc_primerDisplay.gridy = 0; add(primerDisplay, gbc_primerDisplay); JLabel lblGCcontent = new JLabel("" + DEC_FORMAT.format(primer.getGCcontent())); lblGCcontent.setFont(new Font("Monospaced", Font.PLAIN, 10)); GridBagConstraints gbc_lblGCcontent = new GridBagConstraints(); gbc_lblGCcontent.insets = new Insets(0, 0, 0, 5); gbc_lblGCcontent.gridx = 4; gbc_lblGCcontent.gridy = 0; add(lblGCcontent, gbc_lblGCcontent); JLabel lblTm = new JLabel(primer.getBaseStackingTmAsString() + " (avg=" + primer.getBaseStackingAvgTmAsString() + ")" ); lblTm.setFont(baseFont); GridBagConstraints gbc_lblTm = new GridBagConstraints(); gbc_lblTm.fill = GridBagConstraints.VERTICAL; gbc_lblTm.insets = new Insets(0, 0, 0, 5); gbc_lblTm.gridx = 5; gbc_lblTm.gridy = 0; add(lblTm, gbc_lblTm); JLabel lbl3EndDimer = new JLabel("" + primer.get3EndDimerMaxLength()); lbl3EndDimer.setFont(new Font("Monospaced", Font.PLAIN, 10)); GridBagConstraints gbc_lbl3EndDimer = new GridBagConstraints(); gbc_lbl3EndDimer.insets = new Insets(0, 0, 0, 5); gbc_lbl3EndDimer.gridx = 6; gbc_lbl3EndDimer.gridy = 0; add(lbl3EndDimer, gbc_lbl3EndDimer); JLabel lblDimer = new JLabel("" + primer.getDimerMaxLength()); lblDimer.setFont(new Font("Monospaced", Font.PLAIN, 10)); GridBagConstraints gbc_lblDimer = new GridBagConstraints(); gbc_lblDimer.insets = new Insets(0, 0, 0, 5); gbc_lblDimer.gridx = 7; gbc_lblDimer.gridy = 0; add(lblDimer, gbc_lblDimer); JLabel lblSequence = new JLabel(primer.getSequence()); lblSequence.setFont(baseFont); GridBagConstraints gbc_lblSequence = new GridBagConstraints(); gbc_lblSequence.fill = GridBagConstraints.VERTICAL; gbc_lblSequence.gridx = 8; gbc_lblSequence.gridy = 0; add(lblSequence, gbc_lblSequence); } /* public Dimension getPreferredSize() { Dimension prefSize = new Dimension(300,30); return prefSize; } */ public void isSelected(boolean isSelected) { if(isSelected){ this.setBorder(selectedBorder); } else{ this.setBorder(unselectedBorder); } } public Primer getPrimer() { return primer; } }