⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 planetviewpanel.java

📁 Java mulitplayer strategy game. Adaptation of KDE Galaxy Conquest. (rules are changed - but still th
💻 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 + -