Apply translation to photo studio

This commit is contained in:
bkuker 2014-01-26 16:05:57 -05:00
parent ae1655e78c
commit 1d38fb93db
4 changed files with 163 additions and 125 deletions

View File

@ -1177,8 +1177,6 @@ main.menu.analyze.optimization = Rocket optimization
main.menu.analyze.optimization.desc = General rocket design optimization main.menu.analyze.optimization.desc = General rocket design optimization
main.menu.analyze.customExpressions = Custom expressions main.menu.analyze.customExpressions = Custom expressions
main.menu.analyze.customExpressions.desc = Define new flight data types by writing custom mathematical expressions main.menu.analyze.customExpressions.desc = Define new flight data types by writing custom mathematical expressions
main.menu.analyze.photo = 3D Rendering
main.menu.analyze.photo.desc = Create realistic 3D images of the rocket
main.menu.help = Help main.menu.help = Help
main.menu.help.desc = Information about OpenRocket main.menu.help.desc = Information about OpenRocket
@ -1894,3 +1892,56 @@ SeparationSelectionDialog.opt.override = Override for the {0} flight configurati
MotorConfigurationPanel.description = <b>Select the motors and motor ignition events of the selected flight configuration.</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 the selected flight configuration.</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.
MotorDescriptionSubstitutor.description = Motors in the configuration MotorDescriptionSubstitutor.description = Motors in the configuration
!Photo Panel
PhotoFrame.title = Photo Studio
PhotoFrame.desc = Create realistic 3D images of the rocket
PhotoFrame.menu.file.save = Save Image...
PhotoFrame.fileFilter.png = PNG Image
PhotoFrame.menu.edit.copy = Copy Image
PhotoFrame.menu.edit.copy.desc = Copy image to clipboard
PhotoFrame.menu.edit.settings = Photo Settings
PhotoFrame.menu.window = Window
PhotoFrame.menu.window.size = Size
PhotoFrame.menu.window.size.portrait = {0} Portrait
!Photo Settings
PhotoSettingsConfig.title = Settings
PhotoSettingsConfig.colorChooser.title = Color Chooser
PhotoSettingsConfig.tab.orientation = Orientation
PhotoSettingsConfig.lbl.rocket = Rocket
PhotoSettingsConfig.lbl.pitch = Pitch
PhotoSettingsConfig.lbl.yaw = Yaw
PhotoSettingsConfig.lbl.roll = Roll
PhotoSettingsConfig.lbl.advance = Advance
PhotoSettingsConfig.lbl.camera = Camera
PhotoSettingsConfig.lbl.vAz = View Azimuth
PhotoSettingsConfig.lbl.vAlt = View Altitude
PhotoSettingsConfig.lbl.vDist = View Distance
PhotoSettingsConfig.lbl.fov = FoV
PhotoSettingsConfig.tab.environment = Environment
PhotoSettingsConfig.lbl.light = Light
PhotoSettingsConfig.lbl.sun = Sun Light
PhotoSettingsConfig.lbl.amb = Ambiance
PhotoSettingsConfig.lbl.lightAz = Light Azimuth
PhotoSettingsConfig.lbl.lightAlt = Light Altitude
PhotoSettingsConfig.lbl.sky = Sky
PhotoSettingsConfig.lbl.skyColor = Sky Color
PhotoSettingsConfig.lbl.skyImage = Sky Image
PhotoSettingsConfig.lbl.skyCredit = Image Credit:
PhotoSettingsConfig.tab.effects = Effects
PhotoSettingsConfig.lbl.smokeFlame = Smoke & Flame
PhotoSettingsConfig.lbl.smoke = Smoke
PhotoSettingsConfig.lbl.smokeOpacity = Smoke Opacity
PhotoSettingsConfig.lbl.flame = Flame
PhotoSettingsConfig.lbl.flameAspect = Flame Aspect Ratio
PhotoSettingsConfig.lbl.sparks = Sparks
PhotoSettingsConfig.lbl.sparkConcentration = Spark Concentration
PhotoSettingsConfig.lbl.sparkWeight = Spark Weight
PhotoSettingsConfig.lbl.exhaustScale = Exhaust Scale
PhotoSettingsConfig.lbl.effects = Effects
PhotoSettingsConfig.lbl.speed = Speed

