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
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package examples.imageviewer;
043:
044: /** This class is an entry point of the simple image viewer.
045: * It creates and shows the main application frame.
046: */
047: public class ImageViewer extends javax.swing.JFrame {
048:
049: /** Image Viewer constructor.
050: * It initializes all GUI components [menu bar, menu items, desktop pane, etc.].
051: */
052: public ImageViewer() {
053: initComponents();
054: pack();
055: setBounds(100, 100, 400, 400);
056: }
057:
058: /** This method is called from within the constructor to
059: * initialize the form.
060: * WARNING: Do NOT modify this code. The content of this method is
061: * always regenerated by the FormEditor.
062: */
063: private void initComponents() {//GEN-BEGIN:initComponents
064: desktop = new javax.swing.JDesktopPane();
065: mainMenuBar = new javax.swing.JMenuBar();
066: fileMenu = new javax.swing.JMenu();
067: openMenuItem = new javax.swing.JMenuItem();
068: jSeparator1 = new javax.swing.JSeparator();
069: exitMenuItem = new javax.swing.JMenuItem();
070:
071: setTitle("Image Viewer");
072: addWindowListener(new java.awt.event.WindowAdapter() {
073: public void windowClosing(java.awt.event.WindowEvent evt) {
074: exitForm(evt);
075: }
076: });
077:
078: getAccessibleContext().setAccessibleName("Image Viewer Frame");
079: getContentPane().add(desktop, java.awt.BorderLayout.CENTER);
080: desktop.getAccessibleContext().setAccessibleName(
081: "Image Desktop");
082: desktop.getAccessibleContext().setAccessibleDescription(
083: "Image desktop");
084:
085: fileMenu.setMnemonic('f');
086: fileMenu.setText("File");
087: openMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
088: java.awt.event.KeyEvent.VK_O,
089: java.awt.event.InputEvent.CTRL_MASK));
090: openMenuItem.setMnemonic('o');
091: openMenuItem.setText("Open");
092: openMenuItem
093: .addActionListener(new java.awt.event.ActionListener() {
094: public void actionPerformed(
095: java.awt.event.ActionEvent evt) {
096: openMenuItemActionPerformed(evt);
097: }
098: });
099:
100: fileMenu.add(openMenuItem);
101: openMenuItem.getAccessibleContext().setAccessibleName(
102: "Open Menu Item");
103: openMenuItem.getAccessibleContext().setAccessibleDescription(
104: "Open menu item.");
105:
106: fileMenu.add(jSeparator1);
107:
108: exitMenuItem.setMnemonic('x');
109: exitMenuItem.setText("Exit");
110: exitMenuItem
111: .addActionListener(new java.awt.event.ActionListener() {
112: public void actionPerformed(
113: java.awt.event.ActionEvent evt) {
114: exitMenuItemActionPerformed(evt);
115: }
116: });
117:
118: fileMenu.add(exitMenuItem);
119: exitMenuItem.getAccessibleContext().setAccessibleName(
120: "Exit Menu Item");
121: exitMenuItem.getAccessibleContext().setAccessibleDescription(
122: "Exit menu item.");
123:
124: mainMenuBar.add(fileMenu);
125: fileMenu.getAccessibleContext().setAccessibleName("File Menu");
126: fileMenu.getAccessibleContext().setAccessibleDescription(
127: "File menu.");
128:
129: setJMenuBar(mainMenuBar);
130: mainMenuBar.getAccessibleContext().setAccessibleName(
131: "Main Menu Bar");
132: mainMenuBar.getAccessibleContext().setAccessibleDescription(
133: "Main menu bar.");
134:
135: }//GEN-END:initComponents
136:
137: /** This method is called when File -> Exit menu item is invoked.
138: * It closes the application.
139: * @param evt ActionEvent instance passed from actionPerformed event.
140: */
141: private void exitMenuItemActionPerformed(
142: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
143: System.exit(0);
144: }//GEN-LAST:event_exitMenuItemActionPerformed
145:
146: /** This method is called when File -> Open menu item is invoked.
147: * It displays a dialog to choose the image file to be opened and displayed.
148: * @param evt ActionEvent instance passed from actionPerformed event.
149: */
150: private void openMenuItemActionPerformed(
151: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openMenuItemActionPerformed
152: javax.swing.JFileChooser chooser = new javax.swing.JFileChooser();
153: chooser.addChoosableFileFilter(new ImageFileFilter());
154: int option = chooser.showOpenDialog(this );
155: if (option == javax.swing.JFileChooser.APPROVE_OPTION) {
156: java.io.File file = chooser.getSelectedFile();
157: if (file == null)
158: return;
159: ImageFrame ifr = new ImageFrame(file.getAbsolutePath());
160: desktop.add(ifr, javax.swing.JLayeredPane.DEFAULT_LAYER);
161:
162: ifr.setVisible(true);
163: ifr.setSize(200, 200);
164: ifr.setLocation(0, 0);
165: }
166: }//GEN-LAST:event_openMenuItemActionPerformed
167:
168: /** This method is called when the application frame is closed.
169: * @param evt WindowEvent instance passed from windowClosing event.
170: */
171: private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
172: System.exit(0);
173: }//GEN-LAST:event_exitForm
174:
175: /** Define custom file filter for acceptable image files.
176: */
177: private static class ImageFileFilter extends
178: javax.swing.filechooser.FileFilter {
179:
180: public boolean accept(java.io.File file) {
181: if (file == null)
182: return false;
183: return file.isDirectory()
184: || file.getName().toLowerCase().endsWith(".gif")
185: || file.getName().toLowerCase().endsWith(".jpg");
186: }
187:
188: public String getDescription() {
189: return "Image files (*.gif, *.jpg)";
190: }
191:
192: }
193:
194: // Variables declaration - do not modify//GEN-BEGIN:variables
195: private javax.swing.JDesktopPane desktop;
196: private javax.swing.JMenuItem exitMenuItem;
197: private javax.swing.JMenu fileMenu;
198: private javax.swing.JSeparator jSeparator1;
199: private javax.swing.JMenuBar mainMenuBar;
200: private javax.swing.JMenuItem openMenuItem;
201:
202: // End of variables declaration//GEN-END:variables
203:
204: /** Starts the application.
205: * @param args Application arguments.
206: */
207: public static void main(String args[]) {
208: new ImageViewer().show();
209: }
210:
211: }
|