From: thomas m. <tho...@gm...> - 2006-08-23 16:45:42
|
hi On 8/23/06, Ray Chuan <rc...@gm...> wrote: > > Hi, > I've figured it out. It's got to do with the way windows are handled > in ActionStep. It's been fixed. If you want to know more, read on. > > A window is made up of MovieClips (mcs). (Actually views are but for > the sake of simplicity let's ignore that.) A menu contains windows. So when a menu (and hence the window) is created *before* NSApp is > run, this takes place automatically, ie the mcs are created for you. > > But for your case, the windows are created *after* NSApp has started > running (I assume), so they will not have their mcs created. I've > changed that, so when a menu is displayed it's window is also forced > to create it's own mcs. mmm I don't know but the sequence was : ------ m_app = m_app = NSApplication.sharedApplication(); createMenu() //which contains m_mainMenu = (new SMMenu()).initWithTitle("My Menu"); where SMMenu is subclassing NSMenu m_app.run(); ------ so I thought the menu was created *before" I start the app. As for why you need to click it twice, apparently the display method > is called when the submenu is detached. Sounds weird, huh? I've fixed > this too. it works now, but what I don't get is why it was working with NSMenu but not with my subclass ... thanks ! On 8/23/06, thomas mery <tho...@gm...> wrote: > > hi all, > > > > I have tried to subclass NSMenu and have encountered a weird behaviour. > > > > I have to click twice on my main items to make the submenus appear (or > have > > to rollover twice on submenus that have submenus) > > > > here is my code so maybe someone can tell me what i am doing wrong ... > > > > import org.actionstep.menu.NSMenuItemCell; > > import org.actionstep.menu.NSMenuView; > > import org.actionstep.NSApplication; > > import org.actionstep.NSException ; > > import org.actionstep.NSFont; > > import org.actionstep.NSMenu; > > import org.actionstep.NSMenuItem; > > import org.actionstep.NSWindow; > > > > import com.screenmatters.controllers.CategoriesController; > > import com.screenmatters.controllers.SMController ; > > import org.actionstep.NSPoint; > > > > /** > > * @author tom > > */ > > class com.screenmatters.menu.SMMenu extends NSMenu { > > > > private var m_controller:CategoriesController; > > > > private var m_itemsArray:Object; > > > > public function SMMenu() { > > > > super(); > > menuRepresentation().setHorizontal(false); > > > > } > > > > public function initWithTitle(title:String):SMMenu { > > > > super.initWithTitle(title); > > return this; > > > > } > > > > public function > > initWithController(controller:Function):SMMenu { > > > > m_controller = controller.getInstance(); > > > > return this; > > > > } > > > > public function setController(controller:Function) { > > > > m_controller = controller.getInstance(); > > > > return m_controller; > > > > } > > > > //returns menu controller > > public function controller():Object { > > > > return m_controller; > > > > } > > > > public function populate(itemsArray:Object,menu:SMMenu) > > { > > > > if(menu == null) { > > > > menu = this; > > > > } > > > > if(itemsArray.length > 0) { > > > > var mi:NSMenuItem; > > > > for(var i:Number = 0; i < itemsArray.length; i++) { > > > > var itemName = > > itemsArray[i]['CategoryName'][0]['name']; > > mi = > > menu.addItemWithTitleActionKeyEquivalent (itemName); > > mi.setTarget(this); > > mi.setAction("traceMenuItem"); > > > > if(itemsArray[i]['children'].length > 0) { > > > > var submenu = (new SMMenu()).initWithTitle("Menu > for " > > + itemName); > > menu.setSubmenuForItem(submenu,mi); > > > > populate(itemsArray[i]['children'],submenu); > > > > } > > > > } > > > > } > > > > } > > } > > > > > > > > TIA > > > > thomas > > > > > ------------------------------------------------------------------------- > > Using Tomcat but need to do more? Need to support web services, > security? > > Get stuff done quickly with pre-integrated technology to make your job > > easier > > Download IBM WebSphere Application Server v.1.0.1 based on Apache > Geronimo > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > > > _______________________________________________ > > actionstep-core mailing list > > act...@li... > > https://lists.sourceforge.net/lists/listinfo/actionstep-core > > > > > > > > > -- > Cheers, > Ray Chuan > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job > easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > actionstep-core mailing list > act...@li... > https://lists.sourceforge.net/lists/listinfo/actionstep-core > -- ---------------------------------------------------------- Thomas Mery en concert : Septembre 20/09 OPA - Paris Octobre 14/10 Limoges 15/10 --- 16/10 --- 17/10 Toulouse 18/10 --- 19/10 Bordeaux 20/10 --- 21/10 Reims Novembre 10/11 Macon http://www.myspace.com/thomasmery http://www.thomas-mery.net ---------------------------------------------------------- |