/**
* $RCSfile: ,v $
* $Revision: $
* $Date: $
*
* Copyright (C) 2004-2011 Jive Software. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package battleship.gui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import battleship.listener.ShipPlacementListener;
import battleship.types.Types;
public class GameboardGUI extends JPanel{
private static final long serialVersionUID = -6429298293488133059L;
private Image _bg;
private JLabel[][] _labels;
public GameboardGUI()
{
ClassLoader cl = getClass().getClassLoader();
_bg = new ImageIcon(cl.getResource("water.png")).getImage();
setLayout(new GridLayout(10,10));
_labels = new JLabel[10][10];
for(int x =0 ; x<10;x++)
{
for(int y=0 ;y < 10; y++)
{
_labels[x][y] = new JLabel("empty");
_labels[x][y].setBorder(BorderFactory.createLineBorder(Color.lightGray));
add(_labels[x][y]);
}
}
this.setPreferredSize(new Dimension(400,400));
}
public void setField(int x, int y, Types t)
{
System.out.println("setting field"+x+","+y);
_labels[x][y].setIcon(t.getImage());
repaint();
revalidate();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
final Image backgroundImage = _bg;
double scaleX = getWidth() / (double) backgroundImage.getWidth(null);
double scaleY = getHeight() / (double) backgroundImage.getHeight(null);
AffineTransform xform = AffineTransform
.getScaleInstance(scaleX, scaleY);
((Graphics2D) g).drawImage(backgroundImage, xform, this);
}
public void initiateShipPlacement(ShipPlacementListener spl)
{
for(int x =0 ; x<10;x++)
{
for(int y=0 ;y < 10; y++)
{
_labels[x][y].addMouseListener(spl);
}
}
}
public JLabel[][] getLabels()
{
return _labels;
}
}