JDK-6715783 : Draggable Applet does not resize to fit into page when closed outside browser
  • Type: Bug
  • Component: deploy
  • Sub-Component: plugin
  • Affected Version: 6u10
  • Priority: P3
  • Status: Resolved
  • Resolution: Won't Fix
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2008-06-17
  • Updated: 2016-07-26
  • Resolved: 2016-07-26
Description
FULL PRODUCT VERSION :
build 1.6.0_10-beta-b25

ADDITIONAL OS VERSION INFORMATION :
Windows XP SP2

A DESCRIPTION OF THE PROBLEM :
when the applet is resized outside the browser (if it has been dragged) and closed afterwards, it is not automatically resized to fit into the provided space of the page.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. drag applet
2. resize window
3. close applet
4. check if applet fits into web page

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
applet is resized to fit into specified space on the web page
ACTUAL -
applet not automatically resized and does not fit into page

REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
/*html file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <p>
            <applet width="200" height="200">
                <param name="jnlp_href" value="DragExample.jnlp">
                <param name="separate_jvm" value="true">
                <param name="classloader_cache" value="false">
                <param name="draggable" value="true">
            </applet>
        </p>
    </body>
</html>

*/

/*JNLP
<?xml version="1.0" encoding="utf-8"?>
<jnlp codebase="file:/C:/nbWorkspace/AppletTest/" href="DragExample.jnlp">
    <information>
        <title>Simple Draggable Applet Example</title>
        <vendor>test</vendor>
        <homepage href="file:/C:/nbWorkspace/AppletTest/"/>
        <description kind="short">
            A simple draggable applet example showing customization of the drag gesture and close button, desktop integration, and fallback of applet services as the applet becomes disconnected.
        </description>
        <offline-allowed/>
        <shortcut online="false">
            <desktop/>
        </shortcut>
    </information>
    <resources>
        <j2se href="http://java.sun.com/products/autodl/j2se" version="1.6+"/>
        <jar href="dist/AppletTest.jar" main="true" />
    </resources>
    <!-- width&height used when relaunching from the desktop shortcut -->
    <applet-desc
      name="Drag Example"
      main-class="applet.DragExample"
      width="200"
      height="200">
    </applet-desc>
</jnlp>

*/

package applet;

import java.awt.Container;
import java.awt.Frame;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class DragExample extends javax.swing.JApplet {
    
    private ActionListener closeListener;


    /** Initializes the applet DragExample */
    @Override
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                    label.addMouseListener(new MouseAdapter() {
                        @Override
                        public void mouseClicked(MouseEvent e) {
                            if (closeListener != null)
                                closeListener.actionPerformed(null);
                        }
                    });
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    
    public boolean isAppletDragStart(MouseEvent e) {
        if(e.getID() == MouseEvent.MOUSE_DRAGGED)
            return true;
        else
            return false;
    }
    
    
    public void appletDragStarted() {
        Container container = this.getParent();
        while(container != null) {
            if(container instanceof Frame) {
                Frame frame = (Frame)container;
                frame.setResizable(true);
                frame.setUndecorated(false);
                return;
            }
            container = container.getParent();
        }
    }

    

    public void setAppletCloseListener(ActionListener l) {
        closeListener = l;
    }

    public void appletRestored() {
        closeListener = null;
    }

    /** This method is called from within the init() method to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        label = new javax.swing.JLabel();

        label.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        label.setText("drag me");
        label.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(label, javax.swing.GroupLayout.DEFAULT_SIZE, 362, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(label, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE)
                .addContainerGap())
        );
    }// </editor-fold>


    // Variables declaration - do not modify
    private javax.swing.JLabel label;
    // End of variables declaration

}

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

Comments
Applets are deprecated, this is unlikely to be fixed.
26-07-2016