001: /*
002: * @(#)ResizableWindow.java 2/18/2005
003: *
004: * Copyright 2002 - 2005 JIDE Software Inc. All rights reserved.
005: */
006: package com.jidesoft.swing;
007:
008: import com.jidesoft.utils.SystemInfo;
009:
010: import javax.swing.*;
011: import javax.swing.border.Border;
012: import java.awt.*;
013: import java.awt.event.ComponentAdapter;
014: import java.awt.event.ComponentEvent;
015:
016: /**
017: * A resizable window.
018: */
019: public class ResizableWindow extends JWindow implements
020: ResizableSupport {
021:
022: private ResizablePanel _resizablePanel;
023:
024: public ResizableWindow() {
025: initComponents();
026: }
027:
028: public ResizableWindow(Frame owner) {
029: super (owner);
030: initComponents();
031: }
032:
033: public ResizableWindow(GraphicsConfiguration gc) {
034: super (gc);
035: initComponents();
036: }
037:
038: public ResizableWindow(Window owner) {
039: super (owner);
040: initComponents();
041: }
042:
043: public ResizableWindow(Window owner, GraphicsConfiguration gc) {
044: super (owner, gc);
045: initComponents();
046: }
047:
048: /**
049: * Initializes the resizable window.
050: */
051: protected void initComponents() {
052: _resizablePanel = new ResizablePanel() {
053: @Override
054: protected Resizable createResizable() {
055: return new Resizable(this ) {
056: @Override
057: public void resizing(int resizeDir, int newX,
058: int newY, int newW, int newH) {
059: Container container = ResizableWindow.this
060: .getContentPane();
061: if (SystemInfo.isJdk15Above()
062: || container instanceof JComponent) {
063: container.setPreferredSize(new Dimension(
064: newW, newH));
065: }
066: ResizableWindow.this .setBounds(newX, newY,
067: newW, newH);
068: }
069:
070: @Override
071: public boolean isTopLevel() {
072: return true;
073: }
074: };
075: }
076: };
077: setContentPane(_resizablePanel);
078:
079: // make sure the content pane resized along with the window.
080: addComponentListener(new ComponentAdapter() {
081: @Override
082: public void componentResized(ComponentEvent e) {
083: _resizablePanel.setSize(getSize());
084: }
085: });
086: }
087:
088: /**
089: * Sets the border of the resizable window. Do not pass in an empty border. Otherwise
090: * the window won't be resizable.
091: *
092: * @param border the border.
093: */
094: public void setBorder(Border border) {
095: _resizablePanel.setBorder(border);
096: }
097:
098: /**
099: * Gets the border of the resizable window. By default, <code>UIManagerLookup.getBorder("Resizable.resizeBorder")</code>
100: * will be used.
101: *
102: * @return the border.
103: */
104: public Border getBorder() {
105: return _resizablePanel.getBorder();
106: }
107:
108: /**
109: * Gets the underlying Resizable.
110: *
111: * @return the Resizable.
112: */
113: public Resizable getResizable() {
114: return _resizablePanel.getResizable();
115: }
116: }
|