package com.qksnap.www.snap.gui.tabpane;
import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.awt.image.ImageProducer;
import java.awt.image.RGBImageFilter;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import com.qksnap.www.snap.gui.GlassFrame;
import com.qksnap.www.snap.gui.SplashScreen;
public class MainPane extends JPanel{
private JLabel Label;
private JLabel Label2;
private JLabel Label3;
private Image img;
private Image capimg;
private JButton caBtn;
private JButton saBtn;
private JButton daBtn;
protected void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
g.drawImage(capimg,75,15,null);
long start = System.currentTimeMillis();
try {
// Delay depending on how far behind current time we are.
start += (1000/30);
Thread.sleep(Math.max(0, start - System.currentTimeMillis()));
} catch(Exception e){
e.printStackTrace();
}
}
public MainPane(){
try {
img = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/mpbg.png"));
capimg = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/capturetxt.png"));
} catch (Exception e) {
e.printStackTrace();
}
repaint();
setLayout(null);
Label = new JLabel("<html><u>"+SplashScreen.getSingleton().getUserSettings().getSnapHK()+" - Area Screen Snap</u></html>");
Label2 = new JLabel("<html><u>"+SplashScreen.getSingleton().getUserSettings().getSelHK()+" - Area Selection for future Screen Snap</u></html>");
Label3 = new JLabel("<html><u>"+SplashScreen.getSingleton().getUserSettings().getSelsnapHK()+" - Free-Form Selection and Screen Snap</u></html>");
caBtn = new JButton(new ImageIcon(getClass().getResource("/cuareabtn.png")));
caBtn.setContentAreaFilled(false);
caBtn.setBorderPainted(false);
final String html =
"<html><body>" +
"<p><b>Select Pre-Defined Region</b>:<br>" +
"<b>This feature is used for defining a screenshot region from the Pre-Defined Screenshot Button.<br>" +
"Usage: Select the area on your screen you wish to use for screenshots</html>";
caBtn.setToolTipText(html);
caBtn.setFocusPainted(false);
caBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(!SplashScreen.getSingleton().getMainFrame().isDrawingAlready())
SplashScreen.getSingleton().getMainFrame().setState(SplashScreen.getSingleton().getMainFrame().ICONIFIED);
GlassFrame.getInstance().setUpWindow(false);
GlassFrame.getInstance().setVisible(true);
SplashScreen.getSingleton().getMainFrame().setIsDrawingAlready(true);
}
});
caBtn.setBounds(240, 40, 73, 88);
final String html2 =
"<html><body>" +
"<p><b>Select Pre-Defined Screenshot</b>:<br>" +
"<b>This feature is used for rapid screenshot snapping. You do not need to define a screenshot region<br>"+
"<b>as it is pre-defined using the Pre-Defined Select Area button.<br>" +
"Usage: Are you not moving your screenshot region?<br>" +
"Save time and use the pre-defined region tool to take screenshots of pre-defined areas selected by you!";
saBtn = new JButton(new ImageIcon(getClass().getResource("/selwinbtn.png")));
saBtn.setContentAreaFilled(false);
saBtn.setBorderPainted(false);
saBtn.setToolTipText(html2);
saBtn.setFocusPainted(false);
saBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(!SplashScreen.getSingleton().getMainFrame().isDrawingAlready()){
SplashScreen.getSingleton().getMainFrame().screenshot();
}
}
});
saBtn.setBounds(340, 40, 80, 88);
add(saBtn);
daBtn = new JButton(new ImageIcon(getClass().getResource("/daBtn.png")));
daBtn.setContentAreaFilled(false);
daBtn.setBorderPainted(false);
daBtn.setFocusPainted(false);
final String html3 =
"<html><body>" +
"<p><b>Freeze Screenshot:</b>:<br>" +
"<b>This feature is used to freeze your screen and allow for croping of area you wish to share.<br>" +
"Usage: Select the area on your frozen screen you wish to crop for a screenshot!</html>";
daBtn.setToolTipText(html3);
daBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(!SplashScreen.getSingleton().getMainFrame().isDrawingAlready()){
SplashScreen.getSingleton().getMainFrame().setState(SplashScreen.getSingleton().getMainFrame().ICONIFIED);
SplashScreen.getSingleton().getMainFrame().snapscreenshot();
SplashScreen.getSingleton().getMainFrame().setIsDrawingAlready(true);
}
}
});
daBtn.setBounds(140, 40, 80, 88);
add(daBtn);
Label3.setText("<html><font face=\"verdana\">"+capitalize(SplashScreen.getSingleton().getUserSettings().getSelsnapHK())+"</font></html>");
Label2.setText("<html><font face=\"verdana\">"+capitalize(SplashScreen.getSingleton().getUserSettings().getSelHK())+"</font></html>");
Label.setText("<html><font face=\"verdana\">"+capitalize(SplashScreen.getSingleton().getUserSettings().getSnapHK())+"</font></html>");
repaint();
setBackground(Color.white);
setBorder(BorderFactory.createLineBorder(new Color(218,218,218)));
Label3.setBounds(150,125,128,32);
Label2.setBounds(240,125,128,32);
Label.setBounds(345, 125,128,32);
add(Label);
add(Label2);
add(Label3);
add(caBtn);
}
private String capitalize(String line) { return Character.toUpperCase(line.charAt(0)) + line.substring(1); }
public void updateLbl() {
Label3.setText("<html><font face=\"verdana\">"+capitalize(SplashScreen.getSingleton().getUserSettings().getSelsnapHK())+"</font></html>");
Label2.setText("<html><font face=\"verdana\">"+capitalize(SplashScreen.getSingleton().getUserSettings().getSelHK())+"</font></html>");
Label.setText("<html><font face=\"verdana\">"+capitalize(SplashScreen.getSingleton().getUserSettings().getSnapHK())+"</font></html>");
repaint();
validate();
}
}