Skip to content

Commit 231f263

Browse files
committed
step-9 Editors
* Creating an EditorContext
1 parent 5b2d83b commit 231f263

File tree

2 files changed

+96
-5
lines changed

2 files changed

+96
-5
lines changed

.actionScriptProperties

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,20 @@
1717
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/spark.swc" useDefaultLinkType="false"/>
1818
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/sparkskins.swc" useDefaultLinkType="false"/>
1919
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/rpc.swc" useDefaultLinkType="false"/>
20-
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/videoPlayer.swc" useDefaultLinkType="false"/>
21-
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/qtp_air.swc" useDefaultLinkType="false"/>
2220
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/datavisualization.swc" useDefaultLinkType="false"/>
21+
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/qtp_air.swc" useDefaultLinkType="false"/>
22+
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/videoPlayer.swc" useDefaultLinkType="false"/>
2323
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/spark_dmv.swc" useDefaultLinkType="false"/>
2424
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation.swc" useDefaultLinkType="false"/>
25-
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/flash-integration.swc" useDefaultLinkType="false"/>
2625
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_dmv.swc" useDefaultLinkType="false"/>
26+
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/flash-integration.swc" useDefaultLinkType="false"/>
2727
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_flashflexkit.swc" useDefaultLinkType="false"/>
2828
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/automation_agent.swc" useDefaultLinkType="false"/>
2929
</excludedEntries>
3030
</libraryPathEntry>
3131
<libraryPathEntry kind="3" linkType="1" path="/CoreApp/bin/CoreApp.swc" useDefaultLinkType="false"/>
3232
<libraryPathEntry kind="3" linkType="1" path="/CoreEditor/bin/CoreEditor.swc" useDefaultLinkType="false"/>
33+
<libraryPathEntry kind="3" linkType="1" path="/CoreAppEx/bin/CoreAppEx.swc" useDefaultLinkType="false"/>
3334
</libraryPath>
3435
<sourceAttachmentPath/>
3536
</compiler>

src/helloWorld/contexts/StringListContext.as

Lines changed: 92 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,36 @@
11
package helloWorld.contexts
22
{
33
import flash.display.DisplayObject;
4+
import flash.events.Event;
5+
import flash.events.EventDispatcher;
46

7+
import core.app.CoreApp;
8+
import core.app.entities.URI;
9+
import core.app.operations.ReadFileAndDeserializeOperation;
510
import core.appEx.core.contexts.IOperationManagerContext;
6-
import core.appEx.core.contexts.IVisualContext;
11+
import core.appEx.events.OperationManagerEvent;
712
import core.appEx.managers.OperationManager;
13+
import core.appEx.operations.SerializeAndWriteFileOperation;
814
import core.data.ArrayCollection;
15+
import core.editor.CoreEditor;
16+
import core.editor.contexts.IEditorContext;
917

1018
import helloWorld.ui.views.StringListView;
1119

12-
public class StringListContext implements IVisualContext, IOperationManagerContext
20+
[Event( type="flash.events.Event", name="change" )]
21+
22+
public class StringListContext extends EventDispatcher implements IEditorContext, IOperationManagerContext
1323
{
1424
private var _view :StringListView;
1525

1626
private var _dataProvider :ArrayCollection;
1727

1828
private var _operationManager :OperationManager;
1929

30+
private var _uri :URI;
31+
private var _changed :Boolean = false;
32+
protected var _isNewFile :Boolean = false;
33+
2034
public function StringListContext()
2135
{
2236
_view = new StringListView();
@@ -25,6 +39,7 @@ package helloWorld.contexts
2539
_view.dataProvider = _dataProvider;
2640

2741
_operationManager = new OperationManager();
42+
_operationManager.addEventListener(OperationManagerEvent.CHANGE, changeOperationManagerHandler);
2843
}
2944

3045
public function get view():DisplayObject
@@ -34,9 +49,84 @@ package helloWorld.contexts
3449

3550
public function dispose():void
3651
{
52+
_operationManager.removeEventListener(OperationManagerEvent.CHANGE, changeOperationManagerHandler);
3753
_operationManager.dispose();
3854
}
3955

56+
public function enable():void
57+
{
58+
// Do nothing
59+
}
60+
61+
public function disable():void
62+
{
63+
// Do nothing
64+
}
65+
66+
public function publish():void
67+
{
68+
// Do nothing
69+
}
70+
71+
public function save():void
72+
{
73+
var serializeOperation:SerializeAndWriteFileOperation = new SerializeAndWriteFileOperation( _dataProvider, _uri, CoreApp.fileSystemProvider );
74+
CoreEditor.operationManager.addOperation(serializeOperation);
75+
changed = false;
76+
}
77+
78+
public function load():void
79+
{
80+
var deserializeOperation:ReadFileAndDeserializeOperation = new ReadFileAndDeserializeOperation( _uri, CoreApp.fileSystemProvider );
81+
deserializeOperation.addEventListener(Event.COMPLETE, deserializeCompleteHandler);
82+
CoreEditor.operationManager.addOperation(deserializeOperation);
83+
}
84+
85+
private function deserializeCompleteHandler( event:Event ):void
86+
{
87+
var deserializeOperation:ReadFileAndDeserializeOperation = ReadFileAndDeserializeOperation(event.target);
88+
89+
// Handle case where the file on disk is empty. This occurs when we're opening a newly created file.
90+
if ( deserializeOperation.getResult() == null )
91+
{
92+
_dataProvider = new ArrayCollection();
93+
}
94+
else
95+
{
96+
_dataProvider = ArrayCollection( deserializeOperation.getResult() );
97+
}
98+
_view.dataProvider = _dataProvider;
99+
changed = false;
100+
}
101+
102+
public function set uri( value:URI ):void
103+
{
104+
_uri = value;
105+
}
106+
107+
public function get uri():URI { return _uri; }
108+
109+
public function set changed( value:Boolean ):void
110+
{
111+
if ( value == _changed ) return;
112+
_changed = value;
113+
dispatchEvent( new Event( Event.CHANGE) );
114+
}
115+
116+
public function get changed():Boolean { return _changed; }
117+
118+
private function changeOperationManagerHandler( event:OperationManagerEvent ):void
119+
{
120+
changed = true;
121+
}
122+
123+
public function set isNewFile( value:Boolean ):void
124+
{
125+
_isNewFile = value;
126+
}
127+
128+
public function get isNewFile():Boolean { return _isNewFile; }
129+
40130
public function get dataProvider():ArrayCollection { return _dataProvider; }
41131

42132
public function get operationManager():OperationManager { return _operationManager; }

0 commit comments

Comments
 (0)