JAL-3187 individual feature settings panel has revert/apply when embedded in a tab...
[jalview.git] / src / jalview / gui / SplitFrame.java
index 77d8a96..8e5c2de 100644 (file)
@@ -32,6 +32,7 @@ import jalview.util.MessageManager;
 import jalview.util.Platform;
 import jalview.viewmodel.AlignmentViewport;
 
+import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.event.ActionEvent;
@@ -48,6 +49,7 @@ import java.util.Map.Entry;
 
 import javax.swing.AbstractAction;
 import javax.swing.InputMap;
+import javax.swing.JButton;
 import javax.swing.JComponent;
 import javax.swing.JDesktopPane;
 import javax.swing.JInternalFrame;
@@ -865,10 +867,59 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI
     {
       showInternalFrame = true;
       featureSettingsPanels = new JTabbedPane();
-      featureSettingsUI = new JInternalFrame(
-              "Feature Settings for CDS and Protein Views");
+      featureSettingsUI = new JInternalFrame(MessageManager.getString(
+              "label.sequence_feature_settings_for_CDS_and_Protein"));
       featureSettingsPanels.setOpaque(true);
-      featureSettingsUI.setContentPane(featureSettingsPanels);
+
+      JPanel dialog = new JPanel();
+      dialog.setOpaque(true);
+      dialog.setLayout(new BorderLayout());
+      dialog.add(featureSettingsPanels, BorderLayout.CENTER);
+      JPanel buttons = new JPanel();
+      JButton ok = new JButton(MessageManager.getString("action.ok"));
+      ok.addActionListener(new ActionListener()
+      {
+
+        @Override
+        public void actionPerformed(ActionEvent e)
+        {
+          try
+          {
+            featureSettingsUI.setClosed(true);
+          } catch (PropertyVetoException pv)
+          {
+            pv.printStackTrace();
+          }
+        }
+      });
+      JButton cancel = new JButton(
+              MessageManager.getString("action.cancel"));
+      cancel.addActionListener(new ActionListener()
+      {
+
+        @Override
+        public void actionPerformed(ActionEvent e)
+        {
+          try
+          {
+            for (Component fspanel : featureSettingsPanels.getComponents())
+            {
+              if (fspanel instanceof FeatureSettingsControllerGuiI)
+              {
+                ((FeatureSettingsControllerGuiI) fspanel).revert();
+              }
+            }
+            featureSettingsUI.setClosed(true);
+          } catch (Exception pv)
+          {
+            pv.printStackTrace();
+          }
+        }
+      });
+      buttons.add(ok);
+      buttons.add(cancel);
+      dialog.add(buttons, BorderLayout.SOUTH);
+      featureSettingsUI.setContentPane(dialog);
       createDummyTabs();
     }
     if (featureSettingsPanels
@@ -885,15 +936,19 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI
     if (pos == 0)
     {
       featureSettingsPanels.removeTabAt(0);
-      featureSettingsPanels.insertTab("CDS", null,
-              (Component) featureSettings, "Feature Settings for DNA CDS",
+      featureSettingsPanels.insertTab(tabName[0], null,
+              (Component) featureSettings,
+              MessageManager.formatMessage(
+                      "label.sequence_feature_settings_for", tabName[0]),
               0);
     }
     if (pos == 1)
     {
       featureSettingsPanels.removeTabAt(1);
-      featureSettingsPanels.insertTab("Protein", null,
-              (Component) featureSettings, "Feature Settings for Protein",
+      featureSettingsPanels.insertTab(tabName[1], null,
+              (Component) featureSettings,
+              MessageManager.formatMessage(
+                      "label.sequence_feature_settings_for", tabName[1]),
               1);
     }
     featureSettingsPanels.setSelectedComponent((Component) featureSettings);
@@ -907,14 +962,14 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI
       {
         Desktop.addInternalFrame(featureSettingsUI,
                 MessageManager.getString(
-                        "Feature Settings for CDS and Protein Views"),
+                        "label.sequence_feature_settings_for_CDS_and_Protein"),
                 600, 480);
       }
       else
       {
         Desktop.addInternalFrame(featureSettingsUI,
                 MessageManager.getString(
-                        "Feature Settings for CDS and Protein Views"),
+                        "label.sequence_feature_settings_for_CDS_and_Protein"),
                 600, 450);
       }
       featureSettingsUI
@@ -975,7 +1030,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI
    */
   private String[] tabName = new String[] {
       MessageManager.getString("label.CDS"),
-      MessageManager.getString("label.Protein") };
+      MessageManager.getString("label.protein") };
 
   /**
    * create placeholder tabs which materialise the feature settings for a given