X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FUserDefinedColours.java;h=83a8d24a151545e5f13290b493b36229f933f13c;hb=d559b47886de6427219011e6e355320a0babd757;hp=b182c28a09f1ccd4a44fc5acb37c241a347062f4;hpb=dfb3daaf3d75deda32e7622713ffb759aaadd18c;p=jalview.git diff --git a/src/jalview/gui/UserDefinedColours.java b/src/jalview/gui/UserDefinedColours.java index b182c28..83a8d24 100755 --- a/src/jalview/gui/UserDefinedColours.java +++ b/src/jalview/gui/UserDefinedColours.java @@ -64,7 +64,8 @@ import javax.swing.event.ChangeListener; public class UserDefinedColours extends GUserDefinedColours implements ChangeListener { - private static final Font VERDANA_BOLD_10 = new Font("Verdana", Font.BOLD, 10); + private static final Font VERDANA_BOLD_10 = new Font("Verdana", + Font.BOLD, 10); public static final String USER_DEFINED_COLOURS = "USER_DEFINED_COLOURS"; @@ -100,7 +101,7 @@ public class UserDefinedColours extends GUserDefinedColours implements */ public UserDefinedColours(AlignmentPanel ap, SequenceGroup sg) { - super(); + this(); lcaseColour.setEnabled(false); @@ -109,7 +110,7 @@ public class UserDefinedColours extends GUserDefinedColours implements if (seqGroup != null) { - oldColourScheme = seqGroup.cs; + oldColourScheme = seqGroup.getColourScheme(); } else { @@ -118,7 +119,7 @@ public class UserDefinedColours extends GUserDefinedColours implements if (oldColourScheme instanceof UserColourScheme) { - schemeName.setText(((UserColourScheme) oldColourScheme).getSchemeName()); + schemeName.setText(oldColourScheme.getSchemeName()); if (((UserColourScheme) oldColourScheme).getLowerCaseColours() != null) { caseSensitive.setSelected(true); @@ -141,7 +142,7 @@ public class UserDefinedColours extends GUserDefinedColours implements public UserDefinedColours(JalviewStructureDisplayI viewer, ColourSchemeI oldcs) { - super(); + this(); this.structureViewer = viewer; colorChooser.getSelectionModel().addChangeListener(this); @@ -150,7 +151,8 @@ public class UserDefinedColours extends GUserDefinedColours implements if (oldColourScheme instanceof UserColourScheme) { - schemeName.setText(((UserColourScheme) oldColourScheme).getSchemeName()); + schemeName.setText(((UserColourScheme) oldColourScheme) + .getSchemeName()); } resetButtonPanel(false); @@ -159,6 +161,12 @@ public class UserDefinedColours extends GUserDefinedColours implements } + public UserDefinedColours() + { + super(); + selectedButtons = new ArrayList(); + } + void showFrame() { colorChooser.getSelectionModel().addChangeListener(this); @@ -174,7 +182,15 @@ public class UserDefinedColours extends GUserDefinedColours implements } } - void resetButtonPanel(boolean caseSensitive) + /** + * Rebuilds the panel with coloured buttons for residues. If not case + * sensitive colours, show 3-letter amino acid code as button text. If case + * sensitive, just show the single letter code, in order to make space for the + * additional buttons. + * + * @param isCaseSensitive + */ + void resetButtonPanel(boolean isCaseSensitive) { buttonPanel.removeAll(); @@ -183,23 +199,13 @@ public class UserDefinedColours extends GUserDefinedColours implements upperCaseButtons = new ArrayList(); } - JButton button; - String label; for (int i = 0; i < 20; i++) { - if (caseSensitive) - { - label = ResidueProperties.aa[i]; - } - else - { - label = ResidueProperties.aa2Triplet.get(ResidueProperties.aa[i]) - .toString(); - } - - button = makeButton(label, ResidueProperties.aa[i], upperCaseButtons, - i); - + String label = isCaseSensitive ? ResidueProperties.aa[i] + : ResidueProperties.aa2Triplet.get(ResidueProperties.aa[i]) + .toString(); + JButton button = makeButton(label, ResidueProperties.aa[i], + upperCaseButtons, i); buttonPanel.add(button); } @@ -208,7 +214,7 @@ public class UserDefinedColours extends GUserDefinedColours implements buttonPanel.add(makeButton("X", "X", upperCaseButtons, 22)); buttonPanel.add(makeButton("Gap", "-", upperCaseButtons, 23)); - if (!caseSensitive) + if (!isCaseSensitive) { gridLayout.setRows(6); gridLayout.setColumns(4); @@ -228,14 +234,14 @@ public class UserDefinedColours extends GUserDefinedColours implements { int row = i / cols + 1; int index = (row * cols) + i; - button = makeButton(ResidueProperties.aa[i].toLowerCase(), + JButton button = makeButton(ResidueProperties.aa[i].toLowerCase(), ResidueProperties.aa[i].toLowerCase(), lowerCaseButtons, i); buttonPanel.add(button, index); } } - if (caseSensitive) + if (isCaseSensitive) { buttonPanel.add(makeButton("b", "b", lowerCaseButtons, 20)); buttonPanel.add(makeButton("z", "z", lowerCaseButtons, 21)); @@ -246,7 +252,7 @@ public class UserDefinedColours extends GUserDefinedColours implements // codes if (this.frame != null) { - int newWidth = caseSensitive ? MY_FRAME_WIDTH_CASE_SENSITIVE + int newWidth = isCaseSensitive ? MY_FRAME_WIDTH_CASE_SENSITIVE : MY_FRAME_WIDTH; this.frame.setSize(newWidth, this.frame.getHeight()); } @@ -256,33 +262,33 @@ public class UserDefinedColours extends GUserDefinedColours implements } /** - * DOCUMENT ME! + * ChangeListener handler for when a colour is picked in the colour chooser. + * The action is to apply the colour to all selected buttons as their + * background colour. Foreground colour (text) is set to a lighter shade in + * order to highlight which buttons are selected. If 'Lower Case Colour' is + * active, then the colour is applied to all lower case buttons (as well as + * the Lower Case Colour button itself). * * @param evt - * DOCUMENT ME! */ @Override public void stateChanged(ChangeEvent evt) { - if (selectedButtons != null) + JButton button = null; + final Color newColour = colorChooser.getColor(); + for (int i = 0; i < selectedButtons.size(); i++) + { + button = selectedButtons.get(i); + button.setBackground(newColour); + button.setForeground(ColorUtils.brighterThan(newColour)); + } + if (lcaseColour.isSelected()) { - JButton button = null; - final Color newColour = colorChooser.getColor(); - for (int i = 0; i < selectedButtons.size(); i++) + for (int i = 0; i < lowerCaseButtons.size(); i++) { - button = selectedButtons.get(i); + button = lowerCaseButtons.get(i); button.setBackground(newColour); - button.setForeground(ColorUtils.brighterThan(newColour)); - } - if (button == lcaseColour) - { - for (int i = 0; i < lowerCaseButtons.size(); i++) - { - button = lowerCaseButtons.get(i); - button.setBackground(newColour); - button.setForeground(ColorUtils.brighterThan(button - .getBackground())); - } + button.setForeground(ColorUtils.brighterThan(button.getBackground())); } } } @@ -307,11 +313,6 @@ public class UserDefinedColours extends GUserDefinedColours implements */ public void colourButtonPressed(MouseEvent e) { - if (selectedButtons == null) - { - selectedButtons = new ArrayList(); - } - JButton pressed = (JButton) e.getSource(); if (e.isShiftDown()) @@ -405,8 +406,8 @@ public class UserDefinedColours extends GUserDefinedColours implements * @param buttonIndex * the button's position in the list */ - JButton makeButton(String label, String residue, - List buttons, int buttonIndex) + JButton makeButton(String label, String residue, List buttons, + int buttonIndex) { final JButton button; Color col; @@ -430,15 +431,15 @@ public class UserDefinedColours extends GUserDefinedColours implements buttons.add(button); + /* + * make initial button colour that of the current colour scheme, + * if it is a simple per-residue colouring, else white + */ col = Color.white; - if (oldColourScheme != null) + if (oldColourScheme != null && oldColourScheme.isSimple()) { - try - { - col = oldColourScheme.findColour(residue.charAt(0), -1, null); - } catch (Exception ex) - { - } + col = oldColourScheme.findColour(residue.charAt(0), 0, null, null, + 0f); } } @@ -524,7 +525,7 @@ public class UserDefinedColours extends GUserDefinedColours implements if (seqGroup != null) { - seqGroup.cs = ucs; + seqGroup.setColourScheme(ucs); ap.paintAlignment(true); } else if (ap != null) @@ -588,10 +589,10 @@ public class UserDefinedColours extends GUserDefinedColours implements ucs.setLowerCaseColours(newColours); } - if (ap != null) - { - ucs.setThreshold(0, ap.av.isIgnoreGapsConsensus()); - } + // if (ap != null) + // { + // ucs.setThreshold(0, ap.av.isIgnoreGapsConsensus()); + // } return ucs; } @@ -608,8 +609,8 @@ public class UserDefinedColours extends GUserDefinedColours implements upperCaseButtons = new ArrayList(); lowerCaseButtons = new ArrayList(); - JalviewFileChooser chooser = new JalviewFileChooser( - Cache.getProperty(LAST_DIRECTORY), "jc", "Jalview User Colours"); + JalviewFileChooser chooser = new JalviewFileChooser("jc", + "Jalview User Colours"); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle(MessageManager .getString("label.load_colour_scheme")); @@ -624,7 +625,8 @@ public class UserDefinedColours extends GUserDefinedColours implements File choice = chooser.getSelectedFile(); Cache.setProperty(LAST_DIRECTORY, choice.getParent()); - UserColourScheme ucs = ColourSchemes.loadColourScheme(choice.getAbsolutePath()); + UserColourScheme ucs = ColourSchemes.loadColourScheme(choice + .getAbsolutePath()); Color[] colors = ucs.getColours(); schemeName.setText(ucs.getSchemeName()); @@ -716,11 +718,11 @@ public class UserDefinedColours extends GUserDefinedColours implements } ColourSchemes.getInstance().removeColourScheme(name); } - JalviewFileChooser chooser = new JalviewFileChooser( - Cache.getProperty(LAST_DIRECTORY), "jc", + JalviewFileChooser chooser = new JalviewFileChooser("jc", "Jalview User Colours"); - chooser.setFileView(new JalviewFileView()); + JalviewFileView fileView = new JalviewFileView(); + chooser.setFileView(fileView); chooser.setDialogTitle(MessageManager .getString("label.save_colour_scheme")); chooser.setToolTipText(MessageManager.getString("action.save")); @@ -729,9 +731,9 @@ public class UserDefinedColours extends GUserDefinedColours implements if (value == JalviewFileChooser.APPROVE_OPTION) { - String choice = chooser.getSelectedFile().getPath(); - addNewColourScheme(choice); - saveToFile(choice); + File file = chooser.getSelectedFile(); + addNewColourScheme(file.getPath()); + saveToFile(file); } } @@ -779,9 +781,9 @@ public class UserDefinedColours extends GUserDefinedColours implements /** * Saves the colour scheme to file in XML format * - * @param filePath + * @param path */ - protected void saveToFile(String filePath) + protected void saveToFile(File toFile) { /* * build a Java model of colour scheme as XML, and @@ -792,7 +794,7 @@ public class UserDefinedColours extends GUserDefinedColours implements try { PrintWriter out = new PrintWriter(new OutputStreamWriter( - new FileOutputStream(filePath), "UTF-8")); + new FileOutputStream(toFile), "UTF-8")); for (int i = 0; i < buttonPanel.getComponentCount(); i++) { @@ -822,7 +824,7 @@ public class UserDefinedColours extends GUserDefinedColours implements { if (seqGroup != null) { - seqGroup.cs = oldColourScheme; + seqGroup.setColourScheme(oldColourScheme); } else { @@ -847,21 +849,8 @@ public class UserDefinedColours extends GUserDefinedColours implements @Override public void caseSensitive_actionPerformed(ActionEvent e) { - resetButtonPanel(caseSensitive.isSelected()); - lcaseColour.setEnabled(caseSensitive.isSelected()); - } - - @Override - public void lcaseColour_actionPerformed(ActionEvent e) - { - if (selectedButtons == null) - { - selectedButtons = new ArrayList(); - } - else - { - selectedButtons.clear(); - } - selectedButtons.add(lcaseColour); + boolean selected = caseSensitive.isSelected(); + resetButtonPanel(selected); + lcaseColour.setEnabled(selected); } }