Author: seba.wagner
Date: Sat Sep 20 04:13:44 2008
New Revision: 1559
Added:
trunk/openmeetings_lps411/modules/conference/whiteboard/resources/pointer.fla
(contents, props changed)
trunk/openmeetings_lps411/modules/conference/whiteboard/resources/pointer.swf
(contents, props changed)
trunk/openmeetings_lps411/modules/conference/whiteboard/resources/pointerWhiteBoard_menu_rsc.fla
(contents, props changed)
trunk/openmeetings_lps411/modules/conference/whiteboard/resources/pointerWhiteBoard_menu_rsc.swf
(contents, props changed)
Modified:
trunk/openmeetings_lps411/base/hibernate/hibRtmpConnection.lzx
trunk/openmeetings_lps411/modules/conference/conference/conferenceView.lzx
trunk/openmeetings_lps411/modules/conference/popups/syncWin.lzx
trunk/openmeetings_lps411/modules/conference/whiteboard/base/baseDraw.lzx
trunk/openmeetings_lps411/modules/conference/whiteboard/base/library.lzx
trunk/openmeetings_lps411/modules/conference/whiteboard/library.lzx
trunk/openmeetings_lps411/modules/conference/whiteboard/newWhiteBoard.lzx
trunk/openmeetings_lps411/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanel.lzx
trunk/openmeetings_lps411/modules/conference/whiteboard/windows/loadWhiteboardWindow.lzx
Log:
Merged r1558 to LPS-4.1.1
Modified: trunk/openmeetings_lps411/base/hibernate/hibRtmpConnection.lzx
==============================================================================
--- trunk/openmeetings_lps411/base/hibernate/hibRtmpConnection.lzx
(original)
+++ trunk/openmeetings_lps411/base/hibernate/hibRtmpConnection.lzx Sat Sep
20 04:13:44 2008
@@ -787,7 +787,8 @@
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("sendSyncFlag: ",value);
if (canvas.syncWindow == null) {
- canvas.syncWindow = new
lz.syncWin(canvas.main_content._content.inner,{labeliderror:554});
+ canvas.syncWindow = new
lz.syncWin(canvas.main_content._content.inner,{
+ labelid:558,labeliderror:559});
}
]]>
</handler>
Modified:
trunk/openmeetings_lps411/modules/conference/conference/conferenceView.lzx
==============================================================================
---
trunk/openmeetings_lps411/modules/conference/conference/conferenceView.lzx
(original)
+++
trunk/openmeetings_lps411/modules/conference/conference/conferenceView.lzx
Sat Sep 20 04:13:44 2008
@@ -89,12 +89,14 @@
Debug.write("isloadedImage: ",val);
</handler>
</whiteBoard>
+ <!--
<view name="currentmainobjectisMod" visible="${ !canvas.ismoderator }"
x="0" y="22" height="$once{ parent.height-22 }" width="$once{
parent.width }" >
<handler name="onclick">
new lz.errorModeratorPopup(canvas,{error:canvas.getLabelName(97)});
</handler>
</view>
+ -->
</class>
<class name="modernWhiteBoardPanel" extends="guiPresenter" x="296" y="2"
Modified: trunk/openmeetings_lps411/modules/conference/popups/syncWin.lzx
==============================================================================
--- trunk/openmeetings_lps411/modules/conference/popups/syncWin.lzx
(original)
+++ trunk/openmeetings_lps411/modules/conference/popups/syncWin.lzx Sat Sep
20 04:13:44 2008
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<library>
-<class name="syncWin" extends="labelExplorerBox" labelid="555"
- docking="true" resizeable="false" closable="false"
- width="$once{ canvas.width/2 - this.width/2 }" x="100" height="240">
-
+<class name="syncWin" extends="labelExplorerBox" labelid="558"
+ docking="true" resizeable="false" closable="false" width="250"
+ x="$once{ canvas.width/2 - this.width/2 }" height="240">
+
<handler name="oninit">
LzModeManager.makeModal(this);
</handler>
Modified:
trunk/openmeetings_lps411/modules/conference/whiteboard/base/baseDraw.lzx
==============================================================================
---
trunk/openmeetings_lps411/modules/conference/whiteboard/base/baseDraw.lzx
(original)
+++
trunk/openmeetings_lps411/modules/conference/whiteboard/base/baseDraw.lzx
Sat Sep 20 04:13:44 2008
@@ -388,88 +388,96 @@
<handler name="onmousedown" >
//Debug.write("onmousedown this.drawmodus: ",this.drawmodus);
-
- if (this.letterObjectIsActive){
- this.currentletterObj.drawtoArray();
- //bool = true;
- }
-
- if(this.drawmodus=="hand"){
- this.doSetHandBodus();
- } else if(this.drawmodus=="paint"){
- this.startPaint();
- mousetracker_del.register(LzIdle,'onidle');
- } else if(this.drawmodus=="line"){
- this.startLine(null);
- this.startx = currentlayer.getMouse('x');
- this.starty = currentlayer.getMouse('y');
- mousetracker_del.register(LzIdle,'onidle');
- } else if(this.drawmodus=="uline"){
- this.startUline(null);
- this.startx = currentlayer.getMouse('x');
- this.starty = currentlayer.getMouse('y');
- mousetracker_del.register(LzIdle,'onidle');
- } else if(this.drawmodus=="drawarrow"){
- this.startDrawarrowline(null);
- this.startx = currentlayer.getMouse('x');
- this.starty = currentlayer.getMouse('y');
- mousetracker_del.register(LzIdle,'onidle');
- } else if (this.drawmodus == 'rectangle') {
- this.startRect(null);
- this.startx = currentlayer.getMouse('x');
- this.starty = currentlayer.getMouse('y');
- mousetracker_del.register(LzIdle,'onidle');
- } else if (this.drawmodus == 'ellipse') {
- this.startEllipse(null);
- this.startx = currentlayer.getMouse('x');
- this.starty = currentlayer.getMouse('y');
- mousetracker_del.register(LzIdle,'onidle');
- } else if (this.drawmodus == 'letter') {
- this.startLetter();
- this.startx = currentlayer.getMouse('x');
- this.starty = currentlayer.getMouse('y');
- mousetracker_del.register(LzIdle,'onidle');
+ if (canvas.ismoderator) {
+ if (this.letterObjectIsActive){
+ this.currentletterObj.drawtoArray();
+ //bool = true;
+ }
+
+ if(this.drawmodus=="hand"){
+ this.doSetHandBodus();
+ } else if(this.drawmodus=="paint"){
+ this.startPaint();
+ mousetracker_del.register(LzIdle,'onidle');
+ } else if(this.drawmodus=="line"){
+ this.startLine(null);
+ this.startx = currentlayer.getMouse('x');
+ this.starty = currentlayer.getMouse('y');
+ mousetracker_del.register(LzIdle,'onidle');
+ } else if(this.drawmodus=="uline"){
+ this.startUline(null);
+ this.startx = currentlayer.getMouse('x');
+ this.starty = currentlayer.getMouse('y');
+ mousetracker_del.register(LzIdle,'onidle');
+ } else if(this.drawmodus=="drawarrow"){
+ this.startDrawarrowline(null);
+ this.startx = currentlayer.getMouse('x');
+ this.starty = currentlayer.getMouse('y');
+ mousetracker_del.register(LzIdle,'onidle');
+ } else if (this.drawmodus == 'rectangle') {
+ this.startRect(null);
+ this.startx = currentlayer.getMouse('x');
+ this.starty = currentlayer.getMouse('y');
+ mousetracker_del.register(LzIdle,'onidle');
+ } else if (this.drawmodus == 'ellipse') {
+ this.startEllipse(null);
+ this.startx = currentlayer.getMouse('x');
+ this.starty = currentlayer.getMouse('y');
+ mousetracker_del.register(LzIdle,'onidle');
+ } else if (this.drawmodus == 'letter') {
+ this.startLetter();
+ this.startx = currentlayer.getMouse('x');
+ this.starty = currentlayer.getMouse('y');
+ mousetracker_del.register(LzIdle,'onidle');
+ }
}
</handler>
<handler name="onmouseup" >
if ($debug) Debug.write("onmouseup
this.drawmodus: ",this.drawmodus);
<![CDATA[
- //var bool = false;
-
- if(this.drawmodus=="paint"){
- this.endPaint();
- mousetracker_del.unregisterAll();
- } else if(this.drawmodus=="line"){
- this.endLine();
- mousetracker_del.unregisterAll();
- } else if(this.drawmodus=="drawarrow"){
- this.endDrawarrowline();
- mousetracker_del.unregisterAll();
- } else if(this.drawmodus=="uline"){
- this.endUline();
- mousetracker_del.unregisterAll();
- } else if(this.drawmodus=="letter"){
- //if (!this.letterObjectIsActive && !bool){
- // this.currentletterObj = new
lz.baseDrawWords(canvas,{refObj:this,x:canvas.getMouse('x'),
- // y:canvas.getMouse('y')});
- //}
- this.endLetter();
- mousetracker_del.unregisterAll();
- } else if (this.drawmodus == 'rectangle') {
- this.endRect();
- mousetracker_del.unregisterAll();
- } else if (this.drawmodus == 'ellipse') {
- this.endEllipse();
- mousetracker_del.unregisterAll();
- } else if (this.drawmodus == 'pointer') {
- this.setAttribute('drawmodus','hand');
- if (this.boundingIsActive){
-
this.boundingref._innerDrag.onmouseup.sendEvent();
- }
- }
-
////Debug.write("onmouseup: ",this.letterObjectIsActive,this.currentletterObj);
- this.checkStepLayers();
+ if (canvas.ismoderator) {
+ //var bool = false;
+
+ if(this.drawmodus=="paint"){
+ this.endPaint();
+ mousetracker_del.unregisterAll();
+ } else if(this.drawmodus=="line"){
+ this.endLine();
+ mousetracker_del.unregisterAll();
+ } else if(this.drawmodus=="drawarrow"){
+ this.endDrawarrowline();
+ mousetracker_del.unregisterAll();
+ } else if(this.drawmodus=="uline"){
+ this.endUline();
+ mousetracker_del.unregisterAll();
+ } else if(this.drawmodus=="letter"){
+ //if (!this.letterObjectIsActive &&
!bool){
+ // this.currentletterObj = new
lz.baseDrawWords(canvas,{refObj:this,x:canvas.getMouse('x'),
+ //
y:canvas.getMouse('y')});
+ //}
+ this.endLetter();
+ mousetracker_del.unregisterAll();
+ } else if (this.drawmodus == 'rectangle') {
+ this.endRect();
+ mousetracker_del.unregisterAll();
+ } else if (this.drawmodus == 'ellipse') {
+ this.endEllipse();
+ mousetracker_del.unregisterAll();
+ } else if (this.drawmodus == 'pointer') {
+ this.setAttribute('drawmodus','hand');
+ if (this.boundingIsActive){
+
this.boundingref._innerDrag.onmouseup.sendEvent();
+ }
+ } else if (this.drawmodus == 'pointerWhiteboard') {
+ if ($debug) Debug.write("pointerWhiteboard set New
Point ");
+ this.endPointerWhiteBoard();
+ }
+
////Debug.write("onmouseup: ",this.letterObjectIsActive,this.currentletterObj);
+ this.checkStepLayers();
+ } else {
+ this.endPointerWhiteBoard();
+ }
]]>
</handler>
@@ -676,7 +684,9 @@
this.drawrectangleToHistory(lastactionObject,this);
} else if(actionObject[0]=='ellipse'){
this.drawellipseToHistory(lastactionObject,this);
- }
+ } else if(actionObject[0]=='pointerWhiteBoard'){
+ this.drawPointerToHistory(lastactionObject,this);
+ }
//set counter to maximum otherwise trouble in naming
conventions
//the 6th array index count from the end of each object
is always the
counter of the
//object
@@ -1703,7 +1713,40 @@
this.onsharedMessage('draw',actionObject);
</method>
-
+ <!-- Pointers -->
+
+ <method name="endPointerWhiteBoard">
+ this.drawPointerWhiteBoardFinal(
+ "pointer"+this.getCounter(),
+ this.getMouse('x'),this.getMouse('y'),
+ 0,0
+ )
+ </method>
+
+ <method name="drawPointerToHistory" args="actionObject,parentObj">
+ new lz.whiteBoardPointer(parentObj,{
+ x:actionObject[actionObject.length-5],
+ y:actionObject[actionObject.length-4],
+ userName:actionObject[1]
+ })
+ </method>
+
+ <method name="drawPointerWhiteBoardFinal"
args="newName,x,y,width,height" >
+ var actionObject = new Array();
+ actionObject[0] = 'pointerWhiteBoard';
+ actionObject[1] = canvas.currentuser;
+ actionObject[2] = this.counter;
+ actionObject[3] = x;
+ actionObject[4] = y;
+ actionObject[5] = width;
+ actionObject[6] = height;
+ actionObject[7] = newName;
+ this.baseactionobjectList.push(actionObject);
+ this.onsharedMessage('draw',actionObject);
+ this.drawPointerToHistory(actionObject,this);
+ </method>
+
+
</class>
</library>
Modified:
trunk/openmeetings_lps411/modules/conference/whiteboard/base/library.lzx
==============================================================================
---
trunk/openmeetings_lps411/modules/conference/whiteboard/base/library.lzx
(original)
+++
trunk/openmeetings_lps411/modules/conference/whiteboard/base/library.lzx
Sat Sep 20 04:13:44 2008
@@ -12,6 +12,20 @@
<include href="baseDrawSave.lzx" />
<include href="baseDrawWords.lzx" />
<include href="remoteWhiteboard.lzx" />
-
+
+ <class name="whiteBoardPointer" extends="view"
+ resource="pointer_whiteboard_rsc" width="20" height="20" >
+ <attribute name="userName" value="" type="string" />
+ <attribute name="fadeDelegate" value="null" />
+ <labelText x="20" text="$once{ parent.userName }" />
+ <handler name="oninit">
+ this.fadeDelegate = new LzDelegate( this, "fadeText" );
+ LzTimer.addTimer( this.fadeDelegate, 5000 );
+ </handler>
+ <method name="fadeText">
+ this.destroy();
+ </method>
+ </class>
+
</library>
Modified:
trunk/openmeetings_lps411/modules/conference/whiteboard/library.lzx
==============================================================================
--- trunk/openmeetings_lps411/modules/conference/whiteboard/library.lzx
(original)
+++ trunk/openmeetings_lps411/modules/conference/whiteboard/library.lzx Sat
Sep 20 04:13:44 2008
@@ -42,6 +42,9 @@
<resource name="reload_small_rsc" src="resources/reload_small.png" />
<resource name="folder_top_rsc" src="resources/top.png" />
+
+<resource name="pointer_whiteboard_rsc" src="resources/pointer.swf" />
+<resource name="pointer_whiteboard_menu_rsc"
src="resources/pointerWhiteBoard_menu_rsc.swf" />
<resource name="doc_next" src="resources/go-next.png" />
<resource name="doc_pre" src="resources/go-previous.png" />
Modified:
trunk/openmeetings_lps411/modules/conference/whiteboard/newWhiteBoard.lzx
==============================================================================
---
trunk/openmeetings_lps411/modules/conference/whiteboard/newWhiteBoard.lzx
(original)
+++
trunk/openmeetings_lps411/modules/conference/whiteboard/newWhiteBoard.lzx
Sat Sep 20 04:13:44 2008
@@ -378,13 +378,16 @@
</method>
<mainToolsLeftPanel y="20" name="_mainToolsPanel"
visible="${canvas.ismoderator}"/>
+
+ <mainToolsLeftPanelPointer y="20"
name="_mainToolsLeftPanelPointer" visible="${!canvas.ismoderator}"/>
<documentIconTopPanel x="100" y="0" name="_documentPanel"
visible="${canvas.ismoderator}" />
</view>
- <propertyPanel name="_propertyPanel" x="0" y="${
parent.parent.height-this.height-21 }" >
+ <propertyPanel name="_propertyPanel" x="0" y="${
parent.parent.height-this.height-21 }"
+ visible="${canvas.ismoderator}">
<handler name="onheight" args="h">
this.height = h;
if ($debug) Debug.write("onheight: ",h);
Modified:
trunk/openmeetings_lps411/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanel.lzx
==============================================================================
---
trunk/openmeetings_lps411/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanel.lzx
(original)
+++
trunk/openmeetings_lps411/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanel.lzx
Sat Sep 20 04:13:44 2008
@@ -11,6 +11,8 @@
<mainToolsHPanelSeperator />
<mainToolsPanelItem name="hand" modi="hand" labelid="72"
_isselected="true"
resoureceItem="menupointer_rsc"
/>
+ <mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard"
labelid="557"
+ resoureceItem="pointer_whiteboard_menu_rsc" />
<mainToolsPanelItem name="letter" modi="letter" labelid="73"
resoureceItem="letter" />
<mainToolsPanelItem name="paint" modi="paint" labelid="74"
resoureceItem="paint" />
<mainToolsPanelItem name="line" modi="line" labelid="75"
resoureceItem="line_rsc" />
@@ -30,6 +32,8 @@
<mainToolsVPanelSeperator />
<mainToolsPanelItem name="hand" modi="hand" labelid="72"
_isselected="true"
resoureceItem="menupointer_rsc"
/>
+ <mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard"
labelid="557"
+ resoureceItem="pointer_whiteboard_menu_rsc" />
<mainToolsPanelItem name="letter" modi="letter" labelid="73"
resoureceItem="letter" />
<mainToolsPanelItem name="paint" modi="paint" labelid="74"
resoureceItem="paint" />
<mainToolsPanelItem name="line" modi="line" labelid="75"
resoureceItem="line_rsc" />
@@ -38,9 +42,9 @@
<mainToolsPanelItem name="ellipse" modi="ellipse" labelid="78"
resoureceItem="ellipse" />
<mainToolsPanelItem name="drawarrow" modi="drawarrow" labelid="79"
resoureceItem="drawarrowicon_rsc" />
</class>
-
+
<class name="mainToolsTopPanel" extends="baseTopPanel"
- width="366" height="32" title="" docking="true"
+ width="390" height="32" title="" docking="true"
activationClassBounding="mainToolsLeftPanel"
activationVClassBounding="mainToolsTopPanel"
leftClassPanel="mainToolsLeftPanel"
@@ -48,13 +52,13 @@
bottomClassPanel="mainToolsTopPanel"
rightClassPanel="mainToolsLeftPanel"
verticalClassActive="true"
- hWidth="32" hHeight="366">
+ hWidth="32" hHeight="390">
<horizontalMenuIconBar x="20" y="4" />
</class>
<class name="mainToolsLeftPanel" extends="baseLeftPanel"
- width="32" height="366" title="" docking="true"
+ width="32" height="390" title="" docking="true"
activationClassBounding="mainToolsLeftPanel"
activationVClassBounding="mainToolsTopPanel"
topClassPanel="mainToolsTopPanel"
@@ -62,34 +66,78 @@
leftClassPanel="mainToolsLeftPanel"
rightClassPanel="mainToolsLeftPanel"
verticalClassActive="false"
- vWidth="366" vHeight="32">
+ vWidth="390" vHeight="32">
<verticalMenuIconBar x="2" y="20" />
-</class>
+</class>
+
+<!-- ################
+ Non Moderator Tools
+-->
+
+<class name="verticalMenuIconBarPointer" extends="view" y="22" x="4"
clickable="true">
+ <simplelayout axis="y" spacing="2" />
+ <mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard"
labelid="557"
+ resoureceItem="pointer_whiteboard_menu_rsc" />
+</class>
+
+<class name="horizontalMenuIconBarPointer" extends="view" y="22" x="4"
clickable="true">
+ <simplelayout axis="x" spacing="2" />
+ <mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard"
labelid="557"
+ resoureceItem="pointer_whiteboard_menu_rsc" />
+</class>
+
+<class name="mainToolsTopPanelPointer" extends="baseTopPanel"
+ width="52" height="32" title="" docking="true"
+ activationClassBounding="mainToolsLeftPanelPointer"
+ activationVClassBounding="mainToolsTopPanelPointer"
+ leftClassPanel="mainToolsLeftPanelPointer"
+ topClassPanel="mainToolsTopPanelPointer"
+ bottomClassPanel="mainToolsTopPanelPointer"
+ rightClassPanel="mainToolsLeftPanelPointer"
+ verticalClassActive="true"
+ hWidth="32" hHeight="52">
+
+ <horizontalMenuIconBarPointer x="20" y="4" />
+</class>
+
+<class name="mainToolsLeftPanelPointer" extends="baseLeftPanel"
+ width="32" height="52" title="" docking="true"
+ activationClassBounding="mainToolsLeftPanelPointer"
+ activationVClassBounding="mainToolsTopPanelPointer"
+ topClassPanel="mainToolsTopPanelPointer"
+ bottomClassPanel="mainToolsTopPanelPointer"
+ leftClassPanel="mainToolsLeftPanelPointer"
+ rightClassPanel="mainToolsLeftPanelPointer"
+ verticalClassActive="false"
+ vWidth="52" vHeight="32">
-<class name="mainToolsVPanel" extends="basePanel"
- width="348" height="50" title="" docking="true"
- activationClassBounding="mainToolsPanel"
+ <verticalMenuIconBarPointer x="2" y="20" />
+</class>
+
+<class name="mainToolsVPanel" extends="basePanel"
+ width="348" height="50" title="" docking="true"
+ activationClassBounding="mainToolsPanel"
activationVClassBounding="mainToolsVPanel"
topClassPanel="mainToolsTopPanel"
bottomClassPanel="mainToolsTopPanel"
leftClassPanel="mainToolsLeftPanel"
rightClassPanel="mainToolsLeftPanel"
- verticalClassActive="true"
- hWidth="32" hHeight="366">
-
+ verticalClassActive="true"
+ hWidth="32" hHeight="366">
+
<horizontalMenuIconBar />
-</class>
+</class>
<class name="mainToolsPanel" extends="basePanel"
- width="34" height="366" title="" docking="true"
- activationClassBounding="mainToolsPanel"
+ width="34" height="366" title="" docking="true"
+ activationClassBounding="mainToolsPanel"
activationVClassBounding="mainToolsVPanel"
topClassPanel="mainToolsTopPanel"
bottomClassPanel="mainToolsTopPanel"
leftClassPanel="mainToolsLeftPanel"
rightClassPanel="mainToolsLeftPanel"
- verticalClassActive="false"
+ verticalClassActive="false"
vWidth="366" vHeight="32">
<verticalMenuIconBar />
Added:
trunk/openmeetings_lps411/modules/conference/whiteboard/resources/pointer.fla
==============================================================================
Binary file. No diff available.
Added:
trunk/openmeetings_lps411/modules/conference/whiteboard/resources/pointer.swf
==============================================================================
Binary file. No diff available.
Added:
trunk/openmeetings_lps411/modules/conference/whiteboard/resources/pointerWhiteBoard_menu_rsc.fla
==============================================================================
Binary file. No diff available.
Added:
trunk/openmeetings_lps411/modules/conference/whiteboard/resources/pointerWhiteBoard_menu_rsc.swf
==============================================================================
Binary file. No diff available.
Modified:
trunk/openmeetings_lps411/modules/conference/whiteboard/windows/loadWhiteboardWindow.lzx
==============================================================================
---
trunk/openmeetings_lps411/modules/conference/whiteboard/windows/loadWhiteboardWindow.lzx
(original)
+++
trunk/openmeetings_lps411/modules/conference/whiteboard/windows/loadWhiteboardWindow.lzx
Sat Sep 20 04:13:44 2008
@@ -2,7 +2,7 @@
<library>
<class name="loadWhiteboardWindow" extends="labelExplorerBox" labelid="205"
- docking="true" width="260" x="300" y="200" height="100">
+ docking="true" width="260" x="$once{ parent.width/2 - this.width/2 }"
y="200" height="100">
<attribute name="refObj" value="null" />
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"OpenMeetings developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/openmeetings-dev?hl=en
-~----------~----~----~----~------~----~------~--~---