TweetFollow Us on Twitter

AutoHyperEdit
Volume Number:4
Issue Number:7
Column Tag:HyperChat™

Auto Hyper Edit Moves in Groups

By Fred Stauder, HyperChat Editor, Zurich, Switzerland

AutoHyperEdit

Over the last few months we have seen the evolution of Hypercard Stacks. We have also been evolving AutoScriptEdit by showing you how to increase the functionality while retaining simplicity. I have had a lot of feedback about ASE and most people prefer it to the inbuilt shortcuts in Hypercard 1.2.

So what was I to do for an encore, well I always wanted to group and move buttons etc. Souix Lacey did a great job with Groupies, and I wondered if I could make Hypercard act more in a Mac way. I decided to write AutoHyperEdit.

Well I started experimenting and I was thoroughly addicted to solving the problem. Even half way throug writing it I thought it would be impossible to get around some obstacles that would make it work. The script basically allows the user to shift and click on objects to group them. The problem was if you clicked on a button for example after my stack had done it’s stuff it would then execute the button that was clicked on. So I couldn’t use nice things like target. The way I got around that was to check what objects were under the mouse at the time of the shiftKey.

After I had the scripting finished I decided I would make a model Installer and Demo Stack. I will first take you through the Stack and then get into how and what was done.

figure 1. AutoHyperEdit

The opening card shows what a little shading can do to add depth to your stack. The buttons I created to give as much feedback as possible. When you click on a button it appears to move in and the center black square turns to white. This is done by switching icons. Also to implement more feedback a click sound is heard.

I can’t stress the importance of a good user interface particularly in Hypercard. At least half of my time in this project was spent on the interface. Apple is spending a lot of dollars on interface technology and have recognised the need for using it to aid in the smooth information flow between computer and machine. There is a group at Apple called the Human Interface Group, their sole job is to work on interface ideas and guidelines. If you have not read the Human Interface Guidelines do so immediately. It is a must. The guidlines are available through APDA and in some Bookshops and Computer Stores.

If you go to the examples card you will see three new buttons; “Script Tools”, “Object Tools” and “Aligning Tools”.

figure 2.

The Script Tools are the tools found in AutoScriptEdit-III. I use an interesting way to demo how the tools are to be used. There is part of a keyboard and part of a mouse pad and a mouse in the bottom left of the card, see figure 3.

figure 3.

When you click on a selection, you also get visual and auditory feedback, a field pops up along with two buttons; “Close” and “Show Me”.

figure 4.

Clicking on “Show Me” Starts the demo. First the cursor dissapears and an icon that is identical to the cursor is shown at the point of interest. To attract the attention to the moving parts I “flash” (hilite/unhilite) both the cursor and the the mouse icon. now I play the tune:

play harpsichord tempo 1200 c5 c6 c7

This signifies the start of what you should do. I then play the word “mousedown” which has been digitized. The icon changes showing a mouse with the button down. I showed the original demo’s to non Mac users and they could follow how to do it easily. My previous tests where I didn’t have all the feedback the user was a bit lost and did not know where to focus his attention. The rest of the demo shows the “mouse” and the “cursor” moving up above a field. The script editor is then evoked.

The Object Tools shows buttons; “Grouping”, “Moving”, “Copying”, and “Clearing” see figure 5.

figure 5.

The action of the buttons remain consistent even though the location is slightly different. One of the things to watch out for in your stacks is to keep consistency and simplicity at the forefront of your mind when you are designing.

The demo of grouping shows the tool window first to show that you must be in the browse tool mode. You then click on an object with the shift key down. This will hilite a button.

figure 6

There was a problem of not being able to hilite a field, so as well as a hilite I use a click tone. To select more objects just shift click again and to de-select you also shift click. Once you have finished selection you must double click not on an object. This will bring you to the button tool where you can choose a menu item such as “copy button”. Or simply type command-C. I used a feature of Hypercard 1.2 to show the card picture. I have a menu as a card picture and I show it and drag a hilited transperent button to act as a regular menu, see figure 7. Now go to the card you want to paste to and do a command-V and the objects will appear.

