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.Graphics;
040: import java.awt.GridBagLayout;
041: import java.awt.Image;
042: import java.io.File;
043: import java.util.ArrayList;
044: import java.util.List;
045: import javax.swing.ImageIcon;
046: import javax.swing.JPanel;
047: import org.netbeans.installer.utils.FileProxy;
048: import org.netbeans.installer.utils.LogManager;
049: import org.netbeans.installer.utils.exceptions.DownloadException;
050: import org.netbeans.installer.utils.helper.Pair;
051:
052: /**
053: *
054: * @author Kirill Sorokin
055: */
056: public class NbiPanel extends JPanel {
057: private List<Pair<Integer, ImageIcon>> images;
058: public static final int ANCHOR_TOP_LEFT = 1;
059: public static final int ANCHOR_TOP_RIGHT = 2;
060: public static final int ANCHOR_BOTTOM_LEFT = 3;
061: public static final int ANCHOR_BOTTOM_RIGHT = 4;
062: public static final int ANCHOR_LEFT = 5;
063: public static final int ANCHOR_RIGHT = 6;
064: public static final int ANCHOR_BOTTOM = 7;
065: public static final int ANCHOR_TOP = 8;
066:
067: public NbiPanel() {
068: super ();
069:
070: setLayout(new GridBagLayout());
071: images = new ArrayList<Pair<Integer, ImageIcon>>();
072: }
073:
074: public void setBackgroundImage(String backgroundImageURI, int anchor) {
075: if (backgroundImageURI != null) {
076: try {
077: File file = FileProxy.getInstance().getFile(
078: backgroundImageURI, true);
079: ImageIcon backgroundImage = new ImageIcon(file
080: .getAbsolutePath());
081: setBackgroundImage(backgroundImage, anchor);
082: } catch (DownloadException e) {
083: LogManager.log(e);
084: }
085: }
086: }
087:
088: public void setBackgroundImage(ImageIcon backgroundImage, int anchor) {
089: if (backgroundImage != null) {
090: images.add(new Pair<Integer, ImageIcon>(anchor,
091: backgroundImage));
092: }
093: }
094:
095: public ImageIcon getBackgroundImage(int anchor) {
096: for (Pair<Integer, ImageIcon> pair : images) {
097: if (pair.getFirst().intValue() == anchor) {
098: return pair.getSecond();
099: }
100: }
101: return null;
102: }
103:
104: protected void paintComponent(Graphics graphics) {
105: super .paintComponent(graphics);
106:
107: for (Pair<Integer, ImageIcon> pair : images) {
108: final int anchor = pair.getFirst().intValue();
109: Image backgroundImage = pair.getSecond().getImage();
110: if (backgroundImage != null) {
111: switch (anchor) {
112: case ANCHOR_TOP_LEFT:
113: graphics.drawImage(backgroundImage, 0, 0, this );
114: break;
115: case ANCHOR_TOP_RIGHT:
116: graphics.drawImage(backgroundImage, this .getWidth()
117: - backgroundImage.getWidth(this ), 0, this );
118: break;
119: case ANCHOR_BOTTOM_LEFT:
120: graphics.drawImage(backgroundImage, 0, this
121: .getHeight()
122: - backgroundImage.getHeight(this ), this );
123: break;
124: case ANCHOR_BOTTOM_RIGHT:
125: graphics.drawImage(backgroundImage, this .getWidth()
126: - backgroundImage.getWidth(this ), this
127: .getHeight()
128: - backgroundImage.getHeight(this ), this );
129: break;
130:
131: case ANCHOR_LEFT:
132: graphics.drawImage(backgroundImage, 0, (this
133: .getHeight() - backgroundImage
134: .getHeight(this )) / 2, this );
135: break;
136: case ANCHOR_RIGHT:
137: graphics.drawImage(backgroundImage, this .getWidth()
138: - backgroundImage.getWidth(this ), (this
139: .getHeight() - backgroundImage
140: .getHeight(this )) / 2, this );
141: break;
142: case ANCHOR_BOTTOM:
143: graphics.drawImage(backgroundImage, (this
144: .getWidth() - backgroundImage
145: .getWidth(this )) / 2, this .getHeight()
146: - backgroundImage.getHeight(this ), this );
147: break;
148: case ANCHOR_TOP:
149: graphics.drawImage(backgroundImage, this .getWidth()
150: - backgroundImage.getWidth(this ), 0, this);
151: break;
152: }
153: }
154: }
155: }
156: }
|