TweetFollow Us on Twitter

Apr 97 Top 10

Volume Number: 13 (1997)
Issue Number: 4
Column Tag: Symantec Top Ten

Symantec Top 10

By Matthew Hopkins

In this month's column, we are focusing on customer issues pertaining to our C++ and Java development environments, including the newly released Visual Café. Let's warm up with a question regarding Visual Page, a dynamic web-authoring utility

Q: In Visual Page, how do you tell what size a document is before you save it?

A: By selecting Download Statistics... from the Edit menu, you can see a dialog box which not only tells you the total document size, but also tells you how long (on the average) it will take to download your page, depending upon the speed of your modem.

Q: I am using Visual Café, and I am having a problem getting the GridLayout to work properly. For instance, when I set the number of columns to 3 in the Property Manager, the applet doesn't respond at all visually. What's going on here?

A: Visual Café behaves in this manner because of how GridLayout is implemented in Java. When the rows and columns are both defined to anything other than 0, the Layout Manager will ignore the number of columns you have specified and calculate them based upon the number of rows and the number of elements. If you are interested in having the Layout Manager organize your elements according to a certain number of columns, set the number of rows to 0 (meaning "any"), and the Layout Manager will make the number of rows dependent upon the number of columns.

Q: I am getting an error of type -43 when running my Java application in Symantec Café. How do I correct this?

A: In an application, the main function needs to be static, and the main class needs to be set in the Project Options window.

Q: I am running the following program in Symantec Café and it does nothing but hang. Could you tell me why?

class PrintThread implements Runnable {
         String str;
         
         public PrintThread (String str) {
                 this.str = str;
         } 

         public void run() {
                 for (;;)
                         System.out.print(str);
         } 
} 

class ConcurrencyTest {
         public static void main(String argv[]) {
                 new Thread(new PrintThread("A")).start();
                 new Thread(new PrintThread("B")).start();
          } 
} 

A: This does not actually cause a freeze. It just appears that way because the System.out.print never receives a "" character, so it never shows you what's going on; it adds characters to the print stream indefinitely. To achieve the results you intended (mainly, seeing A and B printed forever), either call PrintThread with "A" and "B", or change the line reading System.out.print(str) to System.out.println(str).

Q: Which folder do you put packages into in Symantec Café for the Mac?

A: You have two options:

1) Place any additional class packages into the {java libraries} folder.

2) Place them in whatever folder you like as long as you open the Preferences:Paths window and add the search path to the upper window so that Café will know to search that folder.

Q: I am developing an application in Café that includes HTML text and embedded Applets. Some of the applets need to read local files whose names are supplied by the user, but the applet security rules prevent applets from reading local files. Is there a standard way of reading user-OK'ed local files that I am missing?

A: The names of the files have to be "fully qualified" (i.e. volume/folder/file), and there can be no non-standard characters anywhere in the path (like ƒ after folder names.) You can use something like this

FileDialog file_dialog_open;
file_dialog_open = new FileDialog(this, "Open A File", FileDialog.LOAD);

public void loadFile() {
 file_dialog_open.pack();
 file_dialog_open.show();
   if (file_dialog_open.getFile() != null) {
      currentFolder = file_dialog_open.getDirectory();
      selectedFile = new String(file_dialog_open.getFile());
      fullPath = currentFolder + "/" + selectedFile;
   } 
} 

This lets the user select a file and then pass the fully qualified path name for the file to the method that actually accesses the data.

Q: Is there a simple way to use ImageMaps for applets in Java? I need to write an applet that loads a graphic file at the proper coordinates when the mouse is moved over a certain location.

A: The key to this problem is the Component action method mouseEnter(). This works for all components, including buttons, windows, etc. In order to implement ImageMaps, I find the canvas component to work the best, being invisible. Here is a small snippet of code written in Visual Café that illustrates this

import java.awt.*;
import java.applet.*;

public class Applet1 extends Applet {    
        public void init() {
                super.init();
                setLayout(null);
                addNotify();
                resize(426,266);
                theMap = new ImageMap("myMap", 50, 50, getGraphics());
                theMap.reshape(60,31,186,150);
                add(theMap);
        } 

        public boolean handleEvent(Event event) {
                return super.handleEvent(event);
        } 
        ImageMap theMap;
} 

class ImageMap extends Canvas {
        boolean on;
        String label;
        Graphics g;
        

        ImageMap(String label, int sizex, int sizey, Graphics g) {
                this.label=label;
                this.g=g;
                resize(sizex, sizey);
        } 
        
        public void paint(Graphics g) {
                update(g);
        } 
        
        public void update(Graphics g) {
                if(on) {
                        this.g.drawString("Hello, World!", 25, 25);
                } 
        } 
        
        public boolean mouseEnter(Event evt, int x, int y) {
                on=true;
                repaint();
                return true;
        } 
} 

Here, the text Hello, World! has been substituted for the image that should be displayed. In case you wish to remove the image when the mouse is removed from the area, use the method mouseExit() in the same way.

Q: I am using a HashTable to keep track of a number of Button objects in Symantec Café, but every time I click on the button and look up the corresponding HashTable entry, it returns null.

