UI refactoring
This commit is contained in:
		
							parent
							
								
									d27a394813
								
							
						
					
					
						commit
						b2776f5e92
					
				| @ -1841,16 +1841,16 @@ RecoveryConfigurationPanel.table.deployment.default = Default ({0}) | |||||||
| SeparationConfigurationPanel.table.separation.default = Default ({0}) | SeparationConfigurationPanel.table.separation.default = Default ({0}) | ||||||
| 
 | 
 | ||||||
| IgnitionSelectionDialog.opt.title = Which flight configurations are affected: | IgnitionSelectionDialog.opt.title = Which flight configurations are affected: | ||||||
| IgnitionSelectionDialog.opt.default = Change the default ignition event for this motor | IgnitionSelectionDialog.opt.default = Change all configurations using the default ignition event | ||||||
| IgnitionSelectionDialog.opt.override = Override for the {0} flight configuration only | IgnitionSelectionDialog.opt.override = Override for the {0} flight configuration only | ||||||
| 
 | 
 | ||||||
| DeploymentSelectionDialog.opt.title = Which flight configurations are affected: | DeploymentSelectionDialog.opt.title = Which flight configurations are affected: | ||||||
| DeploymentSelectionDialog.opt.default = Change the default deployment event for this recovery device | DeploymentSelectionDialog.opt.default = Change all configuration using the default deployment event | ||||||
| DeploymentSelectionDialog.opt.override = Override for the {0} flight configuration only | DeploymentSelectionDialog.opt.override = Override for the {0} flight configuration only | ||||||
| 
 | 
 | ||||||
| SeparationSelectionDialog.lbl.separation = Stage separation at: | SeparationSelectionDialog.lbl.separation = Stage separation at: | ||||||
| SeparationSelectionDialog.opt.title = Which flight configurations are affected: | SeparationSelectionDialog.opt.title = Which flight configurations are affected: | ||||||
| SeparationSelectionDialog.opt.default = Change the default separation event for this stage | SeparationSelectionDialog.opt.default = Change all configuration using the default separation event | ||||||
| SeparationSelectionDialog.opt.override = Override for the {0} flight configuration only | SeparationSelectionDialog.opt.override = Override for the {0} flight configuration only | ||||||
| 
 | 
 | ||||||
