import jalview.util.ColorUtils;
import jalview.util.Format;
import jalview.util.MessageManager;
+import jalview.util.dialogrunner.RunResponse;
import jalview.xml.binding.jalview.JalviewUserColours;
import jalview.xml.binding.jalview.JalviewUserColours.Colour;
import jalview.xml.binding.jalview.ObjectFactory;
* 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;
button.setForeground(ColorUtils.brighterThan(newColour));
}
- changed = true;
+ changedButNotSaved = true;
}
/**
{
// BH 2018 no warning in JavaScript TODO
- if (/** @j2sNative true || */ !changed)
+ if (/** @j2sNative true || */ !changedButNotSaved)
{
return;
}
question, title, JvOptionPane.DEFAULT_OPTION,
JvOptionPane.PLAIN_MESSAGE, null, options, options[0]);
- boolean saved = false;
if (response == 0)
{
/*
- * prompt to save changes to file
+ * prompt to save changes to file; if done,
+ * resets 'changed' flag to false
*/
- saved = savebutton_actionPerformed();
+ 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)
+ if (changedButNotSaved)
{
/*
* clear scheme name and re-apply as an anonymous scheme
{
upperCaseButtons = new ArrayList<>();
lowerCaseButtons = new ArrayList<>();
- // TODO: JAL-3048 requires Castor dependency for Jalview-JS
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.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.showOpenDialog(this);
}
/**
* <li>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</li>
* </ul>
- * 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)
.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))
JvOptionPane.YES_NO_OPTION);
if (reply != JvOptionPane.YES_OPTION)
{
- return false;
}
}
- // TODO: JAL-3048 saveas, also requires Castor dependency for Jalview-JS
JalviewFileChooser chooser = new JalviewFileChooser("jc",
"Jalview User Colours");
chooser.setDialogTitle(
MessageManager.getString("label.save_colour_scheme"));
chooser.setToolTipText(MessageManager.getString("action.save"));
-
- int value = chooser.showSaveDialog(this);
-
- if (value != JalviewFileChooser.APPROVE_OPTION)
- {
- return 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();
+ int option = chooser.showSaveDialog(this);
+ if (option == JalviewFileChooser.APPROVE_OPTION)
+ {
+ File file = chooser.getSelectedFile();
+ UserColourScheme updatedScheme = addNewColourScheme(file.getPath());
+ saveToFile(file);
+ changedButNotSaved = 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();
+ }
}
- return true;
}
/**