001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU General
007: * Public License Version 2 only ("GPL") or the Common Development and Distribution
008: * License("CDDL") (collectively, the "License"). You may not use this file except in
009: * compliance with the License. You can obtain a copy of the License at
010: * http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
011: * License for the specific language governing permissions and limitations under the
012: * License. When distributing the software, include this License Header Notice in
013: * each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Sun
014: * designates this particular file as subject to the "Classpath" exception as
015: * provided by Sun in the GPL Version 2 section of the License file that
016: * accompanied this code. If applicable, add the following below the License Header,
017: * with the fields enclosed by brackets [] replaced by your own identifying
018: * information: "Portions Copyrighted [year] [name of copyright owner]"
019: *
020: * Contributor(s):
021: *
022: * The Original Software is NetBeans. The Initial Developer of the Original Software
023: * is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
024: * Rights Reserved.
025: *
026: * If you wish your version of this file to be governed by only the CDDL or only the
027: * GPL Version 2, indicate your decision by adding "[Contributor] elects to include
028: * this software in this distribution under the [CDDL or GPL Version 2] license." If
029: * you do not indicate a single choice of license, a recipient has the option to
030: * distribute your version of this file under either the CDDL, the GPL Version 2 or
031: * to extend the choice of license to its licensees as provided above. However, if
032: * you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
033: * the option applies only if the new code is made subject to such option by the
034: * copyright holder.
035: */
036:
037: package org.netbeans.installer.utils.helper.swing;
038:
039: import java.awt.AlphaComposite;
040: import java.awt.Color;
041: import java.awt.Composite;
042: import java.awt.Graphics;
043: import java.awt.Graphics2D;
044: import java.awt.GraphicsConfiguration;
045: import java.awt.GraphicsDevice;
046: import java.awt.GraphicsEnvironment;
047: import java.awt.Image;
048: import java.net.URL;
049: import javax.swing.JDialog;
050:
051: /**
052: *
053: * @author Kirill Sorokin
054: */
055: public class NbiDialog extends JDialog {
056: protected NbiFrame owner;
057:
058: protected int dialogWidth;
059: protected int dialogHeight;
060: protected URL dialogIcon;
061:
062: protected NbiDialogContentPane contentPane;
063:
064: public NbiDialog() {
065: super ();
066:
067: initComponents();
068: }
069:
070: public NbiDialog(NbiFrame owner) {
071: super (owner);
072:
073: this .owner = owner;
074:
075: initComponents();
076: }
077:
078: private void initComponents() {
079: setDefaultCloseOperation(DISPOSE_ON_CLOSE);
080:
081: contentPane = new NbiDialogContentPane();
082: setContentPane(contentPane);
083:
084: setSize(DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_HEIGHT);
085: }
086:
087: public void setVisible(boolean visible) {
088: if (owner == null) {
089: final GraphicsDevice screen = GraphicsEnvironment
090: .getLocalGraphicsEnvironment().getScreenDevices()[0];
091: final GraphicsConfiguration config = screen
092: .getDefaultConfiguration();
093:
094: final int screenWidth = config.getBounds().width;
095: final int screenHeight = config.getBounds().height;
096:
097: setLocation((screenWidth - getSize().width) / 2,
098: (screenHeight - getSize().height) / 2);
099: } else {
100: setLocation(owner.getLocation().x
101: + DIALOG_FRAME_WIDTH_DELTA, owner.getLocation().y
102: + DIALOG_FRAME_WIDTH_DELTA);
103: }
104:
105: super .setVisible(visible);
106: }
107:
108: public class NbiDialogContentPane extends NbiPanel {
109: private Image backgroundImage;
110:
111: public NbiDialogContentPane() {
112: super ();
113:
114: if (NbiDialog.this .owner != null) {
115: backgroundImage = NbiDialog.this .owner
116: .getBackgroundImage();
117: }
118: }
119:
120: protected void paintComponent(Graphics graphics) {
121: super .paintComponent(graphics);
122:
123: Graphics2D graphics2d = (Graphics2D) graphics;
124:
125: if (backgroundImage != null) {
126: graphics2d.drawImage(backgroundImage, 0, 0, this );
127:
128: Composite oldComposite = graphics2d.getComposite();
129:
130: graphics2d.setComposite(AlphaComposite.getInstance(
131: AlphaComposite.SRC_OVER, 0.85f));
132: graphics2d.setColor(Color.WHITE);
133: graphics2d.fillRect(0, 0, this .getWidth(), this
134: .getHeight());
135:
136: graphics2d.setComposite(oldComposite);
137: }
138: }
139: }
140:
141: public static final int DIALOG_FRAME_WIDTH_DELTA = 100;
142:
143: public static final int DIALOG_FRAME_HEIGHT_DELTA = 100;
144:
145: public static final int DEFAULT_DIALOG_WIDTH = NbiFrame.DEFAULT_FRAME_WIDTH
146: - DIALOG_FRAME_WIDTH_DELTA;
147:
148: public static final int DEFAULT_DIALOG_HEIGHT = NbiFrame.DEFAULT_FRAME_HEIGHT
149: - DIALOG_FRAME_HEIGHT_DELTA;
150:
151: public static final URL DEFAULT_DIALOG_ICON = NbiDialog.class
152: .getClassLoader().getResource(
153: "org/netbeans/installer/wizard/wizard-icon.png");
154: }
|