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

@ -18,9 +18,5 @@ public class Element {
this.parent = parent;
this.rotation = rotation;
}
public int getRotation2D () {
return (int) rotation[0];
}
}

View File

@ -74,6 +74,6 @@ public abstract class AbstractCanvas {
public enum State {
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) {
gl.glRasterPos3f(canvas.camera[0], canvas.camera[1], canvas.camera[2] - 1);
gl.glColor3f(1f, 1f, 1f);

View File

@ -52,49 +52,7 @@ public class Listener implements ActionListener, KeyListener, MouseWheelListener
tab.getTextField((byte) 1).setText("");
Listener kl = (Listener) tab.getTextField((byte) 0).getKeyListeners()[0];
kl.resetNbAxioms();
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":
String axiom3D = tab.getAxiom();
List<String> rules3D = tab.getRules();

View File

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