[Git][java-team/filius][master] 4 commits: New upstream version 2.13.0+ds

Andreas B. Mundt (@andi) gitlab at salsa.debian.org
Sun Jun 21 20:24:11 BST 2026



Andreas B. Mundt pushed to branch master at Debian Java Maintainers / filius


Commits:
2cf51f4a by Andreas B. Mundt at 2026-06-21T10:24:10+02:00
New upstream version 2.13.0+ds
- - - - -
153076f9 by Andreas B. Mundt at 2026-06-21T10:24:10+02:00
Update upstream source from tag 'upstream/2.13.0+ds'

Update to upstream version '2.13.0+ds'
with Debian dir ab0827e331c44e77e45ce146ce4116c7b2eb5a34
- - - - -
055e7b1b by Andreas B. Mundt at 2026-06-21T21:10:39+02:00
Adapt desktop icon installation to upstream fix

- - - - -
c6e700f0 by Andreas B. Mundt at 2026-06-21T21:12:13+02:00
Prepare release

- - - - -


26 changed files:

- Changelog.md
- debian/changelog
- debian/filius.install
- pom.xml
- src/deb/filius.desktop
- + src/deb/icons/hicolor/32x32/apps/filius.png
- + src/deb/icons/hicolor/64x64/apps/filius.png
- + src/deb/icons/hicolor/96x96/apps/filius.png
- src/main/java/filius/Main.java
- src/main/java/filius/gui/GUIContainer.java
- src/main/java/filius/gui/InfoDialog.java
- src/main/java/filius/gui/SatViewerControl.java
- src/main/java/filius/gui/anwendungssicht/GUIDesktopWindow.java
- src/main/java/filius/gui/anwendungssicht/SatViewer.java
- src/main/java/filius/gui/nachrichtensicht/AggregatedExchangeDialog.java
- src/main/java/filius/gui/nachrichtensicht/AggregatedMessageTable.java
- src/main/java/filius/gui/nachrichtensicht/LayeredExchangeDialog.java
- src/main/java/filius/gui/netzwerksicht/JConnectionsDialog.java
- src/main/java/filius/gui/netzwerksicht/JDHCPKonfiguration.java
- src/main/java/filius/gui/netzwerksicht/JFirewallDialog.java
- src/main/java/filius/gui/netzwerksicht/JGatewayConfiguration.java
- src/main/java/filius/gui/netzwerksicht/JPortForwardingDialog.java
- src/main/java/filius/gui/netzwerksicht/JVermittlungsrechnerKonfiguration.java
- src/main/java/filius/gui/quelltextsicht/FrameSoftwareWizard.java
- src/main/java/filius/gui/schichtensicht/GlobalLayerPath.java
- src/main/java/filius/gui/schichtensicht/LayerPathDialog.java


Changes:

=====================================
Changelog.md
=====================================
@@ -1,5 +1,14 @@
 # Changelog Filius
 
+## [2.13.0] - 2026-06-20
+### Changed
+* Open new windows dialogs on same screen in multi-display environments
+* Provide scaled program icons for Linux
+
+### Fixed
+* Make program exit more robust in case of corrupted settings file
+* Show Filius icon on Linux when running
+
 ## [2.12.2] - 2026-06-12
 ### Fixed
 * Fix web browser for host os Windows


=====================================
debian/changelog
=====================================
@@ -1,3 +1,10 @@
+filius (2.13.0+ds-1) unstable; urgency=medium
+
+  * New upstream version 2.13.0+ds
+  * Adapt desktop icon installation to upstream fix
+
+ -- Andreas B. Mundt <andi at debian.org>  Sun, 21 Jun 2026 21:08:38 +0200
+
 filius (2.12.2+ds-1) unstable; urgency=medium
 
   * New upstream version 2.12.2+ds


=====================================
debian/filius.install
=====================================
@@ -2,7 +2,7 @@ debian/bin/filius                                       usr/bin/
 debian/upstream/com.gitlab.filius1.filius.metainfo.xml  usr/share/metainfo/
 src/deb/application-filius-project.xml  usr/share/mime/packages/
 src/deb/filius.desktop                  usr/share/applications/
-src/deb/filius32.png                    usr/share/icons/hicolor/32x32/apps/
+src/deb/icons                           usr/share/
 src/main/resources/config/*.txt         usr/share/filius/config/
 src/main/resources/config/filius.ini    etc/
 src/main/resources/hilfe                usr/share/filius/


=====================================
pom.xml
=====================================
@@ -2,10 +2,10 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>filius</groupId>
 	<artifactId>filius</artifactId>
-	<version>2.12.2</version>
+	<version>2.13.0</version>
 	<inceptionYear>2007</inceptionYear>
 	<properties>
-		<buildDate>12.06.2026</buildDate>
+		<buildDate>20.06.2026</buildDate>
 		<publisher>Stefan Freischlad</publisher>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<junit.version>4.13</junit.version>
@@ -512,9 +512,21 @@
 										</data>
 										<data>
 											<src>
-												${project.basedir}/src/deb/filius32.png</src>
+												${project.basedir}/src/deb/icons/hicolor/32x32/apps/filius.png</src>
 											<type>file</type>
-											<dst>/usr/share/icons/hicolor/32x32/filius.png</dst>
+											<dst>/usr/share/icons/hicolor/32x32/apps/filius.png</dst>
+										</data>
+										<data>
+											<src>
+												${project.basedir}/src/deb/icons/hicolor/64x64/apps/filius.png</src>
+											<type>file</type>
+											<dst>/usr/share/icons/hicolor/64x64/apps/filius.png</dst>
+										</data>
+										<data>
+											<src>
+												${project.basedir}/src/deb/icons/hicolor/96x96/apps/filius.png</src>
+											<type>file</type>
+											<dst>/usr/share/icons/hicolor/96x96/apps/filius.png</dst>
 										</data>
 										<data>
 											<src>


=====================================
src/deb/filius.desktop
=====================================
@@ -11,6 +11,7 @@ Terminal=false
 Type=Application
 Categories=Education;Science;
 StartupNotify=false
+StartupWMClass=filius-Main
 MimeType=application/filius-project
 Keywords=network;simulation;internet;school;education
 Keywords[de]=Netzwerk;Simulation;Internet;Schule;Bildung


=====================================
src/deb/icons/hicolor/32x32/apps/filius.png
=====================================
Binary files /dev/null and b/src/deb/icons/hicolor/32x32/apps/filius.png differ


=====================================
src/deb/icons/hicolor/64x64/apps/filius.png
=====================================
Binary files /dev/null and b/src/deb/icons/hicolor/64x64/apps/filius.png differ


=====================================
src/deb/icons/hicolor/96x96/apps/filius.png
=====================================
Binary files /dev/null and b/src/deb/icons/hicolor/96x96/apps/filius.png differ


=====================================
src/main/java/filius/Main.java
=====================================
@@ -226,8 +226,8 @@ public class Main implements I18n {
             programmKonfig = new Object[8];
             programmKonfig[0] = JMainFrame.getJMainFrame().getBounds();
             programmKonfig[1] = SzenarioVerwaltung.getInstance().holePfad();
-            programmKonfig[2] = Information.getInformation().getLocale().getLanguage();
-            programmKonfig[3] = Information.getInformation().getLocale().getCountry();
+            programmKonfig[2] = Information.getInformation().getLocaleOrDefault().getLanguage();
+            programmKonfig[3] = Information.getInformation().getLocaleOrDefault().getCountry();
             programmKonfig[4] = Information.getInformation().getLastOpenedDirectory();
             programmKonfig[5] = SzenarioVerwaltung.getInstance().istGeaendert();
             programmKonfig[6] = Information.getInformation().getIconMode().toString();
@@ -320,4 +320,4 @@ public class Main implements I18n {
         }
     }
 
-}
\ No newline at end of file
+}


=====================================
src/main/java/filius/gui/GUIContainer.java
=====================================
@@ -25,14 +25,7 @@
  */
 package filius.gui;
 
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.Cursor;
-import java.awt.Dimension;
-import java.awt.FileDialog;
-import java.awt.Graphics;
-import java.awt.Point;
-import java.awt.Toolkit;
+import java.awt.*;
 import java.awt.event.MouseEvent;
 import java.awt.image.BufferedImage;
 import java.io.File;