import java.applet.*;
import java.awt.*;
import java.util.*;

public class HashTblTest extends Applet {
        Hashtable ht = new Hashtable();
        Button[] b = new Button[3];

        public void init()       {
                for (int i = 0;i < 3;i++) {
                        b[i] = new Button("Button " + i);
                        add(b[i]);
                        ht.put(b[i], new Integer(i));    
                }   
        } 
        public boolean action(Event e, Object o){
                System.out.println(ht.get(o));
                return false;
        }      
} 

What am I doing wrong?

A: The problem here is that the Button action method counter-intuitively provides as its Object parameter a STRING which is the button's name, not the button object itself. You have entered the buttons themselves into the HashTable, but the action method is looking up a string, not a button in your table. The best way to work around this is to change your action code to read: System.out.println(ht.get(e.target)); This will achieve your desired results.

Q: I have written a program in the Think Project Manager 7.0.5 that runs in the debugger, but when I try to run it in the Finder or without the debugger, the main window does not even come up. What do I need to do to get it to work?

A: This usually indicates a failure to initialize the Macintosh toolbox. Your code seems to work in the debugger because the debugger initializes the toolbox for you.

Q: I have written a program that uses two-dimensional and three-dimensional arrays. It seems to look fine but I keep getting link errors. What can I do to fix this problem?

A: It sounds like you are putting some huge arrays on the stack! Space is allocated for these arrays prior to run-time, and if your arrays are large enough, you could be causing a stack overflow that is posing some problems for the linker. There is an excellent example on how to put these arrays on the heap (allocating them at run time) in the Think Reference under Arrays Bigger than 32k.

Special thanks to Mark Baldwin, Ted Flug, Richard Hill, Steve Howard, Scott Morrison, Kevin Kenan, and Kevin Quah.

 
AAPL
$97.67
Apple Inc.
+0.64
MSFT
$44.50
Microsoft Corpora
+0.10
GOOG
$589.02
Google Inc.
-4.33

MacTech Search:
Community Search:

Software Updates via MacUpdate

