- if (cs == null)
- {
- sg.cs = null;
- continue;
- }
-
- if (cs instanceof ClustalxColourScheme)
- {
- sg.cs = new ClustalxColourScheme(sg
- .getSequences(viewport.hiddenRepSequences), sg.getWidth());
- }
- else if (cs instanceof UserColourScheme)
- {
- sg.cs = new UserColourScheme(((UserColourScheme) cs).getColours());
- }
- else
- {
- try
- {
- sg.cs = (ColourSchemeI) cs.getClass().newInstance();
- } catch (Exception ex)
- {
- }
- }
-
- if (viewport.getAbovePIDThreshold()
- || cs instanceof PIDColourScheme
- || cs instanceof Blosum62ColourScheme)
- {
- sg.cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus());
-
- sg.cs.setConsensus(AAFrequency.calculate(sg
- .getSequences(viewport.hiddenRepSequences), sg
- .getStartRes(), sg.getEndRes() + 1));
- }
- else
- {
- sg.cs.setThreshold(0, viewport.getIgnoreGapsConsensus());
- }
-
- if (viewport.getConservationSelected())
- {
- Conservation c = new Conservation("Group",
- ResidueProperties.propHash, 3, sg
- .getSequences(viewport.hiddenRepSequences), sg
- .getStartRes(), sg.getEndRes() + 1);
- c.calculate();
- c.verdict(false, viewport.ConsPercGaps);
- sg.cs.setConservation(c);
- }
- else
- {
- sg.cs.setConservation(null);
- }
- }
- }
-
- if (alignPanel.getOverviewPanel() != null)
- {
- alignPanel.getOverviewPanel().updateOverviewImage();
- }
-
- alignPanel.paintAlignment(true);
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- protected void modifyPID_actionPerformed(ActionEvent e)
- {
- if (viewport.getAbovePIDThreshold()
- && viewport.globalColourScheme != null)
- {
- SliderPanel.setPIDSliderSource(alignPanel, viewport
- .getGlobalColourScheme(), "Background");
- SliderPanel.showPIDSlider();
- }
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- protected void modifyConservation_actionPerformed(ActionEvent e)
- {
- if (viewport.getConservationSelected()
- && viewport.globalColourScheme != null)
- {
- SliderPanel.setConservationSlider(alignPanel,
- viewport.globalColourScheme, "Background");
- SliderPanel.showConservationSlider();
- }
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- protected void conservationMenuItem_actionPerformed(ActionEvent e)
- {
- viewport.setConservationSelected(conservationMenuItem.isSelected());
-
- viewport.setAbovePIDThreshold(false);
- abovePIDThreshold.setSelected(false);
-
- changeColour(viewport.getGlobalColourScheme());
-
- modifyConservation_actionPerformed(null);
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void abovePIDThreshold_actionPerformed(ActionEvent e)
- {
- viewport.setAbovePIDThreshold(abovePIDThreshold.isSelected());
-
- conservationMenuItem.setSelected(false);
- viewport.setConservationSelected(false);
-
- changeColour(viewport.getGlobalColourScheme());
-
- modifyPID_actionPerformed(null);
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void userDefinedColour_actionPerformed(ActionEvent e)
- {
- if (e.getActionCommand().equals("User Defined..."))
- {
- new UserDefinedColours(alignPanel, null);
- }
- else
- {
- UserColourScheme udc = (UserColourScheme) UserDefinedColours
- .getUserColourSchemes().get(e.getActionCommand());
-
- changeColour(udc);
- }
- }
-
- public void updateUserColourMenu()
- {
-
- Component[] menuItems = colourMenu.getMenuComponents();
- int i, iSize = menuItems.length;
- for (i = 0; i < iSize; i++)
- {
- if (menuItems[i].getName() != null
- && menuItems[i].getName().equals("USER_DEFINED"))
- {
- colourMenu.remove(menuItems[i]);
- iSize--;
- }
- }
- if (jalview.gui.UserDefinedColours.getUserColourSchemes() != null)
- {
- java.util.Enumeration userColours = jalview.gui.UserDefinedColours
- .getUserColourSchemes().keys();
-
- while (userColours.hasMoreElements())
- {
- final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem(
- userColours.nextElement().toString());
- radioItem.setName("USER_DEFINED");
- radioItem.addMouseListener(new MouseAdapter()
- {
- public void mousePressed(MouseEvent evt)
- {
- if (evt.isControlDown()
- || SwingUtilities.isRightMouseButton(evt))
- {
- radioItem
- .removeActionListener(radioItem.getActionListeners()[0]);
-
- int option = JOptionPane.showInternalConfirmDialog(
- jalview.gui.Desktop.desktop,
- "Remove from default list?",
- "Remove user defined colour",
- JOptionPane.YES_NO_OPTION);
- if (option == JOptionPane.YES_OPTION)
- {
- jalview.gui.UserDefinedColours
- .removeColourFromDefaults(radioItem.getText());
- colourMenu.remove(radioItem);
- }
- else
- {
- radioItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent evt)
- {
- userDefinedColour_actionPerformed(evt);
- }
- });
- }
- }
- }
- });
- radioItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent evt)
- {
- userDefinedColour_actionPerformed(evt);
- }
- });
-
- colourMenu.insert(radioItem, 15);
- colours.add(radioItem);
- }
- }
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void PIDColour_actionPerformed(ActionEvent e)
- {
- changeColour(new PIDColourScheme());
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void BLOSUM62Colour_actionPerformed(ActionEvent e)
- {
- changeColour(new Blosum62ColourScheme());
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void sortPairwiseMenuItem_actionPerformed(ActionEvent e)
- {
- SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
- AlignmentSorter.sortByPID(viewport.getAlignment(), viewport
- .getAlignment().getSequenceAt(0), null);
- addHistoryItem(new OrderCommand("Pairwise Sort", oldOrder,
- viewport.alignment));
- alignPanel.paintAlignment(true);
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void sortIDMenuItem_actionPerformed(ActionEvent e)
- {
- SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
- AlignmentSorter.sortByID(viewport.getAlignment());
- addHistoryItem(new OrderCommand("ID Sort", oldOrder, viewport.alignment));
- alignPanel.paintAlignment(true);
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void sortLengthMenuItem_actionPerformed(ActionEvent e)
- {
- SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
- AlignmentSorter.sortByLength(viewport.getAlignment());
- addHistoryItem(new OrderCommand("Length Sort", oldOrder,
- viewport.alignment));
- alignPanel.paintAlignment(true);
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void sortGroupMenuItem_actionPerformed(ActionEvent e)
- {
- SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
- AlignmentSorter.sortByGroup(viewport.getAlignment());
- addHistoryItem(new OrderCommand("Group Sort", oldOrder,
- viewport.alignment));
-
- alignPanel.paintAlignment(true);
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void removeRedundancyMenuItem_actionPerformed(ActionEvent e)
- {
- new RedundancyPanel(alignPanel, this);
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void pairwiseAlignmentMenuItem_actionPerformed(ActionEvent e)
- {
- if ((viewport.getSelectionGroup() == null)
- || (viewport.getSelectionGroup().getSize() < 2))
- {
- JOptionPane.showInternalMessageDialog(this,
- "You must select at least 2 sequences.", "Invalid Selection",
- JOptionPane.WARNING_MESSAGE);
- }
- else
- {
- JInternalFrame frame = new JInternalFrame();
- frame.setContentPane(new PairwiseAlignPanel(viewport));
- Desktop.addInternalFrame(frame, "Pairwise Alignment", 600, 500);
- }
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void PCAMenuItem_actionPerformed(ActionEvent e)
- {
- if (((viewport.getSelectionGroup() != null)
- && (viewport.getSelectionGroup().getSize() < 4) && (viewport
- .getSelectionGroup().getSize() > 0))
- || (viewport.getAlignment().getHeight() < 4))
- {
- JOptionPane.showInternalMessageDialog(this,
- "Principal component analysis must take\n"
- + "at least 4 input sequences.",
- "Sequence selection insufficient",
- JOptionPane.WARNING_MESSAGE);
-
- return;
- }
-
- new PCAPanel(alignPanel);
- }
-
- public void autoCalculate_actionPerformed(ActionEvent e)
- {
- viewport.autoCalculateConsensus = autoCalculate.isSelected();
- if (viewport.autoCalculateConsensus)
- {
- viewport.firePropertyChange("alignment", null, viewport
- .getAlignment().getSequences());
- }
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void averageDistanceTreeMenuItem_actionPerformed(ActionEvent e)
- {
- NewTreePanel("AV", "PID", "Average distance tree using PID");
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- public void neighbourTreeMenuItem_actionPerformed(ActionEvent e)
- {
- NewTreePanel("NJ", "PID", "Neighbour joining tree using PID");
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- protected void njTreeBlosumMenuItem_actionPerformed(ActionEvent e)
- {
- NewTreePanel("NJ", "BL", "Neighbour joining tree using BLOSUM62");
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- protected void avTreeBlosumMenuItem_actionPerformed(ActionEvent e)
- {
- NewTreePanel("AV", "BL", "Average distance tree using BLOSUM62");
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param type
- * DOCUMENT ME!
- * @param pwType
- * DOCUMENT ME!
- * @param title
- * DOCUMENT ME!
- */
- void NewTreePanel(String type, String pwType, String title)
- {
- TreePanel tp;
-
- if (viewport.getSelectionGroup() != null)
- {
- if (viewport.getSelectionGroup().getSize() < 3)
- {
- JOptionPane
- .showMessageDialog(
- Desktop.desktop,
- "You need to have more than two sequences selected to build a tree!",
- "Not enough sequences", JOptionPane.WARNING_MESSAGE);
- return;
- }
-
- int s = 0;
- SequenceGroup sg = viewport.getSelectionGroup();
-
- /* Decide if the selection is a column region */
- while (s < sg.getSize())
- {
- if (((SequenceI) sg.getSequences(null).elementAt(s++)).getLength() < sg
- .getEndRes())
- {
- JOptionPane
- .showMessageDialog(
- Desktop.desktop,
- "The selected region to create a tree may\nonly contain residues or gaps.\n"
- + "Try using the Pad function in the edit menu,\n"
- + "or one of the multiple sequence alignment web services.",
- "Sequences in selection are not aligned",
- JOptionPane.WARNING_MESSAGE);
-
- return;
- }
- }
-
- title = title + " on region";
- tp = new TreePanel(alignPanel, type, pwType);
- }
- else
- {
- // are the sequences aligned?
- if (!viewport.alignment.isAligned())
- {
- JOptionPane
- .showMessageDialog(
- Desktop.desktop,
- "The sequences must be aligned before creating a tree.\n"
- + "Try using the Pad function in the edit menu,\n"
- + "or one of the multiple sequence alignment web services.",
- "Sequences not aligned",
- JOptionPane.WARNING_MESSAGE);
-
- return;
- }
-
- if (viewport.alignment.getHeight() < 2)
- {
- return;
- }
-
- tp = new TreePanel(alignPanel, type, pwType);
- }
-
- title += " from ";
-
- if (viewport.viewName != null)
- {
- title += viewport.viewName + " of ";
- }
-
- title += this.title;
-
- Desktop.addInternalFrame(tp, title, 600, 500);
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param title
- * DOCUMENT ME!
- * @param order
- * DOCUMENT ME!
- */
- public void addSortByOrderMenuItem(String title,
- final AlignmentOrder order)
- {
- final JMenuItem item = new JMenuItem("by " + title);
- sort.add(item);
- item.addActionListener(new java.awt.event.ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
-
- // TODO: JBPNote - have to map order entries to curent SequenceI
- // pointers
- AlignmentSorter.sortBy(viewport.getAlignment(), order);