=== modified file 'src/dk/aau/cs/TCTL/AritmeticOperator.java'
--- src/dk/aau/cs/TCTL/AritmeticOperator.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/AritmeticOperator.java	2020-08-19 11:36:17 +0000
@@ -50,7 +50,12 @@
 		return false;
 	}
 
-	@Override
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    @Override
 	public TCTLAbstractProperty findFirstPlaceHolder() {
 		return null;
 	}

=== modified file 'src/dk/aau/cs/TCTL/TCTLAFNode.java'
--- src/dk/aau/cs/TCTL/TCTLAFNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLAFNode.java	2020-08-19 11:36:17 +0000
@@ -82,8 +82,13 @@
 	public boolean containsPlaceHolder() {
 		return property.containsPlaceHolder();
 	}
-	
-	public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
+
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return property instanceof TCTLPathToStateConverter || property.hasNestedPathQuantifiers();
+    }
+
+    public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
 		return property.containsAtomicPropositionWithSpecificPlaceInTemplate(templateName, placeName);
 	}
 	

=== modified file 'src/dk/aau/cs/TCTL/TCTLAGNode.java'
--- src/dk/aau/cs/TCTL/TCTLAGNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLAGNode.java	2020-08-19 11:36:17 +0000
@@ -84,7 +84,12 @@
 		return property.containsPlaceHolder();
 	}
 
-	public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return property instanceof TCTLPathToStateConverter || property.hasNestedPathQuantifiers();
+    }
+
+    public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
 		return property.containsAtomicPropositionWithSpecificPlaceInTemplate(templateName, placeName);
 	}
 	

=== modified file 'src/dk/aau/cs/TCTL/TCTLAUNode.java'
--- src/dk/aau/cs/TCTL/TCTLAUNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLAUNode.java	2020-08-19 11:36:17 +0000
@@ -105,8 +105,14 @@
 		return left.containsPlaceHolder() 
 				|| right.containsPlaceHolder();
 	}
-	
-	public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
+
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return left instanceof TCTLPathToStateConverter || right instanceof TCTLPathToStateConverter
+            || left.hasNestedPathQuantifiers() || right.hasNestedPathQuantifiers();
+    }
+
+    public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
 		return left.containsAtomicPropositionWithSpecificPlaceInTemplate(templateName, placeName)
 				|| right.containsAtomicPropositionWithSpecificPlaceInTemplate(templateName, placeName);
 	}

=== modified file 'src/dk/aau/cs/TCTL/TCTLAXNode.java'
--- src/dk/aau/cs/TCTL/TCTLAXNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLAXNode.java	2020-08-19 11:36:17 +0000
@@ -82,8 +82,13 @@
 	public boolean containsPlaceHolder() {
 		return property.containsPlaceHolder();
 	}
-	
-	public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
+
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return property instanceof TCTLPathToStateConverter || property.hasNestedPathQuantifiers();
+    }
+
+    public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
 		return property.containsAtomicPropositionWithSpecificPlaceInTemplate(templateName, placeName);
 	}
 	

=== modified file 'src/dk/aau/cs/TCTL/TCTLAbstractProperty.java'
--- src/dk/aau/cs/TCTL/TCTLAbstractProperty.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLAbstractProperty.java	2020-08-19 11:36:17 +0000
@@ -57,7 +57,7 @@
 	public abstract boolean containsAtomicPropositionWithSpecificTransitionInTemplate(String templateName, String transitionName);
 
 	public abstract boolean containsPlaceHolder();
-
+    public abstract boolean hasNestedPathQuantifiers();
 	// This method assumes that a place holder exists in the current query
 	public abstract TCTLAbstractProperty findFirstPlaceHolder();
 

=== modified file 'src/dk/aau/cs/TCTL/TCTLAndListNode.java'
--- src/dk/aau/cs/TCTL/TCTLAndListNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLAndListNode.java	2020-08-19 11:36:17 +0000
@@ -194,7 +194,20 @@
 		return placeHolderFound;
 	}
 
-	@Override
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        boolean foundNestedQuantifier = false;
+
+        for (TCTLAbstractStateProperty p : properties) {
+            foundNestedQuantifier = foundNestedQuantifier || p instanceof TCTLPathToStateConverter || p.hasNestedPathQuantifiers();
+            if(foundNestedQuantifier){
+                break;
+            }
+        }
+        return foundNestedQuantifier;
+    }
+
+    @Override
 	public TCTLAbstractProperty findFirstPlaceHolder() {
 		TCTLAbstractProperty ph = null;
 		for (TCTLAbstractStateProperty p : properties) {

=== modified file 'src/dk/aau/cs/TCTL/TCTLAtomicPropositionNode.java'
--- src/dk/aau/cs/TCTL/TCTLAtomicPropositionNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLAtomicPropositionNode.java	2020-08-19 11:36:17 +0000
@@ -83,7 +83,12 @@
 		return left.containsPlaceHolder() || right.containsPlaceHolder();
 	}
 
-	@Override
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    @Override
 	public TCTLAbstractProperty findFirstPlaceHolder() {
 		TCTLAbstractProperty rightP = right.findFirstPlaceHolder(); 
 		

=== modified file 'src/dk/aau/cs/TCTL/TCTLConstNode.java'
--- src/dk/aau/cs/TCTL/TCTLConstNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLConstNode.java	2020-08-19 11:36:17 +0000
@@ -54,7 +54,12 @@
 		return false;
 	}
 
-	@Override
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    @Override
 	public TCTLAbstractProperty findFirstPlaceHolder() {
 		return null;
 	}

=== modified file 'src/dk/aau/cs/TCTL/TCTLDeadlockNode.java'
--- src/dk/aau/cs/TCTL/TCTLDeadlockNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLDeadlockNode.java	2020-08-19 11:36:17 +0000
@@ -35,7 +35,12 @@
 		return false;
 	}
 
-	public TCTLAbstractProperty findFirstPlaceHolder() {
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    public TCTLAbstractProperty findFirstPlaceHolder() {
 		return null;
 	}
 	

=== modified file 'src/dk/aau/cs/TCTL/TCTLEFNode.java'
--- src/dk/aau/cs/TCTL/TCTLEFNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLEFNode.java	2020-08-19 11:36:17 +0000
@@ -83,7 +83,12 @@
 		return property.containsPlaceHolder();
 	}
 
-	public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return property instanceof TCTLPathToStateConverter || property.hasNestedPathQuantifiers();
+    }
+
+    public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
 		return property.containsAtomicPropositionWithSpecificPlaceInTemplate(templateName, placeName);
 	}
 	

=== modified file 'src/dk/aau/cs/TCTL/TCTLEGNode.java'
--- src/dk/aau/cs/TCTL/TCTLEGNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLEGNode.java	2020-08-19 11:36:17 +0000
@@ -82,8 +82,13 @@
 	public boolean containsPlaceHolder() {
 		return property.containsPlaceHolder();
 	}
-	
-	public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
+
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return property instanceof TCTLPathToStateConverter || property.hasNestedPathQuantifiers();
+    }
+
+    public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
 		return property.containsAtomicPropositionWithSpecificPlaceInTemplate(templateName, placeName);
 	}
 

=== modified file 'src/dk/aau/cs/TCTL/TCTLEUNode.java'
--- src/dk/aau/cs/TCTL/TCTLEUNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLEUNode.java	2020-08-19 11:36:17 +0000
@@ -106,7 +106,13 @@
 				|| right.containsPlaceHolder();
 	}
 
-	public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return left instanceof TCTLPathToStateConverter || right instanceof TCTLPathToStateConverter
+            || left.hasNestedPathQuantifiers() || right.hasNestedPathQuantifiers();
+    }
+
+    public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
 		return left.containsAtomicPropositionWithSpecificPlaceInTemplate(templateName, placeName)
 				|| right.containsAtomicPropositionWithSpecificPlaceInTemplate(templateName, placeName);
 	}

=== modified file 'src/dk/aau/cs/TCTL/TCTLEXNode.java'
--- src/dk/aau/cs/TCTL/TCTLEXNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLEXNode.java	2020-08-19 11:36:17 +0000
@@ -82,8 +82,13 @@
 	public boolean containsPlaceHolder() {
 		return property.containsPlaceHolder();
 	}
-	
-	public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
+
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return property instanceof TCTLPathToStateConverter || property.hasNestedPathQuantifiers();
+    }
+
+    public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
 		return property.containsAtomicPropositionWithSpecificPlaceInTemplate(templateName, placeName);
 	}
 	

=== modified file 'src/dk/aau/cs/TCTL/TCTLFalseNode.java'
--- src/dk/aau/cs/TCTL/TCTLFalseNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLFalseNode.java	2020-08-19 11:36:17 +0000
@@ -35,7 +35,12 @@
 		return false;
 	}
 
-	public TCTLAbstractProperty findFirstPlaceHolder() {
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    public TCTLAbstractProperty findFirstPlaceHolder() {
 		return null;
 	}
 	

=== modified file 'src/dk/aau/cs/TCTL/TCTLNotNode.java'
--- src/dk/aau/cs/TCTL/TCTLNotNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLNotNode.java	2020-08-19 11:36:17 +0000
@@ -88,7 +88,12 @@
 		return property.containsPlaceHolder();
 	}
 
-	@Override
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return property instanceof TCTLPathToStateConverter || property.hasNestedPathQuantifiers();
+    }
+
+    @Override
 	public TCTLAbstractProperty findFirstPlaceHolder() {
 		return property.findFirstPlaceHolder();
 

=== modified file 'src/dk/aau/cs/TCTL/TCTLOrListNode.java'
--- src/dk/aau/cs/TCTL/TCTLOrListNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLOrListNode.java	2020-08-19 11:36:17 +0000
@@ -194,7 +194,20 @@
 		return placeHolderFound;
 	}
 
-	@Override
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        boolean foundNestedQuantifier = false;
+
+        for (TCTLAbstractStateProperty p : properties) {
+            foundNestedQuantifier = foundNestedQuantifier || p instanceof TCTLPathToStateConverter || p.hasNestedPathQuantifiers();
+            if(foundNestedQuantifier){
+                break;
+            }
+        }
+        return foundNestedQuantifier;
+    }
+
+    @Override
 	public TCTLAbstractProperty findFirstPlaceHolder() {
 		TCTLAbstractProperty ph = null;
 		for (TCTLAbstractStateProperty p : properties) {

=== modified file 'src/dk/aau/cs/TCTL/TCTLPathPlaceHolder.java'
--- src/dk/aau/cs/TCTL/TCTLPathPlaceHolder.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLPathPlaceHolder.java	2020-08-19 11:36:17 +0000
@@ -26,7 +26,12 @@
 		return true;
 	}
 
-	@Override
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    @Override
 	public boolean equals(Object o) {
 		if (o instanceof TCTLPathPlaceHolder) {
 			return true;

=== modified file 'src/dk/aau/cs/TCTL/TCTLPathToStateConverter.java'
--- src/dk/aau/cs/TCTL/TCTLPathToStateConverter.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLPathToStateConverter.java	2020-08-19 11:36:17 +0000
@@ -76,8 +76,13 @@
 	public boolean containsPlaceHolder() {
 		return property.containsPlaceHolder();
 	}
-	
-	public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
+
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
 		return property.containsAtomicPropositionWithSpecificPlaceInTemplate(templateName, placeName);
 	}
 	

=== modified file 'src/dk/aau/cs/TCTL/TCTLPlaceNode.java'
--- src/dk/aau/cs/TCTL/TCTLPlaceNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLPlaceNode.java	2020-08-19 11:36:17 +0000
@@ -57,7 +57,12 @@
 		return false;
 	}
 
-	@Override
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    @Override
 	public TCTLAbstractProperty findFirstPlaceHolder() {
 		return null;
 	}

=== modified file 'src/dk/aau/cs/TCTL/TCTLPlusListNode.java'
--- src/dk/aau/cs/TCTL/TCTLPlusListNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLPlusListNode.java	2020-08-19 11:36:17 +0000
@@ -84,7 +84,12 @@
 		return false;
 	}
 
