package aliview.gui;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.event.ListDataEvent;
import aliview.AliViewWindow;
import aliview.GeneticCode;
import aliview.alignment.Alignment;
import aliview.alignment.AlignmentEvent;
import aliview.alignment.AlignmentListener;
import aliview.sequencelist.AlignmentDataEvent;
import aliview.sequencelist.AlignmentDataListener;
import aliview.sequencelist.AlignmentSelectionEvent;
import aliview.sequencelist.AlignmentSelectionListener;
public class TranslationToolPanel extends JPanel implements AlignmentListener, AlignmentDataListener, AlignmentSelectionListener {
private JComboBox readingFrameBox;
private JComboBox genCodeBox;
public TranslationToolPanel(final AliViewWindow aliViewWindow) {
this.setVisible(false);
this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
JToggleButton toggleBtnAACode = new JToggleButton();//("");
toggleBtnAACode.setPreferredSize(new Dimension(32,32));
toggleBtnAACode.setMaximumSize(new Dimension(32,32));
toggleBtnAACode.setToolTipText("Show Amino Acid code (when translated sequence)");
toggleBtnAACode.setIcon(AppIcons.getShowAACodeIcon());
toggleBtnAACode.setModel(aliViewWindow.getAliMenuBar().getShowAACodeButtonModel());
this.add(toggleBtnAACode);
JToggleButton toggleBtnTransOnePos = new JToggleButton();//("");
toggleBtnTransOnePos.setPreferredSize(new Dimension(32,32));
toggleBtnTransOnePos.setMaximumSize(new Dimension(32,32));
toggleBtnTransOnePos.setToolTipText("Show Translation as only one character Amino Acid)");
toggleBtnTransOnePos.setIcon(AppIcons.getTransOnePosIcon());
toggleBtnTransOnePos.setModel(aliViewWindow.getAliMenuBar().getTransOnePosButtonModel());
this.add(toggleBtnTransOnePos);
JToggleButton toggleBtnShowCodon = new JToggleButton();//("");
toggleBtnShowCodon.setPreferredSize(new Dimension(32,32));
toggleBtnShowCodon.setMaximumSize(new Dimension(32,32));
toggleBtnShowCodon.setToolTipText("Show/Hide codon positions on toolbar");
toggleBtnShowCodon.setIcon(AppIcons.getShowCodonIcon());
toggleBtnShowCodon.setModel(aliViewWindow.getAliMenuBar().getDrawCoonPosOnRulerButtonModel());
this.add(toggleBtnShowCodon);
JButton btnCodon1Select = new JButton();
btnCodon1Select.setPreferredSize(new Dimension(32,32));
btnCodon1Select.setMaximumSize(new Dimension(32,32));
btnCodon1Select.setToolTipText("Set selection as coding 1-2-3");
btnCodon1Select.setIcon(AppIcons.getCoding1Icon());
btnCodon1Select.setModel(aliViewWindow.getAliMenuBar().getCoding0ButtonModel());
this.add(btnCodon1Select);
JButton btnCodon2Select = new JButton();
btnCodon2Select.setPreferredSize(new Dimension(32,32));
btnCodon2Select.setMaximumSize(new Dimension(32,32));
btnCodon2Select.setToolTipText("Set selection as coding 2-3-1");
btnCodon2Select.setIcon(AppIcons.getCoding2Icon());
btnCodon2Select.setModel(aliViewWindow.getAliMenuBar().getCoding1ButtonModel());
this.add(btnCodon2Select);
JButton btnCodon3Select = new JButton();
btnCodon3Select.setPreferredSize(new Dimension(32,32));
btnCodon3Select.setMaximumSize(new Dimension(32,32));
btnCodon3Select.setToolTipText("Set selection as coding 3-1-2");
btnCodon3Select.setIcon(AppIcons.getCoding3Icon());
btnCodon3Select.setModel(aliViewWindow.getAliMenuBar().getCoding2ButtonModel());
this.add(btnCodon3Select);
JButton btnCodonNoneSelect = new JButton();
btnCodonNoneSelect.setPreferredSize(new Dimension(32,32));
btnCodonNoneSelect.setMaximumSize(new Dimension(32,32));
btnCodonNoneSelect.setToolTipText("Set selection as non-coding");
btnCodonNoneSelect.setIcon(AppIcons.getCodingNoneIcon());
btnCodonNoneSelect.setModel(aliViewWindow.getAliMenuBar().getCodingNoneButtonModel());
this.add(btnCodonNoneSelect);
JButton btnCountCodon = new JButton();
btnCountCodon.setPreferredSize(new Dimension(32,32));
btnCountCodon.setMaximumSize(new Dimension(32,32));
btnCountCodon.setToolTipText("Count stop codons");
btnCountCodon.setIcon(AppIcons.getCountCodonIcon());
btnCountCodon.setModel(aliViewWindow.getAliMenuBar().getCountCodonButtonModel());
this.add(btnCountCodon);
Component horizontalStrut_1 = Box.createHorizontalStrut(10);
this.add(horizontalStrut_1);
JLabel lblNewLabel = new JLabel("Reading frame:");
this.add(lblNewLabel);
Integer[] readingFrames = new Integer[]{1,2,3};
readingFrameBox = new JComboBox();
readingFrameBox.setMaximumSize(new Dimension(60, 25));
readingFrameBox.setPreferredSize(new Dimension(40, 25));
for(Integer value: readingFrames){
readingFrameBox.addItem(value);
}
readingFrameBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
JComboBox box = (JComboBox) e.getSource();
Integer selectedFrame = (Integer)box.getSelectedItem();
aliViewWindow.setReadingFrame(selectedFrame.intValue());
}
});
this.add(readingFrameBox);
Component horizontalStrut_2 = Box.createHorizontalStrut(10);
this.add(horizontalStrut_2);
genCodeBox = new JComboBox();
genCodeBox.setMaximumSize(new Dimension(170, 25));
genCodeBox.setPreferredSize(new Dimension(170, 25));
for(GeneticCode value: GeneticCode.allCodesArray){
genCodeBox.addItem(value);
}
genCodeBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
JComboBox box = (JComboBox) e.getSource();
GeneticCode selected = (GeneticCode)box.getSelectedItem();
aliViewWindow.setGeneticCode(selected);
}
});
this.add(genCodeBox);
}
/*
*
*
* AlignmentListener
*
*
*/
public void newSequences(AlignmentEvent alignmentEvent) {
}
public void alignmentMetaChanged(AlignmentEvent alignmentEvent) {
Alignment aliment = alignmentEvent.getSource();
readingFrameBox.setSelectedItem(new Integer(aliment.getReadingFrame()));
genCodeBox.setSelectedItem(aliment.getGeneticCode());
}
//
// AlignmentDataListener
//
public void intervalAdded(ListDataEvent e) {
if(e instanceof AlignmentDataEvent){
contentsChanged((AlignmentDataEvent)e);
}
}
public void intervalRemoved(ListDataEvent e) {
if(e instanceof AlignmentDataEvent){
contentsChanged((AlignmentDataEvent)e);
}
}
public void contentsChanged(ListDataEvent e) {
if(e instanceof AlignmentDataEvent){
contentsChanged((AlignmentDataEvent)e);
}
}
public void contentsChanged(AlignmentDataEvent e) {
}
//
// AlignmentSelectionListener
//
public void selectionChanged(AlignmentSelectionEvent e) {
}
}