diff --git a/uk/ac/sanger/artemis/components/FeatureEdit.java b/uk/ac/sanger/artemis/components/FeatureEdit.java index 9fb8152762790418ca66a6651fe0d3d2d877f85f..613999b3bb6fccde456432f911bcb18239b549e0 100644 --- a/uk/ac/sanger/artemis/components/FeatureEdit.java +++ b/uk/ac/sanger/artemis/components/FeatureEdit.java @@ -166,6 +166,8 @@ public class FeatureEdit extends JPanel private GeneEditorPanel editorPanel; + private static UserDefinedQualifier userDefinedQualifierFrame; + /** * Create a new FeatureEdit object from the given Feature. * @param entry_group The EntryGroup that contains this Feature. @@ -215,6 +217,8 @@ public class FeatureEdit extends JPanel { stopListening(); frame.dispose(); + if(userDefinedQualifierFrame != null) + userDefinedQualifierFrame.setVisible(false); } }); } @@ -510,6 +514,7 @@ public class FeatureEdit extends JPanel location_panel.add(location_text, "Center"); final JButton complement_button = new JButton("Complement"); + complement_button.setToolTipText("Complement position"); location_button_panel.add(complement_button); complement_button.addActionListener(new ActionListener () { @@ -533,6 +538,7 @@ public class FeatureEdit extends JPanel } final JButton grab_button = new JButton("Grab Range"); + grab_button.setToolTipText("Add selected base range from feature coordinates"); location_button_panel.add(grab_button); grab_button.addActionListener(new ActionListener() { @@ -543,6 +549,7 @@ public class FeatureEdit extends JPanel }); final JButton remove_button = new JButton("Remove Range"); + remove_button.setToolTipText("Remove selected base range from feature coordinates"); location_button_panel.add(remove_button); remove_button.addActionListener(new ActionListener() { @@ -553,16 +560,18 @@ public class FeatureEdit extends JPanel }); final JButton goto_button = new JButton("Goto Feature"); + goto_button.setToolTipText("Goto and select this feature"); location_button_panel.add(goto_button); goto_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { goto_event_source.gotoBase(getFeature().getFirstBaseMarker()); + getSelection().set(getFeature()); } }); - final JButton select_button = new JButton("Select Feature"); +/* final JButton select_button = new JButton("Select Feature"); location_button_panel.add(select_button); select_button.addActionListener(new ActionListener() { @@ -570,7 +579,7 @@ public class FeatureEdit extends JPanel { getSelection().set(getFeature()); } - }); + });*/ if(Options.getOptions().getPropertyTruthValue("sanger_options")) { @@ -588,10 +597,9 @@ public class FeatureEdit extends JPanel } catch(QualifierParseException exception) { - final String error_string = exception.getMessage(); new MessageDialog(frame, - "Cannot tidy - qualifier error: " + - error_string); + "Cannot tidy - qualifier error: " + + exception.getMessage()); } } }); @@ -771,6 +779,33 @@ public class FeatureEdit extends JPanel }); } + final JButton userQualifiers = new JButton("User Qualifiers"); + userQualifiers.setToolTipText("User defined qualifier selection"); + location_button_panel.add(userQualifiers); + userQualifiers.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + if(userDefinedQualifierFrame == null) + { + userDefinedQualifierFrame = new UserDefinedQualifier(); + userDefinedQualifierFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); + } + + userDefinedQualifierFrame.pack(); + final JFrame topFrame = + (JFrame) SwingUtilities.getWindowAncestor(FeatureEdit.this); + Point p = topFrame.getLocationOnScreen(); + p.x -= userDefinedQualifierFrame.getWidth(); + if(p.x < 10) + p.x = 10; + userDefinedQualifierFrame.setLocation(p); + + userDefinedQualifierFrame.setQualifierTextArea(qualifier_text_area); + userDefinedQualifierFrame.setVisible(true); + } + }); + middle_panel.add(location_panel, "North"); add(key_and_qualifier_panel, "North"); @@ -781,6 +816,8 @@ public class FeatureEdit extends JPanel if(edit_feature.getEntry() != null) stopListening(); frame.dispose(); + if(userDefinedQualifierFrame != null) + userDefinedQualifierFrame.setVisible(false); } }); @@ -798,6 +835,8 @@ public class FeatureEdit extends JPanel propertiesPanel.updateSettings(); frame.dispose(); + if(userDefinedQualifierFrame != null) + userDefinedQualifierFrame.setVisible(false); } } }); @@ -1125,43 +1164,30 @@ public class FeatureEdit extends JPanel private void tidy() throws QualifierParseException { final StringBuffer buffer = new StringBuffer(); - final QualifierVector qualifiers = qualifier_text_area.getParsedQualifiers(getEntryInformation()); - - for(int qualifier_index = 0; qualifier_index < qualifiers.size(); - ++qualifier_index) + + for(Qualifier this_qualifier: qualifiers) { - final Qualifier this_qualifier = (Qualifier)qualifiers.elementAt(qualifier_index); - final QualifierInfo qualifier_info = getEntryInformation().getQualifierInfo(this_qualifier.getName()); - final StringVector qualifier_strings = StreamQualifier.toStringVector(qualifier_info, this_qualifier); - for(int value_index = 0; value_index < qualifier_strings.size(); - ++value_index) - { - final String qualifier_string = - (String)qualifier_strings.elementAt(value_index); - + for(String qualifier_string: qualifier_strings) buffer.append(tidyHelper(qualifier_string) + "\n"); - } } - qualifier_text_area.setText(buffer.toString()); } private void tidyGO() throws QualifierParseException { String qualifier_txt = qualifier_text_area.getText(); - StringReader strRead = new StringReader(qualifier_txt); - BufferedReader buff = new BufferedReader(strRead); - String line; + BufferedReader buff = new BufferedReader(new StringReader(qualifier_txt)); final Vector<String> qual_str = new Vector<String>(); try { + String line; while((line = buff.readLine()) != null) qual_str.add(line); } @@ -1180,12 +1206,8 @@ public class FeatureEdit extends JPanel Collections.sort(qual_str, comparator); StringBuffer buffer = new StringBuffer(); - for(int i = 0; i < qual_str.size(); i++) - { - final String qualifier_string = - qual_str.elementAt(i); + for(String qualifier_string: qual_str) buffer.append(tidyHelper(qualifier_string) + "\n"); - } qualifier_text_area.setText(buffer.toString()); } @@ -1597,11 +1619,8 @@ public class FeatureEdit extends JPanel final StringBuffer buffer = new StringBuffer(); final QualifierVector qualifiers = getFeature().getQualifiers(); - for(int qualifier_index = 0; qualifier_index < qualifiers.size(); - ++qualifier_index) + for(Qualifier this_qualifier: qualifiers) { - final Qualifier this_qualifier = (Qualifier)qualifiers.elementAt(qualifier_index); - // // strip out CV qualifiers // @@ -1621,12 +1640,8 @@ public class FeatureEdit extends JPanel final StringVector qualifier_strings = StreamQualifier.toStringVector(qualifier_info, this_qualifier); - for(int value_index = 0; value_index < qualifier_strings.size(); - ++value_index) - { - final String qualifier_string = (String)qualifier_strings.elementAt(value_index); - buffer.append(qualifier_string + "\n"); - } + for(String qualStr: qualifier_strings) + buffer.append(qualStr + "\n"); } return buffer.toString();