package org.korsakow.ide.ui.interfacebuilder.widget;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.util.Hashtable;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JSlider;
import org.korsakow.ide.lang.LanguageBundle;
import org.korsakow.ide.resources.WidgetType;
import org.korsakow.ide.resources.widget.WidgetComponent;
import org.korsakow.ide.resources.widget.WidgetModel;
public class MasterVolume extends WidgetModel
{
private static class MasterVolumeWidgetComponent extends WidgetComponent
{
private JLabel label;
private JSlider slider;
public MasterVolumeWidgetComponent(WidgetModel owner)
{
super(owner);
}
protected void initUI()
{
super.initUI();
setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
setSize(200, 80);
add(label = new JLabel(LanguageBundle.getString("widget.mastervolume.label")));
label.setAlignmentX(JComponent.CENTER_ALIGNMENT);
slider = new JSlider(0, 100, 100);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(20);
slider.setPaintTrack(true);
slider.setPaintTicks(true);
slider.setPaintLabels(true);
Hashtable<Integer, JComponent> labels = new Hashtable<Integer, JComponent>();
labels.put(0, new JLabel(LanguageBundle.getString("widget.mastervolume.ticks.0")));
labels.put(100, new JLabel(LanguageBundle.getString("widget.mastervolume.ticks.100")));
slider.setLabelTable(labels);
slider.setOrientation(JSlider.HORIZONTAL);
slider.setEnabled(false);
add(slider);
}
protected void initListeners()
{
addComponentListener(new ComponentListener() {
public void componentHidden(ComponentEvent e) {
}
public void componentMoved(ComponentEvent e) {
}
public void componentShown(ComponentEvent e) {
}
public void componentResized(ComponentEvent e) {
slider.setPaintTicks(getSize().width > 70);
slider.setPaintLabels(getSize().width > 70);
}
});
}
}
protected WidgetComponent createComponent()
{
return new MasterVolumeWidgetComponent(this);
}
public MasterVolume()
{
super(WidgetType.MasterVolume);
// addProperty(new Property("volume") {
// public Object getValue() { return getVolume(); }
// public void setValue(Object value) { setVolume(Float.parseFloat(value.toString())); }
// });
}
// public void setVolume(float volume)
// {
// slider.setValue((int)(volume * 100));
// }
// public float getVolume()
// {
// return slider.getValue() / 100;
// }
}