From e64038939f0e6d6ff60674c449f4d38dbde88bd7 Mon Sep 17 00:00:00 2001
From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com>
Date: Thu, 7 Mar 2024 05:24:02 +0200
Subject: [PATCH 1/7] version number increment
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 8c6e065..758f90e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.github.KrumSpace
StellarSystems
- 0.14
+ 0.15
UTF-8
From 4b296782a2902fb7811a5e6c9c055d40a29c0097 Mon Sep 17 00:00:00 2001
From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com>
Date: Thu, 7 Mar 2024 05:31:23 +0200
Subject: [PATCH 2/7] color fix
---
.../graphics/panels/leftSidePanel/ThirdSection.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/test/java/planetTest/graphics/panels/leftSidePanel/ThirdSection.java b/src/test/java/planetTest/graphics/panels/leftSidePanel/ThirdSection.java
index cd2a8ff..7c6134d 100644
--- a/src/test/java/planetTest/graphics/panels/leftSidePanel/ThirdSection.java
+++ b/src/test/java/planetTest/graphics/panels/leftSidePanel/ThirdSection.java
@@ -29,9 +29,9 @@ final class ThirdSection extends AbstractSectionPanel {
//
@Override
public void mainPaint(@NotNull Graphics g) {
- g.setColor(TEXT_COLOR);
- drawInfoLine(g, "Blank section", 1);
g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "Blank section", 1);
+ g.setColor(TEXT_COLOR);
drawInfoLine(g, "For future use", 2);
// Paint more stuff here, if needed.
}
From 7cc0d082cb3942dfe334c844cb0751e5c8eb60b0 Mon Sep 17 00:00:00 2001
From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com>
Date: Thu, 7 Mar 2024 06:09:44 +0200
Subject: [PATCH 3/7] improvements
---
.../graphics/panels/CentralPanel.java | 41 ++--------
.../planetGraphics/PlanetDrawPanel.java | 82 +++++++++++++++++++
2 files changed, 88 insertions(+), 35 deletions(-)
create mode 100644 src/test/java/planetTest/planetGraphics/PlanetDrawPanel.java
diff --git a/src/test/java/planetTest/graphics/panels/CentralPanel.java b/src/test/java/planetTest/graphics/panels/CentralPanel.java
index 1771c83..8fb8a7e 100644
--- a/src/test/java/planetTest/graphics/panels/CentralPanel.java
+++ b/src/test/java/planetTest/graphics/panels/CentralPanel.java
@@ -6,57 +6,28 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import baryGraphics.panels.CenteredDrawPanel;
-import baryGraphics.panels.ScaledDrawInterface;
-import planetTest.planetModel.Planet;
import planetTest.planetModel.PlanetContainer;
+import planetTest.planetGraphics.PlanetDrawPanel;
//
-public final class CentralPanel extends CenteredDrawPanel implements ScaledDrawInterface {
- private static final double DEFAULT_SCALE = 2.0;
- private static final @NotNull Color
- BACKGROUND = Color.black,
- TEXT_COLOR = Color.white;
- private double scale;
- private final @NotNull PlanetContainer planetContainer;
+public final class CentralPanel extends PlanetDrawPanel {
+ private static final @NotNull Color TEXT_COLOR = Color.white;
//
public CentralPanel(@NotNull PlanetContainer planetContainer,
@Nullable Color borderColor, @Nullable Color diagonalColor) {
super(
- BACKGROUND,
+ planetContainer,
borderColor, true,
diagonalColor, true);
- scale = DEFAULT_SCALE;
- this.planetContainer = planetContainer;
- }
-
- //
- @Override
- public double getScale() {
- return scale;
}
//
@Override
public void mainPaint(@NotNull Graphics g) {
- @Nullable Planet planet = planetContainer.getPlanet();
- if (planet != null) paintPlanet(g, planet);
+ super.mainPaint(g);
g.setColor(TEXT_COLOR);
g.drawString("A planet test", 100, 100);
- // paint more stuff here, if needed
- }
-
- private void paintPlanet(@NotNull Graphics g, @NotNull Planet planet) {
- g.setColor(planet.getColor());
- double scaledRadius = scaleValue(planet.getRadius());
- double @NotNull []
- relativeLocation = new double[2], // relative to yet non-implemented observer
- drawLocation = applyDrawCenterOffset(scaleLocation(relativeLocation));
- int scaledIntegerDiameter = (int) (scaledRadius * 2);
- g.fillOval(
- (int) (drawLocation[0] - scaledRadius),
- (int) (drawLocation[1] - scaledRadius),
- scaledIntegerDiameter, scaledIntegerDiameter);
+ // Paint more stuff here, if needed.
}
}
\ No newline at end of file
diff --git a/src/test/java/planetTest/planetGraphics/PlanetDrawPanel.java b/src/test/java/planetTest/planetGraphics/PlanetDrawPanel.java
new file mode 100644
index 0000000..7b37c10
--- /dev/null
+++ b/src/test/java/planetTest/planetGraphics/PlanetDrawPanel.java
@@ -0,0 +1,82 @@
+package planetTest.planetGraphics;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import commonGraphics.ColorUtils;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import baryGraphics.panels.CenteredDrawPanel;
+import baryGraphics.panels.ScaledDrawInterface;
+import planetTest.planetModel.Planet;
+import planetTest.planetModel.PlanetContainer;
+
+public class PlanetDrawPanel extends CenteredDrawPanel implements ScaledDrawInterface {
+ private static final double DEFAULT_SCALE = 2.0;
+ private static final @NotNull Color
+ BACKGROUND = Color.black,
+ TEXT_COLOR = Color.white,
+ NULL_PLANET_COLOR = ColorUtils.getGray(80, 255);
+ private static final double NULL_PLANET_DIAMETER_PROPORTION = 0.4;
+ @SuppressWarnings("FieldMayBeFinal")
+ private double scale;
+ private final @NotNull PlanetContainer planetContainer;
+
+ //
+ public PlanetDrawPanel(@NotNull PlanetContainer planetContainer,
+ @Nullable Color borderColor, boolean drawBorders,
+ @Nullable Color diagonalColor, boolean drawDiagonals) {
+ super(
+ BACKGROUND,
+ borderColor, drawBorders,
+ diagonalColor, drawDiagonals);
+ scale = DEFAULT_SCALE;
+ this.planetContainer = planetContainer;
+ }
+
+ //
+ @Override
+ public double getScale() {
+ return scale;
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ @Nullable Planet planet = planetContainer.getPlanet();
+ if (planet == null) {
+ paintNullPlanet(g);
+ } else {
+ paintPlanet(g, planet);
+ }
+ // Paint more stuff here, if needed.
+ }
+
+ private void paintNullPlanet(@NotNull Graphics g) {
+ g.setColor(NULL_PLANET_COLOR);
+ double
+ minPanelSize = Math.min(getWidth(), getHeight()),
+ diameter = minPanelSize * NULL_PLANET_DIAMETER_PROPORTION,
+ radius = diameter / 2;
+ double @NotNull [] center = getPanelCenter();
+ g.drawOval((int) (center[0] - radius), (int) (center[1] - radius), (int) diameter, (int) diameter);
+
+ g.setColor(TEXT_COLOR);
+ int @NotNull [] textOffset = new int [] {-28, 5};
+ g.drawString("Null planet", (int) (center[0] + textOffset[0]), (int) (center[1] + textOffset[1]));
+ }
+
+ private void paintPlanet(@NotNull Graphics g, @NotNull Planet planet) {
+ g.setColor(planet.getColor());
+ double scaledRadius = scaleValue(planet.getRadius());
+ double @NotNull []
+ relativeLocation = new double[2], // relative to yet non-implemented observer
+ drawLocation = applyDrawCenterOffset(scaleLocation(relativeLocation));
+ int scaledIntegerDiameter = (int) (scaledRadius * 2);
+ g.fillOval(
+ (int) (drawLocation[0] - scaledRadius),
+ (int) (drawLocation[1] - scaledRadius),
+ scaledIntegerDiameter, scaledIntegerDiameter);
+ }
+}
\ No newline at end of file
From 67e1cf503424a5a4ed5c5bcb1fbcaf73ed8f7008 Mon Sep 17 00:00:00 2001
From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com>
Date: Thu, 7 Mar 2024 06:18:18 +0200
Subject: [PATCH 4/7] improvements
---
src/test/java/baryGraphics/panels/ObserverDrawPanel.java | 2 ++
src/test/java/commonGraphics/ReadMe.md | 7 +++++++
.../panels/graphicalPanels}/CenteredDrawPanel.java | 2 +-
.../panels/graphicalPanels}/ScaledDrawInterface.java | 2 +-
.../java/planetTest/planetGraphics/PlanetDrawPanel.java | 8 ++++----
5 files changed, 15 insertions(+), 6 deletions(-)
rename src/test/java/{baryGraphics/panels => commonGraphics/panels/graphicalPanels}/CenteredDrawPanel.java (95%)
rename src/test/java/{baryGraphics/panels => commonGraphics/panels/graphicalPanels}/ScaledDrawInterface.java (93%)
diff --git a/src/test/java/baryGraphics/panels/ObserverDrawPanel.java b/src/test/java/baryGraphics/panels/ObserverDrawPanel.java
index 8344c45..4477773 100644
--- a/src/test/java/baryGraphics/panels/ObserverDrawPanel.java
+++ b/src/test/java/baryGraphics/panels/ObserverDrawPanel.java
@@ -5,6 +5,8 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import commonGraphics.panels.graphicalPanels.CenteredDrawPanel;
+import commonGraphics.panels.graphicalPanels.ScaledDrawInterface;
import baryGraphics.Observer;
//
diff --git a/src/test/java/commonGraphics/ReadMe.md b/src/test/java/commonGraphics/ReadMe.md
index 3a1077c..2fa2cb5 100644
--- a/src/test/java/commonGraphics/ReadMe.md
+++ b/src/test/java/commonGraphics/ReadMe.md
@@ -115,3 +115,10 @@ _Check code for more info..._
Commonly used side panels
_Check code for more info..._
+
+
+## graphicalPanels
+
+Simple graphical panels.
+
+_Check code for more info..._
diff --git a/src/test/java/baryGraphics/panels/CenteredDrawPanel.java b/src/test/java/commonGraphics/panels/graphicalPanels/CenteredDrawPanel.java
similarity index 95%
rename from src/test/java/baryGraphics/panels/CenteredDrawPanel.java
rename to src/test/java/commonGraphics/panels/graphicalPanels/CenteredDrawPanel.java
index a00f701..baf055c 100644
--- a/src/test/java/baryGraphics/panels/CenteredDrawPanel.java
+++ b/src/test/java/commonGraphics/panels/graphicalPanels/CenteredDrawPanel.java
@@ -1,4 +1,4 @@
-package baryGraphics.panels;
+package commonGraphics.panels.graphicalPanels;
import java.awt.Color;
diff --git a/src/test/java/baryGraphics/panels/ScaledDrawInterface.java b/src/test/java/commonGraphics/panels/graphicalPanels/ScaledDrawInterface.java
similarity index 93%
rename from src/test/java/baryGraphics/panels/ScaledDrawInterface.java
rename to src/test/java/commonGraphics/panels/graphicalPanels/ScaledDrawInterface.java
index e8d178e..6fb9f56 100644
--- a/src/test/java/baryGraphics/panels/ScaledDrawInterface.java
+++ b/src/test/java/commonGraphics/panels/graphicalPanels/ScaledDrawInterface.java
@@ -1,4 +1,4 @@
-package baryGraphics.panels;
+package commonGraphics.panels.graphicalPanels;
import org.jetbrains.annotations.NotNull;
diff --git a/src/test/java/planetTest/planetGraphics/PlanetDrawPanel.java b/src/test/java/planetTest/planetGraphics/PlanetDrawPanel.java
index 7b37c10..a67a3e7 100644
--- a/src/test/java/planetTest/planetGraphics/PlanetDrawPanel.java
+++ b/src/test/java/planetTest/planetGraphics/PlanetDrawPanel.java
@@ -3,12 +3,12 @@
import java.awt.Color;
import java.awt.Graphics;
-import commonGraphics.ColorUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import baryGraphics.panels.CenteredDrawPanel;
-import baryGraphics.panels.ScaledDrawInterface;
+import static commonGraphics.ColorUtils.getGray;
+import commonGraphics.panels.graphicalPanels.CenteredDrawPanel;
+import commonGraphics.panels.graphicalPanels.ScaledDrawInterface;
import planetTest.planetModel.Planet;
import planetTest.planetModel.PlanetContainer;
@@ -17,7 +17,7 @@ public class PlanetDrawPanel extends CenteredDrawPanel implements ScaledDrawInte
private static final @NotNull Color
BACKGROUND = Color.black,
TEXT_COLOR = Color.white,
- NULL_PLANET_COLOR = ColorUtils.getGray(80, 255);
+ NULL_PLANET_COLOR = getGray(80, 255);
private static final double NULL_PLANET_DIAMETER_PROPORTION = 0.4;
@SuppressWarnings("FieldMayBeFinal")
private double scale;
From 96a93d5d7b371c5faf75ab14072a32df15d4df8d Mon Sep 17 00:00:00 2001
From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com>
Date: Fri, 15 Mar 2024 20:35:38 +0200
Subject: [PATCH 5/7] improvements
---
.../java/commonGraphics/AbstractWindow.java | 25 +++------
.../java/commonGraphics/UpdatingWindow.java | 12 ++---
.../java/commonGraphics/WindowSettings.java | 54 +++++++++++++++++++
.../sidePanels/AbstractSectionPanel.java | 2 +-
.../panels/sidePanels/AbstractSidePanel.java | 2 +-
.../sidePanels/SectionContainerInterface.java | 2 +-
.../CommonLeftSidePanel.java | 2 +-
src/test/java/demo/graphics/DemoWindow.java | 3 +-
.../java/planetTest/graphics/TestWindow.java | 5 +-
src/test/java/playerTest/PlayerTest.java | 17 ++++++
.../java/playerTest/graphics/TestWindow.java | 45 ++++++++++++++++
.../graphics/panels/CentralPanel.java | 43 +++++++++++++++
.../panels/leftSidePanel/FirstSection.java | 44 +++++++++++++++
.../panels/leftSidePanel/LeftSidePanel.java | 31 +++++++++++
.../panels/leftSidePanel/SecondSection.java | 44 +++++++++++++++
.../panels/leftSidePanel/ThirdSection.java | 42 +++++++++++++++
.../panels/leftSidePanel/TopSection.java | 33 ++++++++++++
.../java/playerTest/models/Character.java | 9 ++++
.../playerTest/models/CharacterContainer.java | 24 +++++++++
.../playerTest/models/CharacterUpdater.java | 38 +++++++++++++
src/test/java/playerTest/models/Player.java | 21 ++++++++
.../java/playerTest/models/PlayerUpdater.java | 20 +++++++
src/test/java/test2/graphics/TestWindow.java | 3 +-
23 files changed, 488 insertions(+), 33 deletions(-)
create mode 100644 src/test/java/commonGraphics/WindowSettings.java
create mode 100644 src/test/java/playerTest/PlayerTest.java
create mode 100644 src/test/java/playerTest/graphics/TestWindow.java
create mode 100644 src/test/java/playerTest/graphics/panels/CentralPanel.java
create mode 100644 src/test/java/playerTest/graphics/panels/leftSidePanel/FirstSection.java
create mode 100644 src/test/java/playerTest/graphics/panels/leftSidePanel/LeftSidePanel.java
create mode 100644 src/test/java/playerTest/graphics/panels/leftSidePanel/SecondSection.java
create mode 100644 src/test/java/playerTest/graphics/panels/leftSidePanel/ThirdSection.java
create mode 100644 src/test/java/playerTest/graphics/panels/leftSidePanel/TopSection.java
create mode 100644 src/test/java/playerTest/models/Character.java
create mode 100644 src/test/java/playerTest/models/CharacterContainer.java
create mode 100644 src/test/java/playerTest/models/CharacterUpdater.java
create mode 100644 src/test/java/playerTest/models/Player.java
create mode 100644 src/test/java/playerTest/models/PlayerUpdater.java
diff --git a/src/test/java/commonGraphics/AbstractWindow.java b/src/test/java/commonGraphics/AbstractWindow.java
index ed062a6..c9ab0f8 100644
--- a/src/test/java/commonGraphics/AbstractWindow.java
+++ b/src/test/java/commonGraphics/AbstractWindow.java
@@ -1,9 +1,6 @@
package commonGraphics;
import java.util.Objects;
-import java.awt.Point;
-import java.awt.Dimension;
-import javax.swing.WindowConstants;
import javax.swing.JFrame;
import org.jetbrains.annotations.NotNull;
@@ -11,25 +8,19 @@
//
public abstract class AbstractWindow extends JFrame {
- private static final @NotNull Dimension DEFAULT_WINDOW_SIZE = new Dimension(1200, 850);
- private static final @NotNull Point DEFAULT_WINDOW_LOCATION = new Point(50, 50);
- private static final int DEFAULT_CLOSE_OPERATION = WindowConstants.EXIT_ON_CLOSE;
- private static final @NotNull String DEFAULT_WINDOW_TITLE = "An unnamed window";
-
//Creates a new window.
- public AbstractWindow(@Nullable Dimension size, @Nullable Point location, @Nullable String title) {
+ public AbstractWindow(@Nullable WindowSettings windowSettings) {
super();
- setWindowConfig(size, location, title);
+ setWindowConfig(Objects.requireNonNullElse(windowSettings, new WindowSettings()));
setVisible(true);
}
- private void setWindowConfig(@Nullable Dimension desiredSize,
- @Nullable Point desiredLocation,
- @Nullable String desiredTitle) {
- setSize(Objects.requireNonNullElse(desiredSize, DEFAULT_WINDOW_SIZE));
- setLocation(Objects.requireNonNullElse(desiredLocation, DEFAULT_WINDOW_LOCATION));
- setDefaultCloseOperation(DEFAULT_CLOSE_OPERATION);
- setTitle(Objects.requireNonNullElse(desiredTitle, DEFAULT_WINDOW_TITLE));
+ @SuppressWarnings("MagicConstant")
+ private void setWindowConfig(@NotNull WindowSettings windowSettings) {
+ setSize(windowSettings.getWindowSize());
+ setLocation(windowSettings.getWindowLocation());
+ setDefaultCloseOperation(windowSettings.getCloseOperation());
+ setTitle(windowSettings.getWindowTitle());
}
//doesn't get called automatically by AbstractWindow
diff --git a/src/test/java/commonGraphics/UpdatingWindow.java b/src/test/java/commonGraphics/UpdatingWindow.java
index d538dc3..5055b87 100644
--- a/src/test/java/commonGraphics/UpdatingWindow.java
+++ b/src/test/java/commonGraphics/UpdatingWindow.java
@@ -1,8 +1,5 @@
package commonGraphics;
-import java.awt.Point;
-import java.awt.Dimension;
-
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -15,15 +12,14 @@ public abstract class UpdatingWindow extends AbstractWindow {
private final @NotNull WindowUpdater windowUpdater;
//with default frame rate
- public UpdatingWindow(@Nullable Dimension size, @Nullable Point location, @Nullable String title) {
- super(size, location, title);
+ public UpdatingWindow(@Nullable WindowSettings windowSettings) {
+ super(windowSettings);
windowUpdater = new WindowUpdater(this);
}
//with custom frame rate
- public UpdatingWindow(@Nullable Dimension size, @Nullable Point location, @Nullable String title,
- long frameRate) {
- super(size, location, title);
+ public UpdatingWindow(@Nullable WindowSettings windowSettings, long frameRate) {
+ super(windowSettings);
windowUpdater = new WindowUpdater(this, frameRate);
}
diff --git a/src/test/java/commonGraphics/WindowSettings.java b/src/test/java/commonGraphics/WindowSettings.java
new file mode 100644
index 0000000..164a418
--- /dev/null
+++ b/src/test/java/commonGraphics/WindowSettings.java
@@ -0,0 +1,54 @@
+package commonGraphics;
+
+import java.util.Objects;
+import java.awt.Dimension;
+import java.awt.Point;
+import javax.swing.WindowConstants;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+//
+public class WindowSettings {
+ private static final @NotNull Dimension DEFAULT_WINDOW_SIZE = new Dimension(1200, 850);
+ private static final @NotNull Point DEFAULT_WINDOW_LOCATION = new Point(50, 50);
+ private static final int DEFAULT_CLOSE_OPERATION = WindowConstants.EXIT_ON_CLOSE;
+ private static final @NotNull String DEFAULT_WINDOW_TITLE = "An unnamed window";
+ private final @NotNull Dimension windowSize;
+ private final @NotNull Point windowLocation;
+ private final int closeOperation;
+ private final @NotNull String windowTitle;
+
+ //
+ public WindowSettings(@Nullable Dimension size, @Nullable Point location, @Nullable String title) {
+ windowSize = Objects.requireNonNullElse(size, DEFAULT_WINDOW_SIZE);
+ windowLocation = Objects.requireNonNullElse(location, DEFAULT_WINDOW_LOCATION);
+ closeOperation = DEFAULT_CLOSE_OPERATION;
+ windowTitle = Objects.requireNonNullElse(title, DEFAULT_WINDOW_TITLE);
+ }
+
+ //
+ public WindowSettings() {
+ this(null, null, null);
+ }
+
+ //
+ public final @NotNull Dimension getWindowSize() {
+ return windowSize;
+ }
+
+ //
+ public final @NotNull Point getWindowLocation() {
+ return windowLocation;
+ }
+
+ //
+ public final int getCloseOperation() {
+ return closeOperation;
+ }
+
+ //
+ public final @NotNull String getWindowTitle() {
+ return windowTitle;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/commonGraphics/panels/sidePanels/AbstractSectionPanel.java b/src/test/java/commonGraphics/panels/sidePanels/AbstractSectionPanel.java
index f694ae3..ef0b268 100644
--- a/src/test/java/commonGraphics/panels/sidePanels/AbstractSectionPanel.java
+++ b/src/test/java/commonGraphics/panels/sidePanels/AbstractSectionPanel.java
@@ -7,7 +7,7 @@
import static commonGraphics.ColorUtils.TRANSPARENT_BLACK;
import commonGraphics.panels.FixedHorizontalPanel;
-//
+//a horizontal section for a vertical side-panel
public abstract class AbstractSectionPanel extends FixedHorizontalPanel {
//
public AbstractSectionPanel(int height,
diff --git a/src/test/java/commonGraphics/panels/sidePanels/AbstractSidePanel.java b/src/test/java/commonGraphics/panels/sidePanels/AbstractSidePanel.java
index b9259d8..5f23663 100644
--- a/src/test/java/commonGraphics/panels/sidePanels/AbstractSidePanel.java
+++ b/src/test/java/commonGraphics/panels/sidePanels/AbstractSidePanel.java
@@ -8,7 +8,7 @@
import commonGraphics.panels.FixedVerticalPanel;
-//
+//an abstract vertically-fixed side-panel, intended to be used in the main panel
public abstract class AbstractSidePanel extends FixedVerticalPanel implements SectionContainerInterface {
//
public AbstractSidePanel(int width, @Nullable Color background,
diff --git a/src/test/java/commonGraphics/panels/sidePanels/SectionContainerInterface.java b/src/test/java/commonGraphics/panels/sidePanels/SectionContainerInterface.java
index 0d95de9..e535dba 100644
--- a/src/test/java/commonGraphics/panels/sidePanels/SectionContainerInterface.java
+++ b/src/test/java/commonGraphics/panels/sidePanels/SectionContainerInterface.java
@@ -1,6 +1,6 @@
package commonGraphics.panels.sidePanels;
-//
+//for panels that contain section-panels
public interface SectionContainerInterface {
void addSections();
}
\ No newline at end of file
diff --git a/src/test/java/commonGraphics/panels/sidePanels/commonLeftSidePanel/CommonLeftSidePanel.java b/src/test/java/commonGraphics/panels/sidePanels/commonLeftSidePanel/CommonLeftSidePanel.java
index 765919b..fecc1c5 100644
--- a/src/test/java/commonGraphics/panels/sidePanels/commonLeftSidePanel/CommonLeftSidePanel.java
+++ b/src/test/java/commonGraphics/panels/sidePanels/commonLeftSidePanel/CommonLeftSidePanel.java
@@ -10,7 +10,7 @@
import commonGraphics.panels.sidePanels.AbstractSidePanel;
import commonGraphics.UpdatingWindow;
-//
+//a common left side-panel
public abstract class CommonLeftSidePanel extends AbstractSidePanel {
private static final int DEFAULT_PANEL_WIDTH = 200;
private static final @Nullable Color DIAGONAL_COLOR = null;
diff --git a/src/test/java/demo/graphics/DemoWindow.java b/src/test/java/demo/graphics/DemoWindow.java
index ab2b513..b211561 100644
--- a/src/test/java/demo/graphics/DemoWindow.java
+++ b/src/test/java/demo/graphics/DemoWindow.java
@@ -11,6 +11,7 @@
import baryModel.BaryUniverse;
import static commonGraphics.ColorUtils.getGray;
+import commonGraphics.WindowSettings;
import commonGraphics.UpdatingWindow;
import baryGraphics.Observer;
import demo.graphics.panels.leftSidePanel.LeftSidePanel;
@@ -32,7 +33,7 @@ public final class DemoWindow extends UpdatingWindow {
//Creates a new window.
public DemoWindow(@NotNull BaryUniverse universe) {
- super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE, FRAME_RATE);
+ super(new WindowSettings(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE), FRAME_RATE);
this.universe = universe;
observer = new Observer();
addPanels();
diff --git a/src/test/java/planetTest/graphics/TestWindow.java b/src/test/java/planetTest/graphics/TestWindow.java
index fdfd3be..6d5143f 100644
--- a/src/test/java/planetTest/graphics/TestWindow.java
+++ b/src/test/java/planetTest/graphics/TestWindow.java
@@ -9,6 +9,7 @@
import org.jetbrains.annotations.NotNull;
import static commonGraphics.ColorUtils.getGray;
+import commonGraphics.WindowSettings;
import commonGraphics.UpdatingWindow;
import planetTest.graphics.panels.leftSidePanel.LeftSidePanel;
import planetTest.graphics.panels.CentralPanel;
@@ -26,11 +27,11 @@ public final class TestWindow extends UpdatingWindow {
//
public TestWindow(@NotNull PlanetContainer planetContainer) {
- super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE); //default frame rate
+ super(new WindowSettings(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE)); //default frame rate
this.planetContainer = planetContainer;
//observer = new Observer();
addPanels();
- //addKeyListener(new DemoKeyListener(observer));
+ //addKeyListener();
revalidate();
startUpdating();
}
diff --git a/src/test/java/playerTest/PlayerTest.java b/src/test/java/playerTest/PlayerTest.java
new file mode 100644
index 0000000..e1edc1e
--- /dev/null
+++ b/src/test/java/playerTest/PlayerTest.java
@@ -0,0 +1,17 @@
+package playerTest;
+
+import graphicalTestAbstraction.GraphicalTest;
+import playerTest.graphics.TestWindow;
+
+//
+public class PlayerTest extends GraphicalTest {
+ //
+ public static void main(String[] args) {
+ new PlayerTest();
+ }
+
+ //
+ public PlayerTest() {
+ super(new TestWindow());
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/TestWindow.java b/src/test/java/playerTest/graphics/TestWindow.java
new file mode 100644
index 0000000..38a96ee
--- /dev/null
+++ b/src/test/java/playerTest/graphics/TestWindow.java
@@ -0,0 +1,45 @@
+package playerTest.graphics;
+
+import java.awt.Dimension;
+import java.awt.Point;
+import java.awt.Color;
+import java.awt.LayoutManager;
+import javax.swing.BoxLayout;
+
+import org.jetbrains.annotations.NotNull;
+
+import static commonGraphics.ColorUtils.getGray;
+import commonGraphics.WindowSettings;
+import commonGraphics.UpdatingWindow;
+import playerTest.graphics.panels.CentralPanel;
+import playerTest.graphics.panels.leftSidePanel.LeftSidePanel;
+
+//
+public final class TestWindow extends UpdatingWindow {
+ private static final @NotNull Dimension WINDOW_SIZE = new Dimension(700, 500);
+ private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
+ private static final @NotNull String WINDOW_TITLE = "Player test";
+ private static final @NotNull Color
+ MAIN_PANEL_BACKGROUND_COLOR = getGray(50, 255),
+ MAIN_PANEL_BORDER_COLOR = getGray(40, 255);
+
+ //
+ public TestWindow() {
+ super(new WindowSettings(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE));
+ //observer = new Observer();
+ addPanels();
+ //addKeyListener();
+ revalidate();
+ startUpdating();
+ }
+
+ //
+ @Override
+ public void addPanels() {
+ LayoutManager layout = new BoxLayout(getContentPane(), BoxLayout.X_AXIS);
+ getContentPane().setLayout(layout);
+ add(new LeftSidePanel(this, MAIN_PANEL_BACKGROUND_COLOR, MAIN_PANEL_BORDER_COLOR));
+ add(new CentralPanel(MAIN_PANEL_BORDER_COLOR, MAIN_PANEL_BORDER_COLOR));
+ // Add more panels here, if needed.
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/CentralPanel.java b/src/test/java/playerTest/graphics/panels/CentralPanel.java
new file mode 100644
index 0000000..e5bfdf6
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/CentralPanel.java
@@ -0,0 +1,43 @@
+package playerTest.graphics.panels;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import commonGraphics.panels.graphicalPanels.CenteredDrawPanel;
+import commonGraphics.panels.graphicalPanels.ScaledDrawInterface;
+
+//
+public final class CentralPanel extends CenteredDrawPanel implements ScaledDrawInterface {
+ private static final double DEFAULT_SCALE = 2.0;
+ private static final @NotNull Color
+ BACKGROUND = Color.black,
+ TEXT_COLOR = Color.white;
+ @SuppressWarnings("FieldMayBeFinal")
+ private double scale;
+
+ //
+ public CentralPanel(@Nullable Color borderColor, @Nullable Color diagonalColor) {
+ super(
+ BACKGROUND,
+ borderColor, false,
+ diagonalColor, true);
+ scale = DEFAULT_SCALE;
+ }
+
+ //
+ @Override
+ public double getScale() {
+ return scale;
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(TEXT_COLOR);
+ g.drawString("A player test", 100, 100);
+ // Paint more stuff here, if needed.
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/leftSidePanel/FirstSection.java b/src/test/java/playerTest/graphics/panels/leftSidePanel/FirstSection.java
new file mode 100644
index 0000000..9712410
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/leftSidePanel/FirstSection.java
@@ -0,0 +1,44 @@
+package playerTest.graphics.panels.leftSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import static commonGraphics.StringUtils.drawNumberedString;
+import commonGraphics.panels.sidePanels.AbstractSectionPanel;
+
+//
+final class FirstSection extends AbstractSectionPanel {
+ private static final int PANEL_HEIGHT = 100;
+ private static final int @NotNull [] TEXT_LOCATION = new int [] {10, 10};
+ private static final @NotNull Color
+ HEADING_COLOR = Color.white,
+ TEXT_COLOR = getGray(170, 255);
+
+ //
+ FirstSection(@Nullable Color borderColor, @Nullable Color diagonalColor) {
+ super(
+ PANEL_HEIGHT,
+ borderColor, true,
+ diagonalColor, false);
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "First section", 1);
+ //TODO: improve this
+ g.setColor(TEXT_COLOR);
+ drawInfoLine(g, "Coming soon...", 2);
+ // Paint more stuff here, if needed.
+ }
+
+ @SuppressWarnings("SameParameterValue")
+ private void drawInfoLine(@NotNull Graphics g, @Nullable String line, int lineNumber) {
+ drawNumberedString(g, line, TEXT_LOCATION, lineNumber);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/leftSidePanel/LeftSidePanel.java b/src/test/java/playerTest/graphics/panels/leftSidePanel/LeftSidePanel.java
new file mode 100644
index 0000000..7d6e44d
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/leftSidePanel/LeftSidePanel.java
@@ -0,0 +1,31 @@
+package playerTest.graphics.panels.leftSidePanel;
+
+import java.awt.Color;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import commonGraphics.UpdatingWindow;
+import commonGraphics.panels.sidePanels.commonLeftSidePanel.CommonLeftSidePanel;
+import commonGraphics.panels.sidePanels.commonLeftSidePanel.CommonTopSection;
+
+//
+public final class LeftSidePanel extends CommonLeftSidePanel {
+ private static final @Nullable Color DIAGONAL_COLOR = null;
+
+ //uses default width
+ public LeftSidePanel(@NotNull UpdatingWindow window,
+ @Nullable Color background, @Nullable Color borderColor) {
+ super(
+ window, background,
+ borderColor, true, true,
+ DIAGONAL_COLOR, false, false);
+ addSections();
+ }
+
+ //
+ @Override
+ public @NotNull CommonTopSection getNewTopSection() {
+ return new TopSection(getSectionBorderColor(), getSectionDiagonalColor());
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/leftSidePanel/SecondSection.java b/src/test/java/playerTest/graphics/panels/leftSidePanel/SecondSection.java
new file mode 100644
index 0000000..845c862
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/leftSidePanel/SecondSection.java
@@ -0,0 +1,44 @@
+package playerTest.graphics.panels.leftSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import static commonGraphics.StringUtils.drawNumberedString;
+import commonGraphics.panels.sidePanels.AbstractSectionPanel;
+
+//
+final class SecondSection extends AbstractSectionPanel {
+ private static final int PANEL_HEIGHT = 100;
+ private static final int @NotNull [] TEXT_LOCATION = new int [] {10, 10};
+ private static final @NotNull Color
+ HEADING_COLOR = Color.white,
+ TEXT_COLOR = getGray(170, 255);
+
+ //
+ SecondSection(@Nullable Color borderColor, @Nullable Color diagonalColor) {
+ super(
+ PANEL_HEIGHT,
+ borderColor, true,
+ diagonalColor, false);
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "Second section", 1);
+ //TODO: improve this
+ g.setColor(TEXT_COLOR);
+ drawInfoLine(g, "Coming soon...", 2);
+ // Paint more stuff here, if needed.
+ }
+
+ @SuppressWarnings("SameParameterValue")
+ private void drawInfoLine(@NotNull Graphics g, @Nullable String line, int lineNumber) {
+ drawNumberedString(g, line, TEXT_LOCATION, lineNumber);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/leftSidePanel/ThirdSection.java b/src/test/java/playerTest/graphics/panels/leftSidePanel/ThirdSection.java
new file mode 100644
index 0000000..90dffec
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/leftSidePanel/ThirdSection.java
@@ -0,0 +1,42 @@
+package playerTest.graphics.panels.leftSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import static commonGraphics.StringUtils.drawNumberedString;
+import commonGraphics.panels.sidePanels.AbstractSectionPanel;
+
+//a blank section for future use
+final class ThirdSection extends AbstractSectionPanel {
+ private static final int PANEL_HEIGHT = 100;
+ private static final int @NotNull [] TEXT_LOCATION = new int [] {10, 10};
+ private static final @NotNull Color
+ HEADING_COLOR = Color.white,
+ TEXT_COLOR = getGray(170, 255);
+
+ //
+ ThirdSection(@Nullable Color borderColor, @Nullable Color diagonalColor) {
+ super(
+ PANEL_HEIGHT,
+ borderColor, true,
+ diagonalColor, false);
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "Third section", 1);
+ g.setColor(TEXT_COLOR);
+ drawInfoLine(g, "For future use", 2);
+ // Paint more stuff here, if needed.
+ }
+
+ private void drawInfoLine(@NotNull Graphics g, @Nullable String line, int lineNumber) {
+ drawNumberedString(g, line, TEXT_LOCATION, lineNumber);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/leftSidePanel/TopSection.java b/src/test/java/playerTest/graphics/panels/leftSidePanel/TopSection.java
new file mode 100644
index 0000000..10d8376
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/leftSidePanel/TopSection.java
@@ -0,0 +1,33 @@
+package playerTest.graphics.panels.leftSidePanel;
+
+import javax.swing.BoxLayout;
+import java.awt.Color;
+import java.awt.LayoutManager;
+
+import org.jetbrains.annotations.Nullable;
+
+import commonGraphics.panels.sidePanels.commonLeftSidePanel.CommonTopSection;
+
+//Necessary for bottom-fixed bottom section;
+final class TopSection extends CommonTopSection {
+ //
+ TopSection(@Nullable Color borderColor, @Nullable Color diagonalColor) {
+ super(borderColor, diagonalColor);
+ addSections();
+ }
+
+ //
+ @Override
+ public void addSections() {
+ LayoutManager layout = new BoxLayout(this, BoxLayout.Y_AXIS);
+ setLayout(layout);
+ @Nullable Color
+ borderColor = getBorderColor(),
+ diagonalColor = getDiagonalColor();
+ add(new FirstSection(borderColor, diagonalColor));
+ add(new SecondSection(borderColor, diagonalColor));
+ add(new ThirdSection(borderColor, diagonalColor));
+ // Add more sections here, if needed.
+ revalidate();
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/models/Character.java b/src/test/java/playerTest/models/Character.java
new file mode 100644
index 0000000..d8070d5
--- /dev/null
+++ b/src/test/java/playerTest/models/Character.java
@@ -0,0 +1,9 @@
+package playerTest.models;
+
+//a game character, a map entity
+public class Character {
+ //
+ Character() {
+ //
+ }
+}
diff --git a/src/test/java/playerTest/models/CharacterContainer.java b/src/test/java/playerTest/models/CharacterContainer.java
new file mode 100644
index 0000000..cc5b746
--- /dev/null
+++ b/src/test/java/playerTest/models/CharacterContainer.java
@@ -0,0 +1,24 @@
+package playerTest.models;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
+import java.util.List;
+
+//functions as a map
+public class CharacterContainer {
+ private final @NotNull List<@NotNull Character> characters;
+
+ //
+ CharacterContainer() {
+ characters = new ArrayList<>();
+ }
+
+ void add(@NotNull Character character) {
+ characters.add(character);
+ }
+
+ @NotNull List<@NotNull Character> getCharacters() {
+ return characters;
+ }
+}
diff --git a/src/test/java/playerTest/models/CharacterUpdater.java b/src/test/java/playerTest/models/CharacterUpdater.java
new file mode 100644
index 0000000..f412df1
--- /dev/null
+++ b/src/test/java/playerTest/models/CharacterUpdater.java
@@ -0,0 +1,38 @@
+package playerTest.models;
+
+import ThreadAbstraction.AbstractUpdater;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+//
+public final class CharacterUpdater extends AbstractUpdater {
+ private final @NotNull CharacterContainer characters;
+
+ //
+ CharacterUpdater(@NotNull CharacterContainer characters) {
+ this.characters = characters;
+ }
+
+ //
+ @Override
+ public void update() {
+ @NotNull List<@NotNull Character> characterList = characters.getCharacters();
+ for (@NotNull Character character : characterList) {
+ updateSingleCharacter(character);
+ }
+ }
+
+ private void updateSingleCharacter(@NotNull Character character) {
+ //TODO: update characters here
+ //semi-ordered below:
+
+ //analyze situation
+ //check AI or user input
+ //apply forces, accelerations, etc.
+
+ //precalculate trajectory
+ //check collisions
+ //apply coordinate, velocity etc. changes
+ }
+}
diff --git a/src/test/java/playerTest/models/Player.java b/src/test/java/playerTest/models/Player.java
new file mode 100644
index 0000000..8ce0a74
--- /dev/null
+++ b/src/test/java/playerTest/models/Player.java
@@ -0,0 +1,21 @@
+package playerTest.models;
+
+import org.jetbrains.annotations.Nullable;
+
+//
+public class Player {
+ private @Nullable Character character;
+
+ //
+ Player() {
+ //
+ }
+
+ public void setCharacter(@Nullable Character character) {
+ this.character = character;
+ }
+
+ public @Nullable Character getCharacter() {
+ return character;
+ }
+}
diff --git a/src/test/java/playerTest/models/PlayerUpdater.java b/src/test/java/playerTest/models/PlayerUpdater.java
new file mode 100644
index 0000000..6ad2289
--- /dev/null
+++ b/src/test/java/playerTest/models/PlayerUpdater.java
@@ -0,0 +1,20 @@
+package playerTest.models;
+
+import ThreadAbstraction.AbstractUpdater;
+import org.jetbrains.annotations.NotNull;
+
+//
+public final class PlayerUpdater extends AbstractUpdater {
+ private final @NotNull Player player;
+
+ //
+ PlayerUpdater(@NotNull Player player) {
+ this.player = player;
+ }
+
+ //
+ @Override
+ public void update() {
+ //TODO: update player here
+ }
+}
diff --git a/src/test/java/test2/graphics/TestWindow.java b/src/test/java/test2/graphics/TestWindow.java
index 99b13c4..c55436f 100644
--- a/src/test/java/test2/graphics/TestWindow.java
+++ b/src/test/java/test2/graphics/TestWindow.java
@@ -9,6 +9,7 @@
import baryModel.BaryUniverse;
+import commonGraphics.WindowSettings;
import commonGraphics.UpdatingWindow;
//A graphical window for testing purposes.
@@ -20,7 +21,7 @@ public final class TestWindow extends UpdatingWindow {
//
public TestWindow(@NotNull BaryUniverse universe) {
- super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE); //default frame rate
+ super(new WindowSettings(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE)); //default frame rate
this.universe = universe;
//observer = new Observer();
addPanels();
From 1445db1fdebd6f9fc23359af923633500e04629b Mon Sep 17 00:00:00 2001
From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com>
Date: Fri, 15 Mar 2024 21:46:16 +0200
Subject: [PATCH 6/7] improvements
---
.../java/playerTest/graphics/TestWindow.java | 12 ++---
.../graphics/TestWindowSettings.java | 20 ++++++++
.../panels/rightSidePanel/BottomSection.java | 51 +++++++++++++++++++
.../panels/rightSidePanel/RightSidePanel.java | 49 ++++++++++++++++++
.../panels/rightSidePanel/Section1.java | 39 ++++++++++++++
.../panels/rightSidePanel/Section2.java | 39 ++++++++++++++
.../panels/rightSidePanel/TopSection.java | 40 +++++++++++++++
7 files changed, 242 insertions(+), 8 deletions(-)
create mode 100644 src/test/java/playerTest/graphics/TestWindowSettings.java
create mode 100644 src/test/java/playerTest/graphics/panels/rightSidePanel/BottomSection.java
create mode 100644 src/test/java/playerTest/graphics/panels/rightSidePanel/RightSidePanel.java
create mode 100644 src/test/java/playerTest/graphics/panels/rightSidePanel/Section1.java
create mode 100644 src/test/java/playerTest/graphics/panels/rightSidePanel/Section2.java
create mode 100644 src/test/java/playerTest/graphics/panels/rightSidePanel/TopSection.java
diff --git a/src/test/java/playerTest/graphics/TestWindow.java b/src/test/java/playerTest/graphics/TestWindow.java
index 38a96ee..a65fd63 100644
--- a/src/test/java/playerTest/graphics/TestWindow.java
+++ b/src/test/java/playerTest/graphics/TestWindow.java
@@ -1,7 +1,5 @@
package playerTest.graphics;
-import java.awt.Dimension;
-import java.awt.Point;
import java.awt.Color;
import java.awt.LayoutManager;
import javax.swing.BoxLayout;
@@ -9,23 +7,20 @@
import org.jetbrains.annotations.NotNull;
import static commonGraphics.ColorUtils.getGray;
-import commonGraphics.WindowSettings;
import commonGraphics.UpdatingWindow;
-import playerTest.graphics.panels.CentralPanel;
import playerTest.graphics.panels.leftSidePanel.LeftSidePanel;
+import playerTest.graphics.panels.CentralPanel;
+import playerTest.graphics.panels.rightSidePanel.RightSidePanel;
//
public final class TestWindow extends UpdatingWindow {
- private static final @NotNull Dimension WINDOW_SIZE = new Dimension(700, 500);
- private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
- private static final @NotNull String WINDOW_TITLE = "Player test";
private static final @NotNull Color
MAIN_PANEL_BACKGROUND_COLOR = getGray(50, 255),
MAIN_PANEL_BORDER_COLOR = getGray(40, 255);
//
public TestWindow() {
- super(new WindowSettings(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE));
+ super(new TestWindowSettings());
//observer = new Observer();
addPanels();
//addKeyListener();
@@ -40,6 +35,7 @@ public void addPanels() {
getContentPane().setLayout(layout);
add(new LeftSidePanel(this, MAIN_PANEL_BACKGROUND_COLOR, MAIN_PANEL_BORDER_COLOR));
add(new CentralPanel(MAIN_PANEL_BORDER_COLOR, MAIN_PANEL_BORDER_COLOR));
+ add(new RightSidePanel(MAIN_PANEL_BACKGROUND_COLOR, MAIN_PANEL_BORDER_COLOR));
// Add more panels here, if needed.
}
}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/TestWindowSettings.java b/src/test/java/playerTest/graphics/TestWindowSettings.java
new file mode 100644
index 0000000..5224392
--- /dev/null
+++ b/src/test/java/playerTest/graphics/TestWindowSettings.java
@@ -0,0 +1,20 @@
+package playerTest.graphics;
+
+import java.awt.Dimension;
+import java.awt.Point;
+
+import org.jetbrains.annotations.NotNull;
+
+import commonGraphics.WindowSettings;
+
+//
+final class TestWindowSettings extends WindowSettings {
+ private static final @NotNull Dimension WINDOW_SIZE = new Dimension(700, 500);
+ private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
+ private static final @NotNull String WINDOW_TITLE = "Player test";
+
+ //
+ TestWindowSettings() {
+ super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/rightSidePanel/BottomSection.java b/src/test/java/playerTest/graphics/panels/rightSidePanel/BottomSection.java
new file mode 100644
index 0000000..1112d6e
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/rightSidePanel/BottomSection.java
@@ -0,0 +1,51 @@
+package playerTest.graphics.panels.rightSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.LayoutManager;
+import javax.swing.BoxLayout;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.TRANSPARENT_BLACK;
+import commonGraphics.panels.MinimalPanel;
+import commonGraphics.panels.sidePanels.SectionContainerInterface;
+
+//
+final class BottomSection extends MinimalPanel implements SectionContainerInterface {
+ private static final boolean
+ DRAW_PANEL_BORDERS = false,
+ DRAW_PANEL_DIAGONALS = false;
+ private final @Nullable Color sectionBorderColor, sectionDiagonalColor;
+ private final boolean drawSectionBorders, drawSectionDiagonals;
+
+ //
+ BottomSection(@Nullable Color borderColor, boolean drawSectionBorders,
+ @Nullable Color diagonalColor, boolean drawSectionDiagonals) {
+ super(TRANSPARENT_BLACK, borderColor, DRAW_PANEL_BORDERS, diagonalColor, DRAW_PANEL_DIAGONALS);
+ sectionBorderColor = borderColor;
+ this.drawSectionBorders = drawSectionBorders;
+ sectionDiagonalColor = diagonalColor;
+ this.drawSectionDiagonals = drawSectionDiagonals;
+ addSections();
+ }
+
+ //
+ @Override
+ public void addSections() {
+ LayoutManager layout = new BoxLayout(this, BoxLayout.Y_AXIS);
+ setLayout(layout);
+ add(new Section1(
+ sectionBorderColor, drawSectionBorders,
+ sectionDiagonalColor, drawSectionDiagonals));
+ add(new Section2(
+ sectionBorderColor, drawSectionBorders,
+ sectionDiagonalColor, drawSectionDiagonals));
+ revalidate();
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {}
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/rightSidePanel/RightSidePanel.java b/src/test/java/playerTest/graphics/panels/rightSidePanel/RightSidePanel.java
new file mode 100644
index 0000000..0496b33
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/rightSidePanel/RightSidePanel.java
@@ -0,0 +1,49 @@
+package playerTest.graphics.panels.rightSidePanel;
+
+import java.awt.Color;
+import java.awt.LayoutManager;
+import javax.swing.BoxLayout;
+
+import org.jetbrains.annotations.Nullable;
+
+import commonGraphics.panels.sidePanels.AbstractSidePanel;
+
+//
+public class RightSidePanel extends AbstractSidePanel {
+ private static final int PANEL_WIDTH = 200;
+ private static final boolean
+ DRAW_SECTION_BORDERS = true,
+ DRAW_SECTION_DIAGONALS = true;
+ private final @Nullable Color sectionBorderColor, sectionDiagonalColor;
+
+ //
+ public RightSidePanel(@Nullable Color background, @Nullable Color borderColor) {
+ super(
+ PANEL_WIDTH, background,
+ borderColor, true,
+ null, false);
+ this.sectionBorderColor = borderColor;
+ this.sectionDiagonalColor = borderColor;
+ addSections();
+ }
+
+ //
+ @Override
+ public void addSections() {
+ LayoutManager layout = new BoxLayout(this, BoxLayout.Y_AXIS);
+ setLayout(layout);
+ add(new TopSection(
+ getTopSectionHeight(),
+ sectionBorderColor, DRAW_SECTION_BORDERS,
+ sectionDiagonalColor, DRAW_SECTION_DIAGONALS));
+ add(new BottomSection(
+ sectionBorderColor, DRAW_SECTION_BORDERS,
+ sectionDiagonalColor, DRAW_SECTION_DIAGONALS));
+ revalidate();
+ }
+
+ @SuppressWarnings("SuspiciousNameCombination")
+ private int getTopSectionHeight() {
+ return PANEL_WIDTH; //for a square panel
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/rightSidePanel/Section1.java b/src/test/java/playerTest/graphics/panels/rightSidePanel/Section1.java
new file mode 100644
index 0000000..577d448
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/rightSidePanel/Section1.java
@@ -0,0 +1,39 @@
+package playerTest.graphics.panels.rightSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import static commonGraphics.StringUtils.drawNumberedString;
+import commonGraphics.panels.sidePanels.AbstractSectionPanel;
+
+//
+final class Section1 extends AbstractSectionPanel {
+ private static final int PANEL_HEIGHT = 100;
+ private static final int @NotNull [] TEXT_LOCATION = new int [] {10, 10};
+ private static final @NotNull Color
+ HEADING_COLOR = Color.white,
+ TEXT_COLOR = getGray(170, 255);
+
+ //
+ Section1(@Nullable Color borderColor, boolean drawBorders,
+ @Nullable Color diagonalColor, boolean drawDiagonals) {
+ super(PANEL_HEIGHT, borderColor, drawBorders, diagonalColor, drawDiagonals);
+ }
+
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "Blank section 1", 1);
+ g.setColor(TEXT_COLOR);
+ drawInfoLine(g, "For future use", 2);
+ // Paint more stuff here, if needed.
+ }
+
+ private void drawInfoLine(@NotNull Graphics g, @Nullable String line, int lineNumber) {
+ drawNumberedString(g, line, TEXT_LOCATION, lineNumber);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/rightSidePanel/Section2.java b/src/test/java/playerTest/graphics/panels/rightSidePanel/Section2.java
new file mode 100644
index 0000000..64756a9
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/rightSidePanel/Section2.java
@@ -0,0 +1,39 @@
+package playerTest.graphics.panels.rightSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import static commonGraphics.StringUtils.drawNumberedString;
+import commonGraphics.panels.sidePanels.AbstractSectionPanel;
+
+//
+final class Section2 extends AbstractSectionPanel {
+ private static final int PANEL_HEIGHT = 100;
+ private static final int @NotNull [] TEXT_LOCATION = new int [] {10, 10};
+ private static final @NotNull Color
+ HEADING_COLOR = Color.white,
+ TEXT_COLOR = getGray(170, 255);
+
+ //
+ Section2(@Nullable Color borderColor, boolean drawBorders,
+ @Nullable Color diagonalColor, boolean drawDiagonals) {
+ super(PANEL_HEIGHT, borderColor, drawBorders, diagonalColor, drawDiagonals);
+ }
+
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "Blank section 2", 1);
+ g.setColor(TEXT_COLOR);
+ drawInfoLine(g, "For future use", 2);
+ // Paint more stuff here, if needed.
+ }
+
+ private void drawInfoLine(@NotNull Graphics g, @Nullable String line, int lineNumber) {
+ drawNumberedString(g, line, TEXT_LOCATION, lineNumber);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/rightSidePanel/TopSection.java b/src/test/java/playerTest/graphics/panels/rightSidePanel/TopSection.java
new file mode 100644
index 0000000..76a4841
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/rightSidePanel/TopSection.java
@@ -0,0 +1,40 @@
+package playerTest.graphics.panels.rightSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import static commonGraphics.StringUtils.drawNumberedString;
+import commonGraphics.panels.sidePanels.AbstractSectionPanel;
+
+//
+final class TopSection extends AbstractSectionPanel {
+ private static final int @NotNull [] TEXT_LOCATION = new int [] {10, 10};
+ private static final @NotNull Color
+ HEADING_COLOR = Color.white,
+ TEXT_COLOR = getGray(170, 255);
+
+ //
+ TopSection(int height,
+ @Nullable Color borderColor, boolean drawBorders,
+ @Nullable Color diagonalColor, boolean drawDiagonals) {
+ super(height, borderColor, drawBorders, diagonalColor, drawDiagonals);
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "Top section", 1);
+ g.setColor(TEXT_COLOR);
+ drawInfoLine(g, "Coming soon...", 2);
+ // Paint more stuff here, if needed.
+ }
+
+ private void drawInfoLine(@NotNull Graphics g, @Nullable String line, int lineNumber) {
+ drawNumberedString(g, line, TEXT_LOCATION, lineNumber);
+ }
+}
\ No newline at end of file
From 920318139ad40327f4b5f470ad97707ff1e2b707 Mon Sep 17 00:00:00 2001
From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com>
Date: Fri, 15 Mar 2024 21:54:49 +0200
Subject: [PATCH 7/7] improvements
---
src/test/java/demo/graphics/DemoWindow.java | 8 +-------
.../demo/graphics/DemoWindowSettings.java | 20 +++++++++++++++++++
.../java/planetTest/graphics/TestWindow.java | 8 +-------
.../graphics/TestWindowSettings.java | 20 +++++++++++++++++++
.../graphics/TestWindowSettings.java | 2 +-
src/test/java/test2/graphics/TestWindow.java | 8 +-------
.../test2/graphics/TestWindowSettings.java | 20 +++++++++++++++++++
7 files changed, 64 insertions(+), 22 deletions(-)
create mode 100644 src/test/java/demo/graphics/DemoWindowSettings.java
create mode 100644 src/test/java/planetTest/graphics/TestWindowSettings.java
create mode 100644 src/test/java/test2/graphics/TestWindowSettings.java
diff --git a/src/test/java/demo/graphics/DemoWindow.java b/src/test/java/demo/graphics/DemoWindow.java
index b211561..2c6bbc9 100644
--- a/src/test/java/demo/graphics/DemoWindow.java
+++ b/src/test/java/demo/graphics/DemoWindow.java
@@ -1,7 +1,5 @@
package demo.graphics;
-import java.awt.Point;
-import java.awt.Dimension;
import java.awt.Color;
import java.awt.LayoutManager;
import javax.swing.BoxLayout;
@@ -11,7 +9,6 @@
import baryModel.BaryUniverse;
import static commonGraphics.ColorUtils.getGray;
-import commonGraphics.WindowSettings;
import commonGraphics.UpdatingWindow;
import baryGraphics.Observer;
import demo.graphics.panels.leftSidePanel.LeftSidePanel;
@@ -20,9 +17,6 @@
//A graphical window for demo.
public final class DemoWindow extends UpdatingWindow {
- private static final @NotNull Dimension WINDOW_SIZE = new Dimension(1200, 850);
- private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
- private static final @NotNull String WINDOW_TITLE = "Bary window!";
private static final long FRAME_RATE = 60;
private static final @NotNull Color
MAIN_PANEL_BACKGROUND_COLOR = getGray(50, 255),
@@ -33,7 +27,7 @@ public final class DemoWindow extends UpdatingWindow {
//Creates a new window.
public DemoWindow(@NotNull BaryUniverse universe) {
- super(new WindowSettings(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE), FRAME_RATE);
+ super(new DemoWindowSettings(), FRAME_RATE);
this.universe = universe;
observer = new Observer();
addPanels();
diff --git a/src/test/java/demo/graphics/DemoWindowSettings.java b/src/test/java/demo/graphics/DemoWindowSettings.java
new file mode 100644
index 0000000..80305ab
--- /dev/null
+++ b/src/test/java/demo/graphics/DemoWindowSettings.java
@@ -0,0 +1,20 @@
+package demo.graphics;
+
+import java.awt.Dimension;
+import java.awt.Point;
+
+import org.jetbrains.annotations.NotNull;
+
+import commonGraphics.WindowSettings;
+
+//
+public class DemoWindowSettings extends WindowSettings {
+ private static final @NotNull Dimension WINDOW_SIZE = new Dimension(1200, 850);
+ private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
+ private static final @NotNull String WINDOW_TITLE = "Bary window!";
+
+ //
+ DemoWindowSettings() {
+ super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/planetTest/graphics/TestWindow.java b/src/test/java/planetTest/graphics/TestWindow.java
index 6d5143f..3240ffb 100644
--- a/src/test/java/planetTest/graphics/TestWindow.java
+++ b/src/test/java/planetTest/graphics/TestWindow.java
@@ -1,7 +1,5 @@
package planetTest.graphics;
-import java.awt.Point;
-import java.awt.Dimension;
import java.awt.Color;
import java.awt.LayoutManager;
import javax.swing.BoxLayout;
@@ -9,7 +7,6 @@
import org.jetbrains.annotations.NotNull;
import static commonGraphics.ColorUtils.getGray;
-import commonGraphics.WindowSettings;
import commonGraphics.UpdatingWindow;
import planetTest.graphics.panels.leftSidePanel.LeftSidePanel;
import planetTest.graphics.panels.CentralPanel;
@@ -17,9 +14,6 @@
//A graphical window for planetary testing purposes.
public final class TestWindow extends UpdatingWindow {
- private static final @NotNull Dimension WINDOW_SIZE = new Dimension(700, 500);
- private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
- private static final @NotNull String WINDOW_TITLE = "Planet test";
private static final @NotNull Color
MAIN_PANEL_BACKGROUND_COLOR = getGray(50, 255),
MAIN_PANEL_BORDER_COLOR = getGray(40, 255);
@@ -27,7 +21,7 @@ public final class TestWindow extends UpdatingWindow {
//
public TestWindow(@NotNull PlanetContainer planetContainer) {
- super(new WindowSettings(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE)); //default frame rate
+ super(new TestWindowSettings()); //default frame rate
this.planetContainer = planetContainer;
//observer = new Observer();
addPanels();
diff --git a/src/test/java/planetTest/graphics/TestWindowSettings.java b/src/test/java/planetTest/graphics/TestWindowSettings.java
new file mode 100644
index 0000000..5e82574
--- /dev/null
+++ b/src/test/java/planetTest/graphics/TestWindowSettings.java
@@ -0,0 +1,20 @@
+package planetTest.graphics;
+
+import java.awt.Dimension;
+import java.awt.Point;
+
+import org.jetbrains.annotations.NotNull;
+
+import commonGraphics.WindowSettings;
+
+//
+public class TestWindowSettings extends WindowSettings {
+ private static final @NotNull Dimension WINDOW_SIZE = new Dimension(700, 500);
+ private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
+ private static final @NotNull String WINDOW_TITLE = "Planet test";
+
+ //
+ TestWindowSettings() {
+ super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/TestWindowSettings.java b/src/test/java/playerTest/graphics/TestWindowSettings.java
index 5224392..6be7b43 100644
--- a/src/test/java/playerTest/graphics/TestWindowSettings.java
+++ b/src/test/java/playerTest/graphics/TestWindowSettings.java
@@ -9,7 +9,7 @@
//
final class TestWindowSettings extends WindowSettings {
- private static final @NotNull Dimension WINDOW_SIZE = new Dimension(700, 500);
+ private static final @NotNull Dimension WINDOW_SIZE = new Dimension(900, 700);
private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
private static final @NotNull String WINDOW_TITLE = "Player test";
diff --git a/src/test/java/test2/graphics/TestWindow.java b/src/test/java/test2/graphics/TestWindow.java
index c55436f..ebe0a84 100644
--- a/src/test/java/test2/graphics/TestWindow.java
+++ b/src/test/java/test2/graphics/TestWindow.java
@@ -1,7 +1,5 @@
package test2.graphics;
-import java.awt.Point;
-import java.awt.Dimension;
import java.awt.LayoutManager;
import javax.swing.BoxLayout;
@@ -9,19 +7,15 @@
import baryModel.BaryUniverse;
-import commonGraphics.WindowSettings;
import commonGraphics.UpdatingWindow;
//A graphical window for testing purposes.
public final class TestWindow extends UpdatingWindow {
- private static final @NotNull Dimension WINDOW_SIZE = new Dimension(400, 300);
- private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
- private static final @NotNull String WINDOW_TITLE = "Test 2";
private final @NotNull BaryUniverse universe;
//
public TestWindow(@NotNull BaryUniverse universe) {
- super(new WindowSettings(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE)); //default frame rate
+ super(new TestWindowSettings()); //default frame rate
this.universe = universe;
//observer = new Observer();
addPanels();
diff --git a/src/test/java/test2/graphics/TestWindowSettings.java b/src/test/java/test2/graphics/TestWindowSettings.java
new file mode 100644
index 0000000..2d05a8f
--- /dev/null
+++ b/src/test/java/test2/graphics/TestWindowSettings.java
@@ -0,0 +1,20 @@
+package test2.graphics;
+
+import java.awt.Dimension;
+import java.awt.Point;
+
+import org.jetbrains.annotations.NotNull;
+
+import commonGraphics.WindowSettings;
+
+//
+final class TestWindowSettings extends WindowSettings {
+ private static final @NotNull Dimension WINDOW_SIZE = new Dimension(400, 300);
+ private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
+ private static final @NotNull String WINDOW_TITLE = "Test 2";
+
+ //
+ TestWindowSettings() {
+ super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE);
+ }
+}
\ No newline at end of file