Changes for page Click to Open
Last modified by Kieran Kelleher on 2012/07/21 20:41
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,18 +1,19 @@ 1 1 == What It Is == 2 2 3 -C heck outthe[[screencastatthemDimension buildsite>>http://webobjects.mdimension.com/wolips/preview/WOLipsFramework.m4v]]!3 +Click to Open (C2O) allows you to open components in Eclipse directly from the running application in your browser! Click to Open appears in the lower left corner of browser as part of the pages of your running application. Clicking on this component, and then on an object in the browser window, opens the relevant WOComponent in Eclipse. This makes life easier for UI designers and for developers getting familiar with new projects. It also provides some other very slick debugging tools. 4 4 5 -C licktoOpenisa browser based extensiontoWOLips found in [[ProjectWonder>>WONDER:Home]]. Itprovidessomeveryslickdebugging tools,liketheabilityto click on arbitrary components in yourwebbrowser and have thecorrespondingcomponent openinWOLips. All of the WonderERD2W components support this.5 +Check out the [[screencast at the mDimension build site>>http://webobjects.mdimension.com/wolips/preview/WOLipsFramework.m4v]] 6 6 7 -Click to Open appearsinthe lover left corner ofbrowser aspart of thepagesf your runningapplication.Clicking on thiscomponent, andthen on an objectin the browser window opens therelevantWOComponentinEclipse.This makeslife easier for UIdesignersandfor developersgettingfamiliarwithnewprojects.7 +Click to Open is a browser based extension to WOLips found in [[Project Wonder>>WONDER:Home]]. All of the Wonder ERD2W components support Click to Open. 8 8 9 -**Note that click-to-open support is expensive, because it has to dig around 10 -your component HTML quite a bit, so you will take a performance hit in development to have it enabled.** 9 +**Note that click-to-open support is expensive, because it has to dig around your component HTML quite a bit, so you will take a performance hit in development to have it enabled.** 11 11 12 12 == What You Need == 13 13 14 -You eitherneed to be using Project Wonder or you need to get the **WOLips** framework that is part of Project Wonder. Youcan downloaditfrom [[mDimension'ssite>>http://webobjects.mdimension.com/wonder/]].IfnotusingWonder,untartheframeworks andcopyWOLips.frameworktowhereyouhavethe rest ofyourframeworks(usually /Libraryor ,,/Library).,,13 +You need the **WOLips** framework that is part of Project Wonder. You also need the **ERExtensions** framework that is part of Project Wonder on the class path at runtime. If you already use Project Wonder, are you almost done. 15 15 15 +If you are not using Project Wonder, you can download it from [[mDimension's site>>http://webobjects.mdimension.com/wonder/]], untar the frameworks, and copy just the WOLips.framework and ERExtensions.framework to where you have the rest of your frameworks (usually /Library or ,,/Library).,, 16 + 16 16 == Getting Set Up == 17 17 18 18 === Add the WOLips.framework === ... ... @@ -23,11 +23,11 @@ 23 23 24 24 If your components extend Wonder's ERXComponent, you can skip this step. Once again, using Wonder makes your life easier. 25 25 26 -If you don't have a custom component base class, you really should. Using com.webobjects.appserver.WOComponent as the super-class for your pages and components is just going to leave you doing the same things over and over. 27 +If you don't have a custom component base class, you really should. Using com.webobjects.appserver.WOComponent as the super-class for your pages and components is just going to leave you doing the same things over and over. If you don't have one, you might want to start using the ClickToOpenComponent below. 27 27 28 -You will need to add the appendToResponse(WOResponse, WOContext) method to your component base class, or add t oitif you already have that method.Youshould ONLY haveclickToOpenxecutein your component if you areindevelopmentmode.29 +You will need to add the appendToResponse(WOResponse, WOContext) method below to your component base class, or add this code to your appendToResponse method if you already have one. 29 29 30 - Toinclude it intoyourcomponent base class,you canusethissampleimplementation:31 +Here is an example implementation of a component base class and of Click to Open support: 31 31 32 32 {{code value="java"}} 33 33 ... ... @@ -34,8 +34,8 @@ 34 34 package net.com.foo.bar; 35 35 36 36 import com.webobjects.appserver.*; 37 -import er.extensions.*; 38 38 39 + 39 39 /** 40 40 * Support for "Click to Open" navigation from the browser to the template in Eclipse. To enable this, 41 41 * launch with: ... ... @@ -45,7 +45,7 @@ 45 45 */ 46 46 public class ClickToOpenComponent extends com.webobjects.appserver.WOComponent { 47 47 48 - p rivatestatic final boolean isClickToOpenEnabled =ERXProperties.booleanForKeyWithDefault("er.component.clickToOpen", false);49 + public static final boolean isClickToOpenEnabled = Boolean.getBoolean(System.getProperty("er.component.clickToOpen", "false")); 49 49 50 50 public ClickToOpenComponent(WOContext context) { 51 51 super(context); ... ... @@ -60,8 +60,21 @@ 60 60 61 61 {{/code}} 62 62 63 - Note thatwhenisClickToOpenEnabled isfalse,the ERXClickToOpenSupport methodsareno-ops.64 +For components that can't sub-class ClickToOpenComponent (directly or indirectly), you can enable Click to Open by adding this method to your component: 64 64 66 +{{code value="java"}} 67 + 68 +public void appendToResponse(WOResponse response, WOContext context) 69 +{ 70 + ERXClickToOpenSupport.preProcessResponse(response, context, ClickToOpenComponent.isClickToOpenEnabled); 71 + super.appendToResponse(response, context); 72 + ERXClickToOpenSupport.postProcessResponse(getClass(), response, context, ClickToOpenComponent.isClickToOpenEnabled); 73 +} 74 + 75 +{{/code}} 76 + 77 +**Note that when isClickToOpenEnabled is false, the ERXClickToOpenSupport methods are no-ops.** 78 + 65 65 === Add Support to Application === 66 66 67 67 If your Application.java class extends Wonder's ERXApplication, you can skip this step too. Otherwise, add a developmentMode() method like this: ... ... @@ -71,7 +71,7 @@ 71 71 private Boolean isDevelopmentMode; 72 72 public boolean developmentMode() { 73 73 if (isDevelopmentMode == null) { 74 - isDevelopmentMode = new Boolean( ERXProperties.booleanForKey("developmentMode", false));88 + isDevelopmentMode = new Boolean(System.getProperty("er.extensions.ERXApplication.developmentMode", "false")); 75 75 } 76 76 return isDevelopmentMode.booleanValue(); 77 77 } ... ... @@ -78,38 +78,109 @@ 78 78 79 79 {{/code}} 80 80 81 -And add this to the launch arguments: 82 ---DdevelopmentMode=true-- 83 - 84 84 === Set Application Properties === 85 85 86 -In your application preferences,you canthenset:97 +In your application's Properties file, add this line: 87 87 88 - wolips.host=localhost 89 - wolips.port=9485 90 - wolips.password=yourpassword 91 - er.component.clickToOpen=true 99 +{{code}} 92 92 93 - Only 'wolips.password' is strictlyrequiredaslong asyou use the default port of 9485.101 +wolips.password=yourpassword 94 94 103 +{{/code}} 104 + 105 +If you need to, you can also change these default values: 106 + 107 +{{code}} 108 + 109 +wolips.host=localhost 110 +wolips.port=9485 111 + 112 +{{/code}} 113 + 95 95 === Provide prototype.js === 96 96 97 -WOLips.framework needs a prototype.js. If you are using Ajax framework, you don't need to do 98 -anything, because it will default to use Ajax.framework's prototype.js. However, if you are not, 99 -you must set (as an example): 116 +WOLips.framework needs a prototype.js. If you are using Ajax framework, you don't need to do anything, because it will default to use Ajax.framework's prototype.js. However, if you are not, add this to your application's Properties file (as an example, change the values as appropriate): 100 100 101 - wolips.prototype.framework=app 102 - wolips.prototype.fileName=prototype.js 118 +{{code}} 103 103 120 +wolips.prototype.framework=app 121 +wolips.prototype.fileName=prototype.js 122 + 123 +{{/code}} 124 + 104 104 === Add WOLToolBar to Your Pages === 105 105 106 -5) In your page wrapper, add a <wo:WOLToolBar/> component, and you're good to go. Look in the lower 107 -left hand corner of the browser window for the link. 127 +In your page wrapper's HTML template, add 108 108 129 +{{code value="html"}} 130 + 131 +<wo:WOLToolBar/> 132 + 133 +{{/code}} 134 + 135 +and you're done. If you don't have a [[page wrapper>>WO:Web Applications-Development-Examples-Page Layout]], you will have to add this to every page. Hint: page wrappers make your life easier. 136 + 137 +If you are using the old WO template syntax, add this to the .html file: 138 + 139 +{{code value="html"}} 140 + 141 +<webobject name="WOLToolBar" /> 142 + 143 +{{/code}} 144 + 145 +And add this to the .wod file: 146 + 147 +{{code value="html"}} 148 + 149 +WOLToolBar: WOLToolBar{ 150 +} 151 + 152 +{{/code}} 153 + 109 109 === Configure WOLips Server === 110 110 111 -You must be using a recent version of WOLips that supports the WOLips Server. In 112 -your WOLips preferences, you must enable the WOLips Server, set the port number and the communication 113 -password. Turning on the WOLips Server requires a restart of WOLips. 156 +You must be using a recent version of WOLips that supports the **WOLips Server**. In your WOLips preferences, you must enable the WOLips Server and set the communication password. This password must match the ##wolips.password## in the **Set Application Properties** section above. 114 114 158 +**Turning on the WOLips Server requires Eclipse to be restarted.** 159 + 160 +[[image:WOLipsServerPreferences.png]] 161 + 162 +You can optionally change the port number. If you do change the port number, see ##wolips.port## in the **Set Application Properties** section above. 163 + 164 +=== Enable Click to Open === 165 + 166 +And add **-Der.component.clickToOpen=true** and **-Der.extensions.ERXApplication.developmentMode=true** to the launch arguments: 167 + 168 +[[image:EnableClickToOpen.png]] 169 + 115 115 == Using Click to Open == 171 + 172 +Run your application and look in the lower, left hand corner. You should see a link like this: 173 + 174 +[[image:ClickToOpenLink.png]] 175 + 176 +If you don't, check that the page has the WOLToolBar on it and that the ##er.component.clickToOpen## property is set to true and the ##er.extensions.ERXApplication.developmentMode## property is set to true. 177 + 178 +\\ 179 + 180 +Click on this component to open the Click to Open UI: 181 + 182 +[[image:ClickToOpenExpanded.png]] 183 + 184 +**EditDisplayAd** is the page in the browser. Click on this link to open this page in Eclipse. 185 + 186 +\\ 187 + 188 +If you are looking for a sub-component of this page, click on the **Click to Open** link. As you move your mouse over the page, the bread crumb of components will change to show you where you are. Just click to open the component under the mouse in Eclipse. It is that easy! 189 + 190 +[[image:ClickToOpenInAction.png]] 191 + 192 +\\ 193 + 194 +=== Additional Functionality === 195 + 196 +* Esc is a shortcut for getting out of click-to-open mode 197 +* hold down the Cmd key while you move the mouse around and it will highlight the component 198 +* Cmd-click it will popup the stack of components and you can pick from the stack: 199 +[[image:ComponentStack.png]] 200 +* you can the binding ##expanded=true;## on WOLToolBar so it's open by default, instead of closed