From e6ee6573f68e9223446f6ff4a813d32df28deb8e Mon Sep 17 00:00:00 2001 From: SiboVG Date: Sat, 14 Jan 2023 22:26:24 +0100 Subject: [PATCH] Re-order component config general tabs --- core/resources/l10n/messages.properties | 87 +++---- core/resources/l10n/messages_ar.properties | 29 +-- core/resources/l10n/messages_cs.properties | 25 +- core/resources/l10n/messages_de.properties | 25 +- core/resources/l10n/messages_es.properties | 25 +- core/resources/l10n/messages_fr.properties | 25 +- core/resources/l10n/messages_it.properties | 25 +- core/resources/l10n/messages_ja.properties | 25 +- core/resources/l10n/messages_nl.properties | 25 +- core/resources/l10n/messages_pl.properties | 25 +- core/resources/l10n/messages_pt.properties | 25 +- core/resources/l10n/messages_ru.properties | 29 +-- core/resources/l10n/messages_uk_UA.properties | 25 +- core/resources/l10n/messages_zh_CN.properties | 25 +- .../gui/configdialog/AxialStageConfig.java | 2 +- .../gui/configdialog/BodyTubeConfig.java | 2 +- .../configdialog/ComponentAssemblyConfig.java | 34 +-- .../configdialog/EllipticalFinSetConfig.java | 155 +++++------- .../gui/configdialog/FinSetConfig.java | 12 +- .../configdialog/FreeformFinSetConfig.java | 104 ++++---- .../gui/configdialog/InnerTubeConfig.java | 66 ++---- .../gui/configdialog/LaunchLugConfig.java | 91 +++---- .../gui/configdialog/MassComponentConfig.java | 27 +-- .../gui/configdialog/MaterialPanel.java | 105 ++++---- .../gui/configdialog/NoseConeConfig.java | 2 +- .../gui/configdialog/ParachuteConfig.java | 224 ++++++++---------- .../gui/configdialog/PlacementPanel.java | 66 ++++++ .../gui/configdialog/RailButtonConfig.java | 93 ++++---- .../gui/configdialog/RingComponentConfig.java | 60 ++--- .../configdialog/RocketComponentConfig.java | 28 --- .../gui/configdialog/ShockCordConfig.java | 124 ++++------ .../gui/configdialog/StreamerConfig.java | 149 +++++------- .../gui/configdialog/TransitionConfig.java | 5 +- .../configdialog/TrapezoidFinSetConfig.java | 133 ++++------- .../gui/configdialog/TubeFinSetConfig.java | 99 +++----- .../gui/preset/PresetEditorDialog.java | 2 +- 36 files changed, 859 insertions(+), 1144 deletions(-) create mode 100644 swing/src/net/sf/openrocket/gui/configdialog/PlacementPanel.java diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 8321f6e8b..b5b965b22 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -817,8 +817,6 @@ ringcompcfg.InnerRadius = InnerRadius ringcompcfg.AutomaticInner.ttip = Matches inner diameter to the outer diameter of the child inner tube. ringcompcfg.Thickness = Thickness ringcompcfg.Length = Length -ringcompcfg.Positionrelativeto = Position relative to: -ringcompcfg.plus = plus ringcompcfg.PositionValue = PositionValue ringcompcfg.Radialdistance = Radial distance: ringcompcfg.Distancefrom = Distance from the rocket centerline @@ -936,14 +934,6 @@ RocketCompCfg.lbl.Mass = Mass: RocketCompCfg.lbl.Componentmass = Component mass: RocketCompCfg.lbl.overriddento = (overridden to RocketCompCfg.lbl.overriddenby = (overridden by -RocketCompCfg.lbl.Componentmaterial = Component material: -RocketCompCfg.lbl.Componentfinish = Component finish: -RocketCompCfg.lbl.ttip.componentmaterialaffects = The component material affects the weight of the component. -RocketCompCfg.combo.ttip.componentmaterialaffects = The component material affects the weight of the component. -RocketCompCfg.lbl.longA1 = The component finish affects the aerodynamic drag of the component.
-RocketCompCfg.lbl.longA2 = The value indicated is the average roughness height of the surface. -RocketCompCfg.but.Setforall = Set for all -RocketCompCfg.but.ttip.Setforall = Set this finish for all components of the rocket. RocketCompCfg.checkbox.Overridemass = Override mass: RocketCompCfg.checkbox.Overridemass.ttip = Overrides the mass of the component calculated by the component's volume and density. RocketCompCfg.checkbox.Overridecenterofgrav = Override center of gravity CG: @@ -976,7 +966,6 @@ RocketCompCfg.checkbox.Endcapped = End capped RocketCompCfg.checkbox.Endcapped.ttip = Caps (closes) the end of the shoulder. RocketCompCfg.title.Aftshoulder = Aft shoulder RocketCompCfg.border.Foreshoulder = Fore shoulder -!RocketCompCfg.lbl.Length = Length: RocketCompCfg.lbl.InstanceCount = Instance Count: RocketCompCfg.lbl.InstanceSeparation = Instance Separation: RocketCompCfg.tab.Outside = Outside @@ -991,6 +980,22 @@ RocketCompCfg.CancelOperation.title = Cancel operation RocketCompCfg.CancelOperation.checkbox.dontAskAgain = Don't ask me again RocketCompCfg.btn.ComponentInfo.ttip = Show/hide informative text about this component. +! MaterialPanel +MaterialPanel.lbl.ComponentMaterial = Component material: +MaterialPanel.lbl.ComponentFinish = Component finish: +MaterialPanel.title.Material = Material +MaterialPanel.lbl.ttip.ComponentMaterialAffects = The component material affects the weight of the component. +MaterialPanel.combo.ttip.ComponentMaterialAffects = The component material affects the weight of the component. +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = The component finish affects the aerodynamic drag of the component.
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = The value indicated is the average roughness height of the surface. +MaterialPanel.but.SetForAll = Set for all +MaterialPanel.but.SetForAll.ttip = Set this finish for all components of the rocket. + +! PlacementPanel +PlacementPanel.title.Placement = Placement +PlacementPanel.lbl.PosRelativeTo = Position relative to: +PlacementPanel.lbl.plus = plus + ! ComponentInfo ComponentInfo.Rocket = This is your rocket. Nothing more to say about it. Have fun designing and building it! :) ComponentInfo.AxialStage = A stage is a section of the model rocket that contains motors which ignite successively and separate after motor burnout.
Each stage must safely descend after separation. The main stage, often called the 'Sustainer', usually descends with a recovery device. @@ -1048,14 +1053,30 @@ StageConfig.parallel.angle = Angle: StageConfig.parallel.count = Number of Copies: StageConfig.parallel.plus = plus +! FinSetConfig +FinSetCfg.lbl.FinRotation = Fin rotation: +FinSetCfg.lbl.FinRotation.ttip = The angle of the first fin in the fin set. + +! TrapezoidFinSetConfig +TrapezoidFinSetCfg.lbl.Nbroffins = Number of fins: +TrapezoidFinSetCfg.lbl.ttip.Nbroffins = The number of fins in the fin set. +TrapezoidFinSetCfg.lbl.Fincant = Fin cant: +TrapezoidFinSetCfg.lbl.ttip.Fincant =The angle that the fins are canted with respect to the rocket body. +TrapezoidFinSetCfg.lbl.Rootchord = Root chord: +TrapezoidFinSetCfg.lbl.Tipchord = Tip chord: +TrapezoidFinSetCfg.lbl.Height = Height: +TrapezoidFinSetCfg.lbl.Sweeplength = Sweep length: +TrapezoidFinSetCfg.lbl.Sweepangle = Sweep angle: +TrapezoidFinSetCfg.lbl.FincrossSection = Fin cross section: +TrapezoidFinSetCfg.lbl.Thickness = Thickness: +TrapezoidFinSetCfg.tab.General = General +TrapezoidFinSetCfg.tab.Generalproperties = General properties + !EllipticalFinSetConfig EllipticalFinSetCfg.Nbroffins = Number of fins: -EllipticalFinSetCfg.Rotation = Rotation: EllipticalFinSetCfg.Fincant = Fin cant: EllipticalFinSetCfg.Rootchord = Root chord: EllipticalFinSetCfg.Height = Height: -EllipticalFinSetCfg.Positionrelativeto = Position relative to: -EllipticalFinSetCfg.plus = plus EllipticalFinSetCfg.FincrossSection = Fin cross section: EllipticalFinSetCfg.Thickness = Thickness: EllipticalFinSetCfg.General = General @@ -1068,14 +1089,10 @@ FreeformFinSetCfg.tab.ttip.General = General properties FreeformFinSetCfg.tab.Shape = Shape FreeformFinSetCfg.tab.ttip.Finshape = Fin shape FreeformFinSetCfg.lbl.Numberoffins = Number of fins: -FreeformFinSetCfg.lbl.Finrotation = Fin rotation: FreeformFinSetCfg.lbl.Fincant = Fin cant: FreeformFinSetCfg.lbl.ttip.Fincant = The angle that the fins are canted with respect to the rocket body. -FreeformFinSetCfg.lbl.Posrelativeto = Position relative to: -FreeformFinSetCfg.lbl.plus = plus FreeformFinSetCfg.lbl.FincrossSection = Fin cross section: FreeformFinSetCfg.lbl.Thickness = Thickness: -! doubleClick1 + 2 form the message "Double-click to edit", split approximately at the middle FreeformFinSetConfig.lbl.doubleClick1 = Double-click FreeformFinSetConfig.lbl.doubleClick2 = to edit FreeformFinSetConfig.lbl.clickDrag = Click+drag: Add and move points @@ -1120,8 +1137,6 @@ LaunchLugCfg.lbl.Outerdiam = Outer diameter: LaunchLugCfg.lbl.Innerdiam = Inner diameter: LaunchLugCfg.lbl.Thickness = Thickness: LaunchLugCfg.lbl.Angle = Rotation: -LaunchLugCfg.lbl.Posrelativeto = Position relative to: -LaunchLugCfg.lbl.plus = plus LaunchLugCfg.tab.General = General LaunchLugCfg.tab.Generalprop = General properties @@ -1133,8 +1148,6 @@ RailBtnCfg.lbl.BaseHeight = Base Height: RailBtnCfg.lbl.FlangeHeight = Flange Height: RailBtnCfg.lbl.ScrewHeight = Screw Height: RailBtnCfg.lbl.Angle = Rotation: -RailBtnCfg.lbl.PosRelativeTo = Position relative to: -RailBtnCfg.lbl.Plus = plus RailBtnCfg.tab.General = General RailBtnCfg.tab.GeneralProp = General properties @@ -1143,8 +1156,6 @@ MassComponentCfg.lbl.Mass = Mass: MassComponentCfg.lbl.Density = Approximate density: MassComponentCfg.lbl.Length = Length: MassComponentCfg.lbl.Diameter = Diameter: -MassComponentCfg.lbl.PosRelativeto = Position relative to: -MassComponentCfg.lbl.plus = plus MassComponentCfg.tab.General = General MassComponentCfg.tab.ttip.General = General properties MassComponentCfg.tab.Radialpos = Radial position @@ -1195,7 +1206,6 @@ NoseConeCfg.checkbox.Flip.ttip = Flips the nose cone direction to a tail cone. Parachute.Parachute = Parachute ParachuteCfg.lbl.Canopy = Canopy ParachuteCfg.lbl.Shroudlines = Shroud lines -ParachuteCfg.lbl.Placement = Placement ParachuteCfg.lbl.Deployment = Deployment ParachuteCfg.lbl.CanopyShape = Canopy shape: ParachuteCfg.lbl.Diameter = Diameter: @@ -1209,8 +1219,6 @@ ParachuteCfg.lbl.longB3 = A typical value for parachutes is 0.8. ParachuteCfg.lbl.Numberoflines = Number of lines: ParachuteCfg.lbl.Linelength = Line length: ParachuteCfg.lbl.Material = Material: -ParachuteCfg.lbl.Posrelativeto = Position relative to: -ParachuteCfg.lbl.plus = plus ParachuteCfg.checkbox.AutomaticPacked = Automatic ParachuteCfg.checkbox.AutomaticPacked.ttip = Matches the packed diameter to the inside diameter of the parent component. ParachuteCfg.lbl.Packedlength = Packed length: @@ -1232,7 +1240,6 @@ ParachuteCfg.lbl.plusdelay = plus ! ShockCordConfig ShockCordCfg.lbl.Shockcordlength = Shock cord length: ShockCordCfg.lbl.Shockcordmaterial = Shock cord material: -ShockCordCfg.lbl.Posrelativeto = Position relative to: ShockCordCfg.lbl.plus = plus ShockCordCfg.lbl.Packedlength = Packed length: ShockCordCfg.lbl.Packeddiam = Packed diameter: @@ -1253,8 +1260,6 @@ SleeveCfg.tab.General = General SleeveCfg.tab.Generalproperties = General properties ! StreamerConfig -StreamerCfg.lbl.Attributes = Attributes -StreamerCfg.lbl.Placement = Placement StreamerCfg.lbl.Deployment = Deployment StreamerCfg.lbl.Striplength = Strip length: StreamerCfg.lbl.Stripwidth = Strip width: @@ -1268,8 +1273,6 @@ StreamerCfg.lbl.longB2 = A larger drag coefficient yields a slowed descent rate. StreamerCfg.lbl.AutomaticCd = Automatic StreamerCfg.lbl.AutomaticCd.ttip = Calculate the streamer drag coefficient (CD) using its dimensions. StreamerCfg.lbl.longC1 = The drag coefficient is relative to the area of the streamer. -StreamerCfg.lbl.Posrelativeto = Position relative to: -StreamerCfg.lbl.plus = plus StreamerCfg.lbl.Packedlength = Packed length: StreamerCfg.lbl.Packeddiam = Packed diameter: StreamerCfg.lbl.Deploysat = Deploys at: @@ -1312,25 +1315,6 @@ TransitionCfg.tab.Generalproperties = General properties TransitionCfg.tab.Shoulder = Shoulder TransitionCfg.tab.Shoulderproperties = Shoulder properties -! TrapezoidFinSetConfig -TrapezoidFinSetCfg.lbl.Nbroffins = Number of fins: -TrapezoidFinSetCfg.lbl.ttip.Nbroffins = The number of fins in the fin set. -TrapezoidFinSetCfg.lbl.Finrotation = Fin rotation: -TrapezoidFinSetCfg.lbl.ttip.Finrotation = The angle of the first fin in the fin set. -TrapezoidFinSetCfg.lbl.Fincant = Fin cant: -TrapezoidFinSetCfg.lbl.ttip.Fincant =The angle that the fins are canted with respect to the rocket body. -TrapezoidFinSetCfg.lbl.Rootchord = Root chord: -TrapezoidFinSetCfg.lbl.Tipchord = Tip chord: -TrapezoidFinSetCfg.lbl.Height = Height: -TrapezoidFinSetCfg.lbl.Sweeplength = Sweep length: -TrapezoidFinSetCfg.lbl.Sweepangle = Sweep angle: -TrapezoidFinSetCfg.lbl.FincrossSection = Fin cross section: -TrapezoidFinSetCfg.lbl.Thickness = Thickness: -TrapezoidFinSetCfg.lbl.Posrelativeto = Position relative to: -TrapezoidFinSetCfg.lbl.plus = plus -TrapezoidFinSetCfg.tab.General = General -TrapezoidFinSetCfg.tab.Generalproperties = General properties - ! Save RKT Warning Dialog SaveRktWarningDialog.txt1=Exporting to RockSim file format does not support all features of OpenRocket. SaveRktWarningDialog.donotshow=Do not show this dialog again @@ -1640,7 +1624,6 @@ TubeCoupler.TubeCoupler = Tube Coupler !InnerTube InnerTube.InnerTube = Inner Tube InnerTubeCfg.lbl.Attributes = Attributes -InnerTubeCfg.lbl.Placement = Placement InnerTubeCfg.lbl.Material = Material: ! TrapezoidFinSet TrapezoidFinSet.TrapezoidFinSet = Trapezoidal Fin Set diff --git a/core/resources/l10n/messages_ar.properties b/core/resources/l10n/messages_ar.properties index 1bd059b37..ece4864e8 100644 --- a/core/resources/l10n/messages_ar.properties +++ b/core/resources/l10n/messages_ar.properties @@ -921,14 +921,14 @@ RocketCompCfg.lbl.Mass = :الكتلة RocketCompCfg.lbl.Componentmass = :كتلة المكون RocketCompCfg.lbl.overriddento = (تم تجاوزها إلى RocketCompCfg.lbl.overriddenby = (تجاوزها بواسطة -RocketCompCfg.lbl.Componentmaterial = :مادة المكون -RocketCompCfg.lbl.Componentfinish = :نهاية المكون -RocketCompCfg.lbl.ttip.componentmaterialaffects = .تؤثر المادة المكونة على وزن المكون -RocketCompCfg.combo.ttip.componentmaterialaffects = .تؤثر مادة المكون على وزنه -RocketCompCfg.lbl.longA1 = .يؤثر إنهاء المكون على السحب الديناميكي الهوائي للمكون
-RocketCompCfg.lbl.longA2 = .القيمة المشار إليها هي متوسط إرتفاع خشونة السطح -RocketCompCfg.but.Setforall = تعيين للجميع -RocketCompCfg.but.ttip.Setforall = .إضبط هذه النهاية لجميع مكونات الصاروخ +MaterialPanel.lbl.ComponentMaterial = :مادة المكون +MaterialPanel.lbl.ComponentFinish = :نهاية المكون +MaterialPanel.lbl.ttip.ComponentMaterialAffects = .تؤثر المادة المكونة على وزن المكون +MaterialPanel.combo.ttip.ComponentMaterialAffects = .تؤثر مادة المكون على وزنه +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = .يؤثر إنهاء المكون على السحب الديناميكي الهوائي للمكون
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = .القيمة المشار إليها هي متوسط إرتفاع خشونة السطح +MaterialPanel.but.SetForAll = تعيين للجميع +MaterialPanel.but.SetForAll.ttip = .إضبط هذه النهاية لجميع مكونات الصاروخ RocketCompCfg.checkbox.Overridemass = :تجاوز الكتلة RocketCompCfg.checkbox.Overridemass.ttip = .يتجاوز كتلة المكون المحسوبة من خلال حجم المكون وكثافته RocketCompCfg.checkbox.Overridecenterofgrav = :تجاوز مركز الجاذبية @@ -1025,7 +1025,7 @@ FreeformFinSetCfg.tab.ttip.General = الخصائص العامة FreeformFinSetCfg.tab.Shape = الشكل FreeformFinSetCfg.tab.ttip.Finshape = شكل الزعنفة FreeformFinSetCfg.lbl.Numberoffins = :عدد الزعانف -FreeformFinSetCfg.lbl.Finrotation = :إلتفاف الزعنفة +FinSetCfg.lbl.FinRotation = :إلتفاف الزعنفة FreeformFinSetCfg.lbl.Fincant = :ميلان الزعنفة FreeformFinSetCfg.lbl.ttip.Fincant = .الزاوية التي تكون فيها الزعانف مائلة بالنسبة لجسم الصاروخ FreeformFinSetCfg.lbl.Posrelativeto = :الموقع بالنسبة إلى @@ -1077,7 +1077,6 @@ LaunchLugCfg.lbl.Outerdiam = :القطر الخارجي LaunchLugCfg.lbl.Innerdiam = :القطر الداخلي LaunchLugCfg.lbl.Thickness = السماكة LaunchLugCfg.lbl.Angle = :الإلتفاف -LaunchLugCfg.lbl.Posrelativeto = :الموضع بالنسبة إلى LaunchLugCfg.lbl.plus = زائد LaunchLugCfg.tab.General = عام LaunchLugCfg.tab.Generalprop = الخصائص العامة @@ -1150,7 +1149,6 @@ NoseConeCfg.tab.ttip.Shoulder = خصائص الأكتاف Parachute.Parachute = المظلة ParachuteCfg.lbl.Canopy = القماش ParachuteCfg.lbl.Shroudlines = خطوط التعليق عبارة عن حبال رفيعة تربط المظلة بالناهضات -ParachuteCfg.lbl.Placement = تحديد مستوى ParachuteCfg.lbl.Deployment = النشر ParachuteCfg.lbl.CanopyShape = :شكل القماش ParachuteCfg.lbl.Diameter = :القطر @@ -1207,8 +1205,7 @@ SleeveCfg.tab.Length = :الطول SleeveCfg.tab.General = عام SleeveCfg.tab.Generalproperties = خصائص عامة ! StreamerConfig -StreamerCfg.lbl.Attributes = صفات -StreamerCfg.lbl.Placement = تحديد مستوى +PlacementPanel.lbl.Placement = تحديد مستوى StreamerCfg.lbl.Deployment = النشر StreamerCfg.lbl.Striplength = :طول الشريط StreamerCfg.lbl.Stripwidth = :عرض الشريط @@ -1270,7 +1267,7 @@ TransitionCfg.tab.Shoulderproperties = خصائص الأكتاف TrapezoidFinSetCfg.lbl.Nbroffins = :عدد الزعانف TrapezoidFinSetCfg.lbl.ttip.Nbroffins = .عدد الزعانف في مجموعة الزعانف TrapezoidFinSetCfg.lbl.Finrotation = :إلتفاف الزعنفة -TrapezoidFinSetCfg.lbl.ttip.Finrotation = .زاوية الزعنفة الأولى في مجموعة الزعانف +FinSetCfg.lbl.FinRotation.ttip = .زاوية الزعنفة الأولى في مجموعة الزعانف TrapezoidFinSetCfg.lbl.Fincant = ميل الزعنفة TrapezoidFinSetCfg.lbl.ttip.Fincant = .الزاوية التي تكون فيها الزعانف مائلة بالنسبة لجسم الصاروخ TrapezoidFinSetCfg.lbl.Rootchord = :وتر جذر الزعنفة @@ -1280,8 +1277,8 @@ TrapezoidFinSetCfg.lbl.Sweeplength = :طول الوتر الأمامي للزع TrapezoidFinSetCfg.lbl.Sweepangle = :زاوية الوتر الأمامي للزعنفة TrapezoidFinSetCfg.lbl.FincrossSection = :المقطع العرضي للزعنفة TrapezoidFinSetCfg.lbl.Thickness = :السماكة -TrapezoidFinSetCfg.lbl.Posrelativeto = :الموضع بالنسبة إلى -TrapezoidFinSetCfg.lbl.plus = زائد +PlacementPanel.lbl.PosRelativeTo = :الموضع بالنسبة إلى +PlacementPanel.lbl.plus = زائد TrapezoidFinSetCfg.tab.General = عام TrapezoidFinSetCfg.tab.Generalproperties = خصائص عامة diff --git a/core/resources/l10n/messages_cs.properties b/core/resources/l10n/messages_cs.properties index da29be1b0..07c147f83 100644 --- a/core/resources/l10n/messages_cs.properties +++ b/core/resources/l10n/messages_cs.properties @@ -631,14 +631,14 @@ RocketCompCfg.lbl.Mass = Hmotnost: RocketCompCfg.lbl.Componentmass = Hmotnost komponenty: RocketCompCfg.lbl.overriddento = (prepsno na RocketCompCfg.lbl.overriddenby = (prepsno -RocketCompCfg.lbl.Componentmaterial = Materil komponentu: -RocketCompCfg.lbl.Componentfinish = Povrchov prava komponenty: -RocketCompCfg.lbl.ttip.componentmaterialaffects = Materil komponenty ovlivnuje vhu komponety. -RocketCompCfg.combo.ttip.componentmaterialaffects = Materil komponenty ovlivnuje vhu komponety. -RocketCompCfg.lbl.longA1 = Povrchov prava komponenty ovlivnuje aerodynamiku komponenty.
-RocketCompCfg.lbl.longA2 = Hodnota odpovd prumern hrubosti povrchu. -RocketCompCfg.but.Setforall = Nastav pro v\u0161echny -RocketCompCfg.but.ttip.Setforall = Nastav povrchovou pravu pro v\u0161echny komponenty rakety. +MaterialPanel.lbl.ComponentMaterial = Materil komponentu: +MaterialPanel.lbl.ComponentFinish = Povrchov prava komponenty: +MaterialPanel.lbl.ttip.ComponentMaterialAffects = Materil komponenty ovlivnuje vhu komponety. +MaterialPanel.combo.ttip.ComponentMaterialAffects = Materil komponenty ovlivnuje vhu komponety. +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = Povrchov prava komponenty ovlivnuje aerodynamiku komponenty.
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = Hodnota odpovd prumern hrubosti povrchu. +MaterialPanel.but.SetForAll = Nastav pro v\u0161echny +MaterialPanel.but.SetForAll.ttip = Nastav povrchovou pravu pro v\u0161echny komponenty rakety. RocketCompCfg.checkbox.Overridemass = Zmen hmotnost: RocketCompCfg.checkbox.Overridecenterofgrav = Zmen te\u017Ei\u0161te: RocketCompCfg.checkbox.OverrideSubcomponents = P\u0159eps\u00E1n\u00ED pro v\u0161echny d\u00EDl\u010D\u00ED sou\u010D\u00E1sti @@ -707,7 +707,7 @@ FreeformFinSetCfg.tab.ttip.General = Obecn FreeformFinSetCfg.tab.Shape = Tvar FreeformFinSetCfg.tab.ttip.Finshape = Tvar stabiliztoru FreeformFinSetCfg.lbl.Numberoffins = Pocet stabiliztoru: -FreeformFinSetCfg.lbl.Finrotation = Rotace stabiliztoru: +FinSetCfg.lbl.FinRotation = Rotace stabiliztoru: FreeformFinSetCfg.lbl.Fincant = Natocen stabiliztoru: FreeformFinSetCfg.lbl.ttip.Fincant = hly stabiliztoru jsou nakloneny vzhledem k telu rakety. FreeformFinSetCfg.lbl.Posrelativeto = Pozice vzhledem k: @@ -747,7 +747,6 @@ LaunchLugCfg.lbl.Outerdiam = Vnej\u0161 LaunchLugCfg.lbl.Innerdiam = Vnitrn prumer: LaunchLugCfg.lbl.Thickness = Tlou\u0161tka: LaunchLugCfg.lbl.Radialpos = Vzdlenost od stredu: -LaunchLugCfg.lbl.Posrelativeto = Pozice vzhledem k: LaunchLugCfg.lbl.plus = plus LaunchLugCfg.tab.General = Obecn LaunchLugCfg.tab.Generalprop = Obecn vlastnosti @@ -899,7 +898,7 @@ TransitionCfg.tab.Shoulderproperties = Parametry pripojen TrapezoidFinSetCfg.lbl.Nbroffins = Pocet stabiliztoru: TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Pocet krdlek tvorc stabiliztor. TrapezoidFinSetCfg.lbl.Finrotation = Rotace stabiliztoru: -TrapezoidFinSetCfg.lbl.ttip.Finrotation = hel prvnho kridlka v stabiliztoru. +FinSetCfg.lbl.FinRotation.ttip = hel prvnho kridlka v stabiliztoru. TrapezoidFinSetCfg.lbl.Fincant = Natocen stabiliztoru: TrapezoidFinSetCfg.lbl.ttip.Fincant = hly stabiliztoru jsou nakloneny vzhledem k telu rakety. TrapezoidFinSetCfg.lbl.Rootchord = Koren krdla: @@ -909,8 +908,8 @@ TrapezoidFinSetCfg.lbl.Sweeplength = D TrapezoidFinSetCfg.lbl.Sweepangle = hel skosen: TrapezoidFinSetCfg.lbl.FincrossSection = Hrany stabiliztoru: TrapezoidFinSetCfg.lbl.Thickness = Tlou\u0161tka: -TrapezoidFinSetCfg.lbl.Posrelativeto = Pozice vzhledem k: -TrapezoidFinSetCfg.lbl.plus = plus +PlacementPanel.lbl.PosRelativeTo = Pozice vzhledem k: +PlacementPanel.lbl.plus = plus TrapezoidFinSetCfg.tab.General = Obecn TrapezoidFinSetCfg.tab.Generalproperties = Obecn vlastnosti diff --git a/core/resources/l10n/messages_de.properties b/core/resources/l10n/messages_de.properties index 603735e4b..de6c64835 100644 --- a/core/resources/l10n/messages_de.properties +++ b/core/resources/l10n/messages_de.properties @@ -687,14 +687,14 @@ RocketCompCfg.lbl.Mass = Masse: RocketCompCfg.lbl.Componentmass = Masse der Komponente: RocketCompCfg.lbl.overriddento = (berschrieben auf RocketCompCfg.lbl.overriddenby = (berschrieben durch -RocketCompCfg.lbl.Componentmaterial = Material: -RocketCompCfg.lbl.Componentfinish = Oberflche: -RocketCompCfg.lbl.ttip.componentmaterialaffects = Das Material beeinflusst die Masse der Komponente. -RocketCompCfg.combo.ttip.componentmaterialaffects = Das Material beeinflusst die Masse der Komponente. -RocketCompCfg.lbl.longA1 = Die Oberflche beeinflusst den aerodynamischen Widerstand der Komponente.
-RocketCompCfg.lbl.longA2 = Der angegebene Wert ist die durchschnittliche Rautiefe der Oberflche. -RocketCompCfg.but.Setforall = Fr alle setzen -RocketCompCfg.but.ttip.Setforall = Diese Oberflchen fr alle Komponenten der Rakete setzen. +MaterialPanel.lbl.ComponentMaterial = Material: +MaterialPanel.lbl.ComponentFinish = Oberflche: +MaterialPanel.lbl.ttip.ComponentMaterialAffects = Das Material beeinflusst die Masse der Komponente. +MaterialPanel.combo.ttip.ComponentMaterialAffects = Das Material beeinflusst die Masse der Komponente. +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = Die Oberflche beeinflusst den aerodynamischen Widerstand der Komponente.
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = Der angegebene Wert ist die durchschnittliche Rautiefe der Oberflche. +MaterialPanel.but.SetForAll = Fr alle setzen +MaterialPanel.but.SetForAll.ttip = Diese Oberflchen fr alle Komponenten der Rakete setzen. RocketCompCfg.lbl.Overridemassorcenter = berschreiben von Masse oder Schwerpunkts von RocketCompCfg.checkbox.Overridemass = Masse berschreiben: RocketCompCfg.checkbox.Overridecenterofgrav = Schwerpunkt berschreiben: @@ -764,7 +764,7 @@ FreeformFinSetCfg.tab.ttip.General = Allgemeine Eigenschaften FreeformFinSetCfg.tab.Shape = Form FreeformFinSetCfg.tab.ttip.Finshape = Leitwerksform FreeformFinSetCfg.lbl.Numberoffins = Anzahl der Leitwerke -FreeformFinSetCfg.lbl.Finrotation = Rotation: +FinSetCfg.lbl.FinRotation = Rotation: FreeformFinSetCfg.lbl.Fincant = Neigung: FreeformFinSetCfg.lbl.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Krperrohr geneigt sind. FreeformFinSetCfg.lbl.Posrelativeto = Position relativ zu: @@ -804,7 +804,6 @@ LaunchLugCfg.lbl.Outerdiam = Au LaunchLugCfg.lbl.Innerdiam = Innendurchmesser: LaunchLugCfg.lbl.Thickness = Wandstrke: LaunchLugCfg.lbl.Radialpos = Radiale Position: -LaunchLugCfg.lbl.Posrelativeto = Position relativ zu: LaunchLugCfg.lbl.plus = plus LaunchLugCfg.tab.General = Allgemein LaunchLugCfg.tab.Generalprop = Allgemeine Eigenschaften @@ -957,7 +956,7 @@ TransitionCfg.tab.Shoulderproperties = Schultereigenschaften TrapezoidFinSetCfg.lbl.Nbroffins = Anzahl der Leitwerke TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Anzahl der Leitwerke in diesem Satz TrapezoidFinSetCfg.lbl.Finrotation = Rotation der Leitwerke -TrapezoidFinSetCfg.lbl.ttip.Finrotation = Winkel des ersten Leitwerks in diesem Satz +FinSetCfg.lbl.FinRotation.ttip = Winkel des ersten Leitwerks in diesem Satz TrapezoidFinSetCfg.lbl.Fincant = Neigung: TrapezoidFinSetCfg.lbl.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Krperrohr geneigt sind. TrapezoidFinSetCfg.lbl.Rootchord = Blatttiefe: @@ -967,8 +966,8 @@ TrapezoidFinSetCfg.lbl.Sweeplength = Blattbreite: TrapezoidFinSetCfg.lbl.Sweepangle = Pfeilungswinkel TrapezoidFinSetCfg.lbl.FincrossSection = Leitwerksquerschnitt TrapezoidFinSetCfg.lbl.Thickness = Wandstrke: -TrapezoidFinSetCfg.lbl.Posrelativeto = Position relativ zu: -TrapezoidFinSetCfg.lbl.plus = plus +PlacementPanel.lbl.PosRelativeTo = Position relativ zu: +PlacementPanel.lbl.plus = plus TrapezoidFinSetCfg.tab.General = Allgemein TrapezoidFinSetCfg.tab.Generalproperties = Allgemeine Eigenschaften diff --git a/core/resources/l10n/messages_es.properties b/core/resources/l10n/messages_es.properties index 8d57dcc5a..a4c3eeb43 100644 --- a/core/resources/l10n/messages_es.properties +++ b/core/resources/l10n/messages_es.properties @@ -359,7 +359,7 @@ FreeformFinSet.FreeformFinSet = Aletas de forma libre FreeformFinSetCfg.lbl.Fincant = Inclinaci\u00f3n de las aletas: FreeformFinSetCfg.lbl.FincrossSection = Borde de la aleta: -FreeformFinSetCfg.lbl.Finrotation = Rotaci\u00f3n de las aletas: +FinSetCfg.lbl.FinRotation = Rotaci\u00f3n de las aletas: FreeformFinSetCfg.lbl.Numberoffins = N\u00famero de aletas: FreeformFinSetCfg.lbl.Posrelativeto = Posici\u00f3n relativa a: FreeformFinSetCfg.lbl.Thickness = Espesor: @@ -493,7 +493,6 @@ LaunchLugCfg.lbl.Innerdiam = Di\u00e1metro interior: ! LaunchLugConfig LaunchLugCfg.lbl.Length = Longitud: LaunchLugCfg.lbl.Outerdiam = Di\u00e1metro exterior: -LaunchLugCfg.lbl.Posrelativeto = Posici\u00f3n relativa a: LaunchLugCfg.lbl.Radialpos = Posici\u00f3n radial: LaunchLugCfg.lbl.Thickness = Espesor: LaunchLugCfg.lbl.plus = Localizaci\u00f3n: @@ -828,21 +827,21 @@ RocketCfg.lbl.Revisionhistory = Hist\u00f3rico de la revisi\u00f3n: RocketCompCfg.border.Foreshoulder = Delantera del acople RocketCompCfg.but.Saveasdefstyle = Guardar como estilo por defecto -RocketCompCfg.but.Setforall = Aplicar a todos -RocketCompCfg.but.ttip.Setforall = Aplicar este acabado a todos los componentes del cohete. +MaterialPanel.but.SetForAll = Aplicar a todos +MaterialPanel.but.SetForAll.ttip = Aplicar este acabado a todos los componentes del cohete. RocketCompCfg.checkbox.Endcapped = Extremo tapado RocketCompCfg.checkbox.Overridecenterofgrav = Especificar el CG: RocketCompCfg.checkbox.Overridemass = Especificar la masa: RocketCompCfg.checkbox.OverrideSubcomponents = Incluir de todos los subcomponentes RocketCompCfg.checkbox.Usedefaultcolor = Usar color por defecto -RocketCompCfg.combo.ttip.componentmaterialaffects = El peso del componente depender\u00e1 del material seleccionado. +MaterialPanel.combo.ttip.ComponentMaterialAffects = El peso del componente depender\u00e1 del material seleccionado. RocketCompCfg.lbl.Choosecolor = Elija color RocketCompCfg.lbl.Commentsonthe = Comentarios sobre RocketCompCfg.lbl.Complinestyle = Estilo de l\u00ednea del componente: RocketCompCfg.lbl.Componentcolor = Color del componente: -RocketCompCfg.lbl.Componentfinish = Acabado: +MaterialPanel.lbl.ComponentFinish = Acabado: RocketCompCfg.lbl.Componentmass = Masa del componente: -RocketCompCfg.lbl.Componentmaterial = Material del componente: +MaterialPanel.lbl.ComponentMaterial = Material del componente: ! RocketComponentConfig RocketCompCfg.lbl.Componentname = Nombre del componente: RocketCompCfg.lbl.Diameter = Di\u00e1metro: @@ -850,13 +849,13 @@ RocketCompCfg.lbl.Figurestyle = Estilo de dibujo: RocketCompCfg.lbl.Length = Longitud: RocketCompCfg.lbl.Mass = Masa: RocketCompCfg.lbl.Thickness = Espesor: -RocketCompCfg.lbl.longA1 = El Coeficiente de rozamiento depender\u00e1 del acabado del componente.
-RocketCompCfg.lbl.longA2 = El valor indicado es el promedio de la rugosidad en altura de la superficie. +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = El Coeficiente de rozamiento depender\u00e1 del acabado del componente.
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = El valor indicado es el promedio de la rugosidad en altura de la superficie. RocketCompCfg.lbl.longB1 = En la masa especificada no se incluye la de los motores.
RocketCompCfg.lbl.longB2 = El CG se mide desde el extremo frontal del componente RocketCompCfg.lbl.overriddenby = (Elegido por RocketCompCfg.lbl.overriddento = (Elegido para -RocketCompCfg.lbl.ttip.componentmaterialaffects = El material seleccionado para el componente afectar\u00e1 a la masa total del modelo. +MaterialPanel.lbl.ttip.ComponentMaterialAffects = El material seleccionado para el componente afectar\u00e1 a la masa total del modelo. RocketCompCfg.tab.Appearance = Apariencia RocketCompCfg.tab.Comment = Comentarios RocketCompCfg.tab.Figstyleopt = Opciones de estilo de la figura @@ -1211,15 +1210,15 @@ TrapezoidFinSetCfg.lbl.Finrotation = Rotaci\u00f3n de las aletas: TrapezoidFinSetCfg.lbl.Height = Altura: ! TrapezoidFinSetConfig TrapezoidFinSetCfg.lbl.Nbroffins = N\u00famero de aletas: -TrapezoidFinSetCfg.lbl.Posrelativeto = Posici\u00f3n relativa a: +PlacementPanel.lbl.PosRelativeTo = Posici\u00f3n relativa a: TrapezoidFinSetCfg.lbl.Rootchord = Longitud de la l\u00ednea base: TrapezoidFinSetCfg.lbl.Sweepangle = \u00c1ngulo del borde de ataque: TrapezoidFinSetCfg.lbl.Sweeplength = Desplazamiento borde superior: TrapezoidFinSetCfg.lbl.Thickness = Espesor: TrapezoidFinSetCfg.lbl.Tipchord = Longitud del borde superior: -TrapezoidFinSetCfg.lbl.plus = Localizaci\u00f3n: +PlacementPanel.lbl.plus = Localizaci\u00f3n: TrapezoidFinSetCfg.lbl.ttip.Fincant = El \u00e1ngulo de inclinaci\u00f3n de las aletas respecto al eje central del fuselaje. -TrapezoidFinSetCfg.lbl.ttip.Finrotation = Posici\u00f3n de las aletas alrededor del fuselaje. +FinSetCfg.lbl.FinRotation.ttip = Posici\u00f3n de las aletas alrededor del fuselaje. TrapezoidFinSetCfg.lbl.ttip.Nbroffins = N\u00famero de aletas en la base de aletas. TrapezoidFinSetCfg.tab.General = General TrapezoidFinSetCfg.tab.Generalproperties = Propiedades generales diff --git a/core/resources/l10n/messages_fr.properties b/core/resources/l10n/messages_fr.properties index 511f502cc..5c118dd14 100644 --- a/core/resources/l10n/messages_fr.properties +++ b/core/resources/l10n/messages_fr.properties @@ -350,7 +350,7 @@ FreeformFinSet.FreeformFinSet = Ailerons personnalis\u00E9s FreeformFinSetCfg.lbl.Fincant = Inclinaison de l'aileron: FreeformFinSetCfg.lbl.FincrossSection = Coupe de l'aileron: -FreeformFinSetCfg.lbl.Finrotation = Rotation des ailerons: +FinSetCfg.lbl.FinRotation = Rotation des ailerons: FreeformFinSetCfg.lbl.Numberoffins = Nombre d'ailerons: FreeformFinSetCfg.lbl.Posrelativeto = Position par rapport \u00E0: FreeformFinSetCfg.lbl.Thickness = Epaisseur: @@ -486,7 +486,6 @@ LaunchLugCfg.lbl.Innerdiam = Diam\u00E8tre interne: ! LaunchLugConfig LaunchLugCfg.lbl.Length = Longueur: LaunchLugCfg.lbl.Outerdiam = Diam\u00E8tre externe: -LaunchLugCfg.lbl.Posrelativeto = Position relative \u00E0: LaunchLugCfg.lbl.Radialpos = Position circulaire: LaunchLugCfg.lbl.Thickness = Epaisseur: LaunchLugCfg.lbl.plus = plus @@ -819,22 +818,22 @@ RocketCfg.lbl.Revisionhistory = Historique des modifications: RocketCompCfg.border.Foreshoulder = Epaulement avant RocketCompCfg.but.Saveasdefstyle = Sauver le mod\u00E8le par d\u00E9faut -RocketCompCfg.but.Setforall = Appliquer \u00E0 tous -RocketCompCfg.but.ttip.Setforall = R\u00E9gler la finition pour tous les composants de la fus\u00E9e. +MaterialPanel.but.SetForAll = Appliquer \u00E0 tous +MaterialPanel.but.SetForAll.ttip = R\u00E9gler la finition pour tous les composants de la fus\u00E9e. RocketCompCfg.checkbox.Endcapped = Arri\u00E8re clos RocketCompCfg.checkbox.Overridecenterofgrav = Forcer le centre de gravit\u00E9: RocketCompCfg.checkbox.Overridecoeffofdrag = Modifier le coefficient de trainee: RocketCompCfg.checkbox.Overridemass = Forcer la masse: RocketCompCfg.checkbox.OverrideSubcomponents = Forcer pour tous les sous composants RocketCompCfg.checkbox.Usedefaultcolor = Utiliser la couleur par d\u00E9faut -RocketCompCfg.combo.ttip.componentmaterialaffects = Les mat\u00E9riaux utilis\u00E9s pour la pi\u00E8ce affectent le poids de la pi\u00E8ce. +MaterialPanel.combo.ttip.ComponentMaterialAffects = Les mat\u00E9riaux utilis\u00E9s pour la pi\u00E8ce affectent le poids de la pi\u00E8ce. RocketCompCfg.lbl.Choosecolor = Choisir la couleur RocketCompCfg.lbl.Commentsonthe = Commentaires \u00E0 propos du RocketCompCfg.lbl.Complinestyle = Style de lignes pour les pi\u00E8ces: RocketCompCfg.lbl.Componentcolor = Couleur de la pi\u00E8ce: -RocketCompCfg.lbl.Componentfinish = Finition de la pi\u00E8ce: +MaterialPanel.lbl.ComponentFinish = Finition de la pi\u00E8ce: RocketCompCfg.lbl.Componentmass = Masse de la pi\u00E8ce: -RocketCompCfg.lbl.Componentmaterial = Mat\u00E9riaux composant la pi\u00E8ce: +MaterialPanel.lbl.ComponentMaterial = Mat\u00E9riaux composant la pi\u00E8ce: ! RocketComponentConfig RocketCompCfg.lbl.Componentname = Nom de la pi\u00E8ce: RocketCompCfg.lbl.Diameter = Diam\u00E8tre: @@ -842,13 +841,13 @@ RocketCompCfg.lbl.Figurestyle = Mod\u00E8le de forme: RocketCompCfg.lbl.Length = Longueur: RocketCompCfg.lbl.Mass = Masse: RocketCompCfg.lbl.Thickness = Epaisseur: -RocketCompCfg.lbl.longA1 = La finition de la pi\u00E8ce affecte l'a\u00E9rodynamisme de la pi\u00E8ce.
-RocketCompCfg.lbl.longA2 = La valeur indiqu\u00E9e est la hauteur moyenne de la rugosit\u00E9 de la surface. +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = La finition de la pi\u00E8ce affecte l'a\u00E9rodynamisme de la pi\u00E8ce.
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = La valeur indiqu\u00E9e est la hauteur moyenne de la rugosit\u00E9 de la surface. RocketCompCfg.lbl.longB1 = Le for\u00E7age de la masse n'inclus pas le ou les moteurs.
RocketCompCfg.lbl.longB2 = Le centre de gravit\u00E9 est mesur\u00E9 \u00E0 partir de l'extr\u00E9mit\u00E9 avant de la fus\u00E9e RocketCompCfg.lbl.overriddenby = (forc\u00E9 par RocketCompCfg.lbl.overriddento = (forc\u00E9 \u00E0 -RocketCompCfg.lbl.ttip.componentmaterialaffects = Les mat\u00E9riaux utilis\u00E9s pour la pi\u00E8ce affectent le poids de la pi\u00E8ce. +MaterialPanel.lbl.ttip.ComponentMaterialAffects = Les mat\u00E9riaux utilis\u00E9s pour la pi\u00E8ce affectent le poids de la pi\u00E8ce. RocketCompCfg.tab.Appearance = Apparence RocketCompCfg.tab.Comment = Commentaires RocketCompCfg.tab.Figstyleopt = Options de la forme @@ -1205,15 +1204,15 @@ TrapezoidFinSetCfg.lbl.Finrotation = Rotation de l'aileron: TrapezoidFinSetCfg.lbl.Height = Hauteur: ! TrapezoidFinSetConfig TrapezoidFinSetCfg.lbl.Nbroffins = Nombre d'ailerons: -TrapezoidFinSetCfg.lbl.Posrelativeto = Position relative \u00E0: +PlacementPanel.lbl.PosRelativeTo = Position relative \u00E0: TrapezoidFinSetCfg.lbl.Rootchord = Longueur de la base de l'aileron: TrapezoidFinSetCfg.lbl.Sweepangle = Angle du bord d'attaque: TrapezoidFinSetCfg.lbl.Sweeplength = Longueur du bord d'attaque: TrapezoidFinSetCfg.lbl.Thickness = Epaisseur: TrapezoidFinSetCfg.lbl.Tipchord = Longueur du bout de l'aileron: -TrapezoidFinSetCfg.lbl.plus = plus +PlacementPanel.lbl.plus = plus TrapezoidFinSetCfg.lbl.ttip.Fincant = Angle d'inclinaison des ailerons par rapport au tube du corps de la fus\u00E9e. -TrapezoidFinSetCfg.lbl.ttip.Finrotation = Angle du premier aileron dans le jeu. +FinSetCfg.lbl.FinRotation.ttip = Angle du premier aileron dans le jeu. TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Le nombre d'ailerons composant le jeu. TrapezoidFinSetCfg.tab.General = G\u00E9n\u00E9ral TrapezoidFinSetCfg.tab.Generalproperties = Propri\u00E9t\u00E9s g\u00E9n\u00E9rales diff --git a/core/resources/l10n/messages_it.properties b/core/resources/l10n/messages_it.properties index 5ad73871d..13f32cb2a 100644 --- a/core/resources/l10n/messages_it.properties +++ b/core/resources/l10n/messages_it.properties @@ -689,14 +689,14 @@ RocketCompCfg.lbl.Mass = Massa: RocketCompCfg.lbl.Componentmass = La massa del componente : RocketCompCfg.lbl.overriddento = (sovrascritto a RocketCompCfg.lbl.overriddenby = (sovrascritto da -RocketCompCfg.lbl.Componentmaterial = Materiale del componente: -RocketCompCfg.lbl.Componentfinish = Finitura del componente: -RocketCompCfg.lbl.ttip.componentmaterialaffects = Il materiale del componente influisce sulla sua massa. -RocketCompCfg.combo.ttip.componentmaterialaffects = Il materiale del componente influisce sulla sua massa. -RocketCompCfg.lbl.longA1 = La finitura del componente influisce sull'aerodinamica dello stesso.
-RocketCompCfg.lbl.longA2 = Il valore indicato e' la media dell'altezza delle asperita' della superficie. -RocketCompCfg.but.Setforall = Imposta per tutti -RocketCompCfg.but.ttip.Setforall = Imposta questa finitura per tutti i componenti del razzo. +MaterialPanel.lbl.ComponentMaterial = Materiale del componente: +MaterialPanel.lbl.ComponentFinish = Finitura del componente: +MaterialPanel.lbl.ttip.ComponentMaterialAffects = Il materiale del componente influisce sulla sua massa. +MaterialPanel.combo.ttip.ComponentMaterialAffects = Il materiale del componente influisce sulla sua massa. +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = La finitura del componente influisce sull'aerodinamica dello stesso.
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = Il valore indicato e' la media dell'altezza delle asperita' della superficie. +MaterialPanel.but.SetForAll = Imposta per tutti +MaterialPanel.but.SetForAll.ttip = Imposta questa finitura per tutti i componenti del razzo. RocketCompCfg.checkbox.Overridemass = Modifica la massa: RocketCompCfg.checkbox.Overridecenterofgrav = Sposta il centro di gravita': RocketCompCfg.checkbox.OverrideSubcomponents = Modifica di tutti i subcomponenti @@ -765,7 +765,7 @@ FreeformFinSetCfg.tab.ttip.General = Proprieta' generali FreeformFinSetCfg.tab.Shape = Forma FreeformFinSetCfg.tab.ttip.Finshape = Forma delle pinne FreeformFinSetCfg.lbl.Numberoffins = Numero delle pinne: -FreeformFinSetCfg.lbl.Finrotation = Rotazione delle pinne: +FinSetCfg.lbl.FinRotation = Rotazione delle pinne: FreeformFinSetCfg.lbl.Fincant = Inclinazione delle pinne: FreeformFinSetCfg.lbl.ttip.Fincant = L'angolo d'inclinazione delle pinne rispetto al corpo del razzo. FreeformFinSetCfg.lbl.Posrelativeto = Posizione relativa a : @@ -805,7 +805,6 @@ LaunchLugCfg.lbl.Outerdiam = Diametro Esterno: LaunchLugCfg.lbl.Innerdiam = Diametro Interno: LaunchLugCfg.lbl.Thickness = Spessore: LaunchLugCfg.lbl.Radialpos = Posizione radiale: -LaunchLugCfg.lbl.Posrelativeto = Posizione relativa a : LaunchLugCfg.lbl.plus = pi\u00f9 LaunchLugCfg.tab.General = Generale LaunchLugCfg.tab.Generalprop = Proprieta' generali @@ -958,7 +957,7 @@ TransitionCfg.tab.Shoulderproperties = Proprieta' della spalla TrapezoidFinSetCfg.lbl.Nbroffins = Numero di pinne: TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Il numero di pinne nell'insieme di pinne. TrapezoidFinSetCfg.lbl.Finrotation = Rotazione delle pinne: -TrapezoidFinSetCfg.lbl.ttip.Finrotation = L'angolo della prima pinna dell'insieme. +FinSetCfg.lbl.FinRotation.ttip = L'angolo della prima pinna dell'insieme. TrapezoidFinSetCfg.lbl.Fincant = Inclinazione della pinna: TrapezoidFinSetCfg.lbl.ttip.Fincant =L'angolo di inclinazione delle pinne rispetto al corpo del razzo. TrapezoidFinSetCfg.lbl.Rootchord = Corda base: @@ -968,8 +967,8 @@ TrapezoidFinSetCfg.lbl.Sweeplength = Sweep Lunghezza: TrapezoidFinSetCfg.lbl.Sweepangle = Sweep angolo: TrapezoidFinSetCfg.lbl.FincrossSection = Sezione della pinna: TrapezoidFinSetCfg.lbl.Thickness = Spessore: -TrapezoidFinSetCfg.lbl.Posrelativeto = Posizione relativa a : -TrapezoidFinSetCfg.lbl.plus = pi\u00f9 +PlacementPanel.lbl.PosRelativeTo = Posizione relativa a : +PlacementPanel.lbl.plus = pi\u00f9 TrapezoidFinSetCfg.tab.General = Generale TrapezoidFinSetCfg.tab.Generalproperties = Proprieta' generali diff --git a/core/resources/l10n/messages_ja.properties b/core/resources/l10n/messages_ja.properties index d1c7f35a0..e118a63a8 100644 --- a/core/resources/l10n/messages_ja.properties +++ b/core/resources/l10n/messages_ja.properties @@ -719,14 +719,14 @@ RocketCompCfg.lbl.Mass = \u8CEA\u91CF\uFF1A RocketCompCfg.lbl.Componentmass = \u90E8\u54C1\u8CEA\u91CF\uFF1A RocketCompCfg.lbl.overriddento = (overridden to RocketCompCfg.lbl.overriddenby = (overridden by -RocketCompCfg.lbl.Componentmaterial = \u90E8\u54C1\u6750\u6599\uFF1A -RocketCompCfg.lbl.Componentfinish = \u90E8\u54C1\u4ED5\u4E0A\u3052\u65B9\uFF1A -RocketCompCfg.lbl.ttip.componentmaterialaffects = \u90E8\u54C1\u6750\u6599\u306F\u91CD\u91CF\u306B\u5F71\u97FF\u3059\u308B -RocketCompCfg.combo.ttip.componentmaterialaffects = \u90E8\u54C1\u6750\u6599\u306F\u91CD\u91CF\u306B\u5F71\u97FF\u3059\u308B -RocketCompCfg.lbl.longA1 = \u4ED5\u4E0A\u3052\u65B9\u306F\u6297\u529B\u4FC2\u6570\u306B\u5F71\u97FF\u3059\u308B
-RocketCompCfg.lbl.longA2 = \u3053\u306E\u5024\u306F\u8868\u9762\u7C97\u3055\u306E\u5E73\u5747\u5024\u3092\u793A\u3059 -RocketCompCfg.but.Setforall = \u5168\u3066\u306B\u9069\u7528 -RocketCompCfg.but.ttip.Setforall = \u3053\u306E\u4ED5\u4E0A\u3052\u65B9\u3092\u5168\u3066\u306E\u90E8\u54C1\u306B\u9069\u7528\u3059\u308B +MaterialPanel.lbl.ComponentMaterial = \u90E8\u54C1\u6750\u6599\uFF1A +MaterialPanel.lbl.ComponentFinish = \u90E8\u54C1\u4ED5\u4E0A\u3052\u65B9\uFF1A +MaterialPanel.lbl.ttip.ComponentMaterialAffects = \u90E8\u54C1\u6750\u6599\u306F\u91CD\u91CF\u306B\u5F71\u97FF\u3059\u308B +MaterialPanel.combo.ttip.ComponentMaterialAffects = \u90E8\u54C1\u6750\u6599\u306F\u91CD\u91CF\u306B\u5F71\u97FF\u3059\u308B +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = \u4ED5\u4E0A\u3052\u65B9\u306F\u6297\u529B\u4FC2\u6570\u306B\u5F71\u97FF\u3059\u308B
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = \u3053\u306E\u5024\u306F\u8868\u9762\u7C97\u3055\u306E\u5E73\u5747\u5024\u3092\u793A\u3059 +MaterialPanel.but.SetForAll = \u5168\u3066\u306B\u9069\u7528 +MaterialPanel.but.SetForAll.ttip = \u3053\u306E\u4ED5\u4E0A\u3052\u65B9\u3092\u5168\u3066\u306E\u90E8\u54C1\u306B\u9069\u7528\u3059\u308B RocketCompCfg.checkbox.Overridemass = \u8CEA\u91CF\u306E\u518D\u5B9A\u7FA9\uFF1A RocketCompCfg.checkbox.Overridecenterofgrav = \u91CD\u5FC3\u306E\u518D\u5B9A\u7FA9\uFF1A RocketCompCfg.checkbox.OverrideSubcomponents = \u3059\u3079\u3066\u306e\u30b5\u30d6\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306b\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b @@ -795,7 +795,7 @@ FreeformFinSetCfg.tab.ttip.General = \u4E00\u822C FreeformFinSetCfg.tab.Shape = \u5F62\u72B6 FreeformFinSetCfg.tab.ttip.Finshape = \u30D5\u30A3\u30F3\u5F62\u72B6 FreeformFinSetCfg.lbl.Numberoffins = \u30D5\u30A3\u30F3\u306E\u6570\uFF1A -FreeformFinSetCfg.lbl.Finrotation = \u56DE\u8EE2\uFF1A +FinSetCfg.lbl.FinRotation = \u56DE\u8EE2\uFF1A FreeformFinSetCfg.lbl.Fincant = \u50BE\u659C\uFF1A FreeformFinSetCfg.lbl.ttip.Fincant = \u30DC\u30C7\u30A3\u304B\u3089\u307F\u3066\u30D5\u30A3\u30F3\u306E\u50BE\u3044\u3066\u3044\u308B\u89D2\u5EA6 FreeformFinSetCfg.lbl.Posrelativeto = \u4F4D\u7F6E\uFF1A @@ -835,7 +835,6 @@ LaunchLugCfg.lbl.Outerdiam = \u5916\u5F84\uFF1A LaunchLugCfg.lbl.Innerdiam = \u5185\u5F84\uFF1A LaunchLugCfg.lbl.Thickness = \u539A\u3055\uFF1A LaunchLugCfg.lbl.Radialpos = \u56DE\u8EE2\u65B9\u5411\u4F4D\u7F6E\uFF1A -LaunchLugCfg.lbl.Posrelativeto = \u4F4D\u7F6E\uFF1A LaunchLugCfg.lbl.plus = \u30D7\u30E9\u30B9 LaunchLugCfg.tab.General = \u4E00\u822C LaunchLugCfg.tab.Generalprop = \u4E00\u822C @@ -988,7 +987,7 @@ TransitionCfg.tab.Shoulderproperties = \u30B7\u30E7\u30EB\u30C0\u30FC TrapezoidFinSetCfg.lbl.Nbroffins = \u30D5\u30A3\u30F3\u306E\u6570 TrapezoidFinSetCfg.lbl.ttip.Nbroffins = \u30D5\u30A3\u30F3\u306E\u6570 TrapezoidFinSetCfg.lbl.Finrotation = \u56DE\u8EE2\uFF1A -TrapezoidFinSetCfg.lbl.ttip.Finrotation = \u30D5\u30A3\u30F3\u306E\u89D2\u5EA6 +FinSetCfg.lbl.FinRotation.ttip = \u30D5\u30A3\u30F3\u306E\u89D2\u5EA6 TrapezoidFinSetCfg.lbl.Fincant = \u50BE\u659C\uFF1A TrapezoidFinSetCfg.lbl.ttip.Fincant = \u30DC\u30C7\u30A3\u306B\u5BFE\u3057\u3066\u306E\u30D5\u30A3\u30F3\u306E\u50BE\u659C\u89D2\u5EA6 TrapezoidFinSetCfg.lbl.Rootchord = \u6839\u672C\u9577\u3055\uFF1A @@ -998,8 +997,8 @@ TrapezoidFinSetCfg.lbl.Sweeplength = \u5F8C\u9000\u9577\u3055\uFF1A TrapezoidFinSetCfg.lbl.Sweepangle = \u5F8C\u9000\u89D2\uFF1A TrapezoidFinSetCfg.lbl.FincrossSection = \u30D5\u30A3\u30F3\u65AD\u9762\u7A4D\uFF1A TrapezoidFinSetCfg.lbl.Thickness = \u539A\u3055\uFF1A -TrapezoidFinSetCfg.lbl.Posrelativeto = \u4F4D\u7F6E\uFF1A -TrapezoidFinSetCfg.lbl.plus = \u30D7\u30E9\u30B9 +PlacementPanel.lbl.PosRelativeTo = \u4F4D\u7F6E\uFF1A +PlacementPanel.lbl.plus = \u30D7\u30E9\u30B9 TrapezoidFinSetCfg.tab.General = \u4E00\u822C TrapezoidFinSetCfg.tab.Generalproperties = \u4E00\u822C diff --git a/core/resources/l10n/messages_nl.properties b/core/resources/l10n/messages_nl.properties index d25062186..9804cf4c7 100644 --- a/core/resources/l10n/messages_nl.properties +++ b/core/resources/l10n/messages_nl.properties @@ -837,14 +837,14 @@ RocketCompCfg.lbl.Mass = Massa: RocketCompCfg.lbl.Componentmass = Componentmassa: RocketCompCfg.lbl.overriddento = (overschreven naar RocketCompCfg.lbl.overriddenby = (overschreven door -RocketCompCfg.lbl.Componentmaterial = Componentmateriaal: -RocketCompCfg.lbl.Componentfinish = Componentafwerking: -RocketCompCfg.lbl.ttip.componentmaterialaffects = Het materiaal van het onderdeel beïnvloedt het gewicht van het onderdeel. -RocketCompCfg.combo.ttip.componentmaterialaffects = Het materiaal van het onderdeel beïnvloedt het gewicht van het onderdeel. -RocketCompCfg.lbl.longA1 = De afwerking van het onderdeel beïnvloedt de luchtweerstand van het onderdeel.
-RocketCompCfg.lbl.longA2 = De aangegeven waarde is de gemiddelde ruwheidshoogte van het oppervlak. -RocketCompCfg.but.Setforall = Instellen voor alle -RocketCompCfg.but.ttip.Setforall = Stel deze afwerking in voor alle onderdelen van de raket. +MaterialPanel.lbl.ComponentMaterial = Componentmateriaal: +MaterialPanel.lbl.ComponentFinish = Componentafwerking: +MaterialPanel.lbl.ttip.ComponentMaterialAffects = Het materiaal van het onderdeel beïnvloedt het gewicht van het onderdeel. +MaterialPanel.combo.ttip.ComponentMaterialAffects = Het materiaal van het onderdeel beïnvloedt het gewicht van het onderdeel. +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = De afwerking van het onderdeel beïnvloedt de luchtweerstand van het onderdeel.
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = De aangegeven waarde is de gemiddelde ruwheidshoogte van het oppervlak. +MaterialPanel.but.SetForAll = Instellen voor alle +MaterialPanel.but.SetForAll.ttip = Stel deze afwerking in voor alle onderdelen van de raket. RocketCompCfg.checkbox.Overridemass = Overschrijf massa: RocketCompCfg.checkbox.Overridecenterofgrav = Overschrijf zwaartepunt: RocketCompCfg.checkbox.SetDragCoeff = Stel wrijvingscoëfficiënt in: @@ -920,7 +920,7 @@ FreeformFinSetCfg.tab.ttip.General = Algemene eigenschappen FreeformFinSetCfg.tab.Shape = Vorm FreeformFinSetCfg.tab.ttip.Finshape = Vinvorm FreeformFinSetCfg.lbl.Numberoffins = Aantal vinnen: -FreeformFinSetCfg.lbl.Finrotation = Vinrotatie: +FinSetCfg.lbl.FinRotation = Vinrotatie: FreeformFinSetCfg.lbl.Fincant = Vinkanteling: FreeformFinSetCfg.lbl.ttip.Fincant = De hoek waarin de vinnen zijn gekanteld ten opzichte van de raketromp. FreeformFinSetCfg.lbl.Posrelativeto = Positie relatief t.o.v.: @@ -969,7 +969,6 @@ LaunchLugCfg.lbl.Outerdiam = Buitendiameter: LaunchLugCfg.lbl.Innerdiam = Binnendiameter: LaunchLugCfg.lbl.Thickness = Dikte: LaunchLugCfg.lbl.Angle = Rotatie: -LaunchLugCfg.lbl.Posrelativeto = Positie relatief t.o.v.: LaunchLugCfg.lbl.plus = plus LaunchLugCfg.tab.General = Algemeen LaunchLugCfg.tab.Generalprop = Algemene eigenschappen @@ -1136,7 +1135,7 @@ TransitionCfg.tab.Shoulderproperties = Schoudereigenschappen TrapezoidFinSetCfg.lbl.Nbroffins = Aantal vinnen: TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Het aantal vinnen in de vinnenset. TrapezoidFinSetCfg.lbl.Finrotation = Vinrotatie: -TrapezoidFinSetCfg.lbl.ttip.Finrotation = De hoek van de eerste vin in de vinnenset. +FinSetCfg.lbl.FinRotation.ttip = De hoek van de eerste vin in de vinnenset. TrapezoidFinSetCfg.lbl.Fincant = Vinkanteling: TrapezoidFinSetCfg.lbl.ttip.Fincant = De hoek waarin de vinnen zijn gekanteld ten opzichte van de raketromp. TrapezoidFinSetCfg.lbl.Rootchord = Root chord: @@ -1146,8 +1145,8 @@ TrapezoidFinSetCfg.lbl.Sweeplength = Zwaailengte: TrapezoidFinSetCfg.lbl.Sweepangle = Zwaaihoek: TrapezoidFinSetCfg.lbl.FincrossSection = Vindoorsnede: TrapezoidFinSetCfg.lbl.Thickness = Dikte: -TrapezoidFinSetCfg.lbl.Posrelativeto = Positie relatief t.o.v.: -TrapezoidFinSetCfg.lbl.plus = plus +PlacementPanel.lbl.PosRelativeTo = Positie relatief t.o.v.: +PlacementPanel.lbl.plus = plus TrapezoidFinSetCfg.tab.General = Algemeen TrapezoidFinSetCfg.tab.Generalproperties = Algemene eigenschappen diff --git a/core/resources/l10n/messages_pl.properties b/core/resources/l10n/messages_pl.properties index 64845d0bb..1bd476d8a 100644 --- a/core/resources/l10n/messages_pl.properties +++ b/core/resources/l10n/messages_pl.properties @@ -633,14 +633,14 @@ update.dlg.latestVersion = Korzystasz z najnowszej wersji OpenRocket: %s. RocketCompCfg.lbl.Componentmass = Masa cz\u0119\u015Bci: RocketCompCfg.lbl.overriddento = (wymuszone do RocketCompCfg.lbl.overriddenby = (wymuszone przez - RocketCompCfg.lbl.Componentmaterial = Materia\u0142 cz\u0119\u015Bci: - RocketCompCfg.lbl.Componentfinish = Wyko\u0144czenie cz\u0119\u015Bci: - RocketCompCfg.lbl.ttip.componentmaterialaffects = Materia\u0142 cz\u0119\u015Bci ma wp\u0142yw na jej ci\u0119\u017Car. - RocketCompCfg.combo.ttip.componentmaterialaffects = Materia\u0142 cz\u0119\u015Bci ma wp\u0142yw na jej ci\u0119\u017Car. - RocketCompCfg.lbl.longA1 = Wyko\u0144czenie cz\u0119\u015Bci ma wp\u0142yw na jej opr aerodynamiczny.
- RocketCompCfg.lbl.longA2 = Wskazana warto\u015B\u0107 okre\u015Bla przeci\u0119tn\u0105 chropowato\u015B\u0107 powierzchni. - RocketCompCfg.but.Setforall = Ustaw dla wszystkich - RocketCompCfg.but.ttip.Setforall = Nadaj to wyko\u0144czenie wszystkim cz\u0119\u015Bci\u0105 sk\u0142adow\u0105 rakiety. + MaterialPanel.lbl.ComponentMaterial = Materia\u0142 cz\u0119\u015Bci: + MaterialPanel.lbl.ComponentFinish = Wyko\u0144czenie cz\u0119\u015Bci: + MaterialPanel.lbl.ttip.ComponentMaterialAffects = Materia\u0142 cz\u0119\u015Bci ma wp\u0142yw na jej ci\u0119\u017Car. + MaterialPanel.combo.ttip.ComponentMaterialAffects = Materia\u0142 cz\u0119\u015Bci ma wp\u0142yw na jej ci\u0119\u017Car. + MaterialPanel.lbl.ComponentFinish.ttip.longA1 = Wyko\u0144czenie cz\u0119\u015Bci ma wp\u0142yw na jej opr aerodynamiczny.
+ MaterialPanel.lbl.ComponentFinish.ttip.longA2 = Wskazana warto\u015B\u0107 okre\u015Bla przeci\u0119tn\u0105 chropowato\u015B\u0107 powierzchni. + MaterialPanel.but.SetForAll = Ustaw dla wszystkich + MaterialPanel.but.SetForAll.ttip = Nadaj to wyko\u0144czenie wszystkim cz\u0119\u015Bci\u0105 sk\u0142adow\u0105 rakiety. RocketCompCfg.checkbox.Overridemass = Wymu\u015B ci\u0119\u017Car: RocketCompCfg.checkbox.Overridecenterofgrav = Wymu\u015B \u015Brodek ci\u0119\u017Cko\u015Bci: RocketCompCfg.checkbox.OverrideSubcomponents = Nadpisanie dla wszystkich podkomponent\u00F3w @@ -710,7 +710,7 @@ ComponentInfo.EngineBlock = Blokada silnika unieruchamia silnik wewn\u01 FreeformFinSetCfg.tab.Shape = Kszta\u0142t FreeformFinSetCfg.tab.ttip.Finshape = Kszta\u0142t statecznikw FreeformFinSetCfg.lbl.Numberoffins = Liczba statecznikw: - FreeformFinSetCfg.lbl.Finrotation = Rotacja statecznikw: + FinSetCfg.lbl.FinRotation = Rotacja statecznikw: FreeformFinSetCfg.lbl.Fincant = Nachylenie statecznikw: FreeformFinSetCfg.lbl.ttip.Fincant = K\u0105t nachylenia statecznikw wzgl\u0119dem korpusu. FreeformFinSetCfg.lbl.Posrelativeto = Po\u0142o\u017Cenie wzgl\u0119dem: @@ -750,7 +750,6 @@ ComponentInfo.EngineBlock = Blokada silnika unieruchamia silnik wewn\u01 LaunchLugCfg.lbl.Innerdiam = \u015Arednica wewn\u0119trzna: LaunchLugCfg.lbl.Thickness = Grubo\u015B\u0107: LaunchLugCfg.lbl.Radialpos = Po\u0142o\u017Cenie wzgl\u0119dem \u015Brodka: - LaunchLugCfg.lbl.Posrelativeto = Po\u0142o\u017Cenie wzgl\u0119dem: LaunchLugCfg.lbl.plus = plus LaunchLugCfg.tab.General = Oglne LaunchLugCfg.tab.Generalprop = W\u0142a\u015Bciwo\u015Bci oglne @@ -902,7 +901,7 @@ ComponentInfo.EngineBlock = Blokada silnika unieruchamia silnik wewn\u01 TrapezoidFinSetCfg.lbl.Nbroffins = Liczba statecznikw: TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Liczba statecznikw w zestawie. TrapezoidFinSetCfg.lbl.Finrotation = Rotacja statecznikw: - TrapezoidFinSetCfg.lbl.ttip.Finrotation = K\u0105t nachylenia pierwszego statecznika w zestawie. + FinSetCfg.lbl.FinRotation.ttip = K\u0105t nachylenia pierwszego statecznika w zestawie. TrapezoidFinSetCfg.lbl.Fincant = Nachylenie statecznikw: TrapezoidFinSetCfg.lbl.ttip.Fincant = K\u0105t nachylenia statecznikw wzgl\u0119dem korpusu. TrapezoidFinSetCfg.lbl.Rootchord = Kraw\u0119d\u017A podstawy: @@ -912,8 +911,8 @@ ComponentInfo.EngineBlock = Blokada silnika unieruchamia silnik wewn\u01 TrapezoidFinSetCfg.lbl.Sweepangle = K\u0105t przesuni\u0119cia: TrapezoidFinSetCfg.lbl.FincrossSection = Przekrj statecznika: TrapezoidFinSetCfg.lbl.Thickness = Grubo\u015B\u0107: - TrapezoidFinSetCfg.lbl.Posrelativeto = Po\u0142o\u017Cenie wzgl\u0119dem: - TrapezoidFinSetCfg.lbl.plus = plus + PlacementPanel.lbl.PosRelativeTo = Po\u0142o\u017Cenie wzgl\u0119dem: + PlacementPanel.lbl.plus = plus TrapezoidFinSetCfg.tab.General = Oglne TrapezoidFinSetCfg.tab.Generalproperties = W\u0142a\u015Bciwo\u015Bci oglne diff --git a/core/resources/l10n/messages_pt.properties b/core/resources/l10n/messages_pt.properties index fa3ad6ac2..0e43e37ca 100644 --- a/core/resources/l10n/messages_pt.properties +++ b/core/resources/l10n/messages_pt.properties @@ -339,7 +339,7 @@ FreeformFinSet.FreeformFinSet = Conjunto de aletas de formato livre FreeformFinSetCfg.lbl.Fincant = Inclina\u00e7\u00e3o da aleta: FreeformFinSetCfg.lbl.FincrossSection = Se\u00e7\u00e3o transversal da aleta: -FreeformFinSetCfg.lbl.Finrotation = Rota\u00e7\u00e3o da aleta: +FinSetCfg.lbl.FinRotation = Rota\u00e7\u00e3o da aleta: FreeformFinSetCfg.lbl.Numberoffins = N\u00famero de aletas: FreeformFinSetCfg.lbl.Posrelativeto = Posi\u00e7\u00e3o em rela\u00e7\u00e3o a: FreeformFinSetCfg.lbl.Thickness = Se\u00e7\u00e3o transversal da aleta: @@ -473,7 +473,6 @@ LaunchLugCfg.lbl.Innerdiam = Di\u00e2metro interno: # LaunchLugConfig LaunchLugCfg.lbl.Length = Comprimento: LaunchLugCfg.lbl.Outerdiam = Di\u00e2metro Externo -LaunchLugCfg.lbl.Posrelativeto = Posi\u00e7\u00e3o em rela\u00e7\u00e3o a: LaunchLugCfg.lbl.Radialpos = Posi\u00e7\u00e3o radial: LaunchLugCfg.lbl.Thickness = Espessura: LaunchLugCfg.lbl.plus = mais @@ -803,22 +802,22 @@ RocketCfg.lbl.Revisionhistory = Hist\u00f3rico de Revis\u00e3o: RocketCompCfg.border.Foreshoulder = Ressalto dianteiro RocketCompCfg.but.Saveasdefstyle = Salvar como estilo padr\u00e3o -RocketCompCfg.but.Setforall = Definir para todos -RocketCompCfg.but.ttip.Setforall = Definir este acabamento para todos os componentes do foguete. +MaterialPanel.but.SetForAll = Definir para todos +MaterialPanel.but.SetForAll.ttip = Definir este acabamento para todos os componentes do foguete. RocketCompCfg.checkbox.Endcapped = Fim tampado RocketCompCfg.checkbox.Overridecenterofgrav = Modificar o centro de gravidade: RocketCompCfg.checkbox.Overridecoeffofdrag = Modificar o coeficiente de arrasto: RocketCompCfg.checkbox.Overridemass = Modificar massa: RocketCompCfg.checkbox.OverrideSubcomponents = Modificar de todos os subcomponentes RocketCompCfg.checkbox.Usedefaultcolor = Use a cor padr\u00e3o -RocketCompCfg.combo.ttip.componentmaterialaffects = O material do componente afeta o peso do componente. +MaterialPanel.combo.ttip.ComponentMaterialAffects = O material do componente afeta o peso do componente. RocketCompCfg.lbl.Choosecolor = Escolha a cor RocketCompCfg.lbl.Commentsonthe = Coment\u00e1rios sobre o RocketCompCfg.lbl.Complinestyle = Estilo de linha de componentes: RocketCompCfg.lbl.Componentcolor = Cor do componente: -RocketCompCfg.lbl.Componentfinish = Acabamento de componentes: +MaterialPanel.lbl.ComponentFinish = Acabamento de componentes: RocketCompCfg.lbl.Componentmass = Massa do componente: -RocketCompCfg.lbl.Componentmaterial = Material componente: +MaterialPanel.lbl.ComponentMaterial = Material componente: # RocketComponentConfig RocketCompCfg.lbl.Componentname = Nome do componente: RocketCompCfg.lbl.Diameter = Di\u00e2metro: @@ -826,13 +825,13 @@ RocketCompCfg.lbl.Figurestyle = Estilo da figura: RocketCompCfg.lbl.Length = Comprimento: RocketCompCfg.lbl.Mass = Massa: RocketCompCfg.lbl.Thickness = Espessura: -RocketCompCfg.lbl.longA1 = O acabamento do componente afeta o arrasto aerodin\u00e2mico do componente.
-RocketCompCfg.lbl.longA2 = O valor indicado \u00e9 a altura m\u00e9dia da rugosidade da superf\u00edcie. +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = O acabamento do componente afeta o arrasto aerodin\u00e2mico do componente.
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = O valor indicado \u00e9 a altura m\u00e9dia da rugosidade da superf\u00edcie. RocketCompCfg.lbl.longB1 = A massa modificada n\u00e3o inclui motores.
RocketCompCfg.lbl.longB2 = O centro de gravidade \u00e9 medido a partir da extremidade dianteira do RocketCompCfg.lbl.overriddenby = (substitu\u00eddo pela RocketCompCfg.lbl.overriddento = (substitu\u00eddo para -RocketCompCfg.lbl.ttip.componentmaterialaffects = O material do componente afeta o peso do componente. +MaterialPanel.lbl.ttip.ComponentMaterialAffects = O material do componente afeta o peso do componente. RocketCompCfg.tab.Comment = Coment\u00e1rio RocketCompCfg.tab.Figstyleopt = Op\u00e7\u00f5es do estilo de figura RocketCompCfg.tab.Figure = Figura @@ -1168,15 +1167,15 @@ TrapezoidFinSetCfg.lbl.Finrotation = Rota\u00e7\u00e3o da aleta: TrapezoidFinSetCfg.lbl.Height = Altura: # TrapezoidFinSetConfig TrapezoidFinSetCfg.lbl.Nbroffins = N\u00famero de aletas: -TrapezoidFinSetCfg.lbl.Posrelativeto = Posi\u00e7\u00e3o em rela\u00e7\u00e3o a: +PlacementPanel.lbl.PosRelativeTo = Posi\u00e7\u00e3o em rela\u00e7\u00e3o a: TrapezoidFinSetCfg.lbl.Rootchord = Corda da raiz: TrapezoidFinSetCfg.lbl.Sweepangle = \u00c2ngulo do contorno: TrapezoidFinSetCfg.lbl.Sweeplength = Comprimento do contorno: TrapezoidFinSetCfg.lbl.Thickness = Espessura: TrapezoidFinSetCfg.lbl.Tipchord = Dica da corda: -TrapezoidFinSetCfg.lbl.plus = mais +PlacementPanel.lbl.plus = mais TrapezoidFinSetCfg.lbl.ttip.Fincant = O \u00e2ngulo que as aletas s\u00e3o obl\u00edquos em rela\u00e7\u00e3o ao corpo do foguete. -TrapezoidFinSetCfg.lbl.ttip.Finrotation = \u00c2ngulo da primeira aleta no conjunto de aletas. +FinSetCfg.lbl.FinRotation.ttip = \u00c2ngulo da primeira aleta no conjunto de aletas. TrapezoidFinSetCfg.lbl.ttip.Nbroffins = N\u00famero de alhetas no conjunto de aletas. TrapezoidFinSetCfg.tab.General = Geral TrapezoidFinSetCfg.tab.Generalproperties = Propriedades gerais diff --git a/core/resources/l10n/messages_ru.properties b/core/resources/l10n/messages_ru.properties index 2e259eea3..124ca6bc8 100644 --- a/core/resources/l10n/messages_ru.properties +++ b/core/resources/l10n/messages_ru.properties @@ -908,14 +908,14 @@ RocketCompCfg.lbl.Mass = \u041C\u0430\u0441\u0441\u0430: RocketCompCfg.lbl.Componentmass = \u041C\u0430\u0441\u0441\u0430 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430: RocketCompCfg.lbl.overriddento = (\u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043E \u043D\u0430 RocketCompCfg.lbl.overriddenby = (\u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043E \u043D\u0430 -RocketCompCfg.lbl.Componentmaterial = \u041C\u0430\u0442\u0435\u0440\u0438\u0430\u043B \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430: -RocketCompCfg.lbl.Componentfinish = \u041E\u0442\u0434\u0435\u043B\u043A\u0430 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 -RocketCompCfg.lbl.ttip.componentmaterialaffects = \u041C\u0430\u0442\u0435\u0440\u0438\u0430\u043B \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0435\u0433\u043E \u043C\u0430\u0441\u0441\u0443. -RocketCompCfg.combo.ttip.componentmaterialaffects = \u041C\u0430\u0442\u0435\u0440\u0438\u0430\u043B \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0435\u0433\u043E \u043C\u0430\u0441\u0441\u0443. -RocketCompCfg.lbl.longA1 = \u041E\u0442\u0434\u0435\u043B\u043A\u0430 \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0430\u044D\u0440\u043E\u0434\u0438\u043D\u0430\u043C\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0441\u043E\u043F\u0440\u043E\u0442\u0438\u0432\u043B\u0435\u043D\u0438\u0435 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430
-RocketCompCfg.lbl.longA2 = \u0423\u043A\u0430\u0437\u0430\u043D\u043E \u0441\u0440\u0435\u0434\u043D\u0435\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0448\u0435\u0440\u043E\u0445\u043E\u0432\u0430\u0442\u043E\u0441\u0442\u0438. -RocketCompCfg.but.Setforall = \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0434\u043B\u044F \u0432\u0441\u0435\u0445 -RocketCompCfg.but.ttip.Setforall = \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u044D\u0442\u0443 \u0448\u0435\u0440\u043E\u0445\u043E\u0432\u0430\u0442\u043E\u0441\u0442\u044C \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432 \u0440\u0430\u043A\u0435\u0442\u044B. +MaterialPanel.lbl.ComponentMaterial = \u041C\u0430\u0442\u0435\u0440\u0438\u0430\u043B \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430: +MaterialPanel.lbl.ComponentFinish = \u041E\u0442\u0434\u0435\u043B\u043A\u0430 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 +MaterialPanel.lbl.ttip.ComponentMaterialAffects = \u041C\u0430\u0442\u0435\u0440\u0438\u0430\u043B \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0435\u0433\u043E \u043C\u0430\u0441\u0441\u0443. +MaterialPanel.combo.ttip.ComponentMaterialAffects = \u041C\u0430\u0442\u0435\u0440\u0438\u0430\u043B \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0435\u0433\u043E \u043C\u0430\u0441\u0441\u0443. +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = \u041E\u0442\u0434\u0435\u043B\u043A\u0430 \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0430\u044D\u0440\u043E\u0434\u0438\u043D\u0430\u043C\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0441\u043E\u043F\u0440\u043E\u0442\u0438\u0432\u043B\u0435\u043D\u0438\u0435 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = \u0423\u043A\u0430\u0437\u0430\u043D\u043E \u0441\u0440\u0435\u0434\u043D\u0435\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0448\u0435\u0440\u043E\u0445\u043E\u0432\u0430\u0442\u043E\u0441\u0442\u0438. +MaterialPanel.but.SetForAll = \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0434\u043B\u044F \u0432\u0441\u0435\u0445 +MaterialPanel.but.SetForAll.ttip = \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u044D\u0442\u0443 \u0448\u0435\u0440\u043E\u0445\u043E\u0432\u0430\u0442\u043E\u0441\u0442\u044C \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432 \u0440\u0430\u043A\u0435\u0442\u044B. RocketCompCfg.checkbox.Overridemass = \u041F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u043C\u0430\u0441\u0441\u0443: RocketCompCfg.checkbox.Overridemass.ttip = \u041F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043C\u0430\u0441\u0441\u0443 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043D\u043D\u0443\u044E \u043F\u043E \u043E\u0431\u044A\u0435\u043C\u0443 \u0438 \u043F\u043B\u043E\u0442\u043D\u043E\u0441\u0442\u0438 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430. RocketCompCfg.checkbox.Overridecenterofgrav = \u041F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0446\u0435\u043D\u0442\u0440 \u0442\u044F\u0436\u0435\u0441\u0442\u0438: @@ -1003,7 +1003,7 @@ FreeformFinSetCfg.tab.ttip.General = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\ FreeformFinSetCfg.tab.Shape = \u0424\u043E\u0440\u043C\u0430 FreeformFinSetCfg.tab.ttip.Finshape = \u0424\u043E\u0440\u043C\u0430 \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u0430 FreeformFinSetCfg.lbl.Numberoffins = \u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u043E\u0432: -FreeformFinSetCfg.lbl.Finrotation = \u0412\u0440\u0430\u0449\u0435\u043D\u0438\u0435: +FinSetCfg.lbl.FinRotation = \u0412\u0440\u0430\u0449\u0435\u043D\u0438\u0435: FreeformFinSetCfg.lbl.Fincant = \u0423\u0433\u043E\u043B \u0430\u0442\u0430\u043A\u0438: FreeformFinSetCfg.lbl.ttip.Fincant = \u0423\u0433\u043E\u043B \u0430\u0442\u0430\u043A\u0438 \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u0430 \u043F\u043E \u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u044E \u043A \u043E\u0441\u0438 \u0440\u0430\u043A\u0435\u0442\u044B. FreeformFinSetCfg.lbl.Posrelativeto = \u041F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E: @@ -1053,7 +1053,6 @@ LaunchLugCfg.lbl.Outerdiam = \u0412\u043D\u0435\u0448\u043D\u0438\u0439 \u0434\u LaunchLugCfg.lbl.Innerdiam = \u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u0434\u0438\u0430\u043C\u0435\u0442\u0440: LaunchLugCfg.lbl.Thickness = \u0422\u043E\u043B\u0449\u0438\u043D\u0430: LaunchLugCfg.lbl.Angle = \u0423\u0433\u043E\u043B: -LaunchLugCfg.lbl.Posrelativeto = \u041F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E: LaunchLugCfg.lbl.plus = \u043F\u043B\u044E\u0441 LaunchLugCfg.tab.General = \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0435 LaunchLugCfg.tab.Generalprop = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B @@ -1125,7 +1124,6 @@ NoseConeCfg.tab.ttip.Shoulder = \u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 Parachute.Parachute = \u041F\u0430\u0440\u0430\u0448\u044E\u0442 ParachuteCfg.lbl.Canopy = \u041A\u0443\u043F\u043E\u043B: ParachuteCfg.lbl.Shroudlines = \u0421\u0442\u0440\u043E\u043F\u044B: -ParachuteCfg.lbl.Placement = \u041F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 ParachuteCfg.lbl.Deployment = \u0420\u0430\u0441\u043A\u0440\u044B\u0442\u0438\u0435 ParachuteCfg.lbl.CanopyShape = \u0424\u043E\u0440\u043C\u0430 \u043A\u0443\u043F\u043E\u043B\u0430: ParachuteCfg.lbl.Diameter = \u0414\u0438\u0430\u043C\u0435\u0442\u0440: @@ -1183,8 +1181,7 @@ SleeveCfg.tab.General = \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0435 SleeveCfg.tab.Generalproperties = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B ! StreamerConfig -StreamerCfg.lbl.Attributes = \u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044B -StreamerCfg.lbl.Placement = \u041F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 +PlacementPanel.title.Placement = \u041F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 StreamerCfg.lbl.Deployment = \u0420\u0430\u0441\u043A\u0440\u044B\u0442\u0438\u0435 StreamerCfg.lbl.Striplength = \u0414\u043B\u0438\u043D\u0430 \u043B\u0435\u043D\u0442\u044B: StreamerCfg.lbl.Stripwidth = \u0428\u0438\u0440\u0438\u043D\u0430 \u043B\u0435\u043D\u0442\u044B: @@ -1246,7 +1243,7 @@ TransitionCfg.tab.Shoulderproperties = \u0421\u0432\u043E\u0439\u0441\u0442\u043 TrapezoidFinSetCfg.lbl.Nbroffins = \u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u043E\u0432: TrapezoidFinSetCfg.lbl.ttip.Nbroffins = \u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u043E\u0432 \u0432 \u043E\u043F\u0435\u0440\u0435\u043D\u0438\u0438. TrapezoidFinSetCfg.lbl.Finrotation = \u0412\u0440\u0430\u0449\u0435\u043D\u0438\u0435: -TrapezoidFinSetCfg.lbl.ttip.Finrotation = \u041F\u043E\u0432\u043E\u0440\u043E\u0442 \u043F\u0435\u0440\u0432\u043E\u0433\u043E \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u0430 \u0432 \u043E\u043F\u0435\u0440\u0435\u043D\u0438\u0438. +FinSetCfg.lbl.FinRotation.ttip = \u041F\u043E\u0432\u043E\u0440\u043E\u0442 \u043F\u0435\u0440\u0432\u043E\u0433\u043E \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u0430 \u0432 \u043E\u043F\u0435\u0440\u0435\u043D\u0438\u0438. TrapezoidFinSetCfg.lbl.Fincant = \u0423\u0433\u043E\u043B \u0430\u0442\u0430\u043A\u0438: TrapezoidFinSetCfg.lbl.ttip.Fincant = \u0423\u0433\u043E\u043B \u0430\u0442\u0430\u043A\u0438 \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u0430 \u043F\u043E \u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u044E \u043A \u043E\u0441\u0438 \u0440\u0430\u043A\u0435\u0442\u044B. TrapezoidFinSetCfg.lbl.Rootchord = \u0414\u043B\u0438\u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F: @@ -1256,8 +1253,8 @@ TrapezoidFinSetCfg.lbl.Sweeplength = \u0414\u043B\u0438\u043D\u0430 \u0441\u0442 TrapezoidFinSetCfg.lbl.Sweepangle = \u0423\u0433\u043E\u043B \u0441\u0442\u0440\u0435\u043B\u043E\u0432\u0438\u0434\u043D\u043E\u0441\u0442\u0438: TrapezoidFinSetCfg.lbl.FincrossSection = \u041F\u0440\u043E\u0444\u0438\u043B\u044C \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u0430: TrapezoidFinSetCfg.lbl.Thickness = \u0422\u043E\u043B\u0449\u0438\u043D\u0430: -TrapezoidFinSetCfg.lbl.Posrelativeto = \u041F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E: -TrapezoidFinSetCfg.lbl.plus = \u043F\u043B\u044E\u0441 +PlacementPanel.lbl.PosRelativeTo = \u041F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E: +PlacementPanel.lbl.plus = \u043F\u043B\u044E\u0441 TrapezoidFinSetCfg.tab.General = \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0435 TrapezoidFinSetCfg.tab.Generalproperties = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B diff --git a/core/resources/l10n/messages_uk_UA.properties b/core/resources/l10n/messages_uk_UA.properties index 68f4ed718..714069d60 100644 --- a/core/resources/l10n/messages_uk_UA.properties +++ b/core/resources/l10n/messages_uk_UA.properties @@ -790,14 +790,14 @@ RocketCompCfg.lbl.Mass = Mass: RocketCompCfg.lbl.Componentmass = Component mass: RocketCompCfg.lbl.overriddento = (overridden to RocketCompCfg.lbl.overriddenby = (overridden by -RocketCompCfg.lbl.Componentmaterial = Component material: -RocketCompCfg.lbl.Componentfinish = Component finish: -RocketCompCfg.lbl.ttip.componentmaterialaffects = The component material affects the weight of the component. -RocketCompCfg.combo.ttip.componentmaterialaffects = The component material affects the weight of the component. -RocketCompCfg.lbl.longA1 = The component finish affects the aerodynamic drag of the component.
-RocketCompCfg.lbl.longA2 = The value indicated is the average roughness height of the surface. -RocketCompCfg.but.Setforall = Set for all -RocketCompCfg.but.ttip.Setforall = Set this finish for all components of the rocket. +MaterialPanel.lbl.ComponentMaterial = Component material: +MaterialPanel.lbl.ComponentFinish = Component finish: +MaterialPanel.lbl.ttip.ComponentMaterialAffects = The component material affects the weight of the component. +MaterialPanel.combo.ttip.ComponentMaterialAffects = The component material affects the weight of the component. +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = The component finish affects the aerodynamic drag of the component.
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = The value indicated is the average roughness height of the surface. +MaterialPanel.but.SetForAll = Set for all +MaterialPanel.but.SetForAll.ttip = Set this finish for all components of the rocket. RocketCompCfg.checkbox.Overridemass = Override mass: RocketCompCfg.checkbox.Overridecenterofgrav = Override center of gravity: RocketCompCfg.checkbox.Overridecoeffofdrag = Override coefficient of drag: @@ -867,7 +867,7 @@ FreeformFinSetCfg.tab.ttip.General = General properties FreeformFinSetCfg.tab.Shape = Shape FreeformFinSetCfg.tab.ttip.Finshape = Fin shape FreeformFinSetCfg.lbl.Numberoffins = Number of fins: -FreeformFinSetCfg.lbl.Finrotation = Fin rotation: +FinSetCfg.lbl.FinRotation = Fin rotation: FreeformFinSetCfg.lbl.Fincant = Fin cant: FreeformFinSetCfg.lbl.ttip.Fincant = The angle that the fins are canted with respect to the rocket body. FreeformFinSetCfg.lbl.Posrelativeto = Position relative to: @@ -907,7 +907,6 @@ LaunchLugCfg.lbl.Outerdiam = Outer diameter: LaunchLugCfg.lbl.Innerdiam = Inner diameter: LaunchLugCfg.lbl.Thickness = Thickness: LaunchLugCfg.lbl.Radialpos = Radial position: -LaunchLugCfg.lbl.Posrelativeto = Position relative to: LaunchLugCfg.lbl.plus = plus LaunchLugCfg.tab.General = General LaunchLugCfg.tab.Generalprop = General properties @@ -1061,7 +1060,7 @@ TransitionCfg.tab.Shoulderproperties = Shoulder properties TrapezoidFinSetCfg.lbl.Nbroffins = Number of fins: TrapezoidFinSetCfg.lbl.ttip.Nbroffins = The number of fins in the fin set. TrapezoidFinSetCfg.lbl.Finrotation = Fin rotation: -TrapezoidFinSetCfg.lbl.ttip.Finrotation = The angle of the first fin in the fin set. +FinSetCfg.lbl.FinRotation.ttip = The angle of the first fin in the fin set. TrapezoidFinSetCfg.lbl.Fincant = Fin cant: TrapezoidFinSetCfg.lbl.ttip.Fincant =The angle that the fins are canted with respect to the rocket body. TrapezoidFinSetCfg.lbl.Rootchord = Root chord: @@ -1071,8 +1070,8 @@ TrapezoidFinSetCfg.lbl.Sweeplength = Sweep length: TrapezoidFinSetCfg.lbl.Sweepangle = Sweep angle: TrapezoidFinSetCfg.lbl.FincrossSection = Fin cross section: TrapezoidFinSetCfg.lbl.Thickness = Thickness: -TrapezoidFinSetCfg.lbl.Posrelativeto = Position relative to: -TrapezoidFinSetCfg.lbl.plus = plus +PlacementPanel.lbl.PosRelativeTo = Position relative to: +PlacementPanel.lbl.plus = plus TrapezoidFinSetCfg.tab.General = General TrapezoidFinSetCfg.tab.Generalproperties = General properties diff --git a/core/resources/l10n/messages_zh_CN.properties b/core/resources/l10n/messages_zh_CN.properties index 27202fd55..f1642f631 100644 --- a/core/resources/l10n/messages_zh_CN.properties +++ b/core/resources/l10n/messages_zh_CN.properties @@ -376,7 +376,7 @@ FreeformFinSet.FreeformFinSet = \u81EA\u7531\u66F2\u9762\u7A33\u5B9A\u7F FreeformFinSetCfg.lbl.Fincant = \u7A33\u5B9A\u7FFC\u9762\u89D2: FreeformFinSetCfg.lbl.FincrossSection = \u7A33\u5B9A\u7FFC\u6A2A\u5207\u9762: -FreeformFinSetCfg.lbl.Finrotation = \u7A33\u5B9A\u7FFC\u65CB\u5EA6: +FinSetCfg.lbl.FinRotation = \u7A33\u5B9A\u7FFC\u65CB\u5EA6: FreeformFinSetCfg.lbl.Numberoffins = \u7A33\u5B9A\u7FFC\u6570\u91CF: FreeformFinSetCfg.lbl.Posrelativeto = \u76F8\u5BF9\u4F4D\u7F6E: FreeformFinSetCfg.lbl.Thickness = \u539A\u5EA6: @@ -510,7 +510,6 @@ LaunchLugCfg.lbl.Innerdiam = \u5185\u76F4\u5F84: ! LaunchLugConfig LaunchLugCfg.lbl.Length = \u957F\u5EA6: LaunchLugCfg.lbl.Outerdiam = \u5916\u76F4\u5F84: -LaunchLugCfg.lbl.Posrelativeto = \u76F8\u5BF9\u4F4D\u7F6E: LaunchLugCfg.lbl.Radialpos = \u5F84\u5411\u4F4D\u7F6E: LaunchLugCfg.lbl.Thickness = \u539A\u5EA6: LaunchLugCfg.lbl.plus = \u52A0 @@ -892,21 +891,21 @@ RocketCfg.lbl.Revisionhistory = \u4FEE\u8BA2\u5386\u53F2: RocketCompCfg.border.Foreshoulder = \u540E\u8FDE\u63A5\u5904 RocketCompCfg.but.Saveasdefstyle = \u4FDD\u5B58\u4E3A\u9ED8\u8BA4\u6837\u5F0F -RocketCompCfg.but.Setforall = \u8BBE\u7F6E\u6240\u6709 -RocketCompCfg.but.ttip.Setforall = \u5BF9\u6240\u6709\u7684\u7EC4\u4EF6\u4F7F\u7528\u540C\u79CD\u8868\u9762\u5904\u7406. +MaterialPanel.but.SetForAll = \u8BBE\u7F6E\u6240\u6709 +MaterialPanel.but.SetForAll.ttip = \u5BF9\u6240\u6709\u7684\u7EC4\u4EF6\u4F7F\u7528\u540C\u79CD\u8868\u9762\u5904\u7406. RocketCompCfg.checkbox.Endcapped = \u6709\u7AEF\u76D6 RocketCompCfg.checkbox.Overridecenterofgrav = \u8986\u5199\u91CD\u5FC3: RocketCompCfg.checkbox.Overridemass = \u8986\u5199\u8D28\u91CF: RocketCompCfg.checkbox.OverrideSubcomponents = \u8986\u5199\u6240\u6709\u7EC4\u4EF6\u7684\u91CD\u91CF\u548C\u91CD\u5FC3 RocketCompCfg.checkbox.Usedefaultcolor = \u9ED8\u8BA4\u989C\u8272 -RocketCompCfg.combo.ttip.componentmaterialaffects = \u7EC4\u4EF6\u6750\u6599\u5C06\u4F1A\u5F71\u54CD\u5230\u7EC4\u4EF6\u91CD\u91CF. +MaterialPanel.combo.ttip.ComponentMaterialAffects = \u7EC4\u4EF6\u6750\u6599\u5C06\u4F1A\u5F71\u54CD\u5230\u7EC4\u4EF6\u91CD\u91CF. RocketCompCfg.lbl.Choosecolor = \u989C\u8272\u9009\u62E9 RocketCompCfg.lbl.Commentsonthe = \u6CE8\u91CA RocketCompCfg.lbl.Complinestyle = \u7EC4\u4EF6\u7EBF\u578B: RocketCompCfg.lbl.Componentcolor = \u7EC4\u4EF6\u989C\u8272: -RocketCompCfg.lbl.Componentfinish = \u7EC4\u4EF6\u8868\u9762\u5904\u7406: +MaterialPanel.lbl.ComponentFinish = \u7EC4\u4EF6\u8868\u9762\u5904\u7406: RocketCompCfg.lbl.Componentmass = \u7EC4\u4EF6\u8D28\u91CF: -RocketCompCfg.lbl.Componentmaterial = \u7EC4\u4EF6\u6750\u6599: +MaterialPanel.lbl.ComponentMaterial = \u7EC4\u4EF6\u6750\u6599: ! RocketComponentConfig RocketCompCfg.lbl.Componentname = \u7EC4\u4EF6\u540D\u79F0: RocketCompCfg.lbl.Diameter = \u76F4\u5F84: @@ -914,13 +913,13 @@ RocketCompCfg.lbl.Figurestyle = \u6837\u5F0F: RocketCompCfg.lbl.Length = \u957F\u5EA6: RocketCompCfg.lbl.Mass = \u8D28\u91CF: RocketCompCfg.lbl.Thickness = \u539A\u5EA6: -RocketCompCfg.lbl.longA1 = \u8868\u9762\u5904\u7406\u5C06\u4F1A\u5F71\u54CD\u5230\u7EC4\u4EF6\u7684\u7A7A\u6C14\u52A8\u529B.
-RocketCompCfg.lbl.longA2 = \u8BE5\u6570\u503C\u4E3A\u5E73\u5747\u8868\u9762\u7C97\u7CD9\u5EA6. +MaterialPanel.lbl.ComponentFinish.ttip.longA1 = \u8868\u9762\u5904\u7406\u5C06\u4F1A\u5F71\u54CD\u5230\u7EC4\u4EF6\u7684\u7A7A\u6C14\u52A8\u529B.
+MaterialPanel.lbl.ComponentFinish.ttip.longA2 = \u8BE5\u6570\u503C\u4E3A\u5E73\u5747\u8868\u9762\u7C97\u7CD9\u5EA6. RocketCompCfg.lbl.longB1 = \u8986\u5199\u8D28\u91CF\u4E0D\u5305\u62EC\u53D1\u52A8\u673A.
RocketCompCfg.lbl.longB2 = \u91CD\u5FC3\u4ECE\u5934\u90E8\u5F00\u59CB\u8BA1\u7B97 RocketCompCfg.lbl.overriddenby = (\u88AB\u8986\u5199 RocketCompCfg.lbl.overriddento = (\u8986\u5199\u5230 -RocketCompCfg.lbl.ttip.componentmaterialaffects = \u7EC4\u4EF6\u6750\u6599\u5C06\u4F1A\u5F71\u54CD\u5230\u7EC4\u4EF6\u91CD\u91CF. +MaterialPanel.lbl.ttip.ComponentMaterialAffects = \u7EC4\u4EF6\u6750\u6599\u5C06\u4F1A\u5F71\u54CD\u5230\u7EC4\u4EF6\u91CD\u91CF. RocketCompCfg.tab.Appearance = \u5916\u89C2 RocketCompCfg.tab.Comment = \u6CE8\u91CA RocketCompCfg.tab.Figstyleopt = \u6837\u5F0F\u9009\u9879 @@ -1274,15 +1273,15 @@ TrapezoidFinSetCfg.lbl.Finrotation = \u7A33\u5B9A\u7FFC\u65CB\u89D2: TrapezoidFinSetCfg.lbl.Height = \u9AD8\u5EA6: ! TrapezoidFinSetConfig TrapezoidFinSetCfg.lbl.Nbroffins = \u7A33\u5B9A\u7FFC\u6570\u91CF: -TrapezoidFinSetCfg.lbl.Posrelativeto = \u76F8\u5BF9\u4F4D\u7F6E: +PlacementPanel.lbl.PosRelativeTo = \u76F8\u5BF9\u4F4D\u7F6E: TrapezoidFinSetCfg.lbl.Rootchord = \u7FFC\u6839\u5F26: TrapezoidFinSetCfg.lbl.Sweepangle = \u540E\u63A0\u89D2: TrapezoidFinSetCfg.lbl.Sweeplength = \u540E\u63A0\u957F\u5EA6: TrapezoidFinSetCfg.lbl.Thickness = \u539A\u5EA6: TrapezoidFinSetCfg.lbl.Tipchord = \u7FFC\u68A2\u5F26: -TrapezoidFinSetCfg.lbl.plus = \u52A0 +PlacementPanel.lbl.plus = \u52A0 TrapezoidFinSetCfg.lbl.ttip.Fincant = \u7A33\u5B9A\u7FFC\u7FFC\u9762\u4E0E\u7BAD\u4F53\u4E4B\u95F4\u7684\u5939\u89D2. -TrapezoidFinSetCfg.lbl.ttip.Finrotation = \u7A33\u5B9A\u7FFC\u7EC4\u5408\u91CC\u7B2C\u4E00\u7247\u7684\u89D2\u5EA6 +FinSetCfg.lbl.FinRotation.ttip = \u7A33\u5B9A\u7FFC\u7EC4\u5408\u91CC\u7B2C\u4E00\u7247\u7684\u89D2\u5EA6 TrapezoidFinSetCfg.lbl.ttip.Nbroffins = \u68AF\u5F62\u7A33\u5B9A\u7FFC\u7684\u6570\u91CF. TrapezoidFinSetCfg.tab.General = \u5E38\u89C4 TrapezoidFinSetCfg.tab.Generalproperties = \u5E38\u89C4\u5C5E\u6027 diff --git a/swing/src/net/sf/openrocket/gui/configdialog/AxialStageConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/AxialStageConfig.java index 26b910c31..8e3cbcb40 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/AxialStageConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/AxialStageConfig.java @@ -66,7 +66,7 @@ public class AxialStageConfig extends ComponentAssemblyConfig { DoubleModel dm = new DoubleModel( sepConfig, "SeparationDelay", 0); JSpinner spin = new JSpinner(dm.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); - panel.add(spin, "width 45lp"); + panel.add(spin, "width 65lp"); order.add(((SpinnerEditor)spin.getEditor()).getTextField()); //// seconds diff --git a/swing/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java index 128bde727..2aaa97dea 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java @@ -107,7 +107,7 @@ public class BodyTubeConfig extends RocketComponentConfig { //// Material MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.BULK, order); - panel.add(materialPanel, "cell 4 0, gapleft paragraph, aligny 0%, spany"); + panel.add(materialPanel, "cell 4 0, gapleft 40lp, aligny 0%, spany"); //// General and General properties tabbedPane.insertTab(trans.get("BodyTubecfg.tab.General"), null, panel, diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ComponentAssemblyConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/ComponentAssemblyConfig.java index 85d7c5eee..0002f2295 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ComponentAssemblyConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ComponentAssemblyConfig.java @@ -104,39 +104,11 @@ public class ComponentAssemblyConfig extends RocketComponentConfig { IntegerModel countModel = new IntegerModel( boosters, "InstanceCount", 1); JSpinner countSpinner = new JSpinner(countModel.getSpinnerModel()); countSpinner.setEditor(new SpinnerEditor(countSpinner)); - motherPanel.add(countSpinner, "wmin 65lp, growx 1, wrap 10lp"); + motherPanel.add(countSpinner, "wmin 65lp, growx 1, wrap 30lp"); order.add(((SpinnerEditor) countSpinner.getEditor()).getTextField()); - // setPositions relative to parent component - JLabel positionLabel = new JLabel(trans.get("LaunchLugCfg.lbl.Posrelativeto")); - motherPanel.add( positionLabel); - - ComboBoxModel axialPositionMethodModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); - JComboBox positionMethodCombo = new JComboBox( axialPositionMethodModel ); - motherPanel.add(positionMethodCombo, "spanx 3, wrap"); - order.add(positionMethodCombo); - - // plus - motherPanel.add(new JLabel(trans.get("StageConfig.parallel.plus")), "right"); - - final DoubleModel axialOffsetModel = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - final JSpinner axialOffsetSpinner = new JSpinner(axialOffsetModel.getSpinnerModel()); - axialOffsetSpinner.setEditor(new SpinnerEditor(axialOffsetSpinner)); - motherPanel.add(axialOffsetSpinner, "wmin 65lp, growx 1"); - order.add(((SpinnerEditor) axialOffsetSpinner.getEditor()).getTextField()); - - positionMethodCombo.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - axialOffsetModel.stateChanged(new EventObject(e)); - } - }); - - motherPanel.add(new UnitSelector(axialOffsetModel)); - motherPanel.add(new BasicSlider(axialOffsetModel.getSliderModel( - new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), - new DoubleModel(component.getParent(), "Length"))), - "gapleft para, growx 2, wrap"); + // Position relative to + motherPanel.add(new PlacementPanel(component, order), "span, grow, wrap"); return motherPanel; } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java index bb6755414..78eea8f62 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java @@ -1,9 +1,6 @@ package net.sf.openrocket.gui.configdialog; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.EventObject; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; @@ -25,7 +22,6 @@ import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.FinSet; import net.sf.openrocket.rocketcomponent.RocketComponent; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; @@ -41,8 +37,8 @@ public class EllipticalFinSetConfig extends FinSetConfig { JPanel mainPanel = new JPanel(new MigLayout()); - - JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); + // Left side + JPanel panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::]", "")); //// Number of fins panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Nbroffins"))); @@ -54,21 +50,6 @@ public class EllipticalFinSetConfig extends FinSetConfig { panel.add(spin, "growx, wrap"); order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - //// Base rotation - panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Rotation"))); - - m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE); - - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - panel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 150lp, wrap"); - - //// Fin cant JLabel label = new JLabel(trans.get("EllipticalFinSetCfg.Fincant")); //// "The angle that the fins are canted with respect to the rocket @@ -85,7 +66,7 @@ public class EllipticalFinSetConfig extends FinSetConfig { panel.add(new UnitSelector(m), "growx"); panel.add(new BasicSlider(m.getSliderModel(-FinSet.MAX_CANT_RADIANS, FinSet.MAX_CANT_RADIANS)), - "w 150lp, wrap"); + "w 100lp, wrap"); @@ -100,7 +81,7 @@ public class EllipticalFinSetConfig extends FinSetConfig { order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(0, 0.05, 0.2)), "w 150lp, wrap"); + panel.add(new BasicSlider(m.getSliderModel(0, 0.05, 0.2)), "w 100lp, wrap"); //// Height @@ -114,84 +95,70 @@ public class EllipticalFinSetConfig extends FinSetConfig { order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(0, 0.05, 0.2)), "w 150lp, wrap"); - - - //// Position - //// Position relative to: - panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Positionrelativeto"))); + panel.add(new BasicSlider(m.getSliderModel(0, 0.05, 0.2)), "w 100lp, wrap 30lp"); - final EnumModel axialMethodModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); - final JComboBox axialMethodCombo = new JComboBox( axialMethodModel ); - panel.add(axialMethodCombo, "spanx, growx, wrap"); - order.add(axialMethodCombo); - - //// plus - panel.add(new JLabel(trans.get("EllipticalFinSetCfg.plus")), "right"); - - final DoubleModel axialOffsetModel = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - spin = new JSpinner(axialOffsetModel.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - panel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - axialMethodCombo.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - axialOffsetModel.stateChanged(new EventObject(e)); - } - }); - - panel.add(new UnitSelector(axialOffsetModel), "growx"); - panel.add(new BasicSlider(axialOffsetModel.getSliderModel( - new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), - new DoubleModel(component.getParent(), "Length"))), - "w 150lp, wrap"); - - - //// Right portion - mainPanel.add(panel, "aligny 0"); - - mainPanel.add(new JSeparator(SwingConstants.VERTICAL), "growy"); - - - - panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); - - //// Cross section - //// Fin cross section: - panel.add(new JLabel(trans.get("EllipticalFinSetCfg.FincrossSection")), "span, split"); - JComboBox sectionCombo = new JComboBox( - new EnumModel(component, "CrossSection")); - panel.add( sectionCombo, "growx, wrap unrel"); - order.add(sectionCombo); - - //// Thickness: - panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Thickness"))); - - m = new DoubleModel(component, "Thickness", UnitGroup.UNITS_LENGTH, 0); - - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - panel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(0, 0.01)), "w 150lp, wrap 30lp"); - - + {//// Fin cross section: + panel.add(new JLabel(trans.get("EllipticalFinSetCfg.FincrossSection")), "span, split"); + JComboBox sectionCombo = new JComboBox( + new EnumModel(component, "CrossSection")); + panel.add(sectionCombo, "growx, wrap unrel"); + order.add(sectionCombo); + } + + {//// Thickness: + panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Thickness"))); + + m = new DoubleModel(component, "Thickness", UnitGroup.UNITS_LENGTH, 0); + + spin = new JSpinner(m.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + panel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + + panel.add(new UnitSelector(m), "growx"); + panel.add(new BasicSlider(m.getSliderModel(0, 0.01)), "w 100lp, wrap 30lp"); + } + + mainPanel.add(panel, "aligny 0, gapright 50lp"); + + // Separator + //mainPanel.add(new JSeparator(SwingConstants.VERTICAL), "growy, gapx 20lp 20lp"); + // Right side panel + panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::]", "")); + + //// Root fillets + panel.add(filletMaterialPanel(), "span, grow, wrap"); + //// Material MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.BULK, order); - panel.add(materialPanel, "span, wrap"); + panel.add(materialPanel, "span, grow, wrap"); - panel.add(filletMaterialPanel(), "span, wrap"); - + + {// ------ Placement ------ + //// Position relative to: + JPanel placementPanel = new PlacementPanel(component, order); + panel.add(placementPanel, "span, grow"); + + {//// Fin rotation + label = new JLabel(trans.get("FinSetCfg.lbl.FinRotation")); + label.setToolTipText(trans.get("FinSetCfg.lbl.FinRotation.ttip")); + placementPanel.add(label, "newline"); + + m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE); + + spin = new JSpinner(m.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + placementPanel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + + placementPanel.add(new UnitSelector(m), "growx"); + placementPanel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 100lp, wrap"); + } + } - - - mainPanel.add(panel, "aligny 20%"); + mainPanel.add(panel, "aligny 0"); addFinSetButtons(); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java index 3a061017b..42e231cd8 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java @@ -148,7 +148,7 @@ public abstract class FinSetConfig extends RocketComponentConfig { private JPanel finTabPanel() { JPanel panel = new JPanel( new MigLayout("gap rel unrel, ins 25lp", - "[150lp::][65lp::][30lp::][200lp::]", "")); + "[100lp::][65lp::][30lp::][200lp::]", "")); // JPanel panel = new JPanel(new MigLayout("fillx, align 20% 20%, gap rel unrel", // "[40lp][80lp::][30lp::][100lp::]","")); @@ -565,22 +565,22 @@ public abstract class FinSetConfig extends RocketComponentConfig { UnitSelector us = new UnitSelector(m); filletPanel.add(us, "growx"); us.setToolTipText(tip); - BasicSlider bs =new BasicSlider(m.getSliderModel(0, 10)); - filletPanel.add(bs, "w 150lp, wrap para"); + BasicSlider bs = new BasicSlider(m.getSliderModel(0, 0.1)); + filletPanel.add(bs, "w 100lp, wrap para"); bs.setToolTipText(tip); // Fillet Material: JLabel label = new JLabel(trans.get("FinSetConfig.lbl.Finfilletmaterial")); label.setToolTipText(tip); //// The component material affects the weight of the component. - label.setToolTipText(trans.get("RocketCompCfg.lbl.ttip.componentmaterialaffects")); + label.setToolTipText(trans.get("MaterialPanel.lbl.ttip.ComponentMaterialAffects")); filletPanel.add(label, "spanx 4, wrap rel"); JComboBox materialCombo = new JComboBox(new MaterialModel(filletPanel, component, Material.Type.BULK, "FilletMaterial")); //// The component material affects the weight of the component. - materialCombo.setToolTipText(trans.get("RocketCompCfg.combo.ttip.componentmaterialaffects")); - filletPanel.add( materialCombo, "spanx 4, growx, wrap paragraph"); + materialCombo.setToolTipText(trans.get("MaterialPanel.combo.ttip.ComponentMaterialAffects")); + filletPanel.add( materialCombo, "spanx 4, growx"); order.add(materialCombo); filletPanel.setToolTipText(tip); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java index efb0ffd89..567a176e7 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java @@ -16,7 +16,6 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.ArrayList; -import java.util.EventObject; import java.util.List; import javax.swing.AbstractAction; @@ -69,7 +68,6 @@ import net.sf.openrocket.rocketcomponent.FinSet; import net.sf.openrocket.rocketcomponent.FreeformFinSet; import net.sf.openrocket.rocketcomponent.IllegalFinPointException; import net.sf.openrocket.rocketcomponent.RocketComponent; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.Coordinate; @@ -117,9 +115,9 @@ public class FreeformFinSetConfig extends FinSetConfig { private JPanel generalPane() { - JPanel mainPanel = new JPanel(new MigLayout("fill")); + JPanel mainPanel = new JPanel(new MigLayout()); - JPanel panel = new JPanel(new MigLayout("fill, gap rel unrel", "[][65lp::][30lp::]", "")); + JPanel panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::]", "")); { //// Number of fins: panel.add(new JLabel(trans.get("FreeformFinSetCfg.lbl.Numberoffins"))); @@ -132,21 +130,6 @@ public class FreeformFinSetConfig extends FinSetConfig { order.add(((SpinnerEditor) spin.getEditor()).getTextField()); } - { //// Base rotation - panel.add(new JLabel(trans.get("FreeformFinSetCfg.lbl.Finrotation"))); - - DoubleModel m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE); - - JSpinner spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - panel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 150lp, wrap"); - } - - { //// Fin cant JLabel label = new JLabel(trans.get("FreeformFinSetCfg.lbl.Fincant")); //// The angle that the fins are canted with respect to the rocket body. @@ -161,47 +144,9 @@ public class FreeformFinSetConfig extends FinSetConfig { order.add(((SpinnerEditor) cantAngleSpinner.getEditor()).getTextField()); panel.add(new UnitSelector(cantAngleModel), "growx"); - panel.add(new BasicSlider(cantAngleModel.getSliderModel(-FinSet.MAX_CANT_RADIANS, FinSet.MAX_CANT_RADIANS)), "w 150lp, wrap 20lp"); + panel.add(new BasicSlider(cantAngleModel.getSliderModel(-FinSet.MAX_CANT_RADIANS, FinSet.MAX_CANT_RADIANS)), "w 100lp, wrap 30lp"); } - - { //// Position - //// Position relative to: - panel.add(new JLabel(trans.get("FreeformFinSetCfg.lbl.Posrelativeto"))); - - - final EnumModel axialMethodModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods); - final JComboBox axialMethodCombo = new JComboBox(axialMethodModel); - panel.add(axialMethodCombo, "spanx 3, growx, wrap"); - order.add(axialMethodCombo); - - //// plus - panel.add(new JLabel(trans.get("FreeformFinSetCfg.lbl.plus")), "right"); - - final DoubleModel axialOffsetModel = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - final JSpinner axialOffsetSpinner = new JSpinner(axialOffsetModel.getSpinnerModel()); - axialOffsetSpinner.setEditor(new SpinnerEditor(axialOffsetSpinner)); - panel.add(axialOffsetSpinner, "growx"); - order.add(((SpinnerEditor) axialOffsetSpinner.getEditor()).getTextField()); - - panel.add(new UnitSelector(axialOffsetModel), "growx"); - panel.add(new BasicSlider(axialOffsetModel.getSliderModel(new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), new DoubleModel(component.getParent(), "Length"))), "w 150lp, wrap"); - - axialMethodCombo.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - axialOffsetModel.stateChanged(new EventObject(e)); - } - }); - } - - mainPanel.add(panel, "aligny 0"); - mainPanel.add(new JSeparator(SwingConstants.VERTICAL), "growy, height 150lp"); - - - panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); - - { //// Cross section //// Fin cross section: panel.add(new JLabel(trans.get("FreeformFinSetCfg.lbl.FincrossSection")), "span, split"); @@ -221,17 +166,50 @@ public class FreeformFinSetConfig extends FinSetConfig { order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(0, 0.01)), "w 150lp, wrap 30lp"); + panel.add(new BasicSlider(m.getSliderModel(0, 0.01)), "w 100lp, wrap 30lp"); + } + + mainPanel.add(panel, "aligny 0, gapright 50lp"); + + // Separator + //mainPanel.add(new JSeparator(SwingConstants.VERTICAL), "growy, gapx 20lp 20lp"); + + + // Right side panel + panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::]", "")); + + { //// Root fillets + panel.add(filletMaterialPanel(), "span, grow, wrap"); } { //// Material MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.BULK, order); - panel.add(materialPanel, "span, wrap"); + panel.add(materialPanel, "span, grow, wrap"); + } - panel.add(filletMaterialPanel(), "span, wrap"); + {//// -------- Placement ------ + //// Position relative to: + JPanel placementPanel = new PlacementPanel(component, order); + panel.add(placementPanel, "span, grow"); + + {//// Fin rotation + JLabel label = new JLabel(trans.get("FinSetCfg.lbl.FinRotation")); + label.setToolTipText(trans.get("FinSetCfg.lbl.FinRotation.ttip")); + placementPanel.add(label, "newline"); + + DoubleModel m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE); + + JSpinner spin = new JSpinner(m.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + placementPanel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + + placementPanel.add(new UnitSelector(m), "growx"); + placementPanel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 100lp, wrap"); + } } - mainPanel.add(panel, "aligny 20%"); + mainPanel.add(panel, "aligny 0"); return mainPanel; } @@ -411,7 +389,7 @@ public class FreeformFinSetConfig extends FinSetConfig { chooser.setCurrentDirectory(((SwingPreferences) Application.getPreferences()).getDefaultDirectory()); JPanel desc = new JPanel(new MigLayout("fill, ins 0 para 0 para")); - desc.add(new DescriptionArea(trans.get("CustomFinImport.description"), 5, 0), "grow, wmin 150lp"); + desc.add(new DescriptionArea(trans.get("CustomFinImport.description"), 5, 0), "grow, wmin 100lp"); chooser.setAccessory(desc); int option = chooser.showOpenDialog(this); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java index cad3561b9..833e1ee74 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java @@ -19,12 +19,13 @@ import java.util.List; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JCheckBox; -import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JSeparator; import javax.swing.JSpinner; +import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.border.BevelBorder; @@ -34,7 +35,6 @@ import net.sf.openrocket.gui.Resettable; import net.sf.openrocket.gui.SpinnerEditor; import net.sf.openrocket.gui.adaptors.CustomFocusTraversalPolicy; import net.sf.openrocket.gui.adaptors.DoubleModel; -import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.DescriptionArea; import net.sf.openrocket.gui.components.UnitSelector; @@ -47,7 +47,6 @@ import net.sf.openrocket.rocketcomponent.InnerTube; import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.RingComponent; import net.sf.openrocket.rocketcomponent.RocketComponent; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.BugException; @@ -63,12 +62,14 @@ public class InnerTubeConfig extends RocketComponentConfig { public InnerTubeConfig(OpenRocketDocument d, RocketComponent c, JDialog parent) { super(d, c, parent); - //// General and General properties - JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][15lp]", "")); + JPanel mainPanel = new JPanel(new MigLayout()); + + //// Left panel + JPanel panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::][]")); DoubleModel m; JSpinner spin; - DoubleModel od = null; + DoubleModel od; //// ---------------------------- Attributes ---------------------------- @@ -77,7 +78,6 @@ public class InnerTubeConfig extends RocketComponentConfig { //// OuterRadius od = new DoubleModel(component, "OuterRadius", 2, UnitGroup.UNITS_LENGTH, 0); - // Diameter = 2*Radius spin = new JSpinner(od.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); @@ -85,7 +85,7 @@ public class InnerTubeConfig extends RocketComponentConfig { order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(od), "growx"); - panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)), "growx, wrap"); + panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)), "w 100lp, wrap"); if (od.isAutomaticAvailable()) { JCheckBox check = new JCheckBox(od.getAutomaticAction()); @@ -106,7 +106,7 @@ public class InnerTubeConfig extends RocketComponentConfig { order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(new DoubleModel(0), od)), "growx, wrap"); + panel.add(new BasicSlider(m.getSliderModel(new DoubleModel(0), od)), "w 100lp, wrap"); if (m.isAutomaticAvailable()) { JCheckBox check = new JCheckBox(m.getAutomaticAction()); @@ -128,7 +128,7 @@ public class InnerTubeConfig extends RocketComponentConfig { order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(0, 0.01)), "growx, wrap"); + panel.add(new BasicSlider(m.getSliderModel(0, 0.01)), "w 100lp, wrap"); //// Inner tube length @@ -144,46 +144,26 @@ public class InnerTubeConfig extends RocketComponentConfig { order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 1.0)), "growx, wrap"); + panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 1.0)), "w 100lp, wrap"); + + mainPanel.add(panel, "aligny 0, gapright 40lp"); + + // Separator + //mainPanel.add(new JSeparator(SwingConstants.VERTICAL), "growy, gapx 10lp 10lp"); + + //// Right side of panel ---- + panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::][]")); //// Material MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.BULK, order); - panel.add(materialPanel, "spanx 4, growx, wrap 15lp"); - - - //// Right side of panel ---- - JPanel panel2 = new JPanel(new MigLayout("gap rel unrel, insets 0", "[][65lp::][30lp::][15lp]", "")); - panel.add(panel2, "cell 4 0, gapleft 15lp, aligny 0%, spany"); + panel.add(materialPanel, "span, grow, wrap"); //// ---------------------------- Placement ---------------------------- + panel.add(new PlacementPanel(component, order), "span, grow"); - //// Position relative to: - panel2.add(new JLabel(trans.get("ringcompcfg.Positionrelativeto"))); + mainPanel.add(panel, "aligny 0"); - JComboBox combo = new JComboBox( new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods )); - panel2.add(combo, "spanx 3, growx, wrap"); - order.add(combo); - - //// plus - panel2.add(new JLabel(trans.get("ringcompcfg.plus")), "right"); - - //// PositionValue - m = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - panel2.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - panel2.add(new UnitSelector(m), "growx"); - panel2.add(new BasicSlider(m.getSliderModel( - new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), - new DoubleModel(component.getParent(), "Length"))), - "growx, wrap"); - - - - - tabbedPane.insertTab(trans.get("ThicknessRingCompCfg.tab.General"), null, panel, + tabbedPane.insertTab(trans.get("ThicknessRingCompCfg.tab.General"), null, mainPanel, trans.get("ThicknessRingCompCfg.tab.Generalprop"), 0); MotorConfig motorConfig = new MotorConfig((MotorMount)c, order); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java index 777cd17ca..ae593e646 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java @@ -1,30 +1,26 @@ package net.sf.openrocket.gui.configdialog; -import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JSeparator; import javax.swing.JSpinner; +import javax.swing.SwingConstants; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.gui.SpinnerEditor; import net.sf.openrocket.gui.adaptors.CustomFocusTraversalPolicy; import net.sf.openrocket.gui.adaptors.DoubleModel; -import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.RocketComponent; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - @SuppressWarnings("serial") public class LaunchLugConfig extends RocketComponentConfig { @@ -33,10 +29,10 @@ public class LaunchLugConfig extends RocketComponentConfig { public LaunchLugConfig(OpenRocketDocument d, RocketComponent c, JDialog parent) { super(d, c, parent); - JPanel primary = new JPanel(new MigLayout("fill")); + JPanel primary = new JPanel(new MigLayout()); - JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", "")); + JPanel panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::][]", "")); //// Body tube length //// Length: @@ -98,62 +94,39 @@ public class LaunchLugConfig extends RocketComponentConfig { order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(0, 0.01)), "w 100lp, wrap 20lp"); + panel.add(new BasicSlider(m.getSliderModel(0, 0.01)), "w 100lp, wrap"); - - //// Radial position: - panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Angle"))); - - m = new DoubleModel(component, "AngleOffset", UnitGroup.UNITS_ANGLE, -180, 180); - - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - panel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI) ), "w 100lp, wrap"); - - // finish up the left column - primary.add(panel, "grow, gapright 20lp"); - - // create a new panel for the right column - panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", "")); + primary.add(panel, "grow, gapright 40lp"); - //// Position relative to: - panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Posrelativeto"))); - EnumModel positionModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); - JComboBox positionCombo = new JComboBox( positionModel ); - panel.add(positionCombo, "spanx, growx, wrap"); - order.add(positionCombo); - - //// plus - final DoubleModel mAxOff = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.plus")), "right"); - spin = new JSpinner(mAxOff.getSpinnerModel()); // Plus quantity input - spin.setEditor(new SpinnerEditor(spin)); - panel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - panel.add(new UnitSelector(mAxOff), "growx"); // Unity selection - panel.add(new BasicSlider(mAxOff.getSliderModel( // Plus quantity slider - new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), - new DoubleModel(component.getParent(), "Length"))), - "w 100lp, wrap para"); + // Separator + //primary.add(new JSeparator(SwingConstants.VERTICAL), "growy, gapx 20lp 20lp"); + + // Right panel + panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::][]", "")); - // Add an action listener to update the plus quantity, based on the selected reference point - positionCombo.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - mAxOff.stateChanged(e); - } - }); - //// Material MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.BULK, order); - panel.add(materialPanel, "span, wrap"); - - + panel.add(materialPanel, "span, grow, wrap"); + + {//// Placement + //// Position relative to: + JPanel placementPanel = new PlacementPanel(component, order); + panel.add(placementPanel, "span, grow, wrap"); + + //// Rotation: + placementPanel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Angle")), "newline"); + + m = new DoubleModel(component, "AngleOffset", UnitGroup.UNITS_ANGLE, -Math.PI, Math.PI); + + spin = new JSpinner(m.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + placementPanel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + + placementPanel.add(new UnitSelector(m), "growx"); + placementPanel.add(new BasicSlider(m.getSliderModel()), "w 100lp, wrap"); + } + primary.add(panel, "grow"); //// General and General properties diff --git a/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java index f41d9747d..ae8413ba6 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java @@ -22,7 +22,6 @@ import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.MassComponent; import net.sf.openrocket.rocketcomponent.RocketComponent; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.gui.widgets.SelectColorButton; @@ -126,32 +125,12 @@ public class MassComponentConfig extends RocketComponentConfig { //// Right side JPanel panel2 = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::]", "")); - panel.add(panel2, "cell 4 0, gapleft paragraph, aligny 0%, spany"); + panel.add(panel2, "cell 4 0, gapleft 40lp, aligny 0%, spany"); // Placement - //// Position relative to: - panel2.add(new JLabel(trans.get("MassComponentCfg.lbl.PosRelativeto"))); - - final EnumModel methodModel = new EnumModel<>(component, "AxialMethod", AxialMethod.axialOffsetMethods ); - final JComboBox methodCombo = new JComboBox<>( methodModel ); - panel2.add(methodCombo, "spanx, growx, wrap"); - order.add(methodCombo); - - //// plus - panel2.add(new JLabel(trans.get("MassComponentCfg.lbl.plus")), "right"); - - m = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - panel2.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - panel2.add(new UnitSelector(m), "growx"); - panel2.add(new BasicSlider(m.getSliderModel( - new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), - new DoubleModel(component.getParent(), "Length"))), - "w 100lp, wrap"); + //// Position + panel2.add(new PlacementPanel(component, order), "span, grow, wrap"); //// General and General properties diff --git a/swing/src/net/sf/openrocket/gui/configdialog/MaterialPanel.java b/swing/src/net/sf/openrocket/gui/configdialog/MaterialPanel.java index e5cd60c61..58ac53ba3 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/MaterialPanel.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/MaterialPanel.java @@ -11,11 +11,13 @@ import net.sf.openrocket.rocketcomponent.ExternalComponent; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.startup.Application; +import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; -import java.awt.*; +import javax.swing.border.EmptyBorder; +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Iterator; @@ -30,71 +32,76 @@ public class MaterialPanel extends JPanel { public MaterialPanel(RocketComponent component, OpenRocketDocument document, Material.Type type, String materialString, String finishString, String partName, List order) { - super(new MigLayout("insets 0")); + super(new MigLayout(component instanceof ExternalComponent ? "" : "ins 0")); + if (component instanceof ExternalComponent) { + this.setBorder(BorderFactory.createTitledBorder(trans.get("MaterialPanel.title.Material"))); + } + JLabel label = new JLabel(materialString); //// The component material affects the weight of the component. - label.setToolTipText(trans.get("RocketCompCfg.lbl.ttip.componentmaterialaffects")); + label.setToolTipText(trans.get("MaterialPanel.lbl.ttip.ComponentMaterialAffects")); this.add(label, "spanx 4, wrap rel"); JComboBox materialCombo = new JComboBox<>(new MaterialModel(this, component, type, partName)); //// The component material affects the weight of the component. - materialCombo.setToolTipText(trans.get("RocketCompCfg.combo.ttip.componentmaterialaffects")); + materialCombo.setToolTipText(trans.get("MaterialPanel.combo.ttip.ComponentMaterialAffects")); this.add(materialCombo, "spanx 4, growx, wrap paragraph"); order.add(materialCombo); - if (component instanceof ExternalComponent) { - label = new JLabel(finishString); - ////The component finish affects the aerodynamic drag of the component.
- String tip = trans.get("RocketCompCfg.lbl.longA1") - //// The value indicated is the average roughness height of the surface. - + trans.get("RocketCompCfg.lbl.longA2"); - label.setToolTipText(tip); - this.add(label, "spanx 4, wmin 220lp, wrap rel"); - - JComboBox finishCombo = new JComboBox( - new EnumModel(component, "Finish")); - finishCombo.setToolTipText(tip); - this.add(finishCombo, "spanx 4, growx, split"); - order.add(finishCombo); - - //// Set for all - JButton button = new SelectColorButton(trans.get("RocketCompCfg.but.Setforall")); - //// Set this finish for all components of the rocket. - button.setToolTipText(trans.get("RocketCompCfg.but.ttip.Setforall")); - button.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - ExternalComponent.Finish f = ((ExternalComponent) component).getFinish(); - try { - document.startUndo("Set rocket finish"); - - // Do changes - Iterator iter = component.getRoot().iterator(); - while (iter.hasNext()) { - RocketComponent c = iter.next(); - if (c instanceof ExternalComponent) { - ((ExternalComponent) c).setFinish(f); - } - } - } finally { - document.stopUndo(); - } - } - }); - this.add(button, "wrap paragraph"); - order.add(button); + if (!(component instanceof ExternalComponent)) { + return; } + label = new JLabel(finishString); + ////The component finish affects the aerodynamic drag of the component.
+ String tip = trans.get("MaterialPanel.lbl.ComponentFinish.ttip.longA1") + //// The value indicated is the average roughness height of the surface. + + trans.get("MaterialPanel.lbl.ComponentFinish.ttip.longA2"); + label.setToolTipText(tip); + this.add(label, "spanx 4, wmin 220lp, wrap rel"); + + JComboBox finishCombo = new JComboBox( + new EnumModel<>(component, "Finish")); + finishCombo.setToolTipText(tip); + this.add(finishCombo, "spanx 4, growx, split"); + order.add(finishCombo); + + //// Set for all + JButton button = new SelectColorButton(trans.get("MaterialPanel.but.SetForAll")); + //// Set this finish for all components of the rocket. + button.setToolTipText(trans.get("MaterialPanel.but.SetForAll.ttip")); + button.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + ExternalComponent.Finish f = ((ExternalComponent) component).getFinish(); + try { + document.startUndo("Set rocket finish"); + + // Do changes + Iterator iter = component.getRoot().iterator(); + while (iter.hasNext()) { + RocketComponent c = iter.next(); + if (c instanceof ExternalComponent) { + ((ExternalComponent) c).setFinish(f); + } + } + } finally { + document.stopUndo(); + } + } + }); + this.add(button); + order.add(button); } public MaterialPanel(RocketComponent component, OpenRocketDocument document, Material.Type type, String partName, List order) { - this(component, document, type, trans.get("RocketCompCfg.lbl.Componentmaterial"), - trans.get("RocketCompCfg.lbl.Componentfinish"), partName, order); + this(component, document, type, trans.get("MaterialPanel.lbl.ComponentMaterial"), + trans.get("MaterialPanel.lbl.ComponentFinish"), partName, order); } public MaterialPanel(RocketComponent component, OpenRocketDocument document, Material.Type type, List order) { - this(component, document, type, trans.get("RocketCompCfg.lbl.Componentmaterial"), - trans.get("RocketCompCfg.lbl.Componentfinish"), "Material", order); + this(component, document, type, trans.get("MaterialPanel.lbl.ComponentMaterial"), + trans.get("MaterialPanel.lbl.ComponentFinish"), "Material", order); } } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java index 558dfd49b..4c6842e77 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java @@ -176,7 +176,7 @@ public class NoseConeConfig extends RocketComponentConfig { //// Material MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.BULK, order); panel2.add(materialPanel, "span, wrap"); - panel.add(panel2, "cell 4 0, gapleft paragraph, aligny 0%, spany"); + panel.add(panel2, "cell 4 0, gapleft 40lp, aligny 0%, spany"); //// General and General properties diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java index 6d5c0596d..df27a48e8 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java @@ -14,7 +14,9 @@ import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JSeparator; import javax.swing.JSpinner; +import javax.swing.SwingConstants; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.document.OpenRocketDocument; @@ -23,7 +25,6 @@ import net.sf.openrocket.gui.adaptors.*; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.HtmlLabel; import net.sf.openrocket.gui.components.StyledLabel; -import net.sf.openrocket.gui.components.StyledLabel.Style; import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.gui.widgets.SelectColorButton; import net.sf.openrocket.l10n.Translator; @@ -32,7 +33,6 @@ import net.sf.openrocket.rocketcomponent.DeploymentConfiguration; import net.sf.openrocket.rocketcomponent.DeploymentConfiguration.DeployEvent; import net.sf.openrocket.rocketcomponent.Parachute; import net.sf.openrocket.rocketcomponent.RocketComponent; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; @@ -47,7 +47,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig { // Left Side JPanel primary = new JPanel(new MigLayout()); - JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", "")); + JPanel panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::][]", "")); // ---------------------------- Canopy ---------------------------- JPanel canopyPanel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]")); @@ -156,141 +156,117 @@ public class ParachuteConfig extends RecoveryDeviceConfig { order.add(shroudMaterialCombo); panel.add(shroudPanel, "spanx, wrap"); - primary.add(panel, "grow"); + primary.add(panel, "grow, gapright 20lp"); + + // Separator + //primary.add(new JSeparator(SwingConstants.VERTICAL), "growy, gapx 10lp 10lp"); // Right side - panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", "")); + panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::][]", "")); - // ---------------------------- Placement ---------------------------- - JPanel placementPanel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]")); - placementPanel.setBorder(BorderFactory.createTitledBorder(trans.get("ParachuteCfg.lbl.Placement"))); + {// ---------------------------- Placement ---------------------------- + //// Position relative to: + JPanel placementPanel = new PlacementPanel(component, order); + panel.add(placementPanel, "span, grow, wrap"); - //// Position relative to: - placementPanel.add(new JLabel(trans.get("ParachuteCfg.lbl.Posrelativeto"))); - - final EnumModel methodModel = - new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); - JComboBox positionCombo = new JComboBox( methodModel ); - placementPanel.add( positionCombo, "spanx, growx, wrap"); - order.add(positionCombo); - - //// plus - placementPanel.add(new JLabel(trans.get("ParachuteCfg.lbl.plus")), "right"); - - m = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - focusElement = spin; - placementPanel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + //// Packed length: + placementPanel.add(new JLabel(trans.get("ParachuteCfg.lbl.Packedlength")), "newline"); - placementPanel.add(new UnitSelector(m), "growx"); - placementPanel.add(new BasicSlider(m.getSliderModel( - new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), - new DoubleModel(component.getParent(), "Length"))), - "w 150lp, wrap"); - - //// Spatial length - //// Packed length: - placementPanel.add(new JLabel(trans.get("ParachuteCfg.lbl.Packedlength"))); - - m = new DoubleModel(component, "Length", UnitGroup.UNITS_LENGTH, 0); - - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - placementPanel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + m = new DoubleModel(component, "Length", UnitGroup.UNITS_LENGTH, 0); - placementPanel.add(new UnitSelector(m), "growx"); - placementPanel.add(new BasicSlider(m.getSliderModel(0, 0.1, 0.5)), "w 150lp, wrap"); - - - //// Tube diameter - //// Packed diameter: - placementPanel.add(new JLabel(trans.get("ParachuteCfg.lbl.Packeddiam"))); - - final DoubleModel od = new DoubleModel(component, "Radius", 2, UnitGroup.UNITS_LENGTH, 0); - // Diameter = 2*Radius - - spin = new JSpinner(od.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - placementPanel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + spin = new JSpinner(m.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + placementPanel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - placementPanel.add(new UnitSelector(od), "growx"); - placementPanel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)), "w 150lp, wrap"); - - ////// Automatic - JCheckBox checkAutoPackedRadius = new JCheckBox(od.getAutomaticAction()); - checkAutoPackedRadius.setText(trans.get("ParachuteCfg.checkbox.AutomaticPacked")); - checkAutoPackedRadius.setToolTipText(trans.get("ParachuteCfg.checkbox.AutomaticPacked.ttip")); - placementPanel.add(checkAutoPackedRadius, "skip, span 2, wrap"); - order.add(checkAutoPackedRadius); - - panel.add(placementPanel, "spanx, growx, wrap"); + placementPanel.add(new UnitSelector(m), "growx"); + placementPanel.add(new BasicSlider(m.getSliderModel(0, 0.1, 0.5)), "w 100lp, wrap"); - // ---------------------------- Deployment ---------------------------- - JPanel deploymentPanel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]")); - deploymentPanel.setBorder(BorderFactory.createTitledBorder(trans.get("ParachuteCfg.lbl.Deployment"))); + //// Packed diameter: + placementPanel.add(new JLabel(trans.get("ParachuteCfg.lbl.Packeddiam"))); - //// Deploys at: - deploymentPanel.add(new JLabel(trans.get("ParachuteCfg.lbl.Deploysat") + " " + CommonStrings.dagger), ""); - - DeploymentConfiguration deploymentConfig = parachute.getDeploymentConfigurations().getDefault(); - // this issues a warning because EnumModel ipmlements ComboBoxModel without a parameter... - ComboBoxModel deployOptionsModel = - new EnumModel(deploymentConfig, "DeployEvent"); - JComboBox eventCombo = - new JComboBox( deployOptionsModel ); - if( (component.getStageNumber() + 1 ) == d.getRocket().getStageCount() ){ - // This is the bottom stage: Restrict deployment options. - eventCombo.removeItem( DeployEvent.LOWER_STAGE_SEPARATION ); + final DoubleModel od = new DoubleModel(component, "Radius", 2, UnitGroup.UNITS_LENGTH, 0); + + spin = new JSpinner(od.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + placementPanel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + + placementPanel.add(new UnitSelector(od), "growx"); + placementPanel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)), "w 100lp, wrap"); + + ////// Automatic + JCheckBox checkAutoPackedRadius = new JCheckBox(od.getAutomaticAction()); + checkAutoPackedRadius.setText(trans.get("ParachuteCfg.checkbox.AutomaticPacked")); + checkAutoPackedRadius.setToolTipText(trans.get("ParachuteCfg.checkbox.AutomaticPacked.ttip")); + placementPanel.add(checkAutoPackedRadius, "skip, spanx 2"); + order.add(checkAutoPackedRadius); } - eventCombo.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - updateFields(); + + {// ---------------------------- Deployment ---------------------------- + JPanel deploymentPanel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]")); + deploymentPanel.setBorder(BorderFactory.createTitledBorder(trans.get("ParachuteCfg.lbl.Deployment"))); + + //// Deploys at: + deploymentPanel.add(new JLabel(trans.get("ParachuteCfg.lbl.Deploysat") + " " + CommonStrings.dagger), ""); + + DeploymentConfiguration deploymentConfig = parachute.getDeploymentConfigurations().getDefault(); + // this issues a warning because EnumModel ipmlements ComboBoxModel without a parameter... + ComboBoxModel deployOptionsModel = + new EnumModel(deploymentConfig, "DeployEvent"); + JComboBox eventCombo = + new JComboBox(deployOptionsModel); + if ((component.getStageNumber() + 1) == d.getRocket().getStageCount()) { + // This is the bottom stage: Restrict deployment options. + eventCombo.removeItem(DeployEvent.LOWER_STAGE_SEPARATION); } - }); - deploymentPanel.add(eventCombo, "spanx 3, growx, wrap"); - order.add(eventCombo); - - // ... and delay - //// plus - deploymentPanel.add(new JLabel(trans.get("ParachuteCfg.lbl.plusdelay")), "right"); - - m = new DoubleModel(deploymentConfig, "DeployDelay", 0); - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin, 3)); - deploymentPanel.add(spin, "spanx, split"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - //// seconds - deploymentPanel.add(new JLabel(trans.get("ParachuteCfg.lbl.seconds")), "wrap paragraph"); - - //// Altitude: - label = new JLabel(trans.get("ParachuteCfg.lbl.Altitude") + CommonStrings.dagger); - altitudeComponents.add(label); - deploymentPanel.add(label); - - m = new DoubleModel(deploymentConfig, "DeployAltitude", UnitGroup.UNITS_DISTANCE, 0); - - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - altitudeComponents.add(spin); - deploymentPanel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - UnitSelector unit = new UnitSelector(m); - altitudeComponents.add(unit); - deploymentPanel.add(unit, "growx"); - BasicSlider slider = new BasicSlider(m.getSliderModel(100, 1000)); - altitudeComponents.add(slider); - deploymentPanel.add(slider, "w 150lp, wrap"); + eventCombo.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + updateFields(); + } + }); + deploymentPanel.add(eventCombo, "spanx 3, growx, wrap"); + order.add(eventCombo); - deploymentPanel.add(new StyledLabel(CommonStrings.override_description, -1), "spanx, wrap"); + // ... and delay + //// plus + deploymentPanel.add(new JLabel(trans.get("ParachuteCfg.lbl.plusdelay")), "right"); + + m = new DoubleModel(deploymentConfig, "DeployDelay", 0); + spin = new JSpinner(m.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin, 3)); + deploymentPanel.add(spin, "spanx, split"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + + //// seconds + deploymentPanel.add(new JLabel(trans.get("ParachuteCfg.lbl.seconds")), "wrap paragraph"); + + //// Altitude: + label = new JLabel(trans.get("ParachuteCfg.lbl.Altitude") + CommonStrings.dagger); + altitudeComponents.add(label); + deploymentPanel.add(label); + + m = new DoubleModel(deploymentConfig, "DeployAltitude", UnitGroup.UNITS_DISTANCE, 0); + + spin = new JSpinner(m.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + altitudeComponents.add(spin); + deploymentPanel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + UnitSelector unit = new UnitSelector(m); + altitudeComponents.add(unit); + deploymentPanel.add(unit, "growx"); + BasicSlider slider = new BasicSlider(m.getSliderModel(100, 1000)); + altitudeComponents.add(slider); + deploymentPanel.add(slider, "w 100lp, wrap"); + + deploymentPanel.add(new StyledLabel(CommonStrings.override_description, -1), "spanx, wrap"); + + panel.add(deploymentPanel, "spanx, growx, wrap para"); + } - panel.add(deploymentPanel, "spanx, growx, wrap para"); primary.add(panel, "grow"); updateFields(); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/PlacementPanel.java b/swing/src/net/sf/openrocket/gui/configdialog/PlacementPanel.java new file mode 100644 index 000000000..7b1eeae30 --- /dev/null +++ b/swing/src/net/sf/openrocket/gui/configdialog/PlacementPanel.java @@ -0,0 +1,66 @@ +package net.sf.openrocket.gui.configdialog; + +import net.miginfocom.swing.MigLayout; +import net.sf.openrocket.gui.SpinnerEditor; +import net.sf.openrocket.gui.adaptors.DoubleModel; +import net.sf.openrocket.gui.adaptors.EnumModel; +import net.sf.openrocket.gui.components.BasicSlider; +import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.rocketcomponent.position.AxialMethod; +import net.sf.openrocket.startup.Application; +import net.sf.openrocket.unit.UnitGroup; + +import javax.swing.BorderFactory; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JSpinner; +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.EventObject; +import java.util.List; + +/** + * Panel for configuring a component's placement relative to its parent. + */ +public class PlacementPanel extends JPanel { + private static final Translator trans = Application.getTranslator(); + + public PlacementPanel(RocketComponent component, List order) { + super(new MigLayout("gap rel unrel", "[][65lp::][30lp::]")); + this.setBorder(BorderFactory.createTitledBorder(trans.get("PlacementPanel.title.Placement"))); + + this.add(new JLabel(trans.get("PlacementPanel.lbl.PosRelativeTo"))); + + final EnumModel axialMethodModel = new EnumModel<>(component, "AxialMethod", AxialMethod.axialOffsetMethods ); + final JComboBox axialMethodCombo = new JComboBox<>(axialMethodModel); + this.add(axialMethodCombo, "spanx, growx, wrap"); + order.add(axialMethodCombo); + + //// plus + this.add(new JLabel(trans.get("PlacementPanel.lbl.plus")), "right"); + + final DoubleModel axialOffsetModel = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); + final JSpinner axialOffsetSpinner = new JSpinner(axialOffsetModel.getSpinnerModel()); + axialOffsetSpinner.setEditor(new SpinnerEditor(axialOffsetSpinner)); + + this.add(axialOffsetSpinner, "growx"); + order.add(((SpinnerEditor) axialOffsetSpinner.getEditor()).getTextField()); + + axialMethodCombo.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + axialOffsetModel.stateChanged(new EventObject(e)); + } + }); + + this.add(new UnitSelector(axialOffsetModel), "growx"); + this.add(new BasicSlider(axialOffsetModel.getSliderModel( + new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), + new DoubleModel(component.getParent(), "Length"))), + "w 100lp"); + } +} diff --git a/swing/src/net/sf/openrocket/gui/configdialog/RailButtonConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/RailButtonConfig.java index 1133e63d1..9d61245ca 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/RailButtonConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/RailButtonConfig.java @@ -1,24 +1,24 @@ package net.sf.openrocket.gui.configdialog; -import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JSeparator; import javax.swing.JSpinner; +import javax.swing.SwingConstants; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.gui.SpinnerEditor; import net.sf.openrocket.gui.adaptors.CustomFocusTraversalPolicy; import net.sf.openrocket.gui.adaptors.DoubleModel; -import net.sf.openrocket.gui.adaptors.EnumModel; +import net.sf.openrocket.gui.adaptors.IntegerModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.RailButton; import net.sf.openrocket.rocketcomponent.RocketComponent; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; @@ -44,9 +44,9 @@ public class RailButtonConfig extends RocketComponentConfig { private JPanel buttonTab( final RailButton rbc ){ - JPanel primary = new JPanel(new MigLayout("fill")); + JPanel primary = new JPanel(new MigLayout()); - JPanel panel = new JPanel( new MigLayout("gap rel unrel")); + JPanel panel = new JPanel( new MigLayout("gap rel unrel, ins 0")); { //// Outer Diameter @@ -110,53 +110,62 @@ public class RailButtonConfig extends RocketComponentConfig { panel.add(heightSpinner, "growx"); order.add(((SpinnerEditor) heightSpinner.getEditor()).getTextField()); panel.add(new UnitSelector(heightModel), "growx"); - panel.add(new BasicSlider(heightModel.getSliderModel(0, 0.02)), "w 100lp, wrap 20lp"); + panel.add(new BasicSlider(heightModel.getSliderModel(0, 0.02)), "w 100lp, wrap 30lp"); } - { //// Rotation: - panel.add(new JLabel(trans.get("RailBtnCfg.lbl.Angle"))); - DoubleModel angleModel = new DoubleModel(component, "AngleOffset", UnitGroup.UNITS_ANGLE, -180, +180); - JSpinner angleSpinner = new JSpinner( angleModel.getSpinnerModel()); - angleSpinner.setEditor(new SpinnerEditor(angleSpinner)); - panel.add(angleSpinner, "growx"); - order.add(((SpinnerEditor) angleSpinner.getEditor()).getTextField()); - panel.add(new UnitSelector( angleModel), "growx"); - panel.add(new BasicSlider( angleModel.getSliderModel(-Math.PI, Math.PI)), "w 100lp, wrap"); + { //// Instance Count + panel.add(new JLabel(trans.get("RocketCompCfg.lbl.InstanceCount"))); + IntegerModel countModel = new IntegerModel(component, "InstanceCount", 1); + JSpinner countSpinner = new JSpinner( countModel.getSpinnerModel()); + countSpinner.setEditor(new SpinnerEditor(countSpinner)); + panel.add(countSpinner, "growx, wrap rel"); + order.add(((SpinnerEditor) countSpinner.getEditor()).getTextField()); } - primary.add(panel, "grow, gapright 201p"); - panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", "")); - - { //// Position relative to: - panel.add(new JLabel(trans.get("RailBtnCfg.lbl.PosRelativeTo"))); - - final EnumModel methodModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); - JComboBox relToCombo = new JComboBox( methodModel ); - panel.add( relToCombo, "spanx, growx, wrap"); - order.add(relToCombo); + { //// Instance separation + panel.add(new JLabel(trans.get("RocketCompCfg.lbl.InstanceSeparation"))); + DoubleModel separationModel = new DoubleModel(component, "InstanceSeparation", UnitGroup.UNITS_LENGTH); + JSpinner separationSpinner = new JSpinner( separationModel.getSpinnerModel()); + separationSpinner.setEditor(new SpinnerEditor(separationSpinner)); + panel.add(separationSpinner, "growx"); + order.add(((SpinnerEditor) separationSpinner.getEditor()).getTextField()); + panel.add(new UnitSelector(separationModel), "growx"); + double maxSeparationDistance = 0.1; + if (component.getParent() != null && component.getParent().getLength() > 0) { + maxSeparationDistance = component.getParent().getLength(); + } + panel.add(new BasicSlider(separationModel.getSliderModel(0, 0.001, maxSeparationDistance)), "w 100lp, wrap para"); } - { //// plus - panel.add(new JLabel(trans.get("RailBtnCfg.lbl.Plus")), "right"); - DoubleModel offsetModel = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - JSpinner offsetSpinner = new JSpinner(offsetModel.getSpinnerModel()); - offsetSpinner.setEditor(new SpinnerEditor(offsetSpinner)); - focusElement = offsetSpinner; - panel.add(offsetSpinner, "growx"); - order.add(((SpinnerEditor) offsetSpinner.getEditor()).getTextField()); - panel.add(new UnitSelector(offsetModel), "growx"); - panel.add(new BasicSlider(offsetModel.getSliderModel( - new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), - new DoubleModel(component.getParent(), "Length"))), - "w 100lp, wrap para"); - } - //// Instance count/separation - panel.add(instanceablePanel(), "span, wrap"); + primary.add(panel, "grow, gapright 50lp"); + + // Separator + //primary.add(new JSeparator(SwingConstants.VERTICAL), "growy, gapx 20lp 20lp"); + + // Right side panel + panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::][]", "")); //// Material MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.BULK, order); - panel.add(materialPanel,"span, wrap"); + panel.add(materialPanel,"span, grow, wrap"); + + {// -------- Placement ------ + //// Position relative to: + JPanel placementPanel = new PlacementPanel(component, order); + panel.add(placementPanel, "span, grow, wrap"); + + { //// Rotation: + placementPanel.add(new JLabel(trans.get("RailBtnCfg.lbl.Angle")), "newline"); + DoubleModel angleModel = new DoubleModel(component, "AngleOffset", UnitGroup.UNITS_ANGLE, -180, +180); + JSpinner angleSpinner = new JSpinner( angleModel.getSpinnerModel()); + angleSpinner.setEditor(new SpinnerEditor(angleSpinner)); + placementPanel.add(angleSpinner, "growx"); + order.add(((SpinnerEditor) angleSpinner.getEditor()).getTextField()); + placementPanel.add(new UnitSelector(angleModel), "growx"); + placementPanel.add(new BasicSlider(angleModel.getSliderModel(-Math.PI, Math.PI)), "w 100lp"); + } + } primary.add(panel, "grow"); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java index e8126db28..544973dad 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java @@ -2,24 +2,23 @@ package net.sf.openrocket.gui.configdialog; import javax.swing.JCheckBox; -import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JSeparator; import javax.swing.JSpinner; +import javax.swing.SwingConstants; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.gui.SpinnerEditor; import net.sf.openrocket.gui.adaptors.DoubleModel; -import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.ThicknessRingComponent; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; @@ -33,7 +32,9 @@ public class RingComponentConfig extends RocketComponentConfig { protected JPanel generalTab(String outer, String inner, String thickness, String length) { - JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); + JPanel primary = new JPanel(new MigLayout()); + + JPanel panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::]", "")); DoubleModel m; JSpinner spin; DoubleModel od = null; @@ -46,8 +47,7 @@ public class RingComponentConfig extends RocketComponentConfig { //// OuterRadius od = new DoubleModel(component, "OuterRadius", 2, UnitGroup.UNITS_LENGTH, 0); - // Diameter = 2*Radius - + spin = new JSpinner(od.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); @@ -61,7 +61,7 @@ public class RingComponentConfig extends RocketComponentConfig { //// Automatic check.setText(trans.get("ringcompcfg.Automatic")); check.setToolTipText(trans.get("ringcompcfg.AutomaticOuter.ttip")); - panel.add(check, "skip, span 2, wrap"); + panel.add(check, "skip, spanx 2, wrap"); order.add(check); } } @@ -133,43 +133,23 @@ public class RingComponentConfig extends RocketComponentConfig { panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 1.0)), "w 100lp, wrap"); } + primary.add(panel, "grow, gapright 40lp"); + + // Separator + //primary.add(new JSeparator(SwingConstants.VERTICAL), "growy, gapx 10lp 10lp"); + + // Right side panel + JPanel rightSide = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::]", "")); + primary.add(rightSide, "cell 4 0, aligny 0, spany"); + //// Material MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.BULK, order); - panel.add(materialPanel, "gaptop 20lp, spanx 4, growx, wrap"); + rightSide.add(materialPanel, "span, grow, wrap"); - //// Placement ---- - JPanel positionPanel = new JPanel(new MigLayout("gap rel unrel, insets 0", "[][65lp::][30lp::]", "")); + //// Position + rightSide.add(new PlacementPanel(component, order), "span, grow"); - //// Position relative to: - positionPanel.add(new JLabel(trans.get("ringcompcfg.Positionrelativeto"))); - - final EnumModel methodModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); - final JComboBox positionCombo = new JComboBox( methodModel ); - positionPanel.add(positionCombo, "spanx 3, growx, wrap"); - order.add(positionCombo); - - //// plus - positionPanel.add(new JLabel(trans.get("ringcompcfg.plus")), "right"); - - //// PositionValue - m = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - if (!(component instanceof ThicknessRingComponent)) { - focusElement = spin; - } - positionPanel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - positionPanel.add(new UnitSelector(m), "growx"); - positionPanel.add(new BasicSlider(m.getSliderModel( - new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), - new DoubleModel(component.getParent(), "Length"))), - "w 100lp, wrap"); - - panel.add(positionPanel, "cell 4 0, gapleft paragraph, aligny 0%, spany"); - - return panel; + return primary; } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java index 32c214c9a..c7b12c99d 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java @@ -464,34 +464,6 @@ public class RocketComponentConfig extends JPanel { } } - protected JPanel instanceablePanel() { - JPanel panel = new JPanel( new MigLayout("fill, insets 0") ); - { // Instance Count - panel.add(new JLabel(trans.get("RocketCompCfg.lbl.InstanceCount"))); - IntegerModel countModel = new IntegerModel(component, "InstanceCount", 1); - JSpinner countSpinner = new JSpinner( countModel.getSpinnerModel()); - countSpinner.setEditor(new SpinnerEditor(countSpinner)); - panel.add(countSpinner, "w 100lp, wrap rel"); - order.add(((SpinnerEditor) countSpinner.getEditor()).getTextField()); - } - - { // Instance separation - panel.add(new JLabel(trans.get("RocketCompCfg.lbl.InstanceSeparation"))); - DoubleModel separationModel = new DoubleModel(component, "InstanceSeparation", UnitGroup.UNITS_LENGTH); - JSpinner separationSpinner = new JSpinner( separationModel.getSpinnerModel()); - separationSpinner.setEditor(new SpinnerEditor(separationSpinner)); - panel.add(separationSpinner, "growx"); - order.add(((SpinnerEditor) separationSpinner.getEditor()).getTextField()); - panel.add(new UnitSelector(separationModel), "growx"); - double maxSeparationDistance = 0.1; - if (component.getParent() != null && component.getParent().getLength() > 0) { - maxSeparationDistance = component.getParent().getLength(); - } - panel.add(new BasicSlider(separationModel.getSliderModel(0, 0.001, maxSeparationDistance)), "w 100lp, wrap para"); - } - return panel; - } - private JPanel overrideTab() { JPanel panel = new JPanel(new MigLayout("align 0% 20%, gap rel unrel", "[][65lp::80lp][::20lp][]", "")); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java index e27abec2e..d7f3f2c95 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java @@ -8,7 +8,6 @@ import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.gui.SpinnerEditor; import net.sf.openrocket.gui.adaptors.CustomFocusTraversalPolicy; import net.sf.openrocket.gui.adaptors.DoubleModel; -import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.l10n.Translator; @@ -16,7 +15,6 @@ import net.sf.openrocket.material.Material; import net.sf.openrocket.gui.widgets.SelectColorButton; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.ShockCord; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; @@ -30,16 +28,17 @@ public class ShockCordConfig extends RocketComponentConfig { public ShockCordConfig(OpenRocketDocument d, RocketComponent component, JDialog parent) { super(d, component, parent); - JLabel label; - DoubleModel m; - JSpinner spin; + JPanel primary = new JPanel(new MigLayout()); ////// Left side - JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); + JPanel panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::]", "")); + primary.add(panel, "grow"); + JLabel label; + DoubleModel m; + JSpinner spin; // Attributes - // Cord length //// Shock cord length label = new JLabel(trans.get("ShockCordCfg.lbl.Shockcordlength")); panel.add(label); @@ -52,86 +51,65 @@ public class ShockCordConfig extends RocketComponentConfig { order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(0, 1, 10)), "w 150lp, wrap"); + panel.add(new BasicSlider(m.getSliderModel(0, 1, 10)), "w 100lp, wrap"); // Material //// Shock cord material: MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.LINE, trans.get("ShockCordCfg.lbl.Shockcordmaterial"), null, "Material", order); - panel.add(materialPanel, "spanx 4, wrap"); - + panel.add(materialPanel, "spanx 4, wrap, gapright 40lp"); + // Separator + //primary.add(new JSeparator(SwingConstants.VERTICAL), "growy, gapx 10lp 10lp"); ///// Right side - JPanel panel2 = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); - panel.add(panel2, "cell 4 0, gapleft paragraph, aligny 0%, spany"); - - // Placement + panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::]", "")); + primary.add(panel, "aligny 0%, grow, spany"); - //// Position relative to: - panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.Posrelativeto"))); - - final EnumModel methodModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); - final JComboBox combo = new JComboBox( methodModel ); - panel2.add(combo, "spanx, growx, wrap"); - order.add(combo); - - //// plus - panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.plus")), "right"); - - m = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - focusElement = spin; - panel2.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - panel2.add(new UnitSelector(m), "growx"); - panel2.add(new BasicSlider(m.getSliderModel( - new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), - new DoubleModel(component.getParent(), "Length"))), - "w 150lp, wrap"); - + { // ----------- Placement ---------- + //// Position relative to: + JPanel placementPanel = new PlacementPanel(component, order); + panel.add(placementPanel, "span, grow, wrap"); - //// Spatial length - //// Packed length: - panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.Packedlength"))); - - m = new DoubleModel(component, "Length", UnitGroup.UNITS_LENGTH, 0); - - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - panel2.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - panel2.add(new UnitSelector(m), "growx"); - panel2.add(new BasicSlider(m.getSliderModel(0, 0.1, 0.5)), "w 150lp, wrap"); - + {//// Packed length: + placementPanel.add(new JLabel(trans.get("ShockCordCfg.lbl.Packedlength")), "newline"); - //// Tube diameter - //// Packed diameter: - panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.Packeddiam"))); - - DoubleModel od = new DoubleModel(component, "Radius", 2, UnitGroup.UNITS_LENGTH, 0); - // Diameter = 2*Radius - - spin = new JSpinner(od.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - panel2.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - panel2.add(new UnitSelector(od), "growx"); - panel2.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)), "w 150lp, wrap"); + m = new DoubleModel(component, "Length", UnitGroup.UNITS_LENGTH, 0); + + spin = new JSpinner(m.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + placementPanel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + + placementPanel.add(new UnitSelector(m), "growx"); + placementPanel.add(new BasicSlider(m.getSliderModel(0, 0.1, 0.5)), "w 100lp, wrap"); + } + + + {//// Packed diameter: + placementPanel.add(new JLabel(trans.get("ShockCordCfg.lbl.Packeddiam"))); + + DoubleModel od = new DoubleModel(component, "Radius", 2, UnitGroup.UNITS_LENGTH, 0); + spin = new JSpinner(od.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + placementPanel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + + placementPanel.add(new UnitSelector(od), "growx"); + placementPanel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)), "w 100lp, wrap"); + + ////// Automatic + JCheckBox checkAutoPackedRadius = new JCheckBox(od.getAutomaticAction()); + checkAutoPackedRadius.setText(trans.get("ParachuteCfg.checkbox.AutomaticPacked")); + checkAutoPackedRadius.setToolTipText(trans.get("ParachuteCfg.checkbox.AutomaticPacked.ttip")); + placementPanel.add(checkAutoPackedRadius, "skip, spanx 2, wrap"); + order.add(checkAutoPackedRadius); + } + } - ////// Automatic - JCheckBox checkAutoPackedRadius = new JCheckBox(od.getAutomaticAction()); - checkAutoPackedRadius.setText(trans.get("ParachuteCfg.checkbox.AutomaticPacked")); - checkAutoPackedRadius.setToolTipText(trans.get("ParachuteCfg.checkbox.AutomaticPacked.ttip")); - panel2.add(checkAutoPackedRadius, "skip, span 2, wrap"); - order.add(checkAutoPackedRadius); //// General and General properties - tabbedPane.insertTab(trans.get("ShockCordCfg.tab.General"), null, panel, + tabbedPane.insertTab(trans.get("ShockCordCfg.tab.General"), null, primary, trans.get("ShockCordCfg.tab.ttip.General"), 0); //// Radial position and Radial position configuration tabbedPane.insertTab(trans.get("ShockCordCfg.tab.Radialpos"), null, positionTab(), diff --git a/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java index 998c84f36..3bc02a02b 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java @@ -31,7 +31,6 @@ import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.DeploymentConfiguration; import net.sf.openrocket.rocketcomponent.DeploymentConfiguration.DeployEvent; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.Streamer; import net.sf.openrocket.startup.Application; @@ -45,71 +44,69 @@ public class StreamerConfig extends RecoveryDeviceConfig { super(d, component, parent); Streamer streamer = (Streamer) component; - // Left side JPanel primary = new JPanel(new MigLayout()); - - JPanel panel = new JPanel(new MigLayout()); + + // Left side + JPanel panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::][]")); //// ---------------------------- Attributes ---------------------------- - JPanel attributesPanel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]")); - attributesPanel.setBorder(BorderFactory.createTitledBorder(trans.get("StreamerCfg.lbl.Attributes"))); //// Strip length: - attributesPanel.add(new JLabel(trans.get("StreamerCfg.lbl.Striplength"))); + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Striplength"))); DoubleModel m = new DoubleModel(component, "StripLength", UnitGroup.UNITS_LENGTH, 0); JSpinner spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); - attributesPanel.add(spin, "growx"); + panel.add(spin, "growx"); order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - attributesPanel.add(new UnitSelector(m), "growx"); - attributesPanel.add(new BasicSlider(m.getSliderModel(0, 0.6, 1.5)), "w 150lp, wrap"); + panel.add(new UnitSelector(m), "growx"); + panel.add(new BasicSlider(m.getSliderModel(0, 0.6, 1.5)), "w 150lp, wrap"); //// Strip width: - attributesPanel.add(new JLabel(trans.get("StreamerCfg.lbl.Stripwidth"))); + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Stripwidth"))); m = new DoubleModel(component, "StripWidth", UnitGroup.UNITS_LENGTH, 0); spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); - attributesPanel.add(spin, "growx"); + panel.add(spin, "growx"); order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - attributesPanel.add(new UnitSelector(m), "growx"); - attributesPanel.add(new BasicSlider(m.getSliderModel(0, 0.2)), "w 150lp, wrap 10lp"); + panel.add(new UnitSelector(m), "growx"); + panel.add(new BasicSlider(m.getSliderModel(0, 0.2)), "w 150lp, wrap 10lp"); //// Strip area: - attributesPanel.add(new JLabel(trans.get("StreamerCfg.lbl.Striparea"))); + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Striparea"))); m = new DoubleModel(component, "Area", UnitGroup.UNITS_AREA, 0); spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); - attributesPanel.add(spin, "growx"); + panel.add(spin, "growx"); order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - attributesPanel.add(new UnitSelector(m), "growx"); - attributesPanel.add(new BasicSlider(m.getSliderModel(0, 0.04, 0.25)), "w 150lp, wrap"); + panel.add(new UnitSelector(m), "growx"); + panel.add(new BasicSlider(m.getSliderModel(0, 0.04, 0.25)), "w 150lp, wrap"); //// Aspect ratio: - attributesPanel.add(new JLabel(trans.get("StreamerCfg.lbl.Aspectratio"))); + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Aspectratio"))); m = new DoubleModel(component, "AspectRatio", UnitGroup.UNITS_NONE, 0); spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); - attributesPanel.add(spin, "growx"); + panel.add(spin, "growx"); order.add(((SpinnerEditor) spin.getEditor()).getTextField()); // panel.add(new UnitSelector(m),"growx"); - attributesPanel.add(new BasicSlider(m.getSliderModel(2, 15)), "skip, w 150lp, wrap 10lp"); + panel.add(new BasicSlider(m.getSliderModel(2, 15)), "skip, w 150lp, wrap 10lp"); //// Material: - attributesPanel.add(new JLabel(trans.get("StreamerCfg.lbl.Material"))); + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Material"))); - JComboBox streamerMaterialCombo = new JComboBox(new MaterialModel(attributesPanel, component, + JComboBox streamerMaterialCombo = new JComboBox(new MaterialModel(panel, component, Material.Type.SURFACE)); //// The component material affects the weight of the component. streamerMaterialCombo.setToolTipText(trans.get("StreamerCfg.combo.ttip.MaterialModel")); - attributesPanel.add(streamerMaterialCombo, "spanx 3, growx, wrap 15lp"); + panel.add(streamerMaterialCombo, "spanx 3, growx, wrap 15lp"); order.add(streamerMaterialCombo); // CD @@ -120,97 +117,73 @@ public class StreamerConfig extends RecoveryDeviceConfig { //// "A larger drag coefficient yields a slowed descent rate. trans.get("StreamerCfg.lbl.longB2"); label.setToolTipText(tip); - attributesPanel.add(label); + panel.add(label); m = new DoubleModel(component, "CD", UnitGroup.UNITS_COEFFICIENT, 0); spin = new JSpinner(m.getSpinnerModel()); spin.setToolTipText(tip); spin.setEditor(new SpinnerEditor(spin)); - attributesPanel.add(spin, "growx"); + panel.add(spin, "growx"); order.add(((SpinnerEditor) spin.getEditor()).getTextField()); JCheckBox check = new JCheckBox(m.getAutomaticAction()); //// Automatic check.setText(trans.get("StreamerCfg.lbl.AutomaticCd")); check.setToolTipText(trans.get("StreamerCfg.lbl.AutomaticCd.ttip")); - attributesPanel.add(check, "skip, span, wrap"); + panel.add(check, "skip, span, wrap"); order.add(check); //// The drag coefficient is relative to the area of the streamer. - attributesPanel.add(new StyledLabel(trans.get("StreamerCfg.lbl.longC1"), + panel.add(new StyledLabel(trans.get("StreamerCfg.lbl.longC1"), -1, StyledLabel.Style.ITALIC), "gapleft para, span, wrap"); - - panel.add(attributesPanel, "growx, wrap"); + primary.add(panel, "grow, gapright 20lp"); + + // Separator + //primary.add(new JSeparator(SwingConstants.VERTICAL), "growy, gapx 10lp 10lp"); // Right side - primary.add(panel, "grow"); - panel = new JPanel(new MigLayout()); + panel = new JPanel(new MigLayout("ins 0")); - //// ---------------------------- Placement ---------------------------- - JPanel placementPanel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]")); - placementPanel.setBorder(BorderFactory.createTitledBorder(trans.get("StreamerCfg.lbl.Placement"))); + {//// ---------------------------- Placement ---------------------------- + JPanel placementPanel = new PlacementPanel(component, order); - //// Position relative to: - placementPanel.add(new JLabel(trans.get("StreamerCfg.lbl.Posrelativeto"))); - - final EnumModel methodModel = new EnumModel<>(component, "AxialMethod", AxialMethod.axialOffsetMethods ); - final JComboBox positionCombo = new JComboBox<>( methodModel ); - placementPanel.add( positionCombo, "spanx, growx, wrap"); - order.add(positionCombo); - - //// plus - placementPanel.add(new JLabel(trans.get("StreamerCfg.lbl.plus")), "right"); - - m = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - focusElement = spin; - placementPanel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + //// Packed length: + placementPanel.add(new JLabel(trans.get("StreamerCfg.lbl.Packedlength")), "newline"); - placementPanel.add(new UnitSelector(m), "growx"); - placementPanel.add(new BasicSlider(m.getSliderModel( - new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), - new DoubleModel(component.getParent(), "Length"))), - "w 150lp, wrap"); - - //// Packed length: - placementPanel.add(new JLabel(trans.get("StreamerCfg.lbl.Packedlength"))); - - m = new DoubleModel(component, "Length", UnitGroup.UNITS_LENGTH, 0); - - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - placementPanel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + m = new DoubleModel(component, "Length", UnitGroup.UNITS_LENGTH, 0); - placementPanel.add(new UnitSelector(m), "growx"); - placementPanel.add(new BasicSlider(m.getSliderModel(0, 0.1, 0.5)), "w 150lp, wrap"); - - //// Packed diameter: - placementPanel.add(new JLabel(trans.get("StreamerCfg.lbl.Packeddiam"))); - - DoubleModel od = new DoubleModel(component, "Radius", 2, UnitGroup.UNITS_LENGTH, 0); - spin = new JSpinner(od.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - placementPanel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + spin = new JSpinner(m.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + placementPanel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - placementPanel.add(new UnitSelector(od), "growx"); - placementPanel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)), "w 150lp, wrap"); + placementPanel.add(new UnitSelector(m), "growx"); + placementPanel.add(new BasicSlider(m.getSliderModel(0, 0.1, 0.5)), "w 100lp, wrap"); - ////// Automatic - JCheckBox checkAutoPackedRadius = new JCheckBox(od.getAutomaticAction()); - checkAutoPackedRadius.setText(trans.get("ParachuteCfg.checkbox.AutomaticPacked")); - checkAutoPackedRadius.setToolTipText(trans.get("ParachuteCfg.checkbox.AutomaticPacked.ttip")); - placementPanel.add(checkAutoPackedRadius, "skip, spanx 2"); - order.add(checkAutoPackedRadius); + //// Packed diameter: + placementPanel.add(new JLabel(trans.get("StreamerCfg.lbl.Packeddiam"))); - panel.add(placementPanel, "growx, wrap 15lp"); + DoubleModel od = new DoubleModel(component, "Radius", 2, UnitGroup.UNITS_LENGTH, 0); + spin = new JSpinner(od.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + placementPanel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + placementPanel.add(new UnitSelector(od), "growx"); + placementPanel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)), "w 100lp, wrap"); + + ////// Automatic + JCheckBox checkAutoPackedRadius = new JCheckBox(od.getAutomaticAction()); + checkAutoPackedRadius.setText(trans.get("ParachuteCfg.checkbox.AutomaticPacked")); + checkAutoPackedRadius.setToolTipText(trans.get("ParachuteCfg.checkbox.AutomaticPacked.ttip")); + placementPanel.add(checkAutoPackedRadius, "skip, spanx 2"); + order.add(checkAutoPackedRadius); + + panel.add(placementPanel, "growx, wrap"); + } //// ---------------------------- Deployment ---------------------------- JPanel deploymentPanel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]")); @@ -265,7 +238,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { deploymentPanel.add(unit, "growx"); BasicSlider slider = new BasicSlider(m.getSliderModel(100, 1000)); altitudeComponents.add(slider); - deploymentPanel.add(slider, "w 150lp, wrap"); + deploymentPanel.add(slider, "w 100lp, wrap"); deploymentPanel.add(new StyledLabel(CommonStrings.override_description, -1), "spanx, wrap"); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java index f9050d396..0e95dde39 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java @@ -33,8 +33,7 @@ public class TransitionConfig extends RocketComponentConfig { private static final Translator trans = Application.getTranslator(); private JComboBox typeBox; - //private JLabel description; - + private JLabel shapeLabel; private JSpinner shapeSpinner; private BasicSlider shapeSlider; @@ -194,7 +193,7 @@ public class TransitionConfig extends RocketComponentConfig { //// Material MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.BULK, order); panel2.add(materialPanel, "span, wrap"); - panel.add(panel2, "cell 4 0, gapleft paragraph, aligny 0%, spany"); + panel.add(panel2, "cell 4 0, gapleft 40lp, aligny 0%, spany"); //// General and General properties tabbedPane.insertTab(trans.get("TransitionCfg.tab.General"), null, panel, diff --git a/swing/src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java index a7f449659..72d6e6e9f 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java @@ -1,9 +1,6 @@ package net.sf.openrocket.gui.configdialog; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.EventObject; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; @@ -26,7 +23,6 @@ import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.FinSet; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.TrapezoidFinSet; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; @@ -40,8 +36,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig { JPanel mainPanel = new JPanel(new MigLayout()); - - JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); + // Left side + JPanel panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::]", "")); //// Number of fins: JLabel label = new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Nbroffins")); @@ -58,24 +54,6 @@ public class TrapezoidFinSetConfig extends FinSetConfig { panel.add(finCountSpinner, "growx, wrap"); order.add(((SpinnerEditor) finCountSpinner.getEditor()).getTextField()); - - { /// Base rotation - label = new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Finrotation")); - //// The angle of the first fin in the fin set. - label.setToolTipText(trans.get("TrapezoidFinSetCfg.lbl.ttip.Finrotation")); - panel.add(label); - - final DoubleModel baseRotationModel = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE); - - final JSpinner baseRotationSpinner = new JSpinner(baseRotationModel.getSpinnerModel()); - baseRotationSpinner.setEditor(new SpinnerEditor(baseRotationSpinner)); - panel.add(baseRotationSpinner, "growx"); - order.add(((SpinnerEditor) baseRotationSpinner.getEditor()).getTextField()); - - panel.add(new UnitSelector(baseRotationModel), "growx"); - panel.add(new BasicSlider(baseRotationModel.getSliderModel(-Math.PI, Math.PI)), "w 150lp, wrap"); - } - {//// Fin cant: label = new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Fincant")); //// The angle that the fins are canted with respect to the rocket @@ -91,7 +69,7 @@ public class TrapezoidFinSetConfig extends FinSetConfig { panel.add(new UnitSelector(cantModel), "growx"); panel.add(new BasicSlider(cantModel.getSliderModel(-FinSet.MAX_CANT_RADIANS, FinSet.MAX_CANT_RADIANS)), - "w 150lp, wrap"); + "w 100lp, wrap"); } {//// Root chord: @@ -105,7 +83,7 @@ public class TrapezoidFinSetConfig extends FinSetConfig { order.add(((SpinnerEditor) rootChordSpinner.getEditor()).getTextField()); panel.add(new UnitSelector(rootChordModel), "growx"); - panel.add(new BasicSlider(rootChordModel.getSliderModel(0, 0.05, 0.2)), "w 150lp, wrap"); + panel.add(new BasicSlider(rootChordModel.getSliderModel(0, 0.05, 0.2)), "w 100lp, wrap"); } {//// Tip chord: @@ -119,7 +97,7 @@ public class TrapezoidFinSetConfig extends FinSetConfig { order.add(((SpinnerEditor) tipChordSpinner.getEditor()).getTextField()); panel.add(new UnitSelector(tipChordModel), "growx"); - panel.add(new BasicSlider(tipChordModel.getSliderModel(0, 0.05, 0.2)), "w 150lp, wrap"); + panel.add(new BasicSlider(tipChordModel.getSliderModel(0, 0.05, 0.2)), "w 100lp, wrap"); } {//// Height: @@ -133,7 +111,7 @@ public class TrapezoidFinSetConfig extends FinSetConfig { order.add(((SpinnerEditor) heightSpinner.getEditor()).getTextField()); panel.add(new UnitSelector(heightModel), "growx"); - panel.add(new BasicSlider(heightModel.getSliderModel(0, 0.05, 0.2)), "w 150lp, wrap"); + panel.add(new BasicSlider(heightModel.getSliderModel(0, 0.05, 0.2)), "w 100lp, wrap"); } {//// Sweep length: @@ -151,7 +129,7 @@ public class TrapezoidFinSetConfig extends FinSetConfig { // sweep slider from -1.1*TipChord to 1.1*RootChord DoubleModel tc = new DoubleModel(component, "TipChord", -1.1, UnitGroup.UNITS_LENGTH); DoubleModel rc = new DoubleModel(component, "RootChord", 1.1, UnitGroup.UNITS_LENGTH); - panel.add(new BasicSlider(sweepDistanceModel.getSliderModel(tc, rc)), "w 150lp, wrap"); + panel.add(new BasicSlider(sweepDistanceModel.getSliderModel(tc, rc)), "w 100lp, wrap"); } {//// Sweep angle: @@ -168,59 +146,18 @@ public class TrapezoidFinSetConfig extends FinSetConfig { panel.add(new UnitSelector(sweepAngleModel), "growx"); panel.add(new BasicSlider(sweepAngleModel.getSliderModel(-Math.PI / 4, Math.PI / 4)), - "w 150lp, wrap paragraph"); + "w 100lp, wrap 30lp"); } - {//// Position relative to: - panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Posrelativeto"))); - - final EnumModel axialMethodModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); - final JComboBox axialMethodCombo = new JComboBox( axialMethodModel ); - panel.add(axialMethodCombo, "spanx, growx, wrap"); - order.add(axialMethodCombo); - - //// plus - panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.plus")), "right"); - - final DoubleModel axialOffsetModel = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - final JSpinner axialOffsetSpinner = new JSpinner(axialOffsetModel.getSpinnerModel()); - axialOffsetSpinner.setEditor(new SpinnerEditor(axialOffsetSpinner)); - - panel.add(axialOffsetSpinner, "growx"); - order.add(((SpinnerEditor) axialOffsetSpinner.getEditor()).getTextField()); - - axialMethodCombo.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - axialOffsetModel.stateChanged(new EventObject(e)); - } - }); - - panel.add(new UnitSelector(axialOffsetModel), "growx"); - panel.add(new BasicSlider(axialOffsetModel.getSliderModel( - new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), - new DoubleModel(component.getParent(), "Length"))), - "w 150lp, wrap para"); - - - mainPanel.add(panel, "aligny 0"); - - mainPanel.add(new JSeparator(SwingConstants.VERTICAL), "growy"); - } - - - panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); - - {//// Fin cross section: panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.FincrossSection"))); JComboBox sectionCombo = new JComboBox( - new EnumModel(component, "CrossSection")); + new EnumModel<>(component, "CrossSection")); panel.add(sectionCombo, "span, growx, wrap"); order.add(sectionCombo); + } - - //// Thickness: + { //// Thickness: panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Thickness"))); final DoubleModel thicknessModel = new DoubleModel(component, "Thickness", UnitGroup.UNITS_LENGTH, 0); @@ -231,19 +168,49 @@ public class TrapezoidFinSetConfig extends FinSetConfig { order.add(((SpinnerEditor) thicknessSpinner.getEditor()).getTextField()); panel.add(new UnitSelector(thicknessModel), "growx"); - panel.add(new BasicSlider(thicknessModel.getSliderModel(0, 0.01)), "w 150lp, wrap para"); + panel.add(new BasicSlider(thicknessModel.getSliderModel(0, 0.01)), "w 100lp, wrap para"); } - + + mainPanel.add(panel, "aligny 0, gapright 50lp"); + + // Separator + //mainPanel.add(new JSeparator(SwingConstants.VERTICAL), "growy, gapx 20lp 20lp"); + + // Right side panel + panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::]", "")); + + // Root fillets + panel.add(filletMaterialPanel(), "span, grow, wrap"); //// Material MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.BULK, order); - panel.add(materialPanel, "span, wrap"); - - - - mainPanel.add(panel, "aligny 20%"); - - panel.add(filletMaterialPanel(), "span, wrap"); + panel.add(materialPanel, "span, grow, wrap"); + + {//// -------- Placement ------- + // Position relative to: + JPanel placementPanel = new PlacementPanel(component, order); + panel.add(placementPanel, "span, grow"); + + { /// Fin rotation + label = new JLabel(trans.get("FinSetCfg.lbl.FinRotation")); + label.setToolTipText(trans.get("FinSetCfg.lbl.FinRotation.ttip")); + placementPanel.add(label, "newline"); + + final DoubleModel baseRotationModel = new DoubleModel(component, "BaseRotation", + UnitGroup.UNITS_ANGLE, -Math.PI, Math.PI); + + final JSpinner baseRotationSpinner = new JSpinner(baseRotationModel.getSpinnerModel()); + baseRotationSpinner.setEditor(new SpinnerEditor(baseRotationSpinner)); + placementPanel.add(baseRotationSpinner, "growx"); + order.add(((SpinnerEditor) baseRotationSpinner.getEditor()).getTextField()); + + placementPanel.add(new UnitSelector(baseRotationModel), "growx"); + placementPanel.add(new BasicSlider(baseRotationModel.getSliderModel()), "w 100lp, wrap"); + } + } + + mainPanel.add(panel, "aligny 0"); + //// General and General properties tabbedPane.insertTab(trans.get("TrapezoidFinSetCfg.tab.General"), null, mainPanel, trans.get("TrapezoidFinSetCfg.tab.Generalproperties"), 0); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/TubeFinSetConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/TubeFinSetConfig.java index e0ea77134..27e416aad 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/TubeFinSetConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/TubeFinSetConfig.java @@ -1,29 +1,25 @@ package net.sf.openrocket.gui.configdialog; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.EventObject; import javax.swing.JCheckBox; -import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JSeparator; import javax.swing.JSpinner; +import javax.swing.SwingConstants; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.gui.SpinnerEditor; import net.sf.openrocket.gui.adaptors.CustomFocusTraversalPolicy; import net.sf.openrocket.gui.adaptors.DoubleModel; -import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.adaptors.IntegerModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.RocketComponent; -import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; @@ -34,10 +30,10 @@ public class TubeFinSetConfig extends RocketComponentConfig { public TubeFinSetConfig(OpenRocketDocument d, RocketComponent c, JDialog parent) { super(d, c, parent); - JPanel primary = new JPanel(new MigLayout("fill")); + JPanel primary = new JPanel(new MigLayout()); - JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", "")); + JPanel panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::][]", "")); //// Number of fins panel.add(new JLabel(trans.get("TubeFinSetCfg.lbl.Nbroffins"))); @@ -68,8 +64,7 @@ public class TubeFinSetConfig extends RocketComponentConfig { panel.add(new JLabel(trans.get("TubeFinSetCfg.lbl.Outerdiam"))); DoubleModel od = new DoubleModel(component, "OuterRadius", 2, UnitGroup.UNITS_LENGTH, 0); - // Diameter = 2*Radius - + spin = new JSpinner(od.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); @@ -114,65 +109,43 @@ public class TubeFinSetConfig extends RocketComponentConfig { panel.add(new UnitSelector(m), "growx"); panel.add(new BasicSlider(m.getSliderModel(0, 0.01)), "w 100lp, wrap 20lp"); - - //// Base rotation - //// Fin rotation: - JLabel label = new JLabel(trans.get("TubeFinSetCfg.lbl.Finrotation")); - //// The angle of the first fin in the fin set. - label.setToolTipText(trans.get("TubeFinSetCfg.lbl.ttip.Finrotation")); - panel.add(label); - - m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE); - - spin = new JSpinner(m.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - panel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); - - panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 100lp, wrap"); - - primary.add(panel, "grow, gapright 20lp"); - panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", "")); - - //// Position relative to: - panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Posrelativeto"))); // (note re-uses the label from LaunchLug, because they're the same - - final EnumModel axialMethodModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); - final JComboBox axialMethodCombo = new JComboBox( axialMethodModel ); - panel.add(axialMethodCombo, "spanx, growx, wrap"); - order.add(axialMethodCombo); + primary.add(panel, "grow, gapright 50lp"); - //// plus - panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.plus")), "right"); - - final DoubleModel axialOffsetModel = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); - spin = new JSpinner(axialOffsetModel.getSpinnerModel()); - spin.setEditor(new SpinnerEditor(spin)); - panel.add(spin, "growx"); - order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + // Separator + //primary.add(new JSeparator(SwingConstants.VERTICAL), "growy, gapx 10lp 10lp"); - axialMethodCombo.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - axialOffsetModel.stateChanged(new EventObject(e)); - } - }); - - panel.add(new UnitSelector(axialOffsetModel), "growx"); - panel.add(new BasicSlider(axialOffsetModel.getSliderModel( - new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), - new DoubleModel(component.getParent(), "Length"))), - "w 100lp, wrap para"); - - + // Right side panel + panel = new JPanel(new MigLayout("gap rel unrel, ins 0", "[][65lp::][30lp::][]", "")); //// Material MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.BULK, order); - panel.add(materialPanel, "span, wrap"); - + panel.add(materialPanel, "span, grow, wrap"); + + { //// Placement + //// Position relative to: + JPanel placementPanel = new PlacementPanel(component, order); + panel.add(placementPanel, "span, grow, wrap"); + + //// Fin rotation: + JLabel label = new JLabel(trans.get("TubeFinSetCfg.lbl.Finrotation")); + //// The angle of the first fin in the fin set. + label.setToolTipText(trans.get("TubeFinSetCfg.lbl.ttip.Finrotation")); + placementPanel.add(label, "newline"); + + m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE); + + spin = new JSpinner(m.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + placementPanel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + + placementPanel.add(new UnitSelector(m), "growx"); + placementPanel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 100lp, wrap"); + } + primary.add(panel, "grow"); - + + //// General and General properties tabbedPane.insertTab(trans.get("LaunchLugCfg.tab.General"), null, primary, trans.get("LaunchLugCfg.tab.Generalprop"), 0); diff --git a/swing/src/net/sf/openrocket/gui/preset/PresetEditorDialog.java b/swing/src/net/sf/openrocket/gui/preset/PresetEditorDialog.java index 77b9b687c..3818ebe17 100644 --- a/swing/src/net/sf/openrocket/gui/preset/PresetEditorDialog.java +++ b/swing/src/net/sf/openrocket/gui/preset/PresetEditorDialog.java @@ -314,7 +314,7 @@ public class PresetEditorDialog extends JDialog implements ItemListener { ncFilledCB = new JCheckBox("Filled"); ncPanel.add(ncFilledCB, "cell 1 1"); - JLabel ncMaterialLabel = new JLabel(trans.get("RocketCompCfg.lbl.Componentmaterial")); + JLabel ncMaterialLabel = new JLabel(trans.get("MaterialPanel.lbl.ComponentMaterial")); ncPanel.add(ncMaterialLabel, "cell 0 1,alignx left"); JLabel ncMassLabel = new JLabel(trans.get("RocketCompCfg.lbl.Componentmass"));