/*
* Copyright 2010-2015 Institut Pasteur.
*
* This file is part of Icy.
*
* Icy is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Icy 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Icy. If not, see <http://www.gnu.org/licenses/>.
*/
package icy.gui.sequence;
import icy.gui.dialog.ActionDialog;
import icy.gui.dialog.MessageDialog;
import icy.main.Icy;
import icy.math.UnitUtil;
import icy.math.UnitUtil.UnitPrefix;
import icy.sequence.Sequence;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author Stephane
*/
public class SequencePropertiesDialog extends ActionDialog
{
/**
*
*/
private static final long serialVersionUID = 5696186054980120411L;
SequencePropertiesPanel panel;
public SequencePropertiesDialog(final Sequence sequence)
{
super("Sequence Properties");
initialize();
panel.setSequence(sequence);
// don't close automatically
setCloseAfterAction(false);
setOkAction(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
final double sx, sy, sz, st;
sx = panel.getPixelSizeXFieldValue();
sy = panel.getPixelSizeYFieldValue();
sz = panel.getPixelSizeZFieldValue();
st = panel.getTimeIntervalFieldValue();
if ((sx <= 0d) || (sy <= 0d) || (sz <= 0d))
{
MessageDialog.showDialog("Pixel size values should be > 0 !", MessageDialog.WARNING_MESSAGE);
return;
}
sequence.setName(panel.getNameFieldValue());
sequence.setPixelSizeX(UnitUtil.getValueInUnit(sx, panel.getPixelSizeXUnit(), UnitPrefix.MICRO));
sequence.setPixelSizeY(UnitUtil.getValueInUnit(sy, panel.getPixelSizeYUnit(), UnitPrefix.MICRO));
sequence.setPixelSizeZ(UnitUtil.getValueInUnit(sz, panel.getPixelSizeZUnit(), UnitPrefix.MICRO));
double valueInSec = st;
switch (panel.getTimeIntervalUnit())
{
case 0:
valueInSec *= 60d;
case 1:
valueInSec *= 60d;
break;
case 3:
valueInSec /= 1000d;
break;
}
// time interval
sequence.setTimeInterval(valueInSec);
// position
sequence.setPositionX(UnitUtil.getValueInUnit(panel.getPositionXValue(), panel.getPositionXUnit(),
UnitPrefix.MICRO));
sequence.setPositionY(UnitUtil.getValueInUnit(panel.getPositionYValue(), panel.getPositionYUnit(),
UnitPrefix.MICRO));
sequence.setPositionZ(UnitUtil.getValueInUnit(panel.getPositionZValue(), panel.getPositionZUnit(),
UnitPrefix.MICRO));
// channel name
for (int c = 0; c < sequence.getSizeC(); c++)
sequence.setChannelName(c, panel.getChannelNameFieldValue(c));
dispose();
}
});
pack();
setLocationRelativeTo(Icy.getMainInterface().getMainFrame());
setVisible(true);
}
private void initialize()
{
panel = new SequencePropertiesPanel();
mainPanel.setLayout(new BorderLayout());
mainPanel.add(panel, BorderLayout.CENTER);
mainPanel.validate();
}
}