Rework the motor table entry.
This commit is contained in:
		
							parent
							
								
									6641f959c5
								
							
						
					
					
						commit
						86a273272b
					
				| @ -139,9 +139,6 @@ public abstract class FlightConfigurablePanel<T extends FlightConfigurableCompon | ||||
| 		@Override | ||||
| 		public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { | ||||
| 			Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); | ||||
| 			if (!(c instanceof JLabel)) { | ||||
| 				return c; | ||||
| 			} | ||||
| 			JLabel label = (JLabel) c; | ||||
| 
 | ||||
| 			switch (column) { | ||||
|  | ||||
| @ -1,17 +1,28 @@ | ||||
| package net.sf.openrocket.gui.main.flightconfigpanel; | ||||
| 
 | ||||
| import java.awt.Color; | ||||
| import java.awt.Component; | ||||
| import java.awt.Dimension; | ||||
| import java.awt.Font; | ||||
| import java.awt.event.ActionEvent; | ||||
| import java.awt.event.ActionListener; | ||||
| import java.awt.event.MouseAdapter; | ||||
| import java.awt.event.MouseEvent; | ||||
| 
 | ||||
| import javax.swing.Box; | ||||
| import javax.swing.BoxLayout; | ||||
| import javax.swing.JButton; | ||||
| import javax.swing.JComponent; | ||||
| import javax.swing.JLabel; | ||||
| import javax.swing.JPanel; | ||||
| import javax.swing.JScrollPane; | ||||
| import javax.swing.JTable; | ||||
| import javax.swing.ListSelectionModel; | ||||
| import javax.swing.SwingUtilities; | ||||
| import javax.swing.UIManager; | ||||
| import javax.swing.border.Border; | ||||
| import javax.swing.border.EmptyBorder; | ||||
| import javax.swing.table.TableCellRenderer; | ||||
| 
 | ||||
| import net.miginfocom.swing.MigLayout; | ||||
| import net.sf.openrocket.gui.components.StyledLabel; | ||||
| @ -19,8 +30,10 @@ import net.sf.openrocket.gui.components.StyledLabel.Style; | ||||
| import net.sf.openrocket.gui.dialogs.flightconfiguration.IgnitionSelectionDialog; | ||||
| import net.sf.openrocket.gui.dialogs.flightconfiguration.MotorMountConfigurationPanel; | ||||
| import net.sf.openrocket.gui.dialogs.motor.MotorChooserDialog; | ||||
| import net.sf.openrocket.gui.util.GUIUtil; | ||||
| import net.sf.openrocket.motor.Motor; | ||||
| import net.sf.openrocket.rocketcomponent.IgnitionConfiguration; | ||||
| import net.sf.openrocket.rocketcomponent.IgnitionConfiguration.IgnitionEvent; | ||||
| import net.sf.openrocket.rocketcomponent.MotorConfiguration; | ||||
| import net.sf.openrocket.rocketcomponent.MotorMount; | ||||
| import net.sf.openrocket.rocketcomponent.Rocket; | ||||
| @ -28,6 +41,7 @@ import net.sf.openrocket.rocketcomponent.RocketComponent; | ||||
| import net.sf.openrocket.unit.UnitGroup; | ||||
| import net.sf.openrocket.util.Chars; | ||||
| import net.sf.openrocket.util.Coordinate; | ||||
| import net.sf.openrocket.util.Pair; | ||||
| 
 | ||||
| public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount> { | ||||
| 
 | ||||
| @ -220,15 +234,62 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount> | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	private class MotorTableCellRenderer extends FlightConfigurablePanel<MotorMount>.FlightConfigurableCellRenderer { | ||||
| 
 | ||||
| 	private class MotorTableCellRenderer implements TableCellRenderer { | ||||
| 
 | ||||
| 		private void setSelected( JComponent c, JTable table, boolean isSelected, boolean hasFocus ) { | ||||
| 			c.setOpaque(true); | ||||
| 			if ( isSelected) { | ||||
| 				c.setBackground(table.getSelectionBackground()); | ||||
| 				c.setForeground(table.getSelectionForeground()); | ||||
| 			} else { | ||||
| 				c.setBackground(table.getBackground()); | ||||
| 				c.setForeground(table.getForeground()); | ||||
| 			} | ||||
| 			Border b = null; | ||||
| 			if ( hasFocus ) { | ||||
| 				if (isSelected) { | ||||
| 					b = UIManager.getBorder("Table.focusSelectedCellHighlightBorder"); | ||||
| 				} else { | ||||
| 					b = UIManager.getBorder("Table.focusCellHighligtBorder"); | ||||
| 				} | ||||
| 			} else { | ||||
| 				b = new EmptyBorder(1,1,1,1); | ||||
| 			} | ||||
| 			c.setBorder(b); | ||||
| 		} | ||||
| 		 | ||||
| 		@Override | ||||
| 		protected void format(MotorMount mount, String configId, JLabel label) { | ||||
| 		public Component getTableCellRendererComponent(JTable table,Object value, boolean isSelected, boolean hasFocus, int row,int column) { | ||||
| 			switch (column) { | ||||
| 			case 0: { | ||||
| 				JLabel label = new JLabel(descriptor.format(rocket, (String) value)); | ||||
| 				setSelected(label, table, isSelected, hasFocus); | ||||
| 				return label; | ||||
| 			} | ||||
| 			default: { | ||||
| 				Pair<String, MotorMount> v = (Pair<String, MotorMount>) value; | ||||
| 				String id = v.getU(); | ||||
| 				MotorMount component = v.getV(); | ||||
| 				JLabel label = format(component, id); | ||||
| 				setSelected(label, table, isSelected, hasFocus); | ||||
| 				return label; | ||||
| 			} | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		protected JLabel format(MotorMount mount, String configId) { | ||||
| 			JLabel label = new JLabel(); | ||||
| 			label.setLayout(new BoxLayout(label, BoxLayout.X_AXIS)); | ||||
| 			MotorConfiguration motorConfig = mount.getMotorConfiguration().get(configId); | ||||
| 			String motorString = getMotorSpecification(mount, motorConfig); | ||||
| 			String ignitionString = getIgnitionEventString(configId, mount); | ||||
| 			label.setText(motorString + " " + ignitionString); | ||||
| 			JLabel motorDescriptionLabel = new JLabel(motorString); | ||||
| 			label.add(motorDescriptionLabel); | ||||
| 			label.add( Box.createRigidArea(new Dimension(10,0))); | ||||
| 			JLabel ignitionLabel = getIgnitionEventString(configId, mount); | ||||
| 			label.add(ignitionLabel); | ||||
| 			label.validate(); | ||||
| 			return label; | ||||
| //			label.setText(motorString + " " + ignitionString); | ||||
| 		} | ||||
| 
 | ||||
| 		private String getMotorSpecification(MotorMount mount, MotorConfiguration motorConfig) { | ||||
| @ -250,24 +311,31 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount> | ||||
| 			return c.toAbsolute(Coordinate.NUL).length; | ||||
| 		} | ||||
| 
 | ||||
| 		protected final void shaded(JLabel label) { | ||||
| 			GUIUtil.changeFontStyle(label, Font.ITALIC); | ||||
| 			label.setForeground(Color.GRAY); | ||||
| 		} | ||||
| 
 | ||||
| 
 | ||||
| 		private String getIgnitionEventString(String id, MotorMount mount) { | ||||
| 		private JLabel getIgnitionEventString(String id, MotorMount mount) { | ||||
| 			IgnitionConfiguration ignitionConfig = mount.getIgnitionConfiguration().get(id); | ||||
| 			IgnitionConfiguration.IgnitionEvent ignitionEvent = ignitionConfig.getIgnitionEvent(); | ||||
| 
 | ||||
| 			Double ignitionDelay = ignitionConfig.getIgnitionDelay(); | ||||
| 			boolean isDefault = mount.getIgnitionConfiguration().isDefault(id); | ||||
| 
 | ||||
| 			JLabel label = new JLabel(); | ||||
| 			String str = trans.get("MotorMount.IgnitionEvent.short." + ignitionEvent.name()); | ||||
| 			if (ignitionDelay > 0.001) { | ||||
| 			if (ignitionEvent != IgnitionEvent.NEVER && ignitionDelay > 0.001) { | ||||
| 				str = str + " + " + UnitGroup.UNITS_SHORT_TIME.toStringUnit(ignitionDelay); | ||||
| 			} | ||||
| 			if (isDefault) { | ||||
| 				shaded(label); | ||||
| 				String def = trans.get("MotorConfigurationTableModel.table.ignition.default"); | ||||
| 				str = def.replace("{0}", str); | ||||
| 			} | ||||
| 			return str; | ||||
| 			label.setText(str); | ||||
| 			return label; | ||||
| 		} | ||||
| 
 | ||||
| 	} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user