advertisement
javaboutique
Search Tips
Articles  |   Tutorials  |   Reviews  |   Tools  |   by Category  |   by Date  |   by Name  |   Submit  |   Source  |   Forums  |  
javaboutique
Browse DevX


Partners & Affiliates











advertisement


Bookmark Menu Applet.java


/*
<html>
<head><title>Bookmark Menu Applet Window</title></head>
<body onLoad="document.applets["BookmarkMenuApplet"].setTarget(opener.name);">

    <applet code="BookmarkMenuApplet.class" name="BookmarkMenuApplet"
        height=20 width=100>
        <param name=filename   value="bookmark.html">
        <param name=target     value="j1menutarget">
    </applet>

    WARNING: Use either parameter 'target' or setTarget() method.
             Don't use both!
</body></html>
 */
import java.applet.*;
import java.awt.event.*;
import java.awt.*;            // for Menu
import java.net.*;            // for URL, MalformedURLException
import java.io.*;             // for InputStream, Reader

public class BookmarkMenuApplet extends Applet
{
    final PopupMenu m = new PopupMenu();;
    final Button    b = new Button();

    String    target = "j1menu";            // target name of browser window
    String    filename = "bookmark.htm";    // file to read bookmarks from

    final Applet a = this;                  // only final variables can be used in inner anonymous classes

    ActionListener jumpToUrl =              // When a menu is clicked, jump to corresponding URL
        new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                try{
                    URL url = new URL(e.getActionCommand());    // the menu's action command stores URL
                        a.getAppletContext().showDocument(url,target);    // load the URL to the target browser window
                }catch(MalformedURLException me){
                    showStatus("Malformed URL: "+e.getActionCommand());
                }
            }
        }
    ;


    public void init()
    {
        setLayout(new BorderLayout(0,0));   // BorderLayout can display a button ...
                                            // ...with the size of the applet
        b.setLabel("Loading...");
        b.setSize(this.getSize());      // button should occupy the whole applet

        add(b);                         // Clicking on this button ...
        add(m);                         // ...will activate this popup menu
        validate();                     // Draw the applet as soon as possible
                                        // ..although it will not be ready for a while
                                        // That will make it look as if it is fast!

        // Clicking on the button should open the popup menu

        b.addActionListener( new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    Rectangle r = b.getBounds();
                    m.show(a, r.x, r.y+r.height);
                }
       });

       // Load the menu items from the bookmark file

       getParameters();

        try{                                             // now load menu description file

        MenuLoader loader = new MenuLoader(              // create new menu loader...
                m                                        // .. to load this menu...
            ,   getBookmarksReader(filename)             // .. from this file
            ,   jumpToUrl                                // .. jump to URL when menu clicked
            );

        addAboutMenuItem(m, jumpToUrl,                   // Add "About this applet" menu item
            getCodeBase().toString()+"readme.html");     // Description file in the same directory where this applet is

        loader.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                if( e.getActionCommand().equals("done") )
                        b.setLabel("Bookmarks");
                else    b.setLabel("Error");
            }
        });
        loader.start();

        }catch(IOException e){
            showStatus("IOException:"+e);
            b.setLabel("Loading Error");
            b.setEnabled(false);
        }
    }

    /* This method can be called from a JavaScript to
     *  specify target window for opening bookmarks
     */
    public void setTarget(String target){
        this.target = target;
    }


    // ---------------- protected methods ---------------

    Reader getBookmarksReader(String filename) throws IOException{
        return new InputStreamReader(
                    new URL(getDocumentBase(), filename)
                        .openStream()
        );
    }

    void getParameters(){
        String t = getParameter("target");
        if( t != null ) target = t;

        t = getParameter("filename");
        if( t!= null ) filename = t;
    }

    /*
     * addAboutMenuItem()
     * @purpose Adds "About" menu item as the 1st item in the menu
     */
    static void addAboutMenuItem(PopupMenu m, ActionListener action, String url)
    {
        MenuItem i = new MenuItem("About \"Bookmark Menu Applet\"");
        i.setActionCommand(url);
        i.addActionListener(action);

        m.insertSeparator(0);
        m.insert(i,0);
    }

    // ---------------- methods for testing ----------------

    void debug(String msg){ System.out.println(msg); }

    /*
    public URL getDocumentBase(){
        try{
            return new URL("file:.");
        }catch(MalformedURLException e){
            showStatus("MalformedURLException:"+e);
            return null;
        }
    }

    public void showStatus(String status){System.out.println(status);}

    public static void main(String[] args)
    {
        Frame f = new Frame("Bookmark Tester");
        f.setSize(300,200);

        final Applet a = new j1menu();
        f.add(a);
        f.addWindowListener( new WindowListener(){
            public void windowClosed(WindowEvent e)  {}
            public void windowClosing(WindowEvent e) {  System.exit(0); }
            public void windowActivated(WindowEvent e)  {}
            public void windowDeactivated(WindowEvent e){}
            public void windowIconified(WindowEvent e)  { a.stop(); }
            public void windowDeiconified(WindowEvent e){ a.start(); }
            public void windowOpened(WindowEvent e) {  a.init(); a.start();}
        });
        f.show();
    }
    */
}

