isJS cleanup
[jalview.git] / src / jalview / gui / UserDefinedColours.java
index bee1b14..8720341 100755 (executable)
@@ -24,8 +24,6 @@ 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,7 +32,10 @@ import jalview.schemes.UserColourScheme;
 import jalview.util.ColorUtils;
 import jalview.util.Format;
 import jalview.util.MessageManager;
-import jalview.util.dialogrunner.RunResponse;
+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;
@@ -52,6 +53,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
@@ -482,46 +485,49 @@ public class UserDefinedColours extends GUserDefinedColours
   protected void warnIfUnsavedChanges()
   {
     // BH 2018 no warning in JavaScript TODO
-    
-    if (/** @j2sNative true || */ !changedButNotSaved)
-    {
-      return;
-    }
 
-    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]);
-
-      if (response == 0)
+    if (!Platform.isJS() && changedButNotSaved)
+    /**
+     * Java only
+     * 
+     * @j2sNative
+     */
+    {
+      String name = schemeName.getText().trim();
+      if (oldColourScheme != null && !"".equals(name)
+              && name.equals(oldColourScheme.getSchemeName()))
       {
-        /*
-         * prompt to save changes to file; if done,
-         * resets 'changed' flag to false
-         */
-        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 (changedButNotSaved)
-      {
         /*
-         * 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();
+        }
       }
     }
   }
@@ -642,43 +648,46 @@ public class UserDefinedColours extends GUserDefinedColours
     chooser.setDialogTitle(
             MessageManager.getString("label.load_colour_scheme"));
     chooser.setToolTipText(MessageManager.getString("action.load"));
-    chooser.response(new RunResponse(JalviewFileChooser.APPROVE_OPTION) {
-               @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.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);
   }
@@ -852,9 +861,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)
     {