figure 7.

Clearing objects works in the same way, first selection then, double click, then menu command.

The next section is Aligning Tools. This allows you to select objects as before and then to hold down the mouse where you want the objects to be aligned, press the arrow key which corresponds to the alignment i.e. left arrow align left.

figure 8.

I also created an installer that puts the script into your home stack and adds a checkbox in the preferences card to allow you to turn AHE on and off. I do this in an interesting way. As well as the checkbox I add a hidden field to the card. I put the home stack into the field and search for specific comment strings that are on the same line as the handlers and I comment out the begining and end of the handlers.

{1}
on mouseUp
  if the hilite of me is false
  then
    put the script of this stack  into cd fld “TempAHE”
    lock screen
    show cd fld “TempAHE”
    repeat 8 times
      set cursor  to busy
      find “--**AutoHyperEdit**--”
      put the foundline into temp
      select temp
      put “--” before the selection
      put the selection into temp
    end repeat
    set script of this stack to cd fld “TempAHE”
    put empty into cd fld “TempAHE”
    hide cd fld “TempAHE”
    unlock screen
  else
    put the script of this stack  into cd fld “TempAHE”
    lock screen
    show cd fld “TempAHE”
    repeat 8 times
      set cursor  to busy
      find “--**AutoHyperEdit**--”
      put the foundline into temp
      select temp
      put the selectedtext into stext
      delete char 1 to 2 of stext
      put stext into the selection
      put stext into temp
    end repeat
    set script of this stack to cd fld “TempAHE”
    put empty into cd fld “TempAHE”
    hide cd fld “TempAHE”
    unlock screen
  end if
end mouseUp

The Remove card simply removes all traces of AHE.

Here is the script I will go through the important parts and tell you what they do.


{2}
---- AutoHyperEdit 1.0  by Fred Stauder  June 1988 ----

-- Put this Script into your Home Stack
-- To use keep mouse btn down over Button or Field and move mouse up
-- To edit Bkgnd Script keep mouse btn down move mouse to -left of card
-- Card Script - move right
-- Stack Script - move up
-- Now works with unlocked fields
-- To lock and unlock fields option click in them
-- To show/hide tools/patterns at cursor
-- hold option click on non-field areas
-- click in top left to hide cd window botom right to show
--Group objects by shift clicking in browse tool
--Move objects by holding mouse down and draging
--Copy and Clear groups of objects after selecting by using menus
-- Align objects after selecting, hold mouse down at align loc and press
-- the arrow key i.e. align left use left arrow key
-- Turn AHE on and Off using the  Checkbox installed in the Pref Card 
of Home

The globals are CWSlist is where the selected objects id’s are cwloc is the card window location to hide the card and selectcomp is a flag for when the selections are compleated.

Gobo resets the hilites and puts empty into CWSList. The first section is AutoScriptedit Stuff.

{3}
on mouseStillDown --**AutoHyperEdit**--
  Global cwslist,cwLoc,selectcomp
  if selectcomp is “true” then gobo
  
  put empty into CWSList
  
  if the optionkey is down
  then
    if the target contains “field” then set locktext of target to false
    else
      if the optionkey is down then
        set the visible of pattern window to not the visible of pattern 
window
        set the loc of pattern window to the mouseloc
        set the visible of tool window to not the visible of tool window
        set the loc of tool window to the mouseloc
        exit mouseStillDown --------
      end if
    end if
  end if
  if the mouseloc is within “0,0,10,10”
  then
    put the loc of card window into CWLoc
    set loc of card window to -504,-315
    exit mousestilldown
  end if
  if the mouseloc is within “500,333,512,346”
  then
    set loc of card window to CWLoc
    exit mouseStillDown
  end if
  put char 6 of the target into C6
  if C6 is quote then AutoScriptEdit
  if C6 is “i” then AutoScriptEdit
  if C6 is quote then exit mousestilldown
  if C6 is “i” then exit mousestilldown
  if the mouseV <item 2 of rect of target then edit script of target
  else
    ------------------CWS
    put empty into foundit
    put false into offdetected
    if cwslist is empty
    then
      if the shiftkey is down
      then
        repeat until offdetected is true
          if the shiftkey is down
          then
            shiftselect

