WWDC2001 Session 616
Transcript
Kind: captions Language: en good morning ladies and gentlemen Bob said it really well at this early morning everybody's taking really useful polls so I will have to do the same who would not be up at this very hour if it wasn't for this presentation thank you I hope you have muffins orange juice and all the other goodies that are handing out for free so at least it's free food I'm Stan German and I will be joined in a minute by Tom Naughton who will be giving the demos for this presentation what's in this beautiful talk because it's so early we try to put many demos in there so that you don't quite fall asleep we'll be discussing the new features in web objects 5 and the web objects tool integration we've had presentations on web objects builder before we had other sessions talking about iya modeler so we'll not address those in too much of a depth we will be talking about the project builder assistance at this point you're probably realizing this session should have been earlier and I don't mean like at 7 o'clock I mean Tuesday because you've seen all those assistants since but we will talk more about them we'll be discussing the project structure which has changed quite dramatically since web objects 4.5 or even the prior versions we'll be talking about rapid turnaround mode that's the nifty thing that you don't have to compile the product and it still works we'll explain to you how it works or why it works and why it sometimes doesn't work we'll be discussing the CVS integration on examples of web objects we'll be talking about the installation of a built product and we'll be discussing or just briefly touching custom pallets in web objects builder project builder assistance now you've all seen them you've seen probably all of them and you've seen probably only one kind the project assistants the project decisions are those that help you set up a new project file assistants are assistants that help you with an existing project to add more and more stuff to them as I said project assistants help with new project creation they build a fully functional compiled able application skeletons for you from scratch and they add resources based on what frameworks we choose what model files you choose etc what's new in well objects five for those of you who have been using with objects for a while now you can add multiple yo model files to a project right away which is really helpful because then the formalin wizards now assistance go with you through the whole process of reverse engineering and you can get consistency errors if you have only one model in the project you can also add frameworks which again allows you to structure your product nicely and have your models in there and of course the new features of a o UF cocoa applications and all the new Java stuff the file assistance once you have a functional product project excuse me then those assistants are used to add new things to your project Java classes nicely ten nice templates with names and everything filled in web components they get already a little bit trickier and Java client nibs that's the trickiest part so that's done all for you and Tom now will come on stage and we'll show you something about the assistance okay so as Stan mentioned you've probably all seen the assistance by now but let's just consider this a comprehensive review so this is of course the the assistant panel and project builder the web objects assistants are all at the bottom I just like to go through and explain what each of these is in case we haven't covered them all consistently the first is the cocoa AOF application this is the replacement for using AOF in cocoa applications it basically just copies the standard Java cocoa project template adds our frameworks and guides you through creating a nib much like direct Java client if you as you seen and the next two Java client direct to Java client 10 direct to web basically just ask you to choose a model direct to web asks you to choose an appearance for the application but it just builds and runs the application and you customize all the features at runtime display group application I'm going to use in a minute you've seen it many times it creates a full component with a pre-configured display group which is a kind of a Swiss Army knife controller object that manages a set of AOS for display the next two are basically just a template copying assistants they just they copy the the standard basic web objects application and web objects framework projects and just customize them with the name that you add so I'm going to go through and do the display group application because I basically need an application to do the rest of the demos with so we give it a name and this panel is actually one of the new features in web objects 5 previous versions of the wizard would just let you choose one model and that made it difficult if you had frameworks containing models or if you had multiple models with cross model relationships so this actually makes a lot easier to do things that you couldn't do before I'm going to add a business logic framework and you can see in the next panel that that framework contains two models I could also add additional models and as long as they don't have conflicting entity names I could I could use that entire model group for the rest of the wizard next we choose the main entity for the main component I'm always gonna go with movie let's see there are various options for the layout that you want for example you can just have you know a big list of all the attributes that you choose or you can have a list of Yeo's represented by the attribute that you choose and then clicking on it will display more detail below that you can edit and use to create new EOS I'm just going to go with let's see the list of EOS and what I just explained anyway okay so we need some attributes and I'm just gonna show off that you can select multiple attributes and add them all at once I think I want you to do that and then I need to choose an attribute to use for the hyperlink in the list of the EOS and I just click on finish okay so basically you've seen this type of project number of times before it's created this component with a pre-configured display group as you've seen before let's see but since this is the assistant demo I'd also like to show you some of the file assistants which I don't think people have been showing another demos so again the web objects assistants are down at the bottom of the screen you'll notice that there's a Java class assistant here and another one up here under cocoa and the basic difference is the template has different import statements so if you want to import the the cocoa framework so you would choose this one if you want to import the web objects framework so you would use this one we're just going to create a new component oh and actually this reminds me one important thing in the when you use the project builder assistance is you have to choose the group that you want to add the component to or it'll just add it wherever the selection is so we're gonna just create a new plain old vanilla component we get a list of the targets many of the assistants don't give you a list of targets they just know which target things go in and choose it for you but since this is a built-in project builder template copying wizard we have to choose the target we're gonna cover targets a little bit later but the important thing here is that you pretty much never want to add things to the main target and you want to add all your components to the application server target so go ahead and do that and we have this configured to open the Java file you'll see that it's added that with the other components so the other way to create new components is to use the Builder and when you save the component if you save it in the project directory which it'll try to do by default it'll ask if you want to add the component of the project let's say yes it asks if you want to create the Java file you pretty much always do and that'll also just stick the new component into the project so you can either use Wahb or use one of the wizards I'm just gonna build this so that we can do the the next demo but there's really no no need to run it you've seen it many times no Stan all right I'll just sit here stay with us all right don't run away so back to the slides if we can go yes Tom pointed out initially in the assistance the cocoa EOF application I'll repeat after me that's in Java let's go into the next topic the project structure we saw tom talk about targets buckets and we will also touch a little bit of mystery files which was selected as the last file on the previous demo screen now what is a target target is something new for at least the legacy web objects developers it's a notion that comes over from old Mac OS it allows you for a file to be part of multiple different you can have a file being ok it's it's complicated you see I mean I work with it and I can don't know how to explain it a file can be part of multiple targets and the target describes word that file when it's once built or copied in the finished product where it will be so in a typical deployment scenario for web objects we have an application server then somewhere we have a web server sometimes it's the same machine but typically it's not there's a firewall they forgot the fire the server's connect through that firewall to all the clients so we see that in the typical scenario we have the app server and the web server apart and usually it's maybe even more computers the webserver target which is part of any web of web objects project you put static stuff there stuff that that just doesn't change things that the web server has to fetch from disk and that's it static images static HTML client-side Java classes because they just get downloaded to the client over the network Java client nib file same thing and anything that gets accessed through normal URLs now here because this is so late in the week you'll even know that what normal URLs are it's this non so fancy or not so ugly looking thing then to complement that we have the application server target this one is used for all the dynamic content server-side Java classes web components that would be what tom was creating web objects builder yo models these are also dynamic they're considered dynamic and also they're used by the application of by the web server and images generated on the fly an example of an image generated on the fly is you have already hopefully visited the Apple I tools with the I cards and send a nice cute little postcards to your mom and dad this is an example of a picture generated on the fly warning if you don't know what you're doing don't touch them don't mess with them don't rename them the targets they are there depend on their names and don't modify them Tom will show later when he's giving the demo about targets what you really shouldn't touch there's a lot of settings and if you really don't know what you're doing just please stay away buckets what buckets in previous versions of web objects we had this old project builder now known as project builder whoa except on Windows where it's snail known as the project builder that old project will require you to place things into buckets you had a cute little bucket for your java files another one for you resources another one for the web components now you can put stuff wherever you want it's really nice because it allows you to structure things just as Tom showed in the previous demo a component it had the class and the world file and everything else together in a in a little group you can also put stuff anywhere in the file system the problem with that is when you move your file you can put it in a completely unrelated directory and it will find it it will build it just fine the problem with that is if you copy your project you have to keep track yourself manually that that file is somewhere completely else so it has pros and cons our assistants when you create something when you create a new project when you add files to an existing project it will place it immediately inappropriately bucket and whatnot well not bucket group group those buckets mystery files some of you may be wondered what are some of those files that are there let's delete them they just take space and nobody really uses them it doesn't complain when they're gone to mystery files the rule file display group definitions you've probably heard what a display group is it does a lot of nice nifty stuff for you connects things for display etc that is defined in the wool file you delete that file oops not good component encoding even if you don't use display groups many very especially advanced users I guess are not using the display group so much but you might be interested in your data coming into the browser with the proper encoding you're talking to a Japanese client it comes in letting characters not so good so this is all stored in the component encoding section of the loop on the second mystery file we got new icons by the way it's the API file this API file is an XML format following the new great standards that we are following it's used during development only it tells webobjects builder what are illegal and what are illegal bindings so it won't allow you to make a connection that requires an array to something that's a flat thing etc and if you delete that oh well it will live it's used during development only and then your the build project you don't have to have it there now as I promised another demo Tom will talk about targets okay so first I wanted to open up some of these groups so you can see the default project organization and again these groups are basically just a figment of project builders imagination it doesn't correspond to the layout on disk it's just a convenient mechanism for you to organize your project one catch though is that our wizards our assistants the assistants have preferred groups that they like to put things in so that you know to make it easy when you create a new component you know gee where do you put it my project you know I put it in web components let's see so we have classes go up here we have the group with the web components each component is in its own group if you don't like that you can you know just completely rearrange that you could put them all in one group or you know each violin and in another group if you want resources let's see whoops that's doing basically you would put your your application resources the one that goes the ones that go on the application server side generally go in there the web server resources are gifts and things that Stan mentioned that need to be copied to the web server interfaces is the location where it would put nib files for Java client or Co Co Co F client frameworks bucket of course contains frameworks and one interesting bucket is the the built product bucket and it's actually a convenient way for you to go and look at the structure of the bundle that was built for your application for example if you have a burning desire to see the windows launch script you can just drill right down into it without having use the finder or terminal that's at the very end you know it's just before they workout don't show it yeah I was just sort of showing that you know this is where it appears in the project but we're not going to discuss the project structure until later as was mentioned by Stan let's see so I also wanted to show you the the targets there are two different ways of looking at targets to me the most convenient one is in this view there's a pop-up that shows all the targets and when you choose a target it puts a little donut next to the file that is in that target if you want to add a file to a target you just turn on the donut to remove it you turn it off so you can see here that all the classes all the components all the frameworks and even the web server resources will be in the application server target and looking at the web server you'll see that it's basically just the web server resources the the gifts and some frameworks so basically these gifts will be copied both to your web server and to the application server you probably won't always need to have the gifts in the application server side but if you dynamically create images it's convenient to have a copy of them there so that you can access them that's sort of up to you the frameworks are included in both targets so that your Java classes can have access to any of these frameworks I think that basically basically covers a targets and project structure Stan oh yeah I'm still here oh oh wait no I'm sorry oh there's there's another way in he's also one of those people who should have raised the hand or even being up at this time I looked at my script and you notice that there's another way to look at targets you can click on the targets tab and it lists the three targets and what's important to note here is that the application of web server targets are both sub targets of the main project target and so the the whole reason the main target exists is just to build the other two targets you never put anything in there it's just sort of a convenience so you wouldn't have to build the two targets independently when I click on the target wise people shouldn't touch him show the scary stuff now this stop sign yes when you click on these targets you get another view of the target that shows you all the files that's in them you could drag and drop files from the finder into these buckets as another way of adding files to targets and down here there are there are scripts and various settings that you probably wouldn't want to mess with you know such as these are some build settings for the targets if you really know what you're doing you might want to mess with some of the flag sent to the Java compiler but chances are you wouldn't want to mess with that most of these things so basically targets are there for you to you add and remove resources and vials too but unless you really know what you're doing you should probably just you know leave them alone and not create you on targets in and certainly not rename them all right sounds sounds lovely and when we go back to the slides I'll rewind a few that's why I was not paying attention for recap to targets the web server target static stuff one of the examples Tom movement has mentioned that you can put a file into more than one bucket excuse me target static image might be an example or an image in general for the static version that just gets download to your client and maybe your application will want to do something with it be creative with it again my favorite example those eye cards when you first come to the selection if I want this picture on that picture on that picture it's a static image it's just showing them to you it no it's not doing anything with them however later when you actually start typing text and it shows you a preview of that slide that card it became a dynamic image so it has to be on the application server as well application server there is no need to put a neo model to both targets because web server won't know what to do with it but some resources also chop java classes they might be used to put them into both a Java class might have some business logic that's used by the application server but it's also used by the Java client and everything for the Java client has to be webserver resource and again as tom said you saw that really really crafty page with ten thousand settings which very few people understand don't mess with it and now beautiful animations i mean could not have done it any better and let's go to the rapid turnaround mode the rapid turnaround won't we all have seen and we love it so much and how does it work why does it work why does it sometimes not work first what does they do for you it improves the development time you don't have to go through the whole build cycle usually you change your resource you change something fancy you just press refresh on the page it looks different so that's nice no need to perform a full split install remember the beautiful firewall picture app server web server two computers nasty you really don't want to do it each time when you build your project this one allows you to not even rebuild the project forget about a split install split is so choice to be discussed later allows tweaking of HTML files and images you don't even have to have a web server everything is done on disk i like traffic signs not necessarily toes but project builder needs to be running while you are in rapid turnaround mode so you can for instance just have web objects builder running tweak some components press refresh and expect something to happen it's not going to happen that's because web objects framework and the web objects builder are talking in the background with project builder to find the resources there is this really fancy thing thank you tom the abstraction layer that abstracts communication between all our tools to have objects tools and the proper austin development tools as i said it used to be that through this whole bucket thing everything had to live in one directory and so we could find all the resources where we wanted them because they were in this little directory now you can have resources spread out on the network anywhere in the all system so we have to find them only project Buller knows where all the resources are because it's running it knows it has the project loaded so when we ask it hey where's the component bla it tells us right here and we can find it so it's really important that you have this that you remember to have project builder running because otherwise rapid turnout will not work and back to our chief demo demo okay so now I'm gonna run this application which I see has built successfully actually didn't I recommend okay when I build you have to make sure you're on the main target otherwise your execution button one highlight and actually as Stan said there there are two pieces to rapid turnaround one is your web objects application talks to project builder the other is Wahb talks to project builder and that's actually two different code paths and there are some subtle cases where they behave slightly differently one example would be if you edit a Neal model Anil modeler and save it WOB will notice the changes and they'll show up in your variables browser but the running application won't refresh the you model so you have to relaunch yeah you don't have to rebuild your application but you do have to relaunch it and sort of the way it works internally is the the web object framework basically treats project builder as your application bundle it doesn't even look in the built bundle it just talks to project builder whenever it's looking for a resource so basically if you add a resource it'll always find it without the need to rebuild so oK we've run the application and I've got this component let's see and the way it's working is it's actually pointing to the very same file that you're editing in the Builder so if you change your component then hit refresh in the browser not home refresh it'll update right away and also if you drag in a gif and I believe I have some some graphics on this machine somewhere there we go we'll drag in a moose to beautify our application let's see if I can have a project builder showing the background so that you can watch it put the gift where it goes okay finder we have a high resolution but didn't get it now see this is been just kind of in the way there we go now you can see now we still can see the project there so here's the project you're the resources we're gonna drag in the moose it offers to add it to the application and you can see it's stuffed it in the bucket it's updated in Wahb we now have that a moose yeah there's a moose in there I know that guy behind the tree it's it's hiding I mean you know we're sorry we're save the component switch back to Explorer hit refresh and the moose instantly appears thank you so basically for for things like adding resources as long as you don't change code in theory you shouldn't have to rebuild your application and that's the really should go by when things don't seem to be working as you expect you probably just need to relaunch chances are you don't have to rebuild unless you've added code no Tom you just added an image which targeted get at it - I see the Moose in the outline view there but you don't want to touch from the target so it should have added it to the web server resources and you can see by the donut that it has and that's something WOB just chose to edit to the web server and it goes by the name of the target so it has a project builder you know give me the web server target and if you don't have one named webserver then it'll just add it to the project but won't add it to a target so if you did change the target names the tools wouldn't work as well but it would still add things to the project right so at this point you could also now choose manually - if we stay with this to add it also to the app server target sure I could just switch every switch there you see the donut isn't there just click on it if this were say your eye cards page and you wanted to do both static display and also dynam it doesn't hurt even if you don't need it that way but you know if you're not sure where to go just put it to both its gonna waste a little bit of disk space but the end okay hundred gig drives today what is it just peanuts so this cameras opinions mm-hmm the price of convenience that is usually like that it's like electricity in California DS that's right anyway so thanks Tom yep let's go back lovely slides so much for rapid turnaround serious integration in project builder I don't know if you've been to the project builder sessions we scheduled the web objects track so that you can always go to the project builder sessions there was always nice gaps they could have been used for lunch and other breaks but project builder was the thought this was discussed there what a CVS will show you in our session briefly how it really works well with web objects as well what can you do for you on OS 10 and what is it what is CBS concurrent versioning system it's open source which is great these days it's not owned by a single gigantic company who wants to own everything it comes pre-installed with the developer version of OS 10 so we kind of know it's there we can rely on its presence and on its feature set its cross-platform so even if you're developing on the platform that's owned by one big corporation you still can use CVS and we do support that it's command line only ouch don't say that in the Macintosh community it's very powerful but also very very CVS tends to get crufty I mean I read the main main pages more often than I would like to but we use it internally so it's got to be good and at least the integration is really good because all the tools are built to work with CVS how does project builder help you with CVS there is this SCM menu which stands for source management court controls as sourcing it's something source control it shows you what at this time of day I don't know even my name it shows you where you added and deleted files that's one of the tricky things you know you're in command line you add a file there you add it to the make file or what have you and you build the project it's just great you do a CVS commit next day you check it out and it's not working because you forgot to add it project builder does that for you it supports the deletion of simple files as well as wrappers you know file wrappers those really nice things that are a dot whoa or dot yo model D they show up like a little file but if you don't know about it you add it nothing got added because it's actually directory so it works recursively and it allows remote C it supports remote CVS servers with security so that's an add-on bonus you don't have to have your CVS repository somewhere on the file system on the network excuse me and have everybody see it or not it supports authentication Tom hey you should have been in the first slide like name you're doing most of the work here show us okay so project builder has all kinds of support for viewing differences in your CVS repository but they haven't added something to allow you to check out a project so you still have to do that on the command line let's see so CVS checkout seal for short and we've created a CVS repository on this machine so that's checked out the think movies project we can open that with the command line - since we're already here oh that terminal does strange things when you have a large font sometimes ok so now we're going to modify one of these components and show you the interactions with CVS so go ahead and open that in WOB and let's say we wanted to add a key and that inaction say they want to go back to project builder and actually you have to save the file before it actually checks with CVS and you can see it's put a little m over here to show us that we've modified that file so as you go on working you'll notice M's appearing next to files that you've modified you can quickly look and see which ones have changed then after you've edited for a while you'd probably want to go and see how it compares to the file that you originally started with so you can go up here to the SCM menu and say compare with base and that opens up both the original file and the modified file in file merge so it makes it very easy to go through and review your dips which is something that we do before we check in our code let's see so Tom this is you know I can do that in command line my big problem with CVS is renaming files how many of you have tried and failed to rename a file in CVS directories all this good stuff you see but Tom do you have an answer for that we sure do Stan it's the right answer okay yeah in general to rename a file in CVS you have to remove the file and then add it and of course you can't remove the file unless you delete it so you have to delete it rename it at it and remove it to just rename the file in the right order of course in the right order of course but in project builder you can just do a get info on the file and you'll notice that it has this is a list of all the CVS commit logs with useful information about all the changes that the engineer has made on this project and you change the name you just type in a new name and it warns me that time changing the name uh-huh and and actually over here you'll notice that it's marked the old file for removal and has created a new file that it's marked for addition which is a big improvement over what we did before which would you know look something like this before we check in we want to review our diffs basically you know shows you stuff like this if I'm in the right directory but anyway that was the old way now there's the new way so when we're all done we want to check in our project you can either select an individual file and go over to commit changes or you can choose the root of the project and commit all the changes what you can also do actually as you can select a sub group several groups of groups like that when you're renaming a file you have to select both files or you just have to select a super group of that because otherwise it will check in the new file but it will not remove the old one so your rename process will be just as usual incomplete okay so you're prompted for your helpful and informative commit message Thomas famous for his really descriptive comments in CVS and all the em czars and A's have gone away and seems to have left an M up here for an inexplicable reason okay so you just put a comment in that file can I get at it in some way to see later what you think it is actually I believe I demonstrated that earlier Stan you can bring it the information panel I mean you have to check on because you never know what he's doing and in the information panel it gives you a list of all of the helpful and informative commit messages well thank you now I know how to keep an eye on you alright alright so far so good now let's get to the really nasty stuff it's all that nasty it's just demo is not so pretty installation of of objects applications we will now discuss build styles split installs and somewhat the content of a finished build product project build styles we have touched the targets that's only half of the whole issue in project but we also have different build styles build styles define different compiler settings in general during different kinds of build it's used by web objects
- these describe different parts worried
should go web server app server as well together with the targets there's three build styles there's the one for the development that's the one that you using when you using the turnaround when you're just debugging your app and still working on it and there's the deployment one that you would use to actually finally deploy the application and there's the third the web server which is kind of confusing it's used to build the product for the web server so I didn't make this table but it sure looks nice things to install there is many different kinds of resources that are part of a project there's the apps or resources components you models etc that's the left column then we have the three clones for the three different targets during develop builds that excuse me during development when we're using rapid turnaround everything gets built into the builds directory you're building your compiling you can specify project builder where all your build intermediate products will be placed usually in a local directory so the filesystem isn't so busy but when we actually go to develop and deploy when we go to deploy an application we want to have the finished product built somewhere else in the application server installation directory that's where the application eventually will live that's so good so so far so good by the web server resources they're on a different server remember that slide where the web server was kind of behind the firewall and the app server was behind the firewall and they were not really the same computer necessarily if that's the case you have to invoke the web server build style as well so that the web server resources actually get copied onto the web server itself so that's the one big difference when you're in development remember use the development build style everything will be just ducky when you ready to deploy you have to invoke both the deployment and the web server build style to get it done the second somewhat not quite optimal thing yet in project builder you cannot invoke the install step from the IDE you have to do it in terminal so you have to open terminal and type in PBX build install - build style and then one of the to build styles either deployment or web server and you have to do both and then that's true equal slash usually you don't want the files the build target to live in temp which is where the finished product will be placed because you reboot the Machine and you know where temp went so you want to have it live in slash so that everything gets properly expanded and is really persistent however you might want to omit the best your equal slash in case that your actual server is not your development machine which often k oftentimes is the case so you can leave it there everything will be nicely installed in temp and then you can use the tarp program of your choice to just tore the whole thing up and move it to your what do I know Solaris server split installs once again require both the deployment and web server build style to be invoked so that the files get in the proper directories if you aren't doing a split install if you have one machine that does it everything for you you don't have to do that the deployment is sufficient okay now we build it now what's in there web objects 5 as its predecessors but world objects 5 more so than before it's cross-platform because it's Java which brings some really nice problems with it the line scripts you've been here all week now and you see that red things grow by in project builder each time when somebody launches an application it's no longer just a single word to launch an app you actually need more to be done because you need to tell the Java VM things etc so in the OS 10 and UNIX for the OS 10 a UNIX case there is the launch scripts they live in the main wrapper and then also incontinence
- slash Mac OS app name that's a little
script it's the same script for both UNIX and Mac OS 10 probably because Mike OS can use UNIX for Windows deployment there is the windows deployment script which also lives in the main wrapper and it's called app name dot CMD and it also lives in the proper contents directory those two copies are identical but they are used to be used on Windows then there is the classpath file that one is used to for all the information for the java vm you know what kind of were to find the other classes were to kind of find the frameworks when you use project builder this is all created for you automatically you don't have to worry about anything and those class pass files are automatically passed as arguments by the launch scripts but just in case you want to mess with it that's where they are during the content slash and individual directories depending on platform and here we see there is a one for Mac OS there's one for UNIX and there's one for Windows because your Solaris machine has most likely somewhat different Java VM or different libraries than your Mac os10 machine then for java client we've had many nice and powerful demos of the chavacano and director Java client technologies it's all really nice and good when you don't know how to launch the application it's a problem many people don't know there's actually a script to do that it's in the main app wrapper in contents and there is the app name little script that actually launches the Java client and everything is once again done for you and then there's some other stuff in the app wrapper that whoaa there is all kinds of resources again we have the application server resources and we have the web server resources so there's two directories to distinguish those on an application server when you have a split installer there is an app server and there's a web server those directories will be will have very different contents if it's one on the same machine it's gonna be one of the same you have enough of this alright the last part of today's presentation will be the custom walk palettes and the good news is this is the only slide for that topic it's the good news for me because then I can retire what our web palette swap house excuse me this is one of those other new features in web objects builder for with objects 5 you can customize palettes in WAP it's very easy now it's just drag-and-drop like it should be and you can use it to store components or useable components so for instance if you are a developer freelance person and you want to reuse your components for many different clients you just create a palette and tracks drop stuff from it if you're a company who wants to share one on the same look and feel of components across many different products you do the same you create a new palette and then you can use the same components over and over in all of your apps to assure the same look and feel so for the lost tom tom show us so here we are at the last demo so the pallets have you know basically two broad uses one is kind of as a scrapbook for frequently used bits of HTML that you don't want to type over and over another is as an extension mechanism for the Builder so you can't really add if you write your own framework with your own elements you can't add to the toolbar you can add them to this menu but you can make a palette that has your custom elements and that makes it an easy way for you to extend the Builder for example we had an engineer put together a smile framework which is synchronized multimedia instruction language we and it comes with a set of components that you can drag into your your component so it's just sort of he made the framework and wants to make it easy for people to use so you make the palette and then they can see it right there and just drag the elements in so it's very convenient for this what's gonna happen dragon elements like that in there even though you don't know what what it is these it just looks like a generic container oh what's that oh yeah and it's gonna want to add the the corresponding framework for the or smile and I I don't want to do that with this demo right now I'm not sure what that does exactly but they just look like you know generic containers that you could drag other elements into and apparently when you use this you would hide them inside of an embed tag and then the QuickTime plug-in will find the XML and execute the instructions and you could do a very busy demo which we're not going to do but it was nice that it suggested that we add the framework and it would have done it all for us and it said anything any frameworks at least that the elements you dragon require I will go ahead and automatically add for you that's the whole wizardry behind it it's why it's now called assistance yes that's why okay so we're gonna create a new palette and actually a lot of this code has been reworked for this release you can drag and drop and it actually saves a little image of the HTML that you've dragged and you can resize that to your heart's content at this point I think the feature request would be to make it proportional resizing kind of looks proportional Shift key yes that's that but then again you should know what to drag during the first place so let's see okay so now I wanted to show you a custom element that we've added and we're going to drag into our application so we'll put it somewhere under the mousse get rid of the muth it's shedding you don't like the most yeah well do you want to put it on the ballot later we could put the mousse on the ballot should we choose okay so we're dragging in a custom search panel and it's going to require its own framework which has some of the gif resources that it requires so we drag that in and we wire it up so just play group after moving everything out of the way okay so let's see so I just play group we want to search on movie title so we bind that to the search field and when you click search we want it to requalified a to the data source action save that build this is the riskiest part of all the demos we launched the application oops when I forgot one step but that's okay because I can fix it using mousse is gone that's the power of rapid turnaround I was supposed to paste all of this stuff into here there we go so we've added a search panel and an aqua look and feel to our component all by just dragging and that concludes the pallet demo doesn't hum you did really well in all four demos even though you wouldn't be up even at this time well this kind of brings us to and then I think the whole presentation is like five minutes too short because I guess I forgot half of this stuff to summarize in short project builder is the core of web objects live development pretty much everything revolves around it it's in constant communication with all of other web object specific tools you have to use different build targets for different parts of your project for different files as I said images are the most likely candidate to be one or the other sometimes even both otherwise it's more clear-cut components they're always appserver static stuff is pretty much always web server and different build styles to finally deploy your your project it's in the last part when you're really done with it when you want to go to final testing you have to invoke those build styles on the command line because currently there is no support for that from the IDE and also you have to explicitly name both build styles deployment and web server we are worried that that probably could be optimized in the next release at this point I would like to invite you the web objects lab that closes in a few hours and of course do vote for web objects is the coolest web server because that it is absolutely excuse me and the road map is kind of short since there's no that much time left in this week we have web object security then we have optimizing web objects applications that's a pretty interesting talk as well and I think you will want to voice feedback in the feedback session who to contact my boss Tony she's at web objects that at apple.com so it's Bob Fraser who is our marketing person you