Code has been clarified a bit

This commit is contained in:
Quentin Legot 2021-04-13 16:32:41 +02:00
parent 8505051dd4
commit 0aa4f88abd
5 changed files with 15 additions and 58 deletions

View File

@ -19,8 +19,4 @@ public class Element {
this.rotation = rotation; this.rotation = rotation;
} }
public int getRotation2D () {
return (int) rotation[0];
}
} }

View File

@ -74,6 +74,6 @@ public abstract class AbstractCanvas {
public enum State { public enum State {
LOAD, LOAD,
FINISH_OR_NULL; FINISH_OR_NULL
} }
} }

View File

@ -67,6 +67,7 @@ public class DrawHelper {
} }
@SuppressWarnings("unused")
public static void drawDebugInformation(GL2 gl, GLUT glut, AbstractCanvas canvas) { public static void drawDebugInformation(GL2 gl, GLUT glut, AbstractCanvas canvas) {
gl.glRasterPos3f(canvas.camera[0], canvas.camera[1], canvas.camera[2] - 1); gl.glRasterPos3f(canvas.camera[0], canvas.camera[1], canvas.camera[2] - 1);
gl.glColor3f(1f, 1f, 1f); gl.glColor3f(1f, 1f, 1f);

View File

@ -52,49 +52,7 @@ public class Listener implements ActionListener, KeyListener, MouseWheelListener
tab.getTextField((byte) 1).setText(""); tab.getTextField((byte) 1).setText("");
Listener kl = (Listener) tab.getTextField((byte) 0).getKeyListeners()[0]; Listener kl = (Listener) tab.getTextField((byte) 0).getKeyListeners()[0];
kl.resetNbAxioms(); kl.resetNbAxioms();
break; break;
case "Generate 2D":
String axiom2D = tab.getAxiom();
List<String> rules2D = tab.getRules();
Parser parser2D = new Parser(axiom2D, rules2D, tab.getNbIterations());
if(Main.joglFrame.frame.isVisible()) {
openDialog("Veuillez fermer la fenêtre 2D ou 3D avant de lancer une nouvelle génération");
} else if(Main.joglFrame.parsedState == AbstractCanvas.State.LOAD) {
openDialog("Une génération est actuellement en cours, impossible d'en relancer un autre");
openDialog("Une génération est actuellement en cours, impossible d'en relancer un autre");
} else if (!parser2D.isCorrect()) {
openDialog("Vos règles ou votre axiome ne sont pas correctement écrites, veuillez recommencer");
} else {
tab.submitButton2D.setIcon(staticIcon);
tab.submitButton2D.setText("");
parserThread = new Thread(() -> {
try {
List<Pair<String, String>> lSystemRules = parser2D.parseRules();
Main.joglFrame.setLSystem(axiom2D, lSystemRules, tab.getNbIterations());
StringBuilder message = new StringBuilder("L-System 2D - {axiom:\"").append(axiom2D).append("\",rules:[");
for(int i = 0; i < lSystemRules.size(); ++i) {
Pair<String, String> rule = lSystemRules.get(i);
message.append("\"").append(rule.getLeft()).append("=").append(rule.getRight()).append("\"");
if(i + 1 != lSystemRules.size())
message.append(",");
}
Main.joglFrame.frame.setTitle(message.append("]} - Nombres d'itérations: ").append(tab.getNbIterations()).toString());
Main.joglFrame.setVisible(true);
} catch (NumberFormatException err) {
Main.joglFrame.parsedState = AbstractCanvas.State.FINISH_OR_NULL;
openDialog("Une erreur de type " + err.getClass().getSimpleName() + " est survenue lors de l'execution du parser: " + err.getMessage());
}
tab.submitButton2D.setIcon(null);
tab.submitButton2D.setText("Générer en 2D");
});
parserThread.start();
}
break;
case "Generate 3D": case "Generate 3D":
String axiom3D = tab.getAxiom(); String axiom3D = tab.getAxiom();
List<String> rules3D = tab.getRules(); List<String> rules3D = tab.getRules();

View File

@ -1,9 +1,7 @@
package lsystem.screen.main; package lsystem.screen.main;
import javax.swing.*; import javax.swing.*;
import javax.swing.plaf.basic.BasicButtonUI;
import java.awt.*; import java.awt.*;
import java.awt.event.ActionListener;
import java.util.Arrays; import java.util.Arrays;
public class Tab extends JPanel{ public class Tab extends JPanel{
@ -12,8 +10,8 @@ public class Tab extends JPanel{
int nbRules; int nbRules;
public JSpinner itSpinner; public JSpinner itSpinner;
JTextField axiomeField,rulesField; JTextField axiomeField,rulesField;
JTextArea axiomList,rulesList;; JTextArea axiomList,rulesList;
JButton submitButton2D, submitButton3D, close; JButton submitButton3D, close;
public Tab(int nbTabs,int nbRules,JTabbedPane tabs,MainFrame frame) { public Tab(int nbTabs,int nbRules,JTabbedPane tabs,MainFrame frame) {
this.nbRules = nbRules; this.nbRules = nbRules;
@ -39,15 +37,11 @@ public class Tab extends JPanel{
rulesField = new JTextField(); rulesField = new JTextField();
rulesField.addKeyListener(new Listener(null,nbTabs+10,"Règles",this)); rulesField.addKeyListener(new Listener(null,nbTabs+10,"Règles",this));
rulesField.setPreferredSize(new Dimension(120,20)); rulesField.setPreferredSize(new Dimension(120,20));
submitButton2D = new JButton("Générer en 2D");
submitButton3D = new JButton("Générer en 3D"); submitButton3D = new JButton("Générer en 3D");
JButton clearButton = new JButton("Clear"); JButton clearButton = new JButton("Clear");
clearButton.addActionListener(new Listener(null,nbTabs,"Clear",this)); clearButton.addActionListener(new Listener(null,nbTabs,"Clear",this));
submitButton2D.addActionListener(new Listener(null,nbTabs,"Generate 2D",this));
submitButton3D.addActionListener(new Listener(null,nbTabs,"Generate 3D",this)); submitButton3D.addActionListener(new Listener(null,nbTabs,"Generate 3D",this));
JPanel southComponents = subPanel(submitButton2D,submitButton3D, null); JPanel southComponents2 = subPanel(clearButton, submitButton3D, null);
JPanel southComponents2 = subPanel(clearButton, southComponents, null);
GridBagConstraints gc = new GridBagConstraints(); GridBagConstraints gc = new GridBagConstraints();
gc.gridx = 0; gc.gridx = 0;
@ -71,10 +65,11 @@ public class Tab extends JPanel{
aboveComponents.setLayout(new GridLayout(1,4)); aboveComponents.setLayout(new GridLayout(1,4));
this.add(aboveComponents); this.add(aboveComponents);
this.add(southComponents2); this.add(southComponents2);
this.setLayout(new BoxLayout(this,1)); this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
tabs.addTab("Génération"+String.valueOf(nbTabs),this); tabs.addTab("Génération" + nbTabs,this);
} }
public JTextArea textArea(String texte, int nb){ public JTextArea textArea(String texte, int nb){
JTextArea res = new JTextArea(); JTextArea res = new JTextArea();
res.setText(texte); res.setText(texte);
@ -83,6 +78,7 @@ public class Tab extends JPanel{
return res; return res;
} }
public JPanel subPanel(Component a, Component b,GridBagConstraints gc){ public JPanel subPanel(Component a, Component b,GridBagConstraints gc){
JPanel res = new JPanel(); JPanel res = new JPanel();
if(gc == null){ if(gc == null){
@ -97,12 +93,15 @@ public class Tab extends JPanel{
gc.gridy = 0; gc.gridy = 0;
return res; return res;
} }
public JTextArea getTextArea(byte i){ public JTextArea getTextArea(byte i){
return (i == 0) ? axiomList : rulesList; return (i == 0) ? axiomList : rulesList;
} }
public JTextField getTextField(byte i){ public JTextField getTextField(byte i){
return (i == 0) ? axiomeField : rulesField; return (i == 0) ? axiomeField : rulesField;
} }
public void changeList(String stringToAdd, JTextArea list, int nbAxioms) { public void changeList(String stringToAdd, JTextArea list, int nbAxioms) {
if(nbAxioms > 0) if(nbAxioms > 0)
JOptionPane.showMessageDialog(null, "Nombre maximal d'axiomes créés"); JOptionPane.showMessageDialog(null, "Nombre maximal d'axiomes créés");
@ -113,17 +112,20 @@ public class Tab extends JPanel{
} }
} }
public String getAxiom(){ public String getAxiom(){
String str = axiomList.getText(); String str = axiomList.getText();
str = str.substring(10).replaceAll(";", ""); str = str.substring(10).replaceAll(";", "");
return str; return str;
} }
public java.util.List<String> getRules(){ public java.util.List<String> getRules(){
String str = rulesList.getText(); String str = rulesList.getText();
str = str.substring(10).replaceAll(";", ""); str = str.substring(10).replaceAll(";", "");
String[] strsplit = str.split("\n"); String[] strsplit = str.split("\n");
return Arrays.asList(strsplit); return Arrays.asList(strsplit);
} }
public int getNbIterations(){ public int getNbIterations(){
return (int) itSpinner.getValue(); return (int) itSpinner.getValue();
} }