/*
 * Copyright (C) 2000-2013 Heinz Max Kabutz
 *
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.  Heinz Max Kabutz licenses
 * this file to you under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License. You may
 * obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package eu.javaspecialists.tjsn.jmatia.server;

import javax.imageio.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;

public class TeacherFrame extends JFrame {
    private final TeacherServer server;
    private final SocketWriterThread writer;
    private final JLabel iconLabel = new JLabel();

    public TeacherFrame(String studentName, TeacherServer server,
                        SocketWriterThread writer) {
        super("Screen from " + studentName);
        this.server = server;
        this.writer = writer;

        add(new JScrollPane(iconLabel));
        iconLabel.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                TeacherFrame.this.writer.clickEvent(e);
            }
        });
        addWindowListener(new WindowAdapter() {
            public void windowActivated(WindowEvent e) {
                TeacherFrame.this.writer.setActive(true);
            }

            public void windowDeactivated(WindowEvent e) {
                TeacherFrame.this.writer.setActive(false);
            }

            public void windowClosing(WindowEvent e) {
                TeacherFrame.this.server.shutdown();
            }
        });

        pack();
        setVisible(true);
    }

    public void showScreenShot(byte[] bytes) throws IOException {
        final BufferedImage img = ImageIO.read(
                new ByteArrayInputStream(bytes));
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                iconLabel.setIcon(new ImageIcon(img));
                pack();
            }
        });
    }
}
