Index: Dev/trunk/src/client/qed-client/model/widgets/QuestionEditorToolkit.js
===================================================================
--- Dev/trunk/src/client/qed-client/model/widgets/QuestionEditorToolkit.js	(revision 501)
+++ Dev/trunk/src/client/qed-client/model/widgets/QuestionEditorToolkit.js	(revision 502)
@@ -1,10 +1,7 @@
 define([
+    "../../widgets/_ComplexValueWidget",
     "../classes/categories",
     "../classes/topics",
     "./CategoryListView",
-    "dijit/_Container",
-    "dijit/_TemplatedMixin",
-    "dijit/_WidgetBase",
-    "dijit/_WidgetsInTemplateMixin",
     "dijit/form/Button",
     "dijit/form/ComboBox",
@@ -16,6 +13,6 @@
     "require",
     "dojo/text!./templates/QuestionEditorToolkit.html"
-], function(categories, topics, CategoryListView, _Container, _TemplatedMixin, _WidgetBase, _WidgetsInTemplateMixin, Button, ComboBox, declare, lang, Source, domConstruct, Memory, require, template) {
-    return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, _Container], {
+], function(_ComplexValueWidget, categories, topics, CategoryListView, Button, ComboBox, declare, lang, Source, domConstruct, Memory, require, template) {
+    return declare([_ComplexValueWidget], {
 
         contextRequire: require,
Index: Dev/trunk/src/client/qed-client/model/widgets/templates/QuestionEditorToolkit.html
===================================================================
--- Dev/trunk/src/client/qed-client/model/widgets/templates/QuestionEditorToolkit.html	(revision 501)
+++ Dev/trunk/src/client/qed-client/model/widgets/templates/QuestionEditorToolkit.html	(revision 502)
@@ -1,3 +1,3 @@
-<div>
+<form>
 	<div data-dojo-type="../../widgets/TitleGroup">
 		<div data-dojo-type="dijit/TitlePane" class="orange" data-dojo-props="open:true" title="Properties" data-dojo-props="iconClass:'rftIcon rftIconProperties'">
@@ -23,3 +23,3 @@
 		</div>
 	</div>
-</div>
+</form>
Index: Dev/trunk/src/client/qed-client/pages/question.js
===================================================================
--- Dev/trunk/src/client/qed-client/pages/question.js	(revision 501)
+++ Dev/trunk/src/client/qed-client/pages/question.js	(revision 502)
@@ -13,5 +13,4 @@
         contextRequire: require,
         templateString: template,
-        _toolkit: null,
         _preview: null,
         classStore: questions,
@@ -19,5 +18,5 @@
             if ( this._started ) { return; }
             this.inherited(arguments);
-            this.own(this.propertiesForm.on('change',lang.hitch(this,'_handlePropertiesChange')));
+            this.own(this.QuestionEditorToolkit.on('change',lang.hitch(this,'_handlePropertiesChange')));
             this.own(this.contentList.on('change',lang.hitch(this,'_handleContentChange')));
             this._load();
@@ -25,8 +24,14 @@
         _refresh: function(initial) {
             if ( initial === true ) {
-                this.propertiesForm.set('value',this.object,null);
+                this.QuestionEditorToolkit.set('value',this.object,null);
                 this.contentList.set('value',this.object.content,null);
             }
             this.titleNode.innerHTML = this.object.title || "";
+            if ( this.object.publicationDate ) {
+                this.QuestionEditorToolkit.set('readOnly',true);
+                this.QuestionEditorToolkit.set('disabled',true);
+                this.contentList.set('readOnly',true);
+                this.contentList.set('disabled',true);
+            }
         },
         _handlePropertiesChange: function() {
@@ -41,6 +46,6 @@
         },
         _updateObject: function() {
-            var pValid = this.propertiesForm.validate();
-            lang.mixin(this.object,this.propertiesForm.get('value'));
+            var pValid = this.QuestionEditorToolkit.validate();
+            lang.mixin(this.object,this.QuestionEditorToolkit.get('value'));
             var cValid = this.contentList.validate();
             this.object.content = this.contentList.get('value');
Index: Dev/trunk/src/client/qed-client/pages/survey.js
===================================================================
--- Dev/trunk/src/client/qed-client/pages/survey.js	(revision 501)
+++ Dev/trunk/src/client/qed-client/pages/survey.js	(revision 502)
@@ -24,4 +24,5 @@
             this._setupListView();
             this.own(this.questionList.on('change',lang.hitch(this,'_handleQuestionsChange')));
+            this.own(this.propertiesForm.on('change',lang.hitch(this,'_handlePropertiesChange')));
             this._load();
         },
@@ -67,4 +68,10 @@
             }
             this.titleNode.innerHTML = this.object.title || "(set title in properties)";
+            if ( this.object.publicationDate ) {
+                this.propertiesForm.set('readOnly',true);
+                this.propertiesForm.set('disabled',true);
+                this.questionList.set('readOnly',true);
+                this.questionList.set('disabled',true);
+            }
         },
         _includeQuestion: function(question) {
@@ -76,22 +83,9 @@
             this._refresh();
         },
-        _onShowProperties: function(evt) {
-            this.propertiesDialog.show();
-            if ( evt ) { event.stop(evt); }
-            return false;
-        },
-        _onPropertiesOk: function(evt) {
-            this.propertiesDialog.hide();
+        _handlePropertiesChange: function() {
             lang.mixin(this.object, this.propertiesForm.get('value').survey);
             this.markDirty();
             this._refresh();
-            if ( evt ) { event.stop(evt); }
-            return false;
-        },
-        _onPropertiesCancel: function(evt) {
-            this.propertiesDialog.hide();
-            this.propertiesForm.set('value',{survey:this.object});
-            if ( evt ) { event.stop(evt); }
-            return false;
+            this.layout();
         },
         _onSave: function(evt) {
@@ -128,4 +122,8 @@
             this.discardBtn.set('label','Close');
             this.inherited(arguments);
+        },
+        _ignore: function(evt) {
+            event.stop(evt);
+            return false;
         }
     });
Index: Dev/trunk/src/client/qed-client/pages/templates/question.html
===================================================================
--- Dev/trunk/src/client/qed-client/pages/templates/question.html	(revision 501)
+++ Dev/trunk/src/client/qed-client/pages/templates/question.html	(revision 502)
@@ -6,32 +6,30 @@
         </h2>
     </div>
-    <form data-dojo-type="dijit/form/Form"
-         data-dojo-props="region:'left'"
-         data-dojo-attach-point="propertiesForm"
-         data-dojo-attach-event="onSubmit:_ignore">
+    <div data-dojo-type="dijit/layout/ContentPane"
+         data-dojo-props="region:'left'">
         <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline'" style="width: 300px;">
-            <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'">
-                <div data-dojo-type="../model/widgets/QuestionEditorToolkit"
-                     data-dojo-attach-point="QuestionEditorToolkitNode"></div>
-            </div>
             <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'">
                 <button data-dojo-type="dijit/form/Button"
-                        data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconAccept'"
+                        data-dojo-props="baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconAccept'"
                         data-dojo-attach-point="saveBtn"
                         data-dojo-attach-event="onClick:_onSave">
                   Save</button>
                 <button data-dojo-type="dijit/form/Button"
-                        data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconAccept'"
+                        data-dojo-props="baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconAccept'"
                         data-dojo-attach-point="saveAndCloseBtn"
                         data-dojo-attach-event="onClick:_onSaveAndClose">
                   Save &amp; Close</button>
                 <button data-dojo-type="dijit/form/Button"
-                        data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconCancel'"
+                        data-dojo-props="baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconCancel'"
                         data-dojo-attach-point="discardBtn"
                         data-dojo-attach-event="onClick:_onDiscard">
                   Discard &amp; Close</button>
             </div>
+            <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'">
+                <div data-dojo-type="../model/widgets/QuestionEditorToolkit"
+                     data-dojo-attach-point="QuestionEditorToolkit"></div>
+            </div>
         </div>
-    </form>
+    </div>
     <div data-dojo-type="../model/widgets/QuestionEditorPreview"
          data-dojo-attach-point="contentList"
Index: Dev/trunk/src/client/qed-client/pages/templates/survey.html
===================================================================
--- Dev/trunk/src/client/qed-client/pages/templates/survey.html	(revision 501)
+++ Dev/trunk/src/client/qed-client/pages/templates/survey.html	(revision 502)
@@ -13,53 +13,40 @@
     
     <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="region:'right'" style="width: 300px">
+      
+        <form data-dojo-type="dijit/form/Form"
+              data-dojo-attach-point="propertiesForm"
+              data-dojo-attach-event="onSubmit:_ignore"
+              data-dojo-props="region:'top'">
+            <fieldset class="qedFieldset">
+                <div data-dojo-type="../model/widgets/SurveyWidget" data-dojo-props="name:'survey'"></div>
+            </fieldset>
+        </form>
+
         <div data-dojo-attach-point="surveyListViewNode" class="rftSurveyListView">
         </div>
 
-        <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'bottom'">
-            <button data-dojo-type="dijit/form/Button"
-                    data-dojo-attach-event="onClick:_onShowProperties"
-                    data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconProperties'">
-                Properties</button>
+        <div data-dojo-type="dijit/layout/ContentPane"
+             data-dojo-props="region:'bottom'">
             <button data-dojo-type="dijit/form/Button"
                     data-dojo-attach-event="onClick:_onSave"
                     data-dojo-attach-point="saveBtn"
-                    data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconAccept'">
+                    data-dojo-props="baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconAccept'">
                 Save</button>
             <button data-dojo-type="dijit/form/Button"
                     data-dojo-attach-event="onClick:_onSaveAndClose"
                     data-dojo-attach-point="saveAndCloseBtn"
-                    data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconAccept'">
+                    data-dojo-props="baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconAccept'">
                 Save &amp; Close</button>
             <button data-dojo-type="dijit/form/Button"
                     data-dojo-attach-event="onClick:_onDiscardAndClose"
                     data-dojo-attach-point="discardBtn"
-                    data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconCancel'">
+                    data-dojo-props="baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconCancel'">
                 Discard &amp; Close</button>
             <button data-dojo-type="dijit/form/Button"
                     data-dojo-attach-event="onClick:_onShowPreview"
-                    data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconPreview'">
+                    data-dojo-props="baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconPreview'">
                 Preview</button>
         </div>
     </div>
 
-    <div data-dojo-type="dijit/Dialog"
-         data-dojo-props="'title':'Survey properties'"
-         data-dojo-attach-point="propertiesDialog">
-        <form data-dojo-type="dijit/form/Form"
-              data-dojo-attach-point="propertiesForm"
-              data-dojo-attach-event="onSubmit:_onPropertiesOk">
-            <fieldset class="qedFieldset">
-                <div data-dojo-type="../model/widgets/SurveyWidget" data-dojo-props="name:'survey'"></div>
-            </fieldset>
-            <button data-dojo-type="dijit/form/Button"
-                    type="submit"
-                    data-dojo-attach-event="onClick:_onPropertiesOk">
-                OK</button>
-            <button data-dojo-type="dijit/form/Button"
-                    type="button"
-                    data-dojo-attach-event="onClick:_onPropertiesCancel">
-                Cancel</button>
-        </form>
-    </div>
-
 </div>
Index: Dev/trunk/src/client/qed-client/widgets/ListWidget.js
===================================================================
--- Dev/trunk/src/client/qed-client/widgets/ListWidget.js	(revision 501)
+++ Dev/trunk/src/client/qed-client/widgets/ListWidget.js	(revision 502)
@@ -23,4 +23,5 @@
          */
         container: Source,
+        _restoreParams: null,
         _onChangeActive: false,
         buildRendering: function() {
@@ -54,4 +55,10 @@
             });
             this.source = new this.container(this.domNode,sourceParams);
+            this._restoreParams = {
+                accept: this.source.accept,
+                selfAccept: this.source.selfAccept,
+                selfCopy: this.source.selfCopy,
+                isSource: this.source.isSource
+            };
             this.own(this.source.on('Drop',
                                     lang.hitch(this,'_handleDrop')));
@@ -112,4 +119,5 @@
                 child.set("disabled", value);
             });
+            this._updateContainer();
         },
         _setReadOnlyAttr: function(value) {
@@ -118,4 +126,15 @@
                 child.set("readOnly", value);
             });
+            this._updateContainer();
+        },
+        _updateContainer: function() {
+            if ( this.disabled || this.readOnly ) {
+                this.source.accept = [];
+                this.source.selfAccept = false;
+                this.source.selfCopy = false;
+                this.source.isSource = false;
+            } else {
+                lang.mixin(this.source,this._restoreParams);
+            }
         },
         focus: function() {