View File

@ -61,7 +61,7 @@ public class PhotoFrame extends JFrame {
public PhotoFrame(OpenRocketDocument document, Window parent) { public PhotoFrame(OpenRocketDocument document, Window parent) {
this(false); this(false);
setTitle("Photo - " + document.getRocket().getName()); setTitle(trans.get("PhotoFrame.title") + " - " + document.getRocket().getName());
photoPanel.setDoc(document); photoPanel.setDoc(document);
} }
@ -77,7 +77,7 @@ public class PhotoFrame extends JFrame {
GUIUtil.rememberWindowPosition(this); GUIUtil.rememberWindowPosition(this);
GUIUtil.setWindowIcons(this); GUIUtil.setWindowIcons(this);
settings = new JDialog(this, "Settings") { settings = new JDialog(this, trans.get("PhotoSettingsConfig.title")) {
{ {
setContentPane(new PhotoSettingsConfig(photoPanel.getSettings())); setContentPane(new PhotoSettingsConfig(photoPanel.getSettings()));
pack(); pack();
@ -142,11 +142,10 @@ public class PhotoFrame extends JFrame {
menu.add(item); menu.add(item);
} }
item = new JMenuItem("Save Image...", KeyEvent.VK_S); // TODO Trans item = new JMenuItem(trans.get("PhotoFrame.menu.file.save"), KeyEvent.VK_S);
item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, SHORTCUT_KEY)); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, SHORTCUT_KEY));
// // Open a rocket design // // Open a rocket design
item.getAccessibleContext().setAccessibleDescription("Save Image"); // TODO item.getAccessibleContext().setAccessibleDescription(trans.get("PhotoFrame.menu.file.save"));
// Trans
item.setIcon(Icons.FILE_OPEN); item.setIcon(Icons.FILE_OPEN);
item.addActionListener(new ActionListener() { item.addActionListener(new ActionListener() {
@Override @Override
@ -160,8 +159,8 @@ public class PhotoFrame extends JFrame {
public void run() { public void run() {
log.info("Got image {} to save...", image); log.info("Got image {} to save...", image);
final FileFilter png = new SimpleFileFilter("PNG Image", ".png"); // TODO final FileFilter png = new SimpleFileFilter(trans.get("PhotoFrame.fileFilter.png"),
// Trans ".png");
final JFileChooser chooser = new JFileChooser(); final JFileChooser chooser = new JFileChooser();
@ -210,7 +209,7 @@ public class PhotoFrame extends JFrame {
menu.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.menu.Rocketedt")); menu.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.menu.Rocketedt"));
menubar.add(menu); menubar.add(menu);
Action action = new AbstractAction("Copy") { Action action = new AbstractAction(trans.get("PhotoFrame.menu.edit.copy")) {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
photoPanel.addImageCallback(new PhotoPanel.ImageCallback() { photoPanel.addImageCallback(new PhotoPanel.ImageCallback() {
@ -253,10 +252,10 @@ public class PhotoFrame extends JFrame {
item = new JMenuItem(action); item = new JMenuItem(action);
item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, SHORTCUT_KEY)); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, SHORTCUT_KEY));
item.setMnemonic(KeyEvent.VK_C); item.setMnemonic(KeyEvent.VK_C);
item.getAccessibleContext().setAccessibleDescription("Copy image to clipboard"); item.getAccessibleContext().setAccessibleDescription(trans.get("PhotoFrame.menu.edit.copy.desc"));
menu.add(item); menu.add(item);
menu.add(new JMenuItem(new AbstractAction("Photo Settings") { menu.add(new JMenuItem(new AbstractAction(trans.get("PhotoSettingsConfig.title")) {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
settings.setVisible(true); settings.setVisible(true);
@ -264,9 +263,9 @@ public class PhotoFrame extends JFrame {
})); }));
// Window // Window
menu = new JMenu("Window"); menu = new JMenu(trans.get("PhotoFrame.menu.window"));
menubar.add(menu); menubar.add(menu);
JMenu sizeMenu = new JMenu("Size"); JMenu sizeMenu = new JMenu(trans.get("PhotoFrame.menu.window.size"));
menu.add(sizeMenu); menu.add(sizeMenu);
sizeMenu.add(new JMenuItem(new SizeAction(320, 240, "QVGA"))); sizeMenu.add(new JMenuItem(new SizeAction(320, 240, "QVGA")));
@ -275,9 +274,10 @@ public class PhotoFrame extends JFrame {
sizeMenu.addSeparator(); sizeMenu.addSeparator();
sizeMenu.add(new JMenuItem(new SizeAction(240, 320, "QVGA Portrait"))); final String s = trans.get("PhotoFrame.menu.window.size.portrait");
sizeMenu.add(new JMenuItem(new SizeAction(480, 640, "VGA Portrait"))); sizeMenu.add(new JMenuItem(new SizeAction(240, 320, s.replace("{0}", "QVGA"))));
sizeMenu.add(new JMenuItem(new SizeAction(768, 1024, "XGA Portrait"))); sizeMenu.add(new JMenuItem(new SizeAction(480, 640, s.replace("{0}", "VGA"))));
sizeMenu.add(new JMenuItem(new SizeAction(768, 1024, s.replace("{0}", "XGA"))));
sizeMenu.addSeparator(); sizeMenu.addSeparator();

View File

@ -37,12 +37,15 @@ import net.sf.openrocket.gui.figure3d.photo.sky.builtin.Mountains;
import net.sf.openrocket.gui.figure3d.photo.sky.builtin.Orbit; import net.sf.openrocket.gui.figure3d.photo.sky.builtin.Orbit;
import net.sf.openrocket.gui.figure3d.photo.sky.builtin.Storm; import net.sf.openrocket.gui.figure3d.photo.sky.builtin.Storm;
import net.sf.openrocket.gui.util.ColorConversion; import net.sf.openrocket.gui.util.ColorConversion;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.startup.Application; import net.sf.openrocket.startup.Application;
import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.unit.UnitGroup;
import net.sf.openrocket.util.StateChangeListener; import net.sf.openrocket.util.StateChangeListener;
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class PhotoSettingsConfig extends JTabbedPane { public class PhotoSettingsConfig extends JTabbedPane {
private final Translator trans = Application.getTranslator();
private static final JColorChooser colorChooser = new JColorChooser(); private static final JColorChooser colorChooser = new JColorChooser();
private class ColorActionListener implements ActionListener { private class ColorActionListener implements ActionListener {
@ -63,7 +66,7 @@ public class PhotoSettingsConfig extends JTabbedPane {
Color awtColor = ColorConversion.toAwtColor(c); Color awtColor = ColorConversion.toAwtColor(c);
colorChooser.setColor(awtColor); colorChooser.setColor(awtColor);
JDialog d = JColorChooser.createDialog(PhotoSettingsConfig.this, JDialog d = JColorChooser.createDialog(PhotoSettingsConfig.this,
"Color Chooser", true, colorChooser, new ActionListener() { trans.get("PhotoSettingsConfig.colorChooser.title"), true, colorChooser, new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent okEvent) { public void actionPerformed(ActionEvent okEvent) {
Color selected = colorChooser.getColor(); Color selected = colorChooser.getColor();
@ -118,96 +121,87 @@ public class PhotoSettingsConfig extends JTabbedPane {
smokeColorButton.addActionListener(new ColorActionListener(p, "SmokeColor")); smokeColorButton.addActionListener(new ColorActionListener(p, "SmokeColor"));
flameColorButton.addActionListener(new ColorActionListener(p, "FlameColor")); flameColorButton.addActionListener(new ColorActionListener(p, "FlameColor"));
addTab(trans.get("PhotoSettingsConfig.tab.orientation"), new JPanel(new MigLayout("fill")) {
addTab("Orientation", new JPanel(new MigLayout("fill")) {
{ {
add(new StyledLabel("Rocket", Style.BOLD)); add(new StyledLabel(trans.get("PhotoSettingsConfig.lbl.rocket"), Style.BOLD));
add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx"); add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx");
add(new JLabel("Pitch")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.pitch")));
DoubleModel pitchModel = new DoubleModel(p, "Pitch", UnitGroup.UNITS_ANGLE); DoubleModel pitchModel = new DoubleModel(p, "Pitch", UnitGroup.UNITS_ANGLE);
add(new JSpinner(pitchModel.getSpinnerModel()), "w 40"); add(new JSpinner(pitchModel.getSpinnerModel()), "w 40");
add(new UnitSelector(pitchModel), "wrap"); add(new UnitSelector(pitchModel), "wrap");
add(new JLabel("Yaw")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.yaw")));
DoubleModel yawModel = new DoubleModel(p, "Yaw", UnitGroup.UNITS_ANGLE); DoubleModel yawModel = new DoubleModel(p, "Yaw", UnitGroup.UNITS_ANGLE);
add(new JSpinner(yawModel.getSpinnerModel()), "w 40"); add(new JSpinner(yawModel.getSpinnerModel()), "w 40");
add(new UnitSelector(yawModel), "wrap"); add(new UnitSelector(yawModel), "wrap");
add(new JLabel("Roll")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.roll")));
DoubleModel rollModel = new DoubleModel(p, "Roll", UnitGroup.UNITS_ANGLE); DoubleModel rollModel = new DoubleModel(p, "Roll", UnitGroup.UNITS_ANGLE);
add(new JSpinner(rollModel.getSpinnerModel()), "w 40"); add(new JSpinner(rollModel.getSpinnerModel()), "w 40");
add(new UnitSelector(rollModel), "wrap"); add(new UnitSelector(rollModel), "wrap");
add(new JLabel("Advance")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.advance")));
DoubleModel advanceModel = new DoubleModel(p, "Advance", UnitGroup.UNITS_LENGTH); DoubleModel advanceModel = new DoubleModel(p, "Advance", UnitGroup.UNITS_LENGTH);
add(new JSpinner(advanceModel.getSpinnerModel()), "w 40"); add(new JSpinner(advanceModel.getSpinnerModel()), "w 40");
add(new UnitSelector(advanceModel), "wrap"); add(new UnitSelector(advanceModel), "wrap");
add(new StyledLabel("Camera", Style.BOLD)); add(new StyledLabel(trans.get("PhotoSettingsConfig.lbl.camera"), Style.BOLD));
add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx"); add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx");
add(new JLabel("View Azimuth")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.vAz")));
DoubleModel viewAzModel = new DoubleModel(p, "ViewAz", UnitGroup.UNITS_ANGLE); DoubleModel viewAzModel = new DoubleModel(p, "ViewAz", UnitGroup.UNITS_ANGLE);
add(new JSpinner(viewAzModel.getSpinnerModel()), "w 40"); add(new JSpinner(viewAzModel.getSpinnerModel()), "w 40");
add(new UnitSelector(viewAzModel), "wrap"); add(new UnitSelector(viewAzModel), "wrap");
add(new JLabel("View Altitude")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.vAlt")));
DoubleModel viewAltModle = new DoubleModel(p, "ViewAlt", UnitGroup.UNITS_ANGLE); DoubleModel viewAltModle = new DoubleModel(p, "ViewAlt", UnitGroup.UNITS_ANGLE);
add(new JSpinner(viewAltModle.getSpinnerModel()), "w 40"); add(new JSpinner(viewAltModle.getSpinnerModel()), "w 40");
add(new UnitSelector(viewAltModle), "wrap"); add(new UnitSelector(viewAltModle), "wrap");
add(new JLabel("View Distance")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.vDist")));
DoubleModel viewDistanceModel = new DoubleModel(p, "ViewDistance", UnitGroup.UNITS_LENGTH); DoubleModel viewDistanceModel = new DoubleModel(p, "ViewDistance", UnitGroup.UNITS_LENGTH);
add(new JSpinner(viewDistanceModel.getSpinnerModel()), "w 40"); add(new JSpinner(viewDistanceModel.getSpinnerModel()), "w 40");
add(new UnitSelector(viewDistanceModel), "wrap"); add(new UnitSelector(viewDistanceModel), "wrap");
add(new JLabel("FoV")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.fov")));
DoubleModel fovModel = new DoubleModel(p, "Fov", UnitGroup.UNITS_ANGLE); DoubleModel fovModel = new DoubleModel(p, "Fov", UnitGroup.UNITS_ANGLE);
add(new JSpinner(fovModel.getSpinnerModel()), "w 40"); add(new JSpinner(fovModel.getSpinnerModel()), "w 40");
add(new UnitSelector(fovModel), "wrap"); add(new UnitSelector(fovModel), "wrap");
} }
}); });
addTab("Environment", new JPanel(new MigLayout("fill")) { addTab(trans.get("PhotoSettingsConfig.tab.environment"), new JPanel(new MigLayout("fill")) {
{ {
add(new StyledLabel("Light", Style.BOLD)); add(new StyledLabel(trans.get("PhotoSettingsConfig.lbl.light"), Style.BOLD));
add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx"); add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx");
add(new JLabel("Sun Light")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.sun")));
add(sunLightColorButton, "wrap"); add(sunLightColorButton, "wrap");
add(new JLabel("Ambiance")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.amb")));
DoubleModel ambianceModel = new DoubleModel(p, "Ambiance", 100, UnitGroup.UNITS_NONE, 0, 100); DoubleModel ambianceModel = new DoubleModel(p, "Ambiance", 100, UnitGroup.UNITS_NONE, 0, 100);
add(new JSpinner(ambianceModel.getSpinnerModel()), "wrap"); add(new JSpinner(ambianceModel.getSpinnerModel()), "wrap");
add(new JLabel("Light Azimuth")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.lightAz")));
DoubleModel lightAzModel = new DoubleModel(p, "LightAz", UnitGroup.UNITS_ANGLE); DoubleModel lightAzModel = new DoubleModel(p, "LightAz", UnitGroup.UNITS_ANGLE);
add(new JSpinner(lightAzModel.getSpinnerModel()), "w 40"); add(new JSpinner(lightAzModel.getSpinnerModel()), "w 40");
add(new UnitSelector(lightAzModel), "wrap"); add(new UnitSelector(lightAzModel), "wrap");
add(new JLabel("Light Altitude")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.lightAlt")));
DoubleModel lightAltModle = new DoubleModel(p, "LightAlt", UnitGroup.UNITS_ANGLE); DoubleModel lightAltModle = new DoubleModel(p, "LightAlt", UnitGroup.UNITS_ANGLE);
add(new JSpinner(lightAltModle.getSpinnerModel()), "wrap"); add(new JSpinner(lightAltModle.getSpinnerModel()), "wrap");
add(new StyledLabel("Sky", Style.BOLD)); add(new StyledLabel(trans.get("PhotoSettingsConfig.lbl.sky"), Style.BOLD));
add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx"); add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx");
add(new JLabel("Sky Color")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.skyColor")));
add(skyColorButton, "wrap"); add(skyColorButton, "wrap");
add(new JLabel("Sky Image")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.skyImage")));
add(new JComboBox(new DefaultComboBoxModel(new Object[] { add(new JComboBox(new DefaultComboBoxModel(new Object[] { null, Mountains.instance, Meadow.instance,
null, Storm.instance, Lake.instance, Orbit.instance, Miramar.instance }) {
Mountains.instance,
Meadow.instance,
Storm.instance,
Lake.instance,
Orbit.instance,
Miramar.instance
}) {
}) { }) {
{ {
addActionListener(new ActionListener() { addActionListener(new ActionListener() {
@ -228,7 +222,7 @@ public class PhotoSettingsConfig extends JTabbedPane {
} }
}, "wrap"); }, "wrap");
final JLabel creditLabel = new JLabel("Image Credit:"); final JLabel creditLabel = new JLabel(trans.get("PhotoSettingsConfig.lbl.skyCredit"));
add(creditLabel, "wrap"); add(creditLabel, "wrap");
final JTextArea credit = new JTextArea(); final JTextArea credit = new JTextArea();
@ -256,72 +250,65 @@ public class PhotoSettingsConfig extends JTabbedPane {
} }
}); });
addTab("Effects", new JPanel(new MigLayout("fill")) { addTab(trans.get("PhotoSettingsConfig.tab.effects"), new JPanel(new MigLayout("fill")) {
{ {
add(new StyledLabel("Smoke & Flame", Style.BOLD)); add(new StyledLabel(trans.get("PhotoSettingsConfig.lbl.smokeFlame"), Style.BOLD));
add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx"); add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx");
add(new JLabel("Smoke")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.smoke")));
BooleanModel smokeModel = new BooleanModel(p, "Smoke"); BooleanModel smokeModel = new BooleanModel(p, "Smoke");
add(new JCheckBox(smokeModel), "split 2, w 15"); add(new JCheckBox(smokeModel), "split 2, w 15");
add(smokeColorButton, "wrap"); add(smokeColorButton, "wrap");
smokeModel.addEnableComponent(smokeColorButton); smokeModel.addEnableComponent(smokeColorButton);
add(new JLabel("Smoke Opacity")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.smokeOpacity")));
DoubleModel smokeAlphaModel = new DoubleModel(p, "SmokeAlpha", 100, UnitGroup.UNITS_NONE, 0, 100); DoubleModel smokeAlphaModel = new DoubleModel(p, "SmokeAlpha", 100, UnitGroup.UNITS_NONE, 0, 100);
JSpinner opacitySpinner = new JSpinner(smokeAlphaModel.getSpinnerModel()); JSpinner opacitySpinner = new JSpinner(smokeAlphaModel.getSpinnerModel());
add(opacitySpinner, "wrap"); add(opacitySpinner, "wrap");
smokeModel.addEnableComponent(opacitySpinner); smokeModel.addEnableComponent(opacitySpinner);
add(new JLabel("Flame")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.flame")));
BooleanModel fireModel = new BooleanModel(p, "Flame"); BooleanModel fireModel = new BooleanModel(p, "Flame");
add(new JCheckBox(fireModel), "split 2, w 15"); add(new JCheckBox(fireModel), "split 2, w 15");
add(flameColorButton, "wrap"); add(flameColorButton, "wrap");
fireModel.addEnableComponent(flameColorButton); fireModel.addEnableComponent(flameColorButton);
add(new JLabel("Flame Aspect Ratio")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.flameAspect")));
DoubleModel flameAspectModel = new DoubleModel(p, "FlameAspectRatio", 100, UnitGroup.UNITS_NONE, 25, 250); DoubleModel flameAspectModel = new DoubleModel(p, "FlameAspectRatio", 100, UnitGroup.UNITS_NONE, 25,
250);
JSpinner flameAspectSpinner = new JSpinner(flameAspectModel.getSpinnerModel()); JSpinner flameAspectSpinner = new JSpinner(flameAspectModel.getSpinnerModel());
add(flameAspectSpinner, "wrap"); add(flameAspectSpinner, "wrap");
fireModel.addEnableComponent(flameAspectSpinner); fireModel.addEnableComponent(flameAspectSpinner);
add(new JLabel("Sparks")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.sparks")));
BooleanModel sparksModel = new BooleanModel(p, "Sparks"); BooleanModel sparksModel = new BooleanModel(p, "Sparks");
JCheckBox sparksCheck = new JCheckBox(sparksModel); JCheckBox sparksCheck = new JCheckBox(sparksModel);
add(sparksCheck, "wrap"); add(sparksCheck, "wrap");
fireModel.addEnableComponent(sparksCheck); fireModel.addEnableComponent(sparksCheck);
add(new JLabel("Spark Concentration")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.sparkConcentration")));
DoubleModel sparkConcentrationModel = new DoubleModel(p, "SparkConcentration", 100, UnitGroup.UNITS_NONE, 0, 100); DoubleModel sparkConcentrationModel = new DoubleModel(p, "SparkConcentration", 100,
UnitGroup.UNITS_NONE, 0, 100);
JSpinner sparkConcentrationSpinner = new JSpinner(sparkConcentrationModel.getSpinnerModel()); JSpinner sparkConcentrationSpinner = new JSpinner(sparkConcentrationModel.getSpinnerModel());
add(sparkConcentrationSpinner, "wrap"); add(sparkConcentrationSpinner, "wrap");
sparksModel.addEnableComponent(sparkConcentrationSpinner); sparksModel.addEnableComponent(sparkConcentrationSpinner);
add(new JLabel("Spark Weight")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.sparkWeight")));
DoubleModel sparkWeightModel = new DoubleModel(p, "SparkWeight", 100, UnitGroup.UNITS_NONE, 0, 100); DoubleModel sparkWeightModel = new DoubleModel(p, "SparkWeight", 100, UnitGroup.UNITS_NONE, 0, 100);
JSpinner sparkWeightSpinner = new JSpinner(sparkWeightModel.getSpinnerModel()); JSpinner sparkWeightSpinner = new JSpinner(sparkWeightModel.getSpinnerModel());
add(sparkWeightSpinner, "wrap"); add(sparkWeightSpinner, "wrap");
sparksModel.addEnableComponent(sparkWeightSpinner); sparksModel.addEnableComponent(sparkWeightSpinner);
add(new JLabel(trans.get("PhotoSettingsConfig.lbl.exhaustScale")));
add(new JLabel("Exhaust Scale"));
DoubleModel exhaustScaleModel = new DoubleModel(p, "ExhaustScale", 100, UnitGroup.UNITS_NONE, 0, 1000); DoubleModel exhaustScaleModel = new DoubleModel(p, "ExhaustScale", 100, UnitGroup.UNITS_NONE, 0, 1000);
add(new JSpinner(exhaustScaleModel.getSpinnerModel()), "wrap"); add(new JSpinner(exhaustScaleModel.getSpinnerModel()), "wrap");
add(new StyledLabel("Effects", Style.BOLD)); add(new StyledLabel(trans.get("PhotoSettingsConfig.lbl.effects"), Style.BOLD));
add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx"); add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx");
add(new JLabel("Speed")); add(new JLabel(trans.get("PhotoSettingsConfig.lbl.speed")));
add(new JCheckBox(new BooleanModel(p, "MotionBlurred")), "wrap"); add(new JCheckBox(new BooleanModel(p, "MotionBlurred")), "wrap");
} }
}); });

View File

@ -686,8 +686,8 @@ public class BasicFrame extends JFrame {
}); });
menu.add(item); menu.add(item);
item = new JMenuItem(trans.get("main.menu.analyze.photo"), KeyEvent.VK_P); item = new JMenuItem(trans.get("PhotoFrame.title"), KeyEvent.VK_P);
item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.analyze.photo.desc")); item.getAccessibleContext().setAccessibleDescription(trans.get("PhotoFrame.desc"));
item.addActionListener(new ActionListener() { item.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {