/**
*
*/
package com.jpii.navalbattle.pavo.boost;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.Timer;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import jsyntaxpane.DefaultSyntaxKit;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JLabel;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import com.jpii.navalbattle.pavo.gui.controls.Control;
import com.jpii.navalbattle.pavo.gui.controls.PButton;
import com.jpii.navalbattle.pavo.gui.controls.PFrame;
import com.jpii.navalbattle.pavo.gui.controls.PProgress;
import com.jpii.navalbattle.pavo.gui.controls.PText;
import com.jpii.navalbattle.pavo.gui.controls.PWindow;
import java.awt.event.MouseAdapter;
public class BoostBuilder extends JFrame {
private static final long serialVersionUID = 1L;
Timer ticker;
_Boost booster;
JEditorPane codeEditor;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
JLabel lblTitle;
public BoostBuilder() {
setTitle("Pavo Boost Live Compiler");
setSize(800, 600);
getContentPane().setLayout(null);
DefaultSyntaxKit.initKit();
codeEditor = new JEditorPane();
JScrollPane scrPane = new JScrollPane(codeEditor);
getContentPane().add(scrPane);
getContentPane().doLayout();
codeEditor.setContentType("text/java");
scrPane.setBounds(0, 385, 784, 177);
codeEditor.setFont(new Font("Consolas", 0, 12));
codeEditor.setBackground(new Color(220, 220, 220));
booster = new _Boost(this, codeEditor);
booster.compile();
JPanel panel = new JPanel();
panel.setBounds(670, 0, 114, 385);
getContentPane().add(panel);
panel.setLayout(null);
textField = new JTextField();
textField.setText("control #1");
textField.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent arg0) {
Control c = booster.getActiveControl();
if (c instanceof PWindow)
((PWindow) c).setText(textField.getText());
else if (c instanceof PButton)
((PButton) c).setText(textField.getText());
else if (c instanceof PText)
((PText) c).setText(textField.getText());
booster.compile();
repaint();
}
});
textField.setBounds(10, 27, 86, 30);
panel.add(textField);
textField.setColumns(10);
lblTitle = new JLabel("Value:");
lblTitle.setBounds(10, 11, 120, 14);
panel.add(lblTitle);
JLabel lblWidth = new JLabel("Width:");
lblWidth.setBounds(10, 68, 46, 14);
panel.add(lblWidth);
textField_1 = new JTextField();
textField_1.setText("100");
textField_1.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
int w = booster.getActiveControl().getWidth();
try {
w = Integer.parseInt(textField_1.getText());
} catch (Throwable t) {
}
if (w < 800 && w >= 25) {
if (!(booster.getActiveControl() instanceof PWindow))
booster.getActiveControl().setWidth(w);
else
booster.wnd.setWidth(w);
booster.compile();
repaint();
}
}
});
textField_1.setBounds(10, 88, 86, 30);
panel.add(textField_1);
textField_1.setColumns(10);
JLabel lblHeight = new JLabel("Height:");
lblHeight.setBounds(10, 129, 46, 14);
panel.add(lblHeight);
textField_2 = new JTextField();
textField_2.setText("100");
textField_2.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
int h = booster.getActiveControl().getHeight();
try {
h = Integer.parseInt(textField_2.getText());
} catch (Throwable t) {
}
if (h < 800 && h >= 25) {
if (!(booster.getActiveControl() instanceof PWindow))
booster.getActiveControl().setHeight(h);
else
booster.wnd.setHeight(h);
booster.compile();
repaint();
}
}
});
textField_2.setBounds(10, 154, 86, 30);
panel.add(textField_2);
textField_2.setColumns(10);
JButton btnNewButton = new JButton("New button");
btnNewButton.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent arg0) {
booster.wnd.addControl(new PButton(booster.wnd, "New button",
1, 30));
booster.compile();
repaint();
}
});
btnNewButton.setBounds(1, 242, 104, 23);
panel.add(btnNewButton);
JButton btnNewLabel = new JButton("New label");
btnNewLabel.setBounds(1, 263, 105, 23);
btnNewLabel.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent arg0) {
booster.wnd
.addControl(new PText(booster.wnd, "New text", 1, 35));
booster.compile();
repaint();
}
});
panel.add(btnNewLabel);
JButton btnNewProgress = new JButton("New progress");
btnNewProgress.setBounds(1, 285, 104, 23);
btnNewProgress.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent arg0) {
booster.wnd.addControl(new PProgress(booster.wnd, 1, 40, 100,
23));
booster.compile();
repaint();
}
});
panel.add(btnNewProgress);
JButton btnNewImage = new JButton("New frame");
btnNewImage.setBounds(1, 305, 104, 23);
btnNewImage.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent arg0) {
booster.wnd.addControl(new PFrame(booster.wnd, 1, 30, 40, 40));
booster.compile();
repaint();
}
});
panel.add(btnNewImage);
final JFrame df = this;
JButton btnFont = new JButton("Font");
btnFont.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent arg0) {
Control c = booster.getActiveControl();
if (!(c instanceof PWindow)) {
JFontChooser jfc = new JFontChooser();
jfc.showDialog(df);
Font d = jfc.getSelectedFont();
if (d != null)
c.setFont(d);
booster.compile();
repaint();
}
}
});
btnFont.setBounds(0, 208, 105, 23);
panel.add(btnFont);
JButton btnCenterControl = new JButton("Center Control");
btnCenterControl.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent arg0) {
Control c = booster.getActiveControl();
if (!(c instanceof PWindow)) {
c.setLocX((booster.wnd.getWidth() / 2) - (c.getWidth() / 2));
booster.compile();
repaint();
} else {
booster.wnd.setLoc(
(booster.buffer.getWidth() / 2)
- (c.getWidth() / 2),
(booster.buffer.getHeight() / 2)
- (c.getHeight() / 2));
booster.compile();
repaint();
}
}
});
btnCenterControl.setBounds(1, 189, 104, 23);
panel.add(btnCenterControl);
JButton btnDelete = new JButton("Delete");
btnDelete.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent arg0) {
Control c = booster.getActiveControl();
if (!(c instanceof PWindow)) {
booster.wnd.removeControl(c);
booster.compile();
booster.render();
repaint();
}
}
});
btnDelete.setBounds(0, 339, 105, 23);
panel.add(btnDelete);
MouseListener ml = new MouseListener() {
public void mouseClicked(MouseEvent arg0) {
}
public void mouseEntered(MouseEvent arg0) {
}
public void mouseExited(MouseEvent arg0) {
}
public void mousePressed(MouseEvent arg0) {
booster.mouseDown(arg0.getX(), arg0.getY(), arg0.getButton());
repaint();
}
public void mouseReleased(MouseEvent arg0) {
booster.mouseUp(arg0.getX(), arg0.getY(), arg0.getButton());
repaint();
}
};
MouseMotionListener mml = new MouseMotionListener() {
public void mouseDragged(MouseEvent arg0) {
booster.mouseDrag(arg0.getX(), arg0.getY(), arg0.getButton());
repaint();
}
public void mouseMoved(MouseEvent arg0) {
}
};
addMouseListener(ml);
addMouseMotionListener(mml);
selectNew();
}
public void selectNew() {
textField.setVisible(true);
lblTitle.setVisible(true);
if (booster.getActiveControl() instanceof PWindow) {
PWindow pw = (PWindow) booster.getActiveControl();
textField.setText(pw.getText());
lblTitle.setText("Window title:");
textField_1.setText(pw.getWidth()+"");
textField_2.setText(pw.getHeight()+"");
}
if (booster.getActiveControl() instanceof PText) {
PText pw = (PText) booster.getActiveControl();
textField.setText(pw.getText());
lblTitle.setText("Text value:");
textField_1.setText(pw.getWidth()+"");
textField_2.setText(pw.getHeight()+"");
}
if (booster.getActiveControl() instanceof PButton) {
PButton pw = (PButton) booster.getActiveControl();
textField.setText(pw.getText());
lblTitle.setText("Button text:");
textField_1.setText(pw.getWidth()+"");
textField_2.setText(pw.getHeight()+"");
}
if (booster.getActiveControl() instanceof PProgress) {
PProgress pw = (PProgress) booster.getActiveControl();
textField.setText(pw.getProgress() + "");
lblTitle.setText("Progress amount:");
textField_1.setText(pw.getWidth()+"");
textField_2.setText(pw.getHeight()+"");
}
if (booster.getActiveControl() instanceof PFrame) {
PFrame f = (PFrame)booster.getActiveControl();
textField.setVisible(false);
lblTitle.setVisible(false);
textField_1.setText(f.getWidth()+"");
textField_2.setText(f.getHeight()+"");
}
}
public void paint(Graphics g) {
BufferedImage buffer = new BufferedImage(getWidth(), getHeight(),
BufferedImage.TYPE_INT_RGB);
Graphics g2 = buffer.getGraphics();
super.paint(g2);
booster.render();
g2.drawImage(booster.buffer, 0, 0, null);
g2.dispose();
g.drawImage(buffer, 0, 0, null);
}
}