@@ -163,7 +156,7 @@ public class GUIContainer implements Serializable, I18n {
 
     private JBackgroundPanel simulationBackgroundPanel = new JBackgroundPanel();
     private JScrollPane simulationView;
-    private List<GUIDesktopWindow> desktopWindowList = new LinkedList<GUIDesktopWindow>();
+    private Set<GUIDesktopWindow> desktopWindowList = new HashSet<>();
     private boolean lastVisibilityStateLauscher;
 
     /** enthält einen Integerwert dafür welche Ansicht gerade aktiv ist */
@@ -573,7 +566,6 @@ public class GUIContainer implements Serializable, I18n {
      * 
      * @author Johannes Bade & Thomas Gerding
      * 
-     * @param komponente
      * @param x
      * @param y
      * @return boolean
@@ -913,72 +905,73 @@ public class GUIContainer implements Serializable, I18n {
     public void showDesktop(GUIKnotenItem hardwareItem) {
         ListIterator<GUIDesktopWindow> it;
         Betriebssystem bs;
-        GUIDesktopWindow tmpDesktop = null;
         boolean fertig = false;
 
         if (hardwareItem != null && hardwareItem.getKnoten() instanceof Host) {
             bs = (Betriebssystem) ((Host) hardwareItem.getKnoten()).getSystemSoftware();
 
-            it = desktopWindowList.listIterator();
-            while (!fertig && it.hasNext()) {
-                tmpDesktop = it.next();
-                if (bs == tmpDesktop.getBetriebssystem()) {
-                    tmpDesktop.setVisible(true);
+            for (GUIDesktopWindow desktop : desktopWindowList) {
+                if (bs == desktop.getBetriebssystem()) {
+                    desktop.setVisible(true);
                     fertig = true;
                 }
             }
-
             if (!fertig) {
-                tmpDesktop = new GUIDesktopWindow(bs);
+                GUIDesktopWindow tmpDesktop = new GUIDesktopWindow(bs);
                 setDesktopPos(tmpDesktop);
                 tmpDesktop.setVisible(true);
                 tmpDesktop.toFront();
                 fertig = true;
-            }
-
-            if (tmpDesktop != null) {
-                this.desktopWindowList.add(tmpDesktop);
+                desktopWindowList.add(tmpDesktop);
             }
         }
     }
 
     private void setDesktopPos(GUIDesktopWindow tmpDesktop) {
-        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        GraphicsConfiguration gc = JMainFrame.getJMainFrame().getGraphicsConfiguration();
+        Rectangle screenSize = gc.getBounds();
+        LOG.debug("current monitor bounds: {}", screenSize.toString());
         Dimension desktopSize = tmpDesktop.getSize();
         int numberOfDesktopsPerRow = (int) (screenSize.getWidth() / desktopSize.getWidth());
         int numberOfDesktopsPerColumn = (int) (screenSize.getHeight() / desktopSize.getHeight());
         int totalNumberOfDesktops = numberOfDesktopsPerRow * numberOfDesktopsPerColumn;
-        int xPos = MIN_DESKTOP_SPACING;
-        int yPos = MIN_DESKTOP_SPACING;
+        int xPos = (int)screenSize.getX() + MIN_DESKTOP_SPACING;
+        int yPos = (int)screenSize.getY() + MIN_DESKTOP_SPACING;
         if (desktopWindowList.size() < totalNumberOfDesktops
                 && !Information.getDesktopWindowMode().equals(GUIDesktopWindow.Mode.STACK)) {
+            LOG.debug("Use tile alignment for desktop windows.");
             if (Information.getDesktopWindowMode().equals(GUIDesktopWindow.Mode.COLUMN)) {
-                xPos = MIN_DESKTOP_SPACING
-                        + (desktopWindowList.size() / numberOfDesktopsPerColumn) * (int) desktopSize.getWidth();
-                yPos = MIN_DESKTOP_SPACING
-                        + (desktopWindowList.size() % numberOfDesktopsPerColumn) * (int) desktopSize.getHeight();
+                xPos += (desktopWindowList.size() / numberOfDesktopsPerColumn) * (int) desktopSize.getWidth();
+                yPos += (desktopWindowList.size() % numberOfDesktopsPerColumn) * (int) desktopSize.getHeight();
             } else {
-                xPos = MIN_DESKTOP_SPACING
-                        + (desktopWindowList.size() % numberOfDesktopsPerRow) * (int) desktopSize.getWidth();
-                yPos = MIN_DESKTOP_SPACING
-                        + (desktopWindowList.size() / numberOfDesktopsPerRow) * (int) desktopSize.getHeight();
+                xPos += (desktopWindowList.size() % numberOfDesktopsPerRow) * (int) desktopSize.getWidth();
+                yPos += (desktopWindowList.size() / numberOfDesktopsPerRow) * (int) desktopSize.getHeight();
             }
         } else {
+            LOG.debug("Use stack alignment for desktop windows.");
             int overlappingDesktops = Information.getDesktopWindowMode().equals(GUIDesktopWindow.Mode.STACK)
                     ? desktopWindowList.size()
                     : desktopWindowList.size() - totalNumberOfDesktops;
-            xPos = (overlappingDesktops + 1) * 20;
-            yPos = (overlappingDesktops + 1) * 20;
-            if (xPos + desktopSize.getWidth() > screenSize.getWidth()) {
-                xPos = MIN_DESKTOP_SPACING;
+            LOG.debug("overlapping desktops: " + overlappingDesktops);
+            int relXPos = (overlappingDesktops + 1) * 20;
+            int relYPos = (overlappingDesktops + 1) * 20;
+            if (xPos + relXPos + desktopSize.getWidth() <= screenSize.getX() + screenSize.getWidth()) {
+                LOG.debug("shift new desktop window. relXPos: " + relXPos);
+                xPos += relXPos;
             }
-            if (yPos + desktopSize.getHeight() > screenSize.getHeight()) {
-                yPos = MIN_DESKTOP_SPACING;
+            if (yPos + relYPos + desktopSize.getHeight() <= screenSize.getY() + screenSize.getHeight()) {
+                LOG.debug("shift new desktop window. relYPos: " + relYPos);
+                yPos += relYPos;
             }
         }
         tmpDesktop.setBounds(xPos, yPos, tmpDesktop.getWidth(), tmpDesktop.getHeight());
     }
 
+    public void removeDesktopWindow(GUIDesktopWindow tmpDesktop) {
+        LOG.debug("remove desktop window: " + desktopWindowList.contains(tmpDesktop));
+        desktopWindowList.remove(tmpDesktop);
+    }
+
     public void closeDialogs() {
         visibleSystems.clear();
         for (GUIDesktopWindow window : desktopWindowList) {


=====================================
src/main/java/filius/gui/InfoDialog.java
=====================================
@@ -1,9 +1,9 @@
 /*
  ** This file is part of Filius, a network construction and simulation software.
- ** 
+ **
  ** Originally created at the University of Siegen, Institute "Didactics of
  ** Informatics and E-Learning" by a students' project group:
- **     members (2006-2007): 
+ **     members (2006-2007):
  **         André Asschoff, Johannes Bade, Carsten Dittich, Thomas Gerding,
  **         Nadja Haßler, Ernst Johannes Klebert, Michell Weyer
  **     supervisors:
@@ -14,12 +14,12 @@
  ** it under the terms of the GNU General Public License as published by
  ** the Free Software Foundation, either version 2 of the License, or
  ** (at your option) version 3.
- ** 
+ **
  ** Filius is distributed in the hope that it will be useful,
  ** but WITHOUT ANY WARRANTY; without even the implied
  ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  ** PURPOSE. See the GNU General Public License for more details.
- ** 
+ **
  ** You should have received a copy of the GNU General Public License
  ** along with Filius.  If not, see <http://www.gnu.org/licenses/>.
  */
@@ -66,13 +66,13 @@ public class InfoDialog extends JDialog implements I18n {
 
     /**
      * This method initializes this
-     * 
+     *
      * @return void
      */
     private void initialize() {
         this.setSize(350, 580);
-        setLocation((getToolkit().getScreenSize().width - getWidth()) / 2,
-                (getToolkit().getScreenSize().height - getHeight()) / 2);
+        setLocation(getParent().getX() + (getParent().getWidth() - getWidth()) / 2,
+            getParent().getY() + (getParent().getHeight() - getHeight()) / 2);
         this.setForeground(Color.blue);
         this.setTitle(messages.getString("infodialog_msg1"));
         this.setContentPane(getJContentPane());
@@ -80,7 +80,7 @@ public class InfoDialog extends JDialog implements I18n {
 
     /**
      * This method initializes jContentPane
-     * 
+     *
      * @return javax.swing.JPanel
      */
     private JPanel getJContentPane() {
@@ -115,20 +115,20 @@ public class InfoDialog extends JDialog implements I18n {
 
             personen = new JLabel();
             personen.setText("<html>" + "<b>" + messages.getString("infodialog_msg3") + "</b>"
-                    + "<p> André Asschoff, " + "Johannes Bade, " + "Carsten Dittich, " + "Thomas Gerding, "
-                    + "Nadja Haßler, " + "Ernst Johannes Klebert, " + "Michell Weyer </p>" + "<b>"
-                    + messages.getString("infodialog_msg4") + "</b>" + "<p> Stefan Freischlad, " + "Peer Stechert </p>"
-                    + "<b>" + messages.getString("infodialog_msg11")
-                    + "</b><p>Matthias Brauer, Christian Eibl, Christoph Irniger, Detlef Justen, Andreas B. Mundt, Patrice Treton, pyropeter</p>"
-                    + "</html>");
+                + "<p> André Asschoff, " + "Johannes Bade, " + "Carsten Dittich, " + "Thomas Gerding, "
+                + "Nadja Haßler, " + "Ernst Johannes Klebert, " + "Michell Weyer </p>" + "<b>"
+                + messages.getString("infodialog_msg4") + "</b>" + "<p> Stefan Freischlad, " + "Peer Stechert </p>"
+                + "<b>" + messages.getString("infodialog_msg11")
+                + "</b><p>Matthias Brauer, Christian Eibl, Christoph Irniger, Detlef Justen, Andreas B. Mundt, Patrice Treton, pyropeter</p>"
+                + "</html>");
             personen.setVerticalAlignment(SwingConstants.TOP);
             personen.setForeground(Color.WHITE);
             personen.setFont(new Font("Dialog", Font.PLAIN, 12));
             personen.setPreferredSize(new Dimension(270, 180));
             maintainer = new JLabel();
             maintainer.setText("<html>" + "<b>" + messages.getString("infodialog_msg5") + "</b>" + "<p>"
-                    + "Stefan Freischlad <br/> </p>" + "<p>" + messages.getString("infodialog_msg8") + "<br/>"
-                    + " https://www.lernsoftware-filius.de." + "</p></html>");
+                + "Stefan Freischlad <br/> </p>" + "<p>" + messages.getString("infodialog_msg8") + "<br/>"
+                + " https://www.lernsoftware-filius.de." + "</p></html>");
             maintainer.setVerticalAlignment(SwingConstants.TOP);
             maintainer.setForeground(Color.WHITE);
             maintainer.setFont(new Font("Dialog", Font.PLAIN, 12));
@@ -136,8 +136,8 @@ public class InfoDialog extends JDialog implements I18n {
 
             version = new JLabel();
             version.setText("<html><center><p><b>" + messages.getString("infodialog_msg6") + " "
-                    + Information.getVersion() + "</b></p><br/><p><small>" + messages.getString("infodialog_msg10")
-                    + "</small></p></center></html>");
+                + Information.getVersion() + "</b></p><br/><p><small>" + messages.getString("infodialog_msg10")
+                + "</small></p></center></html>");
             version.setFont(new Font("Dialog", Font.PLAIN, 12));
             version.setForeground(Color.WHITE);
             version.setVerticalAlignment(SwingConstants.TOP);


=====================================
src/main/java/filius/gui/SatViewerControl.java
=====================================
@@ -62,16 +62,15 @@ public class SatViewerControl implements I18n {
     }
 
     public void showViewer(Switch sw) {
-        if (!satViewer.containsKey(sw.getSystemSoftware())) {
-            SatViewer viewer = new SatViewer(sw);
-            viewer.setLocation(
-                    JMainFrame.getJMainFrame().getX() + (JMainFrame.getJMainFrame().getWidth() - viewer.getWidth()) / 2,
-                    JMainFrame.getJMainFrame().getY()
-                            + (JMainFrame.getJMainFrame().getHeight() - viewer.getHeight()) / 2);
+        SatViewer viewer = satViewer.get(sw.getSystemSoftware());
+        if (null == viewer) {
+            viewer = new SatViewer(sw);
             sw.getSystemSoftware().addPropertyChangeListener(viewer);
             satViewer.put(sw.getSystemSoftware(), viewer);
+        } else {
+            viewer.resetSizeAndPosition();
         }
-        satViewer.get(sw.getSystemSoftware()).setVisible(true);
+        viewer.setVisible(true);
     }
 
     public void removeViewer(SystemSoftware systemSoftware) {


=====================================
src/main/java/filius/gui/anwendungssicht/GUIDesktopWindow.java
=====================================
@@ -28,12 +28,15 @@ package filius.gui.anwendungssicht;
 import static filius.gui.anwendungssicht.GUIDesktopPanel.HEIGHT_OVERALL;
 import static filius.gui.anwendungssicht.GUIDesktopPanel.PANEL_WIDTH;
 
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
 import java.util.Observable;
 import java.util.Observer;
 
 import javax.swing.ImageIcon;
 import javax.swing.JFrame;
 
+import filius.gui.GUIContainer;
 import filius.gui.JMainFrame;
 import filius.gui.netzwerksicht.GUIDesignSidebar;
 import filius.hardware.Hardware;
@@ -43,10 +46,13 @@ import filius.hardware.knoten.Rechner;
 import filius.rahmenprogramm.IconMode;
 import filius.rahmenprogramm.Information;
 import filius.software.system.Betriebssystem;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({ "serial", "deprecation" })
 public class GUIDesktopWindow extends JFrame implements Observer {
-    private GUIDesktopPanel desktopPanel;
+    private static final Logger LOG = LoggerFactory.getLogger(GUIDesktopWindow.class);
+    private final GUIDesktopPanel desktopPanel;
 
     public enum Mode {
         ROW(0), COLUMN(1), STACK(2);
@@ -94,6 +100,14 @@ public class GUIDesktopWindow extends JFrame implements Observer {
 
         desktopPanel = new GUIDesktopPanel(bs);
         getContentPane().add(desktopPanel);
+
+        addWindowListener(new WindowAdapter() {
+            @Override
+            public void windowClosing(WindowEvent e) {
+                LOG.debug("Desktop window closed");
+                GUIContainer.getGUIContainer().removeDesktopWindow(GUIDesktopWindow.this);
+            }
+        });
     }
 
     public void setVisible(boolean flag) {


=====================================
src/main/java/filius/gui/anwendungssicht/SatViewer.java
=====================================
@@ -48,7 +48,7 @@ import filius.software.system.SwitchFirmware;
 @SuppressWarnings("serial")
 public class SatViewer extends JDialog implements I18n, PropertyChangeListener {
 
-    private Switch sw;
+    private final Switch sw;
     private DefaultTableModel dtm;
 
     public SatViewer(Switch sw) {
@@ -59,7 +59,7 @@ public class SatViewer extends JDialog implements I18n, PropertyChangeListener {
     }
 
     private void init() {
-        setBounds(100, 100, 400, 280);
+        resetSizeAndPosition();
 
         ImageIcon icon = new ImageIcon(getClass().getResource("/gfx/hardware/switch.png"));
         setIconImage(icon.getImage());
@@ -91,6 +91,12 @@ public class SatViewer extends JDialog implements I18n, PropertyChangeListener {
         getContentPane().add(spSAT);
     }
 
+    public void resetSizeAndPosition() {
+        this.setSize(400, 280);
+        setLocation(getParent().getX() + (getParent().getWidth() - getWidth()) / 2,
+            getParent().getY() + (getParent().getHeight() - getHeight()) / 2);
+    }
+
     public Switch getSwitch() {
         return sw;
     }
@@ -104,7 +110,7 @@ public class SatViewer extends JDialog implements I18n, PropertyChangeListener {
 
     @Override
     public void propertyChange(PropertyChangeEvent evt) {
-        if (evt.getPropertyName() == "sat_entry") {
+        if ("sat_entry".equals(evt.getPropertyName())) {
             updateSat();
         }
     }


=====================================
src/main/java/filius/gui/nachrichtensicht/AggregatedExchangeDialog.java
=====================================
@@ -67,7 +67,10 @@ public class AggregatedExchangeDialog extends JDialog implements ExchangeCompone
         setTitle(messages.getString("lauscherdialog_msg1"));
         int screenHeight = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
         int screenWidth = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
-        setBounds(1 * screenWidth / 8, screenHeight / 10, 3 * screenWidth / 4, 4 * screenHeight / 5);
+        setSize(3 * screenWidth / 4, 4 * screenHeight / 5);
+        setLocation(getParent().getX() + (getParent().getWidth() - getWidth()) / 2,
+            getParent().getY() + (getParent().getHeight() - getHeight()) / 2);
+
         image = Toolkit.getDefaultToolkit()
                 .getImage(getClass().getResource("/gfx/allgemein/nachrichtenfenster_icon.png"));
         setIconImage(image);


=====================================
src/main/java/filius/gui/nachrichtensicht/AggregatedMessageTable.java
=====================================
@@ -562,7 +562,7 @@ public class AggregatedMessageTable extends JTable implements LauscherBeobachter
     private void showLocalPathThroughLayers(SystemSoftware systemSoftware, int frameNumber) {
         LOG.trace("INVOKED (" + this.hashCode() + ") " + getClass()
                 + " (AggregatedMessageTable), showLocalPathThroughLayers()");
-        new LayerPathDialog(filius.gui.JMainFrame.getJMainFrame(), interfaceId, systemSoftware, frameNumber, null,
+        new LayerPathDialog(JMainFrame.getJMainFrame(), interfaceId, systemSoftware, frameNumber, null,
                 true);
     }
 
@@ -585,7 +585,7 @@ public class AggregatedMessageTable extends JTable implements LauscherBeobachter
                 .getFrame(interfaceId, frameNumber).getZielMacAdresse().equals(Ethernet.ETHERNET_BROADCAST)) {
             JOptionPane.showMessageDialog(JMainFrame.getJMainFrame(), messages.getString("nachrichtentabelle_msg12"));
         } else {
-            new GlobalLayerPath(filius.gui.JMainFrame.getJMainFrame(), interfaceId, systemSoftware, frameNumber);
+            new GlobalLayerPath(JMainFrame.getJMainFrame(), interfaceId, systemSoftware, frameNumber);
         }
     }
-}
\ No newline at end of file
+}


=====================================
src/main/java/filius/gui/nachrichtensicht/LayeredExchangeDialog.java
=====================================
@@ -79,8 +79,13 @@ public class LayeredExchangeDialog extends JDialog implements ExchangeComponent,
         Image image;
 
         setTitle(messages.getString("lauscherdialog_msg1"));
-        setBounds(20, (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight() - 350,
-                ((int) Toolkit.getDefaultToolkit().getScreenSize().getWidth()) - 40, 300);
+
+        int screenHeight = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
+        int screenWidth = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
+        setSize(3 * screenWidth / 4, 4 * screenHeight / 5);
+        setLocation(getParent().getX() + (getParent().getWidth() - getWidth()) / 2,
+            getParent().getY() + (getParent().getHeight() - getHeight()) / 2);
+
         image = Toolkit.getDefaultToolkit()
                 .getImage(getClass().getResource("/gfx/allgemein/nachrichtenfenster_icon.png"));
         setIconImage(image);


=====================================
src/main/java/filius/gui/netzwerksicht/JConnectionsDialog.java
=====================================
@@ -132,6 +132,12 @@ public class JConnectionsDialog extends JDialog implements I18n {
         this.internetSwitch = internetSwitch;
         initComponents();
 
+        // positioning and size
+        setSize(550, 580);
+        setResizable(true);
+        setLocation(getParent().getX() + (getParent().getWidth() - getWidth()) / 2,
+            getParent().getY() + (getParent().getHeight() - getHeight()) / 2);
+
         updateAll();
     }
 
@@ -238,7 +244,7 @@ public class JConnectionsDialog extends JDialog implements I18n {
         // upperCompound.setBackground(Color.GREEN);
         upperCompound.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
         upperCompound.setLayout(new BoxLayout(upperCompound, BoxLayout.X_AXIS));
-        upperCompound.setPreferredSize(new Dimension(700, 360));
+        upperCompound.setPreferredSize(new Dimension(500, 360));
 
         initRemoteInterfaces();
         initLocalInterfaces();
@@ -261,11 +267,11 @@ public class JConnectionsDialog extends JDialog implements I18n {
         usageNote.setLineWrap(true);
         usageNote.setWrapStyleWord(true);
         usageNote.setFont(new Font(Font.DIALOG, Font.PLAIN, 12));
-        usageNote.setSize(new Dimension(700, 200));
+        usageNote.setSize(new Dimension(500, 200));
         // usageNote.setBorder(BorderFactory.createLineBorder(Color.GRAY,2));
         noteCompound.add(Box.createVerticalGlue());
         noteCompound.add(usageNote, BorderLayout.CENTER);
-        noteCompound.setMinimumSize(new Dimension(700, 200));
+        noteCompound.setMinimumSize(new Dimension(500, 200));
 
         // - create main button area
         buttonCompound = new JPanel();


=====================================
src/main/java/filius/gui/netzwerksicht/JDHCPKonfiguration.java
=====================================
@@ -90,9 +90,8 @@ public class JDHCPKonfiguration extends JDialog implements I18n, ItemListener {
         this.setSize(380, 380);
         this.setResizable(true);
 
-        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
-        Point location = new Point((screen.width / 2) - 190, (screen.height / 2) - 140);
-        this.setLocation(location);
+        setLocation(getParent().getX() + (getParent().getWidth() - getWidth()) / 2,
+            getParent().getY() + (getParent().getHeight() - getHeight()) / 2);
 
         initComponents();
     }


=====================================
src/main/java/filius/gui/netzwerksicht/JFirewallDialog.java
=====================================
@@ -79,11 +79,16 @@ public class JFirewallDialog extends JDialog implements I18n {
     private JCheckBox dropICMP;
     private JCheckBox onlyFilterSYN;
 
-    public JFirewallDialog(Firewall firewall, JFrame dummyFrame) {
-        super(dummyFrame, messages.getString("jfirewalldialog_msg1"), true);
+    public JFirewallDialog(Firewall firewall, JFrame owner) {
+        super(owner, messages.getString("jfirewalldialog_msg1"), true);
         LOG.trace("INVOKED-2 (" + this.hashCode() + ") " + getClass() + ", constr: JFirewallDialog(" + firewall + ","
-                + dummyFrame + ")");
+                + owner + ")");
         this.firewall = firewall;
+
+        setSize(850, 340);
+        setLocation(getParent().getX() + (getParent().getWidth() - getWidth()) / 2,
+            getParent().getY() + (getParent().getHeight() - getHeight()) / 2);
+
         jfd = this;
         erzeugeFenster();
     }


=====================================
src/main/java/filius/gui/netzwerksicht/JGatewayConfiguration.java
=====================================
@@ -131,7 +131,6 @@ public class JGatewayConfiguration extends JKonfiguration implements I18n {
         Firewall firewall = ((GatewayFirmware) ((Gateway) holeHardware()).getSystemSoftware()).holeFirewall();
 
         JFirewallDialog firewallDialog = new JFirewallDialog(firewall, JMainFrame.getJMainFrame());
-        firewallDialog.setBounds(100, 100, 850, 340);
         firewallDialog.setName(messages.getString("jgatewayconfiguration_msg1"));
 
         firewallDialog.updateRuleTable();
@@ -142,7 +141,6 @@ public class JGatewayConfiguration extends JKonfiguration implements I18n {
         LinkedList<String[]> staticNat = ((GatewayFirmware) ((Gateway) holeHardware()).getSystemSoftware())
                 .getStaticNAT();
         portForwardingDialog = new JPortForwardingDialog(staticNat, JMainFrame.getJMainFrame());
-        portForwardingDialog.setBounds(100, 100, 550, 340);
         portForwardingDialog.setName(messages.getString("jgatewayconfiguration_msg19"));
 
         portForwardingDialog.createStaticTable();


=====================================
src/main/java/filius/gui/netzwerksicht/JPortForwardingDialog.java
=====================================
@@ -62,6 +62,11 @@ public class JPortForwardingDialog extends JDialog implements I18n {
         super(dummyFrame, messages.getString("jgatewayconfiguration_msg19"), true);
         LOG.trace("INVOKED-2 (" + this.hashCode() + ") " + getClass() + ", constr: JPortForwardingDialog(" + staticNat2 + ","
                 + dummyFrame + ")");
+
+        setSize(550, 340);
+        setLocation(getParent().getX() + (getParent().getWidth() - getWidth()) / 2,
+            getParent().getY() + (getParent().getHeight() - getHeight()) / 2);
+
         this.staticNat = staticNat2;
         jpfd = this;
         


=====================================
src/main/java/filius/gui/netzwerksicht/JVermittlungsrechnerKonfiguration.java
=====================================
@@ -1,9 +1,9 @@
 /*
  ** This file is part of Filius, a network construction and simulation software.
- ** 
+ **
  ** Originally created at the University of Siegen, Institute "Didactics of
  ** Informatics and E-Learning" by a students' project group:
- **     members (2006-2007): 
+ **     members (2006-2007):
  **         André Asschoff, Johannes Bade, Carsten Dittich, Thomas Gerding,
  **         Nadja Haßler, Ernst Johannes Klebert, Michell Weyer
  **     supervisors:
@@ -14,12 +14,12 @@
  ** it under the terms of the GNU General Public License as published by
  ** the Free Software Foundation, either version 2 of the License, or
  ** (at your option) version 3.
- ** 
+ **
  ** Filius is distributed in the hope that it will be useful,
  ** but WITHOUT ANY WARRANTY; without even the implied
  ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  ** PURPOSE. See the GNU General Public License for more details.
- ** 
+ **
  ** You should have received a copy of the GNU General Public License
  ** along with Filius.  If not, see <http://www.gnu.org/licenses/>.
  */
@@ -103,7 +103,7 @@ public class JVermittlungsrechnerKonfiguration extends JKonfiguration implements
 
     public void aenderungenAnnehmen() {
         LOG.trace("INVOKED (" + this.hashCode() + ") " + getClass()
-                + " (JVermittlungsrechnerKonfiguration), aenderungenAnnehmen()");
+            + " (JVermittlungsrechnerKonfiguration), aenderungenAnnehmen()");
 
         Vermittlungsrechner vRechner = (Vermittlungsrechner) holeHardware();
         VermittlungsrechnerBetriebssystem bs = (VermittlungsrechnerBetriebssystem) vRechner.getSystemSoftware();
@@ -134,13 +134,12 @@ public class JVermittlungsrechnerKonfiguration extends JKonfiguration implements
 
     private void showFirewallDialog() {
         LOG.trace("INVOKED (" + this.hashCode() + ") " + getClass()
-                + " (JVermittlungsrechnerKonfiguration), firewallDialogAnzeigen()");
+            + " (JVermittlungsrechnerKonfiguration), firewallDialogAnzeigen()");
 
         Firewall firewall = ((VermittlungsrechnerBetriebssystem) ((Vermittlungsrechner) holeHardware())
-                .getSystemSoftware()).holeFirewall();
+            .getSystemSoftware()).holeFirewall();
 
         JFirewallDialog firewallDialog = new JFirewallDialog(firewall, JMainFrame.getJMainFrame());
-        firewallDialog.setBounds(100, 100, 850, 340);
         firewallDialog.setName(messages.getString("jvermittlungsrechnerkonfiguration_msg1"));
 
         firewallDialog.updateRuleTable();
@@ -149,7 +148,7 @@ public class JVermittlungsrechnerKonfiguration extends JKonfiguration implements
 
     protected void initContents() {
         LOG.trace("INVOKED (" + this.hashCode() + ") " + getClass()
-                + " (JVermittlungsrechnerKonfiguration), initAttributEingabeBox(" + box + ")");
+            + " (JVermittlungsrechnerKonfiguration), initAttributEingabeBox(" + box + ")");
         Vermittlungsrechner vRechner;
         NetzwerkInterface tempNic;
         Knoten tempKnoten;
@@ -183,7 +182,8 @@ public class JVermittlungsrechnerKonfiguration extends JKonfiguration implements
 
         focusListener = new FocusListener() {
 
-            public void focusGained(FocusEvent arg0) {}
+            public void focusGained(FocusEvent arg0) {
+            }
 
             public void focusLost(FocusEvent arg0) {
                 aenderungenAnnehmen();
@@ -349,7 +349,7 @@ public class JVermittlungsrechnerKonfiguration extends JKonfiguration implements
                 verbundeneKomponente[i] = new JLabel(messages.getString("jvermittlungsrechnerkonfiguration_msg5"));
             else
                 verbundeneKomponente[i] = new JLabel(messages.getString("jvermittlungsrechnerkonfiguration_msg6") + " "
-                        + tempKnoten.holeAnzeigeName());
+                    + tempKnoten.holeAnzeigeName());
             verbundeneKomponente[i].setPreferredSize(new Dimension(400, 10));
             boxKomponente.add(verbundeneKomponente[i]);
 
@@ -394,10 +394,10 @@ public class JVermittlungsrechnerKonfiguration extends JKonfiguration implements
 
             if (tempKnoten == null) {
                 tpNetzwerkKarten.addTab(messages.getString("jvermittlungsrechnerkonfiguration_msg10") + (i + 1),
-                        new ImageIcon(getClass().getResource("/gfx/allgemein/conn_fail.png")), boxNic);
+                    new ImageIcon(getClass().getResource("/gfx/allgemein/conn_fail.png")), boxNic);
             } else {
                 tpNetzwerkKarten.addTab(messages.getString("jvermittlungsrechnerkonfiguration_msg10") + (i + 1),
-                        new ImageIcon(getClass().getResource("/gfx/allgemein/conn_ok.png")), boxNic);
+                    new ImageIcon(getClass().getResource("/gfx/allgemein/conn_ok.png")), boxNic);
             }
         }
 
@@ -423,7 +423,7 @@ public class JVermittlungsrechnerKonfiguration extends JKonfiguration implements
                 }
                 if (sel > 0 && sel < pane.getComponentCount() - 1) {
                     Verbindung conn = ((NetzwerkInterface) ((Vermittlungsrechner) holeHardware())
-                            .getNetzwerkInterfaces().get(sel - 1)).getPort().getVerbindung();
+                        .getNetzwerkInterfaces().get(sel - 1)).getPort().getVerbindung();
                     if (conn != null) {
                         conn.setAktiv(true);
                         highlightedCable = (Kabel) conn;
@@ -486,9 +486,9 @@ public class JVermittlungsrechnerKonfiguration extends JKonfiguration implements
                 tabellenDialog = new JDialog(filius.gui.JMainFrame.getJMainFrame(), true);
                 tabellenDialog.setTitle(messages.getString("jvermittlungsrechnerkonfiguration_msg15"));
                 tabellenDialog.setSize(600, 400);
+                tabellenDialog.setLocation(tabellenDialog.getParent().getX() + (tabellenDialog.getParent().getWidth() - tabellenDialog.getWidth()) / 2,
+                    tabellenDialog.getParent().getY() + (tabellenDialog.getParent().getHeight() - tabellenDialog.getHeight()) / 2);
 
-                Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
-                tabellenDialog.setLocation(screenSize.width / 2 - 300, screenSize.height / 2 - 200);
                 tabelle = new JWeiterleitungsTabelle(getKonfiguration());
                 tabelle.updateAttribute();
                 scrollPane = new JScrollPane(tabelle);
@@ -516,26 +516,19 @@ public class JVermittlungsrechnerKonfiguration extends JKonfiguration implements
 
     private void showConnectionsDialog() {
         LOG.trace("INVOKED (" + this.hashCode() + ") " + getClass()
-                + " (JVermittlungsrechnerKonfiguration), showConnectionsDialog()");
+            + " (JVermittlungsrechnerKonfiguration), showConnectionsDialog()");
         GUIContainer.getGUIContainer().getProperty().minimieren();
         // basic dialog creation and settings
         changeBasicSettingsDialog = new JConnectionsDialog(filius.gui.JMainFrame.getJMainFrame(),
-                (Vermittlungsrechner) holeHardware());
+            (Vermittlungsrechner) holeHardware());
         changeBasicSettingsDialog.setTitle(messages.getString("jvermittlungsrechnerkonfiguration_msg23"));
 
-        // positioning and size
-        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
-        changeBasicSettingsDialog.setLocation(screenSize.width / 2 - 300, screenSize.height / 2 - 200);
-
-        changeBasicSettingsDialog.setSize(750, 530);
-        changeBasicSettingsDialog.setResizable(true);
-
         changeBasicSettingsDialog.setVisible(true);
     }
 
     public void doUnselectAction() {
         LOG.trace("INVOKED (" + this.hashCode() + ") " + getClass()
-                + " (JVermittlungsrechnerKonfiguration), doUnselectAction()");
+            + " (JVermittlungsrechnerKonfiguration), doUnselectAction()");
         if (highlightedCable != null) {
             highlightedCable.setAktiv(false);
             highlightedCable = null;
@@ -557,7 +550,7 @@ public class JVermittlungsrechnerKonfiguration extends JKonfiguration implements
 
     public void updateAttribute() {
         LOG.trace("INVOKED (" + this.hashCode() + ") " + getClass()
-                + " (JVermittlungsrechnerKonfiguration), updateAttribute()");
+            + " (JVermittlungsrechnerKonfiguration), updateAttribute()");
         Knoten tempKnoten;
 
         Vermittlungsrechner vRechner = (Vermittlungsrechner) holeHardware();
@@ -580,10 +573,10 @@ public class JVermittlungsrechnerKonfiguration extends JKonfiguration implements
             if (tempKnoten == null) {
                 verbundeneKomponente[i].setText(messages.getString("jvermittlungsrechnerkonfiguration_msg16"));
                 tpNetzwerkKarten.setIconAt(i + 1,
-                        new ImageIcon(getClass().getResource("/gfx/allgemein/conn_fail.png")));
+                    new ImageIcon(getClass().getResource("/gfx/allgemein/conn_fail.png")));
             } else {
                 verbundeneKomponente[i].setText(messages.getString("jvermittlungsrechnerkonfiguration_msg6") + " "
-                        + tempKnoten.holeAnzeigeName());
+                    + tempKnoten.holeAnzeigeName());
                 tpNetzwerkKarten.setIconAt(i + 1, new ImageIcon(getClass().getResource("/gfx/allgemein/conn_ok.png")));
             }
             String tabtitle;
@@ -599,7 +592,7 @@ public class JVermittlungsrechnerKonfiguration extends JKonfiguration implements
 
     private Knoten holeVerbundeneKomponente(NetzwerkInterface nic) {
         LOG.trace("INVOKED (" + this.hashCode() + ") " + getClass()
-                + " (JVermittlungsrechnerKonfiguration), holeVerbundeneKomponente(" + nic + ")");
+            + " (JVermittlungsrechnerKonfiguration), holeVerbundeneKomponente(" + nic + ")");
 
         if (nic.getPort().getVerbindung() == null) {
             return null;


=====================================
src/main/java/filius/gui/quelltextsicht/FrameSoftwareWizard.java
=====================================
@@ -71,7 +71,8 @@ public class FrameSoftwareWizard extends JDialog implements I18n {
 
         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
         this.setSize(720, 600);
-        this.setLocation(screenSize.width / 2 - (this.getWidth() / 2), screenSize.height / 2 - (this.getHeight() / 2));
+        setLocation(getParent().getX() + (getParent().getWidth() - getWidth()) / 2,
+            getParent().getY() + (getParent().getHeight() - getHeight()) / 2);
 
         initKomponenten();
 


=====================================
src/main/java/filius/gui/schichtensicht/GlobalLayerPath.java
=====================================
@@ -33,15 +33,14 @@ public class GlobalLayerPath extends JPanel implements I18n {
     private static final Lauscher LAUSCHER = Lauscher.getLauscher();
     private static final int MAX_TTL = 64;
 
-    private final JFrame OWNER;
-    private final String MAIN_INTERFACE_ID;
-    private final Knoten MAIN_NODE;
-    private final int MAIN_FRAME_NUMBER;
-    private final EthernetFrame MAIN_FRAME;
+    private final JFrame owner;
+    private final String mainInterfaceId;
+    private final Knoten mainNode;
+    private final EthernetFrame mainFrame;
 
     /** local path view of the selected node */
-    private final LayerPathDialog MAIN_DIALOG;
-    private final LocalLayerPathPanel MAIN_LOCAL_PANEL;
+    private final LayerPathDialog mainDialog;
+    private final LocalLayerPathPanel mainLocalPanel;
 
     private int currentLocalPanelPathIndex = 0;
     private int currentLocalPanelParametersPathIndex = 0;
@@ -69,30 +68,29 @@ public class GlobalLayerPath extends JPanel implements I18n {
     /**
      * The parameters needed to create the main local panel.
      */
-    Object[] MAIN_LOCAL_PANEL_PARAMETERS;
+    Object[] mainLocalPanelParameters;
 
     public GlobalLayerPath(JFrame owner, String interfaceId, SystemSoftware systemSoftware, int frameNumber) {
-        this.OWNER = owner;
-        MAIN_NODE = (InternetKnoten) systemSoftware.getKnoten();
-        MAIN_LOCAL_PANEL_PARAMETERS = new Object[] { interfaceId, systemSoftware, frameNumber };
-        MAIN_INTERFACE_ID = interfaceId;
-        MAIN_FRAME_NUMBER = frameNumber;
-        MAIN_FRAME = LAUSCHER.getFrame(MAIN_INTERFACE_ID, MAIN_FRAME_NUMBER);
+        this.owner = owner;
+        mainNode = (InternetKnoten) systemSoftware.getKnoten();
+        mainLocalPanelParameters = new Object[] { interfaceId, systemSoftware, frameNumber };
+        mainInterfaceId = interfaceId;
+        mainFrame = LAUSCHER.getFrame(mainInterfaceId, frameNumber);
 
-        MAIN_DIALOG = new LayerPathDialog(owner, interfaceId, systemSoftware, frameNumber, this, true);
-        MAIN_LOCAL_PANEL = MAIN_DIALOG.getLocalLayerPathPanel();
-        MAIN_LOCAL_PANEL.setAsMainNode(true);
+        mainDialog = new LayerPathDialog(owner, interfaceId, systemSoftware, frameNumber, this, true);
+        mainLocalPanel = mainDialog.getLocalLayerPathPanel();
+        mainLocalPanel.setAsMainNode(true);
 
         // overwrite title to "Globaler Weg durch die Schichten"
-        MAIN_DIALOG.setTitle(messages.getString("schichten_globaler_weg_msg1"));
+        mainDialog.setTitle(messages.getString("schichten_globaler_weg_msg1"));
 
         fillFramePath();
-        localPanelPath.add(MAIN_LOCAL_PANEL);
+        localPanelPath.add(mainLocalPanel);
         fillLocalPanelParametersPath();
 
         // nächste Zeile wird überflüssig, da dort sowieso nur MAIN_LOCA_PANEL drin ist
-        currentLocalPanelParametersPathIndex = localPanelParametersPath.indexOf(MAIN_LOCAL_PANEL_PARAMETERS);
-        MAIN_DIALOG.setVisible(true);
+        currentLocalPanelParametersPathIndex = localPanelParametersPath.indexOf(mainLocalPanelParameters);
+        mainDialog.setVisible(true);
     }
 
     public boolean isActiveBorderOfNextPanelAtEnd() {
@@ -105,13 +103,13 @@ public class GlobalLayerPath extends JPanel implements I18n {
     private void fillFramePath() {
         // if frame is an ARP packet or was received via ethernet broadcast (possible
         // with ARP and DHCP)
-        if (MAIN_FRAME.getDaten() instanceof ArpPaket
-                || (MAIN_FRAME.getZielMacAdresse().equals(Ethernet.ETHERNET_BROADCAST)
-                        && !MAIN_FRAME.getQuellMacAdresse().equals(MAIN_INTERFACE_ID))) {
-            addToFramePath(MAIN_FRAME);
-        } else if (MAIN_FRAME.getDaten() instanceof IpPaket) {
+        if (mainFrame.getDaten() instanceof ArpPaket
+                || (mainFrame.getZielMacAdresse().equals(Ethernet.ETHERNET_BROADCAST)
+                        && !mainFrame.getQuellMacAdresse().equals(mainInterfaceId))) {
+            addToFramePath(mainFrame);
+        } else if (mainFrame.getDaten() instanceof IpPaket) {
             for (int ttl = MAX_TTL; ttl > 0; ttl--) {
-                EthernetFrame frame = LAUSCHER.getFrameWithSameContentAndSpecificTTL(MAIN_FRAME, ttl);
+                EthernetFrame frame = LAUSCHER.getFrameWithSameContentAndSpecificTTL(mainFrame, ttl);
                 if (frame != null) {
                     addToFramePath(frame);
                 } else {
@@ -129,8 +127,8 @@ public class GlobalLayerPath extends JPanel implements I18n {
      */
     private void addToFramePath(EthernetFrame frame) {
         // if frame is exactly the same (incl. TTL) as the main frame
-        if (frame.sameContent(MAIN_FRAME)) {
-            framePath.add(MAIN_FRAME);
+        if (frame.sameContent(mainFrame)) {
+            framePath.add(mainFrame);
         } else {
             framePath.add(frame);
         }
@@ -142,18 +140,18 @@ public class GlobalLayerPath extends JPanel implements I18n {
      */
     private void fillLocalPanelParametersPath() {
         // frame was received via ethernet broadcast
-        if (MAIN_FRAME.getZielMacAdresse().equals(Ethernet.ETHERNET_BROADCAST)
-                && !MAIN_FRAME.getQuellMacAdresse().equals(MAIN_INTERFACE_ID)) {
+        if (mainFrame.getZielMacAdresse().equals(Ethernet.ETHERNET_BROADCAST)
+                && !mainFrame.getQuellMacAdresse().equals(mainInterfaceId)) {
             // add sender
-            String interfaceId = MAIN_FRAME.getQuellMacAdresse();
+            String interfaceId = mainFrame.getQuellMacAdresse();
             SystemSoftware systemSoftware = LAUSCHER.getSystemSoftwareByID(interfaceId);
-            int frameNumber = LAUSCHER.getFrameNumber(interfaceId, MAIN_FRAME);
+            int frameNumber = LAUSCHER.getFrameNumber(interfaceId, mainFrame);
             addToLocalPanelPath(interfaceId, systemSoftware, frameNumber);
 
             // add receiver
-            interfaceId = MAIN_INTERFACE_ID;
+            interfaceId = mainInterfaceId;
             systemSoftware = LAUSCHER.getSystemSoftwareByID(interfaceId);
-            frameNumber = LAUSCHER.getFrameNumber(interfaceId, MAIN_FRAME);
+            frameNumber = LAUSCHER.getFrameNumber(interfaceId, mainFrame);
             addToLocalPanelPath(interfaceId, systemSoftware, frameNumber);
         } else {
             EthernetFrame firstFrame = framePath.get(0);
@@ -190,17 +188,17 @@ public class GlobalLayerPath extends JPanel implements I18n {
         // the main frame (depending if the frame was sent or received), add the main
         // panel
         EthernetFrame frame = LAUSCHER.getFrame(interfaceId, frameNumber);
-        if ((systemSoftware.getKnoten()).equals(MAIN_NODE)) {
-            if (!MAIN_LOCAL_PANEL.isForwarded()) {
-                localPanelParametersPath.add(MAIN_LOCAL_PANEL_PARAMETERS);
+        if ((systemSoftware.getKnoten()).equals(mainNode)) {
+            if (!mainLocalPanel.isForwarded()) {
+                localPanelParametersPath.add(mainLocalPanelParameters);
                 return;
             } else {
-                if (MAIN_FRAME.getDaten() instanceof IpPaket) {
-                    if ((MAIN_LOCAL_PANEL.isSent()
-                            && ((IpPaket) MAIN_FRAME.getDaten()).getTtl() == ((IpPaket) frame.getDaten()).getTtl() - 1)
-                            || (!MAIN_LOCAL_PANEL.isSent() && ((IpPaket) MAIN_FRAME.getDaten())
+                if (mainFrame.getDaten() instanceof IpPaket) {
+                    if ((mainLocalPanel.isSent()
+                            && ((IpPaket) mainFrame.getDaten()).getTtl() == ((IpPaket) frame.getDaten()).getTtl() - 1)
+                            || (!mainLocalPanel.isSent() && ((IpPaket) mainFrame.getDaten())
                                     .getTtl() == ((IpPaket) frame.getDaten()).getTtl())) {
-                        localPanelParametersPath.add(MAIN_LOCAL_PANEL_PARAMETERS);
+                        localPanelParametersPath.add(mainLocalPanelParameters);
                         return;
                     }
                 }
@@ -222,7 +220,7 @@ public class GlobalLayerPath extends JPanel implements I18n {
         LocalLayerPathPanel oldPanel = localPanelPath.get(currentLocalPanelPathIndex);
         LocalLayerPathPanel newPanel;
         oldPanel.setVisible(false);
-        MAIN_DIALOG.remove(oldPanel);
+        mainDialog.remove(oldPanel);
         if (switchForward) {
             currentLocalPanelPathIndex++;
             currentLocalPanelParametersPathIndex++;
@@ -235,7 +233,7 @@ public class GlobalLayerPath extends JPanel implements I18n {
                 SystemSoftware systemSoftware = (SystemSoftware) parameters[1];
                 int frameNumber = (int) parameters[2];
                 activeBorderOfNextPanelAtEnd = false;
-                newPanel = new LocalLayerPathPanel(OWNER, interfaceId, systemSoftware, frameNumber, this, false);
+                newPanel = new LocalLayerPathPanel(owner, interfaceId, systemSoftware, frameNumber, this, false);
                 localPanelPath.add(newPanel);
             }
         } else {
@@ -244,19 +242,19 @@ public class GlobalLayerPath extends JPanel implements I18n {
             if (currentLocalPanelPathIndex > 0) {
                 currentLocalPanelPathIndex--;
                 newPanel = localPanelPath.get(currentLocalPanelPathIndex);
-                MAIN_DIALOG.add(newPanel);
+                mainDialog.add(newPanel);
             } else {
                 Object[] parameters = localPanelParametersPath.get(currentLocalPanelParametersPathIndex);
                 String interfaceId = (String) parameters[0];
                 SystemSoftware systemSoftware = (SystemSoftware) parameters[1];
                 int frameNumber = (int) parameters[2];
                 activeBorderOfNextPanelAtEnd = true;
-                newPanel = new LocalLayerPathPanel(OWNER, interfaceId, systemSoftware, frameNumber, this, false);
+                newPanel = new LocalLayerPathPanel(owner, interfaceId, systemSoftware, frameNumber, this, false);
                 localPanelPath.add(0, newPanel);
             }
         }
         newPanel.setDividerLocation(oldPanel.getDividerLocation());
-        MAIN_DIALOG.add(newPanel);
+        mainDialog.add(newPanel);
         newPanel.setVisible(true);
     }
-}
\ No newline at end of file
+}


=====================================
src/main/java/filius/gui/schichtensicht/LayerPathDialog.java
=====================================
@@ -34,13 +34,15 @@ public class LayerPathDialog extends JDialog implements I18n {
                 globalLayerPath, isMainNode);
 
         // set size and positioning properties of outer JDialog
-        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
-        setLocation(screenSize.width / 6, screenSize.height / 6);
         int dialogWidth = LOCAL_LAYER_PATH_PANEL.getSizeOfMessageDetailsTable().width + 30;
         int dialogHeight = LOCAL_LAYER_PATH_PANEL.getSizeOfMessageDetailsTable().height
                 + LOCAL_LAYER_PATH_PANEL.getDefaultDividerLocation() + 100;
         setPreferredSize(new Dimension(dialogWidth, dialogHeight));
         setMinimumSize(new Dimension(dialogWidth, dialogHeight));
+        setSize(new Dimension(dialogWidth, dialogHeight));
+
+        setLocation(getParent().getX() + (getParent().getWidth() - getWidth()) / 2,
+            getParent().getY() + (getParent().getHeight() - getHeight()) / 2);
 
         // Panel is in the center of the BorderLayout
         add(LOCAL_LAYER_PATH_PANEL, BorderLayout.CENTER);



View it on GitLab: https://salsa.debian.org/java-team/filius/-/compare/8fbdc2e0f1c88b5b11ebbc474f153ffd4e51744f...c6e700f0482b5d201f0697a1a6e03d25efd88ee2

-- 
View it on GitLab: https://salsa.debian.org/java-team/filius/-/compare/8fbdc2e0f1c88b5b11ebbc474f153ffd4e51744f...c6e700f0482b5d201f0697a1a6e03d25efd88ee2
You're receiving this email because of your account on salsa.debian.org. Manage all notifications: https://salsa.debian.org/-/profile/notifications | Help: https://salsa.debian.org/help


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20260621/a73da07b/attachment.htm>


More information about the pkg-java-commits mailing list