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/

