Package javax.swing.plaf.basic

Source Code of javax.swing.plaf.basic.BasicDesktopIconUI$MouseInputHandler

/*
*  Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  See the NOTICE file distributed with
*  this work for additional information regarding copyright ownership.
*  The ASF licenses this file to You under the Apache License, Version 2.0
*  (the "License"); you may not use this file except in compliance with
*  the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/

/**
* @author Vadim L. Bogdanov
*/

package javax.swing.plaf.basic;


import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.beans.PropertyVetoException;

import javax.swing.DesktopManager;
import javax.swing.JComponent;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
import javax.swing.LookAndFeel;

import javax.swing.event.MouseInputAdapter;
import javax.swing.event.MouseInputListener;

import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.DesktopIconUI;

import org.apache.harmony.x.swing.ComponentDragImplHelper;
import org.apache.harmony.x.swing.Utilities;

import org.apache.harmony.x.swing.internal.nls.Messages;

public class BasicDesktopIconUI extends DesktopIconUI {
    private static  final int INSETS_WIDTH = 5;

    public class MouseInputHandler extends MouseInputAdapter {
        private ComponentDragImplHelper helper;
        private DesktopManager desktopManager;

        public MouseInputHandler() {
            helper = new ComponentDragImplHelper();
        }

        public void mouseDragged(final MouseEvent e) {
            Rectangle bounds = helper.mouseDragged(e);
            moveAndRepaint(desktopIcon, bounds.x, bounds.y,
                    bounds.width, bounds.height);
        }

        public void mouseMoved(final MouseEvent e) {
            return;
        }

        public void mousePressed(final MouseEvent e) {
            if (e.getClickCount() > 1 && frame.isIconifiable()) {
                deiconize();
                return;
            }

            desktopManager = ((BasicInternalFrameUI)frame.getUI()).
                    getDesktopManager();
            try {
                frame.setSelected(true);
                Component desktop = desktopIcon.getParent();
                if (desktop instanceof JLayeredPane) {
                    ((JLayeredPane)desktop).moveToFront(desktopIcon);
                }
            } catch (final PropertyVetoException e1) {
            }
            helper.beginDragging(e, desktopIcon, desktopIcon.getDesktopPane());
            desktopManager.beginDraggingFrame(desktopIcon);
        }

        public void mouseReleased(final MouseEvent e) {
            helper.endDraggingOrResizing(e);
            desktopManager.endDraggingFrame(desktopIcon);
        }

        public void moveAndRepaint(final JComponent f,
                final int newX, final int newY,
                final int newWidth, final int newHeight) {
            desktopManager.dragFrame(desktopIcon, newX, newY);
        }
    }

    public static ComponentUI createUI(final JComponent c) {
        return new BasicDesktopIconUI();
    }

    protected JInternalFrame.JDesktopIcon desktopIcon;
    protected JInternalFrame frame;
    protected JComponent iconPane;
    private MouseInputListener mouseHandler;

    public BasicDesktopIconUI() {
    }

    protected MouseInputListener createMouseInputListener() {
        if (mouseHandler == null) {
            mouseHandler = new MouseInputHandler();
        }

        return mouseHandler;
    }

    public void deiconize() {
        try {
            frame.setIcon(false);
        } catch (final PropertyVetoException e) {
        }
    }

    public Insets getInsets(final JComponent c) {
        if (c == null) {
            throw new NullPointerException(Messages.getString("swing.03","component")); //$NON-NLS-1$ //$NON-NLS-2$
        }
        //return desktopIcon.getInsets();
        return new Insets(INSETS_WIDTH, INSETS_WIDTH,
                INSETS_WIDTH, INSETS_WIDTH);
    }

    public Dimension getMaximumSize(final JComponent c) {
        return getPreferredSize(c);
    }

    public Dimension getMinimumSize(final JComponent c) {
        //return iconPane.getLayout().minimumLayoutSize(c);
        return getPreferredSize(c);
    }

    public Dimension getPreferredSize(final JComponent c) {
        return Utilities.addInsets(iconPane.getPreferredSize(), desktopIcon.getInsets());
    }

    protected void installComponents() {
        iconPane = new BasicInternalFrameTitlePane(frame);
        desktopIcon.add(iconPane, BorderLayout.CENTER);
    }

    protected void uninstallComponents() {
        desktopIcon.remove(iconPane);
    }

    protected void installDefaults() {
        LookAndFeel.installBorder(desktopIcon, "DesktopIcon.border");
    }

    protected void uninstallDefaults() {
        LookAndFeel.uninstallBorder(desktopIcon);
    }

    protected void installListeners() {
        mouseHandler = createMouseInputListener();

        desktopIcon.addMouseListener(mouseHandler);
        desktopIcon.addMouseMotionListener(mouseHandler);
    }

    protected void uninstallListeners() {
        desktopIcon.removeMouseListener(mouseHandler);
        desktopIcon.removeMouseMotionListener(mouseHandler);
    }

    public void installUI(final JComponent c) {
        desktopIcon = (JInternalFrame.JDesktopIcon) c;
        frame = desktopIcon.getInternalFrame();

        installDefaults();
        installListeners();
        installComponents();

        desktopIcon.setSize(desktopIcon.getPreferredSize());
    }

    public void uninstallUI(final JComponent c) {
        uninstallDefaults();
        uninstallListeners();
        uninstallComponents();
    }
}
TOP

Related Classes of javax.swing.plaf.basic.BasicDesktopIconUI$MouseInputHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.