Here we go to the routine that selects objects.

{4}
            put false into foundit
          else
            movegroup
            wait until the mouse is down
            repeat with y = the number of items in CWSlist down to 1
              if the mouseloc is within the rect of item y of cwslist
              then
                put false into foundit
                exit repeat
              else
                put true into foundit
              end if
            end repeat
          end if
          if foundit is true
          then if the shiftkey is up then put true into offdetected
        end repeat
        
        choose btn tool
        select item 1 of cwslist
        put “true” into selectcomp
      end if
    end if
  end if
  --pass mouseStillDown
end mouseStillDown --**AutoHyperEdit**--


on AutoScriptEdit
  if the mouseH < 2   then edit script of this bkgnd
  if the mouseH > 510 then edit script of this card
  if the mouseV < 2   then edit script of this stack
end AutoScriptEdit

on openfield --**AutoHyperEdit**--
  if the optionkey is down
  then
    if the mouseV <item 2 of rect of target
    then
      edit script of target
      set locktext of target to false
      exit openfield
    end if
    set locktext of target to true
  end if
  pass openfield
end openfield --**AutoHyperEdit**--

This traps the menu selections so that copy buttons etc will work on groups of objects

{5}
on domenu stuff --**AutoHyperEdit**--
  global WhatsMyCardName,CWSList,selectcomp
  if selectcomp is true
  then
    if  stuff is “clear button”
    then
      clrobj
      exit domenu
    else if stuff is “Copy Button” then
      put the long name of this card into WhatsMyCardName
      pass domenu
    else if stuff is “cut button” then put tip into top
    else if stuff is “paste button” then
      pasteobj
      exit domenu
    else if stuff is “Copy field”then
      put the name of this card into WhatsMyCardName
      pass domenu
    else if stuff is “paste field” then pasteobj
    else if stuff is “clear field” then clrobj
    pass domenu
    exit domenu
  end if
  pass domenu
end domenu --**AutoHyperEdit**--

This is the Object clearing routine.

{6}
on clrobj
  global CWSList
  lock screen
  repeat with p= the number of items in CWSlist down to 1
    set cursor to busy
    put item p of CWSlist into it
    select it
    type “x” with commandkey
  end repeat
  choose browse tool
  unlock screen
  put empty into Cwslist
end clrobj

This is the object pasting routine

{7}
on pasteobj
  global CWSList,WhatsMyCardName,selectcomp
  put false into selectcomp
  set lockscreen to true
  set lockmessages to true
  repeat with x= the number of items in CWSlist down to 1
    if second word of item x of CWSList ¬
    is “field” then choose field tool else choose btn tool
    set cursor to busy
    push card
    go to WhatsMyCardName
    put item x of CWSlist into it
    if second word of it is “btn” then set hilite of it to false
    if first word of it is “btn” then set hilite of it to false
    select it
    type “c” with commandkey
    pop card
    if first word of it is “Bkgnd” then type “b” with cmdkey
    type “v” with commandkey
    if first word of it is “Bkgnd” then type “b” with cmdkey
  end repeat
  choose browse tool
  set lockscreen to false
  set lockmessages to false
  put empty into CWSlist
  put empty into WhatsMyCardName
  put false into selectcomp
  choose browse tool
end pasteobj

on gobo
  global CWSList,turnoff,selectcomp
  repeat with x= the number of items in CWSlist down to 1
    if second word of item x of CWSList is “btn” then set the hilite 