-	@Override
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    @Override
 	public TCTLAbstractProperty findFirstPlaceHolder() {
 		for(TCTLAbstractStateProperty term : terms){
 			TCTLAbstractProperty placeholder = term.findFirstPlaceHolder(); 

=== modified file 'src/dk/aau/cs/TCTL/TCTLStatePlaceHolder.java'
--- src/dk/aau/cs/TCTL/TCTLStatePlaceHolder.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLStatePlaceHolder.java	2020-08-19 11:36:17 +0000
@@ -26,7 +26,12 @@
 		return true;
 	}
 
-	@Override
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    @Override
 	public boolean equals(Object o) {
 		if (o instanceof TCTLStatePlaceHolder) {
 			return true;

=== modified file 'src/dk/aau/cs/TCTL/TCTLStateToPathConverter.java'
--- src/dk/aau/cs/TCTL/TCTLStateToPathConverter.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLStateToPathConverter.java	2020-08-19 11:36:17 +0000
@@ -76,8 +76,13 @@
 	public boolean containsPlaceHolder() {
 		return property.containsPlaceHolder();
 	}
-	
-	public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
+
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return property.hasNestedPathQuantifiers();
+    }
+
+    public boolean containsAtomicPropositionWithSpecificPlaceInTemplate(String templateName, String placeName) {
 		return property.containsAtomicPropositionWithSpecificPlaceInTemplate(templateName, placeName);
 	}
 	

=== modified file 'src/dk/aau/cs/TCTL/TCTLTermListNode.java'
--- src/dk/aau/cs/TCTL/TCTLTermListNode.java	2017-06-23 08:38:31 +0000
+++ src/dk/aau/cs/TCTL/TCTLTermListNode.java	2020-08-19 11:36:17 +0000
@@ -84,7 +84,12 @@
 		return false;
 	}
 
-	@Override
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    @Override
 	public TCTLAbstractProperty findFirstPlaceHolder() {
 		for(TCTLAbstractStateProperty factor : factors){
 			TCTLAbstractProperty placeholder = factor.findFirstPlaceHolder(); 

=== modified file 'src/dk/aau/cs/TCTL/TCTLTransitionNode.java'
--- src/dk/aau/cs/TCTL/TCTLTransitionNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLTransitionNode.java	2020-08-19 11:36:17 +0000
@@ -57,7 +57,12 @@
 		return false;
 	}
 
-	@Override
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    @Override
 	public TCTLAbstractProperty findFirstPlaceHolder() {
 		return null;
 	}

=== modified file 'src/dk/aau/cs/TCTL/TCTLTrueNode.java'
--- src/dk/aau/cs/TCTL/TCTLTrueNode.java	2017-03-12 00:33:00 +0000
+++ src/dk/aau/cs/TCTL/TCTLTrueNode.java	2020-08-19 11:36:17 +0000
@@ -35,7 +35,12 @@
 		return false;
 	}
 
-	public TCTLAbstractProperty findFirstPlaceHolder() {
+    @Override
+    public boolean hasNestedPathQuantifiers() {
+        return false;
+    }
+
+    public TCTLAbstractProperty findFirstPlaceHolder() {
 		return null;
 	}
 	

=== modified file 'src/dk/aau/cs/gui/TabContent.java'
--- src/dk/aau/cs/gui/TabContent.java	2020-08-11 11:33:28 +0000
+++ src/dk/aau/cs/gui/TabContent.java	2020-08-19 11:36:17 +0000
@@ -1,5 +1,17 @@
 package dk.aau.cs.gui;
 
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.geom.Point2D;
+import java.io.*;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.List;
+
+import javax.swing.*;
+import javax.swing.border.BevelBorder;
 import dk.aau.cs.debug.Logger;
 import dk.aau.cs.gui.components.BugHandledJXMultisplitPane;
 import dk.aau.cs.gui.components.StatisticsPanel;
@@ -27,6 +39,7 @@
 import pipe.dataLayer.TAPNQuery;
 import pipe.dataLayer.Template;
 import pipe.gui.*;
+import pipe.gui.action.GuiAction;
 import pipe.gui.canvas.DrawingSurfaceImpl;
 import pipe.gui.graphicElements.*;
 import pipe.gui.graphicElements.tapn.*;
@@ -36,17 +49,7 @@
 import pipe.gui.widgets.WorkflowDialog;
 import pipe.gui.widgets.filebrowser.FileBrowser;
 
-import javax.swing.*;
-import javax.swing.border.BevelBorder;
-import java.awt.*;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
 import java.awt.event.MouseWheelEvent;
-import java.awt.geom.Point2D;
-import java.io.*;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.*;
 
 public class TabContent extends JSplitPane implements TabContentActions{
 
@@ -56,7 +59,8 @@
         this.guiFrameControllerActions.setReference(guiFrameControllerActions);
     }
 
-    public static class TAPNLens {
+    public static final class TAPNLens {
+        public static final TAPNLens Default = new TAPNLens(true, true);
         public boolean isTimed() {
             return timed;
         }
@@ -68,7 +72,7 @@
         private final boolean timed;
         private final boolean game;
 
-        TAPNLens(boolean timed, boolean game) {
+        public TAPNLens(boolean timed, boolean game) {
             this.timed = timed;
             this.game = game;
         }
@@ -156,7 +160,7 @@
             Require.notNull(p, "Point can't be null");
 
             dk.aau.cs.model.tapn.LocalTimedPlace tp = new dk.aau.cs.model.tapn.LocalTimedPlace(drawingSurface.getNameGenerator().getNewPlaceName(guiModelToModel.get(c)));
-            TimedPlaceComponent pnObject = new TimedPlaceComponent(p.x, p.y, tp);
+            TimedPlaceComponent pnObject = new TimedPlaceComponent(p.x, p.y, tp, lens);
             guiModelToModel.get(c).add(tp);
             c.addPetriNetObject(pnObject);
 
@@ -167,7 +171,7 @@
         public Result<TimedTransitionComponent, ModelViolation> addNewTimedTransitions(DataLayer c, Point p) {
             dk.aau.cs.model.tapn.TimedTransition transition = new dk.aau.cs.model.tapn.TimedTransition(drawingSurface.getNameGenerator().getNewTransitionName(guiModelToModel.get(c)));
 
-            TimedTransitionComponent pnObject = new TimedTransitionComponent(p.x, p.y, transition);
+            TimedTransitionComponent pnObject = new TimedTransitionComponent(p.x, p.y, transition, lens);
 
             guiModelToModel.get(c).add(transition);
             c.addPetriNetObject(pnObject);
@@ -207,7 +211,7 @@
                 TimeInterval.ZERO_INF
             );
 
-            TimedInputArcComponent tiac = new TimedInputArcComponent(p, t, tia);
+            TimedInputArcComponent tiac = new TimedInputArcComponent(p, t, tia, lens);
 
             if (path != null) {
                 tiac.setArcPath(new ArcPath(tiac, path));
@@ -563,7 +567,7 @@
                 }).start();
             }
 
-			TabContent tab = new TabContent(loadedModel.network(), loadedModel.templates(), loadedModel.queries(), loadedModel.isTimed(), loadedModel.isGame());
+            TabContent tab = new TabContent(loadedModel.network(), loadedModel.templates(), loadedModel.queries(), loadedModel.getLens());
 
             tab.setInitialName(name);
 
@@ -784,6 +788,9 @@
             addGuiModel(template.model(), template.guiModel());
             zoomLevels.put(template.model(), template.zoomer());
             hasPositionalInfos.put(template.model(), template.getHasPositionalInfo());
+            for(PetriNetObject o : template.guiModel().getPetriNetObjects()){
+                o.setLens(this.lens);
+            }
         }
 
         drawingSurface = new DrawingSurfaceImpl(new DataLayer(), this, managerRef);
@@ -831,7 +838,7 @@
     private TabContent(TimedArcPetriNetNetwork network, Collection<Template> templates, Iterable<TAPNQuery> tapnqueries) {
         this(network, templates, tapnqueries,  new TAPNLens(true, false));
     }
-	private TabContent(TimedArcPetriNetNetwork network, Collection<Template> templates, Iterable<TAPNQuery> tapnqueries, TAPNLens lens) {
+	public TabContent(TimedArcPetriNetNetwork network, Collection<Template> templates, Iterable<TAPNQuery> tapnqueries, TAPNLens lens) {
         this(network, templates, lens);
 
         setNetwork(network, templates);
@@ -1133,9 +1140,15 @@
 		showEnabledTransitionsList(showEnabledTransitions);
 		
 		this.setLeftComponent(animatorSplitPaneScroller);
-
 	}
 
+	private void hideTimedInformation(){
+	    if(!lens.isTimed()){
+            animControlerBox.setVisible(false);
+        }
+
+    }
+
 	public void switchToEditorComponents() {
 		
 		//Remove dummy
@@ -1220,7 +1233,7 @@
 	}
 
 	private void createAnimationControlSidePanel() {
-		animControlerBox = new AnimationControlSidePanel(animator);
+		animControlerBox = new AnimationControlSidePanel(animator, lens);
 	}
 
 	public AnimationHistoryList getAnimationHistorySidePanel() {
@@ -1228,7 +1241,7 @@
 	}
 
 	private void createTransitionFireing() {
-		transitionFireing = new TransitionFireingComponent(CreateGui.getApp().isShowingDelayEnabledTransitions());
+		transitionFireing = new TransitionFireingComponent(CreateGui.getApp().isShowingDelayEnabledTransitions(), lens);
 	}
 
 	public TransitionFireingComponent getTransitionFireingComponent() {
@@ -1486,13 +1499,13 @@
 	}
 
     private void createNewAndConvertUntimed() {
-	    TabContent tab = duplicateTab(FeatureOption.TIME, false);
+	    TabContent tab = duplicateTab(new TAPNLens(false, lens.isGame()), "-untimed");
         convertToUntimedTab(tab);
         guiFrameControllerActions.ifPresent(o -> o.openTab(tab));
     }
 
     private void createNewAndConvertNonGame() {
-        TabContent tab = duplicateTab(FeatureOption.GAME, false);
+        TabContent tab = duplicateTab(new TAPNLens(lens.isTimed(), false), "-nongame");
         TabTransformer.removeGameInformation(tab);
         guiFrameControllerActions.ifPresent(o -> o.openTab(tab));
     }
@@ -1512,13 +1525,31 @@
                     createNewAndConvertUntimed();
                 }
             } else {
-                TabContent tab = duplicateTab(FeatureOption.TIME, isTime);
+                TabContent tab = duplicateTab(new TAPNLens(true, lens.isGame()), "-timed");
+                findAndRemoveAffectedQueries(tab);
                 guiFrameControllerActions.ifPresent(o -> o.openTab(tab));
             }
             updateFeatureText();
         }
     }
 
+    private void findAndRemoveAffectedQueries(TabContent tab){
+        List<TAPNQuery> queriesToRemove = new ArrayList<TAPNQuery>();
+        for (TAPNQuery q : tab.queries()){
+            if(q.hasUntimedOnlyProperties()){
+                queriesToRemove.add(q);
+                tab.removeQuery(q);
+            }
+        }
+        String message = "The following queries will be removed in the conversion:";
+        for(TAPNQuery q : queriesToRemove){
+            message += "\n" + q.getName();
+        }
+        if(!queriesToRemove.isEmpty()){
+            JOptionPane.showMessageDialog(this,message,"Information", JOptionPane.INFORMATION_MESSAGE);
+        }
+    }
+
     @Override
     public void changeGameFeature(boolean isGame) {
         if (isGame != lens.isGame()) {
@@ -1534,7 +1565,7 @@
                     createNewAndConvertNonGame();
                 }
             } else {
-                TabContent tab = duplicateTab(FeatureOption.GAME, isGame);
+                TabContent tab = duplicateTab(new TAPNLens(lens.isTimed(), true), "-game");
                 guiFrameControllerActions.ifPresent(o -> o.openTab(tab));
             }
             updateFeatureText();
@@ -1642,6 +1673,8 @@
 				drawingSurface().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
 
 				animationmode = true; //XXX: Must be called after setGuiMode as guiMode uses last state,
+                app.ifPresent(o->o.setStatusBarText(textforAnimation));
+
 			} else {
 				JOptionPane.showMessageDialog(CreateGui.getApp(),
 						"You need at least one active template to enter simulation mode",
@@ -1669,6 +1702,7 @@
 			// Undo/Redo is enabled based on undo/redo manager
 			getUndoManager().setUndoRedoStatus();
 			animationmode = false;
+            app.ifPresent(o->o.setStatusBarText(textforDrawing));
 		}
 		animator.updateAnimationButtonsEnabled(); //Update stepBack/Forward
 	}
@@ -1679,11 +1713,13 @@
 	@Override
 	public void setMode(Pipe.ElementType mode) {
 
-		app.ifPresent(o->o.updateMode(mode));
+        CreateGui.guiMode = mode;
+        changeStatusbarText(mode);
 
 		//Disable selection and deselect current selection
 		drawingSurface().getSelectionObject().clearSelection();
         editorMode = mode;
+        updateMode();
         switch (mode) {
             case ADDTOKEN:
                 setManager(new AbstractDrawingSurfaceManager() {
@@ -1851,6 +1887,11 @@
 			app.ifPresent(o->o.setGUIMode(GuiFrame.GUIMode.draw));
 			app.ifPresent(o->setMode(Pipe.ElementType.SELECT));
 		}
+		app.ifPresent(o->o.registerDrawingActions(getAvailableDrawActions()));
+        app.ifPresent(o->o.registerAnimationActions(getAvailableSimActions()));
+
+        //TODO: this is a temporary implementation untill actions can be moved
+        app.ifPresent(o->o.registerViewActions(List.of()));
 
 	}
 
@@ -1947,8 +1988,7 @@
 					allTemplates(),
 					queriesOverwrite,
 					network().constants(),
-                    lens.timed,
-					lens.game
+                    lens
 			);
 
 			tapnWriter.savePNML(outFile);
@@ -2026,51 +2066,26 @@
 		drawingSurface().updatePreferredSize();
 	}
 
-	public TabContent duplicateTab(FeatureOption option, boolean isYes) {
-		NetWriter tapnWriter = new TimedArcPetriNetNetworkWriter(
-				network(),
-				allTemplates(),
-				queries(),
-				network().constants()
-		);
-
-		option = isNetChanged(option, isYes) ? option : FeatureOption.TIME;
-
-		try {
-			ByteArrayOutputStream outputStream = tapnWriter.savePNML();
-			String composedName = getTabTitle();
-			composedName = composedName.replace(".tapn", "");
-
-			switch (option) {
-                case TIME:
-                    composedName += isYes ? "-timed" : "-untimed";
-                    break;
-                case GAME:
-                    composedName += isYes ? "-game" : "-noGame";
-                    break;
-            }
-
-			if (isNetChanged(option, isYes)) {
-			    return createNewTabFromInputStream(new ByteArrayInputStream(outputStream.toByteArray()), composedName, option, isYes);
-            } else {
-                return createNewTabFromInputStream(new ByteArrayInputStream(outputStream.toByteArray()), composedName);
-            }
-		} catch (Exception e1) {
-			e1.printStackTrace();
-			System.console().printf(e1.getMessage());
-		}
-		return null;
-	}
-
-	private boolean isNetChanged(FeatureOption option, boolean isYes) {
-        switch (option) {
-            case TIME:
-                return lens.isTimed() != isYes;
-            case GAME:
-                return lens.isGame() != isYes;
-            default:
-                return false;
+	public TabContent duplicateTab(TAPNLens overwriteLens, String appendName) {
+        NetWriter tapnWriter = new TimedArcPetriNetNetworkWriter(
+            network(),
+            allTemplates(),
+            queries(),
+            network().constants(),
+            overwriteLens
+        );
+
+        try {
+            ByteArrayOutputStream outputStream = tapnWriter.savePNML();
+            String composedName = getTabTitle();
+            composedName = composedName.replace(".tapn", "");
+            composedName += appendName;
+            return createNewTabFromInputStream(new ByteArrayInputStream(outputStream.toByteArray()), composedName);
+        } catch (Exception e1) {
+            Logger.log("Could not load model");
+            e1.printStackTrace();
         }
+        return null;
     }
 
 	class CanvasPlaceDrawController extends AbstractDrawingSurfaceManager {
@@ -2651,4 +2666,216 @@
             );
         }
     }
