refactored events listeners + renamed Help to Constants + moved files
This commit is contained in:
parent
338b44f007
commit
33db153302
@ -1,61 +0,0 @@
|
|||||||
package jogl;
|
|
||||||
|
|
||||||
public class Help{
|
|
||||||
|
|
||||||
public Help() {
|
|
||||||
|
|
||||||
}
|
|
||||||
public String getHelp() {
|
|
||||||
String help = "Alphabet{X,Y,Z}\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "Structure d'une requête:\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "{\r\n"
|
|
||||||
+ " Axiom = Lettre ;\r\n"
|
|
||||||
+ " 1ère expression ;\r\n"
|
|
||||||
+ " 2nde expression ;\r\n"
|
|
||||||
+ " It = Nb d'itérations;\r\n"
|
|
||||||
+ "}\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "Une lettre de l'alphabet = avance d'une unité dans une direction.\r\n"
|
|
||||||
+ "Exemple:\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ " X -> avance d'une unité sur l'axe X\r\n"
|
|
||||||
+ " 0.25X -> avance de 0.25 unité sur l'axe X\r\n"
|
|
||||||
+ " 12Z -> avance de 12 unités sur l'axe Z\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "On peut combiner les directions:\r\n"
|
|
||||||
+ "Exemple:\r\n"
|
|
||||||
+ " \r\n"
|
|
||||||
+ " X=Y -> avance d'une unité sur l'axe X et une sur l'axe Y\r\n"
|
|
||||||
+ " 2Y3X0.3Z -> avance de deux unités sur l'axe Y,\r\n"
|
|
||||||
+ " de trois unités sur l'axe X\r\n"
|
|
||||||
+ " de 0.3 unités sur l'axe Z.\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "Les expressions sont de la forme {X = 2X0.2YZ}\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "On pourra changer de direction avec l'alphabet{x,y,z}\r\n"
|
|
||||||
+ "x y et z font par défault une rotation de 45° autour de leur axe.\r\n"
|
|
||||||
+ "Exemple:\r\n"
|
|
||||||
+ " x = 45°\r\n"
|
|
||||||
+ " 2x = 90°\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "Ainsi on pourra écrire:\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ " X = X2y0.2Z0.2x\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "On pourra ajouter plus tard ce qui suit :\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "On peut ajouter le principe d'ouverture et de fermeture des branches aux expressions,\r\n"
|
|
||||||
+ "on utilisera donc pour ce faire les \"[ ]\".\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "Ainsi, dans l'expression: {X = [X]+Y}\r\n"
|
|
||||||
+ "\r\n"
|
|
||||||
+ "On exécutera d'abord l'instruction entre crochets, puis, une fois son nombre maximum d'itérations\r\n"
|
|
||||||
+ "atteint, on ajoutera un mouvement Y.";
|
|
||||||
return help;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
57
src/lsystem/screen/Constants.java
Normal file
57
src/lsystem/screen/Constants.java
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
package lsystem.screen;
|
||||||
|
|
||||||
|
public class Constants {
|
||||||
|
|
||||||
|
public static final int WIDTH = 600;
|
||||||
|
public static final int HEIGHT = 400;
|
||||||
|
public static final String HELP = "Alphabet{X,Y,Z}\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "Structure d'une requête:\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "{\r\n"
|
||||||
|
+ " Axiom = Lettre ;\r\n"
|
||||||
|
+ " 1ère expression ;\r\n"
|
||||||
|
+ " 2nde expression ;\r\n"
|
||||||
|
+ " It = Nb d'itérations;\r\n"
|
||||||
|
+ "}\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "Une lettre de l'alphabet = avance d'une unité dans une direction.\r\n"
|
||||||
|
+ "Exemple:\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ " X -> avance d'une unité sur l'axe X\r\n"
|
||||||
|
+ " 0.25X -> avance de 0.25 unité sur l'axe X\r\n"
|
||||||
|
+ " 12Z -> avance de 12 unités sur l'axe Z\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "On peut combiner les directions:\r\n"
|
||||||
|
+ "Exemple:\r\n"
|
||||||
|
+ " \r\n"
|
||||||
|
+ " X=Y -> avance d'une unité sur l'axe X et une sur l'axe Y\r\n"
|
||||||
|
+ " 2Y3X0.3Z -> avance de deux unités sur l'axe Y,\r\n"
|
||||||
|
+ " de trois unités sur l'axe X\r\n"
|
||||||
|
+ " de 0.3 unités sur l'axe Z.\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "Les expressions sont de la forme {X = 2X0.2YZ}\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "On pourra changer de direction avec l'alphabet{x,y,z}\r\n"
|
||||||
|
+ "x y et z font par défault une rotation de 45° autour de leur axe.\r\n"
|
||||||
|
+ "Exemple:\r\n"
|
||||||
|
+ " x = 45°\r\n"
|
||||||
|
+ " 2x = 90°\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "Ainsi on pourra écrire:\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ " X = X2y0.2Z0.2x\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "On pourra ajouter plus tard ce qui suit :\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "On peut ajouter le principe d'ouverture et de fermeture des branches aux expressions,\r\n"
|
||||||
|
+ "on utilisera donc pour ce faire les \"[ ]\".\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "Ainsi, dans l'expression: {X = [X]+Y}\r\n"
|
||||||
|
+ "\r\n"
|
||||||
|
+ "On exécutera d'abord l'instruction entre crochets, puis, une fois son nombre maximum d'itérations\r\n"
|
||||||
|
+ "atteint, on ajoutera un mouvement Y.";
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package jogl;
|
package lsystem.screen;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.*;
|
import java.awt.event.*;
|
||||||
@ -18,34 +18,24 @@ import com.jogamp.opengl.util.Animator;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class Article1 implements GLEventListener {
|
public class Jogl implements GLEventListener {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void initialize(String[] args) {
|
||||||
// Création de la fenêtre
|
// Création de la fenêtre
|
||||||
Frame frame = new Frame("Article1");
|
Frame frame = new Frame("L-système 3D");
|
||||||
|
|
||||||
// Création du canvas pour dessiner dessus
|
// Création du canvas pour dessiner dessus
|
||||||
GLCanvas canvas = new GLCanvas();
|
GLCanvas canvas = new GLCanvas();
|
||||||
|
|
||||||
// Nous attachons ensuite le méchanisme de callback à notre surface dessinable
|
// Nous attachons ensuite le méchanisme de callback à notre surface dessinable
|
||||||
canvas.addGLEventListener((GLEventListener) new Article1());
|
canvas.addGLEventListener((GLEventListener) new Jogl());
|
||||||
|
|
||||||
// dessin -> fenêtre
|
// dessin -> fenêtre
|
||||||
frame.add(canvas);
|
frame.add(canvas);
|
||||||
|
|
||||||
// Création de l'animator
|
// Création de l'animator
|
||||||
final Animator animator = new Animator(canvas);
|
final Animator animator = new Animator(canvas);
|
||||||
|
|
||||||
// croix rouge = fermeture de la fenêtre
|
// croix rouge = fermeture de la fenêtre
|
||||||
frame.addWindowListener(new WindowAdapter() {
|
frame.addWindowListener(new WindowAdapter() {
|
||||||
public void windowClosing(WindowEvent e) {
|
public void windowClosing(WindowEvent e) {
|
||||||
// Thread pour arrêter l'animator avant la fenêtre
|
// Thread pour arrêter l'animator avant la fenêtre
|
||||||
new Thread(new Runnable() {
|
new Thread(animator::stop).start();
|
||||||
public void run() {
|
|
||||||
animator.stop();
|
|
||||||
System.exit(0);
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -60,15 +50,12 @@ public class Article1 implements GLEventListener {
|
|||||||
// init() sera appelée une fois au début de l'animation. C'est dans cette méthode
|
// init() sera appelée une fois au début de l'animation. C'est dans cette méthode
|
||||||
// que nous nous chargerons de toutes les opérations d'initialisation
|
// que nous nous chargerons de toutes les opérations d'initialisation
|
||||||
public void init(GLAutoDrawable drawable) {
|
public void init(GLAutoDrawable drawable) {
|
||||||
|
|
||||||
// GLEventListener renvoie un contexte (drawable)
|
// GLEventListener renvoie un contexte (drawable)
|
||||||
// que nous allons utiliser pour instancier un objet de type GL
|
// que nous allons utiliser pour instancier un objet de type GL
|
||||||
// qui nous permettra d'utiliser les fonctions OpenGL
|
// qui nous permettra d'utiliser les fonctions OpenGL
|
||||||
GL gl = drawable.getGL();
|
GL gl = drawable.getGL();
|
||||||
|
|
||||||
// désactiver la synchronisation verticale indépendamment de la plateforme utilisée
|
// désactiver la synchronisation verticale indépendamment de la plateforme utilisée
|
||||||
gl.setSwapInterval(1);
|
gl.setSwapInterval(1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Appelée que si la fenêtre d'affichage est redimensionnée
|
// Appelée que si la fenêtre d'affichage est redimensionnée
|
@ -1,11 +1,12 @@
|
|||||||
package jogl;
|
package lsystem.screen;
|
||||||
|
|
||||||
|
|
||||||
|
import lsystem.screen.listener.HelpListener;
|
||||||
|
import lsystem.screen.listener.NewGenListener;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.FlowLayout;
|
import java.awt.FlowLayout;
|
||||||
import java.awt.GridLayout;
|
import java.awt.GridLayout;
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
|
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
@ -19,7 +20,7 @@ import javax.swing.JToolBar;
|
|||||||
import javax.swing.SwingConstants;
|
import javax.swing.SwingConstants;
|
||||||
|
|
||||||
|
|
||||||
public class MainFrame extends JFrame implements ActionListener{
|
public class MainFrame extends JFrame {
|
||||||
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -7898079642230075807L;
|
private static final long serialVersionUID = -7898079642230075807L;
|
||||||
@ -31,9 +32,7 @@ public class MainFrame extends JFrame implements ActionListener{
|
|||||||
private JButton close;
|
private JButton close;
|
||||||
private int nbRules;
|
private int nbRules;
|
||||||
|
|
||||||
public MainFrame(){
|
public MainFrame(){
|
||||||
|
|
||||||
|
|
||||||
nbRules = 1;
|
nbRules = 1;
|
||||||
nbTabs = 0;
|
nbTabs = 0;
|
||||||
basePanel = new JPanel();
|
basePanel = new JPanel();
|
||||||
@ -42,57 +41,43 @@ public class MainFrame extends JFrame implements ActionListener{
|
|||||||
|
|
||||||
JToolBar toolBar = new JToolBar();
|
JToolBar toolBar = new JToolBar();
|
||||||
newGen = new JButton("Nouvelle génération");
|
newGen = new JButton("Nouvelle génération");
|
||||||
newGen.addActionListener(this);
|
newGen.addActionListener(new NewGenListener());
|
||||||
toolBar.add(newGen);
|
toolBar.add(newGen);
|
||||||
help = new JButton("Aide");
|
help = new JButton("Aide");
|
||||||
help.addActionListener(this);
|
help.addActionListener(new HelpListener());
|
||||||
toolBar.add(help);
|
toolBar.add(help);
|
||||||
|
|
||||||
this.setTitle("L-system interface");
|
this.setTitle("L-system interface");
|
||||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
this.setSize(600,400);
|
this.setSize(Constants.WIDTH, Constants.HEIGHT);
|
||||||
this.setLocationRelativeTo(null);
|
this.setLocationRelativeTo(null);
|
||||||
this.add(tabs);
|
this.add(tabs);
|
||||||
this.add(toolBar, BorderLayout.NORTH);
|
this.add(toolBar, BorderLayout.NORTH);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
if(e.getSource() == newGen)
|
|
||||||
newTab();
|
|
||||||
else if(e.getSource() == help)
|
|
||||||
newHelp();
|
|
||||||
else if(e.getSource() == close)
|
|
||||||
closeTab();
|
|
||||||
else
|
|
||||||
throw new Error("This event does not trigger any action");
|
|
||||||
|
|
||||||
}
|
|
||||||
public void newHelp() {
|
public void newHelp() {
|
||||||
JPanel helpTab = new JPanel();
|
JPanel helpTab = new JPanel();
|
||||||
JTextArea helpText = new JTextArea();
|
JTextArea helpText = new JTextArea();
|
||||||
|
helpText.setText(Constants.HELP);
|
||||||
helpText.setEditable(false);
|
helpText.setEditable(false);
|
||||||
helpText.setText(new Help().getHelp());
|
|
||||||
helpTab.add(helpText);
|
helpTab.add(helpText);
|
||||||
tabs.addTab("Aide",(new JScrollPane(helpTab)));
|
tabs.addTab("Aide",(new JScrollPane(helpTab)));
|
||||||
|
|
||||||
}
|
}
|
||||||
public void newTab() {
|
public void newTab() {
|
||||||
|
|
||||||
nbTabs ++;
|
nbTabs ++;
|
||||||
JPanel tab = new JPanel();
|
JPanel tab = new JPanel();
|
||||||
|
|
||||||
JTextArea axiomList = new JTextArea();
|
JTextArea axiomList = new JTextArea();
|
||||||
axiomList.setEditable(false);
|
|
||||||
axiomList.setText("Axiome : \n");
|
axiomList.setText("Axiome : \n");
|
||||||
|
axiomList.setEditable(false);
|
||||||
|
|
||||||
JTextArea rulesList = new JTextArea();
|
JTextArea rulesList = new JTextArea();
|
||||||
rulesList.setEditable(false);
|
|
||||||
rulesList.setText("Règles : \n");
|
rulesList.setText("Règles : \n");
|
||||||
|
rulesList.setEditable(false);
|
||||||
|
|
||||||
JLabel axiome = new JLabel("Axiome");
|
JLabel axiome = new JLabel("Axiome");
|
||||||
JLabel rules = new JLabel("Règle "+nbRules);
|
JLabel rules = new JLabel("Règle "+ nbRules);
|
||||||
JTextField axiomeField = new JTextField();
|
JTextField axiomeField = new JTextField();
|
||||||
JTextField rulesField = new JTextField();
|
JTextField rulesField = new JTextField();
|
||||||
tab.add(axiome);
|
tab.add(axiome);
|
11
src/lsystem/screen/listener/HelpListener.java
Normal file
11
src/lsystem/screen/listener/HelpListener.java
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package lsystem.screen.listener;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
public class HelpListener implements ActionListener {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
11
src/lsystem/screen/listener/NewGenListener.java
Normal file
11
src/lsystem/screen/listener/NewGenListener.java
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package lsystem.screen.listener;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
public class NewGenListener implements ActionListener {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user