of item x of CWSlist to not the hilite of item x of CWSlist
    if first word of item x of CWSList is “btn” then set the hilite of 
item x of CWSlist to not the hilite of item x of CWSlist
  end repeat
  put empty into CWSList
end gobo

Here I had to test for different objects. I tried to put “if the mouseloc is within the rect of a variable then....” where the variable contained an objuct such as btn and another variable. This did not work it is a pity I could have cut the script down considerably. Because of this I have to handle the object types seperately.

{8}
on shiftselect
  global CWSlist,w,x,y,z
  repeat until the shiftkey is up
    repeat while the mouse is down
      repeat with w = the number of cd btns down to 1
        if the mouseloc is within the rect of btn w then HITCBtn
      end repeat
      repeat with x = the number of bkgnd btns down to 1
        if the mouseloc is within the rect of bkgnd btn x then HITBBtn
      end repeat
      repeat with y = the number of cd flds down to 1
        if the mouseloc is within the rect of cd fld y then HITCFld
      end repeat
      repeat with z = the number of bkgnd flds down to 1
        if the mouseloc is within the rect of bkgnd fld z then HITBFld
      end repeat
    end repeat
  end repeat
end shiftselect

on HitBFld
  global CWSlist,z
  put false into foundit
  if the commandkey is down then set the visible of bkgnd fld z to not 
the visible of bkgnd fld z
  if the number of items in CWSlist =0
  then
    put “Bkgnd field id “ & the id of Bkgnd fld z & “,”after CWSList
    play harpsichord tempo 100 b#x7
    exit HitBFld
  end if
  repeat with p = the number of items in CWSlist  down to 1
    put item p of CWSList into it
    if it = “Bkgnd field id “ & the id of Bkgnd fld z
    then
      delete item p of CWSList
      play harpsichord tempo 100 b#x7
      exit HitBFld
    end if
  end repeat
  put “Bkgnd field id “ & the id of bkgnd fld z & “,”after CWSList
  play harpsichord tempo 100 b#x7
end HitBFld

on HitCFld
  global CWSlist,y
  put false into foundit
  if the commandkey is down then set the visible of cd fld y to not the 
visible of cd fld y
  if the number of items in CWSlist =0
  then
    put “Card field id “ & the id of cd fld y & “,”after CWSList
    play harpsichord tempo 100 b#x7
    exit HitCFld
  end if
  repeat with p = the number of items in CWSlist  down to 1
    put item p of CWSList into it
    if it = “Card field id “ & the id of cd fld y
    then
      delete item p of CWSList
      play harpsichord tempo 100 b#x7
      exit HitCFld
    end if
  end repeat
  put “Card field id “ & the id of cd fld y & “,”after CWSList
  play harpsichord tempo 100 b#x7
end HitCFld

on HitBBtn
  global CWSlist,x
  put false into foundit
  if the commandkey is down then set the visible of bkgnd btn x to not 
the visible of bkgnd btn x
  set the hilite of bkgnd btn x to not the hilite of bkgnd btn x
  if the number of items in CWSlist =0
  then
    put “bkgnd btn id “ & the id of bkgnd btn x & “,”after CWSList
    play harpsichord tempo 100 b#x7
    exit hitBBtn
  end if
  repeat with p = the number of items in CWSlist  down to 1
    put item p of CWSList into it
    if it = “bkgnd btn id “ & the id of bkgnd btn x
    then
      delete item p of CWSList
      play harpsichord tempo 100 b#x7
      exit hitBBtn
    end if
  end repeat
  put “bkgnd btn id “ & the id of bkgnd btn x & “,”after CWSList
  play harpsichord tempo 100 b#x7
end HitBBtn

on HitCBtn
  global CWSlist,w
  put false into foundit
  if the commandkey is down then set the visible of btn w to not the 
