/* * JumpPathViewPanel * * Created on July 26, 2009, 11:32 PM */ package mekhq.gui.view; import java.awt.Color; import java.text.DecimalFormat; import java.util.ResourceBundle; import javax.swing.BorderFactory; import org.joda.time.DateTime; import megamek.common.util.EncodeControl; import mekhq.Utilities; import mekhq.campaign.Campaign; import mekhq.campaign.JumpPath; import mekhq.campaign.universe.Planet; /** * A custom panel that gets filled in with goodies from a JumpPath record * @author Jay Lawson <jaylawson39 at yahoo.com> */ public class JumpPathViewPanel extends javax.swing.JPanel { private static final long serialVersionUID = 7004741688464105277L; private JumpPath path; private Campaign campaign; private javax.swing.JPanel pnlPath; private javax.swing.JPanel pnlStats; private javax.swing.JLabel lblJumps; private javax.swing.JTextArea txtJumps; private javax.swing.JLabel lblTimeStart; private javax.swing.JTextArea txtTimeStart; private javax.swing.JLabel lblTimeEnd; private javax.swing.JTextArea txtTimeEnd; private javax.swing.JLabel lblRechargeTime; private javax.swing.JTextArea txtRechargeTime; private javax.swing.JLabel lblTotalTime; private javax.swing.JTextArea txtTotalTime; private javax.swing.JLabel lblCost; private javax.swing.JTextArea txtCost; public JumpPathViewPanel(JumpPath p, Campaign c) { this.path = p; this.campaign = c; initComponents(); } private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; pnlStats = new javax.swing.JPanel(); pnlPath = new javax.swing.JPanel(); setLayout(new java.awt.GridBagLayout()); setBackground(Color.WHITE); pnlStats.setName("pnlStats"); pnlStats.setBorder(BorderFactory.createTitledBorder("Summary")); pnlStats.setBackground(Color.WHITE); fillStats(); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridheight = 1; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; add(pnlStats, gridBagConstraints); pnlPath.setName("pnlPath"); pnlPath.setBorder(BorderFactory.createTitledBorder("Full Path")); pnlPath.setBackground(Color.WHITE); getPath(); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.gridheight = 1; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; add(pnlPath, gridBagConstraints); } private void getPath() { java.awt.GridBagConstraints gridBagConstraints; pnlPath.setLayout(new java.awt.GridBagLayout()); int i = 0; javax.swing.JLabel lblPlanet; DateTime currentDate = Utilities.getDateTimeDay(campaign.getCalendar()); for(Planet planet : path.getPlanets()) { lblPlanet = new javax.swing.JLabel(planet.getPrintableName(currentDate) + " (" + planet.getRechargeTimeText(currentDate) + ")"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = i; gridBagConstraints.gridwidth = 1; gridBagConstraints.weightx = 1.0; if(i >= (path.getPlanets().size()-1)) { gridBagConstraints.weighty = 1.0; } gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 0); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlPath.add(lblPlanet, gridBagConstraints); i++; } } private void fillStats() { ResourceBundle resourceMap = ResourceBundle.getBundle("mekhq.resources.JumpPathViewPanel", new EncodeControl()); //$NON-NLS-1$ lblJumps = new javax.swing.JLabel(); txtJumps = new javax.swing.JTextArea(); lblTimeStart = new javax.swing.JLabel(); txtTimeStart = new javax.swing.JTextArea(); lblTimeEnd = new javax.swing.JLabel(); txtTimeEnd = new javax.swing.JTextArea(); lblRechargeTime = new javax.swing.JLabel(); txtRechargeTime = new javax.swing.JTextArea(); lblTotalTime = new javax.swing.JLabel(); txtTotalTime = new javax.swing.JTextArea(); lblCost = new javax.swing.JLabel(); txtCost = new javax.swing.JTextArea(); DateTime currentDate = Utilities.getDateTimeDay(campaign.getCalendar()); String startName = (path.getFirstPlanet() == null) ? "?" : path.getFirstPlanet().getPrintableName(currentDate); String endName = (path.getLastPlanet() == null) ? "?" : path.getLastPlanet().getPrintableName(currentDate); java.awt.GridBagConstraints gridBagConstraints; pnlStats.setLayout(new java.awt.GridBagLayout()); DecimalFormat formatter = new DecimalFormat(); lblJumps.setName("lblJumps"); // NOI18N lblJumps.setText(resourceMap.getString("lblJumps1.text")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlStats.add(lblJumps, gridBagConstraints); txtJumps.setName("lblJumps2"); // NOI18N txtJumps.setText(path.getJumps() + " jumps"); txtJumps.setEditable(false); txtJumps.setLineWrap(true); txtJumps.setWrapStyleWord(true); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlStats.add(txtJumps, gridBagConstraints); lblTimeStart.setName("lblTimeStart"); // NOI18N lblTimeStart.setText(resourceMap.getString("lblTimeStart1.text")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlStats.add(lblTimeStart, gridBagConstraints); txtTimeStart.setName("lblTimeStart2"); // NOI18N txtTimeStart.setText(Math.round(path.getStartTime(campaign.getLocation().getTransitTime())*100.0)/100.0 + " days from "+ startName + " to jump point"); txtTimeStart.setEditable(false); txtTimeStart.setLineWrap(true); txtTimeStart.setWrapStyleWord(true); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlStats.add(txtTimeStart, gridBagConstraints); lblTimeEnd.setName("lblTimeEnd"); // NOI18N lblTimeEnd.setText(resourceMap.getString("lblTimeEnd1.text")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlStats.add(lblTimeEnd, gridBagConstraints); txtTimeEnd.setName("lblTimeEnd2"); // NOI18N txtTimeEnd.setText(Math.round(path.getEndTime()*100.0)/100.0 + " days from final jump point to " + endName); txtTimeEnd.setEditable(false); txtTimeEnd.setLineWrap(true); txtTimeEnd.setWrapStyleWord(true); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlStats.add(txtTimeEnd, gridBagConstraints); lblRechargeTime.setName("lblRechargeTime1"); // NOI18N lblRechargeTime.setText(resourceMap.getString("lblRechargeTime1.text")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; gridBagConstraints.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlStats.add(lblRechargeTime, gridBagConstraints); txtRechargeTime.setName("lblRechargeTime2"); // NOI18N txtRechargeTime.setText(Math.round(path.getTotalRechargeTime(currentDate)*100.0)/100.0 + " days"); txtRechargeTime.setEditable(false); txtRechargeTime.setLineWrap(true); txtRechargeTime.setWrapStyleWord(true); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 4; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlStats.add(txtRechargeTime, gridBagConstraints); lblTotalTime.setName("lblTotalTime1"); // NOI18N lblTotalTime.setText(resourceMap.getString("lblTotalTime1.text")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 5; gridBagConstraints.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlStats.add(lblTotalTime, gridBagConstraints); txtTotalTime.setName("lblTotalTime2"); // NOI18N txtTotalTime.setText(Math.round(path.getTotalTime(currentDate, campaign.getLocation().getTransitTime())*100.0)/100.0 + " days"); txtTotalTime.setEditable(false); txtTotalTime.setLineWrap(true); txtTotalTime.setWrapStyleWord(true); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 5; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlStats.add(txtTotalTime, gridBagConstraints); if(campaign.getCampaignOptions().payForTransport()) { lblCost.setName("lblCost1"); // NOI18N lblCost.setText(resourceMap.getString("lblCost1.text")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 6; gridBagConstraints.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlStats.add(lblCost, gridBagConstraints); txtCost.setName("lblCost2"); // NOI18N txtCost.setText(formatter.format(path.getJumps() * campaign.calculateCostPerJump(true)) + " C-bills"); txtCost.setEditable(false); txtCost.setLineWrap(true); txtCost.setWrapStyleWord(true); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 6; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; pnlStats.add(txtCost, gridBagConstraints); } } }