Added popup
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -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));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user