38
38
import javax.swing.undo.UndoableEdit;
39
39
import javax.swing.undo.UndoableEditSupport;
41
import dk.aau.cs.gui.TabContent;
41
42
import net.tapaal.swinghelpers.CustomJSpinner;
42
43
import pipe.dataLayer.DataLayer;
43
44
import pipe.dataLayer.NetWriter;
220
221
private boolean isNetDegree2;
221
222
private boolean hasInhibitorArcs;
222
223
private InclusionPlaces inclusionPlaces;
224
private TabContent.TAPNLens lens;
224
226
private String name_verifyTAPN = "TAPAAL: Continous Engine (verifytapn)";
225
227
private String name_COMBI = "UPPAAL: Optimized Broadcast Reduction";
327
329
private final static String TOOL_TIP_QUERYTYPE = "Choose a query type";
329
331
public CTLQueryDialog(EscapableDialog me, QueryDialogueOption option,
330
TAPNQuery queryToCreateFrom, TimedArcPetriNetNetwork tapnNetwork, HashMap<TimedArcPetriNet, DataLayer> guiModels) {
332
TAPNQuery queryToCreateFrom, TimedArcPetriNetNetwork tapnNetwork, HashMap<TimedArcPetriNet, DataLayer> guiModels, TabContent.TAPNLens lens) {
331
333
this.tapnNetwork = tapnNetwork;
332
334
this.guiModels = guiModels;
333
335
inclusionPlaces = queryToCreateFrom == null ? new InclusionPlaces() : queryToCreateFrom.inclusionPlaces();
335
338
// Attempt to parse and possibly transform the string query using the manual edit parser
337
340
newProperty = TAPAALCTLQueryParser.parse(queryToCreateFrom.getProperty().toString());
461
if(queryIsReachability()){
465
someTraceRadioButton.setEnabled(false);
466
noTraceRadioButton.setEnabled(true);
467
} else if(queryIsReachability()){
462
468
someTraceRadioButton.setEnabled(true);
463
469
noTraceRadioButton.setEnabled(true);
490
496
return new IsReachabilityVisitor().isReachability(newProperty);
493
public static TAPNQuery showQueryDialogue(QueryDialogueOption option, TAPNQuery queryToRepresent, TimedArcPetriNetNetwork tapnNetwork, HashMap<TimedArcPetriNet, DataLayer> guiModels) {
499
public static TAPNQuery showQueryDialogue(QueryDialogueOption option, TAPNQuery queryToRepresent, TimedArcPetriNetNetwork tapnNetwork, HashMap<TimedArcPetriNet, DataLayer> guiModels, TabContent.TAPNLens lens) {
494
500
if(CreateGui.getCurrentTab().network().hasWeights() && !CreateGui.getCurrentTab().network().isNonStrict()){
495
501
JOptionPane.showMessageDialog(CreateGui.getApp(),
496
502
"No reduction option supports both strict intervals and weigthed arcs",
505
511
contentPane.setLayout(new GridBagLayout());
507
513
// 2 Add query editor
508
CTLQueryDialog queryDialogue = new CTLQueryDialog(guiDialog, option, queryToRepresent, tapnNetwork, guiModels);
514
CTLQueryDialog queryDialogue = new CTLQueryDialog(guiDialog, option, queryToRepresent, tapnNetwork, guiModels, lens);
509
515
contentPane.add(queryDialogue);
511
517
guiDialog.setResizable(false);
698
704
private void setEnabledReductionOptions(){
699
705
reductionOption.removeAllItems();
700
reductionOption.addItem(name_UNTIMED);
706
if (!lens.isGame()) {
707
reductionOption.addItem(name_UNTIMED);
703
711
private void updateSearchStrategies(){
727
735
breadthFirstSearch.setEnabled(false);
740
heuristicSearch.setEnabled(false);
731
743
if(!currentselected.isEnabled()){
732
744
if(depthFirstSearch.isEnabled()){
733
745
depthFirstSearch.setSelected(true);
823
private void enableOnlyForAllBox() {
824
existsBox.setEnabled(false);
825
existsDiamond.setEnabled(false);
826
forAllBox.setEnabled(true);
827
forAllDiamond.setEnabled(false);
828
existsUntil.setEnabled(false);
829
existsNext.setEnabled(false);
830
forAllUntil.setEnabled(false);
831
forAllNext.setEnabled(false);
833
conjunctionButton.setEnabled(true);
834
disjunctionButton.setEnabled(true);
835
negationButton.setEnabled(true);
836
templateBox.setEnabled(true);
837
placesTransitionsBox.setEnabled(true);
838
relationalOperatorBox.setEnabled(true);
839
placeMarking.setEnabled(true);
840
truePredicateButton.setEnabled(true);
841
falsePredicateButton.setEnabled(true);
842
deadLockPredicateButton.setEnabled(true);
843
setEnablednessOfAddPredicateButton();
844
setEnablednessOfOperatorAndMarkingBoxes();
811
847
private void setEnablednessOfAddPredicateButton() {
812
848
if (placesTransitionsBox.getSelectedItem() == null)
813
849
addPredicateButton.setEnabled(false);
815
851
addPredicateButton.setEnabled(true);
818
854
private void setEnablednessOfOperatorAndMarkingBoxes(){
819
855
if (transitionIsSelected()){
820
856
placeMarking.setVisible(false);
1189
1225
queryScrollPane.setPreferredSize(d);
1190
1226
queryScrollPane.setMinimumSize(d);
1228
if (lens.isGame()) {
1229
queryScrollPane.setColumnHeaderView(new JLabel("control:"));
1192
1232
queryField.addMouseListener(new MouseAdapter() {
1194
1234
public void mouseReleased(MouseEvent e) {
2291
2332
private void refreshQueryEditingButtons() {
2292
2333
if(currentSelection != null) {
2293
enableOnlyStateButtons();
2294
updateQueryButtonsAccordingToSelection();
2334
if (lens.isGame()) {
2335
enableOnlyForAllBox();
2337
enableOnlyStateButtons();
2338
updateQueryButtonsAccordingToSelection();
2387
2432
if(reduction == ReductionOption.VerifyTAPN || reduction == ReductionOption.VerifyTAPNdiscreteVerification) {
2388
2433
VerifyTAPNExporter exporter = new VerifyTAPNExporter();
2389
exporter.export(transformedModel.value1(), clonedQuery, new File(xmlFile), new File(queryFile), tapnQuery);
2434
exporter.export(transformedModel.value1(), clonedQuery, new File(xmlFile), new File(queryFile), tapnQuery, lens);
2390
2435
} else if(reduction == ReductionOption.VerifyPN){
2391
2436
VerifyPNExporter exporter = new VerifyPNExporter();
2392
exporter.export(transformedModel.value1(), clonedQuery, new File(xmlFile), new File(queryFile), tapnQuery);
2437
exporter.export(transformedModel.value1(), clonedQuery, new File(xmlFile), new File(queryFile), tapnQuery, lens);
2394
2439
UppaalExporter exporter = new UppaalExporter();