📄 planetviewpanel.java
字号:
/*
* PlanetView.java
*
* Created on 10 pa焏ziernik 2005, 19:07
*/
package net.sf.jawp.gui.client;
import java.awt.Color;
import java.awt.Image;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JPanel;
import net.sf.jawp.api.domain.Planet;
import net.sf.jawp.api.domain.Realm;
import net.sf.jawp.api.domain.Rules;
import net.sf.jawp.client.GameData;
import net.sf.jawp.gui.client.semi3d.AnimatedPlanetsHelper;
/**
*
* @author jarek
*/
public class PlanetViewPanel extends javax.swing.JPanel
{
/**
*
*/
private static final long serialVersionUID = 1L;
private GameData data;
private Planet planet;
private final String borderName;
private PlanetImagePanel planetImage = new PlanetImagePanel();
/** Creates new form PlanetView */
public PlanetViewPanel(final String borderName)
{
this.borderName = borderName;
initComponents();
}
public Planet getPlanet()
{
return planet;
}
public void setPlanet(final Planet planet)
{
//System.out.println( "planet set:" + planet);
this.planet = planet;
if ( this.planet != null)
{
this.planetImage.setPlanet( planet);
this.planetImage.repaint();
}
else
{
this.planetImage.setPlanet( null);
this.planetImage.repaint();
}
updateStatus();
}
public GameData getData()
{
return data;
}
public void setData(final GameData data)
{
this.data = data;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents()
{
java.awt.GridBagConstraints gridBagConstraints;
nameLabel = new javax.swing.JLabel();
previewPanel = new javax.swing.JPanel();
planetImagePanelView = this.planetImage;
fleetSizeLabel = new javax.swing.JLabel();
productivityLabel = new javax.swing.JLabel();
productionProgressBar = new javax.swing.JProgressBar();
ownerLabel = new javax.swing.JLabel();
setLayout(new java.awt.GridBagLayout());
setBorder(new javax.swing.border.TitledBorder(null, this.borderName, javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(0, 51, 51)));
setRequestFocusEnabled(false);
setVerifyInputWhenFocusTarget(false);
nameLabel.setFont(new java.awt.Font("Tahoma", 1, 12));
nameLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
nameLabel.setText("Elbonia");
nameLabel.setMinimumSize(new java.awt.Dimension(100, 15));
nameLabel.setPreferredSize(new java.awt.Dimension(100, 15));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 0.2;
gridBagConstraints.insets = new java.awt.Insets(0, 15, 0, 15);
add(nameLabel, gridBagConstraints);
previewPanel.setLayout(new java.awt.GridLayout(1, 0));
previewPanel.setBackground(new java.awt.Color(204, 204, 204));
previewPanel.setBorder(new javax.swing.border.EtchedBorder());
previewPanel.setMaximumSize(new java.awt.Dimension(100, 100));
previewPanel.setMinimumSize(new java.awt.Dimension(100, 100));
previewPanel.setPreferredSize(new java.awt.Dimension(100, 100));
planetImagePanelView.setMaximumSize(new java.awt.Dimension(100, 100));
planetImagePanelView.setMinimumSize(new java.awt.Dimension(100, 100));
planetImagePanelView.setPreferredSize(new java.awt.Dimension(100, 100));
planetImagePanelView.addComponentListener(new java.awt.event.ComponentAdapter()
{
public void componentResized(java.awt.event.ComponentEvent evt)
{
planetImagePanelViewComponentResized(evt);
}
});
previewPanel.add(planetImagePanelView);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridheight = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 0.8;
add(previewPanel, gridBagConstraints);
fleetSizeLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
fleetSizeLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/fleet.gif")));
fleetSizeLabel.setText("15");
fleetSizeLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP);
fleetSizeLabel.setAlignmentY(0.0F);
fleetSizeLabel.setFocusable(false);
fleetSizeLabel.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
fleetSizeLabel.setPreferredSize(new java.awt.Dimension(30, 34));
fleetSizeLabel.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 7, 0, 7);
add(fleetSizeLabel, gridBagConstraints);
productivityLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
productivityLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/factory.gif")));
productivityLabel.setText("25");
productivityLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP);
productivityLabel.setFocusable(false);
productivityLabel.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
productivityLabel.setPreferredSize(new java.awt.Dimension(50, 30));
productivityLabel.setRequestFocusEnabled(false);
productivityLabel.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 7, 0, 7);
add(productivityLabel, gridBagConstraints);
productionProgressBar.setFont(new java.awt.Font("Tahoma", 0, 8));
productionProgressBar.setMaximum(128);
productionProgressBar.setValue(60);
productionProgressBar.setPreferredSize(new java.awt.Dimension(100, 10));
productionProgressBar.setRequestFocusEnabled(false);
productionProgressBar.setString("");
productionProgressBar.setStringPainted(true);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 0.1;
gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
add(productionProgressBar, gridBagConstraints);
ownerLabel.setFont(new java.awt.Font("Tahoma", 1, 10));
ownerLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
ownerLabel.setText("?");
ownerLabel.setMinimumSize(new java.awt.Dimension(100, 15));
ownerLabel.setPreferredSize(new java.awt.Dimension(100, 15));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 0.1;
add(ownerLabel, gridBagConstraints);
}
// </editor-fold>//GEN-END:initComponents
private void planetImagePanelViewComponentResized(java.awt.event.ComponentEvent evt)//GEN-FIRST:event_planetImagePanelViewComponentResized
{//GEN-HEADEREND:event_planetImagePanelViewComponentResized
}//GEN-LAST:event_planetImagePanelViewComponentResized
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel fleetSizeLabel;
private javax.swing.JLabel nameLabel;
private javax.swing.JLabel ownerLabel;
private javax.swing.JPanel planetImagePanelView;
private javax.swing.JPanel previewPanel;
private javax.swing.JProgressBar productionProgressBar;
private javax.swing.JLabel productivityLabel;
// End of variables declaration//GEN-END:variables
public void updateStatus()
{
if ( getPlanet() != null)
{
nameLabel.setText( getPlanet().getName());
productivityLabel.setText( String.valueOf(Math.round(getPlanet().getCurrentProductivity())));
if ( this.data.isOwn(getPlanet()) )
{
fleetSizeLabel.setForeground(Color.BLACK);
fleetSizeLabel.setText( String.valueOf(getPlanet().getHomeFleetSize()));
}
else
{
fleetSizeLabel.setForeground(Color.GRAY);
fleetSizeLabel.setText( String.valueOf(getPlanet().getHomeFleetSize()) + "?");
}
productionProgressBar.setMaximum( Rules.PRODUCTION_PER_UNIT);
productionProgressBar.setValue( (int)getPlanet().getProduced());
final Realm owner = getPlanet().getOwner().getEntity(this.data.getRealmResolver() );
this.ownerLabel.setForeground( ColorsHelper.getColorFor( getPlanet(), data));
this.ownerLabel.setText( owner.getName() );
}
else
{
nameLabel.setText(" ");
productivityLabel.setText( " ");
fleetSizeLabel.setText( " ");
productionProgressBar.setValue( 0);
this.ownerLabel.setText( "");
}
}
private class PlanetImagePanel extends JPanel
{
/**
*
*/
private static final long serialVersionUID = 1L;
private Image image;
private Planet selectedPlanet;
private Timer refresher = null;
/**
* Returns the planet.
* @return the value of planet
*/
public final synchronized Planet getPlanet()
{
return selectedPlanet;
}
/**
* Sets the value of planet.
* @param planet The planet to set.
*/
public final synchronized void setPlanet(final Planet planet)
{
this.selectedPlanet = planet;
if ( this.selectedPlanet != null)
{
if (refresher == null)
{
//System.out.println("rewf started");
this.refresher = new Timer();
this.refresher.scheduleAtFixedRate(new RefreshTask(), 50L, 50L);
}
}
}
public synchronized Image getImage()
{
return image;
}
public synchronized void setImage(final Image image)
{
final Image old = this.image;
this.image = image;
if ( old != this.image)
{
repaint();
}
}
protected void paintComponent(final java.awt.Graphics g)
{
super.paintComponent(g);
if ( getImage() != null)
{
g.drawImage( getImage(), 0, 0, getWidth(), getHeight(), null);
}
else
{
g.setColor( Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
}
}
private class RefreshTask extends TimerTask
{
private int cnt = 0;
/**
* {@inheritDoc}
*/
@Override
public void run()
{
final Planet pl = getPlanet();
if (pl != null)
{
//System.out.println("refresher task");
setImage( AnimatedPlanetsHelper.getInstance().getImage( pl, cnt++) );
if ( cnt >= AnimatedPlanetsHelper.STEPS )
{
cnt = 0;
}
}
else
{
setImage( null);
cnt = 0;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -