/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* <p>
* <strong>Warning:</strong>
* Serialized objects of this class will not be compatible with
* future Swing releases. The current serialization support is appropriate
* for short term storage or RMI between applications running the same
* version of Swing. A future release of Swing will provide support for
* long term persistence.
*
* @author David Kloba
*/
{
/// DesktopPaneUI methods
return new MotifDesktopPaneUI();
}
public MotifDesktopPaneUI() {
}
protected void installDesktopManager() {
if(desktopManager == null) {
desktopManager = new MotifDesktopManager();
}
}
////////////////////////////////////////////////////////////////////////////////////
/// DragPane class
////////////////////////////////////////////////////////////////////////////////////
}
};
////////////////////////////////////////////////////////////////////////////////////
/// MotifDesktopManager class
////////////////////////////////////////////////////////////////////////////////////
private class MotifDesktopManager extends DefaultDesktopManager implements Serializable, UIResource {
boolean usingDragPane = false;
// PENDING(klobad) this should be optimized
if(!usingDragPane) {
boolean didResize;
if(didResize) {
f.validate();
}
} else {
}
}
usingDragPane = false;
if(f.getParent() instanceof JLayeredPane) {
usingDragPane = true;
}
}
}
if(usingDragPane) {
usingDragPane = false;
if (f instanceof JInternalFrame) {
} else if (f instanceof JInternalFrame.JDesktopIcon) {
}
}
}
usingDragPane = false;
if(f.getParent() instanceof JLayeredPane) {
usingDragPane = true;
}
}
}
if(usingDragPane) {
usingDragPane = false;
}
}
adjustBoundsForIcon(icon, p.x, p.y);
super.iconifyFrame(f);
}
/**
* Change positions of icons in the desktop pane so that
* they do not overlap
*/
// We need to know Motif icon size
new JInternalFrame());
}
}
/**
* Change positions of icon so that it doesn't overlap
* other icons.
*/
int x, int y) {
int w = iconWidth;
int h = iconHeight;
c.repaint(x, y, w, h);
x = x < 0 ? 0 : x;
y = y < 0 ? 0 : y;
/* Fix for disappearing icons. If the y value is maxy then this
* algorithm would place the icon in a non-displayed cell. Never
* to be ssen again.*/
/* Compute the offset for the cell we are trying to go in. */
int lx = (x / w) * w;
/* How far are we into the cell we dropped the icon in. */
/* Set coordinates for the icon. */
x += w;
}
/* Cancel the move if the x value was moved off screen. */
if (x > c.getWidth()) {
return;
}
setBoundsForFrame(icon, x, y, w, h);
} else {
icon.setLocation(x, y);
}
}
if (p.x == x && p.y == y) {
}
}
}
return null;
}
}; /// END of MotifDesktopManager
}