package cz.nkp.differ.gui.windows;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Layout;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
import cz.nkp.differ.util.GUIMacros;
import java.text.DecimalFormat;
/**
*
* @author xrosecky
*/
public class HistogramSettingsWindow extends Window {
private TextField[] xRange = null;
private TextField[] yRange = null;
private CheckBox checkBox = null;
private Button okButton = null;
public HistogramSettingsWindow(double[] settings, boolean isLogarithmic) {
setCaption("Create Profile");
setModal(true);
setDraggable(false);
setResizable(false);
center();
setWidth(335, Window.UNITS_PIXELS);
VerticalLayout windowLayout = new VerticalLayout();
windowLayout.setSpacing(true);
windowLayout.addComponent(createHistogramSettingsWindow(settings));
HorizontalLayout buttonLayout = new HorizontalLayout();
okButton = new Button("OK");
buttonLayout.addComponent(okButton);
Button close = new Button("Close");
buttonLayout.addComponent(close);
close.addListener(GUIMacros.createWindowCloseButtonListener(this));
windowLayout.addComponent(buttonLayout);
addComponent(windowLayout);
}
public Layout createHistogramSettingsWindow(double[] settings) {
VerticalLayout layout = new VerticalLayout();
layout.setWidth(this.getWidth(), this.getWidthUnits());
float childWidth = this.getWidth() * 0.8f;
int childWidthUnits = this.getWidthUnits();
layout.addComponent(new Label("X axis"));
xRange = createRangeField(layout, new double[]{settings[0], settings[1]});
layout.addComponent(new Label("Y axis"));
yRange = createRangeField(layout, new double[]{settings[2], settings[3]});
checkBox = new CheckBox();
checkBox.setCaption("logarithmic");
layout.addComponent(checkBox);
return layout;
}
private TextField[] createRangeField(Layout mainLayout, double[] range) {
TextField start = new TextField();
DecimalFormat df = new DecimalFormat("#.###");
start.setValue(df.format(range[0]));
TextField end = new TextField();
end.setValue(df.format(range[1]));
HorizontalLayout layout = new HorizontalLayout();
layout.addComponent(start);
layout.addComponent(new Label(" - "));
layout.addComponent(end);
mainLayout.addComponent(layout);
return new TextField[]{start, end};
}
public void setOnSubmit(ClickListener listener) {
okButton.addListener(listener);
}
public double[] getXRange() {
return new double[]{Double.parseDouble((String) xRange[0].getValue()), Double.parseDouble((String) xRange[1].getValue())};
}
public double[] getYRange() {
return new double[]{Double.parseDouble((String) yRange[0].getValue()), Double.parseDouble((String) yRange[1].getValue())};
}
public boolean isLogarithmic() {
return checkBox.booleanValue();
}
}