Vienna 3.0.0 RC 2 :be5265e: - RSS and At...
Vienna is a freeware and Open-Source RSS/Atom newsreader with article storage and management via a SQLite database, written in Objective-C and Cocoa, for the OS X operating system. It provides... Read more
VLC Media Player 2.1.5 - Popular multime...
VLC Media Player is a highly portable multimedia player for various audio and video formats (MPEG-1, MPEG-2, MPEG-4, DivX, MP3, OGG, ...) as well as DVDs, VCDs, and various streaming protocols. It... Read more
Default Folder X 4.6.7 - Enhances Open a...
Default Folder X attaches a toolbar to the right side of the Open and Save dialogs in any OS X-native application. The toolbar gives you fast access to various folders and commands. You just click... Read more
TinkerTool 5.3 - Expanded preference set...
TinkerTool is an application that gives you access to additional preference settings Apple has built into Mac OS X. This allows to activate hidden features in the operating system and in some of the... Read more
Audio Hijack Pro 2.11.0 - Record and enh...
Audio Hijack Pro drastically changes the way you use audio on your computer, giving you the freedom to listen to audio when you want and how you want. Record and enhance any audio with Audio Hijack... Read more
Intermission 1.1.1 - Pause and rewind li...
Intermission allows you to pause and rewind live audio from any application on your Mac. Intermission will buffer up to 3 hours of audio, allowing users to skip through any assortment of audio... Read more
Autopano Giga 3.6 - Stitch multiple imag...
Autopano Giga allows you to stitch 2, 20, or 2,000 images. Version 3.0 integrates impressive new features that will definitely make you adopt Autopano Pro or Autopano Giga: Choose between 9... Read more
Airfoil 4.8.7 - Send audio from any app...
Airfoil allows you to send any audio to AirPort Express units, Apple TVs, and even other Macs and PCs, all in sync! It's your audio - everywhere. With Airfoil you can take audio from any... Read more
Microsoft Remote Desktop 8.0.8 - Connect...
With Microsoft Remote Desktop, you can connect to a remote PC and your work resources from almost anywhere. Experience the power of Windows with RemoteFX in a Remote Desktop client designed to help... Read more
xACT 2.30 - Audio compression toolkit. (...
xACT stands for X Aaudio Compression Toolkit, an application that encodes and decodes FLAC, SHN, Monkey’s Audio, TTA, Wavpack, and Apple Lossless files. It also can encode these formats to MP3, AAC... Read more

Latest Forum Discussions

See All

This Week at 148Apps: July 21-25, 2014
Another Week of Expert App Reviews   At 148Apps, we help you sort through the great ocean of apps to find the ones we think you’ll like and the ones you’ll need. Our top picks become Editor’s Choice, our stamp of approval for apps with that little... | Read more »
Reddme for iPhone - The Reddit Client (...
Reddme for iPhone - The Reddit Client 1.0 Device: iOS iPhone Category: News Price: $.99, Version: 1.0 (iTunes) Description: Reddme for iPhone is an iOS 7-optimized Reddit client that offers a refreshing new way to experience Reddit... | Read more »
Jacob Jones and the Bigfoot Mystery : Ep...
Jacob Jones and the Bigfoot Mystery : Episode 2 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Jacob Jones is back in Episode 2 of one of Apples 'Best of 2013' games and an App Store... | Read more »
New Trailer For Outcast Odyssey, A New K...
New Trailer For Outcast Odyssey, A New Kind of Card Battler Posted by Jennifer Allen on July 25th, 2014 [ permalink ] Out this Fall is a new kind of card battle game: Outcast Odyssey. | Read more »
Hay Day – Tip, Tricks, Strategies, and C...
Recently got into Supercell’s other huge hit, Hay Day and could do with some advice on what to do? We’ve got you covered with some helpful trips and tricks to bear in mind! Ticking Along One of the key things to keep in mind while building up that... | Read more »
Monster Head Review
Monster Head Review By Nadia Oxford on July 25th, 2014 Our Rating: :: FEEDING TIMEUniversal App - Designed for iPhone and iPad Racking up a high score with Monster Head is trickier than it first appears. The appeal wears out fairly... | Read more »
Garfield: Survival of the Fattest Coming...
Garfield: Survival of the Fattest Coming to iOS this Fall Posted by Jennifer Allen on July 25th, 2014 [ permalink ] Who loves lasagna? Me. Also everyone’s favorite grumpy fat cat, Garfield. | Read more »
Happy Flock Review
Happy Flock Review By Andrew Fisher on July 25th, 2014 Our Rating: :: HERD IT ALL BEFOREUniversal App - Designed for iPhone and iPad Underneath the gloss of Happy Flock’s visuals is a game of very little substance. It’s cute, but... | Read more »
Square Register Updates Adds Offline Pay...
Square Register Updates Adds Offline Payments Posted by Ellis Spice on July 25th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Looking For Group – Hearthstone’s Curse...
For the first time since its release (which has thankfully been a much shorter window for iPad players than their PC counterparts), Blizzard’s wildly successful Hearthstone: Heroes of Warcraft CCG is sporting some brand new content: the single... | Read more »

Price Scanner via MacPrices.net

Record Mac Shipments In Q2/14 Confound Analys...
A Seeking Alpha Trefis commentary notes that Apple’s fiscal Q3 2014 results released July 22, beat market predictions on earnings, although revenues were slightly lower than anticipated. Apple’s Mac’... Read more
Intel To Launch Core M Silicon For Use In Not...
Digitimes’ Monica Chen and Joseph Tsai, report that Intel will launch 14nm-based Core M series processors specifically for use in fanless notebook/tablet 2-in-1 models in Q4 2014, with many models to... Read more
Apple’s 2014 Back to School promotion: $100 g...
 Apple’s 2014 Back to School promotion includes a free $100 App Store Gift Card with the purchase of any new Mac (Mac mini excluded), or a $50 Gift Card with the purchase of an iPad or iPhone,... Read more
iMacs on sale for $150 off MSRP, $250 off for...
Best Buy has iMacs on sale for up to $160 off MSRP for a limited time. Choose free home shipping or free instant local store pickup (if available). Prices are valid for online orders only, in-store... Read more
Mac minis on sale for $100 off MSRP, starting...
Best Buy has Mac minis on sale for $100 off MSRP. Choose free shipping or free instant local store pickup. Prices are for online orders only, in-store prices may vary: 2.5GHz Mac mini: $499.99 2.3GHz... Read more
Global Tablet Market Grows 11% in Q2/14 Notwi...
Worldwide tablet sales grew 11.0 percent year over year in the second quarter of 2014, with shipments reaching 49.3 million units according to preliminary data from the International Data Corporation... Read more
New iPhone 6 Models to Have Staggered Release...
Digitimes’ Cage Chao and Steve Shen report that according to unnamed sources in Apple’s upstream iPhone supply chain, the new 5.5-inch iPhone will be released several months later than the new 4.7-... Read more
New iOS App Helps People Feel Good About thei...
Mobile shoppers looking for big savings at their favorite stores can turn to the Goodshop app, a new iOS app with the latest coupons and deals at more than 5,000 online stores. In addition to being a... Read more
Save on 5th generation refurbished iPod touch...
The Apple Store has Apple Certified Refurbished 5th generation iPod touches available starting at $149. Apple’s one-year warranty is included with each model, and shipping is free. Many, but not all... Read more
What Should Apple’s Next MacBook Priority Be;...
Stabley Times’ Phil Moore says that after expanding its iMac lineup with a new low end model, Apple’s next Mac hardware decision will be how it wants to approach expanding its MacBook lineup as well... Read more

Jobs Board

*Apple* Solutions Consultant (ASC) - Apple (...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
WW Sales Program Manager, *Apple* Online St...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
Lead Software Engineer, *Apple* Online Stor...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
Manager, *Apple* Fullfillment Operation (AF...
…cross-functional teams to drive the highest level of program management quality for Apple . You will help plan launch strategy and demand generation programs with Read more
Project Manager / Business Analyst, WW *Appl...
…a senior project manager / business analyst to work within our Worldwide Apple Fulfillment Operations and the Business Process Re-engineering team. This role will work Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.