Apply translation to photo studio
This commit is contained in:
parent
ae1655e78c
commit
1d38fb93db
@ -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
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -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) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user