/* SlaveSignalPlotCorner.java created 2007-11-08
*
*/
package org.signalml.app.view.signal;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.awt.Component;
import java.awt.Container;
import java.awt.Point;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import org.signalml.app.util.IconUtils;
import org.signalml.app.view.common.components.CompactButton;
import org.signalml.app.view.signal.popup.SlavePlotSettingsPopupDialog;
/** SlaveSignalPlotCorner
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class SlaveSignalPlotCorner extends SignalPlotCorner {
private static final long serialVersionUID = 1L;
private SlavePlotSettingsPopupDialog slavePlotSettingsPopupDialog;
private CompactButton configureSlavePlotButton;
public SlaveSignalPlotCorner(SignalPlot plot) {
super(plot);
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
configureSlavePlotButton = new CompactButton(new ConfigureSlavePlotAction());
configureSlavePlotButton.setAlignmentY(Component.TOP_ALIGNMENT);
JButton removeSlavePlotButton = new CompactButton(new RemoveSlavePlotAction());
removeSlavePlotButton.setAlignmentY(Component.TOP_ALIGNMENT);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
buttonPanel.add(removeSlavePlotButton);
buttonPanel.add(Box.createHorizontalStrut(3));
buttonPanel.add(configureSlavePlotButton);
buttonPanel.add(Box.createHorizontalStrut(3));
buttonPanel.add(Box.createHorizontalGlue());
add(buttonPanel);
add(Box.createVerticalStrut(3));
add(Box.createVerticalGlue());
}
public SlavePlotSettingsPopupDialog getSlavePlotSettingsPopupDialog() {
return slavePlotSettingsPopupDialog;
}
public void setSlavePlotSettingsPopupDialog(SlavePlotSettingsPopupDialog slavePlotSettingsPopupDialog) {
this.slavePlotSettingsPopupDialog = slavePlotSettingsPopupDialog;
}
protected class RemoveSlavePlotAction extends AbstractAction {
private static final long serialVersionUID = 1L;
public RemoveSlavePlotAction() {
super();
putValue(AbstractAction.SMALL_ICON, IconUtils.loadClassPathIcon("org/signalml/app/icon/removeslaveplot.png"));
putValue(AbstractAction.SHORT_DESCRIPTION,_("Remove signal plot"));
}
public void actionPerformed(ActionEvent ev) {
plot.getView().removeSlavePlot(plot);
}
}
protected class ConfigureSlavePlotAction extends AbstractAction {
private static final long serialVersionUID = 1L;
public ConfigureSlavePlotAction() {
super();
putValue(AbstractAction.SMALL_ICON, IconUtils.loadClassPathIcon("org/signalml/app/icon/configureslaveplot.png"));
putValue(AbstractAction.SHORT_DESCRIPTION,_("Configure signal plot"));
}
public void actionPerformed(ActionEvent ev) {
Container ancestor = getTopLevelAncestor();
Point containerLocation = ancestor.getLocation();
Point location = SwingUtilities.convertPoint(configureSlavePlotButton, new Point(0,0), ancestor);
slavePlotSettingsPopupDialog.initializeNow();
if (location.y < ancestor.getHeight()/2) {
location.translate(containerLocation.x, containerLocation.y);
} else {
location.translate(containerLocation.x, containerLocation.y + configureSlavePlotButton.getHeight() - slavePlotSettingsPopupDialog.getHeight());
}
slavePlotSettingsPopupDialog.setLocation(location);
slavePlotSettingsPopupDialog.showDialog(plot);
}
}
}