Skip to content
Snippets Groups Projects
Commit cb3a50ad authored by tjc's avatar tjc
Browse files

updates

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@5715 ee4ac58c-ac51-4696-9907-e4b3aa274f04
parent 2ea57eee
No related branches found
No related tags found
No related merge requests found
...@@ -17,31 +17,38 @@ ...@@ -17,31 +17,38 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* *
* $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/genebuilder/ortholog/OrthologPanel.java,v 1.1 2007-03-15 11:39:07 tjc Exp $ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/genebuilder/ortholog/OrthologPanel.java,v 1.2 2007-03-20 13:48:10 tjc Exp $
*/ */
package uk.ac.sanger.artemis.components.genebuilder.ortholog; package uk.ac.sanger.artemis.components.genebuilder.ortholog;
import java.awt.Component; import java.awt.Component;
import java.awt.FlowLayout; import java.awt.FlowLayout;
import java.awt.GridBagConstraints; import java.awt.event.ActionEvent;
import java.awt.GridBagLayout; import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.Box; import javax.swing.Box;
import javax.swing.JLabel; import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JTextField;
import uk.ac.sanger.artemis.FeatureChangeEvent; import uk.ac.sanger.artemis.FeatureChangeEvent;
import uk.ac.sanger.artemis.FeatureChangeListener; import uk.ac.sanger.artemis.FeatureChangeListener;
import uk.ac.sanger.artemis.Feature; import uk.ac.sanger.artemis.Feature;
import uk.ac.sanger.artemis.io.DocumentEntry;
import uk.ac.sanger.artemis.io.Qualifier; import uk.ac.sanger.artemis.io.Qualifier;
import uk.ac.sanger.artemis.io.QualifierVector; import uk.ac.sanger.artemis.io.QualifierVector;
import uk.ac.sanger.artemis.util.DatabaseDocument;
import uk.ac.sanger.artemis.util.StringVector;
import uk.ac.sanger.artemis.components.genebuilder.JExtendedComboBox;
public class OrthologPanel extends JPanel public class OrthologPanel extends JPanel
implements FeatureChangeListener implements FeatureChangeListener
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private QualifierVector orthologQualifiers; private QualifierVector ortho_para_logQualifiers;
public OrthologPanel(final Feature feature) public OrthologPanel(final Feature feature)
{ {
...@@ -61,80 +68,160 @@ public class OrthologPanel extends JPanel ...@@ -61,80 +68,160 @@ public class OrthologPanel extends JPanel
return false; return false;
} }
private Component createOrthologQualifiersComponent() private Component createOrthoParaLogQualifiersComponent(final Feature feature)
{ {
int nrows = 0; Qualifier orthoQualifier = ortho_para_logQualifiers.getQualifierByName("ortholog");
Qualifier paraQualifier = ortho_para_logQualifiers.getQualifierByName("paralog");
Qualifier idQualifier = orthologQualifiers.getQualifierByName("ID"); DocumentEntry entry = (DocumentEntry)feature.getEmblFeature().getEntry();
DatabaseDocument doc = (DatabaseDocument)entry.getDocument();
final Vector databases = (Vector)doc.getDatabaseNames();
Box gffBox = Box.createVerticalBox(); //
gffBox.add(Box.createVerticalStrut(10)); // ortholog
Box xBox = Box.createVerticalBox();
GridBagLayout grid = new GridBagLayout(); JButton addOrthoButton = new JButton("ADD ORTHOLOG");
GridBagConstraints c = new GridBagConstraints(); addOrthoButton.addActionListener(new ActionListener()
c.ipady = 5;
JPanel gridPanel = new JPanel(grid);
if(idQualifier != null)
{ {
final String uniquename = (String)idQualifier.getValues().get(0); public void actionPerformed(ActionEvent e)
JLabel idField = new JLabel("ID"); {
JExtendedComboBox dbs = new JExtendedComboBox(databases);
c.gridx = 0; JTextField accession = new JTextField(15);
c.gridy = 0;
c.ipadx = 5; Box yBox = Box.createHorizontalBox();
c.anchor = GridBagConstraints.EAST; yBox.add(dbs);
gridPanel.add(idField, c); yBox.add(accession);
c.gridx = 1;
c.gridy = 0;
c.ipadx = 0;
c.anchor = GridBagConstraints.WEST;
//gridPanel.add(uniquenameTextField, c);
int select = JOptionPane.showConfirmDialog(null,
yBox, "Add Ortholog",
JOptionPane.OK_CANCEL_OPTION);
if(select == JOptionPane.CANCEL_OPTION)
return;
add("ortholog", ((String)dbs.getSelectedItem())+":"+
accession.getText().trim(), feature);
}
});
xBox.add(addOrthoButton);
if(orthoQualifier != null)
{
StringVector orthologs = orthoQualifier.getValues();
for(int i=0; i<orthologs.size(); i++)
{
JTextField ortholog = new JTextField( (String)orthologs.get(i) );
xBox.add(ortholog);
}
} }
//
// paralog
JButton addParaButton = new JButton("ADD PARALOG");
addParaButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JExtendedComboBox dbs = new JExtendedComboBox(databases);
JTextField accession = new JTextField(15);
Box yBox = Box.createHorizontalBox();
yBox.add(dbs);
yBox.add(accession);
int select = JOptionPane.showConfirmDialog(null,
yBox, "Add Paralog",
JOptionPane.OK_CANCEL_OPTION);
if(select == JOptionPane.CANCEL_OPTION)
return;
add("paralog", ((String)dbs.getSelectedItem())+":"+
accession.getText().trim(), feature);
}
});
xBox.add(addParaButton);
if(paraQualifier != null)
{
StringVector paralogs = paraQualifier.getValues();
for(int i=0; i<paralogs.size(); i++)
{
JTextField paralog = new JTextField( (String)paralogs.get(i) );
xBox.add(paralog);
}
}
gffBox.add(gridPanel); return xBox;
return gffBox;
} }
/**
* Update ortho/paralogs for a feature
* @param feature
*/
public void updateFromFeature(final Feature feature) public void updateFromFeature(final Feature feature)
{ {
removeAll(); removeAll();
if(orthologQualifiers != null) if(ortho_para_logQualifiers != null)
feature.removeFeatureChangeListener(this); feature.removeFeatureChangeListener(this);
orthologQualifiers = feature.getQualifiers().copy(); ortho_para_logQualifiers = feature.getQualifiers().copy();
orthologQualifiers = new QualifierVector(); ortho_para_logQualifiers = new QualifierVector();
final QualifierVector qualifiers = feature.getQualifiers(); final QualifierVector qualifiers = feature.getQualifiers();
for(int i = 0 ; i < qualifiers.size(); ++i) for(int i = 0 ; i < qualifiers.size(); ++i)
{ {
Qualifier qualifier = (Qualifier)qualifiers.elementAt(i); Qualifier qualifier = (Qualifier)qualifiers.elementAt(i);
if(isOrthologTag(qualifier)) if(isOrthologTag(qualifier))
orthologQualifiers.addElement(qualifier.copy()); ortho_para_logQualifiers.addElement(qualifier.copy());
} }
feature.addFeatureChangeListener(this); feature.addFeatureChangeListener(this);
add(createOrthologQualifiersComponent()); add(createOrthoParaLogQualifiersComponent(feature));
repaint(); repaint();
revalidate(); revalidate();
} }
/**
* Add ortholog/paralog
* @param name ortholog or paralog
* @param value
*/
public void add(final String name, final String value, final Feature feature)
{
final int index;
Qualifier qualifier = ortho_para_logQualifiers.getQualifierByName(name);
if(qualifier == null)
{
qualifier = new Qualifier(name);
index = -1;
}
else
index = ortho_para_logQualifiers.indexOf(qualifier);
qualifier.addValue(value);
if(index > -1)
{
ortho_para_logQualifiers.remove(index);
ortho_para_logQualifiers.add(index, qualifier);
}
else
ortho_para_logQualifiers.add(qualifier);
removeAll();
add(createOrthoParaLogQualifiersComponent(feature));
repaint();
revalidate();
}
/** /**
* Get the latest (edited) controlled vocab qualifiers * Get the latest (edited) controlled vocab qualifiers
* @return * @return
*/ */
public QualifierVector getOrthologQualifiers() public QualifierVector getOrthologQualifiers()
{ {
// check editable components for changes return ortho_para_logQualifiers;
//
return orthologQualifiers;
} }
public void featureChanged(FeatureChangeEvent event) public void featureChanged(FeatureChangeEvent event)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment