Kaynağa Gözat

fixed some bugs with split-view

I. Dix 7 yıl önce
ebeveyn
işleme
dcbfe28156
2 değiştirilmiş dosya ile 56 ekleme ve 88 silme
  1. 20 25
      src/ui/view/GUI.java
  2. 36 63
      src/ui/view/MyCanvas.java

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

@@ -648,12 +648,9 @@ public class GUI<E> implements CategoryListener {
                 splitPaneCanvasConsole.setLeftComponent(tabbedPaneOriginal);
             } else {
                 for (int i = 0; i < tabbedPaneOriginal.getTabCount(); i++) {
+                    // add outer tabs
+                    // (inner tabs are added by tabbedPaneSplit changelistener)
                     tabbedPaneSplit.addTab(tabbedPaneOriginal.getTitleAt(i), null);
-                    if (i >= 4) {
-                        // tabbedPaneSplit.setTabComponentAt(tabbedPaneOriginal.getTabCount()
-                        // - 1,
-                        // new ButtonTabComponent(tabbedPaneOriginal, tabbedPaneSplit));
-                    }
                 }
                 if (tabbedPaneOriginal.getSelectedComponent() == statScrollPane) {
                     tabbedPaneOriginal.setComponentAt(0, null);
@@ -737,6 +734,7 @@ public class GUI<E> implements CategoryListener {
                 Component tempC = tabbedPaneOriginal.getComponentAt(tabbedPaneSplit.getSelectedIndex());
                 tabbedPaneOriginal.setComponentAt(tabbedPaneSplit.getSelectedIndex(), null);
                 tabbedPaneSplit.setComponentAt(tabbedPaneSplit.getSelectedIndex(), tempC);
+
                 for (int i = 0; i < tabbedPaneOriginal.getTabCount(); i++) {
                     if (tabbedPaneSplit.getComponentAt(i) != null && tabbedPaneSplit.getComponentAt(i) != tempC) {
                         tempC = tabbedPaneSplit.getComponentAt(i);
@@ -2097,10 +2095,6 @@ public class GUI<E> implements CategoryListener {
                 this.tabbedPaneInnerOriginal.setTabComponentAt(this.tabbedPaneInnerOriginal.getTabCount() - 1,
                         new ButtonTabComponent(this.tabbedPaneInnerOriginal, tabbedPaneSplit));
 
-                if (!initSplit && tabbedPaneSplit.getComponentCount() != 0) {
-                    JTabbedPane tabbedPaneInnerSplit = (JTabbedPane) tabbedPaneSplit.getComponentAt(0);
-                    tabbedPaneInnerSplit.add(temp.getName(), null);
-                }
             } else {
                 JTabbedPane tabbedPaneInnerSplit = (JTabbedPane) tabbedPaneSplit.getComponentAt(0);
                 tabbedPaneInnerSplit.add(temp.getName(), sp);
@@ -2119,11 +2113,11 @@ public class GUI<E> implements CategoryListener {
     }
 
     private void updateUpperNodes() {
-        System.out.println("updateUpperNodes");
-        for (Component comp : tabbedPaneOriginal.getComponents()) {
-            if (!(comp instanceof JScrollPane))
+        for (Component c : tabbedPaneInnerOriginal.getComponents()) {
+            if (!(c instanceof JScrollPane)) {
                 continue;
-            Component pane = ((JScrollPane) comp).getViewport().getComponent(0);
+            }
+            Component pane = ((JScrollPane) c).getViewport().getComponent(0);
             if (pane instanceof UpperNodeCanvas) {
                 temp = model.getHashcodeMap().get(((UpperNodeCanvas) pane).code);
                 ((UpperNodeCanvas) pane).upperNode = (CpsUpperNode) temp;
@@ -2138,28 +2132,29 @@ public class GUI<E> implements CategoryListener {
      * @param cps the CPS object that is currently selected
      */
     private void removeUpperNodeTab(AbstractCpsObject cps) {
-        System.out.println("removeUpperNodeTab");
         if (cps instanceof CpsUpperNode) {
             boolean splitView = false;
-            for (int i = 4; i < tabbedPaneOriginal.getTabCount(); i++) {
-                if (tabbedPaneOriginal.getComponentAt(i) == null) {
+            for (int i = 1; i < tabbedPaneInnerOriginal.getTabCount(); i++) {
+                JScrollPane scrollPaneOriginal = (JScrollPane) tabbedPaneInnerOriginal.getComponentAt(i);
+
+                if (scrollPaneOriginal == null) {
                     splitView = true;
-                } else if (((UpperNodeCanvas) ((JScrollPane) tabbedPaneOriginal.getComponentAt(i))
-                        .getViewport().getComponent(0)).upperNode.getId() == cps.getId()) {
-                    ((ButtonTabComponent) tabbedPaneOriginal.getTabComponentAt(i)).removeTabs();
+                } else if (((UpperNodeCanvas) scrollPaneOriginal.getViewport().getComponent(0)).upperNode.getId()
+                        == cps.getId()) {
+                    ((ButtonTabComponent) tabbedPaneInnerOriginal.getTabComponentAt(i)).removeTabs();
                     break;
                 }
             }
             // If SplitView is on and the view on
             // tabbedPaneSplit is the deleted upperNode
-            try {
-                if (splitView
-                        && ((UpperNodeCanvas) ((JScrollPane) tabbedPaneSplit.getSelectedComponent())
+            if (splitView && tabbedPaneSplit.getComponentCount() > 0) {
+                JTabbedPane tabbedPaneInnerSplit = (JTabbedPane) tabbedPaneSplit.getComponentAt(0);
+
+                if (((UpperNodeCanvas) ((JScrollPane) tabbedPaneInnerSplit.getSelectedComponent())
                         .getViewport().getComponent(0)).upperNode.getId() == cps.getId()) {
-                    ((ButtonTabComponent) tabbedPaneOriginal
-                            .getTabComponentAt(tabbedPaneSplit.getSelectedIndex())).removeTabs();
+                    ((ButtonTabComponent) tabbedPaneInnerOriginal
+                            .getTabComponentAt(tabbedPaneInnerSplit.getSelectedIndex())).removeTabs();
                 }
-            } catch (Exception e2) {
             }
         }
     }

+ 36 - 63
src/ui/view/MyCanvas.java

@@ -1,18 +1,15 @@
 package ui.view;
 
-import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Image;
-import java.awt.Point;
-import java.awt.RenderingHints;
+import classes.*;
+import com.google.gson.JsonParseException;
+import ui.controller.Control;
+import ui.controller.UpdateController;
+import ui.model.Model;
+
+import javax.swing.*;
+import java.awt.*;
 import java.awt.datatransfer.UnsupportedFlavorException;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
+import java.awt.event.*;
 import java.awt.geom.Line2D;
 import java.io.File;
 import java.io.IOException;
@@ -20,23 +17,6 @@ import java.util.ArrayList;
 import java.util.Timer;
 import java.util.TimerTask;
 
-import javax.swing.ImageIcon;
-import javax.swing.JLabel;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.JScrollPane;
-import javax.swing.JSplitPane;
-import javax.swing.JTabbedPane;
-
-import classes.*;
-import com.google.gson.JsonParseException;
-
-import ui.controller.Control;
-import ui.controller.UpdateController;
-import ui.model.Model;
-
 /**
  * This Class is the Canvas. All Objects will be visualized here
  *
@@ -45,59 +25,52 @@ import ui.model.Model;
 public class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 
     private static final long serialVersionUID = 1L;
-    private Image img = null; // Contains the image to draw on MyCanvas
-    private int x = 0;
-    private int y = 0;
+    public final JMenuItem itemPaste = new JMenuItem(Languages.getLanguage()[97]);
     // edge Object Start Point
     private final Model model;
     private final Control controller;
-    private Graphics2D g2; // For Painting
-    private int cx, cy;
-    private int sx, sy; // Mark Coords
     private final float scalediv20;
-    private Position unPos;
-    private ArrayList<Position> savePos;
     private final UpdateController updCon;
-
-    ArrayList<HolonElement> dataSelected = new ArrayList<>();
-    ArrayList<AbstractCpsObject> tempSelected = new ArrayList<>();
-
     private final boolean[] showedInformation = new boolean[5];
-    private boolean dragging = false; // for dragging
-    private boolean dragged = false; // if an object/objects was/were dragged
-    private boolean drawEdge = false; // for drawing edges
-    private boolean click = false; // for double click
-    private boolean doMark = false; // for double click
-    public AbstractCpsObject tempCps = null;
-    private CpsEdge edgeHighlight = null;
-
     // PopUpMenu
     private final JPopupMenu popmenu = new JPopupMenu();
     private final JMenuItem itemDelete = new JMenuItem(Languages.getLanguage()[98]);
     private final JMenuItem itemCut = new JMenuItem(Languages.getLanguage()[95]);
     private final JMenuItem itemCopy = new JMenuItem(Languages.getLanguage()[96]);
-    public final JMenuItem itemPaste = new JMenuItem(Languages.getLanguage()[97]);
     private final JMenuItem itemGroup = new JMenuItem(Languages.getLanguage()[99]);
     private final JMenuItem itemUngroup = new JMenuItem(Languages.getLanguage()[100]);
     private final JMenuItem itemTrack = new JMenuItem(Languages.getLanguage()[101]);
     private final JMenuItem itemUntrack = new JMenuItem(Languages.getLanguage()[102]);
-
+    private final Position toolTipPos = new Position(); // Tooltip Position
+    private final int ANIMTIME = 500; // animation Time
+    private final int animFPS = 60;
+    private final int animDelay = 1000 / animFPS; // animation Delay
+    public AbstractCpsObject tempCps = null;
+    ArrayList<HolonElement> dataSelected = new ArrayList<>();
+    ArrayList<AbstractCpsObject> tempSelected = new ArrayList<>();
+    private Image img = null; // Contains the image to draw on MyCanvas
+    private int x = 0;
+    private int y = 0;
+    private Graphics2D g2; // For Painting
+    private int cx, cy;
+    private int sx, sy; // Mark Coords
+    private Position unPos;
+    private ArrayList<Position> savePos;
+    private boolean dragging = false; // for dragging
+    private boolean dragged = false; // if an object/objects was/were dragged
+    private boolean drawEdge = false; // for drawing edges
+    private boolean click = false; // for double click
+    private boolean doMark = false; // for double click
+    private CpsEdge edgeHighlight = null;
+    // rightclicked
     // Tooltip
     private boolean toolTip; // Tooltip on or off
-    private final Position toolTipPos = new Position(); // Tooltip Position
     private String toolTipText = "";
-
     private Point mousePosition = new Point(); // Mouse Position when
-    // rightclicked
-
     // Animation Stuff
     private javax.swing.Timer animT; // animation Timer
-    private final int ANIMTIME = 500; // animation Time
-
     private ArrayList<AbstractCpsObject> animCps = null;
-    private final int animFPS = 60;
     private int animDuration = ANIMTIME; // animation Duration
-    private final int animDelay = 1000 / animFPS; // animation Delay
     private int animSteps = animDuration / animDelay; // animation Steps;
 
     // contains the value of the Capacity for new created Edges
@@ -197,11 +170,11 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 
         itemUngroup.addActionListener(actionEvent -> {
             // save old Position
-            JTabbedPane tabbedPane = (JTabbedPane) getParent().getParent().getParent();
-            for (int i = 4; i < tabbedPane.getTabCount(); i++) {
-                if (((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i)).getViewport()
+            JTabbedPane tabbedPaneInner = (JTabbedPane) getParent().getParent().getParent();
+            for (int i = 1; i < tabbedPaneInner.getTabCount(); i++) {
+                if (((UpperNodeCanvas) ((JScrollPane) tabbedPaneInner.getComponentAt(i)).getViewport()
                         .getComponent(0)).upperNode.getId() == tempCps.getId()) {
-                    tabbedPane.remove(i);
+                    tabbedPaneInner.remove(i);
                     break;
                 }
             }