+\r
+ if(userColourSchemes!=null && userColourSchemes.containsKey(schemeName.getText()) )\r
+ {\r
+ int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop, "Colour scheme "+schemeName.getText()+ " exists."\r
+ +"\nContinue saving colour scheme as "+schemeName.getText()+"?",\r
+ "Duplicate scheme name", JOptionPane.YES_NO_OPTION);\r
+ if(reply != JOptionPane.YES_OPTION)\r
+ return;\r
+\r
+ userColourSchemes.remove(schemeName.getText());\r
+ }\r
+ JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.getProperty(\r
+ "LAST_DIRECTORY"), new String[] { "jc" },\r
+ new String[] { "Jalview User Colours" }, "Jalview User Colours");\r
+\r
+ chooser.setFileView(new jalview.io.JalviewFileView());\r
+ chooser.setDialogTitle("Save colour scheme");\r
+ chooser.setToolTipText("Save");\r
+\r
+ int value = chooser.showSaveDialog(this);\r
+\r
+ if (value == JalviewFileChooser.APPROVE_OPTION)\r
+ {\r
+ String choice = chooser.getSelectedFile().getPath();\r
+ String defaultColours = jalview.bin.Cache.getDefault("USER_DEFINED_COLOURS", choice);\r
+ if(defaultColours.indexOf(choice)==-1)\r
+ {\r
+ if(defaultColours.length()>0)\r
+ defaultColours = defaultColours.concat("|");\r
+ defaultColours = defaultColours.concat(choice);\r
+ }\r
+\r
+ userColourSchemes.put(schemeName.getText(), getSchemeFromGUI());\r
+\r
+ ap.alignFrame.updateUserColourMenu();\r
+\r
+ jalview.bin.Cache.setProperty("USER_DEFINED_COLOURS", defaultColours);\r
+\r
+ jalview.binding.JalviewUserColours ucs = new jalview.binding.JalviewUserColours();\r
+ ucs.setSchemeName(schemeName.getText());\r
+ try\r
+ {\r
+ PrintWriter out = new PrintWriter(new OutputStreamWriter(\r
+ new FileOutputStream(choice), "UTF-8"));\r
+\r
+ for (int i = 0; i < 24; i++)\r
+ {\r
+ JButton button = (JButton) buttonPanel.getComponent(i);\r
+ jalview.binding.Colour col = new jalview.binding.Colour();\r
+ col.setName(button.getText());\r
+ col.setRGB(jalview.util.Format.getHexString(\r
+ button.getBackground()));\r
+ ucs.addColour(col);\r
+ }\r
+\r
+ ucs.marshal(out);\r
+ out.close();\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ ex.printStackTrace();\r
+ }\r
+ }\r