From 134ebef1c06bde42608e76ec1a849b2c0e04d26b Mon Sep 17 00:00:00 2001
From: tjc <tjc@ee4ac58c-ac51-4696-9907-e4b3aa274f04>
Date: Tue, 17 Feb 2009 13:34:45 +0000
Subject: [PATCH] change to make obsolete the default rather than permanently
 deleting features

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@9817 ee4ac58c-ac51-4696-9907-e4b3aa274f04
---
 uk/ac/sanger/artemis/components/EditMenu.java | 85 ++++++++++++++-----
 .../genebuilder/gff/PropertiesPanel.java      | 11 ++-
 2 files changed, 70 insertions(+), 26 deletions(-)

diff --git a/uk/ac/sanger/artemis/components/EditMenu.java b/uk/ac/sanger/artemis/components/EditMenu.java
index 1b4ea7fa6..e8572af23 100644
--- a/uk/ac/sanger/artemis/components/EditMenu.java
+++ b/uk/ac/sanger/artemis/components/EditMenu.java
@@ -20,7 +20,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  *
- * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/EditMenu.java,v 1.59 2008-12-09 11:50:25 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/EditMenu.java,v 1.60 2009-02-17 13:34:45 tjc Exp $
  **/
 
 package uk.ac.sanger.artemis.components;
@@ -31,6 +31,7 @@ import uk.ac.sanger.artemis.util.*;
 import uk.ac.sanger.artemis.components.genebuilder.GeneBuilderFrame;
 import uk.ac.sanger.artemis.components.genebuilder.GeneUtils;
 import uk.ac.sanger.artemis.components.genebuilder.GeneViewerPanel;
+import uk.ac.sanger.artemis.components.genebuilder.gff.PropertiesPanel;
 import uk.ac.sanger.artemis.io.ChadoCanonicalGene;
 import uk.ac.sanger.artemis.io.Range;
 import uk.ac.sanger.artemis.io.RangeVector;
@@ -60,7 +61,7 @@ import java.util.Vector;
  *  A menu with editing commands.
  *
  *  @author Kim Rutherford
- *  @version $Id: EditMenu.java,v 1.59 2008-12-09 11:50:25 tjc Exp $
+ *  @version $Id: EditMenu.java,v 1.60 2009-02-17 13:34:45 tjc Exp $
  **/
 
 public class EditMenu extends SelectionMenu
@@ -2147,34 +2148,67 @@ public class EditMenu extends SelectionMenu
    **/
   protected static void deleteSelectedFeatures (final JFrame frame,
                                       final Selection selection,
-                                      final EntryGroup entry_group) {
-    try {
+                                      final EntryGroup entry_group) 
+  {
+    try 
+    {
       entry_group.getActionController ().startAction ();
 
       final FeatureVector features_to_delete = selection.getAllFeatures ();
-
       final String feature_count_string;
-
-      if (features_to_delete.size () == 1) {
+      if (features_to_delete.size () == 1)
         feature_count_string = "the selected feature";
-      } else {
+      else
         feature_count_string = features_to_delete.size () + " features";
-      }
 
-      if (Options.getOptions ().isNoddyMode ()) {
-        // 0 means always popup a YesNoDialog
-        if (!checkForSelectionFeatures (frame, selection, 0,
+      if (Options.getOptions ().isNoddyMode ()) 
+      {
+      	if(GeneUtils.isDatabaseEntry(entry_group))
+      	{
+      		Box boption = Box.createVerticalBox();
+      		JCheckBox delete = new JCheckBox("permanently delete", false);
+      		boption.add(new JLabel("Make "+feature_count_string+" obsolete?"));
+      		boption.add(delete);
+      		int res = JOptionPane.showConfirmDialog(frame, 
+      				boption, "Make obsolete", JOptionPane.OK_CANCEL_OPTION, 
+      				JOptionPane.QUESTION_MESSAGE);
+      		if(res == JOptionPane.CANCEL_OPTION)
+      			return;
+      		
+      		// make obsolete rather than permanently delete
+      		if(!delete.isSelected())
+      		{
+      			for(int i=0; i<features_to_delete.size(); i++)
+      			{
+      				final Feature currentFeature = features_to_delete.elementAt(i);
+      				try
+							{
+								currentFeature.setQualifier(new Qualifier("isObsolete", "true"));
+	              PropertiesPanel.updateObsoleteSettings(
+	      						(GFFStreamFeature)currentFeature.getEmblFeature());
+							} 
+      				catch (Exception e)
+							{
+								e.printStackTrace();
+							} 	
+      			}
+      			return;
+      		}
+      	}
+      	if (!checkForSelectionFeatures (frame, selection, 0,
                                         "really delete " +
-                                        feature_count_string + "?")) {
-          return;
-        }
+                                        feature_count_string + "?")) 
+      	{
+      		return;
+      	}
       }
 
       // clear the selection now so that it doesn't need to be updated as each
       // feature is deleted
       selection.clear ();
 
-      while (features_to_delete.size () > 0) {
+      while (features_to_delete.size () > 0) 
+      {
         // delete in reverse order for speed
 
         final Feature current_selection_feature =
@@ -2182,19 +2216,24 @@ public class EditMenu extends SelectionMenu
 
         features_to_delete.removeElementAt (features_to_delete.size () - 1);
 
-        try {
+        try 
+        {
           current_selection_feature.removeFromEntry ();
-        } catch (ReadOnlyException e) {
+        } 
+        catch (ReadOnlyException e) 
+        {
           selection.set (current_selection_feature);
 
-          if (features_to_delete.size () == 1) {
+          if (features_to_delete.size () == 1) 
+          {
             final String message =
               "the selected feature (" +
               current_selection_feature.getIDString () +
               ") is read only - cannot continue";
             new MessageDialog (frame, message);
-
-          } else {
+          } 
+          else 
+          {
             final String message =
               "one of the selected features (" +
               current_selection_feature.getIDString () +
@@ -2210,7 +2249,9 @@ public class EditMenu extends SelectionMenu
           return;
         }
       }
-    } finally {
+    } 
+    finally 
+    {
       entry_group.getActionController ().endAction ();
     }
   }
diff --git a/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java b/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java
index 3673896cb..ef64d9045 100644
--- a/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java
+++ b/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java
@@ -17,7 +17,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  *
- * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java,v 1.6 2008-11-07 12:19:13 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java,v 1.7 2009-02-17 13:34:45 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.components.genebuilder.gff;
@@ -530,8 +530,11 @@ public class PropertiesPanel extends JPanel
       return;
     
     obsoleteChanged = false;
-
-    GFFStreamFeature gffFeature = (GFFStreamFeature)feature.getEmblFeature();
+    updateObsoleteSettings((GFFStreamFeature)feature.getEmblFeature());
+  }
+  
+  public static void updateObsoleteSettings(GFFStreamFeature gffFeature)
+  {
     Qualifier isObsoleteQualifier = gffFeature.getQualifierByName("isObsolete");
     String isObsoleteNew = (String) isObsoleteQualifier.getValues().get(0);
     if(isObsoleteNew.equals("true"))
@@ -547,7 +550,7 @@ public class PropertiesPanel extends JPanel
     {
       Qualifier idQualifier = gffFeature.getQualifierByName("ID");
       
-      int select = JOptionPane.showConfirmDialog(PropertiesPanel.this, 
+      int select = JOptionPane.showConfirmDialog(null, 
           "Make children of "+idQualifier.getValues().get(0)+"\n"+
           (isObsoleteNew.equals("true") ? "obsolete?" : "not obsolete?"), 
           "Update Children", 
-- 
GitLab