Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7132692

[macosx] Class com.apple.eawt not functioning

    Details

    • Subcomponent:
    • Resolved In Build:
      b16
    • CPU:
      generic, x86
    • OS:
      os_x
    • Verification:
      Verified

      Backports

        Description

        FULL PRODUCT VERSION :
        JDK 7 from http://jdk7.java.net/macportpreview/

        *** I did Not get this string from command line output ***

        ADDITIONAL OS VERSION INFORMATION :
        Mac OS X 10.7.2

        A DESCRIPTION OF THE PROBLEM :
        This package works fine on Java 1.6 (by Apple) BUT NOT on Java 1.7 (current work in progress). I tried to use the About, Preferences and Quit methods (these menu items are on the Apple menu on Mac), with the following results:

        ABOUT - doesn't work at all - just gives default Java About

        PREFERENCES - doen't work either from Apple menu or menu-shortcut (comma).

        QUIT - works from Apple menu but NOT from menu-shortcut (Q).

        In all cases where it doesn't work, I checked that the Handler is not being invoked. The code below is a simple app that displays a message when the handlers are invoked. Works fine on Java 1.6 (from Apple). Code has TWO class files.

        STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
        Use the code above to interface with a simple Java app running on Mac OS X 10.7

        EXPECTED VERSUS ACTUAL BEHAVIOR :
        EXPECTED -
        Accessing these items from the Apple menu, either with the mouse or with a standard menu-shortcut, should invoke the handler.
        ACTUAL -
        For about you get the default About box - this would be expected if you passed a null pointer to the handler, but I passed a valid reference

        ERROR MESSAGES/STACK TRACES THAT OCCUR :
        none - the submitted app logs whether or not the handlers are being invoked

        REPRODUCIBILITY :
        This bug can be reproduced always.

        ---------- BEGIN SOURCE ----------

        import java.awt.*;
        import java.awt.event.*;

        public class TestApp extends Frame implements LayoutManager, ActionListener {

        private AppleListener mAppleListener = null;
        private Label mListenerLabel;
        private Label mAboutLabel;
        private Label mPreferencesLabel;
        private Label mQuitLabel;
        private Button mClearButton;

          public TestApp() {
            super("TestApp");
            setResizable(false);
            addNotify();
            setLayout(this);

            addWindowListener(new WindowAdapter() {
              public void windowClosing(WindowEvent event) {
        System.exit(0);
              }
            });

        try{
        try {
        mAppleListener = new AppleListener(this);
        } catch (Exception e) {}
        } catch (Error e) {}

        mListenerLabel = new Label("Listener " + (mAppleListener != null));
        add(mListenerLabel);
        mAboutLabel = new Label("---");
        add(mAboutLabel);
        mPreferencesLabel = new Label("---");
        add(mPreferencesLabel);
        mQuitLabel = new Label("---");
        add(mQuitLabel);
        mClearButton = new Button("Clear");
            mClearButton.addActionListener(this);
        add(mClearButton);
              
            setVisible(true);
            setSize(200, 300);
          }

          public final void addLayoutComponent(String n, Component c) {}
          public final void removeLayoutComponent(Component c) {}
          public final Dimension preferredLayoutSize(Container t)
        {return new Dimension(1, 1);}
          public final Dimension minimumLayoutSize(Container t)
        {return new Dimension(1, 1);}
          public final void layoutContainer(Container target)
          {
            mListenerLabel.setBounds(20, 50, 150, 20);
            mAboutLabel.setBounds(20, 100, 150, 20);
            mPreferencesLabel.setBounds(20, 150, 150, 20);
            mQuitLabel.setBounds(20, 200, 150, 20);
            mClearButton.setBounds(20, 250, 50, 30);
          }

          public void actionPerformed(ActionEvent e)
          {
            if (e.getSource() == mClearButton) {
        mAboutLabel.setText("---");
        mPreferencesLabel.setText("---");
        mQuitLabel.setText("---");
        }
        }

        public final void processAbout() {mAboutLabel.setText("processAbout");}
        public final void processPreferences(){mPreferencesLabel.setText("processPreferences");}
        public final void processQuit(){mQuitLabel.setText("processQuit");}

          public static void main(String args[]) {
            new TestApp();
          }
        }

        import com.apple.eawt.*;
        public class AppleListener {

        private TestApp mTestApp;

          public AppleListener(TestApp controller) {
        mTestApp = controller;
        try{
        try {
        Application.getApplication().setAboutHandler(
        new AboutHandler() {
        public void handleAbout(AppEvent.AboutEvent e) {
        mTestApp.processAbout();
        }
        }
        );
        Application.getApplication().setPreferencesHandler(
        new PreferencesHandler() {
        public void handlePreferences(AppEvent.PreferencesEvent e) {
        mTestApp.processPreferences();
        }
        }
        );
        Application.getApplication().setQuitHandler(
        new QuitHandler() {
        public void handleQuitRequestWith(
        AppEvent.QuitEvent e, QuitResponse response) {
        mTestApp.processQuit();
        response.cancelQuit();
        }
        }
        );
        } catch (Exception e) {}
        } catch (Error e) {}
        }
        }

        ---------- END SOURCE ----------

        CUSTOMER SUBMITTED WORKAROUND :
        None - I reported this as severe because it would severely impact Apps that are supposed to behave correctly on Mac OS using forthcoming Java 7.

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  anthony Anthony Petrov (Inactive)
                  Reporter:
                  webbuggrp Webbug Group
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  2 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Imported:
                    Indexed: