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