+    public List<GuiAction> getAvailableDrawActions(){
+        if(lens.isTimed()){
+            return new ArrayList<>(Arrays.asList(selectAction, timedPlaceAction,transAction, timedArcAction, transportArcAction, inhibarcAction, tokenAction, deleteTokenAction));
+        } else{
+            return new ArrayList<>(Arrays.asList(selectAction, timedPlaceAction,transAction, timedArcAction, inhibarcAction, tokenAction, deleteTokenAction));
+        }
+    }
+
+    public List<GuiAction> getAvailableSimActions(){
+        if(lens.isTimed()){
+            return new ArrayList<>(Arrays.asList(timeAction, delayFireAction));
+        } else{
+            delayFireAction.setName("Fire");
+            delayFireAction.setTooltip("Fire Selected Transition");
+            return new ArrayList<>(Arrays.asList(delayFireAction));
+        }
+    }
+
+    private final GuiAction selectAction = new GuiAction("Select", "Select components (S)", "S", true) {
+        public void actionPerformed(ActionEvent e) {
+            setMode(Pipe.ElementType.SELECT);
+        }
+    };
+    private final GuiAction annotationAction = new GuiAction("Annotation", "Add an annotation (N)", "N", true) {
+        public void actionPerformed(ActionEvent e) {
+            setMode(Pipe.ElementType.ANNOTATION);
+        }
+    };
+    private final GuiAction inhibarcAction = new GuiAction("Inhibitor arc", "Add an inhibitor arc (I)", "I", true) {
+        public void actionPerformed(ActionEvent e) {
+            setMode(Pipe.ElementType.TAPNINHIBITOR_ARC);
+        }
+    };
+    private final GuiAction transAction = new GuiAction("Transition", "Add a transition (T)", "T", true) {
+        public void actionPerformed(ActionEvent e) {
+            setMode(Pipe.ElementType.TAPNTRANS);
+        }
+    };
+    private final GuiAction tokenAction = new GuiAction("Add token", "Add a token (+)", "typed +", true) {
+        public void actionPerformed(ActionEvent e) {
+            setMode(Pipe.ElementType.ADDTOKEN);
+        }
+    };
+
+    private final GuiAction deleteTokenAction = new GuiAction("Delete token", "Delete a token (-)", "typed -", true) {
+        public void actionPerformed(ActionEvent e) {
+            setMode(Pipe.ElementType.DELTOKEN);
+        }
+    };
+    private final GuiAction timedPlaceAction = new GuiAction("Place", "Add a place (P)", "P", true) {
+        public void actionPerformed(ActionEvent e) {
+            setMode(Pipe.ElementType.TAPNPLACE);
+        }
+    };
+
+    private final GuiAction timedArcAction = new GuiAction("Arc", "Add an arc (A)", "A", true) {
+        public void actionPerformed(ActionEvent e) {
+            setMode(Pipe.ElementType.TAPNARC);
+        }
+    };
+    private final GuiAction transportArcAction = new GuiAction("Transport arc", "Add a transport arc (R)", "R", true) {
+        public void actionPerformed(ActionEvent e) {
+            setMode(Pipe.ElementType.TRANSPORTARC);
+        }
+    };
+    private final GuiAction timeAction = new GuiAction("Delay one time unit", "Let time pass one time unit", "W") {
+        public void actionPerformed(ActionEvent e) {
+            timeDelay();
+        }
+    };
+    private final GuiAction delayFireAction = new GuiAction("Delay and fire", "Delay and fire selected transition", "F") {
+        public void actionPerformed(ActionEvent e) {
+            delayAndFire();
+        }
+    };
+
+    public void updateMode() {
+        // deselect other actions
+        selectAction.setSelected(CreateGui.guiMode == Pipe.ElementType.SELECT);
+        transAction.setSelected(editorMode == Pipe.ElementType.TAPNTRANS);
+        timedPlaceAction.setSelected(editorMode == Pipe.ElementType.TAPNPLACE);
+        timedArcAction.setSelected(editorMode == Pipe.ElementType.TAPNARC);
+        transportArcAction.setSelected(editorMode == Pipe.ElementType.TRANSPORTARC);
+        inhibarcAction.setSelected(editorMode == Pipe.ElementType.TAPNINHIBITOR_ARC);
+        tokenAction.setSelected(editorMode == Pipe.ElementType.ADDTOKEN);
+        deleteTokenAction.setSelected(editorMode == Pipe.ElementType.DELTOKEN);
+        annotationAction.setSelected(editorMode == Pipe.ElementType.ANNOTATION);
+    }
+    @Override
+    public void updateEnabledActions(GuiFrame.GUIMode mode){
+        switch(mode){
+            case draw:
+                selectAction.setEnabled(true);
+                transAction.setEnabled(true);
+                timedPlaceAction.setEnabled(true);
+                timedArcAction.setEnabled(true);
+                transportArcAction.setEnabled(true);
+                inhibarcAction.setEnabled(true);
+                tokenAction.setEnabled(true);
+                deleteTokenAction.setEnabled(true);
+                annotationAction.setEnabled(true);
+                delayFireAction.setEnabled(false);
+                timeAction.setEnabled(false);
+                break;
+            case noNet:
+                selectAction.setEnabled(false);
+                transAction.setEnabled(false);
+                timedPlaceAction.setEnabled(false);
+                timedArcAction.setEnabled(false);
+                transportArcAction.setEnabled(false);
+                inhibarcAction.setEnabled(false);
+                tokenAction.setEnabled(false);
+                deleteTokenAction.setEnabled(false);
+                annotationAction.setEnabled(false);
+                delayFireAction.setEnabled(false);
+                timeAction.setEnabled(false);
+            case animation:
+                selectAction.setEnabled(false);
+                transAction.setEnabled(false);
+                timedPlaceAction.setEnabled(false);
+                timedArcAction.setEnabled(false);
+                transportArcAction.setEnabled(false);
+                inhibarcAction.setEnabled(false);
+                tokenAction.setEnabled(false);
+                deleteTokenAction.setEnabled(false);
+                annotationAction.setEnabled(false);
+                delayFireAction.setEnabled(true);
+                if(lens.isTimed())
+                    timeAction.setEnabled(true);
+                break;
+        }
+    }
+
+
+    public static final String textforDrawing = "Drawing Mode: Click on a button to start adding components to the Editor";
+    public static final String textforPlace = "Place Mode: Right click on a place to see menu options ";
+    public static final String textforTAPNPlace = "Place Mode: Right click on a place to see menu options ";
+    public static final String textforTrans = "Transition Mode: Right click on a transition to see menu options [Mouse wheel -> rotate]";
+    public static final String textforTimedTrans = "Timed Transition Mode: Right click on a transition to see menu options [Mouse wheel -> rotate]";
+    public static final String textforAddtoken = "Add Token Mode: Click on a place to add a token";
+    public static final String textforDeltoken = "Delete Token Mode: Click on a place to delete a token ";
+    public static final String textforAnimation = "Simulation Mode: Red transitions are enabled, click a transition to fire it";
+    public static final String textforArc = "Arc Mode: Right click on an arc to see menu options ";
+    public static final String textforTransportArc = "Transport Arc Mode: Right click on an arc to see menu options ";
+    public static final String textforInhibArc = "Inhibitor Mode: Right click on an arc to see menu options ";
+    public static final String textforMove = "Select Mode: Click/drag to select objects; drag to move them";
+    public static final String textforAnnotation = "Annotation Mode: Right click on an annotation to see menu options; double click to edit";
+    public static final String textforDrag = "Drag Mode";
+
+    public void changeStatusbarText(Pipe.ElementType type) {
+        switch (type) {
+            case PLACE:
+                app.ifPresent(o13 -> o13.setStatusBarText(textforPlace));
+                break;
+
+            case TAPNPLACE:
+                app.ifPresent(o12 -> o12.setStatusBarText(textforTAPNPlace));
+                break;
+
+            case IMMTRANS:
+            case TAPNTRANS:
+                app.ifPresent(o11 -> o11.setStatusBarText(textforTrans));
+                break;
+
+            case TIMEDTRANS:
+                app.ifPresent(o10 -> o10.setStatusBarText(textforTimedTrans));
+                break;
+
+            case ARC:
+            case TAPNARC:
+                app.ifPresent(o9 -> o9.setStatusBarText(textforArc));
+                break;
+
+            case TRANSPORTARC:
+                app.ifPresent(o8 -> o8.setStatusBarText(textforTransportArc));
+                break;
+
+            case TAPNINHIBITOR_ARC:
+            case INHIBARC:
+                app.ifPresent(o7 -> o7.setStatusBarText(textforInhibArc));
+                break;
+
+            case ADDTOKEN:
+                app.ifPresent(o6 -> o6.setStatusBarText(textforAddtoken));
+                break;
+
+            case DELTOKEN:
+                app.ifPresent(o5 -> o5.setStatusBarText(textforDeltoken));
+                break;
+
+            case SELECT:
+                app.ifPresent(o4 -> o4.setStatusBarText(textforMove));
+                break;
+
+            case DRAW:
+                app.ifPresent(o3 -> o3.setStatusBarText(textforDrawing));
+                break;
+
+            case ANNOTATION:
+                app.ifPresent(o2 -> o2.setStatusBarText(textforAnnotation));
+                break;
+
+            case DRAG:
+                app.ifPresent(o1 -> o1.setStatusBarText(textforDrag));
+                break;
+
+            default:
+                app.ifPresent(o->o.setStatusBarText("To-do (textfor" + type));
+                break;
+        }
+    }
+
 }

=== modified file 'src/dk/aau/cs/gui/TabContentActions.java'
--- src/dk/aau/cs/gui/TabContentActions.java	2020-08-11 11:33:28 +0000
+++ src/dk/aau/cs/gui/TabContentActions.java	2020-08-19 11:36:17 +0000
@@ -1,5 +1,6 @@
 package dk.aau.cs.gui;
 
+import pipe.gui.GuiFrame;
 import pipe.gui.GuiFrameActions;
 import pipe.gui.Pipe;
 import pipe.gui.SafeGuiFrameActions;
@@ -89,7 +90,10 @@
 
     void setResizeingDefault();
 
+    void updateEnabledActions(GuiFrame.GUIMode mode);
+
     void changeTimeFeature(boolean isTime);
 
     void changeGameFeature(boolean isGame);
+
 }

=== modified file 'src/dk/aau/cs/gui/TabTransformer.java'
--- src/dk/aau/cs/gui/TabTransformer.java	2020-08-10 09:25:25 +0000
+++ src/dk/aau/cs/gui/TabTransformer.java	2020-08-19 11:36:17 +0000
@@ -51,12 +51,15 @@
                     DataLayer guiModel = template.guiModel();
                     Place guiSource = guiModel.getPlaceByName(arc.getSource().getName());
                     Transition guiTarget = guiModel.getTransitionByName(arc.getTarget().getName());
-                    TimedInputArcComponent newArc = new TimedInputArcComponent(new TimedOutputArcComponent(
-                        guiSource,
+                    TimedInputArcComponent newArc = new TimedInputArcComponent(
+                        new TimedOutputArcComponent(
+                            guiSource,
                             guiTarget,
                             arc.getWeight().value(),
                             arc.getSource().getName() + "_to_" + arc.getTarget().getName()
-                    ));
+                        ),
+                        tab.getLens()
+                    );
 
                     // Build ArcPath
                     Place oldGuiSource = guiModel.getPlaceByName(arc.getSource().getName());

=== modified file 'src/dk/aau/cs/gui/components/EnabledTransitionsList.java'
--- src/dk/aau/cs/gui/components/EnabledTransitionsList.java	2020-07-20 12:17:24 +0000
+++ src/dk/aau/cs/gui/components/EnabledTransitionsList.java	2020-08-19 11:36:17 +0000
@@ -20,6 +20,7 @@
 import org.jetbrains.annotations.NotNull;
 import pipe.dataLayer.Template;
 import pipe.gui.CreateGui;
+import pipe.gui.SimulationControl;
 import pipe.gui.graphicElements.Transition;
 import pipe.gui.graphicElements.tapn.TimedTransitionComponent;
 //TODO clean up!!! 
