Added popup

This commit is contained in:
Yorick Rommers
2017-06-12 16:00:42 +02:00
parent ca5e3fe0e9
commit dbfb0e958d
5 changed files with 103 additions and 12 deletions
+5
View File
@@ -47,6 +47,10 @@ public class BackgroundWorker implements Runnable{
running = false;
}
public void cancel() {
this.t.interrupt();
}
@Override
public void run() {
@@ -55,6 +59,7 @@ public class BackgroundWorker implements Runnable{
try {
Thread.sleep(100);
} catch (InterruptedException e) {
System.out.println("Canceled thread");
}
if(workers.isEmpty())
+3 -4
View File
@@ -1,6 +1,7 @@
package com.imegumii;
import com.imegumii.ui.Frame;
import com.imegumii.ui.PopupFrame;
import java.util.TreeSet;
@@ -26,10 +27,8 @@ public class Main {
RegExp reg = new RegExp();
// System.out.println(reg.naarRegExp(s3).getTaal(10));
// System.out.println(reg.naarRegExp(s7).getTaal(10));
// Test.TestUitOpdrachtBeschrijving();
// Test.Thompson();
new Frame();
// new PopupFrame("Regex", reg.naarRegExp(s6));
}
}
+1 -1
View File
@@ -278,7 +278,7 @@ public class RegExp extends Importable{
}
SortedSet<String> ret = new TreeSet<>();
resultaat.stream().filter(r -> r.length() < maxLength).forEach(ret::add);
resultaat.stream().filter(r -> r.length() <= maxLength).forEach(ret::add);
return new Taal(ret);
}
+2 -2
View File
@@ -59,7 +59,7 @@ public class InputPanel extends JPanel {
RegExp regex = new RegExp();
regex = regex.naarRegExp(regS);
System.out.println(regex.getTaal(4, 10));
// System.out.println(regex.getTaal(4, 10));
StatusPanel.Instance().setStatus("Converting REGEX to NDFA", 40);
@@ -73,7 +73,7 @@ public class InputPanel extends JPanel {
StatusPanel.Instance().setStatus("Generating taal", 90);
new PopupFrame(name, regex.getTaal(10, 3).toString());
new PopupFrame(name, regex);
StatusPanel.Instance().setStatus("Done", 100);
}
+92 -5
View File
@@ -1,25 +1,112 @@
package com.imegumii.ui;
import com.imegumii.*;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Created by kenny on 12-6-2017.
*/
public class PopupFrame extends JFrame {
public PopupFrame(String name, String content)
public PopupFrame(String name, RegExp r)
{
super(name);
this.setSize(300, 800);
this.setSize(600, 600);
//this.setResizable(false);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel container = new JPanel(new BorderLayout());
JTextArea textArea = new JTextArea(content);
DFA<String> minimizedDfa = ThompsonConverter.convert(r).toDFA().minimaliseer();
container.add(textArea, BorderLayout.CENTER);
JPanel container = new JPanel(new BorderLayout());
JPanel topPanel = new JPanel();
topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.Y_AXIS));
topPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
JPanel acceptPanel = new JPanel();
acceptPanel.setLayout(new BoxLayout(acceptPanel, BoxLayout.LINE_AXIS));
acceptPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
JPanel generatePanel = new JPanel();
generatePanel.setLayout(new BoxLayout(generatePanel, BoxLayout.LINE_AXIS));
generatePanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
JTextArea textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
JTextField operaties = new JTextField();
JTextField lengte = new JTextField();
JButton generateButton = new JButton("Generate taal");
// JButton cancelButton = new JButton("Cancel operation");
JTextField acceptString = new JTextField();
JButton acceptButton = new JButton("Accept string");
generateButton.addActionListener(e -> {
textArea.setText(""); // reset
BackgroundWorker.instance().addWorker(() -> {
long currentTime = System.currentTimeMillis();
Taal t = r.getTaal(Integer.parseInt(operaties.getText()), Integer.parseInt(lengte.getText()));
textArea.append("The language contains " + t.getSymbols().size() + " strings\n");
textArea.append("It took " + (System.currentTimeMillis() - currentTime) + " milliseconds to generate and filter them\n");
t.getSymbols().forEach(s -> textArea.append("The language contains: " + s + "\n"));
});
});
// cancelButton.addActionListener(e -> {
// BackgroundWorker.instance().cancel();
// });
acceptButton.addActionListener(e -> {
textArea.setText("");
BackgroundWorker.instance().addWorker(() -> {
textArea.append("Does the regex accept " + acceptString.getText() + " ? " + (minimizedDfa.accepteer(acceptString.getText()) ? "yes" : "no"));
});
});
operaties.setText("4");
lengte.setText("100");
container.add(scrollPane, BorderLayout.CENTER);
generatePanel.add(generateButton);
generatePanel.add(Box.createRigidArea(new Dimension(10,0)));
// generatePanel.add(cancelButton);
// generatePanel.add(Box.createRigidArea(new Dimension(10,0)));
generatePanel.add(new JLabel("Max operations"));
generatePanel.add(Box.createRigidArea(new Dimension(10,0)));
generatePanel.add(operaties);
generatePanel.add(Box.createRigidArea(new Dimension(10,0)));
generatePanel.add(new JLabel("Max length"));
generatePanel.add(Box.createRigidArea(new Dimension(10,0)));
generatePanel.add(lengte);
acceptPanel.add(acceptButton);
acceptPanel.add(Box.createRigidArea(new Dimension(10,0)));
acceptPanel.add(new JLabel("Input a string"));
acceptPanel.add(Box.createRigidArea(new Dimension(10,0)));
acceptPanel.add(acceptString);
acceptPanel.add(Box.createRigidArea(new Dimension(10,0)));
topPanel.add(generatePanel);
topPanel.add(acceptPanel);
container.add(topPanel, BorderLayout.NORTH);
this.setContentPane(container);