Mark,
Gees, I'm getting heart palpitations...Have I died and gone to SVG 
heaven? Let me tell you, if we can get this to work, we can have a 
hell of a great package.
Francis


--- In [email protected], "Mark Birbeck" 
<[EMAIL PROTECTED]> wrote:
> Francis,
> 
> Yes, you could do this. The current version doesn't have the 
context menu
> enabled, but it won't take much to do. We're about to do a new 
build so I'll
> ensure this is in for that.
> 
> In terms of the architecture, it would work slightly differently 
to the way
> you have it. First, your XHTML document would register for the
> 'context-menu' event. When you receive it you invoke a message 
with an
> XForms select1 control in it. Since an xf:select1 can be driven by 
instance
> data (which is just a DOM), then you simply ensure that the 
instance data
> reflects the state that you want, and the menu choices will 
change. In other
> words, instead of calling rewriteContextMenu() to change the menu
> specifically, you would change some instance data to reflect tasks 
that have
> been performed, or some status (an item cannot be deleted, for
> example)--this data then just happens to be used to drive the 
menu, but it
> would also drive other parts of the form.
> 
> Note that the menu could also contain mark-up, and so be made to 
look
> different to the usual menus. If you have loaded formsPlayer 1.x 
you may
> have seen the RSS Reader. When you add a new RSS feed it pops up a 
system
> tray message to confirm that you have added something. This 
message uses the
> XForms message element with mark-up in and this mark-up is passed 
to another
> instance of the viewer that slides in and out by the system tray. 
Since it
> is a viewer, this means that you can have SVG system tray 
messages, and the
> same principle will apply to the context menu.
> 
> I'll try to knock up a demo to go with the next release to show 
how it could
> be done.
> 
> Regards,
> 
> Mark
> 
> 
> Mark Birbeck
> CEO
> x-port.net Ltd.
> 
> e: [EMAIL PROTECTED]
> t: +44 (0) 20 7689 9232
> w: http://www.formsPlayer.com/
> b: http://internet-apps.blogspot.com/
> 
> Download our XForms processor from
> http://www.formsPlayer.com/ 
> 
> > -----Original Message-----
> > From: [email protected] 
> > [mailto:[EMAIL PROTECTED] On Behalf Of Francis 
Hemsher
> > Sent: 09 June 2005 21:35
> > To: [email protected]
> > Subject: [svg-developers] Re: SVG and HTML all in one html file
> > 
> > Hopefully, my questions will only confirm the quality of your 
work.
> > Yes, right-mouse click is important in the current use of 
> > ASV3, and its pop-up context menu.
> > 
> > Below are two files that demonstrate the dynamic needs for 
> > the context menu:
> > 
> > If can accomplish dynamic changes the 'pop-up' menu, then I 
> > will be happy as a clam.
> > 
> > Francis
> > 
> > the HTML file:
> > <HTML>
> > <HEAD>
> > <style>
> > body{
> > font-family:arial;
> > font-size:14;
> > }
> > </style>
> > <TITLE>Dynamic Context Menu</TITLE>
> > </HEAD>
> > <BODY onLoad=init()>
> > 
> > <embed  name="svgEmbed"  src="dynamicContext.svg" 
> > style="width:500;height:500" type="image/svg+xml"> 
> > <h2>Dynamically writing the Context Menu for the Adobe SVG 
> > Viewer, version 3</h2> The reason this is needed, is to 
> > provide the user with an intelligent 'pop-up' menu that 
> > displays only the functions that are needed during a specific 
> > operation on the SVG drawing. This simplifies their choices, 
> > and also simplifies the coding, whereby many, many status 
> > flags are eliminated.<p>
> > 
> > The pop-up menu also has certain 'rhythm':<br> 1. Select an 
> > operation.<br> 2. Do the selected operation.<br> 3. Finish or 
> > Cancel the operation.<br> 4. Return to previous selection 
choices.<p>
> > 
> > This feature on the MobiusPortal DataPort & ViewPort are of vital
> > importance: The user's
> > experience must be seamless and intuitive. The trick is to 
> > get them to initially right-click their mouse button over the 
> > SVG drawing, and begin boogeying to the rhythm:)<p>
> >  
> > <script>
> > var docSVG
> > var ContextMenu
> > function init()
> > {
> >     docSVG=document.embeds['svgEmbed'].getSVGDocument()
> >     ContextMenu=docSVG.getElementById("ContextMenu")
> >     //---initial context menu---
> >     rewriteContextMenu(",0,")
> > }
> > 
> > //--------build context menus for SVG--- //---calls function 
> > in SVG that use Adobe Viewer, resident methods--- function 
> > makeContextMenu(){window.makeContextMenu();}
> > 
> > 
> > //---An array of all functions and their displayed text---- 
> > var contextMenuArray= new Array()
> > 
> > contextMenuArray[0]="doThis(),Do This Please!"
> > contextMenuArray[1]="finish(),finish it dammit!"
> > contextMenuArray[2]="cancel(),cancel it I dare you"
> > 
> > //---fired at every function to update user's pop-up 
> > choices--- function rewriteContextMenu(items) {
> >             //---purge previous items---
> >             menuChildren=ContextMenu.childNodes
> >             for(i=menuChildren.length-1;i>=0;i--)
> >             {
> >                     ContextMenu.removeChild(menuChildren.item(i))
> >             }
> >             
> >             //---then for some unknown reason:)---
> >             //---start with a bogus, empty item??---
> >                             createItem=docSVG.createElement
> > ("item")
> >                             textNode=docSVG.createTextNode("")
> >                             createItem.appendChild(textNode)
> >                             ContextMenu.appendChild(createItem)
> >                             
> >             //---A title for this menu----
> >                             createItem=docSVG.createElement
> > ("item")
> >                             textNode=docSVG.createTextNode
> > ("MOBIUS PORTAL IS THE GREATEST!")
> >                             createItem.appendChild(textNode)
> >                             ContextMenu.appendChild(createItem)
> >                             
> >                             separator=docSVG.createElement
> > ("separator")
> >                             ContextMenu.appendChild(separator)
> >                             
> >     for(i=0;i<contextMenuArray.length;i++)
> >     {
> >             addMe=","+i+","
> >             if(items.indexOf(addMe)!=-1)
> >             {
> >                     menuItem=contextMenuArray[i]
> >                     split=menuItem.split(",")
> >                     activate=split[0]
> >                     textItem=split[1]
> >                     
> >                             createItem=docSVG.createElement
> > ("item")
> >                             createItem.setAttribute
> > ("onactivate",activate)
> >                             textNode=docSVG.createTextNode
> > (textItem)
> >                             createItem.appendChild(textNode)
> >                             ContextMenu.appendChild(createItem)
> >             }       
> >     }
> >     
> >     separator=docSVG.createElement("separator")
> >     ContextMenu.appendChild(separator)
> >     
> >     //---include the Adobe resident original view selection---
> >                             view=docSVG.createElement("item")
> >                             view.setAttribute
> > ("action","OriginalView")
> >                             textNode=docSVG.createTextNode("Full
> > View")
> >                             view.appendChild(textNode)
> >                             ContextMenu.appendChild(view)
> >     
> >     makeContextMenu()
> > 
> > }
> > 
> > 
> > //---functions resident at the context menu array---
> > 
> > function doThis()
> > {
> >     rewriteContextMenu(",1,2,")
> > }
> > 
> > function finish()
> > {
> >     rewriteContextMenu(",0,")
> > }
> > 
> > function cancel()
> > {
> >     rewriteContextMenu(",0,")
> > }
> > 
> > 
> > 
> > </script>
> > 
> > </BODY>
> > </HTML>
> > 
> > dynamicContext.svg
> > <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE svg 
> > PUBLIC "-//W3C//DTD SVG 1.0//EN" 
> > "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"; >
> > <svg id="mySVG"   width="500" height="500">
> > <rect x="0" y="0"  width="100%"  height="100%" 
fill="lemonchiffon" />
> > 
> > <defs  id="menuDefs">
> >     <menu  id='ContextMenu' 
> > xmlns="http://www.mobiusPortal.com"; />
> > </defs>
> > <script>
> >             <![CDATA[
> >                             //---allows function to be called
> > from HTML---
> >             parent.makeContextMenu=makeContextMenu
> >             function makeContextMenu(){var newMenuRoot = 
> > parseXML ( printNode( document.getElementById( "ContextMenu" 
> > ) ), contextMenu );contextMenu.replaceChild( newMenuRoot, 
> > contextMenu.firstChild )} ;
> >             ]]>
> >     </script>
> > 
> > </svg>
> > 
> > 
> > 
> > 
> > 
> > --- In [email protected], "Mark Birbeck" 
> > <[EMAIL PROTECTED]> wrote:
> > > Francis,
> > > 
> > > > If you can get your viewer seamless with IE and have nice 
CSS 
> > > > capablities then I may know of a site that could use it:) 
Anyway, 
> > > > I'll download it and fiddle with it for a while.
> > > > Expect a few questions from yours truly about it's abilities 
to 
> > > > create a dynamic context menu.
> > > 
> > > I'd be very pleased to get questions! I look forward to your
> > comments.
> > > 
> > > BTW, by context menu, do you mean with a right-hand mouse 
click?
> > > 
> > > Regards,
> > > 
> > > Mark
> > > 
> > > 
> > > Mark Birbeck
> > > CEO
> > > x-port.net Ltd.
> > > 
> > > e: [EMAIL PROTECTED]
> > > t: +44 (0) 20 7689 9232
> > > w: http://www.formsPlayer.com/
> > > b: http://internet-apps.blogspot.com/
> > > 
> > > Download our XForms processor from
> > > http://www.formsPlayer.com/
> > 
> > 
> > 
> > 
> > -----
> > To unsubscribe send a message to: 
> > [EMAIL PROTECTED]
> > -or-
> > visit http://groups.yahoo.com/group/svg-developers and click 
> > "edit my membership"
> > ----
> > Yahoo! Groups Links
> > 
> > 
> > 
> >  
> > 
> > 
> > 
> >




-----
To unsubscribe send a message to: [EMAIL PROTECTED]
-or-
visit http://groups.yahoo.com/group/svg-developers and click "edit my 
membership"
---- 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/svg-developers/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to