public void analyze(String name, Object data) { if (!(data instanceof SequenceGroup)) { ErrorWindow.showErrorWindow( new Exception("Got a non-sequencegroup object for a dot plot analysis")); } SequenceGroup sg = (SequenceGroup) data; currentSG = sg; titleLabel.setText(name); DefaultComboBoxModel cModel1 = new DefaultComboBoxModel(); DefaultComboBoxModel cModel2 = new DefaultComboBoxModel(); for (int j = 0; j < sg.size(); j++) { cModel1.addElement(sg.get(j).getName()); cModel2.addElement(sg.get(j).getName()); } seq1Box.setModel(cModel1); seq2Box.setModel(cModel2); seq1Box.setSelectedIndex(0); seq2Box.setSelectedIndex(1); dotPlot.setBlockWidth((Integer) blockWidthSpinner.getValue()); changeSequences(); }
protected void changeSequences() { String name1 = (String) seq1Box.getSelectedItem(); Sequence seq1 = currentSG.getSequenceForName(name1); if (revComp1Box.isSelected()) { seq1 = seq1.getReverseComplement(); seq1.setName(name1); } String name2 = (String) seq2Box.getSelectedItem(); Sequence seq2 = currentSG.getSequenceForName(name2); if (revComp2Box.isSelected()) { seq2 = seq2.getReverseComplement(); seq2.setName(name2); } dotPlot.setSequences(seq1, seq2); repaint(); }
private void initializeComponents() { mainPanel = new JPanel(); mainScrollPane = new JScrollPane(mainPanel); mainPanel.setLayout(new BorderLayout()); mainPanel.setMinimumSize(new Dimension(300, 300)); mainPanel.setBackground(Color.white); mainScrollPane.setBackground(Color.white); this.setLayout(new BorderLayout()); this.add(mainScrollPane, BorderLayout.CENTER); JPanel leftPanel = new JPanel(); leftPanel.setBackground(Color.white); leftPanel.setMinimumSize(new Dimension(200, 10)); leftPanel.setPreferredSize(new Dimension(200, 10)); mainPanel.add(leftPanel, BorderLayout.WEST); leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS)); titleLabel = new JLabel(); titleLabel.setAlignmentX(RIGHT_ALIGNMENT); leftPanel.add(Box.createVerticalStrut(10)); leftPanel.add(titleLabel); JPanel buttonPanel = new JPanel(); buttonPanel.setOpaque(false); buttonPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); JButton saveButton = new JButton("Save"); saveButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { saveImage(); } }); buttonPanel.add(saveButton); JButton restoreButton = new JButton("Restore"); restoreButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { restoreDefaultBounds(); } }); buttonPanel.add(restoreButton); JButton zoomButton = new JButton("Zoom"); zoomButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { zoomSelectedBounds(); } }); buttonPanel.add(zoomButton); leftPanel.add(buttonPanel); leftPanel.add(Box.createVerticalStrut(50)); seq1Box = new JComboBox(); seq1Box.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { changeSequences(); } }); leftPanel.add(seq1Box); seq1Box.setPreferredSize(new Dimension(180, 24)); seq1Box.setMaximumSize(new Dimension(Integer.MAX_VALUE, 28)); seq1Box.setAlignmentX(RIGHT_ALIGNMENT); revComp1Box = new JCheckBox("Use reverse complement"); revComp1Box.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent evt) { changeSequences(); } }); revComp1Box.setAlignmentX(RIGHT_ALIGNMENT); leftPanel.add(revComp1Box); leftPanel.add(Box.createVerticalStrut(10)); seq2Box = new JComboBox(); seq2Box.setPreferredSize(new Dimension(180, 24)); seq2Box.setMaximumSize(new Dimension(Integer.MAX_VALUE, 28)); seq2Box.setAlignmentX(RIGHT_ALIGNMENT); seq2Box.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { changeSequences(); } }); leftPanel.add(seq2Box); revComp2Box = new JCheckBox("Use reverse complement"); revComp2Box.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent evt) { changeSequences(); } }); revComp2Box.setAlignmentX(RIGHT_ALIGNMENT); leftPanel.add(revComp2Box); leftPanel.add(Box.createVerticalStrut(15)); blockWidthSpinner = new JSpinner(); blockWidthSpinner.setModel(new SpinnerNumberModel(3, 1, 100, 1)); blockWidthSpinner.setToolTipText("The number of sites used per rectangle"); blockWidthSpinner.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent e) { updateBlockWidth(); } }); JPanel bwPanel = new JPanel(); bwPanel.setOpaque(false); bwPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); JLabel lab = new JLabel("Block width : "); bwPanel.add(lab); bwPanel.add(blockWidthSpinner); bwPanel.setAlignmentX(RIGHT_ALIGNMENT); leftPanel.add(bwPanel); leftPanel.add(Box.createVerticalGlue()); dotPlot = new DotPlotFigure(); dotPlot.setPreferredSize(new Dimension(300, 300)); mainPanel.add(dotPlot, BorderLayout.CENTER); }
protected void updateBlockWidth() { dotPlot.setBlockWidth((Integer) blockWidthSpinner.getValue()); dotPlot.repaint(); }
protected void restoreDefaultBounds() { dotPlot.restoreDefaultBounds(); }
/** Zoom in to the selection box */ protected void zoomSelectedBounds() { dotPlot.zoomToSelection(); }