package org.ensembl.mart.explorer;
import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.List;
import javax.sql.DataSource;
import javax.swing.JPanel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.MutableTreeNode;
import org.ensembl.mart.lib.Attribute;
import org.ensembl.mart.lib.Field;
import org.ensembl.mart.lib.Filter;
import org.ensembl.mart.lib.Query;
import org.ensembl.mart.lib.QueryListener;
import org.ensembl.mart.lib.SequenceDescription;
import org.ensembl.mart.lib.config.DatasetConfig;
/**
* Base class for user input pages. Uses a BorderLayout by default.
*
* <p>Includes empty implementations of the QueryChangeListeners which can be
* overridden by implemting classes wishing to respond to query change events.
* </p>
*/
public class InputPage extends JPanel implements QueryListener {
protected QueryTreeView tree;
private Object userObject;
protected Query query;
private Field fieldName;
private String nodeLabel;
private MutableTreeNode node;
private String defaultNodeLabel;
protected List leafWidgets;
public InputPage(Query query, String name, QueryTreeView tree) {
setName(name);
this.query = query;
this.tree = tree;
setNodeLabel(name, null );
node = new DefaultMutableTreeNode(this);
leafWidgets = new ArrayList();
// use border layout so that a single item added to InputPage fills all available space in panel
setLayout(new BorderLayout());
query.addQueryChangeListener(this);
}
public InputPage(Query query, String name) {
this(query, name, null);
}
/**
* Adds this instance as a query change listener.
* @param query
*/
public InputPage(Query query) {
this(query, null, null);
}
public MutableTreeNode getNode() {
return node;
}
/**
* Derived classes should change _label_ to
* whatever html string they want to appear in the tree config.
* @return label.
*/
public String toString() {
return nodeLabel;
}
public void setNodeLabel(String title, String description) {
StringBuffer buf = new StringBuffer();
buf.append("<html>");
if ( title!=null ) {
buf.append("<b>").append(title);
if ( description!=null ) buf.append(":");
buf.append("</b> ");
}
if ( description!=null ) buf.append(description);
buf.append( "</html>" );
nodeLabel = buf.toString();
}
/**
* @return
*/
public String getNodeLabel() {
return nodeLabel;
}
/**
* User object is an object that the user has attached to
* this page.
* @return user object if set, otherwise null.
*/
public Object getUserObject() {
return userObject;
}
/**
* User object is an object that the user has attached to
* this page.
* @return user object if set, otherwise null.
*/
public void setUserObject( Object userObject ) {
this.userObject = userObject;
}
public List getLeafWidgets() {
return leafWidgets;
}
/**
* @return field created by this InputPage, null if
* none set.
*/
public Field getField() {
return fieldName;
}
/**
* @param field
*/
protected void setField(Field field) {
this.fieldName = field;
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#queryNameChanged(org.ensembl.mart.lib.Query, java.lang.String, java.lang.String)
*/
public void queryNameChanged(Query sourceQuery, String oldName, String newName) {
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#datasetChanged(org.ensembl.mart.lib.Query, java.lang.String, java.lang.String)
*/
public void datasetChanged(Query source, String oldDataset, String newDataset) {
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#datasourceChanged(org.ensembl.mart.lib.Query, javax.sql.DataSource, javax.sql.DataSource)
*/
public void datasourceChanged(Query sourceQuery, DataSource oldDatasource, DataSource newDatasource) {
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#attributeAdded(org.ensembl.mart.lib.Query, int, org.ensembl.mart.lib.Attribute)
*/
public void attributeAdded(Query sourceQuery, int index, Attribute attribute) {
}
public void sequenceDescritpionChanged(Query sourceQuery, SequenceDescription seq, SequenceDescription mseq) {
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#attributeRemoved(org.ensembl.mart.lib.Query, int, org.ensembl.mart.lib.Attribute)
*/
public void attributeRemoved(Query sourceQuery, int index, Attribute attribute) {
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#filterAdded(org.ensembl.mart.lib.Query, int, org.ensembl.mart.lib.Filter)
*/
public void filterAdded(Query sourceQuery, int index, Filter filter) {
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#filterRemoved(org.ensembl.mart.lib.Query, int, org.ensembl.mart.lib.Filter)
*/
public void filterRemoved(Query sourceQuery, int index, Filter filter) {
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#filterChanged(org.ensembl.mart.lib.Query, org.ensembl.mart.lib.Filter, org.ensembl.mart.lib.Filter)
*/
public void filterChanged(Query sourceQuery, int index, Filter oldFilter, Filter newFilter) {
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#sequenceDescriptionChanged(org.ensembl.mart.lib.Query, org.ensembl.mart.lib.SequenceDescription, org.ensembl.mart.lib.SequenceDescription)
*/
public void sequenceDescriptionChanged(Query sourceQuery, SequenceDescription oldSequenceDescription, SequenceDescription newSequenceDescription) {
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#limitChanged(org.ensembl.mart.lib.Query, int, int)
*/
public void limitChanged(Query query, int oldLimit, int newLimit) {
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#starBasesChanged(org.ensembl.mart.lib.Query, java.lang.String[], java.lang.String[])
*/
public void starBasesChanged(Query sourceQuery, String[] oldStarBases, String[] newStarBases) {
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#primaryKeysChanged(org.ensembl.mart.lib.Query, java.lang.String[], java.lang.String[])
*/
public void primaryKeysChanged(Query sourceQuery, String[] oldPrimaryKeys, String[] newPrimaryKeys) {
}
/* (non-Javadoc)
* @see org.ensembl.mart.lib.QueryChangeListener#datasetConfigChanged(org.ensembl.mart.lib.Query, org.ensembl.mart.lib.config.DatasetConfig, org.ensembl.mart.lib.config.DatasetConfig)
*/
public void datasetConfigChanged(Query query, DatasetConfig oldDatasetConfig, DatasetConfig newDatasetConfig) {
}
}