Skip to content

Commit

Permalink
Added Toggle Button
Browse files Browse the repository at this point in the history
  • Loading branch information
TomByrne committed Nov 28, 2012
1 parent 75fe8d2 commit 5b0d4c6
Show file tree
Hide file tree
Showing 28 changed files with 373 additions and 168 deletions.
2 changes: 1 addition & 1 deletion FD Project/.build
@@ -1 +1 @@
543
650
7 changes: 3 additions & 4 deletions FD Project/GuiseUI.hxproj
Expand Up @@ -18,16 +18,15 @@
<class path="..\src" />
<class path="..\testSrc" />
<class path="..\..\Composure\src" />
<class path="../bin/cpp/windows/haxe" />
<class path="../bin/cpp/haxe" />
<class path="../bin/flash/haxe" />
</classpaths>
<!-- Build options -->
<build>
<option directives="nme_install_tool&#xA;desktop&#xA;windows&#xA;code_completion" />
<option directives="nme_install_tool&#xA;web&#xA;code_completion" />
<option flashStrict="False" />
<option mainClass="ApplicationMain" />
<option enabledebug="True" />
<option additional="--remap flash:nme" />
<option additional="-swf-version 10.1" />
</build>
<!-- haxelib libraries -->
<haxelib>
Expand Down
4 changes: 2 additions & 2 deletions FDT Project/.hxtypes/proj_0.xml
Expand Up @@ -9407,14 +9407,14 @@
<m n=":autoBuild"><e>'???'</e></m>
</meta>
</class>
<enum path="guise.traits.tags.ControlTags" params="" file="../src/guise/traits/tags/ControlTags.hx">
<enum path="guise.controls.ControlTags" params="" file="../src/guise/traits/tags/ControlTags.hx">
<TextLabelTag/>
<TextInputTag/>
<TextButtonTag/>
<haxe_doc>* ...
* @author Tom Byrne</haxe_doc>
</enum>
<enum path="guise.traits.tags.CoreTags" params="" file="../src/guise/traits/tags/CoreTags.hx">
<enum path="guise.core.CoreTags" params="" file="../src/guise/traits/tags/CoreTags.hx">
<WindowTag/>
<StageTag/>
<CursorTag/>
Expand Down
4 changes: 2 additions & 2 deletions FDT Project/.hxtypes/tmp_proj_0.xml
Expand Up @@ -9407,14 +9407,14 @@
<m n=":autoBuild"><e>'???'</e></m>
</meta>
</class>
<enum path="guise.traits.tags.ControlTags" params="" file="../src/guise/traits/tags/ControlTags.hx">
<enum path="guise.controls.ControlTags" params="" file="../src/guise/traits/tags/ControlTags.hx">
<TextLabelTag/>
<TextInputTag/>
<TextButtonTag/>
<haxe_doc>* ...
* @author Tom Byrne</haxe_doc>
</enum>
<enum path="guise.traits.tags.CoreTags" params="" file="../src/guise/traits/tags/CoreTags.hx">
<enum path="guise.core.CoreTags" params="" file="../src/guise/traits/tags/CoreTags.hx">
<WindowTag/>
<StageTag/>
<CursorTag/>
Expand Down
4 changes: 2 additions & 2 deletions FDT Project/.hxtypes/tmp_proj_2.xml
Expand Up @@ -5637,14 +5637,14 @@
<m n=":autoBuild"><e>'???'</e></m>
</meta>
</class>
<enum path="guise.traits.tags.ControlTags" params="" file="../src/guise/traits/tags/ControlTags.hx">
<enum path="guise.controls.ControlTags" params="" file="../src/guise/traits/tags/ControlTags.hx">
<TextLabelTag/>
<TextInputTag/>
<TextButtonTag/>
<haxe_doc>* ...
* @author Tom Byrne</haxe_doc>
</enum>
<enum path="guise.traits.tags.CoreTags" params="" file="../src/guise/traits/tags/CoreTags.hx">
<enum path="guise.core.CoreTags" params="" file="../src/guise/traits/tags/CoreTags.hx">
<WindowTag/>
<StageTag/>
<CursorTag/>
Expand Down
2 changes: 1 addition & 1 deletion src/guise/Guise.hx
@@ -1,6 +1,6 @@
package guise;
import guise.core.GuiseItem;
import guise.traits.tags.CoreTags;
import guise.core.CoreTags;
import composure.core.ComposeGroup;
import composure.core.ComposeRoot;