visible of btn w
  set the hilite of btn w to not the hilite of btn w
  if the number of items in CWSlist =0
  then
    put “btn id “ & the id of btn w & “,”after CWSList
    play harpsichord tempo 100 b#x7
    exit hitCBtn
  end if
  repeat with p = the number of items in CWSlist  down to 1
    put item p of CWSList into it
    if it = “btn id “ & the id of btn w
    then
      delete item p of CWSList
      play harpsichord tempo 100 b#x7
      exit hitCBtn
    end if
  end repeat
  put “btn id “ & the id of btn w & “,”after CWSList
  play harpsichord tempo 100 b#x7
end HitCBtn

This section moves the objects.

{9}
on movegroup
  global CWSList
  wait until the mouse is down
  put the mouseLoc into mLoc
  put empty into mH
  put empty into mV
  repeat with i = 1 to the number of items in CWSList
    put item i of CWSList into iList
    put item 1 of the loc of iList - item 1 of mLoc & “,” after mH
    put item 2 of the loc of iList - item 2 of mLoc & “,” after mV
  end repeat
  repeat while the mouse is down
    get the mouseLoc
    lock screen
    repeat with i = 1 to the number of items in CWSList
      put it into iList
      add item i of mH to item 1 of iList
      add item i of mV to item 2 of iList
      set loc of item i of CWSList to iList
    end repeat
    unlock screen
  end repeat
end movegroup

I added this section very quickly because I already had the underlying selection and moving structures. As you can see it is very simple.

{10}
on arrowkey whichkey
  global CWSList
  if the mouse is down then
    if whichkey = “left” then
      put the mouseH into L
      repeat with i = 1 to the number of items in CWSList
        put the width of item i of Cwslist into w
        set the left of item i of Cwslist to L
        set the width of item i of Cwslist to w
      end repeat
    end if
    
    if whichkey = “right” then
      put the mouseH into R
      repeat with i = 1 to the number of items in CWSList
        put the width of item i of Cwslist into w
        set the right of item i of Cwslist to R
        set the width of item i of Cwslist to w
      end repeat
    end if
    
    if whichkey = “up” then
      put the mouseV into T
      repeat with i = 1 to the number of items in CWSList
        put the height of item i of Cwslist into h
        set the top of item i of Cwslist to T
        set the height of item i of Cwslist to h
      end repeat
    end if
    
    if whichkey = “down” then
      put the MouseV into B
      repeat with i = 1 to the number of items in CWSList
        put the height of item i of Cwslist into h
        set the bottom of item i of Cwslist to B
        set the height of item i of Cwslist to h
      end repeat
    end if
    exit arrowkey
  end if
  pass arrowkey
end arrowkey --**AutoHyperEdit**--
Non-Comercial use only - All Rights Reserved
Fred Stauder, Hypercard Editor, (HyperChat) MacTutor
---- AutoHyperEdit by Fred Stauder, June 1988 ---

You should get the stack because of the animation and sound ideas it contains. The key thing is to plan your stacks keep them modular so that they can be added to and be polite and use the pass statement so that other peoples scripts will work. For example a stack that uses on mouseStillDown and does not pass it will stop AutoHyperEdit working in that Stack.

Send your Articles, ScriptTips, SpeedTips, etc. to:

Fred Stauder, AppleLink D0280

Ecofin Reseach and Consulting

Lavaterstrasse 45

Zurich 8002

Switzerland

or