@@ -63,7 +64,7 @@
 	}
 
 	public void reInitDone(){
-		if(CreateGui.getCurrentTab().getDelayEnabledTransitionControl().isRandomTransitionMode()){
+		if(SimulationControl.getInstance().isRandomTransitionMode()){
 			selectRandom();
 			return;
 		}
@@ -125,7 +126,7 @@
 
 		public String toString(boolean showIntervals) {
 
-			String interval = transition.getDInterval() == null || !showIntervals ? "" : transition.getDInterval().toString() + " ";
+			String interval = transition.getDInterval() == null || !showIntervals || !transition.isTimed() ? "" : transition.getDInterval().toString() + " ";
 			
 			String transitionName = getTransition().getName(); 
 			if(isShared()){

=== modified file 'src/dk/aau/cs/gui/components/TransitionFireingComponent.java'
--- src/dk/aau/cs/gui/components/TransitionFireingComponent.java	2020-07-13 13:58:47 +0000
+++ src/dk/aau/cs/gui/components/TransitionFireingComponent.java	2020-08-19 11:36:17 +0000
@@ -10,6 +10,7 @@
 import javax.swing.JButton;
 import javax.swing.JPanel;
 
+import dk.aau.cs.gui.TabContent;
 import pipe.dataLayer.Template;
 import pipe.gui.AnimationSettingsDialog;
 import pipe.gui.DelayEnabledTransitionControl;
@@ -22,12 +23,12 @@
 	private final EnabledTransitionsList enabledTransitionsList;
 	private final JButton fireButton;
 	private final JButton settingsButton;
+	private final TabContent.TAPNLens lens;
 
-	public TransitionFireingComponent(boolean showDelayEnabledTransitions) {
+	public TransitionFireingComponent(boolean showDelayEnabledTransitions, TabContent.TAPNLens lens) {
 		super(new GridBagLayout());
-
 		enabledTransitionsList = new EnabledTransitionsList();
-
+        this.lens = lens;
 		this.setBorder(
 		    BorderFactory.createCompoundBorder(
 				BorderFactory.createTitledBorder("Enabled Transitions"),
@@ -44,7 +45,7 @@
 
 		settingsButton = new JButton("Settings");
 		settingsButton.setPreferredSize(new Dimension(0, settingsButton.getPreferredSize().height)); //Make the two buttons equal in size
-		settingsButton.addActionListener(e -> AnimationSettingsDialog.showAnimationSettings());
+		settingsButton.addActionListener(e -> AnimationSettingsDialog.showAnimationSettings(lens));
 
 		fireButton = new JButton("Delay & Fire");
 		fireButton.setPreferredSize(new Dimension(0, fireButton.getPreferredSize().height)); //Make the two buttons equal in size
@@ -125,7 +126,10 @@
 				fireButton.setToolTipText(SIMULATE_ACTIVATED_TOOL_TIP);
 			}
 		} else { //If random simulation is not enabled.
-			fireButton.setText(CreateGui.getApp().isShowingDelayEnabledTransitions() ? "Delay & Fire" : "Fire");
+			fireButton.setText(CreateGui.getApp().isShowingDelayEnabledTransitions()  ? "Delay & Fire" : "Fire");
+			if(!lens.isTimed()){
+			    fireButton.setText("Fire");
+            }
 
 			if(enabledTransitionsList.getNumberOfTransitions() == 0){
 				fireButton.setEnabled(false);

=== modified file 'src/dk/aau/cs/io/LoadedModel.java'
--- src/dk/aau/cs/io/LoadedModel.java	2020-08-04 08:53:19 +0000
+++ src/dk/aau/cs/io/LoadedModel.java	2020-08-19 11:36:17 +0000
@@ -3,6 +3,7 @@
 import java.util.Collection;
 import java.util.List;
 
+import dk.aau.cs.gui.TabContent;
 import dk.aau.cs.io.batchProcessing.LoadedBatchProcessingModel;
 import pipe.dataLayer.TAPNQuery;
 import pipe.dataLayer.Template;
@@ -13,23 +14,21 @@
     private final Collection<Template> templates;
 	private final Collection<TAPNQuery> queries;
 	private final TimedArcPetriNetNetwork network;
-    private final boolean isTimed;
-    private final boolean isGame;
     private final Collection<String> messages;
-	
-	public LoadedModel(TimedArcPetriNetNetwork network, Collection<Template> templates, Collection<TAPNQuery> queries, Collection<String> messages){
-        this(network, templates, queries, messages, true, false);
+    private final TabContent.TAPNLens lens;
+
+    public LoadedModel(TimedArcPetriNetNetwork network, Collection<Template> templates, Collection<TAPNQuery> queries, Collection<String> messages){
+        this(network, templates, queries, messages, TabContent.TAPNLens.Default);
     }
 	public LoadedModel(TimedArcPetriNetNetwork network, Collection<Template> templates, Collection<TAPNQuery> queries){
-		this(network, templates, queries, List.of(), true, false);
+		this(network, templates, queries, List.of(), TabContent.TAPNLens.Default);
 	}
 
-    public LoadedModel(TimedArcPetriNetNetwork network, Collection<Template> templates, Collection<TAPNQuery> queries, Collection<String> messages, boolean isTimed, boolean isGame){
+    public LoadedModel(TimedArcPetriNetNetwork network, Collection<Template> templates, Collection<TAPNQuery> queries, Collection<String> messages, TabContent.TAPNLens lens){
         this.templates = templates;
         this.network = network;
         this.queries = queries;
-        this.isTimed = isTimed;
-        this.isGame = isGame;
+        this.lens = lens;
         this.messages = messages;
     }
 
@@ -38,12 +37,15 @@
 	public TimedArcPetriNetNetwork network(){ return network; }
     public Collection<String> getMessages() { return messages; }
 
+    public TabContent.TAPNLens getLens(){
+        return lens;
+    }
 
 	public boolean isTimed() {
-	    return isTimed;
+	    return lens.isTimed();
     }
     public boolean isGame() {
-	    return isGame;
+	    return lens.isGame();
     }
 
 }
\ No newline at end of file

=== modified file 'src/dk/aau/cs/io/PNMLoader.java'
--- src/dk/aau/cs/io/PNMLoader.java	2020-07-20 09:53:59 +0000
+++ src/dk/aau/cs/io/PNMLoader.java	2020-08-19 11:36:17 +0000
@@ -15,6 +15,7 @@
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
+import dk.aau.cs.gui.TabContent;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -51,8 +52,10 @@
 import pipe.gui.graphicElements.tapn.TimedTransitionComponent;
 
 public class PNMLoader {
-	
-	enum GraphicsType { Position, Offset }
+
+    private final TabContent.TAPNLens lens = new TabContent.TAPNLens(false, false);
+
+    enum GraphicsType { Position, Offset }
 
 	private final NameGenerator nameGenerator = new NameGenerator();
 	private final IdResolver idResolver = new IdResolver();
@@ -192,7 +195,7 @@
 		
 		if(isNetDrawable()){
 			//We parse the id as both the name and id as in tapaal name = id, and name/id has to be unique 
-			TimedPlaceComponent placeComponent = new TimedPlaceComponent(position.x, position.y, id, name.point.x, name.point.y);
+			TimedPlaceComponent placeComponent = new TimedPlaceComponent(position.x, position.y, id, name.point.x, name.point.y, lens);
 			placeComponent.setUnderlyingPlace(place);
 			template.guiModel().addPetriNetObject(placeComponent);
 		}
@@ -236,8 +239,7 @@
 		if(isNetDrawable()){
 			TimedTransitionComponent transitionComponent = 
 				//We parse the id as both the name and id as in tapaal name = id, and name/id has to be unique 
-				new TimedTransitionComponent(position.x, position.y, id, name.point.x, name.point.y,
-						true, false, 0, 0);
+				new TimedTransitionComponent(position.x, position.y, id, name.point.x, name.point.y, true, false, 0, 0, lens);
 			transitionComponent.setUnderlyingTransition(transition);
 			template.guiModel().addPetriNetObject(transitionComponent);
 		}
@@ -423,7 +425,7 @@
 		TimedInputArcComponent arc = null;
 		
 		if(isNetDrawable()){
-			arc = new TimedInputArcComponent(new TimedOutputArcComponent(source, target, weight, arcId));
+			arc = new TimedInputArcComponent(new TimedOutputArcComponent(source, target, weight, arcId), lens);
 			arc.setUnderlyingArc(inputArc);
 
 			template.guiModel().addPetriNetObject(arc);

=== modified file 'src/dk/aau/cs/io/TapnLegacyXmlLoader.java'
--- src/dk/aau/cs/io/TapnLegacyXmlLoader.java	2020-08-04 08:53:19 +0000
+++ src/dk/aau/cs/io/TapnLegacyXmlLoader.java	2020-08-19 11:36:17 +0000
@@ -13,6 +13,7 @@
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
+import dk.aau.cs.gui.TabContent;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -83,9 +84,10 @@
 	private final IdResolver idResolver = new IdResolver();
 
     private final Collection<String> messages = new ArrayList<>(10);
-
-
-	public TapnLegacyXmlLoader() {}
+    private final TabContent.TAPNLens lens = new TabContent.TAPNLens(true, false);
+
+
+    public TapnLegacyXmlLoader() {}
 	
 	public LoadedModel load(InputStream file) throws FormatException {
 		Require.that(file != null, "file must be non-null and exist");
@@ -278,7 +280,7 @@
                                          PlaceTransitionObject targetIn,
                                          int _endx, int _endy) throws FormatException {
 
-	    TimedInputArcComponent tempArc = new TimedInputArcComponent(new TimedOutputArcComponent(sourceIn, targetIn, 1, idInput));
+	    TimedInputArcComponent tempArc = new TimedInputArcComponent(new TimedOutputArcComponent(sourceIn, targetIn, 1, idInput), lens);
 
 		TimedPlace place = tapn.getPlaceByName(sourceIn.getName());
 		TimedTransition transition = tapn.getTransitionByName(targetIn.getName());
@@ -523,7 +525,7 @@
 		TimedTransitionComponent transition = new TimedTransitionComponent(
 				positionXInput, positionYInput, idInput,
 				nameOffsetXInput, nameOffsetYInput, timedTransition,
-				infiniteServer, angle, priority);
+				infiniteServer, angle, priority, lens);
 		transition.setUnderlyingTransition(t);
 		guiModel.addPetriNetObject(transition);
 		tapn.add(t);
@@ -556,7 +558,7 @@
         }
         idResolver.add(tapn.name(), idInput, nameInput);
 
-        TimedPlaceComponent place = new TimedPlaceComponent(positionXInput, positionYInput, idInput, nameOffsetXInput, nameOffsetYInput);
+        TimedPlaceComponent place = new TimedPlaceComponent(positionXInput, positionYInput, idInput, nameOffsetXInput, nameOffsetYInput, lens);
 
         LocalTimedPlace p = new LocalTimedPlace(nameInput, TimeInvariant.parse(invariant, constants));
         tapn.add(p);
@@ -615,9 +617,7 @@
 
 		} else {
 			if (type.equals("timed")) {
-				tempArc = parseAndAddTimedInputArc(idInput, taggedArc,
-						inscriptionTempStorage, sourceIn, targetIn,
-                    aEndx, aEndy);
+				tempArc = parseAndAddTimedInputArc(idInput, taggedArc, inscriptionTempStorage, sourceIn, targetIn, aEndx, aEndy);
 
 			} else if (type.equals("transport")) {
 				tempArc = parseAndAddTransportArc(idInput, taggedArc,

=== modified file 'src/dk/aau/cs/io/TapnXmlLoader.java'
--- src/dk/aau/cs/io/TapnXmlLoader.java	2020-08-10 06:46:22 +0000
+++ src/dk/aau/cs/io/TapnXmlLoader.java	2020-08-19 11:36:17 +0000
@@ -14,6 +14,7 @@
 import javax.xml.parsers.ParserConfigurationException;
 
 import dk.aau.cs.debug.Logger;
+import dk.aau.cs.gui.TabContent;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -26,10 +27,7 @@
 import pipe.gui.CreateGui;
 import pipe.gui.Pipe;
 import pipe.gui.Zoomer;
-import pipe.gui.graphicElements.AnnotationNote;
-import pipe.gui.graphicElements.Arc;
-import pipe.gui.graphicElements.Place;
-import pipe.gui.graphicElements.PlaceTransitionObject;
+import pipe.gui.graphicElements.*;
 import pipe.gui.graphicElements.tapn.TimedInhibitorArcComponent;
 import pipe.gui.graphicElements.tapn.TimedInputArcComponent;
 import pipe.gui.graphicElements.tapn.TimedOutputArcComponent;
@@ -73,9 +71,7 @@
 	private final IdResolver idResolver = new IdResolver();
     private final Collection<String> messages = new ArrayList<>(10);
 
-	private boolean isTimed;
-	private boolean isGame;
-	private boolean isUncontrollable = false;
+    private TabContent.TAPNLens lens;
 
 	public TapnXmlLoader() {
 
@@ -118,6 +114,8 @@
 
 	private LoadedModel parse(Document doc) throws FormatException {
 		idResolver.clear();
+
+        parseFeature(doc);
 		
 		ConstantStore constants = new ConstantStore(parseConstants(doc));
 
@@ -133,9 +131,9 @@
 		
 		parseBound(doc, network);
 
-		parseFeature(doc, network);
-
-		return new LoadedModel(network, templates, queries,messages, isTimed, isGame);
+
+
+		return new LoadedModel(network, templates, queries,messages, lens);
 	}
 
 	private void parseBound(Document doc, TimedArcPetriNetNetwork network){
@@ -145,27 +143,16 @@
 		}
 	}
 
-    private void parseFeature(Document doc, TimedArcPetriNetNetwork network) {
-	    boolean networkIsTimed = !network.isUntimed();
-
+    private void parseFeature(Document doc) {
         if (doc.getElementsByTagName("feature").getLength() > 0) {
 	        NodeList nodeList = doc.getElementsByTagName("feature");
 
-            isTimed = Boolean.parseBoolean(nodeList.item(0).getAttributes().getNamedItem("isTimed").getNodeValue());
-            isGame = Boolean.parseBoolean(nodeList.item(0).getAttributes().getNamedItem("isGame").getNodeValue());
-
-            if (networkIsTimed && !isTimed) {
-                isTimed = true;
-                Logger.log("The net contains time features. The entire net will be changed to include time features.");
-            }
-            if (isUncontrollable && !isGame) {
-                isGame = true;
-                Logger.log("The net contains game features. The entire net will be changed to include game features.");
-
-            }
+            var isTimed = Boolean.parseBoolean(nodeList.item(0).getAttributes().getNamedItem("isTimed").getNodeValue());
+            var isGame = Boolean.parseBoolean(nodeList.item(0).getAttributes().getNamedItem("isGame").getNodeValue());
+
+            lens = new TabContent.TAPNLens(isTimed, isGame);
         } else {
-            isTimed = networkIsTimed;
-            isGame = isUncontrollable;
+            lens = new TabContent.TAPNLens(true, false);
         }
     }
 
@@ -380,9 +367,6 @@
 		boolean isUrgent = Boolean.parseBoolean(transition.getAttribute("urgent"));
 
 		String player = transition.getAttribute("player");
-		if (player.length() > 0 && player.equals("1")) {
-		    isUncontrollable = true;
-        }
 
 		idResolver.add(tapn.name(), idInput, nameInput);
 		
@@ -417,7 +401,7 @@
 		TimedTransitionComponent transitionComponent = new TimedTransitionComponent(
 				positionXInput, positionYInput, idInput,
 				nameOffsetXInput, nameOffsetYInput, true,
-				infiniteServer, angle, priority);
+				infiniteServer, angle, priority, lens);
 		transitionComponent.setUnderlyingTransition(t);
 		
 		if (!displayName){
@@ -468,7 +452,7 @@
 			}
 		}
 		nameGenerator.updateIndicesForAllModels(nameInput);
-		TimedPlaceComponent placeComponent = new TimedPlaceComponent(positionXInput, positionYInput, idInput, nameOffsetXInput, nameOffsetYInput);
+		TimedPlaceComponent placeComponent = new TimedPlaceComponent(positionXInput, positionYInput, idInput, nameOffsetXInput, nameOffsetYInput, lens);
 		placeComponent.setUnderlyingPlace(p);
 		
 		if (!displayName){
@@ -646,7 +630,8 @@
                                          String inscriptionTempStorage, PlaceTransitionObject sourceIn,
                                          PlaceTransitionObject targetIn,
                                          int _endx, int _endy, Template template, ConstantStore constants, Weight weight) throws FormatException {
-        TimedInputArcComponent tempArc = new TimedInputArcComponent(new TimedOutputArcComponent(sourceIn, targetIn, 1, idInput));
+
+	    TimedInputArcComponent tempArc = new TimedInputArcComponent(new TimedOutputArcComponent(sourceIn, targetIn, 1, idInput), lens);
 
 		TimedPlace place = template.model().getPlaceByName(sourceIn.getName());
 		TimedTransition transition = template.model().getTransitionByName(targetIn.getName());

=== modified file 'src/dk/aau/cs/io/TimedArcPetriNetNetworkWriter.java'
--- src/dk/aau/cs/io/TimedArcPetriNetNetworkWriter.java	2020-08-10 06:46:22 +0000
+++ src/dk/aau/cs/io/TimedArcPetriNetNetworkWriter.java	2020-08-19 11:36:17 +0000
@@ -17,6 +17,7 @@
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
+import dk.aau.cs.gui.TabContent;
 import org.w3c.dom.Attr;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Document;
@@ -55,18 +56,19 @@
 	private final Iterable<TAPNQuery> queries;
 	private final Iterable<Constant> constants;
 	private final TimedArcPetriNetNetwork network;
-    private boolean isTimed;
-    private boolean isGame;
+    private final TabContent.TAPNLens lens;
 
 	public TimedArcPetriNetNetworkWriter(
 			TimedArcPetriNetNetwork network, 
 			Iterable<Template> templates,
 			Iterable<TAPNQuery> queries,
-			Iterable<Constant> constants) {
+			Iterable<Constant> constants
+    ) {
 		this.network = network;
 		this.templates = templates;
 		this.queries = queries;
 		this.constants = constants;
+		this.lens = TabContent.TAPNLens.Default;
 	}
 
     public TimedArcPetriNetNetworkWriter(
@@ -74,14 +76,13 @@
         Iterable<Template> templates,
         Iterable<TAPNQuery> queries,
         Iterable<Constant> constants,
-        boolean isTimed,
-        boolean isGame) {
+        TabContent.TAPNLens lens
+    ) {
         this.network = network;
         this.templates = templates;
         this.queries = queries;
         this.constants = constants;
-        this.isTimed = isTimed;
-        this.isGame = isGame;
+        this.lens = lens;
     }
 	
 	public ByteArrayOutputStream savePNML() throws IOException, ParserConfigurationException, DOMException, TransformerConfigurationException, TransformerException {
@@ -161,10 +162,10 @@
     private void appendFeature(Document document, Element root) {
         String isTimed = "true";
         String isGame = "true";
-        if (!this.isTimed) {
+        if (!lens.isTimed()) {
             isTimed = "false";
         }
-        if (!this.isGame) {
+        if (!lens.isGame()) {
             isGame = "false";
         }
 

=== modified file 'src/dk/aau/cs/verification/TAPNComposer.java'
--- src/dk/aau/cs/verification/TAPNComposer.java	2020-08-10 06:46:22 +0000
+++ src/dk/aau/cs/verification/TAPNComposer.java	2020-08-19 11:36:17 +0000
@@ -4,6 +4,7 @@
 import java.util.HashSet;
 import java.util.Map.Entry;
 
+import dk.aau.cs.gui.TabContent;
 import pipe.dataLayer.DataLayer;
 import pipe.gui.ExportBatchDialog;
 import pipe.gui.graphicElements.Arc;
@@ -45,8 +46,9 @@
 	private HashSet<String> processedSharedObjects;
 	private HashMap<TimedArcPetriNet, DataLayer> guiModels;
 	private DataLayer composedGuiModel;
+    private final TabContent.TAPNLens lens = TabContent.TAPNLens.Default;
 
-	public TAPNComposer(Messenger messenger, HashMap<TimedArcPetriNet, DataLayer> guiModels, boolean singleComponentNoPrefix, boolean inlineConstants){
+    public TAPNComposer(Messenger messenger, HashMap<TimedArcPetriNet, DataLayer> guiModels, boolean singleComponentNoPrefix, boolean inlineConstants){
 		this.messenger = messenger;
 		
 		HashMap<TimedArcPetriNet, DataLayer> newGuiModels = new HashMap<TimedArcPetriNet, DataLayer>();
@@ -185,8 +187,9 @@
 						oldPlace.getPositionY(),
 						oldPlace.getId(),
 						oldPlace.getNameOffsetX(),
-						oldPlace.getNameOffsetY()
-						);
+						oldPlace.getNameOffsetY(),
+                        lens
+					);
 					newPlace.setUnderlyingPlace(constructedPlace);
 					newPlace.setName(uniquePlaceName);
 					guiModel.addPetriNetObject(newPlace);
@@ -227,13 +230,14 @@
 					// Gui work
 					if (this.guiModels != null) {
 						Place oldPlace = currentGuiModel.getPlaceByName(timedPlace.name());
-						TimedPlaceComponent newPlace = new TimedPlaceComponent(
-								oldPlace.getPositionX() + offset.value1() * greatestWidth,
-								oldPlace.getPositionY() + offset.value2() * greatestHeight,
-								oldPlace.getId(),
-								oldPlace.getNameOffsetX(),
-								oldPlace.getNameOffsetY()
-						);
+                        TimedPlaceComponent newPlace = new TimedPlaceComponent(
+                            oldPlace.getPositionX() + offset.value1() * greatestWidth,
+                            oldPlace.getPositionY() + offset.value2() * greatestHeight,
+                            oldPlace.getId(),
+                            oldPlace.getNameOffsetX(),
+                            oldPlace.getNameOffsetY(),
+                            lens
+                        );
 						newPlace.setGuiModel(guiModel);
 
 						newPlace.setUnderlyingPlace(place);
@@ -284,15 +288,17 @@
 						if (this.guiModels != null) {
 							Transition oldTransition = currentGuiModel.getTransitionByName(timedTransition.name());
 							TimedTransitionComponent newTransition = new TimedTransitionComponent(
-									oldTransition.getPositionX() + offset.value1() * greatestWidth,
-									oldTransition.getPositionY() + offset.value2() * greatestHeight,
-									oldTransition.getId(),
-									oldTransition.getNameOffsetX(),
-									oldTransition.getNameOffsetY(),
-									true,
-									false,
-									oldTransition.getAngle(),
-									0);
+                                oldTransition.getPositionX() + offset.value1() * greatestWidth,
+                                oldTransition.getPositionY() + offset.value2() * greatestHeight,
+                                oldTransition.getId(),
+                                oldTransition.getNameOffsetX(),
+                                oldTransition.getNameOffsetY(),
+                                true,
+                                false,
+                                oldTransition.getAngle(),
+                                0,
+                                lens
+                            );
 							newTransition.setUnderlyingTransition(transition);
 							newTransition.setName(uniqueTransitionName);
 							guiModel.addPetriNetObject(newTransition);
@@ -380,12 +386,14 @@
 					Place guiSource = guiModel.getPlaceByName(mapping.map(sourceTemplate, arc.source().name()));
 					Transition guiTarget = guiModel.getTransitionByName(mapping.map(targetTemplate, arc.destination().name()));
 					
-					TimedInputArcComponent newArc = new TimedInputArcComponent(new TimedOutputArcComponent(
-                        guiSource,
-							guiTarget,
-							arc.getWeight().value(),
-							mapping.map(sourceTemplate, arc.source().name()) + "_to_" + mapping.map(targetTemplate, arc.destination().name())
-                    )
+					TimedInputArcComponent newArc = new TimedInputArcComponent(
+                        new TimedOutputArcComponent(
+                            guiSource,
+                            guiTarget,
+                            arc.getWeight().value(),
+                            mapping.map(sourceTemplate, arc.source().name()) + "_to_" + mapping.map(targetTemplate, arc.destination().name())
+                        ),
+                        lens
 					);
 					
 					// Build ArcPath

=== modified file 'src/pipe/dataLayer/TAPNQuery.java'
--- src/pipe/dataLayer/TAPNQuery.java	2019-03-22 11:36:50 +0000
+++ src/pipe/dataLayer/TAPNQuery.java	2020-08-19 11:36:17 +0000
@@ -1,11 +1,8 @@
 package pipe.dataLayer;
 
+import dk.aau.cs.TCTL.*;
 import pipe.dataLayer.TAPNQuery.QueryCategory;
 import pipe.gui.widgets.InclusionPlaces;
-import dk.aau.cs.TCTL.TCTLAFNode;
-import dk.aau.cs.TCTL.TCTLAbstractProperty;
-import dk.aau.cs.TCTL.TCTLEFNode;
-import dk.aau.cs.TCTL.TCTLEGNode;
 import dk.aau.cs.translations.ReductionOption;
 import dk.aau.cs.verification.QueryType;
 
@@ -416,4 +413,13 @@
     public AlgorithmOption getAlgorithmOption(){
     	return this.algorithmOption;
     }
+
+    public boolean hasUntimedOnlyProperties(){
+        if(!(property instanceof TCTLAFNode || property instanceof TCTLAGNode || property instanceof TCTLEFNode || property instanceof  TCTLEGNode)){
+            return true;
+        } else if(property.hasNestedPathQuantifiers()){
+            return true;
+        }
+        return false;
+    }
 }

=== modified file 'src/pipe/gui/AnimationControlSidePanel.java'
--- src/pipe/gui/AnimationControlSidePanel.java	2020-07-16 09:52:11 +0000
+++ src/pipe/gui/AnimationControlSidePanel.java	2020-08-19 11:36:17 +0000
@@ -21,6 +21,7 @@
 import javax.swing.border.EmptyBorder;
 import javax.swing.text.AbstractDocument;
 
+import dk.aau.cs.gui.TabContent;
 import dk.aau.cs.util.Require;
 import net.tapaal.swinghelpers.DecimalOnlyDocumentFilter;
 import dk.aau.cs.gui.components.NonsearchableJComboBox;
@@ -46,14 +47,17 @@
 	private int delayScale = 10;
 	private static final String PRECISION_ERROR_MESSAGE = "The precision is limited to 5 decimal places, the number will be truncated.";
 	private static final String PRECISION_ERROR_DIALOG_TITLE = "Precision of Time Delay Exceeded";
-
-
-
-	JTextField TimeDelayField = new JTextField();
+	private JPanel sliderPanel;
+	private JPanel timedelayPanel;
+    JPanel firemode;
+
+
+
+    JTextField TimeDelayField = new JTextField();
 	JComboBox<String> firermodebox;
 
 
-	public AnimationControlSidePanel(Animator animator) {
+	public AnimationControlSidePanel(Animator animator, TabContent.TAPNLens lens) {
         Require.notNull(animator, "Animator can't be null");
 
         this.animator = animator;
@@ -80,7 +84,7 @@
 		c.gridy = 2;
 		add(animationToolBar, c);
 
-        JPanel firemode = new JPanel(new FlowLayout(FlowLayout.LEFT));
+		firemode = new JPanel(new FlowLayout(FlowLayout.LEFT));
 
         JLabel label = new JLabel("Token selection: ");
 
@@ -104,10 +108,21 @@
 		this.setMinimumSize(new Dimension(275, 180));
 		
 		initializeDocumentFilterForDelayInput();
+		hideIrrelevantInformation(lens);
 	}
 
+	private void hideIrrelevantInformation(TabContent.TAPNLens lens){
+        sliderPanel.setVisible(lens.isTimed());
+        timedelayPanel.setVisible(lens.isTimed());
+        firemode.setVisible(lens.isTimed());
+        if(!lens.isTimed()){
+            this.setPreferredSize(new Dimension(275, 50));
+            this.setMinimumSize(new Dimension(275, 50));
+        }
+    }
+
     private void initDelaySlider() {
-		JPanel sliderPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
+		sliderPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
 		JButton decrese = new JButton("-");
 		decrese.setPreferredSize(new Dimension(20, 30));
 		decrese.addActionListener(e -> {
@@ -174,7 +189,7 @@
 
 
 	private void initDelayTimePanel(JToolBar animationToolBar) {
-		JPanel timedelayPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+	    timedelayPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
 
 		okButton = new javax.swing.JButton();
 

=== modified file 'src/pipe/gui/AnimationSettingsDialog.java'
--- src/pipe/gui/AnimationSettingsDialog.java	2020-07-20 07:19:51 +0000
+++ src/pipe/gui/AnimationSettingsDialog.java	2020-08-19 11:36:17 +0000
@@ -9,6 +9,7 @@
 import javax.swing.JDialog;
 import javax.swing.JPanel;
 
+import dk.aau.cs.gui.TabContent;
 import pipe.gui.widgets.EscapableDialog;
 
 public class AnimationSettingsDialog {
@@ -16,8 +17,8 @@
 	private static JDialog dialog;
 	private static DelayEnabledTransitionControl delayEnabled;
 	private static SimulationControl simControl;
-	
-	private static JPanel getContent(){
+
+	private static JPanel getContent(TabContent.TAPNLens lens){
 		JPanel content = new JPanel(new BorderLayout());
 		 
 		delayEnabled = DelayEnabledTransitionControl.getInstance();
@@ -26,28 +27,32 @@
 		
 		simControl.addRandomSimulationActionListener(e -> {
 			if(simControl.randomSimulation()){
-				delayEnabled.randomMode.setSelected(true);
+				simControl.randomMode.setSelected(true);
 			}
 			CreateGui.getCurrentTab().getTransitionFireingComponent().updateFireButton();
 		});
 		
 		content.add(delayEnabled, BorderLayout.NORTH);
 		content.add(simControl, BorderLayout.SOUTH);
+		hideTimedInformation(lens);
 		return content;
 	}
-	
-	
-	public static void showAnimationSettings(){
+
+    private static void hideTimedInformation(TabContent.TAPNLens lens){
+	    delayEnabled.setVisible(lens.isTimed());
+    }
+	
+	public static void showAnimationSettings(TabContent.TAPNLens lens){
 		JPanel contentPane = new JPanel(new GridBagLayout());
 		
 		JButton closeDialogButton = new JButton("Close");
 		closeDialogButton.addActionListener(o -> dialog.setVisible(false));
-		
+
 		GridBagConstraints gbc = new GridBagConstraints();
 		gbc.anchor = GridBagConstraints.NORTHWEST;
 		gbc.insets = new Insets(0, 3, 0, 3);
 		gbc.fill = GridBagConstraints.BOTH;
-		contentPane.add(getContent(), gbc);
+		contentPane.add(getContent(lens), gbc);
 		
 		gbc = new GridBagConstraints();
 		gbc.anchor = GridBagConstraints.NORTHWEST;

=== modified file 'src/pipe/gui/Animator.java'
--- src/pipe/gui/Animator.java	2020-07-20 12:17:24 +0000
+++ src/pipe/gui/Animator.java	2020-08-19 11:36:17 +0000
@@ -705,4 +705,8 @@
         }
     }
 
+    public TabContent getTab(){
+        return tab;
+    }
+
 }

=== modified file 'src/pipe/gui/CreateGui.java'
--- src/pipe/gui/CreateGui.java	2020-07-22 10:39:07 +0000
+++ src/pipe/gui/CreateGui.java	2020-08-19 11:36:17 +0000
@@ -157,4 +157,8 @@
 
     public static boolean useExtendedBounds = false;
 
+	//XXX Moved from guiframe to static access, while refactoring.
+	@Deprecated
+    public static Pipe.ElementType guiMode;
+
 }

=== modified file 'src/pipe/gui/DelayEnabledTransitionControl.java'
--- src/pipe/gui/DelayEnabledTransitionControl.java	2020-07-20 08:04:40 +0000
+++ src/pipe/gui/DelayEnabledTransitionControl.java	2020-08-19 11:36:17 +0000
@@ -23,14 +23,12 @@
 
 	private static DelayMode defaultDelayMode = ShortestDelayMode.getInstance();
 	private static BigDecimal defaultGranularity = new BigDecimal("0.1");
-	private static boolean defaultIsRandomTrasition;
-	
+
 	private final JLabel precitionLabel;
 	private final JSlider delayEnabledPrecision;
 	private final JLabel delayModeLabel;
 	private final JComboBox<DelayMode> delayMode;
-	final JCheckBox randomMode = new JCheckBox("Choose next transition randomly");
-	
+
 	private DelayEnabledTransitionControl() {
 		super(new GridBagLayout());
 		
@@ -57,8 +55,7 @@
 		delayMode = new JComboBox<>(items);
 		setDelayMode(defaultDelayMode);
 
-        setRandomTransitionMode(defaultIsRandomTrasition);
-        
+
 		GridBagConstraints gbc = new GridBagConstraints();
 		gbc.gridwidth = 2;
 		gbc.anchor = GridBagConstraints.WEST;
@@ -92,13 +89,6 @@
 		gbc.gridy = 2;
 		add(delayMode, gbc);
 		
-		gbc = new GridBagConstraints();
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.weightx = 1.0;
-		gbc.gridx = 0;
-		gbc.gridy = 3;
-		add(randomMode, gbc);
-		
 		setBorder(BorderFactory.createCompoundBorder(
 				BorderFactory.createTitledBorder("Delay controller"), 
 				BorderFactory.createEmptyBorder(3, 3, 3, 3)));
@@ -130,19 +120,9 @@
 	public void setDelayMode(DelayMode delayMode){
 		this.delayMode.setSelectedItem(delayMode);
 	}
-	
-	public boolean isRandomTransitionMode(){
-		if(SimulationControl.getInstance().randomSimulation()){
-			return true;
-		} else {
-			return randomMode.isSelected();
-		}
-	}
-	
-	public void setRandomTransitionMode(boolean randomTransition){
-		randomMode.setSelected(randomTransition);
-	}
-	
+
+
+
 	private static DelayEnabledTransitionControl instance;
 	
 	public static DelayEnabledTransitionControl getInstance(){
@@ -176,18 +156,6 @@
 		}
 	}
 
-	public static void setDefaultIsRandomTransition(boolean delayEnabledTransitionIsRandomTransition) {
-		defaultIsRandomTrasition = delayEnabledTransitionIsRandomTransition;
-	}
-	
-	public static boolean isRandomTransition(){
-		if(instance != null){
-			return getInstance().isRandomTransitionMode();
-		} else {
-			return defaultIsRandomTrasition;
-		}
-	}
-	
 	@Override
 	public void setEnabled(boolean enabled) {
 		super.setEnabled(enabled);
@@ -195,6 +163,5 @@
 		delayEnabledPrecision.setEnabled(enabled);
 		delayModeLabel.setEnabled(enabled);
 		delayMode.setEnabled(enabled);
-		randomMode.setEnabled(enabled);
 	}
 }

=== modified file 'src/pipe/gui/GuiFrame.java'
--- src/pipe/gui/GuiFrame.java	2020-08-13 08:58:53 +0000
+++ src/pipe/gui/GuiFrame.java	2020-08-19 11:36:17 +0000
@@ -11,6 +11,7 @@
 import java.net.*;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
+import java.util.List;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import javax.swing.*;
@@ -25,6 +26,7 @@
 import net.tapaal.helpers.Reference.Reference;
 import net.tapaal.swinghelpers.ExtendedJTabbedPane;
 import net.tapaal.swinghelpers.ToggleButtonWithoutText;
+import org.jetbrains.annotations.NotNull;
 import pipe.gui.Pipe.ElementType;
 import pipe.gui.action.GuiAction;
 import pipe.gui.widgets.WorkflowDialog;
@@ -43,8 +45,6 @@
 
     private final String frameTitle;
 
-    private Pipe.ElementType mode;
-
     private int newNameCounter = 1;
 
     final MutableReference<GuiFrameControllerActions> guiFrameController = new MutableReference<>();
@@ -53,6 +53,9 @@
 
     private final StatusBar statusBar;
     private JMenuBar menuBar;
+    JMenu drawMenu;
+    JMenu animateMenu;
+    JMenu viewMenu;
     private JToolBar drawingToolBar;
     private final JLabel featureInfoText = new JLabel();
     private JComboBox<String> timeFeatureOptions = new JComboBox(new String[]{"No", "Yes"});
@@ -281,47 +284,6 @@
             currentTab.ifPresent(o -> o.setMode(ElementType.ANNOTATION));
         }
     };
-    private final GuiAction inhibarcAction = new GuiAction("Inhibitor arc", "Add an inhibitor arc (I)", "I", true) {
-        public void actionPerformed(ActionEvent e) {
-            currentTab.ifPresent(o -> o.setMode(ElementType.TAPNINHIBITOR_ARC));
-        }
-    };
-    private final GuiAction transAction = new GuiAction("Transition", "Add a transition (T)", "T", true) {
-        public void actionPerformed(ActionEvent e) {
-            currentTab.ifPresent(o -> o.setMode(ElementType.TAPNTRANS));
-        }
-    };
-    private final GuiAction tokenAction = new GuiAction("Add token", "Add a token (+)", "typed +", true) {
-        public void actionPerformed(ActionEvent e) {
-            currentTab.ifPresent(o -> o.setMode(ElementType.ADDTOKEN));
-        }
-    };
-    private final GuiAction selectAction = new GuiAction("Select", "Select components (S)", "S", true) {
-        public void actionPerformed(ActionEvent e) {
-            currentTab.ifPresent(o -> o.setMode(ElementType.SELECT));
-        }
-    };
-    private final GuiAction deleteTokenAction = new GuiAction("Delete token", "Delete a token (-)", "typed -", true) {
-        public void actionPerformed(ActionEvent e) {
-            currentTab.ifPresent(o -> o.setMode(ElementType.DELTOKEN));
-        }
-    };
-    private final GuiAction timedPlaceAction = new GuiAction("Place", "Add a place (P)", "P", true) {
-        public void actionPerformed(ActionEvent e) {
-            currentTab.ifPresent(o -> o.setMode(ElementType.TAPNPLACE));
-        }
-    };
-
-    private final GuiAction timedArcAction = new GuiAction("Arc", "Add an arc (A)", "A", true) {
-        public void actionPerformed(ActionEvent e) {
-            currentTab.ifPresent(o -> o.setMode(ElementType.TAPNARC));
-        }
-    };
-    private final GuiAction transportArcAction = new GuiAction("Transport arc", "Add a transport arc (R)", "R", true) {
-        public void actionPerformed(ActionEvent e) {
-            currentTab.ifPresent(o -> o.setMode(ElementType.TRANSPORTARC));
-        }
-    };
 
     private final GuiAction showTokenAgeAction = new GuiAction("Display token age", "Show/hide displaying the token age 0.0 (when hidden the age 0.0 is drawn as a dot)", KeyStroke.getKeyStroke('9', shortcutkey), true) {
         public void actionPerformed(ActionEvent e) {
@@ -436,17 +398,9 @@
             currentTab.ifPresent(TabContentActions::stepBackwards);
         }
     };
-    private final GuiAction timeAction = new GuiAction("Delay one time unit", "Let time pass one time unit", "W") {
-        public void actionPerformed(ActionEvent e) {
-            currentTab.ifPresent(TabContentActions::timeDelay);
-        }
-    };
-    private final GuiAction delayFireAction = new GuiAction("Delay and fire", "Delay and fire selected transition", "F") {
-        public void actionPerformed(ActionEvent e) {
-            currentTab.ifPresent(TabContentActions::delayAndFire);
-        }
-    };
-    private final GuiAction prevcomponentAction = new GuiAction("Previous component", "Previous component", "pressed UP") {
+
+
+    private GuiAction prevcomponentAction = new GuiAction("Previous component", "Previous component", "pressed UP") {
         public void actionPerformed(ActionEvent e) {
             currentTab.ifPresent(TabContentActions::previousComponent);
         }
@@ -477,6 +431,7 @@
 
     private JCheckBoxMenuItem showZeroToInfinityIntervalsCheckBox;
     private JCheckBoxMenuItem showTokenAgeCheckBox;
+    private JCheckBoxMenuItem showDelayEnabledTransitionsCheckbox;
 
     private JMenu zoomMenu;
 
@@ -496,7 +451,7 @@
         this.setMinimumSize(new Dimension(825, 480));
 
         setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
-        appTab= new ExtendedJTabbedPane<TabContent>() {
+        appTab = new ExtendedJTabbedPane<TabContent>() {
             @Override
             public Component generator() {
                 return new TabComponent(this) {
@@ -586,7 +541,7 @@
         }
 
 
-        if (Platform.isMac()){
+        if (Platform.isMac()) {
 
             //Set specific settings
             System.setProperty("apple.laf.useScreenMenuBar", "true");
@@ -616,11 +571,11 @@
      **/
     private void buildMenus() {
         menuBar = new JMenuBar();
-
         menuBar.add(buildMenuFiles());
         menuBar.add(buildMenuEdit());
         menuBar.add(buildMenuView());
         menuBar.add(buildMenuDraw());
+
         menuBar.add(buildMenuAnimation());
         menuBar.add(buildMenuTools());
         menuBar.add(buildMenuHelp());
@@ -658,35 +613,14 @@
 
     private JMenu buildMenuDraw() {
         /* Draw menu */
-        JMenu drawMenu = new JMenu("Draw");
+        drawMenu = new JMenu("Draw");
         drawMenu.setMnemonic('D');
-
-        drawMenu.add(selectAction);
-        drawMenu.addSeparator();
-
-        drawMenu.add(timedPlaceAction);
-
-        drawMenu.add(transAction);
-
-        drawMenu.add(timedArcAction);
-
-        drawMenu.add(transportArcAction);
-
-        drawMenu.add(inhibarcAction);
-
-        drawMenu.add(annotationAction);
-
-        drawMenu.addSeparator();
-
-        drawMenu.add(tokenAction);
-
-        drawMenu.add(deleteTokenAction);
         return drawMenu;
     }
 
     private JMenu buildMenuView() {
         /* ViewMenu */
-        JMenu viewMenu = new JMenu("View");
+        viewMenu = new JMenu("View");
         viewMenu.setMnemonic('V');
 
         zoomMenu = new JMenu("Zoom");
@@ -725,7 +659,7 @@
 
         addCheckboxMenuItem(viewMenu, showEnabledTransitionsAction);
 
-        addCheckboxMenuItem(viewMenu, showDelayEnabledTransitionsAction);
+        showDelayEnabledTransitionsCheckbox = addCheckboxMenuItem(viewMenu, showDelayEnabledTransitionsAction);
 
         showZeroToInfinityIntervalsCheckBox = addCheckboxMenuItem(viewMenu, showZeroToInfinityIntervals(), showZeroToInfinityIntervalsAction);
 
@@ -744,7 +678,7 @@
 
     private JMenu buildMenuAnimation() {
         /* Simulator */
-        JMenu animateMenu = new JMenu("Simulator");
+        animateMenu = new JMenu("Simulator");
         animateMenu.setMnemonic('A');
         animateMenu.add(startAction);
 
@@ -752,10 +686,6 @@
         animateMenu.add(stepbackwardAction);
         animateMenu.add(stepforwardAction);
 
-        animateMenu.add(timeAction);
-
-        animateMenu.add(delayFireAction);
-
         animateMenu.add(prevcomponentAction);
 
         animateMenu.add(nextcomponentAction);
@@ -878,25 +808,6 @@
         drawingToolBar.addSeparator();
         drawingToolBar.setRequestFocusEnabled(false);
 
-        // Normal arraw
-        drawingToolBar.add(new ToggleButtonWithoutText(selectAction));
-
-
-        // Drawing elements
-        drawingToolBar.addSeparator();
-        drawingToolBar.add(new ToggleButtonWithoutText(timedPlaceAction));
-        drawingToolBar.add(new ToggleButtonWithoutText(transAction));
-        drawingToolBar.add(new ToggleButtonWithoutText(timedArcAction));
-        drawingToolBar.add(new ToggleButtonWithoutText(transportArcAction));
-        drawingToolBar.add(new ToggleButtonWithoutText(inhibarcAction));
-
-        drawingToolBar.add(new ToggleButtonWithoutText(annotationAction));
-
-        // Tokens
-        drawingToolBar.addSeparator();
-        drawingToolBar.add(new ToggleButtonWithoutText(tokenAction));
-        drawingToolBar.add(new ToggleButtonWithoutText(deleteTokenAction));
-
         // Create panel to put toolbars in
         JPanel toolBarPanel = new JPanel();
         toolBarPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
@@ -1001,21 +912,10 @@
                 exportTraceAction.setEnabled(false);
                 importTraceAction.setEnabled(false);
 
-                timedPlaceAction.setEnabled(true);
-                timedArcAction.setEnabled(true);
-                inhibarcAction.setEnabled(true);
-                transportArcAction.setEnabled(true);
-
                 annotationAction.setEnabled(true);
-                transAction.setEnabled(true);
-                tokenAction.setEnabled(true);
                 deleteAction.setEnabled(true);
                 selectAllAction.setEnabled(true);
-                selectAction.setEnabled(true);
-                deleteTokenAction.setEnabled(true);
 
-                timeAction.setEnabled(false);
-                delayFireAction.setEnabled(false);
                 stepbackwardAction.setEnabled(false);
                 stepforwardAction.setEnabled(false);
                 prevcomponentAction.setEnabled(false);
@@ -1038,7 +938,6 @@
                     WorkflowDialog.showDialog();
                 }
 
-                statusBar.changeText(StatusBar.textforDrawing);
                 //Enable editor focus traversal policy
                 setFocusTraversalPolicy(new EditorFocusTraversalPolicy());
                 fixBug812694GrayMenuAfterSimulationOnMac();
@@ -1047,18 +946,9 @@
             case animation:
                 enableAllActions(true);
 
-                timedPlaceAction.setEnabled(false);
-                timedArcAction.setEnabled(false);
-                inhibarcAction.setEnabled(false);
-                transportArcAction.setEnabled(false);
-
                 annotationAction.setEnabled(false);
-                transAction.setEnabled(false);
-                tokenAction.setEnabled(false);
                 deleteAction.setEnabled(false);
                 selectAllAction.setEnabled(false);
-                selectAction.setEnabled(false);
-                deleteTokenAction.setEnabled(false);
 
                 alignToGrid.setEnabled(false);
 
@@ -1066,9 +956,6 @@
                 showConstantsAction.setEnabled(false);
                 showQueriesAction.setEnabled(false);
 
-                timeAction.setEnabled(true);
-
-                delayFireAction.setEnabled(true);
                 stepbackwardAction.setEnabled(true);
                 stepforwardAction.setEnabled(true);
                 prevcomponentAction.setEnabled(true);
@@ -1091,7 +978,6 @@
 
                 getCurrentTab().getAnimationController().requestFocusInWindow();
 
-                statusBar.changeText(StatusBar.textforAnimation);
                 //Enable simulator focus traversal policy
                 setFocusTraversalPolicy(new SimulatorFocusTraversalPolicy());
 
@@ -1101,21 +987,9 @@
                 importTraceAction.setEnabled(false);
                 verifyAction.setEnabled(false);
 
-                timedPlaceAction.setEnabled(false);
-                timedArcAction.setEnabled(false);
-                inhibarcAction.setEnabled(false);
-                transportArcAction.setEnabled(false);
-
                 annotationAction.setEnabled(false);
-                transAction.setEnabled(false);
-                tokenAction.setEnabled(false);
-                deleteAction.setEnabled(false);
                 selectAllAction.setEnabled(false);
-                selectAction.setEnabled(false);
-                deleteTokenAction.setEnabled(false);
 
-                timeAction.setEnabled(false);
-                delayFireAction.setEnabled(false);
                 stepbackwardAction.setEnabled(false);
                 stepforwardAction.setEnabled(false);
 
@@ -1135,7 +1009,7 @@
                 enableAllActions(false);
 
                 // Disable All Actions
-                statusBar.changeText(StatusBar.textforNoNet);
+                statusBar.changeText("Open a net to start editing");
                 setFocusTraversalPolicy(null);
 
                 break;
@@ -1262,6 +1136,9 @@
                 break;
             case noNet:
                 setFeatureInfoText(null);
+                registerDrawingActions(List.of());
+                registerAnimationActions(List.of());
+                //registerViewActions(List.of());
                 break;
 
             default:
@@ -1270,7 +1147,74 @@
 
         // Enable actions based on GUI mode
         enableGUIActions(mode);
-
+        if (currentTab != null) {
+            currentTab.ifPresent(o -> o.updateEnabledActions(mode));
+        }
+    }
+
+    @Override
+    public void registerDrawingActions(@NotNull List<GuiAction> drawActions) {
+
+        drawingToolBar.removeAll();
+        drawMenu.removeAll();
+
+        if (drawActions.size() > 0) {
+            drawMenu.setEnabled(true);
+            drawingToolBar.addSeparator();
+
+            for (GuiAction action : drawActions) {
+                drawingToolBar.add(new ToggleButtonWithoutText(action));
+                drawMenu.add(action);
+            }
+
+            drawingToolBar.addSeparator();
+            drawingToolBar.add(featureInfoText);
+        } else {
+            drawMenu.setEnabled(false);
+        }
+
+    }
+    @Override
+    public void registerAnimationActions(@NotNull List<GuiAction> animationActions) {
+
+        animateMenu.removeAll();
+
+        if (animationActions.size() > 0) {
+
+            animateMenu.setEnabled(true);
+            animateMenu.add(startAction);
+
+            animateMenu.add(stepbackwardAction);
+            animateMenu.add(stepforwardAction);
+
+            for (GuiAction action : animationActions) {
+                animateMenu.add(action);
+            }
+
+            animateMenu.add(prevcomponentAction);
+            animateMenu.add(nextcomponentAction);
+
+            animateMenu.addSeparator();
+            animateMenu.add(exportTraceAction);
+            animateMenu.add(importTraceAction);
+        } else {
+            animateMenu.setEnabled(false);
+        }
+    }
+
+    @Override
+    public void registerViewActions(@NotNull List<GuiAction> viewActions) {
+        //TODO: This is a temporary implementation until view actions can be moved to tab content
+
+        if (!getCurrentTab().getLens().isTimed()) {
+            showZeroToInfinityIntervalsCheckBox.setVisible(false);
+            showTokenAgeCheckBox.setVisible(false);
+            showDelayEnabledTransitionsCheckbox.setVisible(false);
+        } else {
+            showZeroToInfinityIntervalsCheckBox.setVisible(true);
+            showTokenAgeCheckBox.setVisible(true);
+            showDelayEnabledTransitionsCheckbox.setVisible(true);
+        }
     }
 
     private void fixBug812694GrayMenuAfterSimulationOnMac() {
@@ -1284,24 +1228,9 @@
         a.dispose();
     }
 
-    //XXX temp while refactoring, kyrke - 2019-07-25, should only be called from TabContent
     @Override
-    public void updateMode(Pipe.ElementType _mode) {
-
-        mode = _mode;
-
-        // deselect other actions
-        transAction.setSelected(mode == ElementType.TAPNTRANS);
-        timedPlaceAction.setSelected(mode == ElementType.TAPNPLACE);
-        timedArcAction.setSelected(mode == ElementType.TAPNARC);
-        transportArcAction.setSelected(mode == ElementType.TRANSPORTARC);
-        inhibarcAction.setSelected(mode == ElementType.TAPNINHIBITOR_ARC);
-        tokenAction.setSelected(mode == ElementType.ADDTOKEN);
-        deleteTokenAction.setSelected(mode == ElementType.DELTOKEN);
-        selectAction.setSelected(mode == ElementType.SELECT);
-        annotationAction.setSelected(mode == ElementType.ANNOTATION);
-
-        statusBar.changeText(mode);
+    public void setStatusBarText(String s) {
+        statusBar.changeText(Objects.requireNonNullElse(s, ""));
     }
 
 
@@ -1368,10 +1297,6 @@
         showTokenAgeAction.setSelected(b);
     }
 
-    public Pipe.ElementType getMode() {
-        return mode;
-    }
-
     public void setTitle(String title) {
         super.setTitle((title == null) ? frameTitle : frameTitle + ": " + title);
     }
@@ -1403,7 +1328,6 @@
         zoomComboBox.addActionListener(zoomComboListener);
     }
 
-
     private boolean canNetBeSavedAndShowMessage() {
         if (getCurrentTab().network().paintNet()) {
             return true;

=== modified file 'src/pipe/gui/GuiFrameActions.java'
--- src/pipe/gui/GuiFrameActions.java	2020-08-04 19:07:12 +0000
+++ src/pipe/gui/GuiFrameActions.java	2020-08-19 11:36:17 +0000
@@ -3,8 +3,10 @@
 import dk.aau.cs.gui.TabContent;
 import dk.aau.cs.gui.TabContentActions;
 import net.tapaal.helpers.Reference.Reference;
+import pipe.gui.action.GuiAction;
 
 import java.awt.*;
+import java.util.List;
 
 /**
  * Used to delegate control of the state of AppGUI to tabs
@@ -26,8 +28,13 @@
 
     void setGUIMode(GuiFrame.GUIMode animation);
 
-    //XXX temp while refactoring, kyrke - 2019-07-25
-    void updateMode(Pipe.ElementType mode);
+    void registerDrawingActions(List<GuiAction> drawActions);
+
+    void registerAnimationActions(List<GuiAction> animationActions);
+
+    void registerViewActions(List<GuiAction> viewActions);
+
+    void setStatusBarText(String s);
 
     void registerController(GuiFrameControllerActions guiFrameController, Reference<TabContentActions> currentTab);
 

=== modified file 'src/pipe/gui/GuiFrameController.java'
--- src/pipe/gui/GuiFrameController.java	2020-08-10 09:25:25 +0000
+++ src/pipe/gui/GuiFrameController.java	2020-08-19 11:36:17 +0000
@@ -85,7 +85,7 @@
 
         DelayEnabledTransitionControl.setDefaultDelayMode(prefs.getDelayEnabledTransitionDelayMode());
         DelayEnabledTransitionControl.setDefaultGranularity(prefs.getDelayEnabledTransitionGranularity());
-        DelayEnabledTransitionControl.setDefaultIsRandomTransition(prefs.getDelayEnabledTransitionIsRandomTransition());
+        SimulationControl.setDefaultIsRandomTransition(prefs.getDelayEnabledTransitionIsRandomTransition());
 
         showToolTips = prefs.getShowToolTips();
         setDisplayToolTips(showToolTips);
@@ -221,7 +221,7 @@
         prefs.setShowTokenAge(guiFrameDirectAccess.showTokenAge());
         prefs.setDelayEnabledTransitionDelayMode(DelayEnabledTransitionControl.getDefaultDelayMode());
         prefs.setDelayEnabledTransitionGranularity(DelayEnabledTransitionControl.getDefaultGranularity());
-        prefs.setDelayEnabledTransitionIsRandomTransition(DelayEnabledTransitionControl.isRandomTransition());
+        prefs.setDelayEnabledTransitionIsRandomTransition(SimulationControl.isRandomTransition());
 
         JOptionPane.showMessageDialog(guiFrameDirectAccess,
                 "The workspace has now been saved into your preferences.\n"
@@ -726,7 +726,7 @@
         //showDelayEnabledTransitions(advanced);
         DelayEnabledTransitionControl.getInstance().setValue(new BigDecimal("0.1"));
         DelayEnabledTransitionControl.getInstance().setDelayMode(ShortestDelayMode.getInstance());
-        DelayEnabledTransitionControl.getInstance().setRandomTransitionMode(false);
+        SimulationControl.getInstance().setRandomTransitionMode(false);
     }
 
 }

=== modified file 'src/pipe/gui/SimulationControl.java'
--- src/pipe/gui/SimulationControl.java	2020-06-21 11:16:52 +0000
+++ src/pipe/gui/SimulationControl.java	2020-08-19 11:36:17 +0000
@@ -22,9 +22,10 @@
 	
 	final JSlider simulationSpeed = new JSlider();
 	final JCheckBox randomSimulation = new JCheckBox("Enable automatic random simulation");
-	final Timer timer = new Timer(simulationSpeed.getValue()*20, e -> CreateGui.getCurrentTab().getTransitionFireingComponent().fireSelectedTransition());
-	
-	private static SimulationControl instance;
+    final JCheckBox randomMode = new JCheckBox("Choose next transition randomly");
+    final Timer timer = new Timer(simulationSpeed.getValue()*20, e -> CreateGui.getCurrentTab().getTransitionFireingComponent().fireSelectedTransition());
+    private static boolean defaultIsRandomTrasition;
+    private static SimulationControl instance;
 	
 	public static SimulationControl getInstance(){
 		if(instance == null){
@@ -62,13 +63,23 @@
 		gbc.gridx = 0;
 		gbc.gridy = 0;
 		add(randomSimulation, gbc);
-		
+
 		gbc = new GridBagConstraints();
+        gbc.anchor = GridBagConstraints.WEST;
+        gbc.fill = GridBagConstraints.HORIZONTAL;
+        gbc.weightx = 1.0;
+        gbc.gridx = 0;
+        gbc.gridy = 1;
+        add(randomMode, gbc);
+
+        setRandomTransitionMode(defaultIsRandomTrasition);
+
+        gbc = new GridBagConstraints();
 		gbc.anchor = GridBagConstraints.WEST;
 		gbc.fill = GridBagConstraints.HORIZONTAL;
 		gbc.weightx = 1.0;
 		gbc.gridx = 0;
-		gbc.gridy = 1;
+		gbc.gridy = 2;
 		add(new JLabel("Set simulation speed:"), gbc);
 		
 		gbc = new GridBagConstraints();
@@ -76,7 +87,7 @@
 		gbc.fill = GridBagConstraints.HORIZONTAL;
 		gbc.weightx = 1.0;
 		gbc.gridx = 0;
-		gbc.gridy = 2;
+		gbc.gridy = 3;
 		add(simulationSpeed, gbc);
 		
 		setBorder(BorderFactory.createCompoundBorder(
@@ -159,4 +170,26 @@
 		dialog.setLocation(x, y);
 		dialog.setVisible(true);
 	}
+
+    public boolean isRandomTransitionMode(){
+        if(SimulationControl.getInstance().randomSimulation()){
+            return true;
+        } else {
+            return randomMode.isSelected();
+        }
+    }
+
+    public void setRandomTransitionMode(boolean randomTransition){
+        randomMode.setSelected(randomTransition);
+    }
+    public static boolean isRandomTransition(){
+        if(instance != null){
+            return getInstance().isRandomTransitionMode();
+        } else {
+            return defaultIsRandomTrasition;
+        }
+    }
+    public static void setDefaultIsRandomTransition(boolean delayEnabledTransitionIsRandomTransition) {
+        defaultIsRandomTrasition = delayEnabledTransitionIsRandomTransition;
+    }
 }

=== modified file 'src/pipe/gui/StatusBar.java'
--- src/pipe/gui/StatusBar.java	2020-07-13 13:58:47 +0000
+++ src/pipe/gui/StatusBar.java	2020-08-19 11:36:17 +0000
@@ -8,41 +8,11 @@
 /* Status Bar to let users know what to do*/
 public class StatusBar extends JPanel {
 
-	/* Provides the appropriate text for the mode that the user is in */
-	public static final String textforNoNet = "Open a net to start editing";
-
-	public static final String textforDrawing = "Drawing Mode: Click on a button to start adding components to the "
-			+ "Editor";
-	public static final String textforPlace = "Place Mode: Right click on a place to see menu options "
-			+ "";
-	public static final String textforTAPNPlace = "Place Mode: Right click on a place to see menu options "
-			+ "";
-	public static final String textforTrans = "Transition Mode: Right click on a transition to see menu "
-			+ "options [Mouse wheel -> rotate]";
-	public static final String textforTimedTrans = "Timed Transition Mode: Right click on a transition to see menu "
-			+ "options [Mouse wheel -> rotate]";
-	public static final String textforAddtoken = "Add Token Mode: Click on a place to add a token";
-	public static final String textforDeltoken = "Delete Token Mode: Click on a place to delete a token ";
-	public static final String textforAnimation = "Simulation Mode: Red transitions are enabled, click a transition to "
-			+ "fire it";
-	public static final String textforArc = "Arc Mode: Right click on an arc to see menu options "
-			+ "";
-	public static final String textforTransportArc = "Transport Arc Mode: Right click on an arc to see menu options "
-			+ "";
-	public static final String textforInhibArc = "Inhibitor Mode: Right click on an arc to see menu options "
-			+ "";
-	public static final String textforMove = "Select Mode: Click/drag to select objects; drag to move them";
-	public static final String textforAnnotation = "Annotation Mode: Right click on an annotation to see menu options; "
-			+ "double click to edit";
-
-	public static final String textforDrag = "Drag Mode";
-
-
 	private final JLabel label;
 
 	public StatusBar() {
 		super();
-		label = new JLabel(textforDrawing); // got to put something in there
+		label = new JLabel("");
 		this.setLayout(new BorderLayout(0, 0));
 		this.add(label);
 	}
@@ -51,67 +21,6 @@
 		label.setText(newText);
 	}
 
-    public void changeText(Pipe.ElementType type) {
-        switch (type) {
-            case PLACE:
-                changeText(textforPlace);
-                break;
-
-            case TAPNPLACE:
-                changeText(textforTAPNPlace);
-                break;
-
-            case IMMTRANS:
-            case TAPNTRANS:
-                changeText(textforTrans);
-                break;
-
-            case TIMEDTRANS:
-                changeText(textforTimedTrans);
-                break;
-
-            case ARC:
-            case TAPNARC:
-                changeText(textforArc);
-                break;
-
-            case TRANSPORTARC:
-                changeText(textforTransportArc);
-                break;
-
-            case TAPNINHIBITOR_ARC:
-            case INHIBARC:
-                changeText(textforInhibArc);
-                break;
-
-            case ADDTOKEN:
-                changeText(textforAddtoken);
-                break;
-
-            case DELTOKEN:
-                changeText(textforDeltoken);
-                break;
-
-            case SELECT:
-                changeText(textforMove);
-                break;
-
-            case DRAW:
-                changeText(textforDrawing);
-                break;
-
-            case ANNOTATION:
-                changeText(textforAnnotation);
-                break;
-
-            case DRAG:
-                changeText(textforDrag);
-                break;
-
-            default:
-                changeText("To-do (textfor" + type);
-                break;
-        }
-    }
+
 
 }

=== modified file 'src/pipe/gui/action/GuiAction.java'
--- src/pipe/gui/action/GuiAction.java	2020-07-20 07:19:51 +0000
+++ src/pipe/gui/action/GuiAction.java	2020-08-19 11:36:17 +0000
@@ -109,4 +109,12 @@
 
 	}
 
+	public void setName(String newName){
+	    putValue(NAME, newName);
+    }
+
+    public void setTooltip(String newTooltip){
+        putValue(SHORT_DESCRIPTION, newTooltip);
+    }
+
 }

=== modified file 'src/pipe/gui/canvas/DrawingSurfaceImpl.java'
--- src/pipe/gui/canvas/DrawingSurfaceImpl.java	2020-08-10 06:46:22 +0000
+++ src/pipe/gui/canvas/DrawingSurfaceImpl.java	2020-08-19 11:36:17 +0000
@@ -412,7 +412,7 @@
 
 			if (SwingUtilities.isLeftMouseButton(e)) {
 
-				Pipe.ElementType mode = app.getMode();
+                Pipe.ElementType mode = CreateGui.guiMode;
 
 				switch (mode) {
 					case DRAG:
@@ -443,7 +443,7 @@
 				dragStart = null;
 				setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
 			}
-			if (app.getMode() == ElementType.SELECT) {
+            if (CreateGui.guiMode == ElementType.SELECT) {
 				getSelectionObject().dispatchEvent(e);
 			}
 		}
@@ -461,9 +461,9 @@
 			if (managerRef!=null && managerRef.get() != null) {
 				managerRef.get().drawingSurfaceMouseDragged(e);
 			}
-			if (dragStart != null) {
+            if (dragStart != null) {
 				view.drag(dragStart, e.getPoint());
-			} else if (app.getMode() == ElementType.SELECT) {
+			} else if (CreateGui.guiMode == ElementType.SELECT) {
 				getSelectionObject().dispatchEvent(e);
 			}
 		}

=== modified file 'src/pipe/gui/graphicElements/PetriNetObject.java'
--- src/pipe/gui/graphicElements/PetriNetObject.java	2020-06-30 06:41:30 +0000
+++ src/pipe/gui/graphicElements/PetriNetObject.java	2020-08-19 11:36:17 +0000
@@ -3,6 +3,8 @@
 import java.awt.Graphics;
 import java.awt.Rectangle;
 import java.awt.event.*;
+
+import dk.aau.cs.gui.TabContent;
 import pipe.dataLayer.DataLayer;
 import pipe.gui.canvas.DrawingSurfaceImpl;
 import pipe.gui.Pipe;
@@ -19,6 +21,7 @@
 	/** x/y position position on screen (zoomed) */
 	protected int positionX;
 	protected int positionY;
+	protected TabContent.TAPNLens lens = TabContent.TAPNLens.Default;
 
 	// The x/y coordinate of object at 100% zoom.
 	//XXX: pushed down from PlaceTransitionObject and consolidated from note, need further refactoring and rename, //kyrke 2019-08-23
@@ -285,6 +288,14 @@
 		return positionY;
 	}
 
+	public boolean isTimed(){
+	    return lens.isTimed();
+    }
+
+    public void setLens(TabContent.TAPNLens lens){
+	    this.lens = lens;
+    }
+
     @Override
     public GraphicalElement getGraphicalElement() {
         return this;

=== modified file 'src/pipe/gui/graphicElements/tapn/TimedInputArcComponent.java'
--- src/pipe/gui/graphicElements/tapn/TimedInputArcComponent.java	2020-07-20 07:19:51 +0000
+++ src/pipe/gui/graphicElements/tapn/TimedInputArcComponent.java	2020-08-19 11:36:17 +0000
@@ -2,6 +2,7 @@
 
 import java.util.Hashtable;
 
+import dk.aau.cs.gui.TabContent;
 import pipe.gui.CreateGui;
 import pipe.gui.Pipe;
 import pipe.gui.graphicElements.PlaceTransitionObject;
@@ -24,11 +25,12 @@
 		updateLabel(true);
 	}
 
-	public TimedInputArcComponent(PlaceTransitionObject source, PlaceTransitionObject target, TimedInputArc modelArc){
+	public TimedInputArcComponent(PlaceTransitionObject source, PlaceTransitionObject target, TimedInputArc modelArc, TabContent.TAPNLens lens){
 	    super(source);
 	    setTarget(target);
 	    setUnderlyingArc(modelArc);
 	    updateLabel(true);
+	    this.lens = lens;
 	    sealArc();
     }
 
@@ -37,6 +39,12 @@
 		updateLabel(true);
 	}
 
+    public TimedInputArcComponent(TimedOutputArcComponent arc, TabContent.TAPNLens lens) {
+        super(arc);
+        updateLabel(true);
+        this.lens = lens;
+    }
+
     @Override
 	protected void addMouseHandler() {
 		//XXX: kyrke 2018-09-06, this is bad as we leak "this", think its ok for now, as it alwas constructed when
@@ -82,7 +90,7 @@
         if (inputArc == null)
             getNameLabel().setText("");
         else {
-            if (!CreateGui.getApp().showZeroToInfinityIntervals()) {
+            if (!CreateGui.getApp().showZeroToInfinityIntervals() || !lens.isTimed()) {
                 if (inputArc.interval().toString(showConstantNames).equals("[0,inf)")){
                     getNameLabel().setText("");
                 }

=== modified file 'src/pipe/gui/graphicElements/tapn/TimedOutputArcComponent.java'
--- src/pipe/gui/graphicElements/tapn/TimedOutputArcComponent.java	2020-07-16 08:39:06 +0000
+++ src/pipe/gui/graphicElements/tapn/TimedOutputArcComponent.java	2020-08-19 11:36:17 +0000
@@ -51,6 +51,7 @@
 				Grid.getModifiedX((int) (arc.getNameLabel().getXPosition() + Zoomer.getZoomedValue(getNameOffsetX(), getZoom()))),
 				Grid.getModifiedY((int) (arc.getNameLabel().getYPosition() + Zoomer.getZoomedValue(getNameOffsetY(), getZoom())))
         );
+		this.lens = arc.lens;
 
 	}
 

=== modified file 'src/pipe/gui/graphicElements/tapn/TimedPlaceComponent.java'
--- src/pipe/gui/graphicElements/tapn/TimedPlaceComponent.java	2020-07-20 07:19:51 +0000
+++ src/pipe/gui/graphicElements/tapn/TimedPlaceComponent.java	2020-08-19 11:36:17 +0000
@@ -23,6 +23,7 @@
 import javax.swing.BoxLayout;
 import javax.swing.JTextArea;
 
+import dk.aau.cs.gui.TabContent;
 import pipe.gui.CreateGui;
 import pipe.gui.Pipe;
 import pipe.gui.graphicElements.Place;
@@ -49,11 +50,11 @@
 	private Window ageOfTokensWindow = new Window(new Frame());
 	private final Shape dashedOutline = createDashedOutline();
 
-	public TimedPlaceComponent(int positionXInput, int positionYInput, dk.aau.cs.model.tapn.TimedPlace place) {
+	public TimedPlaceComponent(int positionXInput, int positionYInput, dk.aau.cs.model.tapn.TimedPlace place, TabContent.TAPNLens lens) {
 		super(positionXInput, positionYInput);
 		this.place = place;
         this.place.addTimedPlaceListener(listener);
-
+        this.lens = lens;
 		attributesVisible = true;
 
     }
@@ -63,15 +64,17 @@
         int positionYInput,
         String idInput,
         int nameOffsetXInput,
-        int nameOffsetYInput
+        int nameOffsetYInput,
+        TabContent.TAPNLens lens
     ) {
 
 		super(positionXInput, positionYInput, idInput, nameOffsetXInput, nameOffsetYInput);
         attributesVisible = true;
+        this.lens = lens;
 
     }
 
-	@Override
+    @Override
 	protected void addMouseHandler() {
 		//XXX: kyrke 2018-09-06, this is bad as we leak "this", think its ok for now, as it alwas constructed when
 		//XXX: handler is called. Make static constructor and add handler from there, to make it safe.
@@ -173,7 +176,9 @@
 				}
 			}
         }
-
+        if(!lens.isTimed()){
+            drawDots = (marking > 0 && marking < 6);
+        }
         // structure sees how many markings there are and fills the place in
         // with the appropriate number or tokens.
         if(drawDots) {
@@ -277,7 +282,7 @@
 		}
 		
 		// Build interface
-		if (show) {
+		if (show && isTimed()) {
 			ageOfTokensWindow = new Window(new Frame());
 			ageOfTokensWindow.add(new JTextArea(getStringOfTokens()));
 			ageOfTokensWindow.getComponent(0).setBackground(Color.lightGray);
@@ -410,7 +415,7 @@
 	}
 
 	public TimedPlaceComponent copy(TimedArcPetriNet tapn) {
-		TimedPlaceComponent placeComponent = new TimedPlaceComponent(getOriginalX(), getOriginalY(), id, getNameOffsetX(), getNameOffsetY());
+		TimedPlaceComponent placeComponent = new TimedPlaceComponent(getOriginalX(), getOriginalY(), id, getNameOffsetX(), getNameOffsetY(), lens);
 		placeComponent.setUnderlyingPlace(tapn.getPlaceByName(place.name()));
 
 		return placeComponent;

=== modified file 'src/pipe/gui/graphicElements/tapn/TimedTransitionComponent.java'
--- src/pipe/gui/graphicElements/tapn/TimedTransitionComponent.java	2020-08-10 06:46:22 +0000
+++ src/pipe/gui/graphicElements/tapn/TimedTransitionComponent.java	2020-08-19 11:36:17 +0000
@@ -16,6 +16,7 @@
 import javax.swing.BoxLayout;
 import javax.swing.JTextArea;
 
+import dk.aau.cs.gui.TabContent;
 import pipe.gui.CreateGui;
 import pipe.gui.Pipe;
 import pipe.gui.graphicElements.Transition;
@@ -36,12 +37,13 @@
 	private final dk.aau.cs.model.tapn.event.TimedTransitionListener listener;
 	private GeneralPath dashedOutline;
 
-	public TimedTransitionComponent(int positionXInput, int positionYInput, dk.aau.cs.model.tapn.TimedTransition transition) {
+	public TimedTransitionComponent(int positionXInput, int positionYInput, dk.aau.cs.model.tapn.TimedTransition transition, TabContent.TAPNLens lens) {
 		super(positionXInput, positionYInput);
 		this.transition = transition;
 		listener = timedTransitionListener();
 		transition.addTimedTransitionListener(listener);
 		attributesVisible = true;
+		this.lens = lens;
 
 	}
 
@@ -54,7 +56,8 @@
         boolean timedTransition,
         boolean infServer,
         int angleInput,
-        int priority
+        int priority,
+        TabContent.TAPNLens lens
     ) {
 		super(
 		    positionXInput,
@@ -66,6 +69,7 @@
         );
 		listener = timedTransitionListener();
 		attributesVisible = true;
+        this.lens = lens;
 
 	}
 
@@ -222,7 +226,7 @@
 	}
 
 	public TimedTransitionComponent copy(TimedArcPetriNet tapn) {
-		TimedTransitionComponent transitionComponent = new TimedTransitionComponent(getOriginalX(), getOriginalY(), id, getNameOffsetX(), getNameOffsetY(), true, false, getAngle(), 0);
+		TimedTransitionComponent transitionComponent = new TimedTransitionComponent(getOriginalX(), getOriginalY(), id, getNameOffsetX(), getNameOffsetY(), true, false, getAngle(), 0, lens);
 		transitionComponent.setUnderlyingTransition(tapn.getTransitionByName(transition.name()));
 
 		return transitionComponent;
@@ -237,7 +241,7 @@
 		}
 		
 		// Build interface
-		if (show && (transition.getdInterval() != null)) {
+		if (show && (transition.getdInterval() != null) && isTimed()) {
 			dIntervalWindow = new Window(new Frame());
 			dIntervalWindow.add(new JTextArea(transition.getdInterval().toString()));
 			

=== modified file 'src/pipe/gui/handler/PetriNetObjectHandler.java'
--- src/pipe/gui/handler/PetriNetObjectHandler.java	2020-07-20 07:19:51 +0000
+++ src/pipe/gui/handler/PetriNetObjectHandler.java	2020-08-19 11:36:17 +0000
@@ -66,8 +66,8 @@
 	@Override
 	public void mousePressed(MouseEvent e) {
 		if(CreateGui.getCurrentTab().isInAnimationMode()) return;
-		
-		if (CreateGui.getApp().getMode() == ElementType.SELECT) {
+
+        if (CreateGui.guiMode == ElementType.SELECT) {
 			if (!myObject.isSelected()) {
 				if (!e.isShiftDown()) {
 					myObject.getParent().getSelectionObject().clearSelection();
@@ -92,7 +92,7 @@
 			return;
 		}
 
-		if (CreateGui.getApp().getMode() == ElementType.SELECT) {
+        if (CreateGui.guiMode == ElementType.SELECT) {
 			if (isDragging) {
 				isDragging = false;
 				CreateGui.getDrawingSurface().translateSelection(myObject.getParent().getSelectionObject().getSelection(), totalX, totalY);
@@ -124,7 +124,7 @@
 			return;
 		}
 
-		if (CreateGui.getApp().getMode() == ElementType.SELECT) {
+        if (CreateGui.guiMode == ElementType.SELECT) {
 			if (myObject.isDraggable()) {
 				if (!isDragging) {
 					isDragging = true;

=== modified file 'src/pipe/gui/widgets/GuardDialogue.java'
--- src/pipe/gui/widgets/GuardDialogue.java	2020-07-20 08:14:17 +0000
+++ src/pipe/gui/widgets/GuardDialogue.java	2020-08-19 11:36:17 +0000
@@ -27,6 +27,7 @@
 import javax.swing.SpinnerNumberModel;
 import javax.swing.event.ChangeEvent;
 
+import dk.aau.cs.gui.TabContent;
 import dk.aau.cs.model.tapn.*;
 import net.tapaal.swinghelpers.WidthAdjustingComboBox;
 import pipe.gui.CreateGui;
@@ -76,7 +77,10 @@
 		if(objectToBeEdited instanceof TimedInputArcComponent && !(objectToBeEdited instanceof TimedInhibitorArcComponent)){
 			initTimeGuardPanel();
 		}
-		
+        if(!objectToBeEdited.isTimed() ){
+            guardEditPanel.setVisible(false);
+        }
+
 		initWeightPanel();
 		initButtonPanel(objectToBeEdited);
 

=== modified file 'src/pipe/gui/widgets/PlaceEditorPanel.java'
--- src/pipe/gui/widgets/PlaceEditorPanel.java	2020-07-23 09:18:11 +0000
+++ src/pipe/gui/widgets/PlaceEditorPanel.java	2020-08-19 11:36:17 +0000
@@ -22,6 +22,7 @@
 import javax.swing.JSpinner;
 import javax.swing.event.ChangeListener;
 
+import dk.aau.cs.gui.TabContent;
 import net.tapaal.swinghelpers.CustomJSpinner;
 import net.tapaal.swinghelpers.GridBagHelper;
 import net.tapaal.swinghelpers.WidthAdjustingComboBox;
@@ -67,17 +68,26 @@
 	private final Context context;
 	private boolean makeNewShared = false;
 	private boolean doNewEdit = true;
+	private final TabContent currentTab;
 	
 	private Vector<TimedPlace> sharedPlaces;
 	private final int maxNumberOfPlacesToShowAtOnce = 20;
 
 	public PlaceEditorPanel(JRootPane rootPane, TimedPlaceComponent placeComponent, Context context) {
 		this.rootPane = rootPane;
+		currentTab = context.tabContent();
 		place = placeComponent;
 		this.context = context;
 		initComponents();
+		hideTimedInformation();
 	}
 
+	private void hideTimedInformation(){
+        if(!place.isTimed()) {
+            timeInvariantPanel.setVisible(false);
+        }
+    }
+
 	private void initComponents() {
 		setLayout(new java.awt.GridBagLayout());
 
@@ -90,6 +100,7 @@
 		gridBagConstraints = GridBagHelper.as(0,1, WEST, HORIZONTAL, new Insets(0, 8, 0, 8));
 		add(timeInvariantPanel, gridBagConstraints);
 
+
 		initButtonPanel();
 
 		gridBagConstraints = GridBagHelper.as(0,2, new Insets(0, 8, 5, 8));

=== modified file 'src/pipe/gui/widgets/QueryPane.java'
--- src/pipe/gui/widgets/QueryPane.java	2020-08-10 06:46:22 +0000
+++ src/pipe/gui/widgets/QueryPane.java	2020-08-19 11:36:17 +0000
@@ -372,7 +372,7 @@
 		TAPNQuery newQuery = null;
 
 		if(q.isActive()) {
-            if(q.getCategory() == TAPNQuery.QueryCategory.CTL) {
+            if(!tabContent.getLens().isTimed()) {
                 newQuery = CTLQueryDialog.showQueryDialogue(CTLQueryDialog.QueryDialogueOption.Save, q, tabContent.network(), tabContent.getGuiModels(), tabContent.getLens());
             } else {
                 newQuery = QueryDialog.showQueryDialogue(QueryDialogueOption.Save, q, tabContent.network(), tabContent.getGuiModels(), tabContent.getLens());

=== modified file 'src/pipe/gui/widgets/TAPNTransitionEditor.java'
--- src/pipe/gui/widgets/TAPNTransitionEditor.java	2020-08-10 06:46:22 +0000
+++ src/pipe/gui/widgets/TAPNTransitionEditor.java	2020-08-19 11:36:17 +0000
@@ -16,8 +16,6 @@
 import javax.swing.JRootPane;
 import javax.swing.JTextField;
 import javax.swing.event.CaretListener;
-
-
 import net.tapaal.swinghelpers.GridBagHelper;
 import dk.aau.cs.gui.undo.*;
 import net.tapaal.swinghelpers.WidthAdjustingComboBox;
@@ -52,10 +50,16 @@
 		transition = _transition;
 		this.context = context;
 		initComponents();
-
+        hideTimedInformation();
 		rootPane.setDefaultButton(okButton);
 	}
 
+	private void hideTimedInformation(){
+	    if(!transition.isTimed()) {
+            urgentCheckBox.setVisible(false);
+        }
+    }
+
 	private void initComponents() {
 		GridBagConstraints gridBagConstraints;
 

