Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!rosie!aozer From: aozer@next.com (Ali Ozer) Newsgroups: comp.sys.next Subject: Re: Interface Builder observations Message-ID: <293@rosie.NeXT.COM> Date: 16 Feb 91 01:25:46 GMT References: <423@heaven.woodside.ca.us> Sender: news@NeXT.COM Organization: Next Computer, Inc. Lines: 58 Nntp-Posting-Host: twinpeaks.next.com In article <423@heaven.woodside.ca.us> Glenn C. Reid writes: >Interface Builder is an impressive piece of software, there is >no doubt. But tonight I was struck by a number of peculiarities >that it has. For example: > >1. It is the only program I've seen that draws outside its > windows onto the rest of the screen (when you control-drag > to make a connection). How on earth does it do this? It > seems like it must be a hack; I haven't seen any support > for it in the AppKit > >2. It is the only program I've seen that alters the look of its > icon while it's in the dock (when you're in "test interface" > mode it turns into a giant switch). How on earth does it do > this? It seems like it too must be a hack. Given that the only way to draw on the screen is in a window, Interface Builder creates long, thin PLAINSTYLE windows to draw its lines. Perfectly legal. As far as drawing in the running application icon, Interface Builder does that by drawing in the window returned by the appIcon method of Application. Under 2.0 this window's borders are "protected" from the app, but otherwise the app is free to draw whatever it wants in the window, and it can even replace the content view. These features of IB aren't hacks; they are based on public API in the kit, so they're perfectly legal and available to all apps. You might be calling them "hacks" because they are somewhat different as far as NeXTstep UI paradigms go, however, they are justified: #1 turned out to be the preferred way of making connections after many months of pre-1.0 IB testing, during which time the way of creating connections was changed several times, all based on user feedback. #2, drawing in the running app icon, is used by various apps to indicate their status (especially while hidden) --- Preferences, Mail, and some of the examples all do this, for instance. What IB does is no different: It changes its app icon to indicate that it's hidden in test mode. >3. There are several features which are only accessible by holding > down modifier keys, like control-dragging to connect or alt- > dragging to increasing the number of items in a matrix--but > these are not available through any other means (like menu items). > Questionable practice in a user interface, although Workspace > Manager uses this kind of "features" too (when creating symbolic > links, forcing a move or a copy, etc.). The use of alt, cntl, shift, etc to modify mouse operations are allowed under NeXTstep UI guidelines, but for "advanced" features that extend the operation naturally performed by the mouse (in this case, resize). This seems to fit IB's use of these keys. However, it's a valid point that there should be some indication as to the operation being performed --- IB should maybe change the cursor to indicate what's happening (resize items, resize matrix, resize intercell spacing, etc), or maybe have menu items or a bunch of radio buttons to indicate what a mouse drag on the little knobs will do by default. Then the keyboard shortcuts can be used to temporarily switch to another operation. This would make these features more accessible to the new user without slowing down the advanced user. Ali, Ali_Ozer@NeXT.com