package com.gdx.musicevents.tool.transitions; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.ui.Button; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.List; import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.utils.ObjectMap; import com.gdx.musicevents.effects.StopEffect; import com.gdx.musicevents.tool.MusicStatePanel; import com.gdx.musicevents.MusicEventManager; import com.gdx.musicevents.MusicState; public class TransitionOutPanel extends Table { MusicState musicEvent; List<EffectDecorator> outTransitions; final Button add; final Button remove; public TransitionOutPanel(final Skin skin, final Stage stage, final MusicEventManager manager, final MusicStatePanel eventDetailsPanel) { super(skin); setBackground(skin.getDrawable("panel-background")); this.top().left().pad(2); this.defaults().top().left(); final Label exitLabel = new Label("Exit", skin, "title"); this.add(exitLabel).fillX().expandX().colspan(2).row(); outTransitions = new List<EffectDecorator>(skin); outTransitions.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { remove.setDisabled(outTransitions.getItems().size == 0 || outTransitions.getSelected() == null); } }); this.add(new ScrollPane(outTransitions)).colspan(2).fill().expand().row(); add = new TextButton("Add", skin); add.addListener(new ChangeListener(){ @Override public void changed(ChangeEvent event, Actor actor) { AddTransitionOutDialog dialog = new AddTransitionOutDialog(skin, TransitionOutPanel.this, manager, musicEvent); dialog.show(stage); } }); this.add(add).fillX().expandX(); remove = new TextButton("Remove", skin); remove.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { EffectDecorator decorator = outTransitions.getSelected(); musicEvent.removeExitTransition(decorator.name); setMusicState(musicEvent); } }); remove.setDisabled(true); this.add(remove).fillX().expandX(); } public void setMusicState(MusicState musicEvent) { this.musicEvent = musicEvent; outTransitions.getItems().clear(); ObjectMap<String, StopEffect> effects = musicEvent.getExitTransitions(); for(ObjectMap.Entry<String, StopEffect> entry : effects){ outTransitions.getItems().add(new EffectDecorator(entry.key, entry.value)); } remove.setDisabled(effects.size == 0 || outTransitions.getSelected() == null); } public Button getAddButton() { return add; } }