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