package gdxstudio.panel; import gdxstudio.Content; import gdxstudio.Frame; import gdxstudio.SceneEditor; import gdxstudio.StatusBar; import gdxstudio.Style; import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JPanel; import javax.swing.event.ListSelectionEvent; import scene2d.Scene; import web.laf.lite.widget.CenterPanel; import com.badlogic.gdx.scenes.scene2d.Actor; public class ActorPanel extends BaseList { private static final long serialVersionUID = 1L; String[] btns = new String[]{ "Cut", "cut", "Copy", "copy", "Paste", "paste", "Delete", "trash" }; private JComboBox<String> groupCombo = BaseTable.createComboBox(); public static Actor copiedActor = null; public static Actor cutActor = null; public Component paste; public ActorPanel(){ super("Actors", ""); JPanel tools = Style.createButtonToolBar(this, btns); groupCombo.addItem("Root"); groupCombo.setPreferredSize(new Dimension(90, 17)); tools.add(new CenterPanel(groupCombo, false, true)); add(tools); add(scrollPane); if(Frame.scenePanel.selectedValueExists()) setHeaderText(Frame.scenePanel.getSelectedValue()); paste = tools.getComponent(2); paste.setEnabled(false); } public void addActor(String actorName){ lock(); listModel2.addElement(actorName); unlock(); } public void renameActor(String actorName, String newName){ lock(); listModel2.removeElement(actorName); listModel2.addElement(newName); unlock(); } public void addGroup(String groupName){ groupCombo.addItem(groupName); } public void removeGroup(String groupName){ // must check for root for(int i=0;i<groupCombo.getItemCount();i++) if(groupCombo.getItemAt(i).equals(groupCombo.getSelectedItem())){ groupCombo.removeItem(groupName); break; } } @Override public void clear(){ lock(); listModel2.model.clear(); unlock(); StatusBar.updateSelected("None"); } public boolean contains(String name){ return listModel2.contains(name); } public int indexOf(String element){ return listModel2.indexOf(element); } @Override public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting() == false) { SceneEditor.doClick(Scene.getCurrentScene().findActor(list.getSelectedValue())); } } @Override public void actionPerformed(ActionEvent e) { lock(); switch(((JButton)e.getSource()).getToolTipText()){ case "Cut": if(list.getSelectedIndex() != -1){ cutActor = SceneEditor.selectedActor; copiedActor = null; listModel2.removeElement(SceneEditor.selectedActor.getName()); Scene.getCurrentScene().removeActor(SceneEditor.selectedActor); paste.setEnabled(true); } break; case "Copy": if(list.getSelectedIndex() != -1){ String line = Scene.json.toJson(SceneEditor.selectedActor); copiedActor = Scene.json.fromJson(Actor.class, line); cutActor = null; paste.setEnabled(true); } break; case "Paste": if(cutActor != null){ Content.studioPanel.setName(cutActor); cutActor = null; paste.setEnabled(false); } if(copiedActor != null){ copiedActor = Scene.json.fromJson(Actor.class, Scene.json.toJson(SceneEditor.selectedActor)); Content.studioPanel.setName(copiedActor); } Scene.isDirty = true; break; case "Delete": if(list.getSelectedIndex() != -1){ Scene.getCurrentScene().removeActor(SceneEditor.selectedActor); StatusBar.updateSelected("None"); if(contains(SceneEditor.selectedActor.getName())) listModel2.removeElement(SceneEditor.selectedActor.getName()); Scene.isDirty = true; } break; } unlock(); } public void setHeaderText(String text){ header.setText(text); } }