Return to Bookmark Menu Applet

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.

 Microsoft RIA Development Center
 IBM Rational Resource Center
 Destination .NET
XML error: not well-formed (invalid token) at line 33
advertisement
Receive Articles via our XML/RSS feed
Receive Articles via our XML/RSS feed

JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for Windows 95, 98, ME, NT, 2000 and XP. It's designed to automatically optimize your Windows settings, boosting your Internet connection up to 200%.

Free VMware Server 2.0 Now Release Candidate
Linux Player Xandros Grabs Storied Rival Linspire
Hey Enterprise: Here Comes the 3G iPhone
MySpace Opens Profile Portability API
Microsoft Jumps Into Virtualization Fray
Eclipse Ganymede Makes It Easier for Devs
Open Source Nokia a Threat to Microsoft, Google?
Salesforce, Google Head for 2nd on Apps
HP Open Sources Unix File System for Linux
Red Hat Opens Its Network to Space

Build a Generic Histogram Generator for SQL Server
Beyond XML and JSON: YAML for Java Developers
Mastering the Windows Mobile Emulators
Avaya AE Services Provide Rapid Telephony Integration with Facebook
Featured Algorithm: Intel Threading Building Blocks: parallel_reduce
Getting Started with Windows Live Admin Center
Eight Key Practices for ASP.NET Deployment
Java ME User Interfaces: Do It with LWUIT!
Talking VPro: Transcript
Bringing Semantic Technology to the Enterprise

Advertising Info  |   Member Services  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About



JupiterOnlineMedia

internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

Jupitermedia Corporate Info


Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers

Solutions
Whitepapers and eBooks
IBM eBook: Planning a Service Oriented Architecture
IBM eBook: Choosing the Right Architecture--What It Means for You and Your Business
Microsoft Article: Will Hyper-V Make VMware This Decade's Netscape?
Avaya Article: Using Intelligent Presence to Create Smarter Business Applications
Intel Go Parallel Article: Getting Started with TBB on Windows
Microsoft Article: 7.0, Microsoft's Lucky Version?
Avaya Article: How to Feed Data into the Avaya Event Processor
IBM Article: Developing a Software Policy for Your Organization
Microsoft Article: Managing Virtual Machines with Microsoft System Center
Intel Go Parallel Article: Intel Threading Tools and OpenMP
HP eBook: Storage Networking , Part 1
Microsoft Article: Solving Data Center Complexity with Microsoft System Center Configuration Manager 2007
MORE WHITEPAPERS, EBOOKS, AND ARTICLES
Webcasts
HP Video: StorageWorks EVA4400 and Oracle
HP Webcast: Storage Is Changing Fast - Be Ready or Be Left Behind
Microsoft Silverlight Video: Creating Fading Controls with Expression Design and Expression Blend 2
MORE WEBCASTS, PODCASTS, AND VIDEOS
Downloads and eKits
Red Gate Download: SQL Toolbelt and free High-Performance SQL Code eBook
Iron Speed Designer Application Generator
MORE DOWNLOADS, EKITS, AND FREE TRIALS
Tutorials and Demos
Silverlight 2 App and Walkthrough: Leverage Silverlight 2 with SQL Server and XML
IBM Article: Enterprise Search--Do You Know What's Out There?
HP Demo: StorageWorks EVA4400
Microsoft Article: The Progress and Promise of Deep Zoom
Microsoft How-to Article: Get Going with Silverlight and Windows Live
MORE TUTORIALS, DEMOS AND STEP-BY-STEP GUIDES