To the MacTutor Office

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Capture One 11.0.1.40 - RAW workflow sof...
Capture One is a professional RAW converter offering you ultimate image quality with accurate colors and incredible detail from more than 400 high-end cameras -- straight out of the box. It offers... Read more
Capture One 11.0.1.40 - RAW workflow sof...
Capture One is a professional RAW converter offering you ultimate image quality with accurate colors and incredible detail from more than 400 high-end cameras -- straight out of the box. It offers... Read more
GraphicConverter 10.5.4 - $39.95
GraphicConverter is an all-purpose image-editing program that can import 200 different graphic-based formats, edit the image, and export it to any of 80 available file formats. The high-end editing... Read more
Dash 4.1.3 - Instant search and offline...
Dash is an API documentation browser and code snippet manager. Dash helps you store snippets of code, as well as instantly search and browse documentation for almost any API you might use (for a full... Read more
Microsoft OneNote 16.9 - Free digital no...
OneNote is your very own digital notebook. With OneNote, you can capture that flash of genius, that moment of inspiration, or that list of errands that's too important to forget. Whether you're at... Read more
DEVONthink Pro 2.9.17 - Knowledge base,...
Save 10% with our exclusive coupon code: MACUPDATE10 DEVONthink Pro is your essential assistant for today's world, where almost everything is digital. From shopping receipts to important research... Read more
OmniGraffle 7.6 - Create diagrams, flow...
OmniGraffle helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use Graffle to... Read more
iFinance 4.3.7 - Comprehensively manage...
iFinance allows you to keep track of your income and spending -- from your lunchbreak coffee to your new car -- in the most convenient and fastest way. Clearly arranged transaction lists of all your... Read more
Opera 50.0.2762.58 - High-performance We...
Opera is a fast and secure browser trusted by millions of users. With the intuitive interface, Speed Dial and visual bookmarks for organizing favorite sites, news feature with fresh, relevant content... Read more
Microsoft Office 2016 16.9 - Popular pro...
Microsoft Office 2016 - Unmistakably Office, designed for Mac. The new versions of Word, Excel, PowerPoint, Outlook and OneNote provide the best of both worlds for Mac users - the familiar Office... Read more

Latest Forum Discussions

See All

Around the Empire: What have you missed...
Around this time every week we're going to have a look at the comings and goings on the other sites in Steel Media's pocket-gaming empire. We'll round up the very best content you might have missed, so you're always going to be up to date with the... | Read more »
Everything about Hero Academy 2: Part 4...
In this part of our Hero Academy 2 guide, we're going to have a look at some of the tactics you're going to need to learn if you want to rise up the ranks. We're going to start off slow, then get more advanced in the next section. [Read more] | Read more »
All the best games on sale for iPhone an...
Another week has flown by. Sometimes it feels like the only truly unstoppable thing is time. Time will make dust of us all. But before it does, we should probably play as many awesome mobile videogames as we can. Am I right, or am I right? [Read... | Read more »
The 7 best games that came out for iPhon...
Well, it's that time of the week. You know what I mean. You know exactly what I mean. It's the time of the week when we take a look at the best games that have landed on the App Store over the past seven days. And there are some real doozies here... | Read more »
Popular MMO Strategy game Lords Mobile i...
Delve into the crowded halls of the Play Store and you’ll find mobile fantasy strategy MMOs-a-plenty. One that’s kicking off the new year in style however is IGG’s Lords Mobile, which has beaten out the fierce competition to receive Google Play’s... | Read more »
Blocky Racing is a funky and fresh new k...
Blocky Racing has zoomed onto the App Store and Google Play this week, bringing with it plenty of classic kart racing shenanigans that will take you straight back to your childhood. If you’ve found yourself hooked on games like Mario Kart or Crash... | Read more »
Cytus II (Games)
Cytus II 1.0.1 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0.1 (iTunes) Description: "Cytus II" is a music rhythm game created by Rayark Games. It's our fourth rhythm game title, following the footsteps of three... | Read more »
JYDGE (Games)
JYDGE 1.0.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0.0 (iTunes) Description: Build your JYDGE. Enter Edenbyrg. Get out alive. JYDGE is a lawful but awful roguehate top-down shooter where you get to build your... | Read more »
Tako Bubble guide - Tips and Tricks to S...
Tako Bubble is a pretty simple and fun puzzler, but the game can get downright devious with its puzzle design. If you insist on not paying for the game and want to manage your lives appropriately, check out these tips so you can avoid getting... | Read more »
Everything about Hero Academy 2 - The co...
It's fair to say we've spent a good deal of time on Hero Academy 2. So much so, that we think we're probably in a really good place to give you some advice about how to get the most out of the game. And in this guide, that's exactly what you're... | Read more »

Price Scanner via MacPrices.net

Deals on clearance 15″ Apple MacBook Pros wit...
B&H Photo has clearance 2016 15″ MacBook Pros available for up to $800 off original MSRP. Shipping is free, and B&H charges NY & NJ sales tax only: – 15″ 2.7GHz Touch Bar MacBook Pro... Read more
Apple restocked Certified Refurbished 13″ Mac...
Apple has restocked a full line of Certified Refurbished 2017 13″ MacBook Airs starting at $849. An Apple one-year warranty is included with each MacBook, and shipping is free: – 13″ 1.8GHz/8GB/128GB... Read more
How to find the lowest prices on 2017 Apple M...
Apple has Certified Refurbished 13″ and 15″ 2017 MacBook Pros available for $200 to $420 off the cost of new models. Apple’s refurbished prices are the lowest available for each model from any... Read more
The lowest prices anywhere on Apple 12″ MacBo...
Apple has Certified Refurbished 2017 12″ Retina MacBooks available for $200-$240 off the cost of new models. Apple will include a standard one-year warranty with each MacBook, and shipping is free.... Read more
Apple now offering a full line of Certified R...
Apple is now offering Certified Refurbished 2017 10″ and 12″ iPad Pros for $100-$190 off MSRP, depending on the model. An Apple one-year warranty is included with each model, and shipping is free: –... Read more
27″ iMacs on sale for $100-$130 off MSRP, pay...
B&H Photo has 27″ iMacs on sale for $100-$130 off MSRP. Shipping is free, and B&H charges sales tax for NY & NJ residents only: – 27″ 3.8GHz iMac (MNED2LL/A): $2199 $100 off MSRP – 27″ 3.... Read more
2.8GHz Mac mini on sale for $899, $100 off MS...
B&H Photo has the 2.8GHz Mac mini (model number MGEQ2LL/A) on sale for $899 including free shipping plus NY & NJ sales tax only. Their price is $100 off MSRP. Read more
Apple offers Certified Refurbished iPad minis...
Apple has Certified Refurbished 128GB iPad minis available today for $339 including free shipping. Apple’s standard one-year warranty is included. Their price is $60 off MSRP. Read more
Amazon offers 13″ 256GB MacBook Air for $1049...
Amazon has the 13″ 1.8GHz/256B #Apple #MacBook Air on sale today for $150 off MSRP including free shipping: – 13″ 1.8GHz/256GB MacBook Air (MQD42LL/A): $1049.99, $150 off MSRP Read more
9.7-inch 2017 WiFi iPads on sale starting at...
B&H Photo has 9.7″ 2017 WiFi #Apple #iPads on sale for $30 off MSRP for a limited time. Shipping is free, and pay sales tax in NY & NJ only: – 32GB iPad WiFi: $299, $30 off – 128GB iPad WiFi... Read more

Jobs Board

*Apple* Data Center Site Selection and Strat...
# Apple Data Center Site Selection and Strategy Research Analyst Job Number: 83708609 Santa Clara Valley, California, United States Posted: 18-Jan-2018 Weekly Hours: Read more
Security Engineering Coordinator, *Apple* R...
# Security Engineering Coordinator, Apple Retail Job Number: 113237456 Santa Clara Valley, California, United States Posted: 18-Jan-2018 Weekly Hours: 40.00 **Job Read more
Firmware Engineer - *Apple* Accessories - A...
# Firmware Engineer - Apple Accessories Job Number: 113422485 Santa Clara Valley, California, United States Posted: 18-Jan-2018 Weekly Hours: 40.00 **Job Summary** Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Store Leader - Retail District Manag...
Job Description:Job SummaryAs more and more people discover Apple , they visit our retail stores seeking ways to incorporate our products into their lives. It's your Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.