| MotorConfigurationPanel.description = <b>Select the motors and motor ignition events of your rocket.</b><br> <em>Motor mounts:</em> Select which components function as motor mounts.<br> <em>Motor configurations:</em> Select the motor and ignition event for each motor mount. | MotorConfigurationPanel.description = <b>Select the motors and motor ignition events of your rocket.</b><br> <em>Motor mounts:</em> Select which components function as motor mounts.<br> <em>Motor configurations:</em> Select the motor and ignition event for each motor mount. | ||||||
|  | |||||||
| @ -41,12 +41,13 @@ public class IgnitionSelectionDialog extends JDialog { | |||||||
| 		 | 		 | ||||||
| 		JPanel panel = new JPanel(new MigLayout("fill")); | 		JPanel panel = new JPanel(new MigLayout("fill")); | ||||||
| 		 | 		 | ||||||
|  | 		boolean isDefault = component.getIgnitionConfiguration().isDefault(id); | ||||||
| 		panel.add(new JLabel(trans.get("IgnitionSelectionDialog.opt.title")), "span, wrap rel"); | 		panel.add(new JLabel(trans.get("IgnitionSelectionDialog.opt.title")), "span, wrap rel"); | ||||||
| 		final JRadioButton defaultButton = new JRadioButton(trans.get("IgnitionSelectionDialog.opt.default"), true); | 		final JRadioButton defaultButton = new JRadioButton(trans.get("IgnitionSelectionDialog.opt.default"), isDefault); | ||||||
| 		panel.add(defaultButton, "span, gapleft para, wrap rel"); | 		panel.add(defaultButton, "span, gapleft para, wrap rel"); | ||||||
| 		String str = trans.get("IgnitionSelectionDialog.opt.override"); | 		String str = trans.get("IgnitionSelectionDialog.opt.override"); | ||||||
| 		str = str.replace("{0}", rocket.getFlightConfigurationNameOrDescription(id)); | 		str = str.replace("{0}", rocket.getFlightConfigurationNameOrDescription(id)); | ||||||
| 		final JRadioButton overrideButton = new JRadioButton(str, false); | 		final JRadioButton overrideButton = new JRadioButton(str, !isDefault); | ||||||
| 		panel.add(overrideButton, "span, gapleft para, wrap para"); | 		panel.add(overrideButton, "span, gapleft para, wrap para"); | ||||||
| 		 | 		 | ||||||
| 		ButtonGroup buttonGroup = new ButtonGroup(); | 		ButtonGroup buttonGroup = new ButtonGroup(); | ||||||
| @ -90,6 +91,7 @@ public class IgnitionSelectionDialog extends JDialog { | |||||||
| 		 | 		 | ||||||
| 		panel.add(okButton, "sizegroup btn"); | 		panel.add(okButton, "sizegroup btn"); | ||||||
| 		 | 		 | ||||||
|  | 		 | ||||||
| 		JButton cancel = new JButton(trans.get("button.cancel")); | 		JButton cancel = new JButton(trans.get("button.cancel")); | ||||||
| 		cancel.addActionListener(new ActionListener() { | 		cancel.addActionListener(new ActionListener() { | ||||||
| 			@Override | 			@Override | ||||||
|  | |||||||
| @ -1,5 +1,8 @@ | |||||||
| package net.sf.openrocket.gui.dialogs.flightconfiguration; | package net.sf.openrocket.gui.dialogs.flightconfiguration; | ||||||
| 
 | 
 | ||||||
|  | import java.awt.Color; | ||||||
|  | import java.awt.Component; | ||||||
|  | import java.awt.Font; | ||||||
| import java.awt.event.ActionEvent; | import java.awt.event.ActionEvent; | ||||||
| import java.awt.event.ActionListener; | import java.awt.event.ActionListener; | ||||||
| import java.awt.event.MouseAdapter; | import java.awt.event.MouseAdapter; | ||||||
| @ -11,6 +14,7 @@ import javax.swing.JPanel; | |||||||
| import javax.swing.JScrollPane; | import javax.swing.JScrollPane; | ||||||
| import javax.swing.JTable; | import javax.swing.JTable; | ||||||
| import javax.swing.ListSelectionModel; | import javax.swing.ListSelectionModel; | ||||||
|  | import javax.swing.table.DefaultTableCellRenderer; | ||||||
| import javax.swing.table.TableColumn; | import javax.swing.table.TableColumn; | ||||||
| import javax.swing.table.TableColumnModel; | import javax.swing.table.TableColumnModel; | ||||||
| 
 | 
 | ||||||
| @ -82,11 +86,13 @@ public class MotorConfigurationPanel extends JPanel { | |||||||
| 		configurationTable = new JTable(configurationTableModel); | 		configurationTable = new JTable(configurationTableModel); | ||||||
| 		configurationTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); | 		configurationTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); | ||||||
| 		configurationTable.setRowSelectionAllowed(true); | 		configurationTable.setRowSelectionAllowed(true); | ||||||
|  | 		configurationTable.setDefaultRenderer(Object.class, new MotorTableCellRenderer()); | ||||||
| 		 | 		 | ||||||
| 		configurationTable.addMouseListener(new MouseAdapter() { | 		configurationTable.addMouseListener(new MouseAdapter() { | ||||||
| 			@Override | 			@Override | ||||||
| 			public void mouseClicked(MouseEvent e) { | 			public void mouseClicked(MouseEvent e) { | ||||||
| 				updateButtonState(); | 				updateButtonState(); | ||||||
|  | 				 | ||||||
| 				if (e.getClickCount() == 2) { | 				if (e.getClickCount() == 2) { | ||||||
| 					// FIXME:  Double-click on ignition column should select ignition | 					// FIXME:  Double-click on ignition column should select ignition | ||||||
| 					// Double-click edits motor | 					// Double-click edits motor | ||||||
| @ -142,7 +148,12 @@ public class MotorConfigurationPanel extends JPanel { | |||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public void fireTableDataChanged() { | 	public void fireTableDataChanged() { | ||||||
|  | 		int selected = configurationTable.getSelectedRow(); | ||||||
| 		configurationTableModel.fireTableDataChanged(); | 		configurationTableModel.fireTableDataChanged(); | ||||||
|  | 		if (selected >= 0) { | ||||||
|  | 			selected = Math.min(selected, configurationTable.getRowCount() - 1); | ||||||
|  | 			configurationTable.getSelectionModel().setSelectionInterval(selected, selected); | ||||||
|  | 		} | ||||||
| 		updateButtonState(); | 		updateButtonState(); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| @ -162,6 +173,11 @@ public class MotorConfigurationPanel extends JPanel { | |||||||
| 			return null; | 			return null; | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
|  | 		return getMount(row); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
|  | 	private MotorMount getMount(int row) { | ||||||
| 		int count = 0; | 		int count = 0; | ||||||
| 		for (RocketComponent c : rocket) { | 		for (RocketComponent c : rocket) { | ||||||
| 			if (c instanceof MotorMount) { | 			if (c instanceof MotorMount) { | ||||||
| @ -178,6 +194,8 @@ public class MotorConfigurationPanel extends JPanel { | |||||||
| 		throw new IndexOutOfBoundsException("Invalid row, row=" + row + " count=" + count); | 		throw new IndexOutOfBoundsException("Invalid row, row=" + row + " count=" + count); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
| 	private void selectMotor() { | 	private void selectMotor() { | ||||||
| 		String id = rocket.getDefaultConfiguration().getFlightConfigurationID(); | 		String id = rocket.getDefaultConfiguration().getFlightConfigurationID(); | ||||||
| 		MotorMount mount = getCurrentMount(); | 		MotorMount mount = getCurrentMount(); | ||||||
| @ -203,8 +221,7 @@ public class MotorConfigurationPanel extends JPanel { | |||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| 		flightConfigurationDialog.fireContentsUpdated(); | 		flightConfigurationDialog.fireContentsUpdated(); | ||||||
| 		configurationTableModel.fireTableDataChanged(); | 		fireTableDataChanged(); | ||||||
| 		updateButtonState(); |  | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	private void removeMotor() { | 	private void removeMotor() { | ||||||
| @ -216,8 +233,7 @@ public class MotorConfigurationPanel extends JPanel { | |||||||
| 		mount.getMotorConfiguration().resetDefault(id); | 		mount.getMotorConfiguration().resetDefault(id); | ||||||
| 		 | 		 | ||||||
| 		flightConfigurationDialog.fireContentsUpdated(); | 		flightConfigurationDialog.fireContentsUpdated(); | ||||||
| 		configurationTableModel.fireTableDataChanged(); | 		fireTableDataChanged(); | ||||||
| 		updateButtonState(); |  | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	private void selectIgnition() { | 	private void selectIgnition() { | ||||||
| @ -233,8 +249,58 @@ public class MotorConfigurationPanel extends JPanel { | |||||||
| 		dialog.setVisible(true); | 		dialog.setVisible(true); | ||||||
| 		 | 		 | ||||||
| 		flightConfigurationDialog.fireContentsUpdated(); | 		flightConfigurationDialog.fireContentsUpdated(); | ||||||
| 		configurationTableModel.fireTableDataChanged(); | 		fireTableDataChanged(); | ||||||
| 		updateButtonState(); | 	} | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
|  | 	private class MotorTableCellRenderer extends DefaultTableCellRenderer { | ||||||
|  | 		 | ||||||
|  | 		@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; | ||||||
|  | 			 | ||||||
|  | 			MotorMount mount = getMount(row); | ||||||
|  | 			String id = rocket.getDefaultConfiguration().getFlightConfigurationID(); | ||||||
|  | 			 | ||||||
|  | 			switch (column) { | ||||||
|  | 			case 0: | ||||||
|  | 				regular(label); | ||||||
|  | 				break; | ||||||
|  | 			 | ||||||
|  | 			case 1: | ||||||
|  | 				if (mount.getMotorConfiguration().get(id).getMotor() != null) { | ||||||
|  | 					regular(label); | ||||||
|  | 				} else { | ||||||
|  | 					shaded(label); | ||||||
|  | 				} | ||||||
|  | 				break; | ||||||
|  | 			 | ||||||
|  | 			case 2: | ||||||
|  | 				if (mount.getIgnitionConfiguration().isDefault(id)) { | ||||||
|  | 					shaded(label); | ||||||
|  | 				} else { | ||||||
|  | 					regular(label); | ||||||
|  | 				} | ||||||
|  | 				break; | ||||||
|  | 			} | ||||||
|  | 			 | ||||||
|  | 			return label; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		private void shaded(JLabel label) { | ||||||
|  | 			GUIUtil.changeFontStyle(label, Font.ITALIC); | ||||||
|  | 			label.setForeground(Color.GRAY); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		private void regular(JLabel label) { | ||||||
|  | 			GUIUtil.changeFontStyle(label, Font.PLAIN); | ||||||
|  | 			label.setForeground(Color.BLACK); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| } | } | ||||||
|  | |||||||
| @ -397,6 +397,19 @@ public class GUIUtil { | |||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
|  | 	/** | ||||||
|  | 	 * Changes the style of the font of the specified label. | ||||||
|  | 	 *  | ||||||
|  | 	 * @param label			the component for which to change the font | ||||||
|  | 	 * @param style			the change in the font style | ||||||
|  | 	 */ | ||||||
|  | 	public static void changeFontStyle(JLabel label, int style) { | ||||||
|  | 		Font font = label.getFont(); | ||||||
|  | 		font = font.deriveFont(style); | ||||||
|  | 		label.setFont(font); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
| 	 | 	 | ||||||
| 	/** | 	/** | ||||||
| 	 * Traverses recursively the component tree, and sets all applicable component  | 	 * Traverses recursively the component tree, and sets all applicable component  | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user