JAL-2316 Added GUI checks for duplicate link ids
authorkiramt <k.mourao@dundee.ac.uk>
Mon, 12 Dec 2016 16:20:05 +0000 (16:20 +0000)
committerkiramt <k.mourao@dundee.ac.uk>
Mon, 12 Dec 2016 16:20:05 +0000 (16:20 +0000)
resources/lang/Messages.properties
resources/lang/Messages_es.properties
src/jalview/gui/Preferences.java
src/jalview/jbgui/GSequenceLink.java
src/jalview/urls/UrlLinkTableModel.java

index 9ffa292..477b3d6 100644 (file)
@@ -1284,4 +1284,6 @@ label.default = On Click
 label.inmenu = In Menu
 label.id = ID
 label.urltooltip = Only one url, which must use a sequence id, can be selected for the 'On Click' option
-label.edit_sequence_url_link = Edit sequence URL link
\ No newline at end of file
+label.edit_sequence_url_link = Edit sequence URL link
+warn.name_cannot_be_duplicate = URL names must be unique
+label.invalid_name = Invalid Name !
\ No newline at end of file
index a4b6c71..d2d04a9 100644 (file)
@@ -1285,4 +1285,6 @@ label.default = On Click
 label.inmenu = In Menu
 label.id = ID
 label.urltooltip = Only one url, which must use a sequence id, can be selected for the 'On Click' option
-label.edit_sequence_url_link = Edit sequence URL link
\ No newline at end of file
+label.edit_sequence_url_link = Edit sequence URL link
+warn.name_cannot_be_duplicate = URL names must be unique
+label.invalid_name = Invalid Name !
\ No newline at end of file
index 9ee3077..b46ae10 100755 (executable)
@@ -867,9 +867,18 @@ public class Preferences extends GPreferences
       {
         if (link.checkValid())
         {
-          ((UrlLinkTableModel) linkUrlTable.getModel()).insertRow(
-                  link.getName(), link.getURL());
-          valid = true;
+          if (((UrlLinkTableModel) linkUrlTable.getModel())
+                  .isUniqueName(link.getName()))
+          {
+            ((UrlLinkTableModel) linkUrlTable.getModel()).insertRow(
+                    link.getName(), link.getURL());
+            valid = true;
+          }
+          else
+          {
+            link.notifyDuplicate();
+            continue;
+          }
         }
       }
       else
@@ -904,9 +913,18 @@ public class Preferences extends GPreferences
       {
         if (link.checkValid())
         {
-          linkUrlTable.setValueAt(link.getName(), index, 0);
-          linkUrlTable.setValueAt(link.getURL(), index, 1);
-          valid = true;
+          if (((UrlLinkTableModel) linkUrlTable.getModel())
+                  .isUniqueName(link.getName()))
+          {
+            linkUrlTable.setValueAt(link.getName(), index, 0);
+            linkUrlTable.setValueAt(link.getURL(), index, 1);
+            valid = true;
+          }
+          else
+          {
+            link.notifyDuplicate();
+            continue;
+          }
         }
       }
       else
index 9e44096..93b7935 100755 (executable)
@@ -225,6 +225,14 @@ public class GSequenceLink extends JPanel
     return false;
   }
 
+  public void notifyDuplicate()
+  {
+    JOptionPane.showInternalMessageDialog(jalview.gui.Desktop.desktop,
+            MessageManager.getString("warn.name_cannot_be_duplicate"),
+            MessageManager.getString("label.invalid_name"),
+            JOptionPane.WARNING_MESSAGE);
+  }
+
   public void nameTB_keyTyped(KeyEvent e)
   {
     if (e.getKeyChar() == '|')
index 6b03667..bda92cc 100644 (file)
@@ -264,4 +264,9 @@ public class UrlLinkTableModel extends AbstractTableModel
     return dataProvider
             .isUserEntry(entry.getStringValue(UrlLinkDisplay.ID));
   }
+
+  public boolean isUniqueName(String name)
+  {
+    return !dataProvider.contains(name);
+  }
 }