package gdxstudio.panel;
import java.awt.Component;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JTable;
import scene2d.Asset;
import scene2d.Effect;
import scene2d.EffectType;
import scene2d.InterpolationType;
import scene2d.Scene;
public class SceneEffectPanel extends BaseTable {
private static final long serialVersionUID = 1L;
static JComboBox<String> bgComboBox = createComboBox();
static JComboBox<String> musicComboBox = createComboBox();
static JComboBox<String> transitionComboBox = createComboBox();
static JComboBox<String> interpolationComboBox = createComboBox();
public SceneEffectPanel(){
super("Properties", null, new SceneEffectRenderer());
editors.add(new DefaultCellEditor(bgComboBox));
editors.add(new DefaultCellEditor(musicComboBox));
editors.add(new DefaultCellEditor(transitionComboBox));
editors.add(createFloatSpinner("Duration"));
editors.add(new DefaultCellEditor(interpolationComboBox));
for(EffectType effect: EffectType.values())
transitionComboBox.addItem(effect.toString());
for(InterpolationType interpolation: InterpolationType.values())
interpolationComboBox.addItem(interpolation.toString());
}
@Override
public void clear(String... names){
super.clear("Background", "Music", "Transition", "Duration", "Interpolation");
}
@Override
public void update(String... values){
Scene scene = Scene.getCurrentScene();
super.update("Background", scene.sceneBackground, "Music", scene.sceneMusic,
"Transition", scene.sceneTransition, "Duration", ""+scene.sceneDuration,
"Interpolation", scene.sceneInterpolationType.toString());
bgComboBox.removeAllItems();
musicComboBox.removeAllItems();
bgComboBox.addItem("None");
musicComboBox.addItem("None");
for(String tex: Asset.texMap.keys())
bgComboBox.addItem(tex);
for(String tex: Asset.musicMap.keys())
musicComboBox.addItem(tex);
}
@Override
public void setProperty(String key, String value){
if(key.isEmpty() || value.isEmpty())
return ;
Scene scene = Scene.getCurrentScene();
switch(key){
case "Background":
scene.sceneBackground = value;
if(!scene.sceneBackground.equals("None"))
Scene.getCurrentScene().setBackground(scene.sceneBackground);
else
Scene.getCurrentScene().removeBackground();
break;
case "Music":
scene.sceneMusic = value;
if(!scene.sceneMusic.equals("None"))
Asset.musicPlay(scene.sceneMusic);
break;
case "Transition":
scene.sceneTransition = value;
break;
case "Duration":
scene.sceneDuration = Float.parseFloat(value);
break;
case "Interpolation":
scene.sceneInterpolationType = InterpolationType.valueOf(value);
break;
}
Effect.createEffect(Scene.getRoot(), EffectType.valueOf(scene.sceneTransition), 1f,
scene.sceneDuration, scene.sceneInterpolationType);
Scene.isDirty = true;
}
}
class SceneEffectRenderer extends BaseRenderer {
private static final long serialVersionUID = 1L;
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setBorder(noFocusBorder);
if(column == 0)
return new HeaderLabel(value.toString());
else {
if(row == 3){
if(!value.toString().isEmpty())
spinnerFloat.setValue(Float.parseFloat(value.toString()));
else
spinnerFloat.setValue(new Float(0.0));
return spinnerFloat;
}
}
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}