Expand Down
2 changes: 2 additions & 0 deletions src/guise/controls/ControlLayers.hx
Expand Up @@ -12,4 +12,6 @@ class ControlLayers

public static var INPUT_TEXT:String = "inputText";

public static var CONTROL_HANDLE:String = "controlHandle";

}
20 changes: 12 additions & 8 deletions src/guise/controls/ControlLogic.hx
@@ -1,14 +1,17 @@
package guise.controls;

import composure.core.ComposeItem;
import guise.traits.tags.ControlTags;
import composure.utilTraits.Furnisher;
import guise.controls.logic.input.MouseOverTrait;
import composure.core.ComposeItem;

import guise.controls.ControlTags;
import guise.controls.data.ISelected;
import guise.controls.logic.states.ButtonStateMapper;
import guise.controls.logic.states.SelectableStateMapper;
import guise.controls.logic.states.FocusStateMapper;
import guise.controls.logic.input.MouseOverTrait;
import guise.controls.logic.input.ButtonClickTrait;
import guise.controls.logic.input.TextInputPrompt;
import guise.controls.logic.states.FocusStateMapper;
import guise.controls.logic.input.ClickToggleSelect;

/**
* @author Tom Byrne
Expand All @@ -20,11 +23,12 @@ class ControlLogic
public static function install(within:ComposeItem):Void
{
var furnisher = new Furnisher(TextButtonTag, [TType(MouseOverTrait), TType(ButtonStateMapper), TType(SelectableStateMapper), TType(ButtonClickTrait)]);
//furnisher.addTrait(TType(TextLabel, [UnlessHas(TextLabel)]));
within.addTrait(furnisher);
Furnisher.fact(function (tag:Dynamic):Void { } );
var furnisher = new Furnisher(TextInputTag, [TType(TextInputPrompt), Furnisher.fact(new FocusStateMapper(ControlLayers.INPUT_TEXT))]);
//furnisher.addTrait(TType(TextLabel, [UnlessHas(TextLabel)]));

furnisher = new Furnisher(TextInputTag, [TType(TextInputPrompt), Furnisher.fact(new FocusStateMapper(ControlLayers.INPUT_TEXT))]);
within.addTrait(furnisher);

furnisher = new Furnisher(ToggleButtonTag, [TType(MouseOverTrait), TType(ButtonStateMapper), TType(SelectableStateMapper), TType(ButtonClickTrait), TType(ClickToggleSelect), TType(Selected, [UnlessHas(ISelected)])]);
within.addTrait(furnisher);
}

Expand Down
@@ -1,4 +1,4 @@
package guise.traits.tags;
package guise.controls;

/**
* ...
Expand All @@ -9,4 +9,5 @@ enum ControlTags {
TextButtonTag;
TextLabelTag;
TextInputTag;
ToggleButtonTag;
}
2 changes: 1 addition & 1 deletion src/guise/controls/logic/input/TextInputPrompt.hx
Expand Up @@ -47,7 +47,7 @@ class TextInputPrompt extends AbstractTrait
public function new(){
super();

addSiblingTrait(new PlatformAccessor(ITextInputAccess, ControlLayers.INPUT_TEXT, onInputAdd, onInputRemove));
addSiblingTrait(new PlatformAccessor(ITextInputAccess, ControlLayers.INPUT_TEXT, onInputAdd, onInputRemove, true));
addSiblingTrait(new PlatformAccessor(IFocusableAccess, ControlLayers.INPUT_TEXT, onFocusAdd, onFocusRemove, true));
}

Expand Down
@@ -1,4 +1,4 @@
package guise.traits.tags;
package guise.core;

/**
* ...
Expand Down
4 changes: 3 additions & 1 deletion src/guise/layer/LayerOrderer.hx
Expand Up @@ -62,7 +62,9 @@ class LayerOrderer extends AbstractTrait
var layer2 = layers[depth2];
var index2 = Lambda.indexOf(sorting, layer2);

if (index2 != -1 && index1 > index2) _layerOrderAccess.swapDepths(layer1, layer2);
if (index2 != -1 && index1 > index2) {
_layerOrderAccess.swapDepths(layer1, layer2);
}

++depth2;
}
Expand Down
9 changes: 6 additions & 3 deletions src/guise/platform/PlatformAccessor.hx
@@ -1,5 +1,6 @@
package guise.platform;
import composure.injectors.Injector;
import composure.injectors.PropInjector;
import composure.traits.AbstractTrait;
import guise.platform.IPlatformAccess;

Expand All @@ -11,7 +12,6 @@ import guise.platform.IPlatformAccess;
class PlatformAccessor<AccessType : IAccessType> extends AbstractTrait
{

@inject({asc:true})
public var platformAccess(default, set_platformAccess):IPlatformAccess;
private function set_platformAccess(value:IPlatformAccess):IPlatformAccess {
if(_injected==null)returnAccess();
Expand Down Expand Up @@ -45,6 +45,7 @@ class PlatformAccessor<AccessType : IAccessType> extends AbstractTrait
if (inject) {
addInjector(new Injector(accessType, onInjectAdd, onInjectRemove));
}
addInjector(new PropInjector(IPlatformAccess, this, "platformAccess", true, false, true));
}
override private function onItemAdd():Void {
super.onItemAdd();
Expand All @@ -60,9 +61,11 @@ class PlatformAccessor<AccessType : IAccessType> extends AbstractTrait
}
private function onInjectAdd(access:AccessType):Void {
super.onItemAdd();
returnAccess();
_injected = access;
onAccessAdd(_injected);
if (access != _access) {
returnAccess();
onAccessAdd(_injected);
}
}
private function onInjectRemove(access:AccessType):Void {
onAccessRemove(_injected);
Expand Down
15 changes: 12 additions & 3 deletions src/guise/platform/html/HtmlPlatformAccess.hx
Expand Up @@ -16,14 +16,14 @@ import guise.platform.types.CoreAccessTypes;
import guise.platform.types.DrawingAccessTypes;
import guise.platform.types.InteractionAccessTypes;
import cmtc.ds.hash.ObjectHash;
import guise.traits.tags.CoreTags;
import guise.core.CoreTags;
import composure.utilTraits.Furnisher;
import guise.platform.nme.core.FrameTicker;
import js.Dom;
import js.Lib;
import guise.platform.html.display.ButtonElementTrait;
import guise.platform.html.display.WindowTrait;
import guise.traits.tags.ControlTags;
import guise.controls.ControlTags;

/**
* ...
Expand Down Expand Up @@ -54,6 +54,7 @@ class HtmlPlatformAccess extends AbsPlatformAccess<ContInfo, LayerInfo>
registerAccess(MouseClickable, [IMouseClickable], getMouseClickAccess, returnMouseClickAccess);

registerLayerAccess(MouseClickable, [IMouseClickable], getMouseClickLayerAccess, returnMouseClickLayerAccess);
registerLayerAccess(InputFocusTrait, [IFocusableAccess], getFocusableAccess, returnFocusableAccess);
}
private function getWindow(tag:CoreTags):WindowTrait {
if (_window==null) {
Expand All @@ -79,7 +80,7 @@ class HtmlPlatformAccess extends AbsPlatformAccess<ContInfo, LayerInfo>
cont.elementType = "input";
cont.domElement.setAttribute("type", "text");
cont.trait.setAllowSizing(true);
return [new TextLabelTrait(cont.domElement), new InputFocusTrait(cont.domElement), new TextInputPrompt()];
return [new TextLabelTrait(cont.domElement), new TextInputPrompt()];
}
private function getMouseClickAccess(cont:ContInfo):MouseClickable {
return new MouseClickable(cont.domElement);
Expand All @@ -95,6 +96,14 @@ class HtmlPlatformAccess extends AbsPlatformAccess<ContInfo, LayerInfo>
private function returnMouseClickLayerAccess(layer:LayerInfo, access:MouseClickable):Void {
access.domElement = null;
}
private function getFocusableAccess(layer:LayerInfo):InputFocusTrait{
var access:InputFocusTrait = new InputFocusTrait();
layer.contInfo.context.addTrait(access);
return access;
}
private function returnFocusableAccess(layer:LayerInfo, access:InputFocusTrait):Void {
layer.contInfo.context.removeTrait(access);
}
}
class ContInfo {
// TODO:pooling
Expand Down
32 changes: 25 additions & 7 deletions src/guise/platform/html/display/InputFocusTrait.hx
Expand Up @@ -16,14 +16,32 @@ import js.Dom;
@:build(LazyInst.check())
class InputFocusTrait implements IFocusableAccess
{

private var _domElement:HtmlDom;

public function new(domElement:HtmlDom){
_domElement = domElement;
@inject
private var textTrait(default, set_textTrait):TextLabelTrait;
private function set_textTrait(value:TextLabelTrait):TextLabelTrait {
if (textTrait != null) {
textTrait.domElement.onfocus = null;
textTrait.domElement.onblur = null;
}

this.textTrait = value;

_domElement.onfocus = onFocusIn;
_domElement.onblur = onFocusOut;
var newFoc:Bool;
if (textTrait != null) {
textTrait.domElement.onfocus = onFocusIn;
textTrait.domElement.onblur = onFocusOut;
newFoc = Lib.document.activeElement == textTrait.domElement;
}else {
newFoc = false;
}
if (focused != newFoc) {
this.focused = newFoc;
LazyInst.exec(focusedChanged.dispatch(this));
}
return value;
}

public function new(){
}

private function onFocusIn(e:Event):Void {
Expand Down
5 changes: 4 additions & 1 deletion src/guise/platform/html/display/TextLabelTrait.hx
Expand Up @@ -24,6 +24,10 @@ class TextLabelTrait extends AbstractTrait
}
return value;
}
public var domElement(get_domElement, null):HtmlDom;
private function get_domElement():HtmlDom {
return _domElement;
}


private var _domElement:HtmlDom;
Expand All @@ -34,7 +38,6 @@ class TextLabelTrait extends AbstractTrait
}

private function onTextChanged(from:ITextLabel):Void {
trace("onTextChanged: "+from.text);
_domElement.innerHTML = from.text;
}
}
17 changes: 2 additions & 15 deletions src/guise/platform/nme/NmePlatformAccess.hx
Expand Up @@ -25,7 +25,7 @@ import cmtc.ds.hash.ObjectHash;
import guise.platform.nme.input.KeyboardAccess;
import guise.platform.nme.display.FilterableAccess;
import guise.platform.nme.display.StageTrait;
import guise.traits.tags.CoreTags;
import guise.core.CoreTags;
import composure.utilTraits.Furnisher;
import guise.platform.nme.core.FrameTicker;

Expand Down Expand Up @@ -290,17 +290,4 @@ class LayerInfo{
filterable.displayObject = value;
}
}
}
/*import guise.platform.nme.display.DisplaySkin;
class DisplaySkinSettable extends DisplaySkin {
public function new(?displayObject:DisplayObject) {
super(displayObject);
}
override public function setDisplayObject(displayObject:DisplayObject):Void {
super.setDisplayObject(displayObject);
}
override private function assumeDisplayObject():Void {
//ignore
}
}*/
}
2 changes: 1 addition & 1 deletion src/guise/platform/nme/input/TextAccess.hx
Expand Up @@ -55,7 +55,7 @@ class TextAccess implements ITextInputAccess, implements ITextOutputAccess
}
}
public var inputEnabled(default, set_inputEnabled):Bool;
private function set_inputEnabled(value:Bool):Bool{
private function set_inputEnabled(value:Bool):Bool {
_textField.type = value?TextFieldType.INPUT:TextFieldType.DYNAMIC;
inputEnabled = value;
return value;
Expand Down
4 changes: 2 additions & 2 deletions src/guise/platform/waxe/WaxePlatformAccess.hx
Expand Up @@ -17,12 +17,12 @@ import guise.platform.types.CoreAccessTypes;
import guise.platform.types.DrawingAccessTypes;
import guise.platform.types.InteractionAccessTypes;
import cmtc.ds.hash.ObjectHash;
import guise.traits.tags.CoreTags;
import guise.core.CoreTags;
import composure.utilTraits.Furnisher;
import guise.platform.nme.core.FrameTicker;
import guise.platform.waxe.display.TextButtonTrait;
import guise.platform.waxe.display.WindowTrait;
import guise.traits.tags.ControlTags;
import guise.controls.ControlTags;

/**
* ...
Expand Down

0 comments on commit 5b0d4c6

Please sign in to comment.