X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FUserDefinedColours.java;h=c3f132baa467eafd1e0e2544b5c8a8279a3bc66d;hb=9d2408483e451285fd555c3cd6e0273977acbaa7;hp=8b45c409e8afb7dcc01be9f9e9d6f09eb3778bcb;hpb=f4766a7bbcfae845fc95923b01fa14ff83d589ff;p=jalview.git diff --git a/src/jalview/gui/UserDefinedColours.java b/src/jalview/gui/UserDefinedColours.java index 8b45c40..c3f132b 100755 --- a/src/jalview/gui/UserDefinedColours.java +++ b/src/jalview/gui/UserDefinedColours.java @@ -20,12 +20,12 @@ */ package jalview.gui; +import java.util.Locale; + import jalview.bin.Cache; import jalview.io.JalviewFileChooser; import jalview.io.JalviewFileView; import jalview.jbgui.GUserDefinedColours; -import jalview.schemabinding.version2.Colour; -import jalview.schemabinding.version2.JalviewUserColours; import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemeLoader; import jalview.schemes.ColourSchemes; @@ -34,6 +34,10 @@ import jalview.schemes.UserColourScheme; import jalview.util.ColorUtils; import jalview.util.Format; import jalview.util.MessageManager; +import jalview.util.Platform; +import jalview.xml.binding.jalview.JalviewUserColours; +import jalview.xml.binding.jalview.JalviewUserColours.Colour; +import jalview.xml.binding.jalview.ObjectFactory; import java.awt.Color; import java.awt.Font; @@ -51,6 +55,8 @@ import javax.swing.JButton; import javax.swing.JInternalFrame; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.Marshaller; /** * This panel allows the user to assign colours to Amino Acid residue codes, and @@ -87,7 +93,7 @@ public class UserDefinedColours extends GUserDefinedColours * flag is true if the colour scheme has been changed since the * dialog was opened, or the changes last saved to file */ - boolean changed; + boolean changedButNotSaved; JInternalFrame frame; @@ -136,7 +142,7 @@ public class UserDefinedColours extends GUserDefinedColours UserDefinedColours() { super(); - selectedButtons = new ArrayList(); + selectedButtons = new ArrayList<>(); } void showFrame() @@ -163,7 +169,7 @@ public class UserDefinedColours extends GUserDefinedColours if (upperCaseButtons == null) { - upperCaseButtons = new ArrayList(); + upperCaseButtons = new ArrayList<>(); } for (int i = 0; i < 20; i++) @@ -194,15 +200,15 @@ public class UserDefinedColours extends GUserDefinedColours if (lowerCaseButtons == null) { - lowerCaseButtons = new ArrayList(); + lowerCaseButtons = new ArrayList<>(); } for (int i = 0; i < 20; i++) { int row = i / cols + 1; int index = (row * cols) + i; - JButton button = makeButton(ResidueProperties.aa[i].toLowerCase(), - ResidueProperties.aa[i].toLowerCase(), lowerCaseButtons, i); + JButton button = makeButton(ResidueProperties.aa[i].toLowerCase(Locale.ROOT), + ResidueProperties.aa[i].toLowerCase(Locale.ROOT), lowerCaseButtons, i); buttonPanel.add(button, index); } @@ -261,7 +267,7 @@ public class UserDefinedColours extends GUserDefinedColours button.setForeground(ColorUtils.brighterThan(newColour)); } - changed = true; + changedButNotSaved = true; } /** @@ -480,45 +486,50 @@ public class UserDefinedColours extends GUserDefinedColours */ protected void warnIfUnsavedChanges() { - if (!changed) - { - return; - } + // BH 2018 no warning in JavaScript TODO - String name = schemeName.getText().trim(); - if (oldColourScheme != null && !"".equals(name) - && name.equals(oldColourScheme.getSchemeName())) - { - String message = MessageManager.formatMessage("label.scheme_changed", - name); - String title = MessageManager.getString("label.save_changes"); - String[] options = new String[] { title, - MessageManager.getString("label.dont_save_changes"), }; - final String question = JvSwingUtils.wrapTooltip(true, message); - int response = JvOptionPane.showOptionDialog(Desktop.desktop, - question, title, JvOptionPane.DEFAULT_OPTION, - JvOptionPane.PLAIN_MESSAGE, null, options, options[0]); - - boolean saved = false; - if (response == 0) + if (!Platform.isJS() && changedButNotSaved) + /** + * Java only + * + * @j2sIgnore + */ + { + String name = schemeName.getText().trim(); + if (oldColourScheme != null && !"".equals(name) + && name.equals(oldColourScheme.getSchemeName())) { - /* - * prompt to save changes to file - */ - saved = savebutton_actionPerformed(); - } + String message = MessageManager + .formatMessage("label.scheme_changed", name); + String title = MessageManager.getString("label.save_changes"); + String[] options = new String[] { title, + MessageManager.getString("label.dont_save_changes"), }; + final String question = JvSwingUtils.wrapTooltip(true, message); + int response = JvOptionPane.showOptionDialog(Desktop.desktop, + question, title, JvOptionPane.DEFAULT_OPTION, + JvOptionPane.PLAIN_MESSAGE, null, options, options[0]); + + if (response == 0) + { + /* + * prompt to save changes to file; if done, + * resets 'changed' flag to false + */ + savebutton_actionPerformed(); + } - /* - * if user chooses not to save (either in this dialog or in the - * save as dialogs), treat this as a new user defined colour scheme - */ - if (!saved) - { /* - * clear scheme name and re-apply as an anonymous scheme + * if user chooses not to save (either in this dialog or in the + * save as dialogs), treat this as a new user defined colour scheme */ - schemeName.setText(""); - applyButton_actionPerformed(); + if (changedButNotSaved) + { + /* + * clear scheme name and re-apply as an anonymous scheme + */ + schemeName.setText(""); + applyButton_actionPerformed(); + } } } } @@ -631,55 +642,56 @@ public class UserDefinedColours extends GUserDefinedColours @Override protected void loadbutton_actionPerformed() { - upperCaseButtons = new ArrayList(); - lowerCaseButtons = new ArrayList(); - + upperCaseButtons = new ArrayList<>(); + lowerCaseButtons = new ArrayList<>(); JalviewFileChooser chooser = new JalviewFileChooser("jc", "Jalview User Colours"); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle( MessageManager.getString("label.load_colour_scheme")); chooser.setToolTipText(MessageManager.getString("action.load")); - - int value = chooser.showOpenDialog(this); - - if (value != JalviewFileChooser.APPROVE_OPTION) - { - return; - } - File choice = chooser.getSelectedFile(); - Cache.setProperty(LAST_DIRECTORY, choice.getParent()); - - UserColourScheme ucs = ColourSchemeLoader - .loadColourScheme(choice.getAbsolutePath()); - Color[] colors = ucs.getColours(); - schemeName.setText(ucs.getSchemeName()); - - if (ucs.getLowerCaseColours() != null) - { - caseSensitive.setSelected(true); - lcaseColour.setEnabled(true); - resetButtonPanel(true); - for (int i = 0; i < lowerCaseButtons.size(); i++) - { - JButton button = lowerCaseButtons.get(i); - button.setBackground(ucs.getLowerCaseColours()[i]); - } - } - else - { - caseSensitive.setSelected(false); - lcaseColour.setEnabled(false); - resetButtonPanel(false); - } - - for (int i = 0; i < upperCaseButtons.size(); i++) - { - JButton button = upperCaseButtons.get(i); - button.setBackground(colors[i]); - } - - addNewColourScheme(choice.getPath()); + chooser.setResponseHandler(0, new Runnable() + { + @Override + public void run() + { + File choice = chooser.getSelectedFile(); + Cache.setProperty(LAST_DIRECTORY, choice.getParent()); + + UserColourScheme ucs = ColourSchemeLoader + .loadColourScheme(choice.getAbsolutePath()); + Color[] colors = ucs.getColours(); + schemeName.setText(ucs.getSchemeName()); + + if (ucs.getLowerCaseColours() != null) + { + caseSensitive.setSelected(true); + lcaseColour.setEnabled(true); + resetButtonPanel(true); + for (int i = 0; i < lowerCaseButtons.size(); i++) + { + JButton button = lowerCaseButtons.get(i); + button.setBackground(ucs.getLowerCaseColours()[i]); + } + } + else + { + caseSensitive.setSelected(false); + lcaseColour.setEnabled(false); + resetButtonPanel(false); + } + + for (int i = 0; i < upperCaseButtons.size(); i++) + { + JButton button = upperCaseButtons.get(i); + button.setBackground(colors[i]); + } + + addNewColourScheme(choice.getPath()); + } + }); + + chooser.showOpenDialog(this); } /** @@ -723,12 +735,10 @@ public class UserDefinedColours extends GUserDefinedColours *
  • Don't apply the changes if the currently selected scheme is different, * to allow a new scheme to be configured and saved but not applied
  • * - * Returns true if the scheme is saved to file, false if it is not - * - * @return + * If the scheme is saved to file, the 'changed' flag field is reset to false. */ @Override - protected boolean savebutton_actionPerformed() + protected void savebutton_actionPerformed() { String name = schemeName.getText().trim(); if (name.length() < 1) @@ -738,22 +748,29 @@ public class UserDefinedColours extends GUserDefinedColours .getString("label.user_colour_scheme_must_have_name"), MessageManager.getString("label.no_name_colour_scheme"), JvOptionPane.WARNING_MESSAGE); - return false; } - if (ColourSchemes.getInstance().nameExists(name)) + if (!Platform.isJS() && ColourSchemes.getInstance().nameExists(name)) { - int reply = JvOptionPane.showInternalConfirmDialog(Desktop.desktop, - MessageManager.formatMessage( - "label.colour_scheme_exists_overwrite", new Object[] - { name, name }), - MessageManager.getString("label.duplicate_scheme_name"), - JvOptionPane.YES_NO_OPTION); - if (reply != JvOptionPane.YES_OPTION) + /** + * java only + * + * @j2sIgnore + */ { - return false; + int reply = JvOptionPane.showInternalConfirmDialog(Desktop.desktop, + MessageManager.formatMessage( + "label.colour_scheme_exists_overwrite", new Object[] + { name, name }), + MessageManager.getString("label.duplicate_scheme_name"), + JvOptionPane.YES_NO_OPTION); + if (reply != JvOptionPane.YES_OPTION) + { + return; + } } } + JalviewFileChooser chooser = new JalviewFileChooser("jc", "Jalview User Colours"); @@ -762,31 +779,26 @@ public class UserDefinedColours extends GUserDefinedColours chooser.setDialogTitle( MessageManager.getString("label.save_colour_scheme")); chooser.setToolTipText(MessageManager.getString("action.save")); - - int value = chooser.showSaveDialog(this); - - if (value != JalviewFileChooser.APPROVE_OPTION) + int option = chooser.showSaveDialog(this); + if (option == JalviewFileChooser.APPROVE_OPTION) { - return false; - } + File file = chooser.getSelectedFile(); + UserColourScheme updatedScheme = addNewColourScheme(file.getPath()); + saveToFile(file); + changedButNotSaved = false; - File file = chooser.getSelectedFile(); - UserColourScheme updatedScheme = addNewColourScheme(file.getPath()); - saveToFile(file); - changed = false; - - /* - * changes saved - apply to alignment if we are changing - * the currently selected colour scheme; also make the updated - * colours the 'backout' scheme on Cancel - */ - if (oldColourScheme != null - && name.equals(oldColourScheme.getSchemeName())) - { - oldColourScheme = updatedScheme; - applyButton_actionPerformed(); + /* + * changes saved - apply to alignment if we are changing + * the currently selected colour scheme; also make the updated + * colours the 'backout' scheme on Cancel + */ + if (oldColourScheme != null + && name.equals(oldColourScheme.getSchemeName())) + { + oldColourScheme = updatedScheme; + applyButton_actionPerformed(); + } } - return true; } /** @@ -858,9 +870,14 @@ public class UserDefinedColours extends GUserDefinedColours Colour col = new Colour(); col.setName(button.getText()); col.setRGB(Format.getHexString(button.getBackground())); - ucs.addColour(col); + ucs.getColour().add(col); } - ucs.marshal(out); + JAXBContext jaxbContext = JAXBContext + .newInstance(JalviewUserColours.class); + Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); + jaxbMarshaller.marshal( + new ObjectFactory().createJalviewUserColours(ucs), out); + // ucs.marshal(out); out.close(); } catch (Exception ex) { @@ -876,7 +893,7 @@ public class UserDefinedColours extends GUserDefinedColours protected void cancelButton_actionPerformed() { ap.alignFrame.changeColour(oldColourScheme); - ap.paintAlignment(true); + ap.paintAlignment(true, true); try {