package org.jzy3d.ui.editors;
import java.awt.GridLayout;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.jzy3d.chart.Chart;
import org.jzy3d.colors.Color;
import org.jzy3d.plot3d.primitives.enlightables.AbstractEnlightable;
import org.jzy3d.ui.LookAndFeel;
public class MaterialEditor extends JPanel{
public MaterialEditor(Chart chart){
LookAndFeel.apply();
this.chart = chart;
ambiantColorControl = new ColorEditor("Ambiant");
diffuseColorControl = new ColorEditor("Diffuse");
specularColorControl = new ColorEditor("Specular");
setLayout(new GridLayout(3,1));
//add(new JLabel("Ambiant"));
add(ambiantColorControl);
add(diffuseColorControl);
add(specularColorControl);
}
protected void registerColorControl(ColorEditor colorControl, final Color color){
final JSlider slider0 = colorControl.getSlider(0);
slider0.setValue( (int)color.r * slider0.getMaximum() );
slider0.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
color.r = getPercent(slider0);
chart.render();
}
});
final JSlider slider1 = colorControl.getSlider(1);
slider1.setValue( (int)color.g * slider1.getMaximum() );
slider1.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
color.g = getPercent(slider1);
chart.render();
}
});
final JSlider slider2 = colorControl.getSlider(2);
slider2.setValue( (int)color.b * slider2.getMaximum() );
slider2.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
color.b = getPercent(slider2);
chart.render();
}
});
/*final JSlider slider3 = colorControl.getSlider(3);
slider3.setValue( (int)color.a * slider3.getMaximum() );
slider3.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
color.a = getPercent(slider3);
chart.render();
}
});*/
}
protected float getPercent(JSlider slider){
return ((float)slider.getValue()) / ((float)slider.getMaximum());
}
public void setTarget(AbstractEnlightable enlightable){
this.enlightable = enlightable;
registerColorControl(ambiantColorControl, enlightable.getMaterialAmbiantReflection());
registerColorControl(diffuseColorControl, enlightable.getMaterialDiffuseReflection());
registerColorControl(specularColorControl, enlightable.getMaterialSpecularReflection());
}
protected ColorEditor ambiantColorControl;
protected ColorEditor diffuseColorControl;
protected ColorEditor specularColorControl;
protected Chart chart;
protected AbstractEnlightable enlightable;
private static final long serialVersionUID = 4903947408608903517L;
}
Ads help maintain this website.