/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
*/
package jalview.gui;
-import jalview.api.structures.JalviewStructureDisplayI;
-import jalview.datamodel.SequenceGroup;
-import jalview.io.JalviewFileChooser;
-import jalview.jbgui.GUserDefinedColours;
-import jalview.schemes.ColourSchemeI;
-import jalview.schemes.ResidueProperties;
-import jalview.schemes.UserColourScheme;
-import jalview.util.ColorUtils;
-import jalview.util.MessageManager;
-
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
+import jalview.api.structures.JalviewStructureDisplayI;
+import jalview.datamodel.SequenceGroup;
+import jalview.io.JalviewFileChooser;
+import jalview.jbgui.GUserDefinedColours;
+import jalview.schemes.ColourSchemeI;
+import jalview.schemes.ResidueProperties;
+import jalview.schemes.UserColourScheme;
+import jalview.util.ColorUtils;
+import jalview.util.MessageManager;
+
/**
* This panel allows the user to assign colours to Amino Acid residue codes, and
* save the colour scheme.
@Override
protected void okButton_actionPerformed(ActionEvent e)
{
- applyButton_actionPerformed(null);
-
- try
+ if (isNoSelectionMade())
{
- frame.setClosed(true);
- } catch (Exception ex)
+ JOptionPane.showMessageDialog(Desktop.desktop, MessageManager
+ .getString("label.no_colour_selection_in_scheme"),
+ MessageManager.getString("label.no_colour_selection_warn"),
+ JOptionPane.WARNING_MESSAGE);
+ }
+ else
{
+ applyButton_actionPerformed(null);
+
+ try
+ {
+ frame.setClosed(true);
+ } catch (Exception ex)
+ {
+ }
}
}
/**
+ * Returns true if the user has not made any colour selection (including if
+ * 'case-sensitive' selected and no lower-case colour chosen).
+ *
+ * @return
+ */
+ protected boolean isNoSelectionMade()
+ {
+ final boolean noUpperCaseSelected = upperCaseButtons == null
+ || upperCaseButtons.isEmpty();
+ final boolean noLowerCaseSelected = caseSensitive.isSelected()
+ && (lowerCaseButtons == null || lowerCaseButtons.isEmpty());
+ final boolean noSelectionMade = noUpperCaseSelected || noLowerCaseSelected;
+ return noSelectionMade;
+ }
+
+ /**
* DOCUMENT ME!
*
* @param e
@Override
protected void applyButton_actionPerformed(ActionEvent e)
{
- UserColourScheme ucs = getSchemeFromButtons();
+ if (isNoSelectionMade())
+ {
+ JOptionPane.showMessageDialog(Desktop.desktop,
+ MessageManager.getString("label.no_colour_selection_in_scheme"),MessageManager.getString("label.no_colour_selection_warn"),
+ JOptionPane.WARNING_MESSAGE);
+
+ }
+ UserColourScheme ucs = getSchemeFromButtons();
ucs.setName(schemeName.getText());
if (seqGroup != null)
Color[] newColours = new Color[24];
- for (int i = 0; i < 24; i++)
- {
- JButton button = upperCaseButtons.get(i);
- newColours[i] = button.getBackground();
+ int length = upperCaseButtons.size();
+ if (length<24){
+ int i = 0;
+ for (JButton btn:upperCaseButtons){
+ newColours[i] = btn.getBackground();
+ i++;
+ }
+ }else{
+ for (int i = 0; i < 24; i++){
+ JButton button = upperCaseButtons.get(i);
+ newColours[i] = button.getBackground();
+ }
}
UserColourScheme ucs = new UserColourScheme(newColours);
if (caseSensitive.isSelected())
{
newColours = new Color[23];
- for (int i = 0; i < 23; i++)
- {
- JButton button = lowerCaseButtons.get(i);
- newColours[i] = button.getBackground();
+ length = lowerCaseButtons.size();
+ if (length<23){
+ int i = 0;
+ for (JButton btn:lowerCaseButtons){
+ newColours[i] = btn.getBackground();
+ i++;
+ }
+ }else{
+ for (int i = 0; i < 23; i++){
+ JButton button = lowerCaseButtons.get(i);
+ newColours[i] = button.getBackground();
+ }
}
ucs.setLowerCaseColours(newColours);
}
if (ap != null)
{
- ucs.setThreshold(0, ap.av.getIgnoreGapsConsensus());
+ ucs.setThreshold(0, ap.av.isIgnoreGapsConsensus());
}
return ucs;
name = jucs.getColour(i).getName();
if (ResidueProperties.aa3Hash.containsKey(name))
{
- index = ((Integer) ResidueProperties.aa3Hash.get(name))
+ index = ResidueProperties.aa3Hash.get(name)
.intValue();
}
else