diff --git a/uk/ac/sanger/artemis/components/genebuilder/GeneComponentTree.java b/uk/ac/sanger/artemis/components/genebuilder/GeneComponentTree.java index 9036142a651ed43083fe393189a920818f10f4ac..ab2d1eca880dff48ec3a7585a7c07c6a53bc2834 100644 --- a/uk/ac/sanger/artemis/components/genebuilder/GeneComponentTree.java +++ b/uk/ac/sanger/artemis/components/genebuilder/GeneComponentTree.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/genebuilder/GeneComponentTree.java,v 1.18 2007-05-01 09:36:42 tjc Exp $ + * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/genebuilder/GeneComponentTree.java,v 1.19 2007-05-03 12:57:01 tjc Exp $ */ package uk.ac.sanger.artemis.components.genebuilder; @@ -351,7 +351,11 @@ public class GeneComponentTree extends JTree if(feature == null) feature = new uk.ac.sanger.artemis.Feature(embl_feature); - gene_builder.setActiveFeature(feature, true); + boolean isSet = true; + if(feature.isReadOnly()) + isSet = false; + + gene_builder.setActiveFeature(feature, isSet); if(selection != null) selection.set(feature); } diff --git a/uk/ac/sanger/artemis/components/genebuilder/GeneViewerPanel.java b/uk/ac/sanger/artemis/components/genebuilder/GeneViewerPanel.java index 5ebfb1cfbad2ba8e79e34c5ecc9bc7de7771cd0e..dd0279de54d82116b26df21fcdf88adf52bd9bd7 100644 --- a/uk/ac/sanger/artemis/components/genebuilder/GeneViewerPanel.java +++ b/uk/ac/sanger/artemis/components/genebuilder/GeneViewerPanel.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/genebuilder/GeneViewerPanel.java,v 1.50 2007-05-01 15:02:18 tjc Exp $ + * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/genebuilder/GeneViewerPanel.java,v 1.51 2007-05-03 12:57:01 tjc Exp $ */ package uk.ac.sanger.artemis.components.genebuilder; @@ -1654,8 +1654,13 @@ public class GeneViewerPanel extends JPanel { selection.set( (uk.ac.sanger.artemis.Feature)((Feature)feature).getUserData()); + + boolean isSet = true; + if(((Feature)feature).isReadOnly()) + isSet = false; + gene_builder.setActiveFeature( - (uk.ac.sanger.artemis.Feature)((Feature)feature).getUserData(), true); + (uk.ac.sanger.artemis.Feature)((Feature)feature).getUserData(), isSet); } else { diff --git a/uk/ac/sanger/artemis/components/genebuilder/cv/CVPanel.java b/uk/ac/sanger/artemis/components/genebuilder/cv/CVPanel.java index 02b0fddb87d4c7470037706d7b88d6f3b4305f3c..f3d11fe57d454fc7387dc8c1da4b3a3b26d33690 100644 --- a/uk/ac/sanger/artemis/components/genebuilder/cv/CVPanel.java +++ b/uk/ac/sanger/artemis/components/genebuilder/cv/CVPanel.java @@ -77,6 +77,10 @@ public class CVPanel extends JPanel private JExtendedComboBox evidenceList; + private JButton hide_show_CC; + private JButton hide_show_GO; + + public CVPanel(final Feature feature) { super(new BorderLayout()); @@ -141,6 +145,21 @@ public class CVPanel extends JPanel if(this_qualifier.getName().equals("GO")) { + final Box yBox = Box.createVerticalBox(); + if(hide_show_GO == null) + hide_show_GO = new JButton("-"); + + addHideShowButton(yBox, hide_show_GO); + + Box xLabel = Box.createHorizontalBox(); + JLabel lab = new JLabel("GO terms"); + lab.setFont(lab.getFont().deriveFont(Font.BOLD)); + xLabel.add(lab); + xLabel.add(Box.createHorizontalGlue()); + xLabel.add(hide_show_GO); + + cvBox.add(xLabel); + n++; final StringVector qualifier_strings = this_qualifier.getValues(); @@ -161,8 +180,11 @@ public class CVPanel extends JPanel xBox.add(Box.createHorizontalGlue()); xBox.add(getRemoveButton(this_qualifier, v_index)); - cvBox.add(xBox); + yBox.add(xBox); } + cvBox.add(yBox); + if(hide_show_GO.getText().equals("+")) + yBox.setVisible(false); } } @@ -179,7 +201,21 @@ public class CVPanel extends JPanel if(this_qualifier.getName().equals("controlled_curation")) { final StringVector qualifier_strings = this_qualifier.getValues(); - + + final Box yBox = Box.createVerticalBox(); + if(hide_show_CC == null) + hide_show_CC = new JButton("-"); + + addHideShowButton(yBox, hide_show_CC); + + Box xLabel = Box.createHorizontalBox(); + JLabel lab = new JLabel("Controlled Curation"); + lab.setFont(lab.getFont().deriveFont(Font.BOLD)); + xLabel.add(lab); + xLabel.add(Box.createHorizontalGlue()); + xLabel.add(hide_show_CC); + cvBox.add(xLabel); + for(int value_index = 0; value_index < qualifier_strings.size(); ++value_index) { @@ -192,14 +228,17 @@ public class CVPanel extends JPanel ControlledCurationBox ccBox = new ControlledCurationBox(this_qualifier, qualifierString, value_index, - dimension4, go_dimension); + dimension, go_dimension); editableComponents.add(ccBox); xBox = ccBox.getBox(); xBox.add(Box.createHorizontalGlue()); xBox.add(getRemoveButton(this_qualifier, v_index)); - cvBox.add(xBox); + yBox.add(xBox); } + cvBox.add(yBox); + if(hide_show_CC.getText().equals("+")) + yBox.setVisible(false); } } @@ -306,6 +345,42 @@ public class CVPanel extends JPanel return cvBox; } + /** + * Add hide/show button to CV section + * @param box + */ + private void addHideShowButton(final Box box, final JButton hide_show) + { + hide_show.setOpaque(false); + + // remove any old listeners + ActionListener l[] = hide_show.getActionListeners(); + if(l != null) + for(int i=0;i<l.length;i++) + hide_show.removeActionListener(l[i]); + + hide_show.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + if(hide_show.getText().equals("-")) + { + hide_show.setText("+"); + box.setVisible(false); + } + else + { + hide_show.setText("-"); + box.setVisible(true); + } + } + }); + } + + /** + * Separator between CV's + * @param cvBox + */ private void addSeparator(final Box cvBox) { JSeparator separator = new JSeparator(); diff --git a/uk/ac/sanger/artemis/components/genebuilder/cv/ControlledCurationBox.java b/uk/ac/sanger/artemis/components/genebuilder/cv/ControlledCurationBox.java index a7e292efc68e4ea0b1f856e4d7d05a6a53956638..2fdc9ec40f28cca2179d2130e124ba5227f9a5e3 100644 --- a/uk/ac/sanger/artemis/components/genebuilder/cv/ControlledCurationBox.java +++ b/uk/ac/sanger/artemis/components/genebuilder/cv/ControlledCurationBox.java @@ -27,10 +27,10 @@ package uk.ac.sanger.artemis.components.genebuilder.cv; import java.awt.Dimension; import javax.swing.Box; -import javax.swing.JLabel; import javax.swing.JTextField; import uk.ac.sanger.artemis.components.Splash; +import uk.ac.sanger.artemis.components.genebuilder.JExtendedComboBox; import uk.ac.sanger.artemis.io.Qualifier; import uk.ac.sanger.artemis.io.QualifierVector; import uk.ac.sanger.artemis.util.StringVector; @@ -40,6 +40,9 @@ class ControlledCurationBox extends AbstractCvBox private Box xBox; private int value_index; private JTextField termTextField; + private JTextField dbxrefTextField; + private JExtendedComboBox evidenceList; + private JTextField qualfTextField; private DatePanel dateField; private String origQualifierString; private Qualifier origQualifier; @@ -55,23 +58,66 @@ class ControlledCurationBox extends AbstractCvBox this.value_index = value_index; this.xBox = Box.createHorizontalBox(); - JLabel cclabel = new JLabel("controlled_curation"); - if(go_dimension != null) - cclabel.setPreferredSize(go_dimension); + //JLabel cclabel = new JLabel("controlled_curation"); + //if(go_dimension != null) + // cclabel.setPreferredSize(go_dimension); - xBox.add(cclabel); + //xBox.add(cclabel); String term = getField("term=", qualifierString); termTextField = new JTextField(term); termTextField.setOpaque(false); termTextField.setEditable(false); termTextField.setToolTipText("term column"); - termTextField.setPreferredSize(dimension); - termTextField.setMaximumSize(dimension); + + if(go_dimension != null) + { + final Dimension d = new Dimension(go_dimension.width+dimension.width, + dimension.height); + termTextField.setPreferredSize(d); + termTextField.setMaximumSize(d); + } + else + { + termTextField.setPreferredSize(dimension); + termTextField.setMaximumSize(dimension); + } termTextField.setCaretPosition(0); xBox.add(termTextField); + String dbxref = getField("db_xref=", qualifierString); + dbxrefTextField = new JTextField(dbxref); + dbxrefTextField.setToolTipText("dbxref column"); + dbxrefTextField.setPreferredSize(dimension); + dbxrefTextField.setMaximumSize(dimension); + dbxrefTextField.setActionCommand("db_xref="); + xBox.add(dbxrefTextField); + + // feature_cvterm_prop's + String evidence = getField("evidence=", qualifierString); + + evidenceList = new JExtendedComboBox(GoBox.evidenceCodes[1]); + evidenceList.setOpaque(false); + evidenceList.setToolTipText("evidence column"); + evidenceList.setSelectedIndex( GoBox.getEvidenceIndex(evidence) ); + + Dimension d = evidenceList.getPreferredSize(); + d = new Dimension(80,(int)d.getHeight()); + evidenceList.setPreferredSize(d); + evidenceList.setMaximumSize(d); + evidenceList.setActionCommand("evidence="); + xBox.add(evidenceList); + + String qual = getField("qualifier=", qualifierString); + qualfTextField = new JTextField(qual); + qualfTextField.setToolTipText("qualifier column"); + qualfTextField.setPreferredSize(dimension); + qualfTextField.setMaximumSize(dimension); + qualfTextField.setActionCommand("qualifier="); + xBox.add(qualfTextField); + + dateField = new DatePanel(getField("date=", qualifierString), dimension.height); @@ -82,9 +128,23 @@ class ControlledCurationBox extends AbstractCvBox protected boolean isQualifierChanged() { - String old = getField("date=", origQualifierString); + String old = getField("db_xref=", origQualifierString); + if(!old.equals(dbxrefTextField.getText().trim())) + return true; + + old = getField("evidence=", origQualifierString); + if(!(old.equals("") && evidenceList.getSelectedIndex() == -1) ) + if(!old.equals(GoBox.evidenceCodes[2][ evidenceList.getSelectedIndex() ])) + return true; + + old = getField("qualifier=", origQualifierString); + if(!old.equals(qualfTextField.getText())) + return true; + + old = getField("date=", origQualifierString); if(!old.equals(dateField.getText())) return true; + return false; } @@ -116,6 +176,28 @@ class ControlledCurationBox extends AbstractCvBox newQualifierString); } + old = getField("db_xref=", origQualifierString); + if(!old.equals(dbxrefTextField.getText().trim())) + { + newQualifierString = changeField("db_xref=", dbxrefTextField.getText().trim(), + newQualifierString); + } + + old = getField("evidence=", origQualifierString); + if(evidenceList.getSelectedIndex() > -1 && + !old.equals(GoBox.evidenceCodes[2][ evidenceList.getSelectedIndex() ])) + { + newQualifierString = changeField("evidence=", GoBox.evidenceCodes[2][ evidenceList.getSelectedIndex() ], + newQualifierString); + } + + old = getField("qualifier=", origQualifierString); + if(!old.equals(qualfTextField.getText())) + { + newQualifierString = changeField("qualifier=", qualfTextField.getText().trim(), + newQualifierString); + } + return newQualifierString; } diff --git a/uk/ac/sanger/artemis/components/genebuilder/cv/GoBox.java b/uk/ac/sanger/artemis/components/genebuilder/cv/GoBox.java index 35dd50d43084a1275ecb632320d936c3a1441f5b..6453a0d2dd40803f5def317c62d5041c708d9fb2 100644 --- a/uk/ac/sanger/artemis/components/genebuilder/cv/GoBox.java +++ b/uk/ac/sanger/artemis/components/genebuilder/cv/GoBox.java @@ -198,13 +198,21 @@ class GoBox extends AbstractCvBox xBox.add(dateField.getDateSpinner()); } - private int getEvidenceIndex(String evidence) + protected static int getEvidenceIndex(String evidence) { for(int i=0; i<evidenceCodes[2].length; i++) { - if(evidenceCodes[2][i].equals(evidence)) + if(evidenceCodes[2][i].equalsIgnoreCase(evidence)) return i; } + + // this is mainly to catch RCA + // - reviewed computational analysis (inferred from missing) + /*for(int i=0; i<evidenceCodes[2].length; i++) + { + if(evidenceCodes[2][i].indexOf(evidence) > -1) + return i; + }*/ return -1; } @@ -229,7 +237,7 @@ class GoBox extends AbstractCvBox return true; old = getField("evidence=", origQualifierString); - if(!old.equals(evidenceCodes[2][ evidenceList.getSelectedIndex() ])) + if(!old.equalsIgnoreCase(evidenceCodes[2][ evidenceList.getSelectedIndex() ])) return true; old = getField("qualifier=", origQualifierString);