trizehn

ImageViewer

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