Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.awt.image.*;
  4. import javax.swing.*;
  5. import java.io.File;
  6.  
  7. public class ImageViewer {
  8.     private static final String version = "Version 1.0";
  9.     private static JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));
  10.    
  11.     private JFrame frame;
  12.     private ImagePanel imgPanel;
  13.     private JLabel filenameLabel, statusLabel;
  14.     private OFImage currentImage;
  15.    
  16.     public ImageViewer() {
  17.         // TODO Auto-generated constructor stub
  18.         currentImage = null;
  19.         makeFrame();
  20.     }
  21.    
  22.     private void makeFrame()
  23.     {
  24.         frame = new JFrame("ImageViewer");
  25.         makeMenuBar(frame);
  26.        
  27.         Container contentPane = frame.getContentPane();
  28.         contentPane.setLayout(new BorderLayout(6,6));
  29.        
  30.         filenameLabel = new JLabel();
  31.         contentPane.add(filenameLabel,BorderLayout.NORTH);
  32.        
  33.         imgPanel = new ImagePanel();
  34.         contentPane.add(imgPanel, BorderLayout.CENTER);
  35.        
  36.         statusLabel = new JLabel(version);
  37.         contentPane.add(statusLabel, BorderLayout.SOUTH);
  38.        
  39.         showFilename(null);
  40.         frame.pack();
  41.        
  42.         Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
  43.         frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);
  44.        
  45.         frame.setVisible(true);
  46.     }
  47.    
  48.     private void makeMenuBar(JFrame frame)
  49.     {
  50.         final int SHORTCUT_MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
  51.        
  52.         JMenuBar menuBar = new JMenuBar();
  53.         frame.setJMenuBar(menuBar);
  54.        
  55.         JMenu menu;
  56.         JMenuItem item;
  57.        
  58.         menu = new JMenu("File");
  59.         menuBar.add(menu);
  60.        
  61.         item = new JMenuItem("Open");
  62.         item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_0, SHORTCUT_MASK));
  63.         item.addActionListener(new ActionListener() {
  64.            
  65.             @Override
  66.             public void actionPerformed(ActionEvent e) {
  67.                 // TODO Auto-generated method stub
  68.                 openFile();
  69.             }
  70.         });
  71.         menu.add(item);
  72.        
  73.         item = new JMenuItem("Close");
  74.         item.addActionListener(new ActionListener() {
  75.            
  76.             @Override
  77.             public void actionPerformed(ActionEvent e) {
  78.                 // TODO Auto-generated method stub
  79.                 close();
  80.             }
  81.         });
  82.        
  83.         menu.add(item);
  84.         menu.addSeparator();
  85.        
  86.         item = new JMenuItem("Quit");
  87.         item.addActionListener(new ActionListener() {
  88.            
  89.             @Override
  90.             public void actionPerformed(ActionEvent e) {
  91.                 // TODO Auto-generated method stub
  92.                 quit();
  93.             }
  94.         });
  95.        
  96.         menu.add(item);
  97.        
  98.         menu = new JMenu("Filter");
  99.         menuBar.add(menu);
  100.        
  101.         item = new JMenuItem("Darker");
  102.         item.addActionListener(new ActionListener() {
  103.            
  104.             @Override
  105.             public void actionPerformed(ActionEvent e) {
  106.                 // TODO Auto-generated method stub
  107.                 makeDarker();
  108.             }
  109.         });
  110.         menu.add(item);
  111.        
  112.         item = new JMenuItem("Lighter");
  113.         item.addActionListener(new ActionListener() {
  114.            
  115.             @Override
  116.             public void actionPerformed(ActionEvent e) {
  117.                 // TODO Auto-generated method stub
  118.                 makeLighter();
  119.             }
  120.         });
  121.         menu.add(item);
  122.        
  123.         item = new JMenuItem("Threshold");
  124.         item.addActionListener(new ActionListener() {
  125.            
  126.             @Override
  127.             public void actionPerformed(ActionEvent e) {
  128.                 // TODO Auto-generated method stub
  129.                 threshold();
  130.             }
  131.         });
  132.         menu.add(item);
  133.        
  134.         menu = new JMenu("Help");
  135.         menuBar.add(menu);
  136.        
  137.         item = new JMenuItem("About ImageViewer...");
  138.         item.addActionListener(new ActionListener() {
  139.            
  140.             @Override
  141.             public void actionPerformed(ActionEvent e) {
  142.                 // TODO Auto-generated method stub
  143.                 showAbout();
  144.             }
  145.         });
  146.         menu.add(item);
  147.     }
  148.    
  149.     private void openFile()
  150.     {
  151.         int returnVal = fileChooser.showOpenDialog(frame);
  152.         if(returnVal != JFileChooser.APPROVE_OPTION)
  153.         {
  154.             return;
  155.         }
  156.         File selectedFile = fileChooser.getSelectedFile();
  157.         currentImage = ImageFileManager.loadImage(selectedFile);
  158.        
  159.         if (currentImage == null)
  160.         {
  161.             JOptionPane.showMessageDialog(frame, "The file was not in a recognized image file format.","Image Load Error", JOptionPane.ERROR_MESSAGE);
  162.             return;
  163.         }
  164.         imgPanel.setImage(currentImage);
  165.         showFilename(selectedFile.getPath());
  166.         showStatus("File Loaded.");
  167.         frame.pack();
  168.     }
  169.    
  170.     private void close()
  171.     {
  172.         currentImage = null;
  173.         imgPanel.clearImage();
  174.         showFilename(null);
  175.     }
  176.    
  177.     private void quit()
  178.     {
  179.         System.exit(0);
  180.     }
  181.    
  182.     private void showFilename(String filename)
  183.     {
  184.         if(filename == null)
  185.         {
  186.             filenameLabel.setText("No file displayed");
  187.         }
  188.         else
  189.         {
  190.             filenameLabel.setText("File: " + filename);
  191.         }
  192.     }
  193.    
  194.     private void showAbout()
  195.     {
  196.         JOptionPane.showMessageDialog(frame, "ImageViewer\n" + version, "About ImageViewer", JOptionPane.INFORMATION_MESSAGE);
  197.     }
  198.    
  199.     private void showStatus(String text)
  200.     {
  201.         statusLabel.setText(text);
  202.     }
  203.    
  204.     private void makeDarker()
  205.     {
  206.         if (currentImage != null)
  207.         {
  208.             currentImage.darker();
  209.             frame.repaint();
  210.             showStatus("Applied: draker");
  211.         }
  212.         else
  213.         {
  214.             showStatus("No image loaded.");
  215.         }
  216.     }
  217.    
  218.     private void makeLighter()
  219.     {
  220.         if(currentImage != null)
  221.         {
  222.             currentImage.lighter();
  223.             frame.repaint();
  224.             showStatus("Applied: lighter");
  225.         }
  226.         else
  227.         {
  228.             showStatus("No image loaded");
  229.         }
  230.     }
  231.     private void threshold()
  232.     {
  233.         if(currentImage != null)
  234.         {
  235.             currentImage.threshold();
  236.             frame.repaint();
  237.             showStatus("Applied: threshold");
  238.         }
  239.         else
  240.         {
  241.             showStatus("No image loaded");
  242.         }
  243.     }
  244. }