/*
Copyright (C) 2003 EBI, GRL
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.ensembl.mart.explorer;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JRadioButton;
import org.ensembl.mart.lib.FormatSpec;
import org.ensembl.mart.lib.Query;
import org.ensembl.mart.lib.SequenceDescription;
/**
* Input panel where user can set the result's format and destination.
*/
public class OutputSettingsPage extends InputPage implements ActionListener {
private JRadioButton tabulated;
private JRadioButton fasta;
private JRadioButton tab;
private JRadioButton comma;
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
/**
*
*/
public OutputSettingsPage(Query query) {
super(query, "Output");
ButtonGroup group = new ButtonGroup();
tabulated = new JRadioButton("Tabulated Format");
tabulated.setSelected(true);
tabulated.addActionListener(this);
group.add(tabulated);
fasta = new JRadioButton("FASTA Format");
fasta.setEnabled(query.getSequenceDescription()!=null);
fasta.addActionListener(this);
group.add(fasta);
group = new ButtonGroup();
tab = new JRadioButton("tabs");
tab.addActionListener(this);
tab.setSelected(true);
group.add(tab);
comma = new JRadioButton("comma");
comma.addActionListener(this);
group.add(comma);
Dimension d = new Dimension(500, 35);
Box tabulatedOptions = Box.createHorizontalBox();
tabulatedOptions.setPreferredSize(d);
tabulatedOptions.setMaximumSize(d);
tabulatedOptions.add(Box.createHorizontalStrut(50));
tabulatedOptions.add(tabulated);
tabulatedOptions.add(tab);
tabulatedOptions.add(comma);
tabulatedOptions.add(Box.createHorizontalGlue());
Box fastaOptions = Box.createHorizontalBox();
fastaOptions.setPreferredSize(d);
fastaOptions.setMaximumSize(d);
fastaOptions.add(Box.createHorizontalStrut(50));
fastaOptions.add(fasta);
fastaOptions.add(Box.createHorizontalGlue());
Box v = Box.createVerticalBox();
v.add(tabulatedOptions);
v.add(fastaOptions);
v.add(Box.createVerticalGlue());
add(v);
dependencies();
}
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
dependencies();
String description = "fasta";
if (tabulated.isSelected()) {
if (comma.isSelected())
description = "comma separated";
else
description = "tab separated";
}
setNodeLabel(getName(), description);
changeSupport.firePropertyChange(
"output",
"olddummyvalue",
"newdummyvalue");
}
public void dependencies() {
tab.setEnabled(tabulated.isSelected());
comma.setEnabled(tabulated.isSelected());
}
/* (non-Javadoc)
* @see javax.swing.JComponent#addPropertyChangeListener(java.beans.PropertyChangeListener)
*/
public synchronized void addPropertyChangeListener(PropertyChangeListener listener) {
changeSupport.addPropertyChangeListener(listener);
}
/* (non-Javadoc)
* @see javax.swing.JComponent#addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
*/
public synchronized void addPropertyChangeListener(
String propertyName,
PropertyChangeListener listener) {
changeSupport.addPropertyChangeListener(propertyName, listener);
}
/* (non-Javadoc)
* @see javax.swing.JComponent#getPropertyChangeListeners()
*/
public synchronized PropertyChangeListener[] getPropertyChangeListeners() {
return changeSupport.getPropertyChangeListeners();
}
/* (non-Javadoc)
* @see javax.swing.JComponent#getPropertyChangeListeners(java.lang.String)
*/
public synchronized PropertyChangeListener[] getPropertyChangeListeners(String propertyName) {
return changeSupport.getPropertyChangeListeners(propertyName);
}
/* (non-Javadoc)
* @see javax.swing.JComponent#removePropertyChangeListener(java.beans.PropertyChangeListener)
*/
public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
changeSupport.removePropertyChangeListener(listener);
}
/* (non-Javadoc)
* @see javax.swing.JComponent#removePropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
*/
public synchronized void removePropertyChangeListener(
String propertyName,
PropertyChangeListener listener) {
changeSupport.removePropertyChangeListener(propertyName, listener);
}
/**
* @return
*/
public FormatSpec getFormat() {
if (fasta.isSelected())
return FormatSpec.FASTAFORMAT;
else if (tab.isSelected())
return FormatSpec.TABSEPARATEDFORMAT;
else
return new FormatSpec(FormatSpec.TABULATED, ",");
}
public void sequenceDescriptionChanged(
Query sourceQuery,
SequenceDescription oldSequenceDescription,
SequenceDescription newSequenceDescription) {
fasta.setEnabled(newSequenceDescription != null);
if (!fasta.isEnabled()) tabulated.doClick();
}
}