diff --git a/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java b/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java index 3561ea1c6bb251502cbbcf51fb17bac8772138ad..a26385842af36ad223097b0cc3eca29f282a668f 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.1 2008-06-03 10:34:59 tjc Exp $ + * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java,v 1.2 2008-09-19 12:39:35 tjc Exp $ */ package uk.ac.sanger.artemis.components.genebuilder.gff; @@ -69,8 +69,10 @@ public class PropertiesPanel extends JPanel private static final long serialVersionUID = 1L; private QualifierVector gffQualifiers; private JTextField uniquenameTextField; + private JTextField primaryNameTextField; private JCheckBox obsoleteField; private Feature feature; + /** controls if this panel is automatically closed or open */ private boolean empty = true; /** track if feature isObsolete flag has changed */ private boolean obsoleteChanged = false; @@ -89,6 +91,7 @@ public class PropertiesPanel extends JPanel public boolean isPropertiesTag(final Qualifier qualifier, final Feature feature) { if(qualifier.getName().equals("ID") || + qualifier.getName().equals("Name") || qualifier.getName().equals("feature_id") || qualifier.getName().equals("Parent") || qualifier.getName().equals("Derives_from") || @@ -107,6 +110,7 @@ public class PropertiesPanel extends JPanel int nrows = 0; Qualifier idQualifier = gffQualifiers.getQualifierByName("ID"); + Qualifier nameQualifier = gffQualifiers.getQualifierByName("Name"); Qualifier parentQualifier = gffQualifiers.getQualifierByName("Parent"); Qualifier derivesFromQualifier = gffQualifiers.getQualifierByName("Derives_from"); Qualifier timeQualifier = gffQualifiers.getQualifierByName("timelastmodified"); @@ -165,7 +169,7 @@ public class PropertiesPanel extends JPanel if(idQualifier != null) { final String uniquename = (String)idQualifier.getValues().get(0); - JLabel idField = new JLabel("Internal ID"); + JLabel idField = new JLabel("ID"); uniquenameTextField = new JTextField(uniquename); cellDimension = new Dimension(uniquenameTextField.getPreferredSize().width+10, @@ -176,16 +180,15 @@ public class PropertiesPanel extends JPanel uniquenameTextField.setMaximumSize(cellDimension); c.gridx = 3; - c.gridy = 0; + c.gridy = nrows; c.ipadx = 5; c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.NORTHEAST; + c.anchor = GridBagConstraints.SOUTHEAST; gridPanel.add(idField, c); c.gridx = 4; - c.gridy = 0; c.ipadx = 0; c.fill = GridBagConstraints.HORIZONTAL; - c.anchor = GridBagConstraints.NORTHWEST; + c.anchor = GridBagConstraints.SOUTHWEST; gridPanel.add(uniquenameTextField, c); Qualifier featIdQualifier = gffQualifiers.getQualifierByName("feature_id"); @@ -199,6 +202,41 @@ public class PropertiesPanel extends JPanel } + + if(!feature.getKey().getKeyString().equals(DatabaseDocument.EXONMODEL)) + { + primaryNameTextField = new JTextField(); + if(nameQualifier != null) + { + primaryNameTextField.setText((String)nameQualifier.getValues().get(0)); + empty = false; + } + + JLabel idField = new JLabel("Primary Name"); + if(cellDimension == null) + cellDimension = new Dimension(primaryNameTextField.getPreferredSize().width+10, + idField.getPreferredSize().height+10); + + if(feature.getKey().getKeyString().indexOf("exon") > -1) + primaryNameTextField.setEditable(false); + primaryNameTextField.setMaximumSize(cellDimension); + + c.gridx = 3; + c.gridy = nrows; + c.ipadx = 5; + c.fill = GridBagConstraints.NONE; + c.anchor = GridBagConstraints.EAST; + gridPanel.add(idField, c); + c.gridx = 4; + c.gridy = nrows; + c.ipadx = 0; + c.fill = GridBagConstraints.HORIZONTAL; + c.anchor = GridBagConstraints.NORTHWEST; + gridPanel.add(primaryNameTextField, c); + nrows++; + } + + if(parentQualifier != null) { StringVector parents = parentQualifier.getValues(); @@ -219,7 +257,7 @@ public class PropertiesPanel extends JPanel c.gridy = nrows; c.ipadx = 5; c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.NORTHEAST; + c.anchor = GridBagConstraints.EAST; gridPanel.add(parentField, c); c.gridx = 4; c.gridy = nrows; @@ -252,7 +290,7 @@ public class PropertiesPanel extends JPanel c.gridy = nrows; c.ipadx = 5; c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.NORTHEAST; + c.anchor = GridBagConstraints.EAST; gridPanel.add(derivesFromsField, c); c.gridx = 4; c.gridy = nrows; @@ -264,7 +302,6 @@ public class PropertiesPanel extends JPanel } } - if(timeQualifier != null) { String time = (String)timeQualifier.getValues().get(0); @@ -285,7 +322,7 @@ public class PropertiesPanel extends JPanel c.gridy = nrows; c.ipadx = 5; c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.NORTHEAST; + c.anchor = GridBagConstraints.EAST; gridPanel.add(timeField, c); c.gridx = 4; c.gridy = nrows; @@ -301,6 +338,7 @@ public class PropertiesPanel extends JPanel { boolean isObsolete = Boolean.parseBoolean((String) obsoleteQualifier.getValues().get(0)); obsoleteField = new JCheckBox("is obsolete", isObsolete); + obsoleteField.setOpaque(false); obsoleteField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) @@ -322,15 +360,13 @@ public class PropertiesPanel extends JPanel nrows++; } - - gffBox.add(gridPanel); // add/remove buttons Box xBox = Box.createHorizontalBox(); - - final JButton addSynonym = new JButton("ADD"); + + final JButton addSynonym = new JButton("ADD SYNONYM"); addSynonym.setOpaque(false); addSynonym.setToolTipText("Add id or synonym"); addSynonym.addActionListener(new ActionListener() @@ -343,7 +379,7 @@ public class PropertiesPanel extends JPanel xBox.add(addSynonym); xBox.add(Box.createHorizontalStrut(10)); - final JButton removeSynonym = new JButton("REMOVE"); + final JButton removeSynonym = new JButton("REMOVE SYNONYM"); removeSynonym.setOpaque(false); removeSynonym.setToolTipText("Remove id or synonym"); removeSynonym.addActionListener(new ActionListener() @@ -404,6 +440,20 @@ public class PropertiesPanel extends JPanel } } + Qualifier nameQualifier = gffQualifiers.getQualifierByName("Name"); + if( (nameQualifier != null && + !((String)(nameQualifier.getValues().get(0))).equals(primaryNameTextField.getText())) || + primaryNameTextField != null) + { + gffQualifiers.remove(nameQualifier); + + if(!primaryNameTextField.getText().equals("")) + { + nameQualifier = new Qualifier("Name", primaryNameTextField.getText()); + gffQualifiers.addElement(nameQualifier); + } + } + Qualifier isObsoleteQualifier = gffQualifiers.getQualifierByName("isObsolete"); if(isObsoleteQualifier != null) { @@ -629,7 +679,7 @@ public class PropertiesPanel extends JPanel GridBagConstraints c = new GridBagConstraints(); c.gridx = 0; c.gridy = nrows; - c.ipady = 6; + c.ipady = 3; c.gridwidth = 2; c.anchor = GridBagConstraints.CENTER; c.fill = GridBagConstraints.HORIZONTAL;