package graphique;
import javax.swing.*;
import java.awt.*;
//import simulator.*;
public class Graph extends JFrame {
/** panel_l.setBounds(2,2,200,500);
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static JPanel panel_l;
private static JPanel panel_r;
private static void createAndShowGUI() {
//Make sure we have nice window decorations.
// JFrame.setDefaultLookAndFeelDecorated(true);
//Create and set up the window.
//On crée une instance du gestionnaire
JFrame frame = new JFrame("Simulateur de circuits logiques");
frame.setPreferredSize(new Dimension(1000,600));
frame.setLayout(new FlowLayout(0));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create left & right panels
panel_l = new JPanel();
panel_r = new JPanel();
panel_l.setLayout(new FlowLayout(0));
panel_r.setLayout(null);
//Create buttons
//set properties
//Panels de gauche et de droite
panel_l.setBorder(javax.swing.BorderFactory.createTitledBorder("Composants"));
panel_l.setPreferredSize(new Dimension(100,550));
panel_r.setBorder(javax.swing.BorderFactory.createTitledBorder("Circuit"));
panel_r.setPreferredSize(new Dimension(850,550));
panel_r.setBackground(new Color(25,25,55));
frame.getContentPane().add(panel_l);
frame.getContentPane().add(panel_r);
//Create Buttons components then set names
Button and = new Button("and");
Button or = new Button("or");
Button not = new Button("not");
Button nand = new Button("nand");
and.setName("b_and");
or.setName("b_or");
not.setName("b_not");
nand.setName("b_nand");
//Set mouse listeners for all buttons
and.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
buttonMousePressed(evt);
}
});
nand.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
buttonMousePressed(evt);
}
});
or.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
buttonMousePressed(evt);
}
});
not.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
buttonMousePressed(evt);
}
});
//Add component buttons to left panel
panel_l.add(and);
panel_l.add(or);
panel_l.add(not);
panel_l.add(nand);
//Display the window.
frame.pack();
frame.setVisible(true);
}
/**
*buttonMousePressed : catch which button has been pressed and call gate creation method
*@param evt : Mouse event catched
*/
protected static void buttonMousePressed(java.awt.event.MouseEvent evt){
String b_name = evt.getComponent().getName();
//If the gate is a "AND"
Component c;
if (b_name == "b_and"){
System.out.println("Création d'une porte ET");
c = new graphique.Component("and",2);
} else if (b_name == "b_or"){
System.out.println("Création d'une porte OU");
c = new graphique.Component("or",2);
} else if (b_name == "b_nand"){
System.out.println("Création d'une porte NON ET");
c = new graphique.Component("nand",2);
} else if (b_name == "b_not"){
System.out.println("Création d'une porte NON");
c = new graphique.Component("not",1);
} else {
c = null;
}
panel_r.add(new JButton("test"));
panel_r.add(c);
System.out.println(c.getPreferredSize().height + "" + c.getPreferredSize().width + " "+ c.getLocation().toString() );
c.doLayout();
panel_r.doLayout();
c.doLayout();
}
public Graph(){
run();
}
public static void run(){
createAndShowGUI();
}
// public static void main(String[] args) {
// //Schedule a job for the event-dispatching thread:
// //creating and showing this application's GUI.
// javax.swing.SwingUtilities.invokeLater(new Runnable() {
// public void run() {
// createAndShowGUI();
// }
// });
// }
}