Selaa lähdekoodia

view split progress, still very buggy

Kevin Trometer 7 vuotta sitten
vanhempi
commit
6d06d1da68
2 muutettua tiedostoa jossa 53 lisäystä ja 10 poistoa
  1. 4 1
      src/ui/view/ButtonTabComponent.java
  2. 49 9
      src/ui/view/GUI.java

+ 4 - 1
src/ui/view/ButtonTabComponent.java

@@ -43,14 +43,16 @@ import java.awt.event.*;
  */
 public class ButtonTabComponent extends JPanel {
     private final JTabbedPane pane;
+    private final JTabbedPane pane2;
  
-    public ButtonTabComponent(final JTabbedPane pane) {
+    public ButtonTabComponent(final JTabbedPane pane, final JTabbedPane pane2) {
         //unset default FlowLayout' gaps
         super(new FlowLayout(FlowLayout.LEFT, 0, 0));
         if (pane == null) {
             throw new NullPointerException("TabbedPane is null");
         }
         this.pane = pane;
+        this.pane2 = pane2;
         setOpaque(false);
          
         //make JLabel read titles from JTabbedPane
@@ -99,6 +101,7 @@ public class ButtonTabComponent extends JPanel {
             int i = pane.indexOfTabComponent(ButtonTabComponent.this);
             if (i != -1) {
                 pane.remove(i);
+                pane2.remove(i);
             }
         }
  

+ 49 - 9
src/ui/view/GUI.java

@@ -773,6 +773,10 @@ public class GUI<E> implements CategoryListener {
 				} else {
 					for (int i = 0; i < tabbedPane.getTabCount(); i++) {
 						tabbedPane2.addTab(tabbedPane.getTitleAt(i), null);
+						if (i >= 4) {
+							tabbedPane2.setTabComponentAt(tabbedPane.getTabCount() - 1,
+									new ButtonTabComponent(tabbedPane, tabbedPane2));
+						}
 					}
 					if (tabbedPane.getSelectedComponent() == statScrollPane) {
 						tabbedPane.setComponentAt(0, null);
@@ -2131,12 +2135,18 @@ public class GUI<E> implements CategoryListener {
 	 * Open a new Tab with an UpperNodeCanvas
 	 */
 	private void openNewUpperNodeTab() {
-
-		if (((JScrollPane) tabbedPane.getSelectedComponent()).getViewport().getComponent(0) instanceof MyCanvas) {
+		// is the uppernode on tabbedPane or tabbedPane2
+		JTabbedPane tabTemp;
+		if (tabbedPane.getMousePosition() != null) {
+			tabTemp = tabbedPane;
+		} else {
+			tabTemp = tabbedPane2;
+		}
+		if (((JScrollPane) tabTemp.getSelectedComponent()).getViewport().getComponent(0) instanceof MyCanvas) {
 			unc = new UpperNodeCanvas(model, controller, (CpsUpperNode) temp, "");
 		} else {
 			unc = new UpperNodeCanvas(model, controller, (CpsUpperNode) temp,
-					((UpperNodeCanvas) ((JScrollPane) tabbedPane.getSelectedComponent()).getViewport()
+					((UpperNodeCanvas) ((JScrollPane) tabTemp.getSelectedComponent()).getViewport()
 							.getComponent(0)).path + " -> ");
 		}
 		unc.setShowedInformation(canvas.getShowedInformation());
@@ -2144,11 +2154,17 @@ public class GUI<E> implements CategoryListener {
 		// check if tab already open for clicked NodeOfNode
 		boolean dupl = false;
 		for (int i = 4; i < tabbedPane.getTabCount() && dupl == false; i++) {
-			if (((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i)).getViewport().getComponent(0)).upperNode
-					.getId() == temp.getId()) {
+			if (tabbedPane.getComponentAt(i) != null && ((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i))
+					.getViewport().getComponent(0)).upperNode.getId() == temp.getId()) {
 				dupl = true;
 				tabbedPane.setSelectedComponent(tabbedPane.getComponentAt(i));
 			}
+			if (!initSplit && tabbedPane2.getComponentAt(i) != null
+					&& ((UpperNodeCanvas) ((JScrollPane) tabbedPane2.getComponentAt(i)).getViewport()
+							.getComponent(0)).upperNode.getId() == temp.getId()) {
+				dupl = true;
+				tabbedPane2.setSelectedComponent(tabbedPane2.getComponentAt(i));
+			}
 		}
 		if (!dupl) {
 			unc.setBorder(null);
@@ -2161,7 +2177,13 @@ public class GUI<E> implements CategoryListener {
 					unitGraph.empty();
 					holonEleNamesDisplayed = Languages.getLanguage()[25];
 					elementGraph.setText(holonEleNamesDisplayed);
-					temp = ((UpperNodeCanvas) ((JScrollPane) tabbedPane.getSelectedComponent()).getViewport()
+					JTabbedPane tabTemp;
+					if (tabbedPane.getMousePosition() != null) {
+						tabTemp = tabbedPane;
+					} else {
+						tabTemp = tabbedPane2;
+					}
+					temp = ((UpperNodeCanvas) ((JScrollPane) tabTemp.getSelectedComponent()).getViewport()
 							.getComponent(0)).tempCps;
 					if (doubleClick() && MouseEvent.BUTTON3 != e.getButton() && temp instanceof CpsUpperNode) {
 						openNewUpperNodeTab();
@@ -2175,9 +2197,27 @@ public class GUI<E> implements CategoryListener {
 
 			JScrollPane sp = new JScrollPane(unc);
 			sp.setBorder(null);
-			tabbedPane.add(temp.getName(), sp);
-			tabbedPane.setSelectedComponent(sp);
-			tabbedPane.setTabComponentAt(tabbedPane.getTabCount() - 1, new ButtonTabComponent(tabbedPane));
+			if (tabTemp == tabbedPane) {
+				tabbedPane.add(temp.getName(), sp);
+				tabbedPane.setSelectedComponent(sp);
+				tabbedPane.setTabComponentAt(tabbedPane.getTabCount() - 1,
+						new ButtonTabComponent(tabbedPane, tabbedPane2));
+				if (!initSplit) {
+					tabbedPane2.add(temp.getName(), null);
+					//tabbedPane2.setTabComponentAt(tabbedPane2.getTabCount() - 1,
+						//	new ButtonTabComponent(tabbedPane, tabbedPane2));
+				}
+			} else {
+				tabbedPane2.add(temp.getName(), sp);
+				tabbedPane2.setSelectedComponent(sp);
+				//tabbedPane2.setTabComponentAt(tabbedPane2.getTabCount() - 1,
+					//	new ButtonTabComponent(tabbedPane, tabbedPane2));
+
+				tabbedPane.add(temp.getName(), null);
+				tabbedPane.setTabComponentAt(tabbedPane.getTabCount() - 1,
+						new ButtonTabComponent(tabbedPane, tabbedPane2));
+			}
+
 			temp = null;
 		}
 	}