package vooga.rts.leveleditor.gui; import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import vooga.rts.leveleditor.components.EditableTerrain; import vooga.rts.leveleditor.components.EditableTile; import vooga.rts.leveleditor.components.EditableResource; /** * * This class holds all the visible components. * It will be roughly divided into two parts - the left being the EditableMap, * which visualizes the map the designer is creating, * the right being all the resources (e.g. Trees) available to be put on the map. * It will also contains a menu bar that allows user to save and load map * * @author Ziqiang Huang * */ @SuppressWarnings("serial") public class Canvas extends JFrame { public static final Dimension DEFAULT_CANVAS_SIZE = new Dimension (800,600); public static final String USER_DIR = "user.dir"; private MapPanel myMapPanel; private ResourcePanel myResourcePanel; private TilePanel myTilePanel; private TerrainPanel myTerrainPanel; private LayerPanel myLayerPanel; private ButtonPanel myButtonPanel; private MenuManager myMenuManager; private EditableResource myCurrentSelectResource; private EditableTerrain myCurrentSelectTerrain; private EditableTile myCurrentSelectTile; private JScrollPane myMapScroll; /** * Constructor for the class */ public Canvas() { setTitle("Level Editor"); myMapPanel = new MapPanel(this); myResourcePanel = new ResourcePanel(this); myTerrainPanel = new TerrainPanel(this); myTilePanel = new TilePanel(this); myLayerPanel = new LayerPanel(this); myButtonPanel = new ButtonPanel(this); myMenuManager = new MenuManager(this); JPanel ChooserPanel = new JPanel(new BorderLayout()); JScrollPane resourceScroll = new JScrollPane(myResourcePanel); JScrollPane terrainScroll = new JScrollPane(myTerrainPanel); JScrollPane tileScroll = new JScrollPane(myTilePanel); JTabbedPane MapComponentTabPane = new JTabbedPane(); MapComponentTabPane.add("Tiles", tileScroll); MapComponentTabPane.add("Terrains", terrainScroll); MapComponentTabPane.add("Resources", resourceScroll); JTabbedPane LayerTabPane = new JTabbedPane(); JScrollPane layerScroll = new JScrollPane(myLayerPanel); LayerTabPane.add("Layers",layerScroll); ChooserPanel.add(MapComponentTabPane, BorderLayout.NORTH); ChooserPanel.add(LayerTabPane, BorderLayout.CENTER); ChooserPanel.add(myButtonPanel, BorderLayout.SOUTH); myMapScroll = new JScrollPane(myMapPanel); getContentPane().add(myMapScroll, BorderLayout.CENTER); getContentPane().add(ChooserPanel, BorderLayout.EAST); setJMenuBar(myMenuManager); setPreferredSize(DEFAULT_CANVAS_SIZE); pack(); setVisible(true); } /** * Set r as the current selected resource selected by user * @param r */ public void setCurrentSelectResource(EditableResource r) { myCurrentSelectResource = r; } /** * * @return the current selected resource */ public EditableResource getCurrentSelectResource() { return myCurrentSelectResource; } /** * Set t as the current selected terrain selected by user * @param t */ public void setCurrentSelectTerrain(EditableTerrain t) { myCurrentSelectTerrain = t; } /** * * @return the current selected terrain */ public EditableTerrain getCurrentSelectTerrain() { return myCurrentSelectTerrain; } /** * Set t as the current selected tile * * @param myTile */ public void setCurrentSelectTile(EditableTile t) { myCurrentSelectTile = t; } /** * * @return the current selected tile */ public EditableTile getCurrentSelectTile() { return myCurrentSelectTile; } /** * clear the canvas */ public void clear() { myMapPanel.clear(); myLayerPanel.clear(); } /** * * @return the map panel for the canvas */ public MapPanel getMapPanel() { return myMapPanel; } /** * Set the edit mode according to the mode * @param mode */ public void setMode(int mode) { myMapPanel.setMode(mode); } /** * add a layer to the canvas */ public void addLayer() { myMapPanel.addLayer(); myLayerPanel.addLayer(myMapPanel.getMaxLayer()); } /** * remove the last layer from the canvas */ public void removeLayer() { myLayerPanel.removeLayer(myMapPanel.getMaxLayer()); myMapPanel.removeLayer(); } /** * remove all the players from the map */ public void clearPlayer() { myMapPanel.getMyMap().getPlayerSet().clearPlayers(); myMapPanel.repaint(); } }