@@ -53,6 +53,10 @@ THE SOFTWARE.
5353 import ob.settings.ObjectBuilderSettings;
5454
5555 import otlib.assets.Assets;
56+ import ob.components.HotkeyEditorRow;
57+ import ob.hotkeys.HotkeyDefinition;
58+ import ob.hotkeys.HotkeyManager;
59+ import spark.components.Label;
5660
5761 //--------------------------------------------------------------------------
5862 // PROPERTIES
@@ -62,6 +66,7 @@ THE SOFTWARE.
6266 private var _settingsChanged:Boolean;
6367 private var _detail:uint = DialogDetail.CANCEL;
6468 private var _languages:ArrayCollection;
69+ private var _hotkeyManager:HotkeyManager;
6570
6671 //--------------------------------------
6772 // Getters / Setters
@@ -82,6 +87,18 @@ THE SOFTWARE.
8287
8388 public function get detail():uint { return _detail; }
8489
90+ public function get hotkeyManager():HotkeyManager { return _hotkeyManager; }
91+ public function set hotkeyManager(value:HotkeyManager):void
92+ {
93+ if (_hotkeyManager == value)
94+ return;
95+
96+ _hotkeyManager = value;
97+
98+ if (initialized)
99+ rebuildHotkeyRows();
100+ }
101+
85102 //--------------------------------------------------------------------------
86103 // METHODS
87104 //--------------------------------------------------------------------------
@@ -103,6 +120,42 @@ THE SOFTWARE.
103120 }
104121 }
105122
123+ private function rebuildHotkeyRows():void
124+ {
125+ if (!hotkeyContainer)
126+ return;
127+
128+ hotkeyContainer.removeAllElements();
129+
130+ if (!_hotkeyManager)
131+ return;
132+
133+ var definitions:Array = _hotkeyManager.definitions;
134+ var currentCategory:String = null;
135+
136+ for each (var definition:HotkeyDefinition in definitions)
137+ {
138+ if (!definition)
139+ continue;
140+
141+ if (currentCategory != definition.category)
142+ {
143+ currentCategory = definition.category;
144+
145+ var header:Label = new Label();
146+ header.text = currentCategory;
147+ header.setStyle("fontWeight", "bold");
148+ hotkeyContainer.addElement(header);
149+ }
150+
151+ var row:HotkeyEditorRow = new HotkeyEditorRow();
152+ row.percentWidth = 100;
153+ row.definition = definition;
154+ row.hotkeyManager = _hotkeyManager;
155+ hotkeyContainer.addElement(row);
156+ }
157+ }
158+
106159 //--------------------------------------
107160 // Private
108161 //--------------------------------------
@@ -182,6 +235,7 @@ THE SOFTWARE.
182235 focusManager.showFocus();
183236
184237 setSettings(_settings);
238+ rebuildHotkeyRows();
185239 }
186240
187241 protected function confirmButtonClickHandler(event:MouseEvent):void
@@ -330,6 +384,18 @@ THE SOFTWARE.
330384 </mg : GroupBox >
331385
332386 </s : NavigatorContent >
387+
388+ <s : NavigatorContent label =" @Resource(key='hotkeys', bundle='strings')"
389+ width =" 100%" height =" 100%" >
390+ <s : layout >
391+ <s : VerticalLayout padding =" 10" paddingTop =" 20" />
392+ </s : layout >
393+ <s : Scroller width =" 100%" height =" 100%" >
394+ <s : VGroup id =" hotkeyContainer"
395+ width =" 100%"
396+ gap =" 10" />
397+ </s : Scroller >
398+ </s : NavigatorContent >
333399 </mx : ViewStack >
334400
335401 <s : BorderContainer width =" 100%" skinClass =" com.mignari.skins.PixeledBorderContainerSkin" >
0 commit comments