/* * PlanetViewPanel * * Created on July 26, 2009, 11:32 PM */ package mekhq.gui.view; import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Image; import java.awt.Insets; import java.awt.RenderingHints; import java.awt.geom.Arc2D; import java.util.Locale; import java.util.ResourceBundle; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextPane; import javax.swing.text.DefaultCaret; import org.joda.time.DateTime; import megamek.common.util.EncodeControl; import megamek.common.util.ImageUtil; import mekhq.Utilities; import mekhq.campaign.Campaign; import mekhq.campaign.universe.Planet; import mekhq.campaign.universe.StarUtil; import mekhq.campaign.universe.Planet.SocioIndustrialData; /** * A custom panel that gets filled in with goodies from a Planet record * @author Jay Lawson <jaylawson39 at yahoo.com> */ public class PlanetViewPanel extends JPanel { private static final long serialVersionUID = 7004741688464105277L; private Planet planet; private Campaign campaign; private JPanel pnlNeighbors; private JPanel pnlStats; private JTextArea txtDesc; private JLabel lblOwner; private JLabel lblStarType; private JTextArea txtStarType; private JLabel lblPosition; private JTextArea txtPosition; private JLabel lblJumpPoint; private JTextArea txtJumpPoint; private JLabel lblSatellite; private JTextArea txtSatellite; private JLabel lblGravity; private JTextArea txtGravity; private JLabel lblPressure; private JTextArea txtPressure; private JLabel lblTemp; private JTextArea txtTemp; private JLabel lblWater; private JTextArea txtWater; private JLabel lblRecharge; private JTextArea txtRecharge; private JLabel lblHPG; private JTextArea txtHPG; private JLabel lblAnimal; private JTextArea txtAnimal; private JLabel lblSocioIndustrial; private JTextPane txtSocioIndustrial; private JLabel lblLandMass; private JTextArea txtLandMass; private Image planetIcon = null; public PlanetViewPanel(Planet p, Campaign c) { this.planet = p; this.campaign = c; initComponents(); } private void initComponents() { GridBagConstraints gridBagConstraints; pnlStats = new JPanel(); pnlNeighbors = new JPanel(); txtDesc = new JTextArea(); setLayout(new GridBagLayout()); setBackground(Color.WHITE); pnlStats.setName("pnlStats"); pnlStats.setBorder(BorderFactory.createTitledBorder(planet.getPrintableName(Utilities.getDateTimeDay(campaign.getCalendar())))); pnlStats.setBackground(Color.WHITE); fillStats(); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridheight = 1; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 0.0; gridBagConstraints.insets = new Insets(5, 5, 5, 5); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; add(pnlStats, gridBagConstraints); pnlNeighbors.setName("pnlNeighbors"); pnlNeighbors.setBorder(BorderFactory.createTitledBorder("Planets within 30 light years")); pnlNeighbors.setBackground(Color.WHITE); getNeighbors(); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.gridheight = 1; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 0.0; gridBagConstraints.insets = new Insets(5, 5, 5, 5); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; add(pnlNeighbors, gridBagConstraints); txtDesc.setName("txtDesc"); ((DefaultCaret) txtDesc.getCaret()).setUpdatePolicy(DefaultCaret.NEVER_UPDATE); txtDesc.setText(planet.getDescription()); txtDesc.setEditable(false); txtDesc.setLineWrap(true); txtDesc.setWrapStyleWord(true); txtDesc.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder("Description"), BorderFactory.createEmptyBorder(5,5,5,5))); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 1; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new Insets(5, 5, 5, 5); gridBagConstraints.fill = GridBagConstraints.BOTH; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; add(txtDesc, gridBagConstraints); planetIcon = ImageUtil.loadImageFromFile("data/" + StarUtil.getIconImage(planet)); } private void getNeighbors() { GridBagConstraints gridBagConstraints; pnlNeighbors.setLayout(new GridBagLayout()); int i = 0; JLabel lblNeighbor; JLabel lblDistance; DateTime currentDate = Utilities.getDateTimeDay(campaign.getCalendar()); for(Planet neighbor : campaign.getAllReachablePlanetsFrom(planet)) { if(neighbor.equals(planet)) { continue; } lblNeighbor = new JLabel(neighbor.getPrintableName(currentDate) + " (" + neighbor.getFactionDesc(currentDate) + ")"); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = i; gridBagConstraints.gridwidth = 1; gridBagConstraints.weightx = 0.5; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new Insets(0, 0, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlNeighbors.add(lblNeighbor, gridBagConstraints); lblDistance = new JLabel(String.format(Locale.ROOT, "%.2f ly", planet.getDistanceTo(neighbor))); lblDistance.setAlignmentX(Component.RIGHT_ALIGNMENT); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = i; gridBagConstraints.weightx = 0.5; gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlNeighbors.add(lblDistance, gridBagConstraints); ++ i; } } @Override protected void paintChildren(Graphics g) { super.paintChildren(g); if(null != planetIcon) { Graphics2D gfx = (Graphics2D) g; final int width = getWidth(); final int offset = 6; gfx.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Arc2D.Double arc = new Arc2D.Double(); gfx.setPaint(Color.BLACK); arc.setArcByCenter(width - 32 - offset, 32 + offset, 35, 0, 360, Arc2D.OPEN); gfx.fill(arc); gfx.setPaint(Color.WHITE); arc.setArcByCenter(width - 32 - offset, 32 + offset, 34, 0, 360, Arc2D.OPEN); gfx.fill(arc); gfx.drawImage(planetIcon, width - 64 - offset, offset, 64, 64, null); } } private void fillStats() { ResourceBundle resourceMap = ResourceBundle.getBundle("mekhq.resources.PlanetViewPanel", new EncodeControl()); //$NON-NLS-1$ lblOwner = new JLabel(); lblStarType = new JLabel(); txtStarType = new JTextArea(); lblPosition = new JLabel(); txtPosition = new JTextArea(); lblSatellite = new JLabel(); txtSatellite = new JTextArea(); lblJumpPoint = new JLabel(); txtJumpPoint = new JTextArea(); lblGravity = new JLabel(); txtGravity = new JTextArea(); lblPressure = new JLabel(); txtPressure = new JTextArea(); lblTemp = new JLabel(); txtTemp = new JTextArea(); lblWater = new JLabel(); txtWater = new JTextArea(); lblRecharge = new JLabel(); txtRecharge = new JTextArea(); lblHPG = new JLabel(); txtHPG = new JTextArea(); lblAnimal = new JLabel(); txtAnimal = new JTextArea(); lblSocioIndustrial = new JLabel(); txtSocioIndustrial = new JTextPane(); lblLandMass = new JLabel(); txtLandMass = new JTextArea(); GridBagConstraints gridBagConstraints; pnlStats.setLayout(new GridBagLayout()); DateTime currentDate = Utilities.getDateTimeDay(campaign.getCalendar()); lblOwner.setName("lblOwner"); // NOI18N lblOwner.setText("<html><i>" + planet.getFactionDesc(currentDate) + "</i></html>"); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 2; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new Insets(0, 0, 5, 0); gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblOwner, gridBagConstraints); lblStarType.setName("lblStarType"); // NOI18N lblStarType.setText(resourceMap.getString("lblStarType1.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblStarType, gridBagConstraints); txtStarType.setName("lblStarType2"); // NOI18N txtStarType.setText(planet.getSpectralTypeText() + " (" + planet.getRechargeTimeText(currentDate) + ")"); txtStarType.setEditable(false); txtStarType.setLineWrap(true); txtStarType.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.WEST; pnlStats.add(txtStarType, gridBagConstraints); int infoRow = 2; if((null != planet.getSystemPosition()) || (null != planet.getOrbitSemimajorAxis())) { lblPosition.setName("lblPosition"); // NOI18N lblPosition.setText(resourceMap.getString("lblPosition.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblPosition, gridBagConstraints); txtPosition.setName("txtPosition"); // NOI18N String text; if(null != planet.getOrbitSemimajorAxis()) { text = String.format("%s (%.3f AU)", //$NON-NLS-1$ planet.getSystemPositionText(), planet.getOrbitSemimajorAxis()); } else { text = planet.getSystemPositionText(); } txtPosition.setText(text); txtPosition.setEditable(false); txtPosition.setLineWrap(true); txtPosition.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.WEST; pnlStats.add(txtPosition, gridBagConstraints); ++ infoRow; } lblJumpPoint.setName("lblJumpPoint"); // NOI18N lblJumpPoint.setText(resourceMap.getString("lblJumpPoint1.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblJumpPoint, gridBagConstraints); txtJumpPoint.setName("lblJumpPoint2"); // NOI18N txtJumpPoint.setText(Double.toString(Math.round(100 * planet.getTimeToJumpPoint(1))/100.0) + " days"); txtJumpPoint.setEditable(false); txtJumpPoint.setLineWrap(true); txtJumpPoint.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(txtJumpPoint, gridBagConstraints); ++ infoRow; lblSatellite.setName("lblSatellite"); // NOI18N lblSatellite.setText(resourceMap.getString("lblSatellite1.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblSatellite, gridBagConstraints); txtSatellite.setName("lblSatellite2"); // NOI18N txtSatellite.setText(planet.getSatelliteDescription()); txtSatellite.setEditable(false); txtSatellite.setLineWrap(true); txtSatellite.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(txtSatellite, gridBagConstraints); ++ infoRow; if(null != planet.getGravity()) { lblGravity.setName("lblGravity1"); // NOI18N lblGravity.setText(resourceMap.getString("lblGravity1.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblGravity, gridBagConstraints); txtGravity.setName("lblGravity2"); // NOI18N txtGravity.setText(planet.getGravityText()); txtGravity.setEditable(false); txtGravity.setLineWrap(true); txtGravity.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(txtGravity, gridBagConstraints); ++ infoRow; } if(null != planet.getPressure(currentDate)) { lblPressure.setName("lblPressure1"); // NOI18N lblPressure.setText(resourceMap.getString("lblPressure1.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblPressure, gridBagConstraints); txtPressure.setName("lblPressure2"); // NOI18N txtPressure.setText(planet.getPressureName(currentDate)); txtPressure.setEditable(false); txtPressure.setLineWrap(true); txtPressure.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(txtPressure, gridBagConstraints); ++ infoRow; } if((null != planet.getTemperature(currentDate)) || (null != planet.getClimate(currentDate))) { lblTemp.setName("lblTemp1"); // NOI18N lblTemp.setText(resourceMap.getString("lblTemp1.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblTemp, gridBagConstraints); txtTemp.setName("lblTemp2"); // NOI18N String text; if( null == planet.getClimate(currentDate) ) { text = planet.getTemperature(currentDate) + "°C"; } else if( null == planet.getTemperature(currentDate) ) { text = "(" + planet.getClimateName(currentDate) + ")"; } else { text = planet.getTemperature(currentDate) + "°C (" + planet.getClimateName(currentDate) + ")"; } txtTemp.setText(text); txtTemp.setEditable(false); txtTemp.setLineWrap(true); txtTemp.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(txtTemp, gridBagConstraints); ++ infoRow; } if(null != planet.getPercentWater(currentDate)) { lblWater.setName("lblWater1"); // NOI18N lblWater.setText(resourceMap.getString("lblWater1.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblWater, gridBagConstraints); txtWater.setName("lblWater2"); // NOI18N txtWater.setText(planet.getPercentWater(currentDate) + " percent"); txtWater.setEditable(false); txtWater.setLineWrap(true); txtWater.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(txtWater, gridBagConstraints); ++ infoRow; } lblRecharge.setName("lblRecharge1"); // NOI18N lblRecharge.setText(resourceMap.getString("lblRecharge1.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblRecharge, gridBagConstraints); txtRecharge.setName("lblRecharge2"); // NOI18N txtRecharge.setText(planet.getRechargeStationsText(currentDate)); txtRecharge.setEditable(false); txtRecharge.setLineWrap(true); txtRecharge.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(txtRecharge, gridBagConstraints); ++ infoRow; if(null != planet.getLifeForm(currentDate)) { lblAnimal.setName("lblAnimal1"); // NOI18N lblAnimal.setText(resourceMap.getString("lblAnimal1.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblAnimal, gridBagConstraints); txtAnimal.setName("lblAnimal2"); // NOI18N txtAnimal.setText(planet.getLifeFormName(currentDate)); txtAnimal.setEditable(false); txtAnimal.setLineWrap(true); txtAnimal.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(txtAnimal, gridBagConstraints); ++ infoRow; } if(null != planet.getLandMasses()) { lblLandMass.setName("lblLandMass1"); // NOI18N lblLandMass.setText(resourceMap.getString("lblLandMass1.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblLandMass, gridBagConstraints); txtLandMass.setName("lblLandMass2"); // NOI18N txtLandMass.setText(planet.getLandMassDescription()); txtLandMass.setEditable(false); txtLandMass.setLineWrap(true); txtLandMass.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(txtLandMass, gridBagConstraints); ++ infoRow; } // Social stuff if(null != planet.getPopulationRating(currentDate)) { JLabel label = new JLabel(resourceMap.getString("lblPopulation.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(label, gridBagConstraints); JTextArea textArea = new JTextArea(planet.getPopulationRatingString(currentDate)); textArea.setEditable(false); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(textArea, gridBagConstraints); ++ infoRow; } if(null != planet.getGovernment(currentDate)) { JLabel label = new JLabel(resourceMap.getString("lblGovernment.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(label, gridBagConstraints); JTextArea textArea = new JTextArea(); textArea.setEditable(false); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); String text; if(null != planet.getControlRating(currentDate)) { text = String.format("%s [%s]", planet.getGovernment(currentDate), planet.getControlRatingString(currentDate)); } else { text = planet.getGovernment(currentDate); } textArea.setText(text); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(textArea, gridBagConstraints); ++ infoRow; } if(null != planet.getSocioIndustrial(currentDate)) { lblSocioIndustrial.setName("lblSocioIndustrial1"); // NOI18N lblSocioIndustrial.setText(resourceMap.getString("lblSocioIndustrial1.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblSocioIndustrial, gridBagConstraints); txtSocioIndustrial.setName("lblSocioIndustrial2"); // NOI18N SocioIndustrialData sid = planet.getSocioIndustrial(currentDate); String sidText = (null == sid) ? "" : sid.getHTMLDescription(); txtSocioIndustrial.setContentType("text/html"); txtSocioIndustrial.setText(sidText); txtSocioIndustrial.setEditable(false); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(txtSocioIndustrial, gridBagConstraints); ++ infoRow; } if(null != planet.getHPGClass(currentDate)) { lblHPG.setName("lblHPG1"); // NOI18N lblHPG.setText(resourceMap.getString("lblHPG1.text")); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = infoRow; gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(lblHPG, gridBagConstraints); txtHPG.setName("lblHPG2"); // NOI18N txtHPG.setText(planet.getHPGClass(currentDate)); txtHPG.setEditable(false); txtHPG.setLineWrap(true); txtHPG.setWrapStyleWord(true); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = infoRow; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new Insets(0, 10, 0, 0); gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; pnlStats.add(txtHPG, gridBagConstraints); ++ infoRow; } } }