package Blatt1;
import javax.swing.*;
import org.omg.CORBA.Object;
import java.awt.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Observable;
import java.util.Observer;
public class View extends JFrame implements Observer {
JPanel contentAll = new JPanel();
JPanel menueleiste = new JPanel();
JPanel screen = new JPanel();
JPanel effects = new JPanel();
JPanel customize = new JPanel();
JLabel orig = new JLabel("Original");
JLabel prev = new JLabel("Preview");
String effekte = "";
//String bild = "http://www.blacksins.de/sites/default/files/band_bilder/disturbed.jpg";
JLabel olym;
JLabel olym2;
JTextField filter;
public View(Controller mainController,String pic,String[] filt) {
this.setTitle("Medientechnik - " + "olympiazentrum.png");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentAll.setLayout(new BorderLayout());
menueleiste.setLayout(new FlowLayout());
screen.setLayout(new GridBagLayout());
customize.setLayout(new FlowLayout());
effects.setLayout(new BorderLayout());
GridBagConstraints c = new GridBagConstraints();
orig.setLayout(new BorderLayout());
orig.setLayout(new BorderLayout());
for(int i = 0; i<filt.length;i++){
effekte = effekte + filt[i];
}
try {
ImageIcon olymp = new ImageIcon (""+pic);
ImageIcon olymp2 = new ImageIcon(""+pic);
float h= (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
float w= (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
float olymp_h= olymp.getIconHeight();
float olymp_w= olymp.getIconWidth();
//Berrechnet das Seitenverhältniss des Bildes fuer die Skalierung,im if-Fall. Double für praezisere Angaben
float olymp_verh = olymp_w/olymp_h;
float pic_resized_h = h/2;
float pic_resized_w = (h/2)*olymp_verh;
int res_w = (int) pic_resized_w;
int res_h = (int) pic_resized_h;
if(olymp_h>h || olymp_w >w/2){
olymp.setImage(olymp.getImage().getScaledInstance(res_w,res_h,Image.SCALE_FAST));
olymp2.setImage(olymp2.getImage().getScaledInstance(res_w,res_h,Image.SCALE_FAST));}
else {
olymp.setImage(olymp.getImage().getScaledInstance((int)olymp_w,(int)olymp_h,Image.SCALE_FAST));
olymp2.setImage(olymp2.getImage().getScaledInstance((int)olymp_w,(int)olymp_h,Image.SCALE_FAST));}
this.olym = new JLabel(olymp);
this.olym2 = new JLabel(olymp2);
c.gridx = 0;
c.gridy= 0;
c.gridwidth=3;
screen.add(olym,c);
c.gridx= 3;
c.gridy=0;
c.gridwidth=3;
screen.add(olym2,c);
c.gridx=2;
c.gridy=1;
screen.add(orig,c);
c.gridx=4;
c.gridy=1;
screen.add(prev,c);
} catch (NullPointerException e) {
e.printStackTrace();
}
JMenuBar menuBar = new JMenuBar();
JMenu file = new JMenu("File");
JMenu filters = new JMenu("Filters");
JMenu about = new JMenu("About");
JMenuItem loadfile = new JMenuItem("Load File");
JMenuItem exit = new JMenuItem("Exit");
JMenuItem aboutMedientechnik = new JMenuItem("About Medientechnik");
JCheckBoxMenuItem blur = new JCheckBoxMenuItem("Blur");
JCheckBoxMenuItem disort = new JCheckBoxMenuItem("Disort");
JCheckBoxMenuItem sharpen = new JCheckBoxMenuItem("Sharpen");
JCheckBoxMenuItem contrast = new JCheckBoxMenuItem("Contrast");
JRadioButton allEffects = new JRadioButton("Alle Effekte");
allEffects.setActionCommand("Alle Effekte");
allEffects.addActionListener(mainController);
this.filter = new JTextField(effekte);
JButton random = new JButton("Random");
random.setActionCommand("Random");
random.addActionListener(mainController);
JSeparator separator = new JSeparator();
blur.setState(false);
disort.setState(false);
sharpen.setState(false);
contrast.setState(false);
filters.add(blur);
blur.setActionCommand("blur");
blur.addActionListener(mainController);
filters.add(disort);
disort.setActionCommand("disort");
disort.addActionListener(mainController);
filters.add(sharpen);
sharpen.setActionCommand("sharpen");
sharpen.addActionListener(mainController);
filters.add(contrast);
contrast.setActionCommand("contrast");
contrast.addActionListener(mainController);
file.add(loadfile);
loadfile.setActionCommand("Load File");
loadfile.addActionListener(mainController);
file.add(exit);
exit.setActionCommand("Exit");
exit.addActionListener(mainController);
filters.add(filters);
menuBar.add(file);
menuBar.add(filters);
menuBar.add(about);
about.add(aboutMedientechnik);
aboutMedientechnik.setActionCommand("About Medientechnik");
aboutMedientechnik.addActionListener(mainController);
customize.add(allEffects, FlowLayout.LEFT);
customize.add(random, FlowLayout.CENTER);
customize.add(filter, FlowLayout.RIGHT);
customize.add(new JLabel("Filters: "), FlowLayout.RIGHT);
effects.add(separator, BorderLayout.NORTH);
effects.add(customize, BorderLayout.SOUTH);
contentAll.add(screen, BorderLayout.NORTH);
contentAll.add(effects, BorderLayout.SOUTH);
this.setJMenuBar(menuBar);
this.setContentPane(contentAll);
this.setResizable(false);
this.pack();
this.setVisible(true);
}
@Override
public void update(Observable o, java.lang.Object obj) {
Model m = (Model) o;
olym.setIcon(m.getPic());
olym2.setIcon(m.getPic());
filter.setText(m.filters);
}
}