package com.vitco.layout.content.colorchooser.components.colorslider;
import com.vitco.layout.content.colorchooser.components.ColorSliderPrototype;
import com.vitco.layout.content.colorchooser.components.NumberBox;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import java.awt.*;
/**
* rgb tab
*/
public class RGBTab extends TabPrototype {
// the sliders
private final HorizontalColorSlider rSlider = new HorizontalColorSlider(0, 255, 0);
private final HorizontalColorSlider gSlider = new HorizontalColorSlider(0, 255, 0);
private final HorizontalColorSlider bSlider = new HorizontalColorSlider(0, 255, 0);
public RGBTab() {
NumberBox rBox = new NumberBox(0, 255, 0);
NumberBox gBox = new NumberBox(0, 255, 0);
NumberBox bBox = new NumberBox(0, 255, 0);
init(
new String[]{"R", "G", "B"},
new ColorSliderPrototype[]{rSlider, gSlider, bSlider},
new NumberBox[]{rBox, gBox, bBox}
);
}
@Override
protected void onSliderChange(int id, ChangeEvent e) {
JSlider source = ((JSlider) e.getSource());
update(new Color(
id == 0 ? source.getValue() : color.getRed(),
id == 1 ? source.getValue() : color.getGreen(),
id == 2 ? source.getValue() : color.getBlue()),
false, !source.getValueIsAdjusting());
}
@Override
protected void onTextFieldChange(int id, NumberBox source) {
update(new Color(
id == 0 ? source.getValue() : color.getRed(),
id == 1 ? source.getValue() : color.getGreen(),
id == 2 ? source.getValue() : color.getBlue()),
false, true);
}
@Override
protected void refreshUI() {
// repaint the slider
rSlider.setLeftColor(new Color(0, color.getGreen(), color.getBlue()));
rSlider.setRightColor(new Color(255, color.getGreen(), color.getBlue()));
rSlider.repaint();
gSlider.setLeftColor(new Color(color.getRed(), 0, color.getBlue()));
gSlider.setRightColor(new Color(color.getRed(), 255, color.getBlue()));
gSlider.repaint();
bSlider.setLeftColor(new Color(color.getRed(), color.getGreen(), 0));
bSlider.setRightColor(new Color(color.getRed(), color.getGreen(), 255));
bSlider.repaint();
// set the values
setValues(new int[] {color.getRed(), color.getGreen(), color.getBlue()});
}
@Override
protected void notifyColorChange(Color color) {
// nothing to do here
}
}