Browse Source

Fixes Menu -> Redo/Undo not closing invalid UpperNode Tabs

Andreas T. Meyer-Berg 6 years ago
parent
commit
eef2483102
1 changed files with 25 additions and 27 deletions
  1. 25 27
      src/ui/view/GUI.java

+ 25 - 27
src/ui/view/GUI.java

@@ -420,20 +420,7 @@ public class GUI implements CategoryListener {
 			public void actionPerformed(ActionEvent e) {
 				try {
 					controller.loadAutoSave(controller.getUndoSave());
-					/**
-					 * close bugged Tabs
-					 */
-					for (int i = 1; i < tabbedPaneInnerOriginal.getTabCount(); i++) {
-						JScrollPane scrollPaneOriginal = (JScrollPane) tabbedPaneInnerOriginal
-								.getComponentAt(i);
-						if (((UpperNodeCanvas) scrollPaneOriginal.getViewport()
-								.getComponent(0)).upperNode == null) {
-							((ButtonTabComponent) tabbedPaneInnerOriginal
-									.getTabComponentAt(i)).removeTabs();
-							break;
-						}
-					}
-					
+					closeInvalidUpperNodeTabs();
 					
 					controller.calculateStateForCurrentTimeStep();
 					canvas.repaint();
@@ -455,19 +442,8 @@ public class GUI implements CategoryListener {
 			public void actionPerformed(ActionEvent e) {
 				try {
 					controller.loadAutoSave(controller.getRedoSave());
-					/**
-					 * close bugged Tabs
-					 */
-					for (int i = 1; i < tabbedPaneInnerOriginal.getTabCount(); i++) {
-						JScrollPane scrollPaneOriginal = (JScrollPane) tabbedPaneInnerOriginal
-								.getComponentAt(i);
-						if (((UpperNodeCanvas) scrollPaneOriginal.getViewport()
-								.getComponent(0)).upperNode == null) {
-							((ButtonTabComponent) tabbedPaneInnerOriginal
-									.getTabComponentAt(i)).removeTabs();
-							break;
-						}
-					}
+
+					closeInvalidUpperNodeTabs();
 					
 					controller.calculateStateForCurrentTimeStep();
 					canvas.repaint();
@@ -2429,6 +2405,9 @@ public class GUI implements CategoryListener {
 			private void menuUndoActionPerformed() {
 				try {
 					controller.loadAutoSave(controller.getUndoSave());
+					
+					closeInvalidUpperNodeTabs();
+					
 					controller.calculateStateForCurrentTimeStep();
 					canvas.repaint();
 
@@ -2449,6 +2428,9 @@ public class GUI implements CategoryListener {
 			private void menuRedoActionPerformed() {
 				try {
 					controller.loadAutoSave(controller.getRedoSave());
+					
+					closeInvalidUpperNodeTabs();
+					
 					controller.calculateStateForCurrentTimeStep();
 					canvas.repaint();
 
@@ -3157,4 +3139,20 @@ public class GUI implements CategoryListener {
 	public void showHint(boolean enable){
 		lblHint.setVisible(enable);
 	}
+	
+	private void closeInvalidUpperNodeTabs() {
+		/**
+		 * close bugged Tabs
+		 */
+		for (int i = 1; i < tabbedPaneInnerOriginal.getTabCount(); i++) {
+			JScrollPane scrollPaneOriginal = (JScrollPane) tabbedPaneInnerOriginal
+					.getComponentAt(i);
+			if (((UpperNodeCanvas) scrollPaneOriginal.getViewport()
+					.getComponent(0)).upperNode == null) {
+				((ButtonTabComponent) tabbedPaneInnerOriginal
+						.getTabComponentAt(i)).removeTabs();
+				break;
+			}
+		}
+	}
 }