package vooga.scroller.level_editor.view; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Map; import javax.swing.BoxLayout; import javax.swing.JPanel; import javax.swing.JTabbedPane; import vooga.scroller.level_editor.commands.CommandConstants; import vooga.scroller.level_editor.controllerSuite.LETools; import vooga.scroller.util.Renderable; import vooga.scroller.util.Renderer; import vooga.scroller.util.mvc.IView; import vooga.scroller.util.mvc.vcFramework.WindowComponent; import vooga.scroller.viewUtil.EasyGridFactory; import vooga.scroller.viewUtil.RadioGroup; /** * EditorView is responsible for presenting editing tools to the user. * It provides a UI for the user to select various kind of sprites or * environment elements and add them to the actual level being edited. * * @author Dagbedji Fagnisse * */ public class LEToolsView extends WindowComponent implements Renderer<LETools> { public class SelectBackgroundListener implements ActionListener { @Override public void actionPerformed (ActionEvent e) { setSelectedBackground(e.getActionCommand()); } } private class SelectSpriteListener implements ActionListener { @Override public void actionPerformed (ActionEvent e) { setSelectedSprite(e.getActionCommand()); } } private static final long serialVersionUID = 1L; public static double getDefaultHeightRatio () { return LevelEditing.VIEW_CONSTANTS.DEFAULT_TOOLSVIEW_HEIGHT_RATIO; } public static double getDefaultWidthRatio () { return LevelEditing.VIEW_CONSTANTS.DEFAULT_TOOLSVIEW_WIDTH_RATIO; } private JPanel myOtherUI; private String mySelectedSpecialPoint; private String mySelectedSprite; private JPanel mySpriteUI; private JTabbedPane myTabs; private LETools myTools; public LEToolsView (LETools leTools, IView parent) { super(parent, getDefaultWidthRatio(), getDefaultHeightRatio()); myTabs = new JTabbedPane(); myTools = leTools; mySpriteUI = new JPanel(); mySpriteUI.setLayout(new BoxLayout(mySpriteUI, BoxLayout.PAGE_AXIS)); // mySpriteUI.setLayout(new SpringLayout()); for (Map<Object, String> m : myTools.getAllSprites()) { if (m.size()>0) { JPanel spriteButtons = new RadioGroup(this.getSize(), new SelectSpriteListener(), m); mySpriteUI.add(spriteButtons); } } myOtherUI = new JPanel(); // myOtherUI.setLayout(new GridLayout()); JPanel backgroundView = new RadioGroup(this.getSize(), new SelectBackgroundListener(), myTools.getBackgrounds()); myOtherUI.add(backgroundView); myTabs.add(mySpriteUI, "Sprites"); myTabs.add(myOtherUI, "Other"); EasyGridFactory.layout(this, myTabs); } @Override public LETools getRenderable () { // TODO Auto-generated method stub return null; } public String getSelectedSpecialPoint () { return mySelectedSpecialPoint; } public String getSelectedSpriteID () { return mySelectedSprite; } public int getSelectedTab () { return myTabs.getSelectedIndex(); } @Override public void render (LETools renderable) { // TODO Auto-generated method stub } @Override public void render (Renderable r) { // TODO - Should not really be used/needed if (r instanceof LETools) { LETools t = (LETools) r; myTools = t; t.initializeRenderer(getResponsible()); } } @Override public void setRenderable (LETools tools) { myTools = tools; } public void setSelectedBackground (String id) { process(CommandConstants.CHANGE_BACKGROUND + CommandConstants.SPACE + id); } private void setSelectedSprite (String spriteID) { mySelectedSprite = spriteID; } public void setTools (LETools t) { myTools = t; } }