Guest User

Untitled

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