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.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
|
||||
Frame frame = new Frame("Article1");
|
||||
|
||||
Frame frame = new Frame("L-système 3D");
|
||||
// Création du canvas pour dessiner dessus
|
||||
GLCanvas canvas = new GLCanvas();
|
||||
|
||||
// Nous attachons ensuite le méchanisme de callback à notre surface dessinable
|
||||
canvas.addGLEventListener((GLEventListener) new Article1());
|
||||
|
||||
canvas.addGLEventListener((GLEventListener) new Jogl());
|
||||
// dessin -> fenêtre
|
||||
frame.add(canvas);
|
||||
|
||||
// Création de l'animator
|
||||
final Animator animator = new Animator(canvas);
|
||||
|
||||
// croix rouge = fermeture de la fenêtre
|
||||
frame.addWindowListener(new WindowAdapter() {
|
||||
public void windowClosing(WindowEvent e) {
|
||||
// Thread pour arrêter l'animator avant la fenêtre
|
||||
new Thread(new Runnable() {
|
||||
public void run() {
|
||||
animator.stop();
|
||||
System.exit(0);
|
||||
}
|
||||
}).start();
|
||||
new Thread(animator::stop).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
|
||||
// que nous nous chargerons de toutes les opérations d'initialisation
|
||||
public void init(GLAutoDrawable drawable) {
|
||||
|
||||
// GLEventListener renvoie un contexte (drawable)
|
||||
// que nous allons utiliser pour instancier un objet de type GL
|
||||
// qui nous permettra d'utiliser les fonctions OpenGL
|
||||
GL gl = drawable.getGL();
|
||||
|
||||
// désactiver la synchronisation verticale indépendamment de la plateforme utilisée
|
||||
gl.setSwapInterval(1);
|
||||
|
||||
}
|
||||
|
||||
// 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.FlowLayout;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JFrame;
|
||||
@ -19,7 +20,7 @@ import javax.swing.JToolBar;
|
||||
import javax.swing.SwingConstants;
|
||||
|
||||
|
||||
public class MainFrame extends JFrame implements ActionListener{
|
||||
public class MainFrame extends JFrame {
|
||||
|
||||
|
||||
private static final long serialVersionUID = -7898079642230075807L;
|
||||
@ -32,8 +33,6 @@ public class MainFrame extends JFrame implements ActionListener{
|
||||
private int nbRules;
|
||||
|
||||
public MainFrame(){
|
||||
|
||||
|
||||
nbRules = 1;
|
||||
nbTabs = 0;
|
||||
basePanel = new JPanel();
|
||||
@ -42,54 +41,40 @@ public class MainFrame extends JFrame implements ActionListener{
|
||||
|
||||
JToolBar toolBar = new JToolBar();
|
||||
newGen = new JButton("Nouvelle génération");
|
||||
newGen.addActionListener(this);
|
||||
newGen.addActionListener(new NewGenListener());
|
||||
toolBar.add(newGen);
|
||||
help = new JButton("Aide");
|
||||
help.addActionListener(this);
|
||||
help.addActionListener(new HelpListener());
|
||||
toolBar.add(help);
|
||||
|
||||
this.setTitle("L-system interface");
|
||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
this.setSize(600,400);
|
||||
this.setSize(Constants.WIDTH, Constants.HEIGHT);
|
||||
this.setLocationRelativeTo(null);
|
||||
this.add(tabs);
|
||||
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() {
|
||||
JPanel helpTab = new JPanel();
|
||||
JTextArea helpText = new JTextArea();
|
||||
helpText.setText(Constants.HELP);
|
||||
helpText.setEditable(false);
|
||||
helpText.setText(new Help().getHelp());
|
||||
helpTab.add(helpText);
|
||||
tabs.addTab("Aide",(new JScrollPane(helpTab)));
|
||||
|
||||
}
|
||||
public void newTab() {
|
||||
|
||||
nbTabs ++;
|
||||
JPanel tab = new JPanel();
|
||||
|
||||
JTextArea axiomList = new JTextArea();
|
||||
axiomList.setEditable(false);
|
||||
axiomList.setText("Axiome : \n");
|
||||
axiomList.setEditable(false);
|
||||
|
||||
JTextArea rulesList = new JTextArea();
|
||||
rulesList.setEditable(false);
|
||||
rulesList.setText("Règles : \n");
|
||||
rulesList.setEditable(false);
|
||||
|
||||
JLabel axiome = new JLabel("Axiome");
|
||||
JLabel rules = new JLabel("Règle "+ nbRules);
|
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