Skip to content

Commit b950f25

Browse files
authored
Update Menu.java
1 parent 0932e3e commit b950f25

1 file changed

Lines changed: 60 additions & 7 deletions

File tree

src/Menu.java

Lines changed: 60 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import com.formdev.flatlaf.themes.FlatMacDarkLaf;
22
import net.miginfocom.swing.MigLayout;
3+
import org.jfree.chart.renderer.category.BarPainter;
34
import org.nfunk.jep.type.Complex;
45

56
import javax.swing.*;
7+
import javax.swing.text.Highlighter;
68
import java.awt.*;
79
import java.awt.event.*;
810
import java.awt.geom.Point2D;
@@ -79,8 +81,16 @@ public void init()
7981
QText = new JTextField("Q: ");
8082
P = new JTextField("cos(0.3x + 0.6y)");
8183
P.setMinimumSize(new Dimension(300, 40));
84+
P.addActionListener(new ActionListener() {
85+
@Override
86+
public void actionPerformed(ActionEvent e) {
87+
System.out.println("shiant");
88+
panel.colorComplex();
89+
}
90+
});
8291
Q = new JTextField("sin(0.3y - 0.6x)");
8392
Q.setMinimumSize(new Dimension(300, 40));
93+
Q.addActionListener(P.getActionListeners()[0]);
8494
P.setFont(new Font(P.getFont().getFontName(), Font.PLAIN, 23));
8595
Q.setFont(new Font(Q.getFont().getFontName(), Font.PLAIN, 23));
8696
//System.out.println(colorWithCurl.isSelected());
@@ -345,6 +355,9 @@ public void update(Graphics g)
345355
scaleWithMag.setEnabled(true);
346356
complexDetail.setEnabled(false);
347357
mandelbrotDetail.setEnabled(false);
358+
contourFreeform.setEnabled(false);
359+
contourCircular.setEnabled(false);
360+
contourFreeformClosed.setEnabled(false);
348361
curlArea.setText("Curl at cursor: " + df.format(panel.getCurl(panel.userMouse.x - 6, panel.userMouse.y - 31)));
349362
divArea.setText("Divergence at cursor: " + df.format(panel.getDiv(panel.userMouse.x - 6, panel.userMouse.y - 31)));
350363
magArea.setText("Magnitude at cursor: " + df.format(panel.getMag(panel.userMouse.x - 6, panel.userMouse.y - 31)));
@@ -355,13 +368,37 @@ public void update(Graphics g)
355368
panel.parser.addVariable("x", mouseCoordX);
356369
panel.parser.addVariable("y", mouseCoordY);
357370
panel.parser.addVariable("t", panel.time);
371+
panel.parser.removeVariable("z");
372+
float tempX = 0;
373+
float tempY = 0;
374+
boolean error = false;
358375
panel.parser.parseExpression(P.getText());
359-
float tempX = (float)panel.parser.getValue();
376+
if(panel.parser.hasError())
377+
{
378+
P.setForeground(Color.red);
379+
outputAtPoint.setText("Invalid input!");
380+
error = true;
381+
}
382+
else {
383+
P.setForeground(Color.white);
384+
tempX = (float) panel.parser.getValue();
385+
}
360386
panel.parser.parseExpression(Q.getText());
361-
float tempY = (float)panel.parser.getValue();
362-
outputAtPoint.setText("Output at mouse: (" + tempX + ", " + tempY + ")");
387+
if(panel.parser.hasError())
388+
{
389+
Q.setForeground(Color.red);
390+
outputAtPoint.setText("Invalid input!");
391+
error = true;
392+
}
393+
else {
394+
Q.setForeground(Color.white);
395+
tempY = (float) panel.parser.getValue();
396+
}
397+
if(!error) {
398+
outputAtPoint.setText("Output at mouse: (" + tempX + ", " + tempY + ")");
399+
}
363400
}
364-
else if(!P.getText().contains("zm"))
401+
else if(!P.getText().contains("zm"))//contains a function of z that isn't mandelbrot
365402
{
366403
Q.setEnabled(false);
367404
addTestPoint.setEnabled(false);
@@ -371,14 +408,25 @@ else if(!P.getText().contains("zm"))
371408
scaleWithMag.setEnabled(false);
372409
complexDetail.setEnabled(true);
373410
mandelbrotDetail.setEnabled(false);
411+
contourFreeform.setEnabled(true);
412+
contourCircular.setEnabled(true);
413+
contourFreeformClosed.setEnabled(true);
374414
double mouseCoordX = panel.screenToCoordsX(panel.userMouse.x - 6);
375415
double mouseCoordY = panel.screenToCoordsY(panel.userMouse.y - 31);
376416
coordAtPoint.setText("Mouse coordinates: " + mouseCoordX + " + " + mouseCoordY + "i");
377417
panel.parser.addComplexVariable("z", mouseCoordX, mouseCoordY);
378418
panel.parser.addVariable("t", panel.time);
379419
panel.parser.parseExpression(P.getText());
380-
Complex temp = panel.parser.getComplexValue();
381-
outputAtPoint.setText("Output at mouse: " + (float)temp.re() + " + " + (float)temp.im() + "i");
420+
if(panel.parser.hasError())
421+
{
422+
P.setForeground(Color.red);
423+
outputAtPoint.setText("Invalid input!");
424+
}
425+
else {
426+
Complex temp = panel.parser.getComplexValue();
427+
P.setForeground(Color.white);
428+
outputAtPoint.setText("Output at mouse: " + (float) temp.re() + " + " + (float) temp.im() + "i");
429+
}
382430
}
383431
else
384432
{
@@ -389,13 +437,18 @@ else if(!P.getText().contains("zm"))
389437
scaleWithMag.setEnabled(false);
390438
complexDetail.setEnabled(false);
391439
mandelbrotDetail.setEnabled(true);
440+
contourFreeform.setEnabled(false);
441+
contourCircular.setEnabled(false);
442+
contourFreeformClosed.setEnabled(false);
392443
double mouseCoordX = panel.screenToCoordsX(panel.userMouse.x - 6);
393444
double mouseCoordY = panel.screenToCoordsY(panel.userMouse.y - 31);
394445
coordAtPoint.setText("Mouse coordinates: " + (float)mouseCoordX + " + " + (float)mouseCoordY + "i");
395446
outputAtPoint.setText("Number of iterations to diverge: " + panel.mandelbrotDiverge(new Complex(mouseCoordX, mouseCoordY)) + " (max " + (int)panel.mandelbrotDetail + ")");
396447
}
397448
//Arrow tempArrow = new Arrow(panel.axes.screenToCoordsX(panel.userMouse.x), panel.axes.screenToCoordsY(panel.userMouse.y), panel);
398449
//jacobArea.setText("Jacobian:\n x y t\nP " + tempArrow.DPDX + " " + tempArrow.DPDY + " 3\nQ 4 5 6");
450+
Graphics2D g2d = (Graphics2D)g;
451+
g2d.setStroke(new BasicStroke(1));//thickness/size of line of test point trajectory
399452
for(Point i: testPoints)
400453
{
401454
panel.g.drawOval(i.x, i.y, 2, 2);
@@ -407,7 +460,7 @@ else if(!P.getText().contains("zm"))
407460
Arrow temp = new Arrow(panel.screenToCoordsX(tempX), panel.screenToCoordsY(tempY), panel);
408461
tempX += 3*Math.cos(temp.angle);
409462
tempY += 3*Math.sin(temp.angle);
410-
panel.g.drawLine((int)tempX2, (int)tempY2, (int)tempX, (int)tempY);
463+
g2d.drawLine((int)tempX2, (int)tempY2, (int)tempX, (int)tempY);
411464
}
412465
tempX = i.x;
413466
tempY = i.y;

0 commit comments

Comments
 (0)