From 7086953feaf7df25d6dd8fe4a0d98549652de279 Mon Sep 17 00:00:00 2001 From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com> Date: Sun, 21 Aug 2022 08:22:39 +0300 Subject: [PATCH 01/11] 0.8.4 * refactoring graphics adapter * minor changes to windows * header and footer page preset * two-page demo stub * multi-adapter demo * general demo restructure * some javadocs added * other minor changes --- pom.xml | 2 +- .../AbstractGraphicsAdapter.java | 14 --- .../java/graphicsEngine/GraphicsAdapter.java | 25 ++++ .../presets/HeaderAndFooterPage.java | 31 +++++ .../presets/panels/AbstractFooter.java | 12 ++ .../presets/panels/AbstractHeader.java | 12 ++ .../presets/panels/HorizontalPanel.java | 20 ++++ .../windows/AbstractWindow.java | 35 ++++-- .../windows/MultiPageWindow.java | 14 +-- .../graphicsEngine/windowStructure.png | Bin 0 -> 5420 bytes src/test/java/graphicsEngineDemo/ReadMe.md | 10 +- .../{paged => featurePreview}/Main.java | 17 +-- .../{paged => featurePreview}/ReadMe.md | 0 .../common/placeholder | 0 .../demoPages/CommonDemoPage.java | 2 +- .../demoPages/Page1.java | 2 +- .../demoPages/Page2.java | 2 +- .../demoPages/placeholder | 0 .../demoSelectPage/DemoSelectPage.java | 2 +- .../menuPages/placeholder | 0 .../menuPages/settingsPage/SettingsPage.java | 2 +- .../menuPages/startingPage/StartingPage.java | 2 +- .../multiAdapterDemo/Main.java | 110 ++++++++++++++++++ .../graphicsEngineDemo/simplest/Main.java | 28 ----- .../graphicsEngineDemo/simplestDemo/Main.java | 38 ++++++ .../graphicsEngineDemo/twoPageDemo/Main.java | 100 ++++++++++++++++ ...icsAdapter.java => MyGraphicsAdapter.java} | 6 +- .../java/graphicsEngineSandbox/main/Main.java | 11 +- .../graphicsEngineSandbox/main/Starter.java | 4 +- 29 files changed, 412 insertions(+), 89 deletions(-) delete mode 100644 src/main/java/graphicsEngine/AbstractGraphicsAdapter.java create mode 100644 src/main/java/graphicsEngine/GraphicsAdapter.java create mode 100644 src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java create mode 100644 src/main/java/graphicsEngine/presets/panels/AbstractFooter.java create mode 100644 src/main/java/graphicsEngine/presets/panels/AbstractHeader.java create mode 100644 src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java create mode 100644 src/main/resources/graphicsEngine/windowStructure.png rename src/test/java/graphicsEngineDemo/{paged => featurePreview}/Main.java (78%) rename src/test/java/graphicsEngineDemo/{paged => featurePreview}/ReadMe.md (100%) rename src/test/java/graphicsEngineDemo/{paged => featurePreview}/common/placeholder (100%) rename src/test/java/graphicsEngineDemo/{paged => featurePreview}/demoPages/CommonDemoPage.java (82%) rename src/test/java/graphicsEngineDemo/{paged => featurePreview}/demoPages/Page1.java (78%) rename src/test/java/graphicsEngineDemo/{paged => featurePreview}/demoPages/Page2.java (79%) rename src/test/java/graphicsEngineDemo/{paged => featurePreview}/demoPages/placeholder (100%) rename src/test/java/graphicsEngineDemo/{paged => featurePreview}/menuPages/demoSelectPage/DemoSelectPage.java (79%) rename src/test/java/graphicsEngineDemo/{paged => featurePreview}/menuPages/placeholder (100%) rename src/test/java/graphicsEngineDemo/{paged => featurePreview}/menuPages/settingsPage/SettingsPage.java (80%) rename src/test/java/graphicsEngineDemo/{paged => featurePreview}/menuPages/startingPage/StartingPage.java (79%) create mode 100644 src/test/java/graphicsEngineDemo/multiAdapterDemo/Main.java delete mode 100644 src/test/java/graphicsEngineDemo/simplest/Main.java create mode 100644 src/test/java/graphicsEngineDemo/simplestDemo/Main.java create mode 100644 src/test/java/graphicsEngineDemo/twoPageDemo/Main.java rename src/test/java/graphicsEngineSandbox/graphics/{GraphicsAdapter.java => MyGraphicsAdapter.java} (80%) diff --git a/pom.xml b/pom.xml index 617df38..d9b2ce4 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.KruMF GraphicsEngine - 0.8.3 + 0.8.4 UTF-8 diff --git a/src/main/java/graphicsEngine/AbstractGraphicsAdapter.java b/src/main/java/graphicsEngine/AbstractGraphicsAdapter.java deleted file mode 100644 index 972a6cc..0000000 --- a/src/main/java/graphicsEngine/AbstractGraphicsAdapter.java +++ /dev/null @@ -1,14 +0,0 @@ -package graphicsEngine; - -//for allowing not to use graphics manager directly -public class AbstractGraphicsAdapter { - public GraphicsManager graphics; - - public AbstractGraphicsAdapter() { - graphics = new GraphicsManager(); - } - - public final void end() { - graphics.end(); - } -} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/GraphicsAdapter.java b/src/main/java/graphicsEngine/GraphicsAdapter.java new file mode 100644 index 0000000..19c31d2 --- /dev/null +++ b/src/main/java/graphicsEngine/GraphicsAdapter.java @@ -0,0 +1,25 @@ +package graphicsEngine; + +/** + * A graphics adapter class. + * Intended for allowing not to use the GraphicsManager directly. + * Reference this to use the GraphicsEngine. + * TODO: check redundancy + */ +public class GraphicsAdapter { + //TODO: seems redundant, originally meant for security + public GraphicsManager graphics; + + //TODO: seems redundant, originally meant for security + public GraphicsAdapter() { + graphics = new GraphicsManager(); + } + + /** + * Call this to end graphics. + * TODO: seems redundant, originally meant for security + */ + public final void end() { + graphics.end(); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java b/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java new file mode 100644 index 0000000..9e1d2da --- /dev/null +++ b/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java @@ -0,0 +1,31 @@ +package graphicsEngine.presets; + +import graphicsEngine.presets.panels.AbstractFooter; +import graphicsEngine.presets.panels.AbstractHeader; +import graphicsEngine.windows.AbstractPage; +import org.jetbrains.annotations.Nullable; + +import java.awt.*; + +public abstract class HeaderAndFooterPage extends AbstractPage { + + public HeaderAndFooterPage(@Nullable AbstractHeader header, + @Nullable AbstractFooter footer) { + super(); + setLayout(new BorderLayout(0, 0)); + addHeaderAndFooter(header, footer); + addParts(); + } + + private void addHeaderAndFooter(@Nullable AbstractHeader header, + @Nullable AbstractFooter footer) { + if (header != null) { + add(header, BorderLayout.NORTH); + } + if (footer != null) { + add(footer, BorderLayout.SOUTH); + } + } + + public abstract void addParts(); +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/panels/AbstractFooter.java b/src/main/java/graphicsEngine/presets/panels/AbstractFooter.java new file mode 100644 index 0000000..5abbc65 --- /dev/null +++ b/src/main/java/graphicsEngine/presets/panels/AbstractFooter.java @@ -0,0 +1,12 @@ +package graphicsEngine.presets.panels; + +import graphicsEngine.panels.PanelColors; + +import org.jetbrains.annotations.Nullable; + +public abstract class AbstractFooter extends HorizontalPanel { + public AbstractFooter(@Nullable PanelColors panelColors, + int height) { + super(panelColors, height); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/panels/AbstractHeader.java b/src/main/java/graphicsEngine/presets/panels/AbstractHeader.java new file mode 100644 index 0000000..ffb458b --- /dev/null +++ b/src/main/java/graphicsEngine/presets/panels/AbstractHeader.java @@ -0,0 +1,12 @@ +package graphicsEngine.presets.panels; + +import graphicsEngine.panels.PanelColors; + +import org.jetbrains.annotations.Nullable; + +public abstract class AbstractHeader extends HorizontalPanel { + public AbstractHeader(@Nullable PanelColors panelColors, + int height) { + super(panelColors, height); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java b/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java new file mode 100644 index 0000000..8ec3824 --- /dev/null +++ b/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java @@ -0,0 +1,20 @@ +package graphicsEngine.presets.panels; + +import graphicsEngine.panels.PanelColors; +import graphicsEngine.panels.SimplePanel; + +import java.awt.*; + +import org.jetbrains.annotations.Nullable; + +abstract class HorizontalPanel extends SimplePanel { + protected HorizontalPanel(@Nullable PanelColors panelColors, int height) { + super(panelColors, false); + setPreferredSize(new Dimension( + Integer.MAX_VALUE, + height)); + addParts(); + } + + public abstract void addParts(); +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/AbstractWindow.java b/src/main/java/graphicsEngine/windows/AbstractWindow.java index aa20cec..3e0c712 100644 --- a/src/main/java/graphicsEngine/windows/AbstractWindow.java +++ b/src/main/java/graphicsEngine/windows/AbstractWindow.java @@ -1,6 +1,6 @@ package graphicsEngine.windows; -import javax.swing.*; +import javax.swing.JFrame; import java.util.Objects; @@ -10,7 +10,7 @@ //TODO: add javadocs public abstract class AbstractWindow extends JFrame { protected static final String EMPTY_KEY = ""; - public String activePage; + private String activePage; //creates a window with required parameters public AbstractWindow(@NotNull WindowConfig config) { @@ -22,8 +22,7 @@ public AbstractWindow(@NotNull WindowConfig config) { int[] location = config.getLocation(); setLocation(location[0], location[1]); - setActivePage(EMPTY_KEY); - addParts(); + setActivePage(null); setVisible(true); } @@ -35,16 +34,32 @@ public static int[] correctWindowsSizeError(int[] size) { size[1] + errorCorrection[1]}; } - //override this to add parts - public abstract void addParts(); + /** + * Get the key of the currently active page. + * + * @return String of the key. + */ + public String getActivePage() { + return activePage; + } - //manually reset parts + //TODO: finish this and add javadoc + public void setActivePage(@Nullable String key) { + activePage = Objects.requireNonNullElse(key, EMPTY_KEY); + resetParts(); + } + + /** + * Call this to manually reset parts. + */ public final void resetParts() { getContentPane().removeAll(); addParts(); } - public void setActivePage(@Nullable String key) { - activePage = Objects.requireNonNullElse(key, EMPTY_KEY); - } + /** + * Override this to add parts. + * Called upon creation and part reset. + */ + public abstract void addParts(); } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/MultiPageWindow.java b/src/main/java/graphicsEngine/windows/MultiPageWindow.java index 5cfaa3d..a08d6a9 100644 --- a/src/main/java/graphicsEngine/windows/MultiPageWindow.java +++ b/src/main/java/graphicsEngine/windows/MultiPageWindow.java @@ -12,16 +12,14 @@ // TODO: finish this and add javadoc public abstract class MultiPageWindow extends AbstractWindow { - private Map pages;// = new HashMap<>(); + private Map pages; - @SuppressWarnings("unused") public MultiPageWindow( @NotNull WindowConfig config, @NotNull List pages) { this(config, pages, null); } - @SuppressWarnings("unused") public MultiPageWindow( @NotNull WindowConfig config, @NotNull List pages, @@ -48,9 +46,11 @@ private void addPage(@NotNull AbstractPage page) { pages.put(page.getPageKey(), page); } - public final void setActivePage(@NotNull String key) { - if (!key.equals(EMPTY_KEY) && pages.containsKey(key)) { - super.setActivePage(key); + @Override + public final void setActivePage(@Nullable String key) { + String nonNullKey = Objects.requireNonNullElse(key, EMPTY_KEY); + if (!nonNullKey.equals(EMPTY_KEY) && pages.containsKey(nonNullKey)) { + super.setActivePage(nonNullKey); resetParts(); } else { printLine("Page not found"); @@ -60,7 +60,7 @@ public final void setActivePage(@NotNull String key) { @Override public final void addParts() { if (pages != null && pages.size() > 0) { - add(pages.get(activePage)); + add(pages.get(getActivePage())); } } } \ No newline at end of file diff --git a/src/main/resources/graphicsEngine/windowStructure.png b/src/main/resources/graphicsEngine/windowStructure.png new file mode 100644 index 0000000000000000000000000000000000000000..eb01e39c7252d3484e49fbd910d34289d20900f4 GIT binary patch literal 5420 zcmcgwc{r5++8;|X*=G`pvJ5I@EBlg>WiUvRok1zP$kLE7Nt9(KOW7idNE5}7b!?&E zsDwts*msj%hR!qUci!uLulM|}&biJxe>~S*-|yVdz2Eoee(pQwrUo4Q4(tLATCNtNN@3VFk~>0m6OPHlLZEf+Fu0c zr9MJig>7h*&5Wdb*l8~JMZjZA4dEhcV&Gd-cVYYU6tU*9q`$t<)+cHo@r_U&)Y_5r zyVDh1KmB6e%tNGK3~Ux!g)ytn-9afReD`13k2sp$#SU4*j>gJN-cue7+9*?|sJ*)- zrkeA`*)8jCrETns9%C+Zi-DFGvc7Yzy=^<}eC^L39~w)XazE~E_Rw-+s{M{Hw)Fq=b+PDt`F-I_Mbr;oZ5I1OkL6WSZ?)`L%~qEvS9P zqDoA+M?J3X!D!ouF?&L1<$7@NW&7mgNkaKF!2;gC%*yhj{>=KIv>p~iROm-(tkUY( zq;>-&<|9W+i+M$DPre}e6f{x3JqM6YksZ|De(CRiNx*^AI0(Dsdf&1nPSO3Gf9cee z>@%(;o(ymN(JGWMdhXU-9XaOea;wh-p?xReU8<#zSY3t{8P zWU>*LgX6g3>!Q`b-iMhQ4Ge)r+GHeHDn8c>UEJ<(_W@%AyF2-oC*h-Q>*Ij4#PXt& zmIb%cV2zNQx~4u(yf<_EW5PNpmzu7T*Yexbf>#L1vf62cj+2nqXsmi!R>7RtxOg9Tx9_m&J@kXYuLZa*R?BK>^uWm(Pl#^&I3eYi-8 z=u?hu@*UQ6Hge0kW|CJH|okgm>?fE!gg&$v{@J&AqaWZ1@$%U!?DuLxT1h%bxy4kG$#r^nd+nrFajFxXkU6gpp`a zM5yoqJOLW4--%cq$U{&UjAG9n4Liw@jUZMD??qf@)Ih(+wEXCyx(d>?R}=KQ&1m8j z$HOzdhQ!q22e2?Dthr#MJC;f|g!?mRU&AG_8E9l5O-T|OxZ01r1Zj=&>i=#)Y_1+x zv>)~zMB^Sxu$OdY^M1L9ZPO%dEmM53fWo~9IH&me@$;#h=QDp41oeH%yUfG3R5v|g zUx^oebNI18RgbaEVYHf*}XT%)yb)1Nj ztLByZkP7Cmi8QK#>QOK<(j8}HP5Wd=TTzt{bEbzX;|Fr1{Abi~m;fDix^E@GlTrMz zTrkxHLfRv52!{eu%Vhig@c&mCmG?s8bcEA?C0FKtdOZLhMi3DqKQC=O!9{wK|0q@e ztGfPH@%-C0BFT^R@2TLQdQ=Cx2SfSNJ<*`5Z_l956d%bs!}eYevKB)RccyDIFA5H^ z{qvB5Hnj5{0%@HiE}_vP& zfav9Fav_2wrQF;=&B=PQ|(ZS}@ z(56+#mb$(27Q>Kv9S#54vSzu}R>0tIiv8nZNt`=aHP8R-dw|GOd zdYc^{sv(g)8bt_n`FHz+X?*igre6npEQC+_<%A3Te__TlfB8 z&Z$VmTw&L<*?H{$`132fs(1C_VKLvXZ4fB^OS2gTi8{ zbh?jZuB=&IDz0b?a0zCyQTOY^?z+tjW_pI9<9-i%@&+dPg0EvOgE_X}DwuV4@Vw2K zlv!eFe}+T%fQtdMhRM#p#JTRenL`d~15sOL8F2s{{!y8;4{!f_a#c~A)Se-CH zvsW~>rkSk0YgdlT~OXFqW@crpe~Om@*-dk_!0>qYzj>55WEeumplwB(fKwBJEUdd67K+=f`_vFARHFPBogkdqufXRN=R0M>?CT~dmSBV7fSI>zQi|6vtm0~w?z$F#%9l-rE zBf0T7Lgg4B*uwwTE4DP}-QW1|d0MGR1dg{2Zkxl30?Z~%)@q^siR zXAB{+{w~qCDwn>pR-N#De@67kirRs@)1G_P3>|lyIc38+9hS)ngljY!h4oXTdxk3p zL7WDVUPX&v0{k=@i0MB^lpS&7wjyoo$c!X)aj2fCDH!bAq=Zlr0u0hLOXJ=XvAr$J zqzq1+%q5{rA+~^k+{tN(*7a!o7hNE=E;0%I95(|H>9lu~)%uz9EshHFHThpvWM*L_G{* zZ-Yos$)KhC@ltj7H>%EoyAGd*WCQc_T85laa;oH$ETfP$(D=3wGzbm!?~pu$xNE z1Dkukf>5n`>HzkPvyAIjWd<|KL;a=Vw7_JO{$|{#m+mfw9K>_zLc8VbV4)8=x6Y?N z)7b1k{Y1!>d(CRgO;F>e19-U)+4J;bg3Gr@D;}~Yc>_L}oR9foqn&)+syNr~<@ z-k6HmuQERS!|Fpe)nDTiL(Gjh%-O~f1DA3P*XZsfZL*_SazP`0}(6W>Fw@03t)*S^RzBPZ$&LIh$zQJanv_tZ@@OBVWW_c5s zNL#qO$!4dUe~bQvrLCL3#m1~x(=)Qq#8~nIbnSW}6FUN)!QG?*nP91tKxM|2terWa ziOpJA>RTN0DVKt<6hlsAl*i5Xi+z=xTQz6lR}e<+ELs-AlO2bgV)X;g+2kt-5~$jF+de$q8~~J!%KE9G*Oc^K0OE4 z2$BkO;_nPPE?5oBvFdsXsN3JCdd;X~<_~*FK~69hv}V2r(|k5PU4bAoU^u1*ZvN@iDL!YSR_i zR^*0O-~$`ty^(@KWr}hVX1-C?71DdMN*G1?nv6Ns@&~sTb~n{DRos!pxLXF0yncPr z3ksF573LqoPO_37;HcD7YjPDr_c41LRnd@3zHfpwp3bs;GduE#{^7+%61eZj`y@;L zk3&JiVW8b~L;I2PF?o!@G^;zD3Cr9A^vsIWZ-fW0`}1MbFtq@_U5?kQ*)Os1=jX9^ zWGL8VAad-DVfyyMmf3Bf&&fmu3(&8;jW(!GtXom;>t?&}`JGlsColm``XJUkOh-j{ zmuSnF|Hq|v{p)K|_1li@J@zED51Un0#bNXZ&hHUD%j*^MsWm`P_15{cD~1IPwOZ9! z$-nX0Q`yH7>npY z@47{Tv1&l=B%+%MfPj9{{LIE?A;Y?QOr~vucTkK?S_4^2b=tp6t*zg$JZ#86&1FKr z%WDQgm(OECavtG?4LK0M3!G?iCU95U^B$Ek?3>t1cynK|51oBd6BrC~W#ApVX1y^^ zcf2sDDn+JfX-?a;)r14GJAEcRx<)6pF#w$^{Ntg!gMizN2}1T}YxSXR-v$j6f)org z?!UTNEu7~0)RtKHgHIFc!#_p0igSchE)a@c6s1^Z7KPEnGQnEKq^m3vir6@cr9OpR zWr^_tRvgr`Fp8P@7$^Hz%-FBNjOhpCfA(a{yhl9OAMmK{7!MuR{^4Tgw>E%(vG)1x iE#fa8)k{MWKUhu?GGraphics engine demos +# Graphics engine demos -Currently available: -* Simplest - everything in just one class. -* Paged - with multiple pages (currently not available) +Currently available demos: +* Simplest demo - everything in just one class. +* Two-page demo - one window, two pages. +* Multi-adapter demo - *self explanatory...* +* Feature preview - multiple pages (currently not available) containing various parts of GraphicsEngine and their use. Further instructions will be in the directory of the demo. \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/paged/Main.java b/src/test/java/graphicsEngineDemo/featurePreview/Main.java similarity index 78% rename from src/test/java/graphicsEngineDemo/paged/Main.java rename to src/test/java/graphicsEngineDemo/featurePreview/Main.java index 426afb7..0383576 100644 --- a/src/test/java/graphicsEngineDemo/paged/Main.java +++ b/src/test/java/graphicsEngineDemo/featurePreview/Main.java @@ -1,12 +1,12 @@ -package graphicsEngineDemo.paged; +package graphicsEngineDemo.featurePreview; -import graphicsEngine.AbstractGraphicsAdapter; +import graphicsEngine.GraphicsAdapter; import graphicsEngine.windows.MultiPageWindow; import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.AbstractPage; -import graphicsEngineDemo.paged.demoPages.Page1; -import graphicsEngineDemo.paged.demoPages.Page2; +import graphicsEngineDemo.featurePreview.demoPages.Page1; +import graphicsEngineDemo.featurePreview.demoPages.Page2; import java.util.List; import java.util.ArrayList; @@ -17,14 +17,9 @@ public class Main { public static void main(String[] args) { printLine("Paged demo currently not available"); - new GraphicsAdapter(); - } - - private static class GraphicsAdapter extends AbstractGraphicsAdapter { - protected GraphicsAdapter() { - super(); + new GraphicsAdapter() {{ graphics.newWindow(new Window()); - } + }}; } private static class Window extends MultiPageWindow { diff --git a/src/test/java/graphicsEngineDemo/paged/ReadMe.md b/src/test/java/graphicsEngineDemo/featurePreview/ReadMe.md similarity index 100% rename from src/test/java/graphicsEngineDemo/paged/ReadMe.md rename to src/test/java/graphicsEngineDemo/featurePreview/ReadMe.md diff --git a/src/test/java/graphicsEngineDemo/paged/common/placeholder b/src/test/java/graphicsEngineDemo/featurePreview/common/placeholder similarity index 100% rename from src/test/java/graphicsEngineDemo/paged/common/placeholder rename to src/test/java/graphicsEngineDemo/featurePreview/common/placeholder diff --git a/src/test/java/graphicsEngineDemo/paged/demoPages/CommonDemoPage.java b/src/test/java/graphicsEngineDemo/featurePreview/demoPages/CommonDemoPage.java similarity index 82% rename from src/test/java/graphicsEngineDemo/paged/demoPages/CommonDemoPage.java rename to src/test/java/graphicsEngineDemo/featurePreview/demoPages/CommonDemoPage.java index cefc045..2e9a283 100644 --- a/src/test/java/graphicsEngineDemo/paged/demoPages/CommonDemoPage.java +++ b/src/test/java/graphicsEngineDemo/featurePreview/demoPages/CommonDemoPage.java @@ -1,4 +1,4 @@ -package graphicsEngineDemo.paged.demoPages; +package graphicsEngineDemo.featurePreview.demoPages; import graphicsEngine.windows.AbstractPage; diff --git a/src/test/java/graphicsEngineDemo/paged/demoPages/Page1.java b/src/test/java/graphicsEngineDemo/featurePreview/demoPages/Page1.java similarity index 78% rename from src/test/java/graphicsEngineDemo/paged/demoPages/Page1.java rename to src/test/java/graphicsEngineDemo/featurePreview/demoPages/Page1.java index eabb412..9504bd6 100644 --- a/src/test/java/graphicsEngineDemo/paged/demoPages/Page1.java +++ b/src/test/java/graphicsEngineDemo/featurePreview/demoPages/Page1.java @@ -1,4 +1,4 @@ -package graphicsEngineDemo.paged.demoPages; +package graphicsEngineDemo.featurePreview.demoPages; import java.awt.*; diff --git a/src/test/java/graphicsEngineDemo/paged/demoPages/Page2.java b/src/test/java/graphicsEngineDemo/featurePreview/demoPages/Page2.java similarity index 79% rename from src/test/java/graphicsEngineDemo/paged/demoPages/Page2.java rename to src/test/java/graphicsEngineDemo/featurePreview/demoPages/Page2.java index bd46f58..24c1189 100644 --- a/src/test/java/graphicsEngineDemo/paged/demoPages/Page2.java +++ b/src/test/java/graphicsEngineDemo/featurePreview/demoPages/Page2.java @@ -1,4 +1,4 @@ -package graphicsEngineDemo.paged.demoPages; +package graphicsEngineDemo.featurePreview.demoPages; import java.awt.*; diff --git a/src/test/java/graphicsEngineDemo/paged/demoPages/placeholder b/src/test/java/graphicsEngineDemo/featurePreview/demoPages/placeholder similarity index 100% rename from src/test/java/graphicsEngineDemo/paged/demoPages/placeholder rename to src/test/java/graphicsEngineDemo/featurePreview/demoPages/placeholder diff --git a/src/test/java/graphicsEngineDemo/paged/menuPages/demoSelectPage/DemoSelectPage.java b/src/test/java/graphicsEngineDemo/featurePreview/menuPages/demoSelectPage/DemoSelectPage.java similarity index 79% rename from src/test/java/graphicsEngineDemo/paged/menuPages/demoSelectPage/DemoSelectPage.java rename to src/test/java/graphicsEngineDemo/featurePreview/menuPages/demoSelectPage/DemoSelectPage.java index e65c277..5dfe020 100644 --- a/src/test/java/graphicsEngineDemo/paged/menuPages/demoSelectPage/DemoSelectPage.java +++ b/src/test/java/graphicsEngineDemo/featurePreview/menuPages/demoSelectPage/DemoSelectPage.java @@ -1,4 +1,4 @@ -package graphicsEngineDemo.paged.menuPages.demoSelectPage; +package graphicsEngineDemo.featurePreview.menuPages.demoSelectPage; import graphicsEngine.windows.AbstractPage; diff --git a/src/test/java/graphicsEngineDemo/paged/menuPages/placeholder b/src/test/java/graphicsEngineDemo/featurePreview/menuPages/placeholder similarity index 100% rename from src/test/java/graphicsEngineDemo/paged/menuPages/placeholder rename to src/test/java/graphicsEngineDemo/featurePreview/menuPages/placeholder diff --git a/src/test/java/graphicsEngineDemo/paged/menuPages/settingsPage/SettingsPage.java b/src/test/java/graphicsEngineDemo/featurePreview/menuPages/settingsPage/SettingsPage.java similarity index 80% rename from src/test/java/graphicsEngineDemo/paged/menuPages/settingsPage/SettingsPage.java rename to src/test/java/graphicsEngineDemo/featurePreview/menuPages/settingsPage/SettingsPage.java index bf48e21..2f592ae 100644 --- a/src/test/java/graphicsEngineDemo/paged/menuPages/settingsPage/SettingsPage.java +++ b/src/test/java/graphicsEngineDemo/featurePreview/menuPages/settingsPage/SettingsPage.java @@ -1,4 +1,4 @@ -package graphicsEngineDemo.paged.menuPages.settingsPage; +package graphicsEngineDemo.featurePreview.menuPages.settingsPage; import graphicsEngine.windows.AbstractPage; diff --git a/src/test/java/graphicsEngineDemo/paged/menuPages/startingPage/StartingPage.java b/src/test/java/graphicsEngineDemo/featurePreview/menuPages/startingPage/StartingPage.java similarity index 79% rename from src/test/java/graphicsEngineDemo/paged/menuPages/startingPage/StartingPage.java rename to src/test/java/graphicsEngineDemo/featurePreview/menuPages/startingPage/StartingPage.java index ed0322c..34b58f8 100644 --- a/src/test/java/graphicsEngineDemo/paged/menuPages/startingPage/StartingPage.java +++ b/src/test/java/graphicsEngineDemo/featurePreview/menuPages/startingPage/StartingPage.java @@ -1,4 +1,4 @@ -package graphicsEngineDemo.paged.menuPages.startingPage; +package graphicsEngineDemo.featurePreview.menuPages.startingPage; import graphicsEngine.windows.AbstractPage; diff --git a/src/test/java/graphicsEngineDemo/multiAdapterDemo/Main.java b/src/test/java/graphicsEngineDemo/multiAdapterDemo/Main.java new file mode 100644 index 0000000..99cd118 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/multiAdapterDemo/Main.java @@ -0,0 +1,110 @@ +package graphicsEngineDemo.multiAdapterDemo; + +import graphicsEngine.GraphicsAdapter; +import graphicsEngine.windows.AbstractWindow; +import graphicsEngine.windows.WindowConfig; + +/** + * TODO: finish this and add javadocs + */ +public class Main { + + private static GraphicsAdapter adapter1; + private static GraphicsAdapter adapter2; + + /** + * The main method. + * + * @param args Command-line arguments. + */ + public static void main(String[] args) { + adapter1 = new GraphicsAdapter() {{ + graphics.newWindow(new SimpleWindow1()); + }}; + adapter2 = new GraphicsAdapter() {{ + graphics.newWindow(new SimpleWindow2()); + graphics.newWindow(new PagedWindow()); + }}; + } + + private static class SimpleWindow1 extends AbstractWindow { + public SimpleWindow1() { + super(config()); + } + + /** + * Hardcoded configuration of a new SimpleWindow1 object. + * + * @return Window configuration. + */ + private static WindowConfig config() { + String title = "Adapter 1 - Simple window 1"; + int[] + size = new int[] {300, 200}, + location = new int[] {50, 50}; + WindowConfig config = new WindowConfig(title, size, location); + config.closeOperation = EXIT_ON_CLOSE; + return config; + } + + /** + * Adds parts to this window. + */ + @Override + public void addParts() {} + } + + private static class SimpleWindow2 extends AbstractWindow { + public SimpleWindow2() { + super(config()); + } + + /** + * Hardcoded configuration of a new SimpleWindow2 object. + * + * @return Window configuration. + */ + private static WindowConfig config() { + String title = "Adapter 2 - Simple window 2"; + int[] + size = new int[] {300, 200}, + location = new int[] {50, 300}; + WindowConfig config = new WindowConfig(title, size, location); + config.closeOperation = DO_NOTHING_ON_CLOSE; + return config; + } + + /** + * Adds parts to this window. + */ + @Override + public void addParts() {} + } + + private static class PagedWindow extends AbstractWindow { + public PagedWindow() { + super(config()); + } + + /** + * Hardcoded configuration of a new PagedWindow object. + * + * @return Window configuration. + */ + private static WindowConfig config() { + String title = "Adapter 2 - Paged window"; + int[] + size = new int[] {600, 400}, + location = new int[] {400, 300}; + WindowConfig config = new WindowConfig(title, size, location); + config.closeOperation = DO_NOTHING_ON_CLOSE; + return config; + } + + /** + * Adds parts to this window. + */ + @Override + public void addParts() {} + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/simplest/Main.java b/src/test/java/graphicsEngineDemo/simplest/Main.java deleted file mode 100644 index 62a1b15..0000000 --- a/src/test/java/graphicsEngineDemo/simplest/Main.java +++ /dev/null @@ -1,28 +0,0 @@ -package graphicsEngineDemo.simplest; - -import graphicsEngine.AbstractGraphicsAdapter; -import graphicsEngine.windows.AbstractWindow; -import graphicsEngine.windows.WindowConfig; - -//TODO: add javadoc -public class Main { - public static void main(String[] args) { - new GraphicsAdapter(); - } - - private static class GraphicsAdapter extends AbstractGraphicsAdapter { - protected GraphicsAdapter() { - super(); - graphics.newWindow(new Window()); - } - } - - private static class Window extends AbstractWindow { - public Window() { - super(new WindowConfig()); - } - - @Override - public void addParts() {} - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/simplestDemo/Main.java b/src/test/java/graphicsEngineDemo/simplestDemo/Main.java new file mode 100644 index 0000000..065b725 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/simplestDemo/Main.java @@ -0,0 +1,38 @@ +package graphicsEngineDemo.simplestDemo; + +import graphicsEngine.GraphicsAdapter; +import graphicsEngine.windows.AbstractWindow; +import graphicsEngine.windows.WindowConfig; + +/** + * Simplest possible use of the GraphicsEngine. + * Everything contained in just one class. + */ +public class Main { + + /** + * The main method. + * + * @param args Command-line arguments. + */ + public static void main(String[] args) { + new GraphicsAdapter() {{ + graphics.newWindow(new Window()); + }}; + } + + /** + * The window to display. + */ + private static class Window extends AbstractWindow { + public Window() { + super(new WindowConfig()); + } + + /** + * Adds parts to this window. + */ + @Override + public void addParts() {} + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/twoPageDemo/Main.java b/src/test/java/graphicsEngineDemo/twoPageDemo/Main.java new file mode 100644 index 0000000..f32244e --- /dev/null +++ b/src/test/java/graphicsEngineDemo/twoPageDemo/Main.java @@ -0,0 +1,100 @@ +package graphicsEngineDemo.twoPageDemo; + +import graphicsEngine.GraphicsAdapter; +import graphicsEngine.panels.PanelColors; +import graphicsEngine.presets.HeaderAndFooterPage; +import graphicsEngine.presets.panels.AbstractFooter; +import graphicsEngine.presets.panels.AbstractHeader; +import graphicsEngine.windows.AbstractWindow; +import graphicsEngine.windows.WindowConfig; +import org.jetbrains.annotations.Nullable; + +/** + * Copy-pasted from simplest demo + * TODO: finish this + */ +public class Main { + + /** + * The main method. + * + * @param args Command-line arguments. + */ + public static void main(String[] args) { + new GraphicsAdapter() {{ + graphics.newWindow(new Window()); + }}; + } + + private static class Window extends AbstractWindow { + public Window() { + super(config()); + } + + /** + * Hardcoded configuration of a new Window object. + * + * @return Window configuration. + */ + private static WindowConfig config() { + String title = "Two page demo"; + int[] + size = new int[] {600, 400}, + location = new int[] {50, 50}; + WindowConfig config = new WindowConfig(title, size, location); + config.closeOperation = EXIT_ON_CLOSE; + return config; + } + + /** + * Adds parts to this window. + */ + @Override + public void addParts() { + add(new Page1(null)); + //TODO: add pages here; maybe use MultiPageWindow instead of AbstractWindow + } + } + + private static class CommonHeader extends AbstractHeader { + private static final int HEIGHT = 50; + + protected CommonHeader(@Nullable PanelColors panelColors) { + super(panelColors, HEIGHT); + } + + @Override + public void addParts() {} + } + + private static class CommonFooter extends AbstractFooter { + private static final int HEIGHT = 100; + + protected CommonFooter(@Nullable PanelColors panelColors) { + super(panelColors, HEIGHT); + } + + @Override + public void addParts() {} + } + + private static abstract class AbstractCommonPage extends HeaderAndFooterPage { + protected AbstractCommonPage(@Nullable PanelColors panelColors) { + super(new CommonHeader(panelColors),new CommonFooter(panelColors)); + } + } + + private static class Page1 extends AbstractCommonPage { + protected Page1(@Nullable PanelColors panelColors) { + super(panelColors); + } + + @Override + public void addParts() {} + + @Override + public String getPageKey() { + return "page1"; + } + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/GraphicsAdapter.java b/src/test/java/graphicsEngineSandbox/graphics/MyGraphicsAdapter.java similarity index 80% rename from src/test/java/graphicsEngineSandbox/graphics/GraphicsAdapter.java rename to src/test/java/graphicsEngineSandbox/graphics/MyGraphicsAdapter.java index f68e03a..2b04a61 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/GraphicsAdapter.java +++ b/src/test/java/graphicsEngineSandbox/graphics/MyGraphicsAdapter.java @@ -1,15 +1,15 @@ package graphicsEngineSandbox.graphics; -import graphicsEngine.AbstractGraphicsAdapter; +import graphicsEngine.GraphicsAdapter; import graphicsEngine.windows.WindowManager; import graphicsEngineSandbox.graphics.controlWindow.ControlWindow; import graphicsEngineSandbox.graphics.viewWinow.ViewWindow; // TODO: add javadoc -public class GraphicsAdapter extends AbstractGraphicsAdapter { +public class MyGraphicsAdapter extends GraphicsAdapter { // TODO: add javadoc - public GraphicsAdapter() { + public MyGraphicsAdapter() { super(); newControlWindow(); newViewWindow(); diff --git a/src/test/java/graphicsEngineSandbox/main/Main.java b/src/test/java/graphicsEngineSandbox/main/Main.java index b6867b4..dc89685 100644 --- a/src/test/java/graphicsEngineSandbox/main/Main.java +++ b/src/test/java/graphicsEngineSandbox/main/Main.java @@ -2,13 +2,18 @@ import ThreadAbstraction.AbstractUpdater; import graphicsEngineSandbox.calc.Calculations; -import graphicsEngineSandbox.graphics.GraphicsAdapter; +import graphicsEngineSandbox.graphics.MyGraphicsAdapter; import static graphicsEngine.Utilities.printLine; // TODO: add javadoc public class Main extends AbstractUpdater { - // TODO: add javadoc + + /** + * The main method. + * + * @param args Command-line arguments. + */ public static void main(String[] args) { Starter.start(); } @@ -16,7 +21,7 @@ public static void main(String[] args) { public static Main mainThread; private static final long THREAD_DELAY = 100L; - protected GraphicsAdapter graphics; + protected MyGraphicsAdapter graphics; protected Main() { super(THREAD_DELAY); diff --git a/src/test/java/graphicsEngineSandbox/main/Starter.java b/src/test/java/graphicsEngineSandbox/main/Starter.java index a5e3e95..7b510e7 100644 --- a/src/test/java/graphicsEngineSandbox/main/Starter.java +++ b/src/test/java/graphicsEngineSandbox/main/Starter.java @@ -1,7 +1,7 @@ package graphicsEngineSandbox.main; import graphicsEngineSandbox.data.Data; -import graphicsEngineSandbox.graphics.GraphicsAdapter; +import graphicsEngineSandbox.graphics.MyGraphicsAdapter; import static graphicsEngine.Utilities.printLine; @@ -19,6 +19,6 @@ protected static void start() { private static void startOtherThreads() { Data.resetValues(); //TODO: convert to a non-static object - Main.mainThread.graphics = new GraphicsAdapter(); + Main.mainThread.graphics = new MyGraphicsAdapter(); } } \ No newline at end of file From 9b555cf54fa7830b03c1005a8e5c9f088810f68e Mon Sep 17 00:00:00 2001 From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com> Date: Wed, 7 Sep 2022 02:38:42 +0300 Subject: [PATCH 02/11] 0.8.5 * threadAbstraction upgrade to 0.4.2 * pom update * SimpleJButton * overlay * demo run configurations * multi-page window stub * improvements * fixes * refactoring * docs and readme updates * cleanup --- .run/Demo 1 - simplest.run.xml | 15 +++ .run/Demo 2 - overlay.run.xml | 15 +++ .run/Demo 3 - twoPage.run.xml | 15 +++ .run/Demo 4 - multiAdapter.run.xml | 15 +++ .run/Demo 5 - featurePreview.run.xml | 15 +++ .run/Sandbox.run.xml | 15 +++ ReadMe.md | 12 +-- pom.xml | 6 +- .../java/graphicsEngine/GraphicsAdapter.java | 36 ++++--- .../java/graphicsEngine/GraphicsManager.java | 55 ---------- src/main/java/graphicsEngine/Utilities.java | 16 --- .../presets/HeaderAndFooterPage.java | 5 +- .../graphicsEngine/presets/SimpleJButton.java | 44 ++++++++ .../graphicsEngine/presets/SimpleOverlay.java | 31 ++++++ .../windows/AbstractWindow.java | 37 ++----- .../windows/MultiPageWindow.java | 66 ------------ .../graphicsEngine/windows/WindowManager.java | 70 ++++++++---- .../graphicsEngine/windows/WindowUpdater.java | 48 +++++++++ .../windowTypes/AbstractLayeredWindow.java | 40 +++++++ .../windows/windowTypes/MultiPageWindow.java | 92 ++++++++++++++++ .../windows/windowTypes/SimpleWindow.java | 13 +++ .../windows/windowTypes/SinglePageWindow.java | 22 ++++ .../windowTypes/WindowClassification.md | 7 ++ src/test/java/graphicsEngineDemo/ReadMe.md | 7 +- .../d1_simplestDemo/Main.java | 56 ++++++++++ .../d1_simplestDemo/ReadMe.md | 11 ++ .../d2_overlayDemo/Buttons.java | 43 ++++++++ .../d2_overlayDemo/Main.java | 85 +++++++++++++++ .../d2_overlayDemo/Page.java | 60 +++++++++++ .../d2_overlayDemo/ReadMe.md | 9 ++ .../d3_twoPageDemo/Main.java | 21 ++++ .../d3_twoPageDemo/ReadMe.md | 11 ++ .../d3_twoPageDemo/Window.java | 73 +++++++++++++ .../pages/AbstractCommonPage.java | 21 ++++ .../d3_twoPageDemo/pages/Page1.java | 25 +++++ .../d3_twoPageDemo/pages/Page2.java | 25 +++++ .../d3_twoPageDemo/parts/Button1.java | 16 +++ .../d3_twoPageDemo/parts/Button2.java | 16 +++ .../d3_twoPageDemo/parts/CommonFooter.java | 18 ++++ .../d3_twoPageDemo/parts/CommonHeader.java | 29 +++++ .../Main.java | 34 ++++-- .../d4_multiAdapterDemo/ReadMe.md | 13 +++ .../Main.java | 30 +++--- .../d5_featurePreview/ReadMe.md | 11 ++ .../common/placeholder | 0 .../demoPages/CommonDemoPage.java | 2 +- .../demoPages/Page1.java | 2 +- .../demoPages/Page2.java | 2 +- .../demoPages/placeholder | 0 .../demoSelectPage/DemoSelectPage.java | 2 +- .../menuPages/placeholder | 0 .../menuPages/settingsPage/SettingsPage.java | 2 +- .../menuPages/startingPage/StartingPage.java | 2 +- .../featurePreview/ReadMe.md | 7 -- .../graphicsEngineDemo/simplestDemo/Main.java | 38 ------- .../graphicsEngineDemo/twoPageDemo/Main.java | 100 ------------------ src/test/java/graphicsEngineSandbox/ReadMe.md | 11 +- .../graphics/MyGraphicsAdapter.java | 6 +- .../graphics/controlWindow/ControlWindow.java | 7 ++ .../graphics/viewWinow/ViewWindow.java | 7 ++ .../java/graphicsEngineSandbox/main/Main.java | 2 +- .../graphicsEngineSandbox/main/Starter.java | 2 +- 62 files changed, 1106 insertions(+), 390 deletions(-) create mode 100644 .run/Demo 1 - simplest.run.xml create mode 100644 .run/Demo 2 - overlay.run.xml create mode 100644 .run/Demo 3 - twoPage.run.xml create mode 100644 .run/Demo 4 - multiAdapter.run.xml create mode 100644 .run/Demo 5 - featurePreview.run.xml create mode 100644 .run/Sandbox.run.xml delete mode 100644 src/main/java/graphicsEngine/GraphicsManager.java create mode 100644 src/main/java/graphicsEngine/presets/SimpleJButton.java create mode 100644 src/main/java/graphicsEngine/presets/SimpleOverlay.java delete mode 100644 src/main/java/graphicsEngine/windows/MultiPageWindow.java create mode 100644 src/main/java/graphicsEngine/windows/WindowUpdater.java create mode 100644 src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java create mode 100644 src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java create mode 100644 src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java create mode 100644 src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java create mode 100644 src/main/java/graphicsEngine/windows/windowTypes/WindowClassification.md create mode 100644 src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java create mode 100644 src/test/java/graphicsEngineDemo/d1_simplestDemo/ReadMe.md create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/Buttons.java create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/ReadMe.md create mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/Main.java create mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/ReadMe.md create mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java create mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java create mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page1.java create mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page2.java create mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button1.java create mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button2.java create mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java create mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java rename src/test/java/graphicsEngineDemo/{multiAdapterDemo => d4_multiAdapterDemo}/Main.java (74%) create mode 100644 src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/ReadMe.md rename src/test/java/graphicsEngineDemo/{featurePreview => d5_featurePreview}/Main.java (58%) create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/ReadMe.md rename src/test/java/graphicsEngineDemo/{featurePreview => d5_featurePreview}/common/placeholder (100%) rename src/test/java/graphicsEngineDemo/{featurePreview => d5_featurePreview}/demoPages/CommonDemoPage.java (82%) rename src/test/java/graphicsEngineDemo/{featurePreview => d5_featurePreview}/demoPages/Page1.java (78%) rename src/test/java/graphicsEngineDemo/{featurePreview => d5_featurePreview}/demoPages/Page2.java (78%) rename src/test/java/graphicsEngineDemo/{featurePreview => d5_featurePreview}/demoPages/placeholder (100%) rename src/test/java/graphicsEngineDemo/{featurePreview => d5_featurePreview}/menuPages/demoSelectPage/DemoSelectPage.java (79%) rename src/test/java/graphicsEngineDemo/{featurePreview => d5_featurePreview}/menuPages/placeholder (100%) rename src/test/java/graphicsEngineDemo/{featurePreview => d5_featurePreview}/menuPages/settingsPage/SettingsPage.java (79%) rename src/test/java/graphicsEngineDemo/{featurePreview => d5_featurePreview}/menuPages/startingPage/StartingPage.java (79%) delete mode 100644 src/test/java/graphicsEngineDemo/featurePreview/ReadMe.md delete mode 100644 src/test/java/graphicsEngineDemo/simplestDemo/Main.java delete mode 100644 src/test/java/graphicsEngineDemo/twoPageDemo/Main.java diff --git a/.run/Demo 1 - simplest.run.xml b/.run/Demo 1 - simplest.run.xml new file mode 100644 index 0000000..15ad201 --- /dev/null +++ b/.run/Demo 1 - simplest.run.xml @@ -0,0 +1,15 @@ + + + + \ No newline at end of file diff --git a/.run/Demo 2 - overlay.run.xml b/.run/Demo 2 - overlay.run.xml new file mode 100644 index 0000000..c06589a --- /dev/null +++ b/.run/Demo 2 - overlay.run.xml @@ -0,0 +1,15 @@ + + + + \ No newline at end of file diff --git a/.run/Demo 3 - twoPage.run.xml b/.run/Demo 3 - twoPage.run.xml new file mode 100644 index 0000000..0f872be --- /dev/null +++ b/.run/Demo 3 - twoPage.run.xml @@ -0,0 +1,15 @@ + + + + \ No newline at end of file diff --git a/.run/Demo 4 - multiAdapter.run.xml b/.run/Demo 4 - multiAdapter.run.xml new file mode 100644 index 0000000..12deae4 --- /dev/null +++ b/.run/Demo 4 - multiAdapter.run.xml @@ -0,0 +1,15 @@ + + + + \ No newline at end of file diff --git a/.run/Demo 5 - featurePreview.run.xml b/.run/Demo 5 - featurePreview.run.xml new file mode 100644 index 0000000..ac30c8c --- /dev/null +++ b/.run/Demo 5 - featurePreview.run.xml @@ -0,0 +1,15 @@ + + + + \ No newline at end of file diff --git a/.run/Sandbox.run.xml b/.run/Sandbox.run.xml new file mode 100644 index 0000000..7dbbe98 --- /dev/null +++ b/.run/Sandbox.run.xml @@ -0,0 +1,15 @@ + + + + \ No newline at end of file diff --git a/ReadMe.md b/ReadMe.md index 503c782..cab1fe8 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -10,12 +10,12 @@ Free to use and modify for whatever purposes. No copyrights apply. ## Requirements * JDK: 18 -* Maven compiler: 18 -* Maven Surefire: 3.0.0-M7 -* jetbrains annotations: 23.0.0 -* [ThreadAbstraction](https://github.com/KruMF/ThreadAbstraction) : 0.4.1 +* Maven compiler (source & target) : 18 +* [Maven Surefire Plugin](https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-surefire-plugin) : 3.0.0-M7 +* [JetBrains Java Annotations](https://mvnrepository.com/artifact/org.jetbrains/annotations) : 23.0.0 +* [ThreadAbstraction](https://github.com/KruMF/ThreadAbstraction) : 0.4.2 * [FileHandler](https://github.com/KruMF/FileHandler) : 0.2.5 -* JUnit: Jupiter 5.9.0-M1 +* JUnit: Jupiter 5.9.0 ## Instructions @@ -27,7 +27,7 @@ Maven support recently added. Detailed info coming... ## Standalone demo -Check `graphicsEngine\demo` for standalone demo versions. +Check `src\test\java\graphicsEngineDemo` for standalone demo versions. *Launch instructions available there.* diff --git a/pom.xml b/pom.xml index d9b2ce4..4633fe3 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.KruMF GraphicsEngine - 0.8.4 + 0.8.5 UTF-8 @@ -15,10 +15,10 @@ 3.0.0-M7 23.0.0 - 0.4.1 + 0.4.2 0.2.5 - 5.9.0-M1 + 5.9.0 diff --git a/src/main/java/graphicsEngine/GraphicsAdapter.java b/src/main/java/graphicsEngine/GraphicsAdapter.java index 19c31d2..d524cfc 100644 --- a/src/main/java/graphicsEngine/GraphicsAdapter.java +++ b/src/main/java/graphicsEngine/GraphicsAdapter.java @@ -1,25 +1,37 @@ package graphicsEngine; +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.WindowUpdater; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import static consoleUtils.ConsoleUtils.printLine; + /** * A graphics adapter class. * Intended for allowing not to use the GraphicsManager directly. * Reference this to use the GraphicsEngine. - * TODO: check redundancy + * TODO: check redundancy; originally meant for security; fix javadocs */ -public class GraphicsAdapter { - //TODO: seems redundant, originally meant for security - public GraphicsManager graphics; - - //TODO: seems redundant, originally meant for security +public class GraphicsAdapter extends WindowManager { public GraphicsAdapter() { - graphics = new GraphicsManager(); + super(); + } + + @Override + public final void newWindow(@NotNull WindowUpdater window) { + super.newWindow(window); + } + + @Override + public final @Nullable WindowUpdater getWindow(@Nullable String windowKey) { + return super.getWindow(windowKey); } - /** - * Call this to end graphics. - * TODO: seems redundant, originally meant for security - */ + @Override public final void end() { - graphics.end(); + printLine("Graphics ending."); + super.end(); } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/GraphicsManager.java b/src/main/java/graphicsEngine/GraphicsManager.java deleted file mode 100644 index daab237..0000000 --- a/src/main/java/graphicsEngine/GraphicsManager.java +++ /dev/null @@ -1,55 +0,0 @@ -package graphicsEngine; - -import graphicsEngine.windows.AbstractWindow; -import graphicsEngine.windows.WindowManager; - -import DelayCalculator.DelayOptions; -import java.util.ArrayList; - -import static graphicsEngine.Utilities.printLine; - -import org.jetbrains.annotations.Nullable; -import org.jetbrains.annotations.NotNull; - -//a class for containing graphics -//TODO: add javadocs -public class GraphicsManager { - public ArrayList windows; - - public GraphicsManager() { - windows = new ArrayList<>(); - } - - @SuppressWarnings("unused") - public final void newWindow(@NotNull WindowManager window) { - int i = windows.size(); - windows.add(window); - windows.get(i).start(); - } - - @SuppressWarnings("unused") - public final void newWindow(@NotNull AbstractWindow window) { - newWindow(new WindowManager(window)); - } - - @SuppressWarnings("unused") - public final void newWindow(@NotNull AbstractWindow window, long delay) { - newWindow(new WindowManager(window, delay)); - } - - @SuppressWarnings("unused") - public final void newWindow(@NotNull AbstractWindow window, @Nullable DelayOptions delayOptions) { - newWindow(new WindowManager(window, delayOptions)); - } - - public void end() { - printLine("Graphics ending."); - endAllWindows(); - } - - private void endAllWindows() { - for (WindowManager window : windows) { - window.end(); - } - } -} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/Utilities.java b/src/main/java/graphicsEngine/Utilities.java index fd9dcb6..bf529dc 100644 --- a/src/main/java/graphicsEngine/Utilities.java +++ b/src/main/java/graphicsEngine/Utilities.java @@ -15,22 +15,6 @@ public class Utilities { private static final Color DEFAULT_BORDER_COLOR = Color.red; - /** - * Prints a message in console as new line. - * - * @param message Message to print. - */ - public static void printLine(String message) { - System.out.println(message); - } - - //rounds a number to a specified number of decimal places - // TODO: add javadoc - public static String roundNumber(double value, int decimalPlaces) { - double conversionCoefficient = Math.pow(10, decimalPlaces); - return String.valueOf(((int) (value * conversionCoefficient))/conversionCoefficient); - } - // TODO: add javadoc public interface BorderInterface { static void setBorderState(@NotNull JComponent component, boolean state, @Nullable Color color) { diff --git a/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java b/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java index 9e1d2da..3b41090 100644 --- a/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java +++ b/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java @@ -3,9 +3,10 @@ import graphicsEngine.presets.panels.AbstractFooter; import graphicsEngine.presets.panels.AbstractHeader; import graphicsEngine.windows.AbstractPage; -import org.jetbrains.annotations.Nullable; -import java.awt.*; +import java.awt.BorderLayout; + +import org.jetbrains.annotations.Nullable; public abstract class HeaderAndFooterPage extends AbstractPage { diff --git a/src/main/java/graphicsEngine/presets/SimpleJButton.java b/src/main/java/graphicsEngine/presets/SimpleJButton.java new file mode 100644 index 0000000..090bfee --- /dev/null +++ b/src/main/java/graphicsEngine/presets/SimpleJButton.java @@ -0,0 +1,44 @@ +package graphicsEngine.presets; + +import javax.swing.JButton; +import java.awt.event.ActionListener; +import java.util.Objects; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import static consoleUtils.ConsoleUtils.printLine; + +/** + * A simple JButton with text and ActionListener. + */ +public class SimpleJButton extends JButton { + private static final String DEFAULT_TEXT = "Button"; + private static final ActionListener + DEFAULT_ACTION_LISTENER = e -> printLine("A button has been pressed. ActionListener not defined."); + + /** + * Creates a simple JButton with text and ActionListener. + * + * @param text Text to display + * @param actionCommand Action command + * @param actionListener ActionListener object + */ + public SimpleJButton(@Nullable String text, + @NotNull String actionCommand, + @Nullable ActionListener actionListener) { + super(Objects.requireNonNullElse(text, DEFAULT_TEXT)); + setActionCommand(actionCommand); + addActionListener(Objects.requireNonNullElse(actionListener, DEFAULT_ACTION_LISTENER)); + } + + /** + * Returns the button's text. + * + * @return The button's text. + */ + @Override + public final @NotNull String getText() { + return super.getText(); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/SimpleOverlay.java b/src/main/java/graphicsEngine/presets/SimpleOverlay.java new file mode 100644 index 0000000..7c655be --- /dev/null +++ b/src/main/java/graphicsEngine/presets/SimpleOverlay.java @@ -0,0 +1,31 @@ +package graphicsEngine.presets; + +import java.awt.Color; +import java.awt.Graphics; +import javax.swing.JPanel; +import java.util.Objects; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +//TODO: add javadocs +public class SimpleOverlay extends JPanel { + private static final Color DEFAULT_COLOR = new Color(0, 0, 0, 100); + private Color color; + + public SimpleOverlay(@Nullable Color color) { + setOpaque(false); + this.color = Objects.requireNonNullElse(color, DEFAULT_COLOR); + } + + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + fillBackground(g); + } + + private void fillBackground(@NotNull Graphics g) { + g.setColor(color); + g.fillRect(0, 0, this.getWidth(), this.getHeight()); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/AbstractWindow.java b/src/main/java/graphicsEngine/windows/AbstractWindow.java index 3e0c712..0161045 100644 --- a/src/main/java/graphicsEngine/windows/AbstractWindow.java +++ b/src/main/java/graphicsEngine/windows/AbstractWindow.java @@ -2,15 +2,20 @@ import javax.swing.JFrame; -import java.util.Objects; - -import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.NotNull; //TODO: add javadocs public abstract class AbstractWindow extends JFrame { + public static final int[] SIZE_ERROR_CORRECTION = new int[] {16, 39}; + + //TODO: add javadoc + public static int[] correctWindowsSizeError(int[] size) { + return new int[] { + size[0] + SIZE_ERROR_CORRECTION[0], + size[1] + SIZE_ERROR_CORRECTION[1]}; + } + protected static final String EMPTY_KEY = ""; - private String activePage; //creates a window with required parameters public AbstractWindow(@NotNull WindowConfig config) { @@ -22,32 +27,12 @@ public AbstractWindow(@NotNull WindowConfig config) { int[] location = config.getLocation(); setLocation(location[0], location[1]); - setActivePage(null); + addParts(); setVisible(true); } //TODO: add javadoc - public static int[] correctWindowsSizeError(int[] size) { - int[] errorCorrection = new int[] {16, 39}; - return new int[] { - size[0] + errorCorrection[0], - size[1] + errorCorrection[1]}; - } - - /** - * Get the key of the currently active page. - * - * @return String of the key. - */ - public String getActivePage() { - return activePage; - } - - //TODO: finish this and add javadoc - public void setActivePage(@Nullable String key) { - activePage = Objects.requireNonNullElse(key, EMPTY_KEY); - resetParts(); - } + public @NotNull abstract String getWindowKey(); /** * Call this to manually reset parts. diff --git a/src/main/java/graphicsEngine/windows/MultiPageWindow.java b/src/main/java/graphicsEngine/windows/MultiPageWindow.java deleted file mode 100644 index a08d6a9..0000000 --- a/src/main/java/graphicsEngine/windows/MultiPageWindow.java +++ /dev/null @@ -1,66 +0,0 @@ -package graphicsEngine.windows; - -import java.util.List; -import java.util.Map; -import java.util.HashMap; -import java.util.Objects; - -import static graphicsEngine.Utilities.printLine; - -import org.jetbrains.annotations.Nullable; -import org.jetbrains.annotations.NotNull; - -// TODO: finish this and add javadoc -public abstract class MultiPageWindow extends AbstractWindow { - private Map pages; - - public MultiPageWindow( - @NotNull WindowConfig config, - @NotNull List pages) { - this(config, pages, null); - } - - public MultiPageWindow( - @NotNull WindowConfig config, - @NotNull List pages, - @Nullable String activePageKey) { - super(config); - addPages(pages); - setActivePage(Objects.requireNonNullElse(activePageKey, getFirstKey())); - } - - private String getFirstKey() { - if (pages.size() > 0) { - return pages.keySet().stream().toList().get(0); - } else return EMPTY_KEY; - } - - private void addPages(@NotNull List pages) { - this.pages = new HashMap<>(); - for (AbstractPage page : pages) { - addPage(page); - } - } - - private void addPage(@NotNull AbstractPage page) { - pages.put(page.getPageKey(), page); - } - - @Override - public final void setActivePage(@Nullable String key) { - String nonNullKey = Objects.requireNonNullElse(key, EMPTY_KEY); - if (!nonNullKey.equals(EMPTY_KEY) && pages.containsKey(nonNullKey)) { - super.setActivePage(nonNullKey); - resetParts(); - } else { - printLine("Page not found"); - } - } - - @Override - public final void addParts() { - if (pages != null && pages.size() > 0) { - add(pages.get(getActivePage())); - } - } -} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/WindowManager.java b/src/main/java/graphicsEngine/windows/WindowManager.java index dc92ab4..3ede926 100644 --- a/src/main/java/graphicsEngine/windows/WindowManager.java +++ b/src/main/java/graphicsEngine/windows/WindowManager.java @@ -1,41 +1,65 @@ package graphicsEngine.windows; -import DelayCalculator.DelayOptions; -import ThreadAbstraction.AbstractUpdater; +import java.util.ArrayList; -import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -//TODO:add javadocs -public class WindowManager extends AbstractUpdater { - private AbstractWindow window; +//a class for containing windows and their updaters +//TODO: add javadocs +public class WindowManager { + public ArrayList windows; - public WindowManager(@NotNull AbstractWindow window) { - super(); - setWindow(window); + public WindowManager() { + windows = new ArrayList<>(); } - public WindowManager(@NotNull AbstractWindow window, long delay) { - super(delay); - setWindow(window); + //TODO: add javadoc + public void newWindow(@NotNull WindowUpdater window) { + int i = windows.size(); + windows.add(window); + windows.get(i).start(); } - public WindowManager(@NotNull AbstractWindow window, @Nullable DelayOptions delayOptions) { - super(delayOptions); - setWindow(window); + private int getWindowIndex(@Nullable String windowKey) throws NullPointerException { + if (windowKey != null && !windowKey.equals("")) { + for (int i = 0; i < windows.size(); i++) { + if (windows.get(i).getWindowKey().equals(windowKey)) { + return i; + } + } + } + throw new NullPointerException(); } - private void setWindow(AbstractWindow window) { - this.window = window; + //TODO: add javadoc + public @Nullable WindowUpdater getWindow(@Nullable String windowKey) { + try { + int index = getWindowIndex(windowKey); + return windows.get(index); + } catch (NullPointerException e) { + return null; //returns null if no such window found + } } - @Override - public void update() { - window.repaint(); + //TODO: add javadoc + public void endWindow(String windowKey) { + try { + int index = getWindowIndex(windowKey); + WindowUpdater window = getWindow(windowKey); + if (window == null) { + throw new NullPointerException(); + } + + window.end(); + windows.remove(index); + } catch (NullPointerException ignored) {} } - @Override - public void finish() { - window.dispose(); + //TODO: add javadoc + public void end() { + for (WindowUpdater window : windows) { + window.end(); + } } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/WindowUpdater.java b/src/main/java/graphicsEngine/windows/WindowUpdater.java new file mode 100644 index 0000000..d763ad9 --- /dev/null +++ b/src/main/java/graphicsEngine/windows/WindowUpdater.java @@ -0,0 +1,48 @@ +package graphicsEngine.windows; + +import DelayCalculator.DelayOptions; +import ThreadAbstraction.AbstractUpdater; + +import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.NotNull; + +//TODO:add javadocs +public class WindowUpdater extends AbstractUpdater { + private AbstractWindow window; + + //default delayOptions + public WindowUpdater(@NotNull AbstractWindow window) { + super(); + setWindow(window); + } + + //delay in milliseconds + public WindowUpdater(@NotNull AbstractWindow window, long delay) { + super(delay); + setWindow(window); + } + + //custom delayOptions + public WindowUpdater(@NotNull AbstractWindow window, @Nullable DelayOptions delayOptions) { + super(delayOptions); + setWindow(window); + } + + private void setWindow(@NotNull AbstractWindow window) { + this.window = window; + } + + public final String getWindowKey() { + return window.getWindowKey(); + } + + @Override + public final void update() { + window.repaint(); + } + + @Override + public void finish() { + window.dispose(); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java new file mode 100644 index 0000000..92520da --- /dev/null +++ b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java @@ -0,0 +1,40 @@ +package graphicsEngine.windows.windowTypes; + +import graphicsEngine.windows.AbstractWindow; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.presets.SimpleOverlay; + +import java.util.Objects; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +//contents and overlays +//TODO: finish this and add javadocs +abstract class AbstractLayeredWindow extends AbstractWindow { + private static final SimpleOverlay DEFAULT_OVERLAY = new SimpleOverlay(null); + + private SimpleOverlay overlay; + + AbstractLayeredWindow(@NotNull WindowConfig config, @Nullable SimpleOverlay overlay) { + super(config); + setOverlay(overlay); + hideOverlay(); + } + + void setOverlay(@Nullable SimpleOverlay overlay) { + setGlassPane(Objects.requireNonNullElse(overlay, DEFAULT_OVERLAY)); + } + + public void showOverlay() { + getGlassPane().setVisible(true); + } + + public void hideOverlay() { + getGlassPane().setVisible(false); + } + + public void toggleOverlay() { + getGlassPane().setVisible(!getGlassPane().isVisible()); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java new file mode 100644 index 0000000..233d92a --- /dev/null +++ b/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java @@ -0,0 +1,92 @@ +package graphicsEngine.windows.windowTypes; + +import graphicsEngine.windows.AbstractPage; +import graphicsEngine.windows.AbstractWindow; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.presets.SimpleOverlay; + +import java.util.List; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +import javax.swing.*; + +import static consoleUtils.ConsoleUtils.printLine; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +// TODO: finish this and add javadoc +public abstract class MultiPageWindow extends AbstractLayeredWindow { + /*protected Map pages; + private String activePage;*/ + + public MultiPageWindow(@NotNull WindowConfig config, @Nullable SimpleOverlay overlay) { + super(config, overlay); + } + + /*public MultiPageWindow( + @NotNull WindowConfig config, + @NotNull List pages) { + this(config, pages, null); + } + + public MultiPageWindow( + @NotNull WindowConfig config, + @NotNull List pages, + @Nullable String activePageKey) { + super(config); + addPages(pages); + setActivePage(Objects.requireNonNullElse(activePageKey, getFirstKey())); + }*/ + + /*private String getFirstKey() { + if (pages.size() > 0) { + return pages.keySet().stream().toList().get(0); + } else return AbstractWindow.EMPTY_KEY; + }*/ + + /*private void addPages(@NotNull List pages) { + this.pages = new HashMap<>(); + for (AbstractPage page : pages) { + addPage(page); + } + } + + private void addPage(@NotNull AbstractPage page) { + pages.put(page.getPageKey(), page); + }*/ + + /*@Override + public final void setActivePage(@Nullable String key) { + String nonNullKey = Objects.requireNonNullElse(key, AbstractWindow.EMPTY_KEY); + if (!nonNullKey.equals(AbstractWindow.EMPTY_KEY) && pages.containsKey(nonNullKey)) { + super.setActivePage(nonNullKey); + } else { + printLine("Page not found"); + } + }*/ + + @Override + public final void addParts() { + /*if (pages != null && pages.size() > 0) { + add(pages.get(getActivePage())); + }*/ + } + + /** + * Get the key of the currently active page. + * + * @return String of the key. + */ + /*public String getActivePage() { + return activePage; + } + + //TODO: finish this and add javadoc + public void setActivePage(@Nullable String key) { + activePage = Objects.requireNonNullElse(key, AbstractWindow.EMPTY_KEY); + resetParts(); + }*/ +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java new file mode 100644 index 0000000..afac506 --- /dev/null +++ b/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java @@ -0,0 +1,13 @@ +package graphicsEngine.windows.windowTypes; + +import graphicsEngine.windows.AbstractWindow; +import graphicsEngine.windows.WindowConfig; + +import org.jetbrains.annotations.NotNull; + +//TODO: finish this and add javadocs +public abstract class SimpleWindow extends AbstractWindow { + public SimpleWindow(@NotNull WindowConfig config) { + super(config); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java new file mode 100644 index 0000000..736aa63 --- /dev/null +++ b/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java @@ -0,0 +1,22 @@ +package graphicsEngine.windows.windowTypes; + +import graphicsEngine.windows.AbstractPage; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.presets.SimpleOverlay; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +// TODO: finish this and add javadoc +public abstract class SinglePageWindow extends AbstractLayeredWindow { + public SinglePageWindow(@NotNull WindowConfig config, @Nullable SimpleOverlay overlay) { + super(config, overlay); + } + + @Override + public final void addParts() { + add(addPage()); + } + + public abstract AbstractPage addPage(); +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/windowTypes/WindowClassification.md b/src/main/java/graphicsEngine/windows/windowTypes/WindowClassification.md new file mode 100644 index 0000000..0aaf1e9 --- /dev/null +++ b/src/main/java/graphicsEngine/windows/windowTypes/WindowClassification.md @@ -0,0 +1,7 @@ +# Window classification + +| Class | Super | Features | Availability | +|------------------|------------------------------------------------|------------------------------------------------------|---------------------------| +| SimpleWindow | `AbstractWindow` | Only contents | Available | +| SinglePageWindow | `AbstractLayeredWindow extends AbstractWindow` | * Contents - contains a single page
* Overlays | *Currently not available* | +| MultiPageWindow | `AbstractLayeredWindow extends AbstractWindow` | * Contents - contains multiple pages
* Overlays | *Currently not available* | \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/ReadMe.md b/src/test/java/graphicsEngineDemo/ReadMe.md index 08dfaa2..ab35679 100644 --- a/src/test/java/graphicsEngineDemo/ReadMe.md +++ b/src/test/java/graphicsEngineDemo/ReadMe.md @@ -1,9 +1,12 @@ # Graphics engine demos +Various demos for demonstrating various capabilities of the Graphics Engine. + Currently available demos: * Simplest demo - everything in just one class. +* Overlay demo - one page, with overlay. * Two-page demo - one window, two pages. * Multi-adapter demo - *self explanatory...* -* Feature preview - multiple pages (currently not available) containing various parts of GraphicsEngine and their use. +* Feature preview - multiple pages *(currently not available)* containing various parts of GraphicsEngine and their use. -Further instructions will be in the directory of the demo. \ No newline at end of file +Further instructions will be in the corresponding directory of the demo. \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java b/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java new file mode 100644 index 0000000..5123fd3 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java @@ -0,0 +1,56 @@ +package graphicsEngineDemo.d1_simplestDemo; + +import graphicsEngine.GraphicsAdapter; +import graphicsEngine.windows.WindowUpdater; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.windowTypes.SimpleWindow; + +import org.jetbrains.annotations.NotNull; + +/** + * Simplest possible use of the GraphicsEngine. + * Everything contained in just one class. + */ +public class Main { + + /** + * The main method. + * + * @param args Command-line arguments. + */ + public static void main(String[] args) { + new GraphicsAdapter() {{ + newWindow(new WindowUpdater(new Window())); + }}; + } + + /** + * The window to display. + */ + private static class Window extends SimpleWindow { + /** + * Creates the window. + */ + public Window() { + super(new WindowConfig()); + setDefaultCloseOperation(EXIT_ON_CLOSE); // Not necessary; added for easier use. + } + + /** + * Gets the key of the window. + * Intended for multi-window cases. + * + * @return The key of this window. + */ + @Override + public @NotNull String getWindowKey() { + return "window"; + } + + /** + * Adds parts to this window. + */ + @Override + public void addParts() {} + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d1_simplestDemo/ReadMe.md b/src/test/java/graphicsEngineDemo/d1_simplestDemo/ReadMe.md new file mode 100644 index 0000000..129d401 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d1_simplestDemo/ReadMe.md @@ -0,0 +1,11 @@ +# Simplest demo + +## Abstract + +This is a demo demonstrating the simplest possible use of the Graphics Engine. + +Everything contained in just one class. + +## Instructions + +Run `Main.main(String[] args)` to launch this demo. \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Buttons.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Buttons.java new file mode 100644 index 0000000..70412b9 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Buttons.java @@ -0,0 +1,43 @@ +package graphicsEngineDemo.d2_overlayDemo; + +import graphicsEngine.presets.SimpleJButton; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +/** + * A class for containing buttons. + */ +public class Buttons { + public static final String ACTION_COMMAND_1 = "show"; + public static final String ACTION_COMMAND_2 = "hide"; + public static final String ACTION_COMMAND_3 = "toggle"; + + /** + * A simple button for showing the overlay. + */ + public static class Button1 extends SimpleJButton { + protected Button1(@Nullable ActionListener actionListener) { + super("Show", ACTION_COMMAND_1, actionListener); + } + } + + /** + * A simple button for hiding the overlay. + */ + public static class Button2 extends SimpleJButton { + protected Button2(@Nullable ActionListener actionListener) { + super("Hide", ACTION_COMMAND_2, actionListener); + } + } + + /** + * A simple button for toggling the visibility of the overlay. + */ + public static class Button3 extends SimpleJButton { + protected Button3(@Nullable ActionListener actionListener) { + super("Toggle", ACTION_COMMAND_3, actionListener); + } + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java new file mode 100644 index 0000000..de6e70d --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java @@ -0,0 +1,85 @@ +package graphicsEngineDemo.d2_overlayDemo; + +import graphicsEngine.GraphicsAdapter; +import graphicsEngine.windows.AbstractPage; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.WindowUpdater; +import graphicsEngine.windows.windowTypes.SinglePageWindow; +import graphicsEngine.presets.SimpleOverlay; + +import java.awt.Color; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import static consoleUtils.ConsoleUtils.printLine; + +import org.jetbrains.annotations.NotNull; + +/** + * TODO: add javadoc + */ +public class Main { + + /** + * The main method. + * + * @param args Command-line arguments. + */ + public static void main(String[] args) { + new GraphicsAdapter() {{ + newWindow(new WindowUpdater(new Window())); + }}; + } + + /** + * The window to display. + */ + private static class Window extends SinglePageWindow implements ActionListener { + private static final String WINDOW_TITLE = "Overlay demo"; + private static final Color OVERLAY_COLOR = new Color(100, 0, 0, 100); + + private static final SimpleOverlay OVERLAY = new SimpleOverlay(OVERLAY_COLOR); + + private Window() { + super(new WindowConfig(), OVERLAY); + setDefaultCloseOperation(EXIT_ON_CLOSE); + setTitle(WINDOW_TITLE); + } + + /** + * Redundant as there is only one window. + * TODO: finish this javadoc + * + * @return The key of this window. + */ + @Override + public final @NotNull String getWindowKey() { + return "window"; + } + + /** + * Prepares a page to add to this window. + * + * @return An AbstractPage object. + */ + @Override + public final @NotNull AbstractPage addPage() { + return new Page(null, this); + } + + /** + * Invoked when an action occurs. + * + * @param e the event to be processed + */ + @Override + public final void actionPerformed(ActionEvent e) { + switch (e.getActionCommand()) { + case Buttons.ACTION_COMMAND_1 -> showOverlay(); + case Buttons.ACTION_COMMAND_2 -> hideOverlay(); + case Buttons.ACTION_COMMAND_3 -> toggleOverlay(); + default -> printLine("A button has been pressed but no action set up"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java new file mode 100644 index 0000000..493211d --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java @@ -0,0 +1,60 @@ +package graphicsEngineDemo.d2_overlayDemo; + +import graphicsEngine.panels.PanelColors; +import graphicsEngine.presets.HeaderAndFooterPage; +import graphicsEngine.presets.panels.AbstractHeader; +import graphicsEngine.presets.panels.AbstractFooter; + +import java.awt.event.ActionListener; +import javax.swing.BoxLayout; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadocs +class Page extends HeaderAndFooterPage { + protected Page(@Nullable PanelColors panelColors, + @Nullable ActionListener actionListener) { + super( + new CommonHeader(panelColors, actionListener), + new Footer(panelColors)); + } + + @Override + public final void addParts() {} + + @Override + public String getPageKey() { + return "page"; + } + + private static class CommonHeader extends AbstractHeader { + private static final int HEIGHT = 50; + + public CommonHeader(@Nullable PanelColors panelColors, + @Nullable ActionListener actionListener) { + super(panelColors, HEIGHT); + addButtons(actionListener); + } + + @Override + public final void addParts() {} + + private void addButtons(@Nullable ActionListener actionListener) { + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + add(new Buttons.Button1(actionListener)); + add(new Buttons.Button2(actionListener)); + add(new Buttons.Button3(actionListener)); + } + } + + private static class Footer extends AbstractFooter { + private static final int HEIGHT = 100; + + public Footer(@Nullable PanelColors panelColors) { + super(panelColors, HEIGHT); + } + + @Override + public final void addParts() {} + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/ReadMe.md b/src/test/java/graphicsEngineDemo/d2_overlayDemo/ReadMe.md new file mode 100644 index 0000000..f95897b --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/ReadMe.md @@ -0,0 +1,9 @@ +# Overlay demo + +## Abstract + +This is a demo for demonstrating the overlay functionality. + +## Instructions + +Run `Main.main(String[] args)` to launch this demo. \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Main.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Main.java new file mode 100644 index 0000000..4b6bda9 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Main.java @@ -0,0 +1,21 @@ +package graphicsEngineDemo.d3_twoPageDemo; + +import static consoleUtils.ConsoleUtils.printLine; + +/** + * TODO: finish this + */ +public class Main { + + /** + * The main method. + * + * @param args Command-line arguments. + */ + public static void main(String[] args) { + printLine("Two-page demo currently not available"); + /*new GraphicsAdapter() {{ + newWindow(new WindowUpdater(new Window())); + }};*/ + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/ReadMe.md b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/ReadMe.md new file mode 100644 index 0000000..0db8c34 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/ReadMe.md @@ -0,0 +1,11 @@ +# Two-page demo + +## Abstract + +This is a demo for demonstrating the capability to have multiple pages within a window. + +*Currently not working...* + +## Instructions + +Look for `Main.java` to launch. \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java new file mode 100644 index 0000000..4c2da66 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java @@ -0,0 +1,73 @@ +package graphicsEngineDemo.d3_twoPageDemo; + +import graphicsEngine.windows.WindowConfig; + +import graphicsEngineDemo.d3_twoPageDemo.parts.Button1; +import graphicsEngineDemo.d3_twoPageDemo.parts.Button2; +import org.jetbrains.annotations.NotNull; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import static consoleUtils.ConsoleUtils.printLine; +import static javax.swing.WindowConstants.EXIT_ON_CLOSE; + +//TODO: finish this and add javadocs +class Window /*extends MultiPageWindow*/ implements ActionListener { + + public Window() { + //super(config()); + } + + /** + * Hardcoded configuration of a new Window object. + * + * @return Window configuration. + */ + private static WindowConfig config() { + String title = "Two page demo"; + int[] + size = new int[]{600, 400}, + location = new int[]{50, 50}; + WindowConfig config = new WindowConfig(title, size, location); + config.closeOperation = EXIT_ON_CLOSE; + return config; + } + + //@Override + public @NotNull String getWindowKey() { + return "window"; + } + + /** + * Adds parts to this window. + */ + /*@Override + public void addParts() { + add(new Page1(null, this)); + //TODO: add pages here; maybe use MultiPageWindow instead of AbstractWindow + //add(new Page2(null, this)); + }*/ + + /** + * Invoked when an action occurs. + * + * @param e the event to be processed + */ + @Override + public void actionPerformed(ActionEvent e) { + String buttonName; + switch (e.getActionCommand()) { + case Button1.ACTION_COMMAND -> { + buttonName = Button1.ACTION_COMMAND; + //TODO: switch to page 1 here + } + case Button2.ACTION_COMMAND -> { + buttonName = Button2.ACTION_COMMAND; + //TODO: switch to page 2 here + } + default -> buttonName = "A button"; + } + printLine(buttonName + " has been pressed"); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java new file mode 100644 index 0000000..c6b7ad7 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java @@ -0,0 +1,21 @@ +package graphicsEngineDemo.d3_twoPageDemo.pages; + +import graphicsEngine.panels.PanelColors; +import graphicsEngine.presets.HeaderAndFooterPage; + +import graphicsEngineDemo.d3_twoPageDemo.parts.CommonFooter; +import graphicsEngineDemo.d3_twoPageDemo.parts.CommonHeader; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadocs +abstract class AbstractCommonPage extends HeaderAndFooterPage { + protected AbstractCommonPage(@Nullable PanelColors panelColors, + @Nullable ActionListener actionListener) { + super( + new CommonHeader(panelColors, actionListener), + new CommonFooter(panelColors)); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page1.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page1.java new file mode 100644 index 0000000..32b8ca1 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page1.java @@ -0,0 +1,25 @@ +package graphicsEngineDemo.d3_twoPageDemo.pages; + +import graphicsEngine.panels.PanelColors; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +//TODO: finish this and add javadocs +public class Page1 extends AbstractCommonPage { + public Page1(@Nullable PanelColors panelColors, + @Nullable ActionListener actionListener) { + super(panelColors, actionListener); + } + + @Override + public void addParts() { + //TODO: add a label here indicating page number + } + + @Override + public String getPageKey() { + return "page1"; + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page2.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page2.java new file mode 100644 index 0000000..043ad60 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page2.java @@ -0,0 +1,25 @@ +package graphicsEngineDemo.d3_twoPageDemo.pages; + +import graphicsEngine.panels.PanelColors; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +//TODO: finish this and add javadocs +public class Page2 extends AbstractCommonPage { + public Page2(@Nullable PanelColors panelColors, + @Nullable ActionListener actionListener) { + super(panelColors, actionListener); + } + + @Override + public void addParts() { + //TODO: add a label here indicating page number + } + + @Override + public String getPageKey() { + return "page2"; + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button1.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button1.java new file mode 100644 index 0000000..ed4bab2 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button1.java @@ -0,0 +1,16 @@ +package graphicsEngineDemo.d3_twoPageDemo.parts; + +import graphicsEngine.presets.SimpleJButton; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadocs +public class Button1 extends SimpleJButton { + public static final String ACTION_COMMAND = "button1"; + + protected Button1(@Nullable ActionListener actionListener) { + super("Page 1", ACTION_COMMAND, actionListener); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button2.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button2.java new file mode 100644 index 0000000..0cbfecc --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button2.java @@ -0,0 +1,16 @@ +package graphicsEngineDemo.d3_twoPageDemo.parts; + +import graphicsEngine.presets.SimpleJButton; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadocs +public class Button2 extends SimpleJButton { + public static final String ACTION_COMMAND = "button2"; + + protected Button2(@Nullable ActionListener actionListener) { + super("Page 2", ACTION_COMMAND, actionListener); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java new file mode 100644 index 0000000..8cf378e --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java @@ -0,0 +1,18 @@ +package graphicsEngineDemo.d3_twoPageDemo.parts; + +import graphicsEngine.panels.PanelColors; +import graphicsEngine.presets.panels.AbstractFooter; + +import org.jetbrains.annotations.Nullable; + +//TODO: finish this and add javadocs +public class CommonFooter extends AbstractFooter { + private static final int HEIGHT = 100; + + public CommonFooter(@Nullable PanelColors panelColors) { + super(panelColors, HEIGHT); + } + + @Override + public void addParts() {} +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java new file mode 100644 index 0000000..816b0db --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java @@ -0,0 +1,29 @@ +package graphicsEngineDemo.d3_twoPageDemo.parts; + +import graphicsEngine.panels.PanelColors; +import graphicsEngine.presets.panels.AbstractHeader; + +import javax.swing.BoxLayout; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +//TODO: finish this and add javadocs +public class CommonHeader extends AbstractHeader { + private static final int HEIGHT = 50; + + public CommonHeader(@Nullable PanelColors panelColors, + @Nullable ActionListener actionListener) { + super(panelColors, HEIGHT); + addButtons(actionListener); + } + + @Override + public void addParts() {} + + private void addButtons(@Nullable ActionListener actionListener) { + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + add(new Button1(actionListener)); + add(new Button2(actionListener)); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/multiAdapterDemo/Main.java b/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java similarity index 74% rename from src/test/java/graphicsEngineDemo/multiAdapterDemo/Main.java rename to src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java index 99cd118..96f78bd 100644 --- a/src/test/java/graphicsEngineDemo/multiAdapterDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java @@ -1,8 +1,11 @@ -package graphicsEngineDemo.multiAdapterDemo; +package graphicsEngineDemo.d4_multiAdapterDemo; import graphicsEngine.GraphicsAdapter; -import graphicsEngine.windows.AbstractWindow; import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.WindowUpdater; +import graphicsEngine.windows.windowTypes.SimpleWindow; + +import org.jetbrains.annotations.NotNull; /** * TODO: finish this and add javadocs @@ -19,15 +22,15 @@ public class Main { */ public static void main(String[] args) { adapter1 = new GraphicsAdapter() {{ - graphics.newWindow(new SimpleWindow1()); + newWindow(new WindowUpdater(new SimpleWindow1())); }}; adapter2 = new GraphicsAdapter() {{ - graphics.newWindow(new SimpleWindow2()); - graphics.newWindow(new PagedWindow()); + newWindow(new WindowUpdater(new SimpleWindow2())); + newWindow(new WindowUpdater(new PagedWindow())); }}; } - private static class SimpleWindow1 extends AbstractWindow { + private static class SimpleWindow1 extends SimpleWindow { public SimpleWindow1() { super(config()); } @@ -47,6 +50,11 @@ private static WindowConfig config() { return config; } + @Override + public @NotNull String getWindowKey() { + return "window"; + } + /** * Adds parts to this window. */ @@ -54,7 +62,7 @@ private static WindowConfig config() { public void addParts() {} } - private static class SimpleWindow2 extends AbstractWindow { + private static class SimpleWindow2 extends SimpleWindow { public SimpleWindow2() { super(config()); } @@ -74,6 +82,11 @@ private static WindowConfig config() { return config; } + @Override + public @NotNull String getWindowKey() { + return "simpleWindow"; + } + /** * Adds parts to this window. */ @@ -81,7 +94,7 @@ private static WindowConfig config() { public void addParts() {} } - private static class PagedWindow extends AbstractWindow { + private static class PagedWindow extends SimpleWindow { public PagedWindow() { super(config()); } @@ -101,6 +114,11 @@ private static WindowConfig config() { return config; } + @Override + public @NotNull String getWindowKey() { + return "pagedWindow"; + } + /** * Adds parts to this window. */ diff --git a/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/ReadMe.md b/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/ReadMe.md new file mode 100644 index 0000000..82197d5 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/ReadMe.md @@ -0,0 +1,13 @@ +# Multi-adapter demo + +## Abstract + +This is a demo for demonstrating the capability to simultaneously run multiple instances of `GraphicsAdapter` using the Graphics Engine. + +## Instructions + +Run `Main.main(String[] args)` to launch this demo. + +## Notice + +*Not quite finished yet...* \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/featurePreview/Main.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java similarity index 58% rename from src/test/java/graphicsEngineDemo/featurePreview/Main.java rename to src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java index 0383576..c05a6f3 100644 --- a/src/test/java/graphicsEngineDemo/featurePreview/Main.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java @@ -1,30 +1,31 @@ -package graphicsEngineDemo.featurePreview; +package graphicsEngineDemo.d5_featurePreview; -import graphicsEngine.GraphicsAdapter; -import graphicsEngine.windows.MultiPageWindow; import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.AbstractPage; -import graphicsEngineDemo.featurePreview.demoPages.Page1; -import graphicsEngineDemo.featurePreview.demoPages.Page2; +import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; +import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; import java.util.List; import java.util.ArrayList; -import static graphicsEngine.Utilities.printLine; +import org.jetbrains.annotations.NotNull; + +import static consoleUtils.ConsoleUtils.printLine; +import static javax.swing.WindowConstants.EXIT_ON_CLOSE; //TODO: finish this public class Main { public static void main(String[] args) { - printLine("Paged demo currently not available"); - new GraphicsAdapter() {{ - graphics.newWindow(new Window()); - }}; + printLine("Feature preview demo currently not available"); + /*new GraphicsAdapter() {{ + newWindow(new WindowUpdater(new Window())); + }};*/ } - private static class Window extends MultiPageWindow { + private static class Window /*extends MultiPageWindow*/ { protected Window() { - super(config(), preparePages()); + /*super(config(), preparePages());*/ } /** @@ -48,5 +49,10 @@ private static List preparePages() { add(new Page2()); }}; } + + //@Override + public @NotNull String getWindowKey() { + return "window"; + } } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/ReadMe.md b/src/test/java/graphicsEngineDemo/d5_featurePreview/ReadMe.md new file mode 100644 index 0000000..3a77733 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/ReadMe.md @@ -0,0 +1,11 @@ +# Feature-preview demo + +## Abstract + +This is a general demo for previewing various features of the Graphics Engine. + +*Currently not working...* + +## Instructions + +Look for `Main.java` to launch. \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/featurePreview/common/placeholder b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/placeholder similarity index 100% rename from src/test/java/graphicsEngineDemo/featurePreview/common/placeholder rename to src/test/java/graphicsEngineDemo/d5_featurePreview/common/placeholder diff --git a/src/test/java/graphicsEngineDemo/featurePreview/demoPages/CommonDemoPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java similarity index 82% rename from src/test/java/graphicsEngineDemo/featurePreview/demoPages/CommonDemoPage.java rename to src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java index 2e9a283..3b08c79 100644 --- a/src/test/java/graphicsEngineDemo/featurePreview/demoPages/CommonDemoPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java @@ -1,4 +1,4 @@ -package graphicsEngineDemo.featurePreview.demoPages; +package graphicsEngineDemo.d5_featurePreview.demoPages; import graphicsEngine.windows.AbstractPage; diff --git a/src/test/java/graphicsEngineDemo/featurePreview/demoPages/Page1.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java similarity index 78% rename from src/test/java/graphicsEngineDemo/featurePreview/demoPages/Page1.java rename to src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java index 9504bd6..62ae56e 100644 --- a/src/test/java/graphicsEngineDemo/featurePreview/demoPages/Page1.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java @@ -1,4 +1,4 @@ -package graphicsEngineDemo.featurePreview.demoPages; +package graphicsEngineDemo.d5_featurePreview.demoPages; import java.awt.*; diff --git a/src/test/java/graphicsEngineDemo/featurePreview/demoPages/Page2.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java similarity index 78% rename from src/test/java/graphicsEngineDemo/featurePreview/demoPages/Page2.java rename to src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java index 24c1189..a1aa2f4 100644 --- a/src/test/java/graphicsEngineDemo/featurePreview/demoPages/Page2.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java @@ -1,4 +1,4 @@ -package graphicsEngineDemo.featurePreview.demoPages; +package graphicsEngineDemo.d5_featurePreview.demoPages; import java.awt.*; diff --git a/src/test/java/graphicsEngineDemo/featurePreview/demoPages/placeholder b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/placeholder similarity index 100% rename from src/test/java/graphicsEngineDemo/featurePreview/demoPages/placeholder rename to src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/placeholder diff --git a/src/test/java/graphicsEngineDemo/featurePreview/menuPages/demoSelectPage/DemoSelectPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java similarity index 79% rename from src/test/java/graphicsEngineDemo/featurePreview/menuPages/demoSelectPage/DemoSelectPage.java rename to src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java index 5dfe020..1e427c4 100644 --- a/src/test/java/graphicsEngineDemo/featurePreview/menuPages/demoSelectPage/DemoSelectPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java @@ -1,4 +1,4 @@ -package graphicsEngineDemo.featurePreview.menuPages.demoSelectPage; +package graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage; import graphicsEngine.windows.AbstractPage; diff --git a/src/test/java/graphicsEngineDemo/featurePreview/menuPages/placeholder b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/placeholder similarity index 100% rename from src/test/java/graphicsEngineDemo/featurePreview/menuPages/placeholder rename to src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/placeholder diff --git a/src/test/java/graphicsEngineDemo/featurePreview/menuPages/settingsPage/SettingsPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java similarity index 79% rename from src/test/java/graphicsEngineDemo/featurePreview/menuPages/settingsPage/SettingsPage.java rename to src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java index 2f592ae..8780513 100644 --- a/src/test/java/graphicsEngineDemo/featurePreview/menuPages/settingsPage/SettingsPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java @@ -1,4 +1,4 @@ -package graphicsEngineDemo.featurePreview.menuPages.settingsPage; +package graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage; import graphicsEngine.windows.AbstractPage; diff --git a/src/test/java/graphicsEngineDemo/featurePreview/menuPages/startingPage/StartingPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java similarity index 79% rename from src/test/java/graphicsEngineDemo/featurePreview/menuPages/startingPage/StartingPage.java rename to src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java index 34b58f8..66cc93f 100644 --- a/src/test/java/graphicsEngineDemo/featurePreview/menuPages/startingPage/StartingPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java @@ -1,4 +1,4 @@ -package graphicsEngineDemo.featurePreview.menuPages.startingPage; +package graphicsEngineDemo.d5_featurePreview.menuPages.startingPage; import graphicsEngine.windows.AbstractPage; diff --git a/src/test/java/graphicsEngineDemo/featurePreview/ReadMe.md b/src/test/java/graphicsEngineDemo/featurePreview/ReadMe.md deleted file mode 100644 index 5d6bded..0000000 --- a/src/test/java/graphicsEngineDemo/featurePreview/ReadMe.md +++ /dev/null @@ -1,7 +0,0 @@ -

Paged demo

- -This is a directory for multi-paged graphics demo. - -Look for `Main.java` to launch. - -Currently not available... \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/simplestDemo/Main.java b/src/test/java/graphicsEngineDemo/simplestDemo/Main.java deleted file mode 100644 index 065b725..0000000 --- a/src/test/java/graphicsEngineDemo/simplestDemo/Main.java +++ /dev/null @@ -1,38 +0,0 @@ -package graphicsEngineDemo.simplestDemo; - -import graphicsEngine.GraphicsAdapter; -import graphicsEngine.windows.AbstractWindow; -import graphicsEngine.windows.WindowConfig; - -/** - * Simplest possible use of the GraphicsEngine. - * Everything contained in just one class. - */ -public class Main { - - /** - * The main method. - * - * @param args Command-line arguments. - */ - public static void main(String[] args) { - new GraphicsAdapter() {{ - graphics.newWindow(new Window()); - }}; - } - - /** - * The window to display. - */ - private static class Window extends AbstractWindow { - public Window() { - super(new WindowConfig()); - } - - /** - * Adds parts to this window. - */ - @Override - public void addParts() {} - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/twoPageDemo/Main.java b/src/test/java/graphicsEngineDemo/twoPageDemo/Main.java deleted file mode 100644 index f32244e..0000000 --- a/src/test/java/graphicsEngineDemo/twoPageDemo/Main.java +++ /dev/null @@ -1,100 +0,0 @@ -package graphicsEngineDemo.twoPageDemo; - -import graphicsEngine.GraphicsAdapter; -import graphicsEngine.panels.PanelColors; -import graphicsEngine.presets.HeaderAndFooterPage; -import graphicsEngine.presets.panels.AbstractFooter; -import graphicsEngine.presets.panels.AbstractHeader; -import graphicsEngine.windows.AbstractWindow; -import graphicsEngine.windows.WindowConfig; -import org.jetbrains.annotations.Nullable; - -/** - * Copy-pasted from simplest demo - * TODO: finish this - */ -public class Main { - - /** - * The main method. - * - * @param args Command-line arguments. - */ - public static void main(String[] args) { - new GraphicsAdapter() {{ - graphics.newWindow(new Window()); - }}; - } - - private static class Window extends AbstractWindow { - public Window() { - super(config()); - } - - /** - * Hardcoded configuration of a new Window object. - * - * @return Window configuration. - */ - private static WindowConfig config() { - String title = "Two page demo"; - int[] - size = new int[] {600, 400}, - location = new int[] {50, 50}; - WindowConfig config = new WindowConfig(title, size, location); - config.closeOperation = EXIT_ON_CLOSE; - return config; - } - - /** - * Adds parts to this window. - */ - @Override - public void addParts() { - add(new Page1(null)); - //TODO: add pages here; maybe use MultiPageWindow instead of AbstractWindow - } - } - - private static class CommonHeader extends AbstractHeader { - private static final int HEIGHT = 50; - - protected CommonHeader(@Nullable PanelColors panelColors) { - super(panelColors, HEIGHT); - } - - @Override - public void addParts() {} - } - - private static class CommonFooter extends AbstractFooter { - private static final int HEIGHT = 100; - - protected CommonFooter(@Nullable PanelColors panelColors) { - super(panelColors, HEIGHT); - } - - @Override - public void addParts() {} - } - - private static abstract class AbstractCommonPage extends HeaderAndFooterPage { - protected AbstractCommonPage(@Nullable PanelColors panelColors) { - super(new CommonHeader(panelColors),new CommonFooter(panelColors)); - } - } - - private static class Page1 extends AbstractCommonPage { - protected Page1(@Nullable PanelColors panelColors) { - super(panelColors); - } - - @Override - public void addParts() {} - - @Override - public String getPageKey() { - return "page1"; - } - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/ReadMe.md b/src/test/java/graphicsEngineSandbox/ReadMe.md index c8003ae..9306087 100644 --- a/src/test/java/graphicsEngineSandbox/ReadMe.md +++ b/src/test/java/graphicsEngineSandbox/ReadMe.md @@ -1,7 +1,12 @@ -

Sandbox

+# Sandbox -This is a directory for multi-threaded, graphics sandbox. -Just testing features here... +## Abstract + +This is a general sandbox for testing out various parts of the Graphics Engine as well as trying various unrelated ideas. + +*Just testing features here...* + +# Instructions Look for `main/Main.java` to launch. \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/MyGraphicsAdapter.java b/src/test/java/graphicsEngineSandbox/graphics/MyGraphicsAdapter.java index 2b04a61..35cd571 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/MyGraphicsAdapter.java +++ b/src/test/java/graphicsEngineSandbox/graphics/MyGraphicsAdapter.java @@ -1,7 +1,7 @@ package graphicsEngineSandbox.graphics; import graphicsEngine.GraphicsAdapter; -import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.WindowUpdater; import graphicsEngineSandbox.graphics.controlWindow.ControlWindow; import graphicsEngineSandbox.graphics.viewWinow.ViewWindow; @@ -16,11 +16,11 @@ public MyGraphicsAdapter() { } private void newControlWindow() { - graphics.newWindow(new WindowManager(new ControlWindow())); + newWindow(new WindowUpdater(new ControlWindow())); } // TODO: add javadoc public void newViewWindow() { - graphics.newWindow(new WindowManager(new ViewWindow())); + newWindow(new WindowUpdater(new ViewWindow())); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java index 6bc0513..1228fc7 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java +++ b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java @@ -8,6 +8,8 @@ import javax.swing.*; import java.awt.*; +import org.jetbrains.annotations.NotNull; + // TODO: add javadoc public class ControlWindow extends AbstractWindow { @@ -24,6 +26,11 @@ private static WindowConfig config() { return config; } + @Override + public @NotNull String getWindowKey() { + return "controlWindow"; + } + @Override public void addParts() { PanelColors panelColors = new PanelColors(); diff --git a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java index 55a253b..31390d3 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java +++ b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java @@ -9,6 +9,8 @@ import java.awt.*; +import org.jetbrains.annotations.NotNull; + // TODO: add javadoc public class ViewWindow extends AbstractWindow { private static final int[] WINDOW_MINIMUM_SIZE = new int[] {700, 400}; @@ -26,6 +28,11 @@ private static WindowConfig config() { new int[] {25, 350}); } + @Override + public @NotNull String getWindowKey() { + return "viewWindow"; + } + @Override public void addParts() { PanelColors panelColors = new PanelColors(); diff --git a/src/test/java/graphicsEngineSandbox/main/Main.java b/src/test/java/graphicsEngineSandbox/main/Main.java index dc89685..bede39d 100644 --- a/src/test/java/graphicsEngineSandbox/main/Main.java +++ b/src/test/java/graphicsEngineSandbox/main/Main.java @@ -4,7 +4,7 @@ import graphicsEngineSandbox.calc.Calculations; import graphicsEngineSandbox.graphics.MyGraphicsAdapter; -import static graphicsEngine.Utilities.printLine; +import static consoleUtils.ConsoleUtils.printLine; // TODO: add javadoc public class Main extends AbstractUpdater { diff --git a/src/test/java/graphicsEngineSandbox/main/Starter.java b/src/test/java/graphicsEngineSandbox/main/Starter.java index 7b510e7..85d9b80 100644 --- a/src/test/java/graphicsEngineSandbox/main/Starter.java +++ b/src/test/java/graphicsEngineSandbox/main/Starter.java @@ -3,7 +3,7 @@ import graphicsEngineSandbox.data.Data; import graphicsEngineSandbox.graphics.MyGraphicsAdapter; -import static graphicsEngine.Utilities.printLine; +import static consoleUtils.ConsoleUtils.printLine; //a helper class for starting everything // TODO: add javadoc From ae5ddbcaa53270d8afa95239184492bef4b9bf03 Mon Sep 17 00:00:00 2001 From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com> Date: Wed, 7 Sep 2022 04:35:55 +0300 Subject: [PATCH 03/11] 0.8.6 * overlay improvements * overlay demo improvements --- pom.xml | 2 +- .../graphicsEngine/presets/SimpleOverlay.java | 11 +++- .../windowTypes/AbstractLayeredWindow.java | 29 ++++++++-- .../d2_overlayDemo/Buttons.java | 27 ++++++--- .../d2_overlayDemo/Main.java | 55 ++++++++++++++++--- 5 files changed, 102 insertions(+), 22 deletions(-) diff --git a/pom.xml b/pom.xml index 4633fe3..f10404d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.KruMF GraphicsEngine - 0.8.5 + 0.8.6 UTF-8 diff --git a/src/main/java/graphicsEngine/presets/SimpleOverlay.java b/src/main/java/graphicsEngine/presets/SimpleOverlay.java index 7c655be..a9449ac 100644 --- a/src/main/java/graphicsEngine/presets/SimpleOverlay.java +++ b/src/main/java/graphicsEngine/presets/SimpleOverlay.java @@ -1,9 +1,9 @@ package graphicsEngine.presets; +import java.util.Objects; import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; -import java.util.Objects; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -15,6 +15,15 @@ public class SimpleOverlay extends JPanel { public SimpleOverlay(@Nullable Color color) { setOpaque(false); + setColor(color); + } + + /** + * Sets the color of the background; + * + * @param color New color. + */ + public void setColor(@Nullable Color color) { this.color = Objects.requireNonNullElse(color, DEFAULT_COLOR); } diff --git a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java index 92520da..b763a89 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java @@ -4,6 +4,7 @@ import graphicsEngine.windows.WindowConfig; import graphicsEngine.presets.SimpleOverlay; +import java.awt.Component; import java.util.Objects; import org.jetbrains.annotations.NotNull; @@ -12,28 +13,44 @@ //contents and overlays //TODO: finish this and add javadocs abstract class AbstractLayeredWindow extends AbstractWindow { - private static final SimpleOverlay DEFAULT_OVERLAY = new SimpleOverlay(null); - private SimpleOverlay overlay; - - AbstractLayeredWindow(@NotNull WindowConfig config, @Nullable SimpleOverlay overlay) { + //TODO: add javadoc + AbstractLayeredWindow(@NotNull WindowConfig config, + @Nullable SimpleOverlay overlay) { super(config); setOverlay(overlay); hideOverlay(); } - void setOverlay(@Nullable SimpleOverlay overlay) { - setGlassPane(Objects.requireNonNullElse(overlay, DEFAULT_OVERLAY)); + //TODO: add javadoc + public void setOverlay(@Nullable SimpleOverlay overlay) { + setGlassPane(Objects.requireNonNullElse(overlay, getDefaultOverlay())); + } + + private static @NotNull SimpleOverlay getDefaultOverlay() { + return new SimpleOverlay(null); + } + + //TODO: finish this and add javadoc + public @NotNull SimpleOverlay getOverlay() throws ClassCastException { + Component glassPane = getGlassPane(); + if (glassPane instanceof SimpleOverlay) { + return (SimpleOverlay) glassPane; + } + throw new ClassCastException(); } + //TODO: add javadoc public void showOverlay() { getGlassPane().setVisible(true); } + //TODO: add javadoc public void hideOverlay() { getGlassPane().setVisible(false); } + //TODO: add javadoc public void toggleOverlay() { getGlassPane().setVisible(!getGlassPane().isVisible()); } diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Buttons.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Buttons.java index 70412b9..e1a040e 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Buttons.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Buttons.java @@ -10,16 +10,14 @@ * A class for containing buttons. */ public class Buttons { - public static final String ACTION_COMMAND_1 = "show"; - public static final String ACTION_COMMAND_2 = "hide"; - public static final String ACTION_COMMAND_3 = "toggle"; - /** * A simple button for showing the overlay. */ public static class Button1 extends SimpleJButton { + public static final String ACTION_COMMAND = "show"; + protected Button1(@Nullable ActionListener actionListener) { - super("Show", ACTION_COMMAND_1, actionListener); + super("Show", ACTION_COMMAND, actionListener); } } @@ -27,8 +25,10 @@ protected Button1(@Nullable ActionListener actionListener) { * A simple button for hiding the overlay. */ public static class Button2 extends SimpleJButton { + public static final String ACTION_COMMAND = "hide"; + protected Button2(@Nullable ActionListener actionListener) { - super("Hide", ACTION_COMMAND_2, actionListener); + super("Hide", ACTION_COMMAND, actionListener); } } @@ -36,8 +36,21 @@ protected Button2(@Nullable ActionListener actionListener) { * A simple button for toggling the visibility of the overlay. */ public static class Button3 extends SimpleJButton { + public static final String ACTION_COMMAND = "toggle"; + protected Button3(@Nullable ActionListener actionListener) { - super("Toggle", ACTION_COMMAND_3, actionListener); + super("Toggle visibility", ACTION_COMMAND, actionListener); + } + } + + /** + * A simple button for toggling the color of the overlay. + */ + public static class Button4 extends SimpleJButton { + public static final String ACTION_COMMAND = "color"; + + protected Button4(@Nullable ActionListener actionListener) { + super("Toggle color", ACTION_COMMAND, actionListener); } } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java index de6e70d..8e89b27 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java @@ -10,16 +10,17 @@ import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import javax.swing.BoxLayout; import static consoleUtils.ConsoleUtils.printLine; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * TODO: add javadoc */ public class Main { - /** * The main method. * @@ -36,14 +37,16 @@ public static void main(String[] args) { */ private static class Window extends SinglePageWindow implements ActionListener { private static final String WINDOW_TITLE = "Overlay demo"; - private static final Color OVERLAY_COLOR = new Color(100, 0, 0, 100); - private static final SimpleOverlay OVERLAY = new SimpleOverlay(OVERLAY_COLOR); + private boolean overlayColorState; private Window() { - super(new WindowConfig(), OVERLAY); + super(new WindowConfig(), null); setDefaultCloseOperation(EXIT_ON_CLOSE); setTitle(WINDOW_TITLE); + + overlayColorState = false; + setOverlay(new Overlay(this)); } /** @@ -75,11 +78,49 @@ private Window() { @Override public final void actionPerformed(ActionEvent e) { switch (e.getActionCommand()) { - case Buttons.ACTION_COMMAND_1 -> showOverlay(); - case Buttons.ACTION_COMMAND_2 -> hideOverlay(); - case Buttons.ACTION_COMMAND_3 -> toggleOverlay(); + case Buttons.Button1.ACTION_COMMAND -> showOverlay(); + case Buttons.Button2.ACTION_COMMAND -> hideOverlay(); + case Buttons.Button3.ACTION_COMMAND -> toggleOverlay(); + case Buttons.Button4.ACTION_COMMAND -> toggleOverlayColor(); default -> printLine("A button has been pressed but no action set up"); } } + + private void toggleOverlayColor() { + overlayColorState = !overlayColorState; + if(overlayColorState) { + setOverlayColor(OverlayColors.GREEN); + } else { + setOverlayColor(OverlayColors.RED); + } + } + + private void setOverlayColor(@Nullable Color color) { + try { + getOverlay().setColor(color); + } catch (ClassCastException ignored) { + //glassPane does not contain a SimpleOverlay object + } + } + } + + /** + * TODO: finish this javadoc + */ + private static class Overlay extends SimpleOverlay { + //TODO: add javadoc + protected Overlay(@Nullable ActionListener actionListener) { + super(OverlayColors.RED); + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + add(new Buttons.Button4(actionListener)); + } + } + + /** + * TODO: finish this javadoc + */ + private static class OverlayColors { + protected static final Color RED = new Color(100, 0, 0, 100); + protected static final Color GREEN = new Color(0, 100, 0, 100); } } \ No newline at end of file From 2b5206b276b8c101b6b51a391a201d86cfe7ee29 Mon Sep 17 00:00:00 2001 From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com> Date: Thu, 8 Sep 2022 02:41:50 +0300 Subject: [PATCH 04/11] 0.8.7 * changeable window icon * multi-page window fix * multi-page window demo fix * window inheritance flowchart * window structure diagram update * refactoring * improvements and docs --- pom.xml | 2 +- src/main/java/graphicsEngine/Utilities.java | 21 +++- .../graphicsEngine/parts/SimpleLabel.java | 42 ++++++-- .../windows/AbstractWindow.java | 11 ++ .../graphicsEngine/windows/WindowManager.java | 32 ++++-- .../windowTypes/AbstractLayeredWindow.java | 2 +- .../windows/windowTypes/MultiPageWindow.java | 100 ++++++++---------- .../windows/windowTypes/SimpleWindow.java | 1 + .../windows/windowTypes/SinglePageWindow.java | 12 ++- .../graphicsEngine/images/sample_icon.png | Bin 0 -> 309 bytes .../{sample.png => images/sample_image.png} | Bin .../graphicsEngine/manual/windowStructure.png | Bin 0 -> 5565 bytes .../manual/window_inheritance.png | Bin 0 -> 13553 bytes .../graphicsEngine/windowStructure.png | Bin 5420 -> 0 bytes .../d2_overlayDemo/Buttons.java | 10 +- .../d2_overlayDemo/Main.java | 5 +- .../d3_twoPageDemo/Main.java | 10 +- .../d3_twoPageDemo/Window.java | 56 +++++----- .../pages/AbstractCommonPage.java | 43 ++++++-- .../d3_twoPageDemo/pages/Page1.java | 25 +++-- .../d3_twoPageDemo/pages/Page2.java | 25 +++-- .../d3_twoPageDemo/parts/Button1.java | 16 --- .../d3_twoPageDemo/parts/Button2.java | 16 --- .../d3_twoPageDemo/parts/Buttons.java | 28 +++++ .../d3_twoPageDemo/parts/CommonHeader.java | 4 +- .../d4_multiAdapterDemo/Main.java | 4 +- 26 files changed, 287 insertions(+), 178 deletions(-) create mode 100644 src/main/resources/graphicsEngine/images/sample_icon.png rename src/main/resources/graphicsEngine/{sample.png => images/sample_image.png} (100%) create mode 100644 src/main/resources/graphicsEngine/manual/windowStructure.png create mode 100644 src/main/resources/graphicsEngine/manual/window_inheritance.png delete mode 100644 src/main/resources/graphicsEngine/windowStructure.png delete mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button1.java delete mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button2.java create mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Buttons.java diff --git a/pom.xml b/pom.xml index f10404d..ae48799 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.KruMF GraphicsEngine - 0.8.6 + 0.8.7 UTF-8 diff --git a/src/main/java/graphicsEngine/Utilities.java b/src/main/java/graphicsEngine/Utilities.java index bf529dc..6c960f2 100644 --- a/src/main/java/graphicsEngine/Utilities.java +++ b/src/main/java/graphicsEngine/Utilities.java @@ -1,7 +1,8 @@ package graphicsEngine; -import java.awt.*; -import javax.swing.*; +import java.awt.Color; +import javax.swing.ImageIcon; +import javax.swing.JComponent; import javax.swing.border.LineBorder; import java.util.Objects; @@ -13,10 +14,24 @@ * A utility class for containing generic methods. */ public class Utilities { - private static final Color DEFAULT_BORDER_COLOR = Color.red; + private static final String + RESOURCES_PATH = "src/main/resources/graphicsEngine/", + SAMPLE_ICON_RELATIVE_PATH = "images/sample_icon.png"; + + //TODO: add javadoc + public static @NotNull ImageIcon getSampleIcon() { + return new ImageIcon(getFulResourcePath(SAMPLE_ICON_RELATIVE_PATH)); + } + + @SuppressWarnings("SameParameterValue") + private static @NotNull String getFulResourcePath(@NotNull String relative) { + return RESOURCES_PATH + relative; + } // TODO: add javadoc public interface BorderInterface { + Color DEFAULT_BORDER_COLOR = Color.red; + static void setBorderState(@NotNull JComponent component, boolean state, @Nullable Color color) { if (state) { component.setBorder(new LineBorder(Objects.requireNonNullElse(color, DEFAULT_BORDER_COLOR))); diff --git a/src/main/java/graphicsEngine/parts/SimpleLabel.java b/src/main/java/graphicsEngine/parts/SimpleLabel.java index ecfc7a2..579309a 100644 --- a/src/main/java/graphicsEngine/parts/SimpleLabel.java +++ b/src/main/java/graphicsEngine/parts/SimpleLabel.java @@ -1,30 +1,50 @@ package graphicsEngine.parts; -import java.awt.*; -import javax.swing.*; - import java.util.Objects; +import java.awt.Component; +import java.awt.Color; +import javax.swing.JLabel; import org.jetbrains.annotations.Nullable; //A simple JLabel with most commonly used functions -// TODO: add javadocs +//TODO: add javadocs public class SimpleLabel extends JLabel { private static final String DEFAULT_TEXT = "A label"; - private static final Color DEFAULT_COLOR = Color.black; + private static final Color + DEFAULT_COLOR = Color.black, + DEFAULT_BACKGROUND_COLOR = new Color(0,0,0,0); + //TODO: add javadoc public SimpleLabel(@Nullable String text, @Nullable Color textColor) { + this(text, textColor, null); + } + + //TODO: add javadoc + public SimpleLabel(@Nullable String text, + @Nullable Color textColor, + @Nullable Color background) { setAlignmentX(Component.LEFT_ALIGNMENT); setOpaque(false); - setText(stringNullCheck(text)); - setForeground(colorNullCheck(textColor)); + setText(text); + setTextColor(textColor); + setBackground(background); + } + + //TODO: add javadoc + @Override + public void setText(@Nullable String text) { + super.setText(Objects.requireNonNullElse(text, DEFAULT_TEXT)); } - public static String stringNullCheck(@Nullable String text) { - return Objects.requireNonNullElse(text, DEFAULT_TEXT); + //TODO: add javadoc + public void setTextColor(@Nullable Color color) { + setForeground(Objects.requireNonNullElse(color, DEFAULT_COLOR)); } - private static Color colorNullCheck(@Nullable Color color) { - return Objects.requireNonNullElse(color, DEFAULT_COLOR); + //TODO: add javadoc + @Override + public void setBackground(@Nullable Color background) { + super.setBackground(Objects.requireNonNullElse(background, DEFAULT_BACKGROUND_COLOR)); } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/AbstractWindow.java b/src/main/java/graphicsEngine/windows/AbstractWindow.java index 0161045..3160006 100644 --- a/src/main/java/graphicsEngine/windows/AbstractWindow.java +++ b/src/main/java/graphicsEngine/windows/AbstractWindow.java @@ -1,6 +1,7 @@ package graphicsEngine.windows; import javax.swing.JFrame; +import javax.swing.ImageIcon; import org.jetbrains.annotations.NotNull; @@ -40,6 +41,7 @@ public AbstractWindow(@NotNull WindowConfig config) { public final void resetParts() { getContentPane().removeAll(); addParts(); + getContentPane().validate(); } /** @@ -47,4 +49,13 @@ public final void resetParts() { * Called upon creation and part reset. */ public abstract void addParts(); + + /** + * Sets the icon of the window. + * + * @param icon ImageIcon object. + */ + public void setIcon(@NotNull ImageIcon icon) { + setIconImage(icon.getImage()); + } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/WindowManager.java b/src/main/java/graphicsEngine/windows/WindowManager.java index 3ede926..a7c1307 100644 --- a/src/main/java/graphicsEngine/windows/WindowManager.java +++ b/src/main/java/graphicsEngine/windows/WindowManager.java @@ -8,13 +8,18 @@ //a class for containing windows and their updaters //TODO: add javadocs public class WindowManager { - public ArrayList windows; + private final ArrayList windows; + //TODO: add javadoc public WindowManager() { windows = new ArrayList<>(); } - //TODO: add javadoc + /** + * Use this to add new windows. + * + * @param window Window to add. + */ public void newWindow(@NotNull WindowUpdater window) { int i = windows.size(); windows.add(window); @@ -32,7 +37,15 @@ private int getWindowIndex(@Nullable String windowKey) throws NullPointerExcepti throw new NullPointerException(); } - //TODO: add javadoc + /** + * Gets a specified window. + * If multiple windows with the same key exist, returns the first one. + * Returns null, if provided key is null or no such window found. + * + * @param windowKey Key of the window. + * + * @return The specified window. + */ public @Nullable WindowUpdater getWindow(@Nullable String windowKey) { try { int index = getWindowIndex(windowKey); @@ -42,8 +55,13 @@ private int getWindowIndex(@Nullable String windowKey) throws NullPointerExcepti } } - //TODO: add javadoc - public void endWindow(String windowKey) { + /** + * Ends a specified window. + * + * @param windowKey Key of the window. + */ + @SuppressWarnings("unused") + public void endWindow(@Nullable String windowKey) { try { int index = getWindowIndex(windowKey); WindowUpdater window = getWindow(windowKey); @@ -56,7 +74,9 @@ public void endWindow(String windowKey) { } catch (NullPointerException ignored) {} } - //TODO: add javadoc + /** + * Ends all windows. + */ public void end() { for (WindowUpdater window : windows) { window.end(); diff --git a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java index b763a89..0fe3e77 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -//contents and overlays +//contents and overlay //TODO: finish this and add javadocs abstract class AbstractLayeredWindow extends AbstractWindow { diff --git a/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java index 233d92a..716f2c0 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java @@ -1,92 +1,82 @@ package graphicsEngine.windows.windowTypes; import graphicsEngine.windows.AbstractPage; -import graphicsEngine.windows.AbstractWindow; import graphicsEngine.windows.WindowConfig; import graphicsEngine.presets.SimpleOverlay; import java.util.List; -import java.util.HashMap; import java.util.Map; +import java.util.HashMap; import java.util.Objects; -import javax.swing.*; - -import static consoleUtils.ConsoleUtils.printLine; - import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static consoleUtils.ConsoleUtils.printLine; + // TODO: finish this and add javadoc public abstract class MultiPageWindow extends AbstractLayeredWindow { - /*protected Map pages; - private String activePage;*/ + private static final String EMPTY_KEY = ""; + private final Map pages; + private String activePage; - public MultiPageWindow(@NotNull WindowConfig config, @Nullable SimpleOverlay overlay) { + public MultiPageWindow(@NotNull WindowConfig config, + @Nullable SimpleOverlay overlay) { super(config, overlay); + this.pages = new HashMap<>(); + activePage = EMPTY_KEY; + addPages(getInitialPages()); } - /*public MultiPageWindow( - @NotNull WindowConfig config, - @NotNull List pages) { - this(config, pages, null); - } - - public MultiPageWindow( - @NotNull WindowConfig config, - @NotNull List pages, - @Nullable String activePageKey) { - super(config); - addPages(pages); - setActivePage(Objects.requireNonNullElse(activePageKey, getFirstKey())); - }*/ - - /*private String getFirstKey() { - if (pages.size() > 0) { - return pages.keySet().stream().toList().get(0); - } else return AbstractWindow.EMPTY_KEY; - }*/ - - /*private void addPages(@NotNull List pages) { - this.pages = new HashMap<>(); + private void addPages(@NotNull List pages) { for (AbstractPage page : pages) { addPage(page); } } - private void addPage(@NotNull AbstractPage page) { + //TODO: add javadoc + public void addPage(@NotNull AbstractPage page) { pages.put(page.getPageKey(), page); - }*/ - - /*@Override - public final void setActivePage(@Nullable String key) { - String nonNullKey = Objects.requireNonNullElse(key, AbstractWindow.EMPTY_KEY); - if (!nonNullKey.equals(AbstractWindow.EMPTY_KEY) && pages.containsKey(nonNullKey)) { - super.setActivePage(nonNullKey); - } else { - printLine("Page not found"); - } - }*/ - - @Override - public final void addParts() { - /*if (pages != null && pages.size() > 0) { - add(pages.get(getActivePage())); - }*/ } + //TODO: add javadoc + public @NotNull abstract List getInitialPages(); + /** * Get the key of the currently active page. * * @return String of the key. */ - /*public String getActivePage() { - return activePage; + public @NotNull String getActivePageKey() { + return Objects.requireNonNullElse(activePage, EMPTY_KEY); + } + + //TODO: add javadoc + public @Nullable AbstractPage getActivePage() { + if (pages != null && pages.containsKey(getActivePageKey())) { + return pages.get(activePage); + } + return null; } - //TODO: finish this and add javadoc + /** + * Sets a new active page and resets parts. + * + * @param key Key of the page. + */ public void setActivePage(@Nullable String key) { - activePage = Objects.requireNonNullElse(key, AbstractWindow.EMPTY_KEY); + activePage = Objects.requireNonNullElse(key, EMPTY_KEY); resetParts(); - }*/ + } + + /** + * Adds the active page to the frame. + */ + @Override + public final void addParts() { + AbstractPage activePage = getActivePage(); + if (activePage != null) { + add(activePage); + } + } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java index afac506..902a270 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java @@ -5,6 +5,7 @@ import org.jetbrains.annotations.NotNull; +//has only contents, nothing much to add //TODO: finish this and add javadocs public abstract class SimpleWindow extends AbstractWindow { public SimpleWindow(@NotNull WindowConfig config) { diff --git a/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java index 736aa63..8d84939 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java @@ -1,7 +1,7 @@ package graphicsEngine.windows.windowTypes; -import graphicsEngine.windows.AbstractPage; import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.AbstractPage; import graphicsEngine.presets.SimpleOverlay; import org.jetbrains.annotations.NotNull; @@ -9,14 +9,18 @@ // TODO: finish this and add javadoc public abstract class SinglePageWindow extends AbstractLayeredWindow { - public SinglePageWindow(@NotNull WindowConfig config, @Nullable SimpleOverlay overlay) { + //TODO: add javadoc + public SinglePageWindow(@NotNull WindowConfig config, + @Nullable SimpleOverlay overlay) { super(config, overlay); } + //TODO: add javadoc @Override public final void addParts() { - add(addPage()); + add(getPage()); } - public abstract AbstractPage addPage(); + //TODO: add javadoc + public abstract AbstractPage getPage(); } \ No newline at end of file diff --git a/src/main/resources/graphicsEngine/images/sample_icon.png b/src/main/resources/graphicsEngine/images/sample_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..be2037f98f2797fa9a0518f3a8b56033cbf32a77 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f~P!P978<3-%dHrdqjc9Wo36$4FA;~l3gc{ zNzP8l<;YNt4?ClHaQ;kpJx})yW(li!XT0)f*!pBjklxoUPv1)dsY$PQ)!8@9jqp~R z8U2&tz#-kY$tOLXOCJ4AW_YHtYqR&t9)HKKg|P<&7Ti9k)%yCk2=k8UwTxD483Y7b zPyDR$a+6rFVNd5{hObrvM;UWGx3In7x-QR{^ZJUwg0MB;(<8o$Nz^c(`Nx)_t@if* z^z2I$+<$XBypsRtdX}$=*(Hm4*{z0^W(kWP|6nNSJR%sxxam01R}7x6elF{r5}E+< C#&>T3 literal 0 HcmV?d00001 diff --git a/src/main/resources/graphicsEngine/sample.png b/src/main/resources/graphicsEngine/images/sample_image.png similarity index 100% rename from src/main/resources/graphicsEngine/sample.png rename to src/main/resources/graphicsEngine/images/sample_image.png diff --git a/src/main/resources/graphicsEngine/manual/windowStructure.png b/src/main/resources/graphicsEngine/manual/windowStructure.png new file mode 100644 index 0000000000000000000000000000000000000000..ecfafe66fc614aa4a901f2e59c533d8182f329fd GIT binary patch literal 5565 zcmb7IcT`hbpN*)1AY!3O6;O~aK|qnNNRehCKp=o1y$OkQ5>QbI2m(Str1u^O1W4#o zgiwRj5D;l1p<^O_@Xfcr_sz_k`QH3-*InnHbM`&!-nIAs{dTyqp*9N>HxmE=VA0jN z^8f%iCi(kfq(6G%9~|}U=ynYHKwA?~+RM9mG&td?VW0s3lt(k~JwACfKJ`?`90~xO zY59E}W522w0syc-(7mJa$j@q-+~dLB$=$w=g0ft+K6VHBiQPu*LmZ#qOxtJk-ZRGV(QE3u8Mo>?l*lHrxcp2 zRw%o_1_~wRlnVmVn-F`405p|R65w*y4DjU=8j!DHbIkZf6J0ue=t*@JI_41W6C42f zKNqaneu=4npsSaovKYBnhyPyHtw8Ys6E`t{?z=YA308zx`AOht&a9$Q(JevrN@mby z)0y(f4pZ+()J=f$4LSnXGb#{*Nv#Az8p4^rf>7728ZMVu1>C}|f@mTF67o1W-05;k zz0Jj2%g?$k51j_EhVjnY=mvOr!|CcNtIT+7^w@qQ$ z<6GmlwBVqP(YP`}YF%;F>s%!{_Hp|`mDq~MCNVQ`TqMcx&`kW`vL&u$`QDeglAk4@4Jk-S_TKgJ%&oGvIi1ys zu$SRNHz(4(#Hp$^XeN}HK)rmRyuMQ~+HtJHy^64#?3~DPKaSeZU^rk*d51>=H6?RI=r5E=}n@2kgrVEk3Q<$I5;6o!a6)r zY&qU%E?C(RHYJYF?Jdt07QK#L`YN=ju5A=wu4jgAaOX#A~e0 zr5dH1h9>P+VmRFct?-cryC2IXhXoMw3?baGQ^)=to&F8qzS6D zLc&g!8;@R@ovR>&_QB~b|Bb3#FjLCxZ0l54-uDezdh$8Dem;P=&~IX+jLXpxibZ&o zW0KbQ^Fnt~Xa6zrPsWEa5aU1vv-HjuDr!rDkxCT{RE%g!Oj@;AfD~;nUQcS%t>q7> zKX$YT>)>C|-- z2<7hhub$5rSyuFrh}kJ%&HnQ9^%SHgQO@esx?TO|)u!&9*Sq$19hsoCKPR~SKIBJx8!WfMIdzuYeQ>`{4d z5YN0*t0gtqE2U{O-TaJa`q%q{+;+Hr5idjJsVu$9?o~%>sPXk{tMmo)hee&{ zvKoUww;rcGyUBMq-gF{rFRfuLn3YW3>4@LrqHrbg%^*?RBvT)+-IcAyN#ODXzope( zS!o%lB30sib<2g?;+-n>urMjP*a$hb8&k@cir*i7f%TR$gZFyPv_c1#Ej#yfW}|*T zA0CnmZE#B8@W;8&{XMt(H}v|ieix=mY*hVJ`F61IPxOp;lqs6sc&YQypBDK40{u%9 z{aXlPw1qSTuHcdQ_RXewA+!QxMwo%NjXRenb8=+UxcW;D1@_RY3`Qw8Av)I=ksWpj z2~DTRgT<=oyL@AEqM(AxKbRZlR>PJ;$$Mcw){j)vI-$^QGs1%U`uufNob3(Q z`~u#S%ZwE&C69n@ezJqMbxONWDezl&-XH73J62KqQ(9*pTe!@_tIJa|>_2h$OFG)T z&BiE}fSr?+9EkZC-@u!3XRtUI*uEzD?sY_&aF#ymT0slN4!$0~&!7tpw5}$}Wz@;M zRw$2Lsf7Sny?P3VMNkqGsTVD4<`XCD15x@^IH*qlGuE|=xKJ_Va;+we7t7Luy75aEhZ`#RYpXHB zwQsDREix;QnOa9ltVbvXRHx)3EW;DR&!|hstyi>l$nU7GRnPO9HdBj{Dh5EU8d?M*0~>eK5$}! zH5eXZ!*zX|4Dw=?KhD&285JE2^PVJO^sp*R#V&)6%n0evqSiJ?BD2NU%Z&5x5O@y8 zkKjIyaQ)b5e`}uTE+0k4KUsdN#<%*RN=DJ){?}bg|0oF~&TkFln~cLHnH6_aXu9gP zLIJ;#I_m~!fo>xd3n*~NWqp7C7g5H}9tC|UXZ6k7&FabG9ym~$7uzu}Z@)5fWY^c? zyQ>FhRc#;A;@w2ar~>rF#^9_{X*l-f!zjBx{*lwuO8)hMH0dOVQ>at4`%kR3P-!xo z+&a12eRG9y=|ncw*G0w^hlwd!fL&St>x^z4pPoz4pKs|BU5%doZJ8hH_>c>ZjW@uv z9dH!3CjpLgoa|VsvY?(-sa|;*4`;m8bDUkY4fr_cbwe8SN>iO*d6T^y zMeojFoyR=nNi_l`Cea7{hX zv)nOz{P1Y_3f&?ie54DHf9rynBg4@0(FD)ms^h;Rvyk08w=WE5s%gf^ds>)Vda=ot z-auL+Pw4ae1k&mazGnOu!Ss9icg$F%EH1K>IUt&?-_O&j8~)i3=&gnGtJ@S*>ieolt%NJUu#i;D0{m=U2{}fA2L8?)_ocn5}%ZUUaZGB084}7Ll z2#q}<7-pbulksldue-ACU$y&x?PHkMOP;w&(A}$5o@ST6J*px1KiizYI5g>;+0=p8 z)SBweZS96_^XQcY&TT@K;D-Zq^V@*>d^CTX(Y80$+@rfB1yu&I*{4bd%$BxTm!I-H zek9ldY-+RZx$)(jgt+hR!h)k{UA>uSzep+%lL}|cqBq9UzW4Ut^WX1a_R6bUwhgW{ zAw<;$nZ!4XLT~x+CGSBubm={Ej7_Xk_C&nAHa7{@8(y{y%`?#IH2JcUhvPu#t+v@y zS-XtIYcdC=%Y>8BwnJrM@+D{@;0@lm%zEX`L{LIBB3L&1mB%cGa^ zPLIRZu%TJt@okvvM+y9Xv6g$VNMlMJ@IF^T18^7j8cl~C2%sOXMg&(?2oI6Je}Qj& zYaGz^eExMR{EjSpzpGlJ`-`t6Q|q4WrOAy=Fn!W80kfd`h<@YQBz1q{P6n3FtQ|~0 z+$Z3rf)O5k732ZeA2!R-T2gXIauR!}61?^JdKGi+DA4_+are=>IBR`WS8a^*!fsvY z5{!Ja8#wSl<0qTGmTI#_ZV3Qs-X}ecv2HtaeC#ZjrMB4GCgCuX$!Q^HPf5nu!DpGy z$S3DV^`U=epF>C1L9C1xGShyXDgB*19}FQRbKtl9{OkOtw&~9rqfPH%99174xKA`O zeqq$$vh#kKGPb(?IYYFCS1>+ z^nDDWzPa9 zTa`*u(;NeR1LH_yRhRv*Q+9stEr+|e=T>$YtYdRmNgpOb$|vZUC2WiikVj7EvYf$F z$A@(lIx1&>#Wft{N;yO&`HFCQF-1zxb{E?X$5NAVDbt$SwhC;XjzMGBH}OQq+k{1e z*UaeNt$XHCrQJI|JaBLK3X-=wFuJjdgvIo}aHq}I@sM2_RDk!U1s6{hn^+Bs*Cv=W zuR1-(O)_wT6#UN6vL4n2ZGkL#6Z>~;2Gfu1`@U^wl2P$Mn>pK!o@(zWrp$DblTlw- zGnW(7Z>H%;UhuvxaMu*`;z~h6_mda>i`Inx18an^^rvp@REO}-dMLCnzpBmtDnA=L z2S53H;9h-Ap>j$r?~7H1(?n!0!soI0#~8~yiH|dLi3} zVwX9nLGtV%U_3dW#04^HhJmxcg-cw)bP)U{Ub%C(k(+bto?Q{(ALmAR!J6eu9IVP* zOiM8%x!y!qNX|$za-nUvqS1mYj985@Yz@|E*wHhD@5ihVR8p}eJ3rz-=T)XqH)I!A zg`{uLBRnroHwE~-3!b#o8tuB`qb7sulr5HkR**uWBPZoTub;-bbq2{;sm6MAm}u$t zk8U?c>;+%ZCdSkw`S2AP4l8*)sUOwsYhhC&t?hZSZowYO3Z(r;4y5@YlSH3a{$)s|rD=enZt(`m-7tdfx8h3{jF6k2z$!cLQ}GV$z6r|1vTe=>Myd4-T|VwfKU zldt7d+;$N+SIaLg7Td&-YH`R_N18l;S!#$?k zE*18U3n-^X#pBx}e?%4FA6)46yTolWA}yi}sEqqbIX_>UJ0vM`H8WpFCLaa573wD- zlI}+9gE;l|;A29USf$6}E#|qH(Ckkn>)yUT53^qgN@HfVGhiTZS`NCr5|x?lX9>we zsi`L8e#qoL-%#vH&9oIytbQ0j_bN5v#;ZW}caJZ4sT6C&c9+;_cHkRiN1KwJEVtrl zlSYo=%9imvYI90E-@OW&gKUz|nXz8obI}Ugwx^{O+aDULpmV;T_Xu$&H#%>wAf*Lu zk79;PqJM2+?jioxkIkqOEKN#+Xoa&!PO0_x%y#^25T1|pTf<&*DX{!~V;`oUHuXX; z9u+A+ji*h-;}fxd;40$iT6Ji_@N^jRCkFZbkHmugC{)b<_i5u_*zlj_$KT2;{}VxT a_OMyE9j18cVCyJy1?XxS-YM0zdHx?uKY85% literal 0 HcmV?d00001 diff --git a/src/main/resources/graphicsEngine/manual/window_inheritance.png b/src/main/resources/graphicsEngine/manual/window_inheritance.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed2b8e42259f916a8f0fca62a9fc0591dafcb65 GIT binary patch literal 13553 zcmeHuXIN8Rn{E&VMFCL(=?bqRARtPwf)u4n?;s#8^j;HCUPXw2D7_<6LI{x(T7ZB` zkt#w69TcgdLkKP5Z2Z1=zM1*XT-RJPbDi_!oF71Pv-Z92=hSy&lz#l3<0}T~Wc^~Hz@a43#vW_wcRFQE0$nFgA z{haqhb3YJ>;q%E4Rfku}QxHh}^~C?w+kCKDV+I*wp8 zx6OSppC!lMOgTCrS(7E68M8VF!5Bo)qBlO5wwT$Q=ebOJvYS4o26gZ)M!(OcKfp$p z$TVkZD<6~aH@ynC4qN?LZI5eK`BU|6f9^gsb0hEi__;$p*g)}`-x$@DSa(nn(A}RBARyvtvIip899bUJhu3Z;NjBtQ zZjs(FHk#QptVqS_1-L0g9IQYsh;s+|E_A-R+&f+zjXF*FlOloVd-RVhRZUfMEm(=v zEkDj4nzxq#h-oX_{}4ABPsU z$an)HFD7}N{vflP3dEV4$3r)Nt@a`}>BYJm1YKm1{89e+b3^7!sK{bJ%LnoxWqlph z-){m8dFIpPBadT6B}GLnrER@4z8M=`{mQGGX-$uY>{n5-zM?~(<=;gqwrxvAQPf71 zhHT46?=*C8l;6mhW(I*!*A^GNy6sn<`|gdgHKTThEl%TgupB$21Z`l>MDqdvbvsQC zI@2B?HPmGbHru;8Eo12AQVZ*NPEqdQp+DT)Yj89NMNXga98yU8`(m$N1yn<^{p|^~ z z@g>&7w)jdT;K~;aT=__rsxjHu3-XR>AW_po%=9M{2dzZN~_TR<8t%>((ch9qN;i>hU*uSLyVno=uRjsQ#UMi>)0U3wUhcD-r~G z7tiJf31=X(Fc<$Ya-5xrhbWZGtZ^P5A6UiB$iB2&RQR#vbSkq!ioThRvtR6ZXWFE~ zz={0H6E#o5a-im2(8Kzx7#Y+@n=Z4joz^3+XMR&D$yLjZT`*>Q0 zS9E|%GshS;-)Fb4JtUy@R zDbU7EK#d(kVyV8dSSV+YaYvohrPTRI5idxonOl7s_eYW2&pW&7LWeYDNRK0GyRTM2 z9n-U;c#IBoz8aE~9*dZmk00DAicK|VUhX?%ao%7BEmo$EV8tDQVPa`JvU)edj%7hD z`amitISoCc@&uBEq8*4Ig$&)X#rDbyPplVj*Pw>KO*LGZyi>ZhrAlpXA!sUSLMYB@ ziqJ2;A`rBrr^4<9_Hnpp(2mvQ;6p7t}GGXWX9J7{tm z97eDx;Y!=1S+mm2s%b-No*CSDW4SEozi-vCm(|x(s%iV@i23bI$SR4hi=L?C zQsB4owK90w&r&Mc@`~GzK971wBe&V#;!o9-!JEt?8jY5N^z$ShgQOLem1@&?;huyy z2p|Kr?h>QUzosu=4`j*I#L?QimJ~QCFU;_V>{ov)EQMQ{l;PBXgql`ag_Mpg*M2|X z3lRPOroC)0qCQ$of{Yzt1vOGBD@moDs#Ey`ZA9N=(Q5X6TBn@TI>k`xAT}VW^h!E@ zHbo|Y0s2;W4O?QlB9hE;*N_!y2PD-;LMXZTmwE?!c%iMVyn84d-f0wZ@T!k^%^=2( zYc?X=6m;^ytcT6HFAP89WEhH!6S!cFJ0h7M3)L5Ben$J08L12=H=Wt*qtL82eJA)pgzpOK;tJJJg+T8Gr6JIkdD6wm$sr97IRA<)Q!TO`gDX_OpwKQb# zjuBgPOq$j((7&$(fyv69y~{~ampAv*-uO8<<-N`H%srSc4SMM*y{&k$wQUw0bC6PE z(ih!e)3dwodSUB@dAMj@<3-4zC_S|PjkO#%C|>)U9!lWx^6SX?j{=NM!}_khMeiK5 zOwjb(%gj}khWQq0S3{$1-AfQ#l{WYpziv9>=uQd;j@3CsAEGC2QWGYog~XdWeNQvC z!N~8n&5RMKL0r?%3Rv zDeKXF5LUH!E4->oZtn%zd)MBFD^SE0qH8EbWEngE-KwW)*wW2Bq< z;kCIl#~AbGUW^gcrY!h(`yT_{woI)~H}CF+RQ&u+{X#=DLhW>BdgqMkm-o)R)S$hP z9L&)IbK<#W}??k*6Rd}i@&{wvo{+PtlkJZY2DYnW0MvnO_$jZ@Dm|D<=l zIi_y7>aVnz3-N;Gh9{veY=+Ot^Ev?v0c6nN7ZphF=Z~&Os?~K@LO3n0kiU=m8v-0P zrEFDog7nXP?P62SIzcq7>Q4~HZL_&mwLeb~O{>PgkS4WYfTuCD4tk=8dp5l*3^sD- zGFxMDUF>gU=2;g9tmFhi*1h=)!Nk5fLF((WPLQ=Z*DlN0C*DBDB7D?NPT@pbK@#b* z-3$;rosWJhFC(Zfd*RkPzkQ4LQ*T}$*WYdW{F0d#CkksfPS1I$eyhC_@~;sE)h{QAh1JSQn@M@a5JsjoN8TuDP@Hc@G4=k@^LFGWfo=M!kCg+w&CI+H?51buwB;X5nA+)x1+< zE>LntsI(GkLE<4#eXW>=0b;D+uJQ@-%>-=*LHh=Prnb$q6QFs#5b~8tO&m~j6jE{h zL(1B^fcpd@YZQRZ82C$I8o2R{f_hD z7f+x?+z9VU5+vns%EX?XNa1DFv`>8s2s7Jy{p%JlxLcKGsLkdp(CM4a$X^$EZ2&;L zE$}aZ$ZG}w{;zc20rT&qMH{byWvu+-<-_(qsz|#2hc>sLqfa{A_~X=Vo7=p<7nH%= zVk{`u&E{7;pc&`0RsZu#hyRS#B@JIkB^-+=HaGK~i(hB-v?2)}(I_8tQ6M&Y#V6|u zI*EAS9Os5@buPKCwJ=4ugY#W5`NEo9`EBd(jjDzfnmpKW$g0pDegF9b;E59gfrfv$ z%y;1&Pj0U5F~xXoHkC^(A=vlZ`mJd0ZDDV8*fDu`Eo|%S21b^4J)UwVSuH1Fvt1(N zJdqg@u-T2Ty~{lV&$+Y{aeSDSkp40u0YzlnspOky>W5bM!)9(pX9VnmWRHB*if?1tbz zNk@hUddD8jLXN{;WjaW^VOYRETtKhfc$*txy(W&g$S&LJ>x&|7XXRmiGS}cdVuUhc zeM8gq`Qk^b7shgI!{VIT9dai3uDayt3-~Rf0?g23-bv2MmiRb6LHFq#%$;eGxCD-p z)n4+nX~sd0x?wWCpV-d2-FC-6FRvC@%IchX{j!}*2N$&pGsr2Kt5{jnAb+0$;y&w( z1LVH?)D8YP1Wq;3`d#Rh_&|Q!kDl@i(BMV&ePmd%JlI&6n4Tc{)@fV9ZQkVNDX*0| zr6n&;CBI?Q*_YTM%%5?IA59v4QWx+Z0hSKU83{?xyOi%rSac>dYUzS8Hf7S~p;NvB zV7{QFZP~WT@v$|#sf%GX9@@RN+PGaUX9evS+g<^FgAA(~EnKxGzFb2(QP_3K1~1-i z72IJ)*F?a%^YkR!>{f{N1zEv(&1Ay8_^gtX1zmDVS@I}EDmjBoTew!D*ea;|_ICP} z1}%whQ--Or2g(tFgb7HP_*zfjz4xJ#dUR0)MXV;RnL|%hydA44Vha3A6=_s%QYK#( zT2zqbkclE}W$0PvhpL%|$=N_+dp0%B;OOt+t%ljGm2#eh2Y{Q-ab(`BogxwO-`nlJ zgvGEpT#bIywzC>$ceEyhP=LDS+9Y)g1u{Uv`$dO~eK9>k#%x9q@lm=9c!D{S_Or-tisT@1o&^H?yprav5%$-AmVU7`DP1!YZXlR$vn*^4-MZG=SgcS(x4jK@ceV{j=3hc89*P zrd6>wrq&XfcMW`(n+?i_0^NELh2BYix3>e3o-cl;@BnMdOfg_hX`NQ9Xk3Q2GQoDU zu*eduGX9qZ753{vG83SH=c!h;$y@m^q9j54JP60F|d{83E4WB zrl)3(iQtVSn6WI%D+>PeF}m)K-!q*-M(z56Wi<)xnEi#D=mu_qq_A1-dh=yUw!S5`N?!|!BkUR7j_%56{GUt755Fv2Z)4_E&(3BI6s%iU$wp( zIt%1mm3QAFD`8Imp88ens>XhOwNzIhLzZA|d1ytP zfX_n@a&?evsqy5{??o|dU$Y|Z=OFYF$M~a7lRBTOp!iZZ9ZS!&PBn-mk*PRq{^~gG z*D2YFNj1I0FqjpX?>mcxL4BE- z`Rj{Vv*zT2k|RE1yU)ik1MM@VBxiI?dBKNaC=!=6B`;ExbG}MYg3}cyX$TM^M)f^< z6tu*W&5X-yWf0ZP(@S|KB_m#c#6N=D*dUYIH&;E90x34DF!*Cvr5mYu5xm#K>BV|J zn(VgnUA^Jf-z)Hd_~pLg_4J2nqH62n3tD52qxYvz#N!WES;iRd8k@(b#B#F9!cS{W1usk8xD<_#0w&pd5HY!w_g3`<_UOkD>3R!zQVyE!5&k)R&;yE5 zig$`gkkIn?7#Ndu3!j=J21UNNDyp$Fm4(q4om(*zACe-(_32OI53Dagn(s2-6`%Md zUDT-9&2ljOV@;$XW7_(c$1|58)e%sP(>?xt)XO1bdB#y8iXf80*30PzV|P%4|4)wpPe+n)0CR>-i&ZnUzVv%7 zQV!-=g(BN1*XK8%^YCY&><+KzJaiKDUJY=*m~ALPK!gXeS`+a4E;5luc5)d;p892C z%LiXPxsA3ulMaXLZ3O46EaOmH2JmUMXT$e@Ajt;bl%@v=s)9@UKcPH zw*JWrX_QiqKrZK*VBSvQ=F1y5hnbSP9NS{&R03{gjz zKBr|+rWawK(*v!4Y>65N8M@KlAW#14s#TQ&?6g<-n7iPkS{g)^)zbauz z^_C3{e6kY_47Gt`=xMW-9JRi#BbX$t(6Ijcy@1IEf8tWmg;In4L;<}eVn9xYD0BL< zUM``ATUAi3%;9LgU5L)>S7P4rA)#uoe(eSh(+vGmU0Dw9_)<3Z1&XVGNJ?8^XXIob z?c|)xfBdv`{gx6uXEJ#xa4^ZntzZ`~O@Wv|jirp(%i|mheU*?a!Yx6&(c8oHy@REw zsXYSSKF`83=h0e*r~KW-33>RpTk?8E3VrLF0yVe41qE;~+LL}7**>z!K&j5@z5CP1 z^S}u%GjXsZS00Ys;xp_Ut`An*Wf8*ZFE^gxMdUHOO|3U_LqX6rI`G_j*+VkJlz$Z!*m{u_H;b@Wq370 z?mEtPh`@0)+p znGEA7*N6OQtQiSq&*t*Zdq~mLn7y;i5l^3M7%s-jcQ4P0EIUluwv{__mdbU7q%185 z+SKe@EF3yQgmCV%=APxHt5apBJzcslz+rMb4A_y!rgM%><*g(}@I@kb#>1Ol&Jhkf zyA5DCY5Dcq%KHfAu_`N@j|ahF-Eqr1Mh>go8C$-m)Z)zN(A^HU7s{IyH>Pq} zch-fbJmU=CCkCJ+&KhSfa)nh8=37E7%XzY3_evEHDZT{YGoC4%%rXd{(^P!A7PYoKo=n1*9%okuE-Ire??lly{^!=2JLe^G}UCW}> z2ihbE9=`X;@yclYTE0N-t}jK?=xd`kI^S7nC}{MDj>0aik!xWRx5Zyy-!3qqc%SAl z`Y}4DO~6b)taP1WWvZj)sbT@UpQX-weNQ8vZHnNU_K1GpI~~(NXVZmwHwD|}wlz%i zfw))gk7K!Y?boLBEOP#3=x{18f`zc)h4P5Lpz`m{xx*$Mk0{Ztq3mP2?-gD&wK|iA zn%nBQvpVzqg{&3_5hv7UZn4f6{a4z!t9#MhT|KKG9tNS4t0nkh@uoWD0A(F1+bPGXk=B9sv zo_lIxC-p5Kbx@<(pYD%7s2IAZ0*#ZT`9L+JCwNc7Bx~JAk@BY2*XA=(<7i;hHH{@fVId!cat`_`D_8u)#q2pbfBvb6Td)u zEMi6g%|rX36B@oC>6UkDpk!4+PHp#Zz`)Y&Sf$_4W|9SH;`w)7fY1kh!l>m9|I`K4 z=(p+i0%}CoJR*x@@&qokc^g$20`^}PER18umDdHxPQ380+a-8QeO)b84j*q35crR_ z6twG)#)&CVKa;W{FxR&3vE_P*BGrGrgyTOd(~|GT_8*s@I8_l7Bz#AJR(Lo>;}S^p z`eL-{A?0r+QLXxS{|FC76DUW?IhDLCA+t(i7k2x4n*;tnWiw zi|t_sqT|BPp^*g_cRrto93NV>9XRsv*b;&te^WZ#D}%W0ur#~}_P}i`=E{RdJ>jpT zm6rMA&-S&NZ*rU_ZwO{n9pmOX!_BYaH%jv&cKR4&osshBzmWE^1GM>)MQ~e zU06_lzd<2fwK~vuwrr#HNvn~&ekuBs5_owp^^j}{FkR}VCCr5+@%aD4hH7k++1t3> zls7hCr(z3R&&(Mihzcn|{I(s!t8G_qx&2V4_`(W`W>x$>(TC!aF4I#UFFtf9riK`M z8`Mi#3LO;)&i;S{+;pR}u1fM8)2Da#85W*QI~+=ec`(2(pUD|p6&=rX{H2H89}o%5 zOWwE^Q7?bG(Zw@9V2R(hww+;hyb<}vA8gklx84@d0S-BbK$yG10o|nzV0oYdNc4_U zHpAs?h0l6lvJO3*`s-?~dqWu71U{_vN4Uylv@z@q?EsuBl(TVe6)~B);gjsO+q1=SJH6)W2yyCX*q&fa;8!_83S>PiVl+CRZCLC;hXM4|A$+F+P zwE)Q2sqN1Tl*_eHmxbtsi;vq_-FV{4J3flW;ye=OCl@-!E8lMEPj9+sSoUVR>;?>k z)=bo&G7Zx9%W=N01XK&aS3@g)8sN5zS{Z~X%bxWv|6)@$NcjmpkU_Ma(LENm=}XFF z4d1et*mZF`+#U6@%NV9^Y8;b~o>$u`y>{ayFDs*dBq}^p`zlsFP9;F zTOHF23uz8XFE=hJqf83jsq@M}#;EHKY0iP$x`d4T!$&=rN<;s$oM4Cu`@u@9n^R^l zk|fGkD!;4D(*0>Eq!(jszNAh% zfXzo6`t=EO28YZM%sJT}3~zm$GVzr6uX2iB65%dLrPcW5!7&-}M(;*SatHTpe>P#*`an%$xs< zk5^|zY&`lT68{nyS={M)JT?xB{=Tz}B8pg%XW%5nvUG;1vt53E`!gxDg~A&9f*s_c zVP7wDc)al{H*cb?7v_T^Ov7Y`;>sWxA`p@hp?QlH;cso*4tPdH)*!6{91ILaw_Vjf zka=CmA~*AR`T+d(dX2hV$|6NVf@v zozzz=t%Sy;uB4PV5Dg3wiA-k}>=8tB$bRjR$VPR8X}3hVG5d-w=1_3GHf&%}CEN52 zsl(d#N4!8Pa30E7N*Vc0g_6HlN%AdO+zDvt^&*jKPLsXe2OrfbiV~cEXvNR#J3b^P z2G$|A8eKl$>eky|K(#y=)J}=}kW(XE8u?%qf*ov~vOq5nYv~}>)vsj1ki*WzxuvrQKS)4z->{A2R2oAS@w$=H z`E|t%LbfA268}=%cr-r16p}&Dl?;7yhC6-!4>x%-7y0L71HdDRs~7v#9y{dpE~M8& zr#CfLn^W5r|Dkz|WDAsPrQjDf?GQ#HvVbk#Hm!@%9|@Mn^1_}Pd~#iyQr zXK{MA!TELFs3U|ex6%^quwsGusZzT;dJCtA^{D^5Nitm@U^RnOFKo(0ptg43OI7+N z)PAg1%GShK6D$P$@e-q*9my8Abreo6Bq=4$uem-?nIlZF$-_MGu*8?*PHo5C3a{Zy z$8pV5z@-y99sW8_v0bS()8hJ}A1EDv9uB(=)Ws zp?i>Rf#Krd$CNJv@)`a8T;szW$X&fqoO@Mo1LX#E`K14e%HxB^6I-KuZ^U!SX2F2K zb$;?6buoVST&%$eeODWtebgvI?!_rQ&wvHv`gE^+@1Su9{S6rxszvHh$r{B$a$s)T!mBaC{t2wP6;55l_C1< z%?6hOrub1UZ3=@{Y3-6O^3Y0WyQ+y2#Yv4It*~s81xj?s3|pZd6_O5q&~M^WjJ!;! zYq3OXj+RoSY}#$JO^T@5gfyBq z3Z{wI==@V&4=?Y07P5}t{n2U39r_tQNO@I1(9hZXXt%SzE`H(dJBw+PNe?2gj!aiP z`{1fumHqz1&YPQtLT~ClGR}`)F4^B(5|-M-O}<6?X%O_~P&wAcFXL;%8k8`Y;XG^C zv5Ss_KxL(;XJKg7i8Rb%wR;AkTs<{RlQ1&wGy6&S5Y>;Voj4h1mT({X27LWcXorfF zQ!-v80U}nndjNQ)O5X4Mp^`bO{LW{B`M46thHVNDy5(kr(8R8|G;bp}Nufy>yW-84 z2mU~iOCy@AZr`jHFr$L7N)g@o%~^WM4l5lMrGe{vxl~T8I*Iqtwr~IJn*{1ZEawy zS(?PxLkCJY_yWXl0$eZ0d7u}*AZ+IZ2X3FeUUb$eE~NwT=Y50jW{)S zx$4w?S`^)u&B-e?Qro51*42O)0KDY@$mIX(TQ&cgx`+SPD?WyYKv@9e`qC%V^sE{a R@R}0nk(#b*xyqC0{|h)+Yb^i( literal 0 HcmV?d00001 diff --git a/src/main/resources/graphicsEngine/windowStructure.png b/src/main/resources/graphicsEngine/windowStructure.png deleted file mode 100644 index eb01e39c7252d3484e49fbd910d34289d20900f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5420 zcmcgwc{r5++8;|X*=G`pvJ5I@EBlg>WiUvRok1zP$kLE7Nt9(KOW7idNE5}7b!?&E zsDwts*msj%hR!qUci!uLulM|}&biJxe>~S*-|yVdz2Eoee(pQwrUo4Q4(tLATCNtNN@3VFk~>0m6OPHlLZEf+Fu0c zr9MJig>7h*&5Wdb*l8~JMZjZA4dEhcV&Gd-cVYYU6tU*9q`$t<)+cHo@r_U&)Y_5r zyVDh1KmB6e%tNGK3~Ux!g)ytn-9afReD`13k2sp$#SU4*j>gJN-cue7+9*?|sJ*)- zrkeA`*)8jCrETns9%C+Zi-DFGvc7Yzy=^<}eC^L39~w)XazE~E_Rw-+s{M{Hw)Fq=b+PDt`F-I_Mbr;oZ5I1OkL6WSZ?)`L%~qEvS9P zqDoA+M?J3X!D!ouF?&L1<$7@NW&7mgNkaKF!2;gC%*yhj{>=KIv>p~iROm-(tkUY( zq;>-&<|9W+i+M$DPre}e6f{x3JqM6YksZ|De(CRiNx*^AI0(Dsdf&1nPSO3Gf9cee z>@%(;o(ymN(JGWMdhXU-9XaOea;wh-p?xReU8<#zSY3t{8P zWU>*LgX6g3>!Q`b-iMhQ4Ge)r+GHeHDn8c>UEJ<(_W@%AyF2-oC*h-Q>*Ij4#PXt& zmIb%cV2zNQx~4u(yf<_EW5PNpmzu7T*Yexbf>#L1vf62cj+2nqXsmi!R>7RtxOg9Tx9_m&J@kXYuLZa*R?BK>^uWm(Pl#^&I3eYi-8 z=u?hu@*UQ6Hge0kW|CJH|okgm>?fE!gg&$v{@J&AqaWZ1@$%U!?DuLxT1h%bxy4kG$#r^nd+nrFajFxXkU6gpp`a zM5yoqJOLW4--%cq$U{&UjAG9n4Liw@jUZMD??qf@)Ih(+wEXCyx(d>?R}=KQ&1m8j z$HOzdhQ!q22e2?Dthr#MJC;f|g!?mRU&AG_8E9l5O-T|OxZ01r1Zj=&>i=#)Y_1+x zv>)~zMB^Sxu$OdY^M1L9ZPO%dEmM53fWo~9IH&me@$;#h=QDp41oeH%yUfG3R5v|g zUx^oebNI18RgbaEVYHf*}XT%)yb)1Nj ztLByZkP7Cmi8QK#>QOK<(j8}HP5Wd=TTzt{bEbzX;|Fr1{Abi~m;fDix^E@GlTrMz zTrkxHLfRv52!{eu%Vhig@c&mCmG?s8bcEA?C0FKtdOZLhMi3DqKQC=O!9{wK|0q@e ztGfPH@%-C0BFT^R@2TLQdQ=Cx2SfSNJ<*`5Z_l956d%bs!}eYevKB)RccyDIFA5H^ z{qvB5Hnj5{0%@HiE}_vP& zfav9Fav_2wrQF;=&B=PQ|(ZS}@ z(56+#mb$(27Q>Kv9S#54vSzu}R>0tIiv8nZNt`=aHP8R-dw|GOd zdYc^{sv(g)8bt_n`FHz+X?*igre6npEQC+_<%A3Te__TlfB8 z&Z$VmTw&L<*?H{$`132fs(1C_VKLvXZ4fB^OS2gTi8{ zbh?jZuB=&IDz0b?a0zCyQTOY^?z+tjW_pI9<9-i%@&+dPg0EvOgE_X}DwuV4@Vw2K zlv!eFe}+T%fQtdMhRM#p#JTRenL`d~15sOL8F2s{{!y8;4{!f_a#c~A)Se-CH zvsW~>rkSk0YgdlT~OXFqW@crpe~Om@*-dk_!0>qYzj>55WEeumplwB(fKwBJEUdd67K+=f`_vFARHFPBogkdqufXRN=R0M>?CT~dmSBV7fSI>zQi|6vtm0~w?z$F#%9l-rE zBf0T7Lgg4B*uwwTE4DP}-QW1|d0MGR1dg{2Zkxl30?Z~%)@q^siR zXAB{+{w~qCDwn>pR-N#De@67kirRs@)1G_P3>|lyIc38+9hS)ngljY!h4oXTdxk3p zL7WDVUPX&v0{k=@i0MB^lpS&7wjyoo$c!X)aj2fCDH!bAq=Zlr0u0hLOXJ=XvAr$J zqzq1+%q5{rA+~^k+{tN(*7a!o7hNE=E;0%I95(|H>9lu~)%uz9EshHFHThpvWM*L_G{* zZ-Yos$)KhC@ltj7H>%EoyAGd*WCQc_T85laa;oH$ETfP$(D=3wGzbm!?~pu$xNE z1Dkukf>5n`>HzkPvyAIjWd<|KL;a=Vw7_JO{$|{#m+mfw9K>_zLc8VbV4)8=x6Y?N z)7b1k{Y1!>d(CRgO;F>e19-U)+4J;bg3Gr@D;}~Yc>_L}oR9foqn&)+syNr~<@ z-k6HmuQERS!|Fpe)nDTiL(Gjh%-O~f1DA3P*XZsfZL*_SazP`0}(6W>Fw@03t)*S^RzBPZ$&LIh$zQJanv_tZ@@OBVWW_c5s zNL#qO$!4dUe~bQvrLCL3#m1~x(=)Qq#8~nIbnSW}6FUN)!QG?*nP91tKxM|2terWa ziOpJA>RTN0DVKt<6hlsAl*i5Xi+z=xTQz6lR}e<+ELs-AlO2bgV)X;g+2kt-5~$jF+de$q8~~J!%KE9G*Oc^K0OE4 z2$BkO;_nPPE?5oBvFdsXsN3JCdd;X~<_~*FK~69hv}V2r(|k5PU4bAoU^u1*ZvN@iDL!YSR_i zR^*0O-~$`ty^(@KWr}hVX1-C?71DdMN*G1?nv6Ns@&~sTb~n{DRos!pxLXF0yncPr z3ksF573LqoPO_37;HcD7YjPDr_c41LRnd@3zHfpwp3bs;GduE#{^7+%61eZj`y@;L zk3&JiVW8b~L;I2PF?o!@G^;zD3Cr9A^vsIWZ-fW0`}1MbFtq@_U5?kQ*)Os1=jX9^ zWGL8VAad-DVfyyMmf3Bf&&fmu3(&8;jW(!GtXom;>t?&}`JGlsColm``XJUkOh-j{ zmuSnF|Hq|v{p)K|_1li@J@zED51Un0#bNXZ&hHUD%j*^MsWm`P_15{cD~1IPwOZ9! z$-nX0Q`yH7>npY z@47{Tv1&l=B%+%MfPj9{{LIE?A;Y?QOr~vucTkK?S_4^2b=tp6t*zg$JZ#86&1FKr z%WDQgm(OECavtG?4LK0M3!G?iCU95U^B$Ek?3>t1cynK|51oBd6BrC~W#ApVX1y^^ zcf2sDDn+JfX-?a;)r14GJAEcRx<)6pF#w$^{Ntg!gMizN2}1T}YxSXR-v$j6f)org z?!UTNEu7~0)RtKHgHIFc!#_p0igSchE)a@c6s1^Z7KPEnGQnEKq^m3vir6@cr9OpR zWr^_tRvgr`Fp8P@7$^Hz%-FBNjOhpCfA(a{yhl9OAMmK{7!MuR{^4Tgw>E%(vG)1x iE#fa8)k{MWKUhu?G getInitialPages() { + ActionListener actionListener = this; + return new ArrayList<>() {{ + add(new Page1(actionListener, new Color(200, 120, 0))); + add(new Page2(actionListener, new Color(200,80,100))); + }}; + } /** * Invoked when an action occurs. @@ -56,18 +66,10 @@ public void addParts() { */ @Override public void actionPerformed(ActionEvent e) { - String buttonName; switch (e.getActionCommand()) { - case Button1.ACTION_COMMAND -> { - buttonName = Button1.ACTION_COMMAND; - //TODO: switch to page 1 here - } - case Button2.ACTION_COMMAND -> { - buttonName = Button2.ACTION_COMMAND; - //TODO: switch to page 2 here - } - default -> buttonName = "A button"; + case Buttons.Button1.ACTION_COMMAND -> setActivePage(Page1.getStaticPageKey()); + case Buttons.Button2.ACTION_COMMAND -> setActivePage(Page2.getStaticPageKey()); + default -> printLine("A button has been pressed but no action set up"); } - printLine(buttonName + " has been pressed"); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java index c6b7ad7..d06909b 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java @@ -1,21 +1,52 @@ package graphicsEngineDemo.d3_twoPageDemo.pages; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.parts.SimpleLabel; import graphicsEngine.presets.HeaderAndFooterPage; import graphicsEngineDemo.d3_twoPageDemo.parts.CommonFooter; import graphicsEngineDemo.d3_twoPageDemo.parts.CommonHeader; +import java.util.Objects; +import java.awt.Color; import java.awt.event.ActionListener; +import javax.swing.JPanel; +import javax.swing.BoxLayout; import org.jetbrains.annotations.Nullable; -//TODO: add javadocs +//TODO: add javadoc abstract class AbstractCommonPage extends HeaderAndFooterPage { - protected AbstractCommonPage(@Nullable PanelColors panelColors, - @Nullable ActionListener actionListener) { + private static final Color + DEFAULT_BACKGROUND = Color.black, + LABEL_TEXT_COLOR = new Color(30, 30, 150); + private static final String DEFAULT_LABEL = "No label defined for this page"; + private final String labelText; + + //TODO: add javadoc + protected AbstractCommonPage(@Nullable ActionListener actionListener, + @Nullable String labelText) { super( - new CommonHeader(panelColors, actionListener), - new CommonFooter(panelColors)); + new CommonHeader(null, actionListener), + new CommonFooter(null)); + this.labelText = Objects.requireNonNullElse(labelText, DEFAULT_LABEL); + addCenterAndLabel(); + } + + //TODO: add javadoc + @Override + public void addParts() {} + + private void addCenterAndLabel() { + add(new JPanel() {{ + setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + setBackground(new Color(0,0,0,0)); + add(new SimpleLabel(labelText, LABEL_TEXT_COLOR)); + }}); + } + + //TODO: add javadoc + @Override + public void setBackground(Color background) { + super.setBackground(Objects.requireNonNullElse(background, DEFAULT_BACKGROUND)); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page1.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page1.java index 32b8ca1..cdbf767 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page1.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page1.java @@ -1,25 +1,32 @@ package graphicsEngineDemo.d3_twoPageDemo.pages; -import graphicsEngine.panels.PanelColors; - +import java.awt.Color; import java.awt.event.ActionListener; import org.jetbrains.annotations.Nullable; -//TODO: finish this and add javadocs +//TODO: add javadocs public class Page1 extends AbstractCommonPage { - public Page1(@Nullable PanelColors panelColors, - @Nullable ActionListener actionListener) { - super(panelColors, actionListener); + //TODO: add javadoc + public Page1() { + this(null, null); } - @Override - public void addParts() { - //TODO: add a label here indicating page number + //TODO: add javadoc + public Page1(@Nullable ActionListener actionListener, + @Nullable Color background) { + super(actionListener, "This is page 1"); + setBackground(background); } + //TODO: add javadoc @Override public String getPageKey() { return "page1"; } + + //TODO: add javadoc + public static String getStaticPageKey() { + return (new Page1()).getPageKey(); + } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page2.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page2.java index 043ad60..baedcd2 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page2.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page2.java @@ -1,25 +1,32 @@ package graphicsEngineDemo.d3_twoPageDemo.pages; -import graphicsEngine.panels.PanelColors; - +import java.awt.Color; import java.awt.event.ActionListener; import org.jetbrains.annotations.Nullable; -//TODO: finish this and add javadocs +//TODO: add javadocs public class Page2 extends AbstractCommonPage { - public Page2(@Nullable PanelColors panelColors, - @Nullable ActionListener actionListener) { - super(panelColors, actionListener); + //TODO: add javadoc + public Page2() { + this(null, null); } - @Override - public void addParts() { - //TODO: add a label here indicating page number + //TODO: add javadoc + public Page2(@Nullable ActionListener actionListener, + @Nullable Color background) { + super(actionListener, "This is page 2"); + setBackground(background); } + //TODO: add javadoc @Override public String getPageKey() { return "page2"; } + + //TODO: add javadoc + public static String getStaticPageKey() { + return (new Page2()).getPageKey(); + } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button1.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button1.java deleted file mode 100644 index ed4bab2..0000000 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button1.java +++ /dev/null @@ -1,16 +0,0 @@ -package graphicsEngineDemo.d3_twoPageDemo.parts; - -import graphicsEngine.presets.SimpleJButton; - -import java.awt.event.ActionListener; - -import org.jetbrains.annotations.Nullable; - -//TODO: add javadocs -public class Button1 extends SimpleJButton { - public static final String ACTION_COMMAND = "button1"; - - protected Button1(@Nullable ActionListener actionListener) { - super("Page 1", ACTION_COMMAND, actionListener); - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button2.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button2.java deleted file mode 100644 index 0cbfecc..0000000 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Button2.java +++ /dev/null @@ -1,16 +0,0 @@ -package graphicsEngineDemo.d3_twoPageDemo.parts; - -import graphicsEngine.presets.SimpleJButton; - -import java.awt.event.ActionListener; - -import org.jetbrains.annotations.Nullable; - -//TODO: add javadocs -public class Button2 extends SimpleJButton { - public static final String ACTION_COMMAND = "button2"; - - protected Button2(@Nullable ActionListener actionListener) { - super("Page 2", ACTION_COMMAND, actionListener); - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Buttons.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Buttons.java new file mode 100644 index 0000000..8cf1eb8 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Buttons.java @@ -0,0 +1,28 @@ +package graphicsEngineDemo.d3_twoPageDemo.parts; + +import graphicsEngine.presets.SimpleJButton; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadocs +public class Buttons { + //TODO: add javadocs + public static class Button1 extends SimpleJButton { + public static final String ACTION_COMMAND = "button1"; + + protected Button1(@Nullable ActionListener actionListener) { + super("Page 1", ACTION_COMMAND, actionListener); + } + } + + //TODO: add javadocs + public static class Button2 extends SimpleJButton { + public static final String ACTION_COMMAND = "button2"; + + protected Button2(@Nullable ActionListener actionListener) { + super("Page 2", ACTION_COMMAND, actionListener); + } + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java index 816b0db..7717a2b 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java @@ -23,7 +23,7 @@ public void addParts() {} private void addButtons(@Nullable ActionListener actionListener) { setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); - add(new Button1(actionListener)); - add(new Button2(actionListener)); + add(new Buttons.Button1(actionListener)); + add(new Buttons.Button2(actionListener)); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java b/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java index 96f78bd..2ac77e3 100644 --- a/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java @@ -78,7 +78,7 @@ private static WindowConfig config() { size = new int[] {300, 200}, location = new int[] {50, 300}; WindowConfig config = new WindowConfig(title, size, location); - config.closeOperation = DO_NOTHING_ON_CLOSE; + config.closeOperation = DISPOSE_ON_CLOSE; return config; } @@ -110,7 +110,7 @@ private static WindowConfig config() { size = new int[] {600, 400}, location = new int[] {400, 300}; WindowConfig config = new WindowConfig(title, size, location); - config.closeOperation = DO_NOTHING_ON_CLOSE; + config.closeOperation = DISPOSE_ON_CLOSE; return config; } From 059dd34e44fa50f01f2b653c872c879487a28522 Mon Sep 17 00:00:00 2001 From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com> Date: Thu, 8 Sep 2022 05:14:46 +0300 Subject: [PATCH 05/11] 0.8.8 * feature-preview demo fix * work on feature-preview demo --- pom.xml | 2 +- .../presets/HeaderAndFooterPage.java | 4 +- .../graphicsEngine/windows/AbstractPage.java | 10 +- .../d2_overlayDemo/Main.java | 3 - .../d3_twoPageDemo/Window.java | 2 +- .../d5_featurePreview/Main.java | 55 +-------- .../d5_featurePreview/Window.java | 106 ++++++++++++++++++ .../common/AbstractCommonPage.java | 18 +++ .../common/AbstractMenuPage.java | 38 +++++++ .../common/CommonFooter.java | 20 ++++ .../common/CommonHeader.java | 32 ++++++ .../common/CommonHeaderButtons.java | 37 ++++++ .../d5_featurePreview/common/placeholder | 0 .../demoPages/CommonDemoPage.java | 20 ++-- .../d5_featurePreview/demoPages/Page1.java | 22 +++- .../d5_featurePreview/demoPages/Page2.java | 22 +++- .../d5_featurePreview/demoPages/placeholder | 0 .../demoSelectPage/DemoSelectButtons.java | 28 +++++ .../demoSelectPage/DemoSelectPage.java | 37 +++++- .../d5_featurePreview/menuPages/placeholder | 0 .../menuPages/settingsPage/SettingsPage.java | 37 +++++- .../menuPages/startingPage/StartingPage.java | 38 ++++++- 22 files changed, 449 insertions(+), 82 deletions(-) create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/Window.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeader.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeaderButtons.java delete mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/common/placeholder delete mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/placeholder create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtons.java delete mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/placeholder diff --git a/pom.xml b/pom.xml index ae48799..6a57d80 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.KruMF GraphicsEngine - 0.8.7 + 0.8.8 UTF-8 diff --git a/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java b/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java index 3b41090..bf32efc 100644 --- a/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java +++ b/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java @@ -8,8 +8,9 @@ import org.jetbrains.annotations.Nullable; +//TODO: add javadoc public abstract class HeaderAndFooterPage extends AbstractPage { - + //TODO: add javadoc public HeaderAndFooterPage(@Nullable AbstractHeader header, @Nullable AbstractFooter footer) { super(); @@ -28,5 +29,6 @@ private void addHeaderAndFooter(@Nullable AbstractHeader header, } } + //TODO: add javadoc public abstract void addParts(); } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/AbstractPage.java b/src/main/java/graphicsEngine/windows/AbstractPage.java index 553bd04..2be49b1 100644 --- a/src/main/java/graphicsEngine/windows/AbstractPage.java +++ b/src/main/java/graphicsEngine/windows/AbstractPage.java @@ -1,22 +1,26 @@ package graphicsEngine.windows; -import java.awt.*; -import javax.swing.*; - import java.util.Objects; +import java.awt.Color; +import javax.swing.JPanel; + import org.jetbrains.annotations.Nullable; +//TODO: add javadoc public abstract class AbstractPage extends JPanel { private static final Color DEFAULT_BACKGROUND = Color.black; + //TODO: add javadoc public AbstractPage() { this(null); } + //TODO: add javadoc public AbstractPage(@Nullable Color backgroundColor) { setBackground(Objects.requireNonNullElse(backgroundColor, DEFAULT_BACKGROUND)); } + //TODO: add javadoc public abstract String getPageKey(); } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java index e24c432..1e9e0c1 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java @@ -13,7 +13,6 @@ import javax.swing.BoxLayout; import static consoleUtils.ConsoleUtils.printLine; -import static graphicsEngine.Utilities.getSampleIcon; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -48,8 +47,6 @@ private Window() { overlayColorState = false; setOverlay(new Overlay(this)); - - setIcon(getSampleIcon()); //Testing functionality. TODO: remove this from here } /** diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java index 5a9b7aa..15d64f3 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java @@ -32,7 +32,7 @@ public Window() { * @return Window configuration. */ private static WindowConfig config() { - String title = "Two page demo"; + String title = "Two-page demo"; int[] size = new int[]{600, 400}, location = new int[]{50, 50}; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java index c05a6f3..6e49171 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java @@ -1,58 +1,15 @@ package graphicsEngineDemo.d5_featurePreview; -import graphicsEngine.windows.WindowConfig; -import graphicsEngine.windows.AbstractPage; +import graphicsEngine.GraphicsAdapter; -import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; -import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; +import graphicsEngine.windows.WindowUpdater; -import java.util.List; -import java.util.ArrayList; - -import org.jetbrains.annotations.NotNull; - -import static consoleUtils.ConsoleUtils.printLine; -import static javax.swing.WindowConstants.EXIT_ON_CLOSE; - -//TODO: finish this +//TODO: add javadoc public class Main { + //TODO: add javadoc public static void main(String[] args) { - printLine("Feature preview demo currently not available"); - /*new GraphicsAdapter() {{ + new GraphicsAdapter() {{ newWindow(new WindowUpdater(new Window())); - }};*/ - } - - private static class Window /*extends MultiPageWindow*/ { - protected Window() { - /*super(config(), preparePages());*/ - } - - /** - * Hardcoded configuration of a new Window object. - * - * @return Window configuration. - */ - private static WindowConfig config() { - String title = "Paged demo"; - int[] - size = new int[] {500, 500}, - location = new int[] {50, 50}; - WindowConfig config = new WindowConfig(title, size, location); - config.closeOperation = EXIT_ON_CLOSE; - return config; - } - - private static List preparePages() { - return new ArrayList<>() {{ - add(new Page1()); - add(new Page2()); - }}; - } - - //@Override - public @NotNull String getWindowKey() { - return "window"; - } + }}; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/Window.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/Window.java new file mode 100644 index 0000000..11c7edc --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/Window.java @@ -0,0 +1,106 @@ +package graphicsEngineDemo.d5_featurePreview; + +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.windowTypes.MultiPageWindow; +import graphicsEngine.windows.AbstractPage; +import graphicsEngineDemo.d5_featurePreview.common.CommonHeaderButtons; +import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; +import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; +import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectButtons; +import graphicsEngineDemo.d5_featurePreview.menuPages.startingPage.StartingPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage.SettingsPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectPage; + +import java.util.List; +import java.util.ArrayList; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import static consoleUtils.ConsoleUtils.printLine; +import static graphicsEngine.Utilities.getSampleIcon; + +import org.jetbrains.annotations.NotNull; + +//TODO: add javadoc +public class Window extends MultiPageWindow implements ActionListener { + //TODO: add javadoc + public Window() { + super(config(), null); + setActivePage(StartingPage.getStaticPageKey()); + setIcon(getSampleIcon()); + } + + /** + * Hardcoded configuration of a new Window object. + * + * @return Window configuration. + */ + private static WindowConfig config() { + String title = "Feature-preview demo"; + int[] + size = new int[] {600, 400}, + location = new int[] {50, 50}; + WindowConfig config = new WindowConfig(title, size, location); + config.closeOperation = EXIT_ON_CLOSE; + return config; + } + + //TODO: add javadoc + @Override + public @NotNull String getWindowKey() { + return "window"; + } + + //TODO: add javadoc + @Override + public @NotNull List getInitialPages() { + ActionListener actionListener = this; + return new ArrayList<>() {{ + add(new StartingPage(actionListener)); + add(new SettingsPage(actionListener)); + add(new DemoSelectPage(actionListener)); + add(new Page1(actionListener)); + add(new Page2(actionListener)); + }}; + } + + /** + * Invoked when an action occurs. + * + * @param e the event to be processed + */ + @Override + public void actionPerformed(ActionEvent e) { + if (headerButtonActionCheck(e)) return; + if (demoSelectButtonActionCheck(e)) return; + printLine("A button has been pressed but no action set up"); + } + + private boolean headerButtonActionCheck(ActionEvent e) { + switch (e.getActionCommand()) { + case CommonHeaderButtons.Button_Start.ACTION_COMMAND -> + setActivePage(StartingPage.getStaticPageKey()); + case CommonHeaderButtons.Button_Settings.ACTION_COMMAND -> + setActivePage(SettingsPage.getStaticPageKey()); + case CommonHeaderButtons.Button_DemoSelect.ACTION_COMMAND -> + setActivePage(DemoSelectPage.getStaticPageKey()); + default -> { + return false; + } + } + return true; + } + + private boolean demoSelectButtonActionCheck(ActionEvent e) { + switch (e.getActionCommand()) { + case DemoSelectButtons.Button_Page1.ACTION_COMMAND -> + setActivePage(Page1.getStaticPageKey()); + case DemoSelectButtons.Button_Page2.ACTION_COMMAND -> + setActivePage(Page2.getStaticPageKey()); + default -> { + return false; + } + } + return true; + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java new file mode 100644 index 0000000..8f7fbc0 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java @@ -0,0 +1,18 @@ +package graphicsEngineDemo.d5_featurePreview.common; + +import graphicsEngine.panels.PanelColors; +import graphicsEngine.presets.HeaderAndFooterPage; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +//TODO: finish this and add javadoc +public abstract class AbstractCommonPage extends HeaderAndFooterPage { + //TODO: add javadoc + public AbstractCommonPage(@Nullable ActionListener actionListener) { + super( + new CommonHeader(null, actionListener), + new CommonFooter(null)); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java new file mode 100644 index 0000000..6bae7a4 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java @@ -0,0 +1,38 @@ +package graphicsEngineDemo.d5_featurePreview.common; + +import java.util.List; +import java.awt.Color; +import java.awt.Component; +import java.awt.event.ActionListener; +import javax.swing.JPanel; +import javax.swing.BoxLayout; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public abstract class AbstractMenuPage extends AbstractCommonPage { + //TODO: add javadoc + public AbstractMenuPage(@Nullable ActionListener actionListener) { + super(actionListener); + addComponents(initialCentralComponents(actionListener)); + } + + //TODO: add javadoc + @Override + public final void addParts() {} + + private void addComponents(@Nullable List components) { + add(new JPanel() {{ + setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + setBackground(new Color(0,0,0,0)); + if (components != null && components.size() > 0) { + for (Component component : components) { + add(component); + } + } + }}); + } + + //TODO: add javadoc + public abstract @Nullable List initialCentralComponents(@Nullable ActionListener actionListener); +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java new file mode 100644 index 0000000..774e82a --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java @@ -0,0 +1,20 @@ +package graphicsEngineDemo.d5_featurePreview.common; + +import graphicsEngine.panels.PanelColors; +import graphicsEngine.presets.panels.AbstractFooter; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public class CommonFooter extends AbstractFooter { + private static final int HEIGHT = 0; + + //TODO: add javadoc + public CommonFooter(@Nullable PanelColors panelColors) { + super(panelColors, HEIGHT); + } + + //TODO: add javadoc + @Override + public void addParts() {} +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeader.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeader.java new file mode 100644 index 0000000..84c30e2 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeader.java @@ -0,0 +1,32 @@ +package graphicsEngineDemo.d5_featurePreview.common; + +import graphicsEngine.panels.PanelColors; +import graphicsEngine.presets.panels.AbstractHeader; + +import javax.swing.BoxLayout; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public class CommonHeader extends AbstractHeader { + private static final int HEIGHT = 50; + + //TODO: add javadoc + public CommonHeader(@Nullable PanelColors panelColors, + @Nullable ActionListener actionListener) { + super(panelColors, HEIGHT); + addButtons(actionListener); + } + + //TODO: add javadoc + @Override + public void addParts() {} + + private void addButtons(@Nullable ActionListener actionListener) { + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + add(new CommonHeaderButtons.Button_Start(actionListener)); + add(new CommonHeaderButtons.Button_Settings(actionListener)); + add(new CommonHeaderButtons.Button_DemoSelect(actionListener)); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeaderButtons.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeaderButtons.java new file mode 100644 index 0000000..6d16ce2 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeaderButtons.java @@ -0,0 +1,37 @@ +package graphicsEngineDemo.d5_featurePreview.common; + +import graphicsEngine.presets.SimpleJButton; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadocs +public class CommonHeaderButtons { + //TODO: add javadocs + public static class Button_Start extends SimpleJButton { + public static final String ACTION_COMMAND = "page_start"; + + protected Button_Start(@Nullable ActionListener actionListener) { + super("Start", ACTION_COMMAND, actionListener); + } + } + + //TODO: add javadocs + public static class Button_Settings extends SimpleJButton { + public static final String ACTION_COMMAND = "page_settings"; + + protected Button_Settings(@Nullable ActionListener actionListener) { + super("Settings", ACTION_COMMAND, actionListener); + } + } + + //TODO: add javadocs + public static class Button_DemoSelect extends SimpleJButton { + public static final String ACTION_COMMAND = "page_demoSelect"; + + protected Button_DemoSelect(@Nullable ActionListener actionListener) { + super("Select demo", ACTION_COMMAND, actionListener); + } + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/placeholder b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java index 3b08c79..826a8fc 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java @@ -1,15 +1,19 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import graphicsEngine.windows.AbstractPage; +import graphicsEngineDemo.d5_featurePreview.common.AbstractCommonPage; -import java.awt.*; +import java.awt.event.ActionListener; -public abstract class CommonDemoPage extends AbstractPage { - CommonDemoPage() { - super(); - } +import org.jetbrains.annotations.Nullable; - CommonDemoPage(Color backgroundColor) { - super(backgroundColor); +//TODO: add javadoc +public abstract class CommonDemoPage extends AbstractCommonPage { + //TODO: add javadoc + public CommonDemoPage(@Nullable ActionListener actionListener) { + super(actionListener); } + + //TODO: add javadoc + @Override + public final void addParts() {} } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java index 62ae56e..b0328ac 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java @@ -1,14 +1,32 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; import java.awt.*; +import java.awt.event.ActionListener; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc public class Page1 extends CommonDemoPage { + //TODO: add javadoc public Page1() { - super(Color.green); + this(null); + } + + //TODO: add javadoc + public Page1(@Nullable ActionListener actionListener) { + super(actionListener); + setBackground(new Color(150, 50, 50)); } + //TODO: add javadoc @Override - public String getPageKey() { + public final @NotNull String getPageKey() { return "page1"; } + + //TODO: add javadoc + public static @NotNull String getStaticPageKey() { + return (new Page1()).getPageKey(); + } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java index a1aa2f4..68bd7a0 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java @@ -1,14 +1,32 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; import java.awt.*; +import java.awt.event.ActionListener; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc public class Page2 extends CommonDemoPage { + //TODO: add javadoc public Page2() { - super(Color.magenta); + this(null); + } + + //TODO: add javadoc + public Page2(@Nullable ActionListener actionListener) { + super(actionListener); + setBackground(new Color(50, 150, 50)); } + //TODO: add javadoc @Override - public String getPageKey() { + public final @NotNull String getPageKey() { return "page2"; } + + //TODO: add javadoc + public static @NotNull String getStaticPageKey() { + return (new Page2()).getPageKey(); + } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/placeholder b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtons.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtons.java new file mode 100644 index 0000000..58619bf --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtons.java @@ -0,0 +1,28 @@ +package graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage; + +import graphicsEngine.presets.SimpleJButton; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadocs +public class DemoSelectButtons { + //TODO: add javadocs + public static class Button_Page1 extends SimpleJButton { + public static final String ACTION_COMMAND = "page_demo1"; + + protected Button_Page1(@Nullable ActionListener actionListener) { + super("Page 1", ACTION_COMMAND, actionListener); + } + } + + //TODO: add javadocs + public static class Button_Page2 extends SimpleJButton { + public static final String ACTION_COMMAND = "page_demo2"; + + protected Button_Page2(@Nullable ActionListener actionListener) { + super("Page 2", ACTION_COMMAND, actionListener); + } + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java index 1e427c4..3c1d41b 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java @@ -1,15 +1,44 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage; -import graphicsEngine.windows.AbstractPage; +import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; + +import java.util.List; +import java.util.ArrayList; +import java.awt.Component; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; //TODO: finish this and add javadoc -public class DemoSelectPage extends AbstractPage { +public class DemoSelectPage extends AbstractMenuPage { + //TODO: add javadoc public DemoSelectPage() { - super(); + this(null); } + //TODO: add javadoc + public DemoSelectPage(@Nullable ActionListener actionListener) { + super(actionListener); + } + + //TODO: add javadoc @Override - public String getPageKey() { + public final @NotNull String getPageKey() { return "demoSelect"; } + + //TODO: add javadoc + public static @NotNull String getStaticPageKey() { + return (new DemoSelectPage()).getPageKey(); + } + + //TODO: add javadoc + @Override + public @Nullable List initialCentralComponents(@Nullable ActionListener actionListener) { + return new ArrayList<>() {{ + add(new DemoSelectButtons.Button_Page1(actionListener)); + add(new DemoSelectButtons.Button_Page2(actionListener)); + }}; + } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/placeholder b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java index 8780513..659d64c 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java @@ -1,15 +1,44 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage; -import graphicsEngine.windows.AbstractPage; +import graphicsEngine.parts.SimpleLabel; +import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; + +import java.awt.*; +import java.util.ArrayList; +import java.util.List; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; //TODO: finish this and add javadoc -public class SettingsPage extends AbstractPage { +public class SettingsPage extends AbstractMenuPage { + //TODO: add javadoc public SettingsPage() { - super(); + this(null); } + //TODO: add javadoc + public SettingsPage(@Nullable ActionListener actionListener) { + super(actionListener); + } + + //TODO: add javadoc @Override - public String getPageKey() { + public final @NotNull String getPageKey() { return "settings"; } + + //TODO: add javadoc + public static @NotNull String getStaticPageKey() { + return (new SettingsPage()).getPageKey(); + } + + //TODO: add javadoc + @Override + public @Nullable List initialCentralComponents(@Nullable ActionListener actionListener) { + return new ArrayList<>() {{ + add(new SimpleLabel("Settings page", Color.white)); + }}; + } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java index 66cc93f..5a702f3 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java @@ -1,15 +1,45 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.startingPage; -import graphicsEngine.windows.AbstractPage; +import graphicsEngine.parts.SimpleLabel; +import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; + +import java.util.List; +import java.util.ArrayList; +import java.awt.Color; +import java.awt.Component; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; //TODO: finish this and add javadoc -public class StartingPage extends AbstractPage { +public class StartingPage extends AbstractMenuPage { + //TODO: add javadoc public StartingPage() { - super(); + this(null); } + //TODO: add javadoc + public StartingPage(@Nullable ActionListener actionListener) { + super(actionListener); + } + + //TODO: add javadoc @Override - public String getPageKey() { + public final @NotNull String getPageKey() { return "start"; } + + //TODO: add javadoc + public static @NotNull String getStaticPageKey() { + return (new StartingPage()).getPageKey(); + } + + //TODO: add javadoc + @Override + public @Nullable List initialCentralComponents(@Nullable ActionListener actionListener) { + return new ArrayList<>() {{ + add(new SimpleLabel("Starting page", Color.white)); + }}; + } } \ No newline at end of file From 64a5cb78d1f95a1a403657877a01abf81ae67443 Mon Sep 17 00:00:00 2001 From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com> Date: Thu, 8 Sep 2022 21:17:38 +0300 Subject: [PATCH 06/11] 0.8.9 * window listener * old engine cleanup *demo improvements * docs --- .run/Demo 5 - featurePreview.run.xml | 2 +- pom.xml | 2 +- .../java/graphicsEngine/GraphicsAdapter.java | 24 ++- .../windows/AbstractWindow.java | 36 ++++- .../windows/CommonWindowListener.java | 108 +++++++++++++ .../graphicsEngine/windows/WindowManager.java | 18 ++- .../graphicsEngine/windows/WindowUpdater.java | 43 ++++- .../windowTypes/AbstractLayeredWindow.java | 51 ++++-- .../windows/windowTypes/MultiPageWindow.java | 9 +- .../windows/windowTypes/SimpleWindow.java | 19 ++- .../windows/windowTypes/SinglePageWindow.java | 6 +- .../engine/GraphicsManager.java | 39 ----- .../parts/containers/AlignmentType.java | 11 -- .../parts/containers/ContentsBox.java | 2 - .../parts/containers/Panel.java | 42 ----- .../parts/containers/PartContainer.java | 148 ------------------ .../parts/pages/PageManager.java | 22 --- .../parts/simpleParts/SimpleLabel.java | 17 -- .../presets/HeaderAndFooterPage.java | 95 ----------- .../presets/panels/CommonFooter.java | 28 ---- .../presets/panels/CommonHeader.java | 28 ---- .../presets/panels/SidePanel.java | 27 ---- src/test/java/graphicsEngineDemo/ReadMe.md | 2 +- .../d1_simplestDemo/Main.java | 9 +- .../d2_overlayDemo/Main.java | 10 +- .../d3_twoPageDemo/Main.java | 7 +- .../d3_twoPageDemo/ReadMe.md | 4 +- .../d3_twoPageDemo/Window.java | 7 +- .../d4_multiAdapterDemo/Main.java | 27 ++-- .../d5_featurePreview/Main.java | 15 +- .../d5_featurePreview/ReadMe.md | 6 +- .../d5_featurePreview/Window.java | 106 ------------- .../common/AbstractCommonPage.java | 1 - .../d5_featurePreview/demoPages/Page1.java | 5 +- .../d5_featurePreview/demoPages/Page2.java | 5 +- .../demoSelectPage/DemoSelectPage.java | 3 +- .../menuPages/settingsPage/SettingsPage.java | 8 +- .../menuPages/startingPage/StartingPage.java | 3 +- .../window/ButtonActions.java | 48 ++++++ .../d5_featurePreview/window/Window.java | 53 +++++++ .../window/WindowUtilities.java | 59 +++++++ .../graphics/MyGraphicsAdapter.java | 4 +- .../graphics/controlWindow/ControlWindow.java | 11 +- .../graphics/viewWinow/ViewWindow.java | 11 +- 44 files changed, 503 insertions(+), 678 deletions(-) create mode 100644 src/main/java/graphicsEngine/windows/CommonWindowListener.java delete mode 100644 src/main/java/graphicsEngineOld/parts/containers/AlignmentType.java delete mode 100644 src/main/java/graphicsEngineOld/parts/containers/Panel.java delete mode 100644 src/main/java/graphicsEngineOld/parts/containers/PartContainer.java delete mode 100644 src/main/java/graphicsEngineOld/presets/HeaderAndFooterPage.java delete mode 100644 src/main/java/graphicsEngineOld/presets/panels/CommonFooter.java delete mode 100644 src/main/java/graphicsEngineOld/presets/panels/CommonHeader.java delete mode 100644 src/main/java/graphicsEngineOld/presets/panels/SidePanel.java delete mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/Window.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/window/ButtonActions.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/window/WindowUtilities.java diff --git a/.run/Demo 5 - featurePreview.run.xml b/.run/Demo 5 - featurePreview.run.xml index ac30c8c..4aa23b8 100644 --- a/.run/Demo 5 - featurePreview.run.xml +++ b/.run/Demo 5 - featurePreview.run.xml @@ -4,7 +4,7 @@ - diff --git a/pom.xml b/pom.xml index 6a57d80..ad0c2ac 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.KruMF GraphicsEngine - 0.8.8 + 0.8.9 UTF-8 diff --git a/src/main/java/graphicsEngine/GraphicsAdapter.java b/src/main/java/graphicsEngine/GraphicsAdapter.java index d524cfc..5482918 100644 --- a/src/main/java/graphicsEngine/GraphicsAdapter.java +++ b/src/main/java/graphicsEngine/GraphicsAdapter.java @@ -3,11 +3,11 @@ import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowUpdater; +import static consoleUtils.ConsoleUtils.printLine; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import static consoleUtils.ConsoleUtils.printLine; - /** * A graphics adapter class. * Intended for allowing not to use the GraphicsManager directly. @@ -15,20 +15,40 @@ * TODO: check redundancy; originally meant for security; fix javadocs */ public class GraphicsAdapter extends WindowManager { + /** + * Starts a new blank graphics adapter. + */ public GraphicsAdapter() { super(); } + /** + * Adds a new window to this graphics adapter. + * + * @param window A corresponding WindowUpdater object. + */ @Override public final void newWindow(@NotNull WindowUpdater window) { super.newWindow(window); } + /** + * Gets a WindowUpdater object that contains a window with corresponding key. + * If multiple windows with the same key exist, returns the first one. + * Returns null, if provided key is null or no such window found. + * + * @param windowKey Key of the window. + * + * @return The specified WindowUpdater object. + */ @Override public final @Nullable WindowUpdater getWindow(@Nullable String windowKey) { return super.getWindow(windowKey); } + /** + * Ends all windows. + */ @Override public final void end() { printLine("Graphics ending."); diff --git a/src/main/java/graphicsEngine/windows/AbstractWindow.java b/src/main/java/graphicsEngine/windows/AbstractWindow.java index 3160006..9009d1f 100644 --- a/src/main/java/graphicsEngine/windows/AbstractWindow.java +++ b/src/main/java/graphicsEngine/windows/AbstractWindow.java @@ -5,21 +5,37 @@ import org.jetbrains.annotations.NotNull; -//TODO: add javadocs +/** + * An abstract window with required configuration and methods. + */ public abstract class AbstractWindow extends JFrame { + /** + * Window size correction constant. + */ public static final int[] SIZE_ERROR_CORRECTION = new int[] {16, 39}; - //TODO: add javadoc + /** + * Corrects window size error that happens due to title bar and borders. + * Uses hardcoded values. + * + * @param size Initial size. + * + * @return Corrected size. + */ public static int[] correctWindowsSizeError(int[] size) { return new int[] { size[0] + SIZE_ERROR_CORRECTION[0], size[1] + SIZE_ERROR_CORRECTION[1]}; } - protected static final String EMPTY_KEY = ""; - - //creates a window with required parameters - public AbstractWindow(@NotNull WindowConfig config) { + /** + * Creates a new AbstractWindow with specified configuration. + * + * @param windowManager A WindowManager object. + * @param config Window configuration. + */ + public AbstractWindow(@NotNull WindowManager windowManager, + @NotNull WindowConfig config) { super(config.getTitle()); setDefaultCloseOperation(config.closeOperation); @@ -28,11 +44,17 @@ public AbstractWindow(@NotNull WindowConfig config) { int[] location = config.getLocation(); setLocation(location[0], location[1]); + addWindowListener(new CommonWindowListener(windowManager, getWindowKey(), config.closeOperation)); + addParts(); setVisible(true); } - //TODO: add javadoc + /** + * Gets the key of the window. + * + * @return The key of the window. + */ public @NotNull abstract String getWindowKey(); /** diff --git a/src/main/java/graphicsEngine/windows/CommonWindowListener.java b/src/main/java/graphicsEngine/windows/CommonWindowListener.java new file mode 100644 index 0000000..9353afb --- /dev/null +++ b/src/main/java/graphicsEngine/windows/CommonWindowListener.java @@ -0,0 +1,108 @@ +package graphicsEngine.windows; + +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; + +import static consoleUtils.ConsoleUtils.printLine; +import static javax.swing.WindowConstants.EXIT_ON_CLOSE; + +import org.jetbrains.annotations.NotNull; + +//TODO: add javadocs +class CommonWindowListener implements WindowListener { + private final WindowManager windowManager; + private final String windowKey; + private final int closeOperation; + + CommonWindowListener(@NotNull WindowManager windowManager, + @NotNull String windowKey, + int closeOperation) { + this.windowManager = windowManager; + this.windowKey = windowKey; + this.closeOperation = closeOperation; + } + + /** + * Invoked the first time a window is made visible. + * + * @param e the event to be processed + */ + @Override + public void windowOpened(WindowEvent e) {} + + /** + * Invoked when the user attempts to close the window + * from the window's system menu. + * + * @param e the event to be processed + */ + @Override + public void windowClosing(WindowEvent e) {} + + /** + * Invoked when a window has been closed as the result + * of calling dispose on the window. + * + * @param e the event to be processed + */ + @Override + public void windowClosed(WindowEvent e) { + if (closeOperation == EXIT_ON_CLOSE) { + windowManager.end(); + } + } + + /** + * Invoked when a window is changed from a normal to a + * minimized state. For many platforms, a minimized window + * is displayed as the icon specified in the window's + * iconImage property. + * + * @param e the event to be processed + */ + @Override + public void windowIconified(WindowEvent e) { + printLine("window minimized"); + } + + /** + * Invoked when a window is changed from a minimized + * to a normal state. + * + * @param e the event to be processed + */ + @Override + public void windowDeiconified(WindowEvent e) { + // + } + + /** + * Invoked when the Window is set to be the active Window. Only a Frame or + * a Dialog can be the active Window. The native windowing system may + * denote the active Window or its children with special decorations, such + * as a highlighted title bar. The active Window is always either the + * focused Window, or the first Frame or Dialog that is an owner of the + * focused Window. + * + * @param e the event to be processed + */ + @Override + public void windowActivated(WindowEvent e) { + // + } + + /** + * Invoked when a Window is no longer the active Window. Only a Frame or a + * Dialog can be the active Window. The native windowing system may denote + * the active Window or its children with special decorations, such as a + * highlighted title bar. The active Window is always either the focused + * Window, or the first Frame or Dialog that is an owner of the focused + * Window. + * + * @param e the event to be processed + */ + @Override + public void windowDeactivated(WindowEvent e) { + // + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/WindowManager.java b/src/main/java/graphicsEngine/windows/WindowManager.java index a7c1307..31ccfc5 100644 --- a/src/main/java/graphicsEngine/windows/WindowManager.java +++ b/src/main/java/graphicsEngine/windows/WindowManager.java @@ -5,12 +5,16 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -//a class for containing windows and their updaters -//TODO: add javadocs -public class WindowManager { +/** + * A utility class for containing windows and their updaters. + * Meant to be extended by GraphicsAdapter. + */ +public abstract class WindowManager { private final ArrayList windows; - //TODO: add javadoc + /** + * Creates a new WindowManager, initially with no windows. + */ public WindowManager() { windows = new ArrayList<>(); } @@ -18,7 +22,7 @@ public WindowManager() { /** * Use this to add new windows. * - * @param window Window to add. + * @param window A corresponding WindowUpdater object. */ public void newWindow(@NotNull WindowUpdater window) { int i = windows.size(); @@ -38,13 +42,13 @@ private int getWindowIndex(@Nullable String windowKey) throws NullPointerExcepti } /** - * Gets a specified window. + * Gets a WindowUpdater object that contains a window with corresponding key. * If multiple windows with the same key exist, returns the first one. * Returns null, if provided key is null or no such window found. * * @param windowKey Key of the window. * - * @return The specified window. + * @return The specified WindowUpdater object. */ public @Nullable WindowUpdater getWindow(@Nullable String windowKey) { try { diff --git a/src/main/java/graphicsEngine/windows/WindowUpdater.java b/src/main/java/graphicsEngine/windows/WindowUpdater.java index d763ad9..7f504d5 100644 --- a/src/main/java/graphicsEngine/windows/WindowUpdater.java +++ b/src/main/java/graphicsEngine/windows/WindowUpdater.java @@ -6,24 +6,44 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.NotNull; -//TODO:add javadocs +/** + * A class for joining window and the thread that updates it. + */ public class WindowUpdater extends AbstractUpdater { private AbstractWindow window; - //default delayOptions + /** + * Creates a window updater with default delay options. + * + * @param window A window to update. + */ public WindowUpdater(@NotNull AbstractWindow window) { super(); setWindow(window); } - //delay in milliseconds - public WindowUpdater(@NotNull AbstractWindow window, long delay) { + /** + * Creates a window updater with specified delay in milliseconds. + * + * @param window A window to update. + * @param delay Delay in milliseconds. + */ + @SuppressWarnings("unused") + public WindowUpdater(@NotNull AbstractWindow window, + long delay) { super(delay); setWindow(window); } - //custom delayOptions - public WindowUpdater(@NotNull AbstractWindow window, @Nullable DelayOptions delayOptions) { + /** + * Creates a window updater with specified delay options. + * + * @param window A window to update. + * @param delayOptions Delay options. + */ + @SuppressWarnings("unused") + public WindowUpdater(@NotNull AbstractWindow window, + @Nullable DelayOptions delayOptions) { super(delayOptions); setWindow(window); } @@ -32,15 +52,26 @@ private void setWindow(@NotNull AbstractWindow window) { this.window = window; } + /** + * Gets the key of the contained window. + * + * @return The key of the window. + */ public final String getWindowKey() { return window.getWindowKey(); } + /** + * Gets called when thread runs. + */ @Override public final void update() { window.repaint(); } + /** + * Happens upon finishing thread. + */ @Override public void finish() { window.dispose(); diff --git a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java index 0fe3e77..8ec7d19 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java @@ -1,28 +1,41 @@ package graphicsEngine.windows.windowTypes; -import graphicsEngine.windows.AbstractWindow; +import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.AbstractWindow; import graphicsEngine.presets.SimpleOverlay; -import java.awt.Component; import java.util.Objects; +import java.awt.Component; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -//contents and overlay -//TODO: finish this and add javadocs +/** + * An abstract layered window containing contents and an overlay. + */ abstract class AbstractLayeredWindow extends AbstractWindow { - //TODO: add javadoc - AbstractLayeredWindow(@NotNull WindowConfig config, + /** + * Creates a new AbstractWindow with specified configuration and overlay. + * + * @param windowManager A WindowManager object + * @param config Window configuration. + * @param overlay Overlay + */ + AbstractLayeredWindow(@NotNull WindowManager windowManager, + @NotNull WindowConfig config, @Nullable SimpleOverlay overlay) { - super(config); + super(windowManager, config); setOverlay(overlay); hideOverlay(); } - //TODO: add javadoc + /** + * Sets the overlay. + * + * @param overlay A SimpleOverlay object. + */ public void setOverlay(@Nullable SimpleOverlay overlay) { setGlassPane(Objects.requireNonNullElse(overlay, getDefaultOverlay())); } @@ -31,7 +44,12 @@ public void setOverlay(@Nullable SimpleOverlay overlay) { return new SimpleOverlay(null); } - //TODO: finish this and add javadoc + /** + * Gets the overlay. + * + * @return The overlay. + * @throws ClassCastException if glassPane does not contain a SimpleOverlay object. + */ public @NotNull SimpleOverlay getOverlay() throws ClassCastException { Component glassPane = getGlassPane(); if (glassPane instanceof SimpleOverlay) { @@ -40,18 +58,25 @@ public void setOverlay(@Nullable SimpleOverlay overlay) { throw new ClassCastException(); } - //TODO: add javadoc + /** + * Shows the overlay. + */ public void showOverlay() { getGlassPane().setVisible(true); } - //TODO: add javadoc + /** + * Hides the overlay. + */ public void hideOverlay() { getGlassPane().setVisible(false); } - //TODO: add javadoc + /** + * Toggles visibility of the overlay. + */ public void toggleOverlay() { - getGlassPane().setVisible(!getGlassPane().isVisible()); + Component pane = getGlassPane(); + pane.setVisible(!(pane.isVisible())); } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java index 716f2c0..9ac46ea 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java @@ -1,7 +1,8 @@ package graphicsEngine.windows.windowTypes; -import graphicsEngine.windows.AbstractPage; +import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.AbstractPage; import graphicsEngine.presets.SimpleOverlay; import java.util.List; @@ -20,9 +21,11 @@ public abstract class MultiPageWindow extends AbstractLayeredWindow { private final Map pages; private String activePage; - public MultiPageWindow(@NotNull WindowConfig config, + //TODO: add javadoc + public MultiPageWindow(@NotNull WindowManager windowManager, + @NotNull WindowConfig config, @Nullable SimpleOverlay overlay) { - super(config, overlay); + super(windowManager, config, overlay); this.pages = new HashMap<>(); activePage = EMPTY_KEY; addPages(getInitialPages()); diff --git a/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java index 902a270..51fb239 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java @@ -1,14 +1,23 @@ package graphicsEngine.windows.windowTypes; -import graphicsEngine.windows.AbstractWindow; +import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.AbstractWindow; import org.jetbrains.annotations.NotNull; -//has only contents, nothing much to add -//TODO: finish this and add javadocs +/** + * A simple window; has only contents. + */ public abstract class SimpleWindow extends AbstractWindow { - public SimpleWindow(@NotNull WindowConfig config) { - super(config); + /** + * Creates a new SimpleWindow with specified configuration. + * + * @param windowManager A WindowManager object + * @param config Window configuration. + */ + public SimpleWindow(@NotNull WindowManager windowManager, + @NotNull WindowConfig config) { + super(windowManager, config); } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java index 8d84939..56a7ad9 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java @@ -1,5 +1,6 @@ package graphicsEngine.windows.windowTypes; +import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.AbstractPage; import graphicsEngine.presets.SimpleOverlay; @@ -10,9 +11,10 @@ // TODO: finish this and add javadoc public abstract class SinglePageWindow extends AbstractLayeredWindow { //TODO: add javadoc - public SinglePageWindow(@NotNull WindowConfig config, + public SinglePageWindow(@NotNull WindowManager windowManager, + @NotNull WindowConfig config, @Nullable SimpleOverlay overlay) { - super(config, overlay); + super(windowManager, config, overlay); } //TODO: add javadoc diff --git a/src/main/java/graphicsEngineOld/engine/GraphicsManager.java b/src/main/java/graphicsEngineOld/engine/GraphicsManager.java index 5ab948e..951769b 100644 --- a/src/main/java/graphicsEngineOld/engine/GraphicsManager.java +++ b/src/main/java/graphicsEngineOld/engine/GraphicsManager.java @@ -2,10 +2,8 @@ import graphicsEngineOld.engine.data.GraphicsData; import graphicsEngineOld.utilities.input.InputManager; -import graphicsEngineOld.parts.pages.Page; import graphicsEngineOld.parts.pages.PageManager; -import java.util.HashMap; import java.util.Objects; import org.jetbrains.annotations.Nullable; @@ -41,43 +39,6 @@ private static void setGraphicsData(@Nullable GraphicsData graphicsData) { true)); } - /** - * Initializes GraphicsManager. - * Gets it ready for thread running. - * - * @param exitManager Extended ExitManager for ending controller upon closing graphics. (Null - default) - * @param pages Pages to display. (Null or empty - no pages) - * @param activePage Key of the first active page. (Null - acts as if no pages present) - */ - public static void initialize(@Nullable ExitManager exitManager, - @Nullable HashMap pages, @Nullable String activePage) { - System.out.println(GRAPHICS_ENGINE_NAME + ": Initializing."); - setupGraphics(pages, activePage); - setupIO(exitManager); - running = true; - } - - private static void setupGraphics(@Nullable HashMap pages, @Nullable String activePage) { - // Has to be before graphics. - GraphicsManager.pages = new PageManager(pages, activePage); - - // Graphics. - graphics = new GraphicsClass(); - graphics.initialize(); - } - - private static void setupIO(@Nullable ExitManager exitManager) { - // Has to be before input. - GraphicsManager.exitManager = Objects.requireNonNullElse( - exitManager, - new ExitManager()); - - // Input. - input = new InputManager( - graphics.window, data.windowParameters, - GraphicsManager.exitManager); - } - /** * Runs when GraphicsManager thread is being run. */ diff --git a/src/main/java/graphicsEngineOld/parts/containers/AlignmentType.java b/src/main/java/graphicsEngineOld/parts/containers/AlignmentType.java deleted file mode 100644 index 0da106b..0000000 --- a/src/main/java/graphicsEngineOld/parts/containers/AlignmentType.java +++ /dev/null @@ -1,11 +0,0 @@ -package graphicsEngineOld.parts.containers; - -/** - * Alignment type enum for aligning parts of a container. - */ -public enum AlignmentType { - TOP, - BOTTOM, - LEFT, - RIGHT -} \ No newline at end of file diff --git a/src/main/java/graphicsEngineOld/parts/containers/ContentsBox.java b/src/main/java/graphicsEngineOld/parts/containers/ContentsBox.java index 14f86fb..2640b50 100644 --- a/src/main/java/graphicsEngineOld/parts/containers/ContentsBox.java +++ b/src/main/java/graphicsEngineOld/parts/containers/ContentsBox.java @@ -37,7 +37,6 @@ public ContentsBox(@Nullable int[] size, @Nullable boolean[] fixedSize, * * @param color New color. */ - @SuppressWarnings("unused") public void setBackgroundColor(@Nullable Color color) { ((Background) parts.get(0)).setColor(color); } @@ -47,7 +46,6 @@ public void setBackgroundColor(@Nullable Color color) { * * @param color New color. */ - @SuppressWarnings("unused") public void setBorderColor(@Nullable Color color) { ((Border) parts.get(1)).setColor(color); } diff --git a/src/main/java/graphicsEngineOld/parts/containers/Panel.java b/src/main/java/graphicsEngineOld/parts/containers/Panel.java deleted file mode 100644 index 76790d3..0000000 --- a/src/main/java/graphicsEngineOld/parts/containers/Panel.java +++ /dev/null @@ -1,42 +0,0 @@ -package graphicsEngineOld.parts.containers; - -import graphicsEngineOld.parts.simpleParts.DrawablePart; - -import java.util.ArrayList; -import java.util.Objects; -import java.awt.*; - -import org.jetbrains.annotations.Nullable; - -/** - * A layer container with background and border pre-prepared. - */ -public class Panel extends ContentsBox { - - /** - * Creates a simple panel. - * - * @param size Size of the panel. - * @param fixedSize Size fixation status for either direction. - * @param background Background color. - * @param border Border color. - * @param panelParts ArrayList of containable parts. (Alignable) - * @param alignment Alignment type of containable parts. (Null - align to top) - */ - public Panel(@Nullable int[] size, @Nullable boolean[] fixedSize, - @Nullable Color background, @Nullable Color border, - @Nullable ArrayList panelParts, @Nullable AlignmentType alignment) { - super( - size, fixedSize, - background, border, - partContainer(panelParts, alignment)); - } - - private static PartContainer partContainer(@Nullable ArrayList panelParts, - @Nullable AlignmentType alignment) { - return new PartContainer( - null, null, - panelParts, - Objects.requireNonNullElse(alignment, AlignmentType.TOP)); - } -} \ No newline at end of file diff --git a/src/main/java/graphicsEngineOld/parts/containers/PartContainer.java b/src/main/java/graphicsEngineOld/parts/containers/PartContainer.java deleted file mode 100644 index 854afcc..0000000 --- a/src/main/java/graphicsEngineOld/parts/containers/PartContainer.java +++ /dev/null @@ -1,148 +0,0 @@ -package graphicsEngineOld.parts.containers; - -import graphicsEngineOld.parts.simpleParts.DrawablePart; -import graphicsEngineOld.parts.simpleParts.SimplePart; - -import java.util.ArrayList; -import java.util.Objects; -import java.awt.*; - -import org.jetbrains.annotations.Nullable; -import org.jetbrains.annotations.NotNull; - -/** - * A part container for containing simple parts and aligning them in specified way. - */ -public class PartContainer extends GenericContainer { - public AlignmentType alignment; - - /** - * Creates a part container with specified alignment. - * - * @param size Size of the container. (Accepts null) - * @param fixedSize Size fixation by axis. (Null - non-fixed) - * @param parts Parts to contain. (Accepts null) - * @param alignment Alignment to use. (By default aligned to top) - */ - public PartContainer(@Nullable int[] size, @Nullable boolean[] fixedSize, - @Nullable ArrayList parts, @Nullable AlignmentType alignment) { - super(size, fixedSize, parts); - this.alignment = Objects.requireNonNullElse(alignment, AlignmentType.TOP); - } - - /** - * Draws contained parts one after another. - * - * @param g Graphics to use. - */ - @Override - public void drawParts(@NotNull Graphics g) { - RemainderHelper remainingSize = new RemainderHelper(RemainderHelper.getInitialSize(this)); - RemainderHelper drawingLocation = new RemainderHelper(0); - - for (DrawablePart drawablePart : parts) { - if (!remainingSize.checkRemaining()) { - break; - } - - SimplePart part = (SimplePart) drawablePart; - if (part != null) { - drawSinglePart(g, part, remainingSize, drawingLocation); - } - } - } - - /** - * Draws a single contained part. - * - * @param g Graphics to use. - * @param part Part to draw. - * @param remainingSize Remaining size for drawing. - * @param drawLocation Location offset from containers location. - */ - private void drawSinglePart(@NotNull Graphics g, @NotNull SimplePart part, - @NotNull RemainderHelper remainingSize, - @NotNull RemainderHelper drawLocation) { - int[] partLocation; - int[] partSize; - int sizeDifference; - switch (alignment) { - case LEFT : { - part.resize(new int[] {remainingSize.x, size[1]}); // stretches if possible - partSize = part.size; - sizeDifference = partSize[0]; - - partLocation = new int[] { - location[0] + drawLocation.x, - location[1]}; - break; - } - case RIGHT : { - part.resize(new int[] {remainingSize.x, size[1]}); // stretches if possible - partSize = part.size; - sizeDifference = partSize[0]; - - partLocation = new int[] { - location[0] + size[0] - drawLocation.x - sizeDifference, - location[1]}; - break; - } - case BOTTOM : { - part.resize(new int[] {size[0], remainingSize.x}); // stretches if possible - partSize = part.size; - sizeDifference = partSize[1]; - - partLocation = new int[] { - location[0], - location[1] + size[1] - drawLocation.x - sizeDifference}; - break; - } - case TOP : {} - default : { // TOP alignment by default - part.resize(new int[] {size[0], remainingSize.x}); // stretches if possible - partSize = part.size; - sizeDifference = partSize[1]; - - partLocation = new int[] { - location[0], - location[1] + drawLocation.x}; - } - } - remainingSize.modify((-1) * sizeDifference); - drawLocation.modify(sizeDifference); - part.draw(g, partLocation, partSize); - } - - /** - * A helper class for calculating remainders - * - * TODO: update javadoc - */ - private static class RemainderHelper { - int x; - - RemainderHelper(int x) { - this.x = x; - } - - void modify(int delta) { - x += delta; - } - - boolean checkRemaining() { - return x > 0; - } - - static int getInitialSize(@NotNull PartContainer container) { - switch (container.alignment) { - case LEFT, RIGHT : { - return container.size[0]; - } - case TOP, BOTTOM : {} - default : { - return container.size[1]; - } - } - } - } -} \ No newline at end of file diff --git a/src/main/java/graphicsEngineOld/parts/pages/PageManager.java b/src/main/java/graphicsEngineOld/parts/pages/PageManager.java index 7069043..90c0ddb 100644 --- a/src/main/java/graphicsEngineOld/parts/pages/PageManager.java +++ b/src/main/java/graphicsEngineOld/parts/pages/PageManager.java @@ -26,13 +26,6 @@ public PageManager(@Nullable HashMap pages, @Nullable String activ setActivePage(initialActivePage(activePage)); } - /** - * Empty constructor for a blank page manager containing no pages. - */ - public PageManager() { - this(null, null); - } - private HashMap initialPages(@Nullable HashMap pages) { return Objects.requireNonNullElse(pages, new HashMap<>()); } @@ -48,21 +41,6 @@ public void setActivePage(@Nullable String activePage) { } } - //todo: add javadoc - public void addPage(@Nullable String key, @Nullable Page page) { - if (checkAddableKeyValidity(key) && checkAddablePageValidity(page)) { - pages.put(key, page); - } - } - - private boolean checkAddableKeyValidity(@Nullable String key) { - return !(key == null || pages.containsKey(key)); - } - - private boolean checkAddablePageValidity(@Nullable Page page) { - return !(page == null); - } - /** * Draws the active page. * diff --git a/src/main/java/graphicsEngineOld/parts/simpleParts/SimpleLabel.java b/src/main/java/graphicsEngineOld/parts/simpleParts/SimpleLabel.java index dbb77fc..1894df7 100644 --- a/src/main/java/graphicsEngineOld/parts/simpleParts/SimpleLabel.java +++ b/src/main/java/graphicsEngineOld/parts/simpleParts/SimpleLabel.java @@ -19,11 +19,6 @@ public class SimpleLabel extends ColoredSimplePart { private String text; private int[] textOffset; - // TODO: add javadoc - public SimpleLabel(@Nullable String text) { - this(text, null, null); - } - // TODO: add javadoc public SimpleLabel(@Nullable String text, @Nullable int[] textOffset, @Nullable Color color) { super(color); @@ -53,16 +48,4 @@ private void drawText(Graphics g) { location[0] + size[0] / 2 + textOffset[0], location[1] + size[1] / 2 + textOffset[1]}); } - - public enum TextAlignment { - CENTER, - CENTER_LEFT, - CENTER_RIGHT, - TOP_CENTER, - TOP_LEFT, - TOP_RIGHT, - BOTTOM_CENTER, - BOTTOM_LEFT, - BOTTOM_RIGHT - } } \ No newline at end of file diff --git a/src/main/java/graphicsEngineOld/presets/HeaderAndFooterPage.java b/src/main/java/graphicsEngineOld/presets/HeaderAndFooterPage.java deleted file mode 100644 index a05b1ef..0000000 --- a/src/main/java/graphicsEngineOld/presets/HeaderAndFooterPage.java +++ /dev/null @@ -1,95 +0,0 @@ -package graphicsEngineOld.presets; - -import graphicsEngineOld.engine.data.colors.Palette; -import graphicsEngineOld.engine.data.colors.PanelColors; -import graphicsEngineOld.utilities.input.InputChecker; -import graphicsEngineOld.parts.simpleParts.SimplePart; -import graphicsEngineOld.parts.containers.AlignmentType; -import graphicsEngineOld.parts.containers.PartContainer; -import graphicsEngineOld.parts.pages.Page; - -import graphicsEngineOld.presets.panels.CommonHeader; -import graphicsEngineOld.presets.panels.CommonFooter; - -import java.util.ArrayList; -import java.util.Objects; - -import org.jetbrains.annotations.Nullable; -import org.jetbrains.annotations.NotNull; - -// TODO: add javadoc -public abstract class HeaderAndFooterPage extends Page { - - /** - * Creates a page with header, footer and center. - * - * @param inputChecker InputChecker to use. (Null - new InputChecker) - * @param palette Color palette to use. (Null - default) - * @param header Header. (null - default) - * @param footer Footer. (Null - default) - * @param centralParts ArrayList of central parts. (Null - empty) - * @param centralAlignment Alignment of the central parts. (Null - aligned to top) - */ - public HeaderAndFooterPage(@Nullable InputChecker inputChecker, - @NotNull Palette palette, - @Nullable CommonHeader header, @Nullable CommonFooter footer, - @Nullable ArrayList centralParts, - @Nullable AlignmentType centralAlignment) { - super(inputChecker, palette, new ArrayList<>()); - this.parts.add(makeHeaderContainer( - palette.panelColors, - header, footer, - centralParts, centralAlignment)); - } - - // TODO: add javadoc - private PartContainer makeHeaderContainer(@NotNull PanelColors panelColors, - @Nullable CommonHeader header, @Nullable CommonFooter footer, - @Nullable ArrayList centralParts, - @Nullable AlignmentType centralAlignment) { - return new PartContainer( - null, null, - new ArrayList<>() {{ - add(makeCommonHeader(header, panelColors)); - add(makeFooterContainer(panelColors, footer, centralParts, centralAlignment)); - }}, - AlignmentType.TOP); - } - - private static CommonHeader makeCommonHeader(@Nullable CommonHeader header, - @NotNull PanelColors panelColors) { - return Objects.requireNonNullElse( - header, - new CommonHeader(0, panelColors, null)); - } - - // TODO: add javadoc - private PartContainer makeFooterContainer(@NotNull PanelColors panelColors, - @Nullable CommonFooter footer, - @Nullable ArrayList centralParts, - @Nullable AlignmentType centralAlignment) { - return new PartContainer(null, null, - new ArrayList<>() {{ - add(makeCommonFooter(footer, panelColors)); - add(makeCentralContainer(centralParts, centralAlignment)); - }}, - AlignmentType.BOTTOM); - } - - private static CommonFooter makeCommonFooter(@Nullable CommonFooter footer, - @NotNull PanelColors panelColors) { - return Objects.requireNonNullElse( - footer, - new CommonFooter(0, panelColors, null)); - } - - // TODO: add javadoc - private PartContainer makeCentralContainer(@Nullable ArrayList centralParts, - @Nullable AlignmentType centralAlignment) { - return new PartContainer(null,null, - new ArrayList<>() {{ - addAll(Objects.requireNonNullElse(centralParts, new ArrayList<>())); - }}, - Objects.requireNonNullElse(centralAlignment, AlignmentType.TOP)); - } -} \ No newline at end of file diff --git a/src/main/java/graphicsEngineOld/presets/panels/CommonFooter.java b/src/main/java/graphicsEngineOld/presets/panels/CommonFooter.java deleted file mode 100644 index ff150bb..0000000 --- a/src/main/java/graphicsEngineOld/presets/panels/CommonFooter.java +++ /dev/null @@ -1,28 +0,0 @@ -package graphicsEngineOld.presets.panels; - -import graphicsEngineOld.engine.data.colors.PanelColors; -import graphicsEngineOld.parts.simpleParts.DrawablePart; -import graphicsEngineOld.parts.containers.AlignmentType; -import graphicsEngineOld.parts.containers.Panel; - -import java.util.ArrayList; - -import org.jetbrains.annotations.Nullable; -import org.jetbrains.annotations.NotNull; - -// TODO: add javadoc -public class CommonFooter extends Panel { - public static final int MINIMUM_HEIGHT = 10; - - // TODO: add javadoc - public CommonFooter(int height, @NotNull PanelColors panelColors, - @Nullable ArrayList parts) { - super(new int[] {0, getHeight(height)}, new boolean[] {false, true}, - panelColors.light, panelColors.dark, - parts, AlignmentType.LEFT); - } - - private static int getHeight(int preferred) { - return Math.max(MINIMUM_HEIGHT, preferred); - } -} \ No newline at end of file diff --git a/src/main/java/graphicsEngineOld/presets/panels/CommonHeader.java b/src/main/java/graphicsEngineOld/presets/panels/CommonHeader.java deleted file mode 100644 index d9fb834..0000000 --- a/src/main/java/graphicsEngineOld/presets/panels/CommonHeader.java +++ /dev/null @@ -1,28 +0,0 @@ -package graphicsEngineOld.presets.panels; - -import graphicsEngineOld.engine.data.colors.PanelColors; -import graphicsEngineOld.parts.simpleParts.DrawablePart; -import graphicsEngineOld.parts.containers.AlignmentType; -import graphicsEngineOld.parts.containers.Panel; - -import java.util.ArrayList; - -import org.jetbrains.annotations.Nullable; -import org.jetbrains.annotations.NotNull; - -// TODO: add javadoc -public class CommonHeader extends Panel { - public static final int MINIMUM_HEIGHT = 20; - - // TODO: add javadoc - public CommonHeader(int height, @NotNull PanelColors panelColors, - @Nullable ArrayList parts) { - super(new int[] {0, getHeight(height)}, new boolean[] {false, true}, - panelColors.light, panelColors.dark, - parts, AlignmentType.LEFT); - } - - public static int getHeight(int preferred) { - return Math.max(MINIMUM_HEIGHT, preferred); - } -} \ No newline at end of file diff --git a/src/main/java/graphicsEngineOld/presets/panels/SidePanel.java b/src/main/java/graphicsEngineOld/presets/panels/SidePanel.java deleted file mode 100644 index 4266156..0000000 --- a/src/main/java/graphicsEngineOld/presets/panels/SidePanel.java +++ /dev/null @@ -1,27 +0,0 @@ -package graphicsEngineOld.presets.panels; - -import graphicsEngineOld.engine.data.colors.PanelColors; -import graphicsEngineOld.parts.containers.AlignmentType; -import graphicsEngineOld.parts.simpleParts.DrawablePart; -import graphicsEngineOld.parts.containers.Panel; - -import java.util.ArrayList; - -import org.jetbrains.annotations.Nullable; -import org.jetbrains.annotations.NotNull; - -public class SidePanel extends Panel { - /** - * Creates a simple panel. - * - * @param width Width of the panel. - * @param panelColors panel colors TODO: fix this - * @param parts ArrayList of containable parts. (Aligned to top) - */ - public SidePanel(int width, @NotNull PanelColors panelColors, - @Nullable ArrayList parts) { - super(new int[] {width, 0}, new boolean[] {true, false}, - panelColors.light, panelColors.dark, - parts, AlignmentType.TOP); - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/ReadMe.md b/src/test/java/graphicsEngineDemo/ReadMe.md index ab35679..ff5a18a 100644 --- a/src/test/java/graphicsEngineDemo/ReadMe.md +++ b/src/test/java/graphicsEngineDemo/ReadMe.md @@ -7,6 +7,6 @@ Currently available demos: * Overlay demo - one page, with overlay. * Two-page demo - one window, two pages. * Multi-adapter demo - *self explanatory...* -* Feature preview - multiple pages *(currently not available)* containing various parts of GraphicsEngine and their use. +* Feature preview - multiple pages demonstrating various features of the GraphicsEngine. Further instructions will be in the corresponding directory of the demo. \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java b/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java index 5123fd3..a76433a 100644 --- a/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java @@ -1,6 +1,7 @@ package graphicsEngineDemo.d1_simplestDemo; import graphicsEngine.GraphicsAdapter; +import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowUpdater; import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.windowTypes.SimpleWindow; @@ -20,7 +21,7 @@ public class Main { */ public static void main(String[] args) { new GraphicsAdapter() {{ - newWindow(new WindowUpdater(new Window())); + newWindow(new WindowUpdater(new Window(this))); }}; } @@ -30,9 +31,11 @@ public static void main(String[] args) { private static class Window extends SimpleWindow { /** * Creates the window. + * + * @param windowManager A WindowManager object. */ - public Window() { - super(new WindowConfig()); + public Window(@NotNull WindowManager windowManager) { + super(windowManager, new WindowConfig()); setDefaultCloseOperation(EXIT_ON_CLOSE); // Not necessary; added for easier use. } diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java index 1e9e0c1..5f8dde5 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java @@ -3,6 +3,7 @@ import graphicsEngine.GraphicsAdapter; import graphicsEngine.windows.AbstractPage; import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowUpdater; import graphicsEngine.windows.windowTypes.SinglePageWindow; import graphicsEngine.presets.SimpleOverlay; @@ -18,7 +19,7 @@ import org.jetbrains.annotations.Nullable; /** - * TODO: add javadoc + * GraphicsEngine demo demonstrating the use of overlays. */ public class Main { /** @@ -28,7 +29,7 @@ public class Main { */ public static void main(String[] args) { new GraphicsAdapter() {{ - newWindow(new WindowUpdater(new Window())); + newWindow(new WindowUpdater(new Window(this))); }}; } @@ -40,8 +41,9 @@ private static class Window extends SinglePageWindow implements ActionListener { private boolean overlayColorState; - private Window() { - super(new WindowConfig(), null); + //TODO: add javadoc + private Window(@NotNull WindowManager windowManager) { + super(windowManager, new WindowConfig(), null); setDefaultCloseOperation(EXIT_ON_CLOSE); setTitle(WINDOW_TITLE); diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Main.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Main.java index d39ea19..eb8e0f5 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Main.java @@ -3,10 +3,8 @@ import graphicsEngine.GraphicsAdapter; import graphicsEngine.windows.WindowUpdater; -import static consoleUtils.ConsoleUtils.printLine; - /** - * TODO: finish this + * GraphicsEngine demo demonstrating support of multiple pages within a single window. */ public class Main { /** @@ -15,9 +13,8 @@ public class Main { * @param args Command-line arguments. */ public static void main(String[] args) { - printLine("Starting two-page demo..."); new GraphicsAdapter() {{ - newWindow(new WindowUpdater(new Window())); + newWindow(new WindowUpdater(new Window(this))); }}; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/ReadMe.md b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/ReadMe.md index 0db8c34..e9ee923 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/ReadMe.md +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/ReadMe.md @@ -4,8 +4,6 @@ This is a demo for demonstrating the capability to have multiple pages within a window. -*Currently not working...* - ## Instructions -Look for `Main.java` to launch. \ No newline at end of file +Run `Main.main(String[] args)` to launch this demo. \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java index 15d64f3..c36ffe5 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java @@ -1,8 +1,9 @@ package graphicsEngineDemo.d3_twoPageDemo; +import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowConfig; -import graphicsEngine.windows.AbstractPage; import graphicsEngine.windows.windowTypes.MultiPageWindow; +import graphicsEngine.windows.AbstractPage; import graphicsEngineDemo.d3_twoPageDemo.pages.Page1; import graphicsEngineDemo.d3_twoPageDemo.pages.Page2; @@ -21,8 +22,8 @@ //TODO: add javadocs class Window extends MultiPageWindow implements ActionListener { //TODO: add javadoc - public Window() { - super(config(), null); + public Window(@NotNull WindowManager windowManager) { + super(windowManager, config(), null); setActivePage(Page1.getStaticPageKey()); } diff --git a/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java b/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java index 2ac77e3..6bfb61d 100644 --- a/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java @@ -1,17 +1,17 @@ package graphicsEngineDemo.d4_multiAdapterDemo; import graphicsEngine.GraphicsAdapter; -import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowUpdater; +import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.windowTypes.SimpleWindow; import org.jetbrains.annotations.NotNull; /** - * TODO: finish this and add javadocs + * GraphicsEngine demo demonstrating the capability to simultaneously run multiple graphics adapters. */ public class Main { - private static GraphicsAdapter adapter1; private static GraphicsAdapter adapter2; @@ -22,17 +22,18 @@ public class Main { */ public static void main(String[] args) { adapter1 = new GraphicsAdapter() {{ - newWindow(new WindowUpdater(new SimpleWindow1())); + newWindow(new WindowUpdater(new SimpleWindow1(this))); }}; adapter2 = new GraphicsAdapter() {{ - newWindow(new WindowUpdater(new SimpleWindow2())); - newWindow(new WindowUpdater(new PagedWindow())); + newWindow(new WindowUpdater(new SimpleWindow2(this))); + newWindow(new WindowUpdater(new PagedWindow(this))); }}; } private static class SimpleWindow1 extends SimpleWindow { - public SimpleWindow1() { - super(config()); + //TODO: add javadoc + public SimpleWindow1(@NotNull WindowManager windowManager) { + super(windowManager, config()); } /** @@ -63,8 +64,9 @@ public void addParts() {} } private static class SimpleWindow2 extends SimpleWindow { - public SimpleWindow2() { - super(config()); + //TODO: add javadoc + public SimpleWindow2(@NotNull WindowManager windowManager) { + super(windowManager, config()); } /** @@ -95,8 +97,9 @@ public void addParts() {} } private static class PagedWindow extends SimpleWindow { - public PagedWindow() { - super(config()); + //TODO: add javadoc + public PagedWindow(@NotNull WindowManager windowManager) { + super(windowManager, config()); } /** diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java index 6e49171..d6a99b7 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java @@ -1,15 +1,22 @@ package graphicsEngineDemo.d5_featurePreview; import graphicsEngine.GraphicsAdapter; - import graphicsEngine.windows.WindowUpdater; -//TODO: add javadoc +import graphicsEngineDemo.d5_featurePreview.window.Window; + +/** + * A general demo for previewing various features and capabilities of the Graphics Engine. + */ public class Main { - //TODO: add javadoc + /** + * The main method. + * + * @param args Command-line arguments. + */ public static void main(String[] args) { new GraphicsAdapter() {{ - newWindow(new WindowUpdater(new Window())); + newWindow(new WindowUpdater(new Window(this))); }}; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/ReadMe.md b/src/test/java/graphicsEngineDemo/d5_featurePreview/ReadMe.md index 3a77733..1d9b4ff 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/ReadMe.md +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/ReadMe.md @@ -2,10 +2,8 @@ ## Abstract -This is a general demo for previewing various features of the Graphics Engine. - -*Currently not working...* +This is a general demo for previewing various features and capabilities of the Graphics Engine. ## Instructions -Look for `Main.java` to launch. \ No newline at end of file +Run `Main.main(String[] args)` to launch this demo. \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/Window.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/Window.java deleted file mode 100644 index 11c7edc..0000000 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/Window.java +++ /dev/null @@ -1,106 +0,0 @@ -package graphicsEngineDemo.d5_featurePreview; - -import graphicsEngine.windows.WindowConfig; -import graphicsEngine.windows.windowTypes.MultiPageWindow; -import graphicsEngine.windows.AbstractPage; -import graphicsEngineDemo.d5_featurePreview.common.CommonHeaderButtons; -import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; -import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; -import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectButtons; -import graphicsEngineDemo.d5_featurePreview.menuPages.startingPage.StartingPage; -import graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage.SettingsPage; -import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectPage; - -import java.util.List; -import java.util.ArrayList; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import static consoleUtils.ConsoleUtils.printLine; -import static graphicsEngine.Utilities.getSampleIcon; - -import org.jetbrains.annotations.NotNull; - -//TODO: add javadoc -public class Window extends MultiPageWindow implements ActionListener { - //TODO: add javadoc - public Window() { - super(config(), null); - setActivePage(StartingPage.getStaticPageKey()); - setIcon(getSampleIcon()); - } - - /** - * Hardcoded configuration of a new Window object. - * - * @return Window configuration. - */ - private static WindowConfig config() { - String title = "Feature-preview demo"; - int[] - size = new int[] {600, 400}, - location = new int[] {50, 50}; - WindowConfig config = new WindowConfig(title, size, location); - config.closeOperation = EXIT_ON_CLOSE; - return config; - } - - //TODO: add javadoc - @Override - public @NotNull String getWindowKey() { - return "window"; - } - - //TODO: add javadoc - @Override - public @NotNull List getInitialPages() { - ActionListener actionListener = this; - return new ArrayList<>() {{ - add(new StartingPage(actionListener)); - add(new SettingsPage(actionListener)); - add(new DemoSelectPage(actionListener)); - add(new Page1(actionListener)); - add(new Page2(actionListener)); - }}; - } - - /** - * Invoked when an action occurs. - * - * @param e the event to be processed - */ - @Override - public void actionPerformed(ActionEvent e) { - if (headerButtonActionCheck(e)) return; - if (demoSelectButtonActionCheck(e)) return; - printLine("A button has been pressed but no action set up"); - } - - private boolean headerButtonActionCheck(ActionEvent e) { - switch (e.getActionCommand()) { - case CommonHeaderButtons.Button_Start.ACTION_COMMAND -> - setActivePage(StartingPage.getStaticPageKey()); - case CommonHeaderButtons.Button_Settings.ACTION_COMMAND -> - setActivePage(SettingsPage.getStaticPageKey()); - case CommonHeaderButtons.Button_DemoSelect.ACTION_COMMAND -> - setActivePage(DemoSelectPage.getStaticPageKey()); - default -> { - return false; - } - } - return true; - } - - private boolean demoSelectButtonActionCheck(ActionEvent e) { - switch (e.getActionCommand()) { - case DemoSelectButtons.Button_Page1.ACTION_COMMAND -> - setActivePage(Page1.getStaticPageKey()); - case DemoSelectButtons.Button_Page2.ACTION_COMMAND -> - setActivePage(Page2.getStaticPageKey()); - default -> { - return false; - } - } - return true; - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java index 8f7fbc0..aef89aa 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java @@ -1,6 +1,5 @@ package graphicsEngineDemo.d5_featurePreview.common; -import graphicsEngine.panels.PanelColors; import graphicsEngine.presets.HeaderAndFooterPage; import java.awt.event.ActionListener; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java index b0328ac..2892176 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java @@ -1,6 +1,6 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import java.awt.*; +import java.awt.Color; import java.awt.event.ActionListener; import org.jetbrains.annotations.NotNull; @@ -8,8 +8,7 @@ //TODO: add javadoc public class Page1 extends CommonDemoPage { - //TODO: add javadoc - public Page1() { + private Page1() { this(null); } diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java index 68bd7a0..d76c7a4 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java @@ -1,6 +1,6 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import java.awt.*; +import java.awt.Color; import java.awt.event.ActionListener; import org.jetbrains.annotations.NotNull; @@ -8,8 +8,7 @@ //TODO: add javadoc public class Page2 extends CommonDemoPage { - //TODO: add javadoc - public Page2() { + private Page2() { this(null); } diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java index 3c1d41b..ffabece 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java @@ -12,8 +12,7 @@ //TODO: finish this and add javadoc public class DemoSelectPage extends AbstractMenuPage { - //TODO: add javadoc - public DemoSelectPage() { + private DemoSelectPage() { this(null); } diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java index 659d64c..a442add 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java @@ -3,9 +3,10 @@ import graphicsEngine.parts.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; -import java.awt.*; -import java.util.ArrayList; import java.util.List; +import java.util.ArrayList; +import java.awt.Color; +import java.awt.Component; import java.awt.event.ActionListener; import org.jetbrains.annotations.NotNull; @@ -13,8 +14,7 @@ //TODO: finish this and add javadoc public class SettingsPage extends AbstractMenuPage { - //TODO: add javadoc - public SettingsPage() { + private SettingsPage() { this(null); } diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java index 5a702f3..f460c32 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java @@ -14,8 +14,7 @@ //TODO: finish this and add javadoc public class StartingPage extends AbstractMenuPage { - //TODO: add javadoc - public StartingPage() { + private StartingPage() { this(null); } diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/ButtonActions.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/ButtonActions.java new file mode 100644 index 0000000..3eec7c8 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/ButtonActions.java @@ -0,0 +1,48 @@ +package graphicsEngineDemo.d5_featurePreview.window; + +import graphicsEngineDemo.d5_featurePreview.common.CommonHeaderButtons; +import graphicsEngineDemo.d5_featurePreview.menuPages.startingPage.StartingPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage.SettingsPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectButtons; +import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; +import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; + +import java.awt.event.ActionEvent; + +import org.jetbrains.annotations.NotNull; + +//TODO: add javadoc +public class ButtonActions { + //TODO: add javadoc + public static boolean headerButtonActions(@NotNull ActionEvent e, + @NotNull WindowUtilities window) { + switch (e.getActionCommand()) { + case CommonHeaderButtons.Button_Start.ACTION_COMMAND -> + window.setActivePage(StartingPage.getStaticPageKey()); + case CommonHeaderButtons.Button_Settings.ACTION_COMMAND -> + window.setActivePage(SettingsPage.getStaticPageKey()); + case CommonHeaderButtons.Button_DemoSelect.ACTION_COMMAND -> + window.setActivePage(DemoSelectPage.getStaticPageKey()); + default -> { + return false; + } + } + return true; + } + + //TODO: add javadoc + public static boolean demoSelectButtonActions(@NotNull ActionEvent e, + @NotNull WindowUtilities window) { + switch (e.getActionCommand()) { + case DemoSelectButtons.Button_Page1.ACTION_COMMAND -> + window.setActivePage(Page1.getStaticPageKey()); + case DemoSelectButtons.Button_Page2.ACTION_COMMAND -> + window.setActivePage(Page2.getStaticPageKey()); + default -> { + return false; + } + } + return true; + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java new file mode 100644 index 0000000..5f922ed --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java @@ -0,0 +1,53 @@ +package graphicsEngineDemo.d5_featurePreview.window; + +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.AbstractPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.startingPage.StartingPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage.SettingsPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectPage; +import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; +import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; + +import java.util.List; +import java.util.ArrayList; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import static graphicsEngine.Utilities.getSampleIcon; + +import org.jetbrains.annotations.NotNull; + +//TODO: add javadoc +public class Window extends WindowUtilities { + //TODO: add javadoc + public Window(@NotNull WindowManager windowManager) { + super(windowManager); + setActivePage(StartingPage.getStaticPageKey()); + setIcon(getSampleIcon()); + } + + //TODO: add javadoc + @Override + public @NotNull List getInitialPages() { + ActionListener actionListener = this; + return new ArrayList<>() {{ + add(new StartingPage(actionListener)); + add(new SettingsPage(actionListener)); + add(new DemoSelectPage(actionListener)); + add(new Page1(actionListener)); + add(new Page2(actionListener)); + }}; + } + + //TODO: add javadoc + @Override + public final boolean headerButtonActionCheck(ActionEvent e) { + return ButtonActions.headerButtonActions(e, this); + } + + //TODO: add javadoc + @Override + public final boolean demoSelectButtonActionCheck(ActionEvent e) { + return ButtonActions.demoSelectButtonActions(e, this); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/WindowUtilities.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/WindowUtilities.java new file mode 100644 index 0000000..693f7c9 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/WindowUtilities.java @@ -0,0 +1,59 @@ +package graphicsEngineDemo.d5_featurePreview.window; + +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.windowTypes.MultiPageWindow; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; + +import static consoleUtils.ConsoleUtils.printLine; + +//TODO: add javadoc +abstract class WindowUtilities extends MultiPageWindow implements ActionListener { + //TODO: add javadoc + public WindowUtilities(@NotNull WindowManager windowManager) { + super(windowManager, config(), null); + } + + /** + * Hardcoded configuration of a new Window object. + * + * @return Window configuration. + */ + private static @NotNull WindowConfig config() { + String title = "Feature-preview demo"; + int[] + size = new int[] {600, 400}, + location = new int[] {50, 50}; + WindowConfig config = new WindowConfig(title, size, location); + config.closeOperation = EXIT_ON_CLOSE; + return config; + } + + //TODO: add javadoc + @Override + public @NotNull String getWindowKey() { + return "window"; + } + + /** + * Invoked when an action occurs. + * + * @param e the event to be processed + */ + @Override + public void actionPerformed(ActionEvent e) { + if (headerButtonActionCheck(e)) return; + if (demoSelectButtonActionCheck(e)) return; + printLine("A button has been pressed but no action set up"); + } + + //TODO: add javadoc + public abstract boolean headerButtonActionCheck(ActionEvent e); + + //TODO: add javadoc + public abstract boolean demoSelectButtonActionCheck(ActionEvent e); +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/MyGraphicsAdapter.java b/src/test/java/graphicsEngineSandbox/graphics/MyGraphicsAdapter.java index 35cd571..cd838fc 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/MyGraphicsAdapter.java +++ b/src/test/java/graphicsEngineSandbox/graphics/MyGraphicsAdapter.java @@ -16,11 +16,11 @@ public MyGraphicsAdapter() { } private void newControlWindow() { - newWindow(new WindowUpdater(new ControlWindow())); + newWindow(new WindowUpdater(new ControlWindow(this))); } // TODO: add javadoc public void newViewWindow() { - newWindow(new WindowUpdater(new ViewWindow())); + newWindow(new WindowUpdater(new ViewWindow(this))); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java index 1228fc7..c2c5f58 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java +++ b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java @@ -1,20 +1,21 @@ package graphicsEngineSandbox.graphics.controlWindow; +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.AbstractWindow; import graphicsEngine.panels.PanelColors; import graphicsEngineSandbox.graphics.controlWindow.leftPanel.LeftPanel; -import graphicsEngine.windows.AbstractWindow; -import graphicsEngine.windows.WindowConfig; -import javax.swing.*; import java.awt.*; +import javax.swing.JPanel; import org.jetbrains.annotations.NotNull; // TODO: add javadoc public class ControlWindow extends AbstractWindow { - public ControlWindow() { - super(config()); + public ControlWindow(@NotNull WindowManager windowManager) { + super(windowManager, config()); } private static WindowConfig config() { diff --git a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java index 31390d3..e5d5531 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java +++ b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java @@ -1,11 +1,12 @@ package graphicsEngineSandbox.graphics.viewWinow; +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.AbstractWindow; +import graphicsEngine.panels.PanelColors; import graphicsEngineSandbox.graphics.viewWinow.mainPanels.LeftSidePanel; import graphicsEngineSandbox.graphics.viewWinow.mainPanels.RightSidePanel; -import graphicsEngine.panels.PanelColors; import graphicsEngineSandbox.graphics.viewWinow.mainPanels.center.CenterContainer; -import graphicsEngine.windows.AbstractWindow; -import graphicsEngine.windows.WindowConfig; import java.awt.*; @@ -15,8 +16,8 @@ public class ViewWindow extends AbstractWindow { private static final int[] WINDOW_MINIMUM_SIZE = new int[] {700, 400}; - public ViewWindow() { - super(config()); + public ViewWindow(@NotNull WindowManager windowManager) { + super(windowManager, config()); int[] correctedMinimumSize = AbstractWindow.correctWindowsSizeError(WINDOW_MINIMUM_SIZE); setMinimumSize(new Dimension(correctedMinimumSize[0], correctedMinimumSize[1])); } From dd7f063c36840682332bc5a1147cf7621870e48e Mon Sep 17 00:00:00 2001 From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:20:40 +0300 Subject: [PATCH 07/11] 0.8.10 * work on panels, layouts, action listeners, demos and more * optimization * feature-preview page 3 * dynamic label stub * more changes --- pom.xml | 2 +- src/main/java/graphicsEngine/Utilities.java | 5 + .../graphicsEngine/panels/PanelColors.java | 22 ++-- .../graphicsEngine/panels/SimplePanel.java | 11 +- .../graphicsEngine/parts/SimpleLabel.java | 7 +- .../presets/HeaderAndFooterPage.java | 30 +++-- .../presets/panels/HorizontalPanel.java | 9 +- .../presets/panels/VerticalPanel.java | 23 ++++ .../graphicsEngine/windows/AbstractPage.java | 24 +++- .../windows/AbstractWindow.java | 28 ++++- .../windowTypes/AbstractLayeredWindow.java | 5 +- .../windows/windowTypes/MultiPageWindow.java | 4 +- .../windows/windowTypes/SimpleWindow.java | 15 ++- .../windows/windowTypes/SinglePageWindow.java | 6 +- .../d1_simplestDemo/Main.java | 2 +- .../{Buttons.java => ButtonListener.java} | 41 ++++++- .../d2_overlayDemo/Main.java | 108 ------------------ .../d2_overlayDemo/Overlay.java | 20 ++++ .../d2_overlayDemo/OverlayColors.java | 13 +++ .../d2_overlayDemo/Page.java | 54 ++++++++- .../d2_overlayDemo/Window.java | 86 ++++++++++++++ .../d3_twoPageDemo/Window.java | 46 ++++---- .../pages/AbstractCommonPage.java | 57 ++++++++- .../d3_twoPageDemo/parts/ButtonListener.java | 68 +++++++++++ .../d3_twoPageDemo/parts/Buttons.java | 28 ----- .../d3_twoPageDemo/parts/CommonHeader.java | 4 +- .../d4_multiAdapterDemo/Main.java | 6 +- .../common/AbstractCommonPage.java | 75 +++++++++++- .../common/AbstractMenuPage.java | 37 +++--- .../common/CommonColors.java | 17 +++ .../common/CommonFooter.java | 2 +- .../common/CommonHeader.java | 32 ------ .../common/CommonHeaderButtons.java | 37 ------ .../common/header/CommonHeader.java | 31 +++++ .../common/header/HeaderButtonListener.java | 78 +++++++++++++ .../demoPages/CommonDemoPage.java | 11 +- .../d5_featurePreview/demoPages/Page1.java | 32 +++++- .../d5_featurePreview/demoPages/Page2.java | 53 ++++++++- .../d5_featurePreview/demoPages/Page3.java | 96 ++++++++++++++++ .../demoPages/PageWithPanel.java | 68 +++++++++++ .../DemoSelectButtonListener.java | 78 +++++++++++++ .../demoSelectPage/DemoSelectButtons.java | 28 ----- .../demoSelectPage/DemoSelectPage.java | 54 +++++++-- .../menuPages/settingsPage/SettingsPage.java | 22 ++-- .../menuPages/startingPage/StartingPage.java | 22 ++-- .../window/ButtonActions.java | 48 -------- .../d5_featurePreview/window/Window.java | 40 ++++--- .../window/WindowUtilities.java | 28 +---- .../graphics/controlWindow/ControlWindow.java | 2 +- .../graphics/viewWinow/ViewWindow.java | 2 +- 50 files changed, 1145 insertions(+), 472 deletions(-) create mode 100644 src/main/java/graphicsEngine/presets/panels/VerticalPanel.java rename src/test/java/graphicsEngineDemo/d2_overlayDemo/{Buttons.java => ButtonListener.java} (57%) create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/Overlay.java create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/OverlayColors.java create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/Window.java create mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/ButtonListener.java delete mode 100644 src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Buttons.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonColors.java delete mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeader.java delete mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeaderButtons.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/HeaderButtonListener.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page3.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java delete mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtons.java delete mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/window/ButtonActions.java diff --git a/pom.xml b/pom.xml index ad0c2ac..a7304e8 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.KruMF GraphicsEngine - 0.8.9 + 0.8.10 UTF-8 diff --git a/src/main/java/graphicsEngine/Utilities.java b/src/main/java/graphicsEngine/Utilities.java index 6c960f2..94b7361 100644 --- a/src/main/java/graphicsEngine/Utilities.java +++ b/src/main/java/graphicsEngine/Utilities.java @@ -28,6 +28,11 @@ public class Utilities { return RESOURCES_PATH + relative; } + /** + * Transparent, non-null color. + */ + public static final Color EMPTY_COLOR = new Color(0, 0, 0, 0); + // TODO: add javadoc public interface BorderInterface { Color DEFAULT_BORDER_COLOR = Color.red; diff --git a/src/main/java/graphicsEngine/panels/PanelColors.java b/src/main/java/graphicsEngine/panels/PanelColors.java index 73b7f78..4119993 100644 --- a/src/main/java/graphicsEngine/panels/PanelColors.java +++ b/src/main/java/graphicsEngine/panels/PanelColors.java @@ -1,23 +1,31 @@ package graphicsEngine.panels; -import java.awt.*; +import java.util.Objects; +import java.awt.Color; + +import org.jetbrains.annotations.Nullable; //TODO: add javadoc public class PanelColors { + //TODO: make private and use getters public Color background, text, border; private static final Color - DEFAULT_COLOR_BACKGROUND = Color.lightGray, + DEFAULT_COLOR_BACKGROUND = new Color(204, 204, 204),//Color.lightGray, DEFAULT_COLOR_TEXT = Color.darkGray, DEFAULT_COLOR_BORDER = Color.red; + //TODO: add javadoc public PanelColors() { - this(DEFAULT_COLOR_BACKGROUND, DEFAULT_COLOR_TEXT, DEFAULT_COLOR_BORDER); + this(null, null, null); } - public PanelColors(Color background, Color text, Color border) { - this.background = background; - this.text = text; - this.border = border; + //TODO: add javadoc + public PanelColors(@Nullable Color background, + @Nullable Color text, + @Nullable Color border) { + this.background = Objects.requireNonNullElse(background, DEFAULT_COLOR_BACKGROUND); + this.text = Objects.requireNonNullElse(text, DEFAULT_COLOR_TEXT); + this.border = Objects.requireNonNullElse(border, DEFAULT_COLOR_BORDER); } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/panels/SimplePanel.java b/src/main/java/graphicsEngine/panels/SimplePanel.java index 9e3388f..63ef1c4 100644 --- a/src/main/java/graphicsEngine/panels/SimplePanel.java +++ b/src/main/java/graphicsEngine/panels/SimplePanel.java @@ -2,14 +2,17 @@ import graphicsEngine.Utilities; -import javax.swing.*; import java.util.Objects; +import javax.swing.JPanel; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +//TODO: add javadoc public abstract class SimplePanel extends JPanel { private PanelColors colors; + //TODO: add javadoc protected SimplePanel(@Nullable PanelColors panelColors, boolean border) { super(); setPanelColors(panelColors); @@ -17,18 +20,22 @@ protected SimplePanel(@Nullable PanelColors panelColors, boolean border) { setBorderState(border); } + //TODO: add javadoc public final void setPanelColors(@Nullable PanelColors colors) { this.colors = Objects.requireNonNullElse(colors, new PanelColors()); } - public final PanelColors getPanelColors() { + //TODO: add javadoc + public final @NotNull PanelColors getPanelColors() { return colors; } + //TODO: add javadoc public void resetBackground() { setBackground(colors.background); } + //TODO: add javadoc public void setBorderState(boolean state) { Utilities.BorderInterface.setBorderState( this, diff --git a/src/main/java/graphicsEngine/parts/SimpleLabel.java b/src/main/java/graphicsEngine/parts/SimpleLabel.java index 579309a..95f5048 100644 --- a/src/main/java/graphicsEngine/parts/SimpleLabel.java +++ b/src/main/java/graphicsEngine/parts/SimpleLabel.java @@ -5,15 +5,14 @@ import java.awt.Color; import javax.swing.JLabel; +import graphicsEngine.Utilities; import org.jetbrains.annotations.Nullable; //A simple JLabel with most commonly used functions //TODO: add javadocs public class SimpleLabel extends JLabel { private static final String DEFAULT_TEXT = "A label"; - private static final Color - DEFAULT_COLOR = Color.black, - DEFAULT_BACKGROUND_COLOR = new Color(0,0,0,0); + private static final Color DEFAULT_COLOR = Color.black; //TODO: add javadoc public SimpleLabel(@Nullable String text, @Nullable Color textColor) { @@ -45,6 +44,6 @@ public void setTextColor(@Nullable Color color) { //TODO: add javadoc @Override public void setBackground(@Nullable Color background) { - super.setBackground(Objects.requireNonNullElse(background, DEFAULT_BACKGROUND_COLOR)); + super.setBackground(Objects.requireNonNullElse(background, Utilities.EMPTY_COLOR)); } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java b/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java index bf32efc..25bf43f 100644 --- a/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java +++ b/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java @@ -1,34 +1,48 @@ package graphicsEngine.presets; +import graphicsEngine.windows.AbstractPage; +import graphicsEngine.panels.PanelColors; import graphicsEngine.presets.panels.AbstractFooter; import graphicsEngine.presets.panels.AbstractHeader; -import graphicsEngine.windows.AbstractPage; -import java.awt.BorderLayout; +import java.awt.*; +import java.util.List; +import java.util.ArrayList; +import java.util.Objects; +import java.awt.event.ActionListener; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadoc public abstract class HeaderAndFooterPage extends AbstractPage { //TODO: add javadoc - public HeaderAndFooterPage(@Nullable AbstractHeader header, - @Nullable AbstractFooter footer) { - super(); + public HeaderAndFooterPage(@Nullable List actionListenerList, + @Nullable Color backgroundColor, + @Nullable PanelColors headerAndFooterColors) { + super(actionListenerList, backgroundColor); setLayout(new BorderLayout(0, 0)); - addHeaderAndFooter(header, footer); + addHeaderAndFooter(headerAndFooterColors); addParts(); } - private void addHeaderAndFooter(@Nullable AbstractHeader header, - @Nullable AbstractFooter footer) { + private void addHeaderAndFooter(@Nullable PanelColors headerAndFooterColors) { + AbstractHeader header = getHeader(headerAndFooterColors); if (header != null) { add(header, BorderLayout.NORTH); } + AbstractFooter footer = getFooter(headerAndFooterColors); if (footer != null) { add(footer, BorderLayout.SOUTH); } } + //TODO: add javadoc + public abstract @Nullable AbstractHeader getHeader(@Nullable PanelColors headerColors); + + //TODO: add javadoc + public abstract @Nullable AbstractFooter getFooter(@Nullable PanelColors footerColors); + //TODO: add javadoc public abstract void addParts(); } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java b/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java index 8ec3824..198652c 100644 --- a/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java +++ b/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java @@ -3,12 +3,14 @@ import graphicsEngine.panels.PanelColors; import graphicsEngine.panels.SimplePanel; -import java.awt.*; +import java.awt.Dimension; import org.jetbrains.annotations.Nullable; -abstract class HorizontalPanel extends SimplePanel { - protected HorizontalPanel(@Nullable PanelColors panelColors, int height) { +//TODO: add javadoc +public abstract class HorizontalPanel extends SimplePanel { + //TODO: add javadoc + public HorizontalPanel(@Nullable PanelColors panelColors, int height) { super(panelColors, false); setPreferredSize(new Dimension( Integer.MAX_VALUE, @@ -16,5 +18,6 @@ protected HorizontalPanel(@Nullable PanelColors panelColors, int height) { addParts(); } + //TODO: add javadoc public abstract void addParts(); } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/panels/VerticalPanel.java b/src/main/java/graphicsEngine/presets/panels/VerticalPanel.java new file mode 100644 index 0000000..bfc5391 --- /dev/null +++ b/src/main/java/graphicsEngine/presets/panels/VerticalPanel.java @@ -0,0 +1,23 @@ +package graphicsEngine.presets.panels; + +import graphicsEngine.panels.PanelColors; +import graphicsEngine.panels.SimplePanel; + +import java.awt.Dimension; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public abstract class VerticalPanel extends SimplePanel { + //TODO: add javadoc + public VerticalPanel(@Nullable PanelColors panelColors, int width) { + super(panelColors, false); + setPreferredSize(new Dimension( + width, + Integer.MAX_VALUE)); + addParts(); + } + + //TODO: add javadoc + public abstract void addParts(); +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/AbstractPage.java b/src/main/java/graphicsEngine/windows/AbstractPage.java index 2be49b1..6c655b7 100644 --- a/src/main/java/graphicsEngine/windows/AbstractPage.java +++ b/src/main/java/graphicsEngine/windows/AbstractPage.java @@ -1,26 +1,44 @@ package graphicsEngine.windows; +import java.util.List; +import java.util.ArrayList; import java.util.Objects; - import java.awt.Color; +import java.awt.event.ActionListener; import javax.swing.JPanel; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadoc public abstract class AbstractPage extends JPanel { private static final Color DEFAULT_BACKGROUND = Color.black; + //completely blank //TODO: add javadoc public AbstractPage() { - this(null); + this(null, null); } //TODO: add javadoc - public AbstractPage(@Nullable Color backgroundColor) { + public AbstractPage(@Nullable List actionListenerList, + @Nullable Color backgroundColor) { + addListeners(actionListenerList); setBackground(Objects.requireNonNullElse(backgroundColor, DEFAULT_BACKGROUND)); } + /** + * Adds known listeners to this page. + * Override this to add custom listeners. + * + * @param list List of listeners to add. + * + * @return Remaining unknown listeners. + */ + public @NotNull List addListeners(@Nullable List list) { + return Objects.requireNonNullElse(list, new ArrayList<>()); + } + //TODO: add javadoc public abstract String getPageKey(); } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/AbstractWindow.java b/src/main/java/graphicsEngine/windows/AbstractWindow.java index 9009d1f..286c83e 100644 --- a/src/main/java/graphicsEngine/windows/AbstractWindow.java +++ b/src/main/java/graphicsEngine/windows/AbstractWindow.java @@ -1,9 +1,14 @@ package graphicsEngine.windows; +import java.util.List; +import java.util.ArrayList; +import java.util.Objects; +import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.ImageIcon; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * An abstract window with required configuration and methods. @@ -30,12 +35,15 @@ public static int[] correctWindowsSizeError(int[] size) { /** * Creates a new AbstractWindow with specified configuration. + * Adds known action listeners to this window. * - * @param windowManager A WindowManager object. - * @param config Window configuration. + * @param windowManager A WindowManager object. + * @param config Window configuration. + * @param actionListenerList List of action listeners to add to this window. */ public AbstractWindow(@NotNull WindowManager windowManager, - @NotNull WindowConfig config) { + @NotNull WindowConfig config, + @Nullable List actionListenerList) { super(config.getTitle()); setDefaultCloseOperation(config.closeOperation); @@ -44,12 +52,26 @@ public AbstractWindow(@NotNull WindowManager windowManager, int[] location = config.getLocation(); setLocation(location[0], location[1]); + //TODO: remove window listener from here addWindowListener(new CommonWindowListener(windowManager, getWindowKey(), config.closeOperation)); + addListeners(actionListenerList); addParts(); setVisible(true); } + /** + * Adds known listeners to this page. + * Override this to add custom listeners. + * + * @param list List of listeners to add. + * + * @return Remaining unknown listeners. + */ + public @NotNull List addListeners(@Nullable List list) { + return Objects.requireNonNullElse(list, new ArrayList<>()); + } + /** * Gets the key of the window. * diff --git a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java index 8ec7d19..4c0f02c 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java @@ -5,6 +5,8 @@ import graphicsEngine.windows.AbstractWindow; import graphicsEngine.presets.SimpleOverlay; +import java.awt.event.ActionListener; +import java.util.List; import java.util.Objects; import java.awt.Component; @@ -25,8 +27,9 @@ abstract class AbstractLayeredWindow extends AbstractWindow { */ AbstractLayeredWindow(@NotNull WindowManager windowManager, @NotNull WindowConfig config, + @Nullable List actionListenerList, @Nullable SimpleOverlay overlay) { - super(windowManager, config); + super(windowManager, config, actionListenerList); setOverlay(overlay); hideOverlay(); } diff --git a/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java index 9ac46ea..4e6c53c 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java @@ -5,6 +5,7 @@ import graphicsEngine.windows.AbstractPage; import graphicsEngine.presets.SimpleOverlay; +import java.awt.event.ActionListener; import java.util.List; import java.util.Map; import java.util.HashMap; @@ -24,8 +25,9 @@ public abstract class MultiPageWindow extends AbstractLayeredWindow { //TODO: add javadoc public MultiPageWindow(@NotNull WindowManager windowManager, @NotNull WindowConfig config, + @Nullable List actionListenerList, @Nullable SimpleOverlay overlay) { - super(windowManager, config, overlay); + super(windowManager, config, actionListenerList, overlay); this.pages = new HashMap<>(); activePage = EMPTY_KEY; addPages(getInitialPages()); diff --git a/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java index 51fb239..58241f3 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java @@ -4,7 +4,11 @@ import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.AbstractWindow; +import java.util.List; +import java.awt.event.ActionListener; + import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * A simple window; has only contents. @@ -12,12 +16,15 @@ public abstract class SimpleWindow extends AbstractWindow { /** * Creates a new SimpleWindow with specified configuration. + * Adds known action listeners to this window. * - * @param windowManager A WindowManager object - * @param config Window configuration. + * @param windowManager A WindowManager object. + * @param config Window configuration. + * @param actionListenerList List of action listeners to add to this window. */ public SimpleWindow(@NotNull WindowManager windowManager, - @NotNull WindowConfig config) { - super(windowManager, config); + @NotNull WindowConfig config, + @Nullable List actionListenerList) { + super(windowManager, config, actionListenerList); } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java index 56a7ad9..424c854 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java @@ -8,13 +8,17 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.awt.event.ActionListener; +import java.util.List; + // TODO: finish this and add javadoc public abstract class SinglePageWindow extends AbstractLayeredWindow { //TODO: add javadoc public SinglePageWindow(@NotNull WindowManager windowManager, @NotNull WindowConfig config, + @Nullable List actionListenerList, @Nullable SimpleOverlay overlay) { - super(windowManager, config, overlay); + super(windowManager, config, actionListenerList, overlay); } //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java b/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java index a76433a..6e28853 100644 --- a/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java @@ -35,7 +35,7 @@ private static class Window extends SimpleWindow { * @param windowManager A WindowManager object. */ public Window(@NotNull WindowManager windowManager) { - super(windowManager, new WindowConfig()); + super(windowManager, new WindowConfig(), null); setDefaultCloseOperation(EXIT_ON_CLOSE); // Not necessary; added for easier use. } diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Buttons.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/ButtonListener.java similarity index 57% rename from src/test/java/graphicsEngineDemo/d2_overlayDemo/Buttons.java rename to src/test/java/graphicsEngineDemo/d2_overlayDemo/ButtonListener.java index 831acfc..d3392c9 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Buttons.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/ButtonListener.java @@ -2,14 +2,53 @@ import graphicsEngine.presets.SimpleJButton; +import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import static consoleUtils.ConsoleUtils.printLine; + +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * A class for containing buttons. */ -class Buttons { +class ButtonListener implements ActionListener { + private final Window window; + + //TODO: add javadocs + ButtonListener(@NotNull Window window) { + this.window = window; + } + + /** + * Invoked when an action occurs. + * + * @param e the event to be processed + */ + @Override + public void actionPerformed(ActionEvent e) { + if (actionCheck(e)) return; + printLine("A button has been pressed but no action set up"); + } + + private boolean actionCheck(@NotNull ActionEvent e) { + switch (e.getActionCommand()) { + case Button1.ACTION_COMMAND -> + window.showOverlay(); + case Button2.ACTION_COMMAND -> + window.hideOverlay(); + case Button3.ACTION_COMMAND -> + window.toggleOverlay(); + case Button4.ACTION_COMMAND -> + window.toggleOverlayColor(); + default -> { + return false; + } + } + return true; + } + /** * A simple button for showing the overlay. */ diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java index 5f8dde5..aacc041 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java @@ -1,22 +1,7 @@ package graphicsEngineDemo.d2_overlayDemo; import graphicsEngine.GraphicsAdapter; -import graphicsEngine.windows.AbstractPage; -import graphicsEngine.windows.WindowConfig; -import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowUpdater; -import graphicsEngine.windows.windowTypes.SinglePageWindow; -import graphicsEngine.presets.SimpleOverlay; - -import java.awt.Color; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import javax.swing.BoxLayout; - -import static consoleUtils.ConsoleUtils.printLine; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * GraphicsEngine demo demonstrating the use of overlays. @@ -32,97 +17,4 @@ public static void main(String[] args) { newWindow(new WindowUpdater(new Window(this))); }}; } - - /** - * The window to display. - */ - private static class Window extends SinglePageWindow implements ActionListener { - private static final String WINDOW_TITLE = "Overlay demo"; - - private boolean overlayColorState; - - //TODO: add javadoc - private Window(@NotNull WindowManager windowManager) { - super(windowManager, new WindowConfig(), null); - setDefaultCloseOperation(EXIT_ON_CLOSE); - setTitle(WINDOW_TITLE); - - overlayColorState = false; - setOverlay(new Overlay(this)); - } - - /** - * Redundant as there is only one window. - * TODO: finish this javadoc - * - * @return The key of this window. - */ - @Override - public final @NotNull String getWindowKey() { - return "window"; - } - - /** - * Prepares a page to add to this window. - * - * @return An AbstractPage object. - */ - @Override - public final @NotNull AbstractPage getPage() { - return new Page(null, this); - } - - /** - * Invoked when an action occurs. - * - * @param e the event to be processed - */ - @Override - public final void actionPerformed(ActionEvent e) { - switch (e.getActionCommand()) { - case Buttons.Button1.ACTION_COMMAND -> showOverlay(); - case Buttons.Button2.ACTION_COMMAND -> hideOverlay(); - case Buttons.Button3.ACTION_COMMAND -> toggleOverlay(); - case Buttons.Button4.ACTION_COMMAND -> toggleOverlayColor(); - default -> printLine("A button has been pressed but no action set up"); - } - } - - private void toggleOverlayColor() { - overlayColorState = !overlayColorState; - if(overlayColorState) { - setOverlayColor(OverlayColors.GREEN); - } else { - setOverlayColor(OverlayColors.RED); - } - } - - private void setOverlayColor(@Nullable Color color) { - try { - getOverlay().setColor(color); - } catch (ClassCastException ignored) { - //glassPane does not contain a SimpleOverlay object - } - } - } - - /** - * TODO: finish this javadoc - */ - private static class Overlay extends SimpleOverlay { - //TODO: add javadoc - protected Overlay(@Nullable ActionListener actionListener) { - super(OverlayColors.RED); - setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); - add(new Buttons.Button4(actionListener)); - } - } - - /** - * TODO: finish this javadoc - */ - private static class OverlayColors { - protected static final Color RED = new Color(100, 0, 0, 100); - protected static final Color GREEN = new Color(0, 100, 0, 100); - } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Overlay.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Overlay.java new file mode 100644 index 0000000..ede4598 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Overlay.java @@ -0,0 +1,20 @@ +package graphicsEngineDemo.d2_overlayDemo; + +import graphicsEngine.presets.SimpleOverlay; + +import java.awt.event.ActionListener; +import javax.swing.BoxLayout; + +import org.jetbrains.annotations.Nullable; + +/** + * TODO: finish this javadoc + */ +class Overlay extends SimpleOverlay { + //TODO: add javadoc + protected Overlay(@Nullable ActionListener actionListener) { + super(OverlayColors.RED); + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + add(new ButtonListener.Button4(actionListener)); + } +} diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/OverlayColors.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/OverlayColors.java new file mode 100644 index 0000000..cddc7da --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/OverlayColors.java @@ -0,0 +1,13 @@ +package graphicsEngineDemo.d2_overlayDemo; + +import java.awt.Color; + +/** + * TODO: finish this javadoc + */ +class OverlayColors { + private static final int COMMON_TRANSPARENCY = 100; + protected static final Color + RED = new Color(100, 0, 0, COMMON_TRANSPARENCY), + GREEN = new Color(0, 100, 0, COMMON_TRANSPARENCY); +} diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java index 493211d..0db894d 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java @@ -5,23 +5,65 @@ import graphicsEngine.presets.panels.AbstractHeader; import graphicsEngine.presets.panels.AbstractFooter; +import java.util.List; +import java.util.ArrayList; import java.awt.event.ActionListener; import javax.swing.BoxLayout; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadocs class Page extends HeaderAndFooterPage { + private ButtonListener headerButtonListener; + protected Page(@Nullable PanelColors panelColors, @Nullable ActionListener actionListener) { - super( - new CommonHeader(panelColors, actionListener), - new Footer(panelColors)); + super(new ArrayList<>() { + { + add(actionListener); + } + }, null, + panelColors); + } + + /** + * Adds known listeners to this page. + * Override this to add custom listeners. + * + * @param list List of listeners to add. + * + * @return Remaining unknown listeners. + */ + @Override + public @NotNull List addListeners(@Nullable List list) { + List remainder = super.addListeners(list); + for (int i = 0; i < remainder.size(); i++) { + ActionListener listener = remainder.get(i); + if (listener instanceof ButtonListener) { + headerButtonListener = (ButtonListener) listener; + remainder.remove(i); + i--; + } + } + return remainder; } @Override public final void addParts() {} + //TODO: add javadoc + @Override + public @NotNull AbstractHeader getHeader(@Nullable PanelColors headerColors) { + return new CommonHeader(headerColors, headerButtonListener); + } + + //TODO: add javadoc + @Override + public @NotNull AbstractFooter getFooter(@Nullable PanelColors footerColors) { + return new Footer(footerColors); + } + @Override public String getPageKey() { return "page"; @@ -41,9 +83,9 @@ public final void addParts() {} private void addButtons(@Nullable ActionListener actionListener) { setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); - add(new Buttons.Button1(actionListener)); - add(new Buttons.Button2(actionListener)); - add(new Buttons.Button3(actionListener)); + add(new ButtonListener.Button1(actionListener)); + add(new ButtonListener.Button2(actionListener)); + add(new ButtonListener.Button3(actionListener)); } } diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Window.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Window.java new file mode 100644 index 0000000..db33f9a --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Window.java @@ -0,0 +1,86 @@ +package graphicsEngineDemo.d2_overlayDemo; + +import graphicsEngine.windows.AbstractPage; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.windowTypes.SinglePageWindow; + +import java.util.List; +import java.awt.Color; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * The window to display. + */ +class Window extends SinglePageWindow { + private static final String WINDOW_TITLE = "Overlay demo"; + + private boolean overlayColorState; + private ButtonListener headerButtonListener; + + //TODO: add javadoc + Window(@NotNull WindowManager windowManager) { + super(windowManager, new WindowConfig(), null, null); + setDefaultCloseOperation(EXIT_ON_CLOSE); + setTitle(WINDOW_TITLE); + + overlayColorState = false; + setOverlay(new Overlay(headerButtonListener)); + } + + /** + * Adds known listeners to this page. + * Override this to add custom listeners. + * + * @param list List of listeners to add. + * + * @return Remaining unknown listeners. + */ + @Override + public @NotNull List addListeners(@Nullable List list) { + headerButtonListener = new ButtonListener(this); + return super.addListeners(list); + } + + /** + * Redundant as there is only one window. + * TODO: finish this javadoc + * + * @return The key of this window. + */ + @Override + public final @NotNull String getWindowKey() { + return "window"; + } + + /** + * Prepares a page to add to this window. + * + * @return An AbstractPage object. + */ + @Override + public final @NotNull AbstractPage getPage() { + return new Page(null, headerButtonListener); + } + + //TODO: add javadoc + void toggleOverlayColor() { + overlayColorState = !overlayColorState; + if (overlayColorState) { + setOverlayColor(OverlayColors.GREEN); + } else { + setOverlayColor(OverlayColors.RED); + } + } + + private void setOverlayColor(@Nullable Color color) { + try { + getOverlay().setColor(color); + } catch (ClassCastException ignored) { + //glassPane does not contain a SimpleOverlay object + } + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java index c36ffe5..1298ef2 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java @@ -4,26 +4,25 @@ import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.windowTypes.MultiPageWindow; import graphicsEngine.windows.AbstractPage; - import graphicsEngineDemo.d3_twoPageDemo.pages.Page1; import graphicsEngineDemo.d3_twoPageDemo.pages.Page2; -import graphicsEngineDemo.d3_twoPageDemo.parts.Buttons; +import graphicsEngineDemo.d3_twoPageDemo.parts.ButtonListener; import java.util.List; import java.util.ArrayList; import java.awt.Color; -import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import static consoleUtils.ConsoleUtils.printLine; - import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; //TODO: add javadocs -class Window extends MultiPageWindow implements ActionListener { +public class Window extends MultiPageWindow { + private ButtonListener buttonListener; + //TODO: add javadoc public Window(@NotNull WindowManager windowManager) { - super(windowManager, config(), null); + super(windowManager, config(), null, null); setActivePage(Page1.getStaticPageKey()); } @@ -42,6 +41,20 @@ private static WindowConfig config() { return config; } + /** + * Adds known listeners to this page. + * Override this to add custom listeners. + * + * @param list List of listeners to add. + * + * @return Remaining unknown listeners. + */ + @Override + public @NotNull List addListeners(@Nullable List list) { + buttonListener = new ButtonListener(this); + return super.addListeners(list); + } + //TODO: add javadoc @Override public final @NotNull String getWindowKey() { @@ -53,24 +66,9 @@ private static WindowConfig config() { */ @Override public @NotNull List getInitialPages() { - ActionListener actionListener = this; return new ArrayList<>() {{ - add(new Page1(actionListener, new Color(200, 120, 0))); - add(new Page2(actionListener, new Color(200,80,100))); + add(new Page1(buttonListener, new Color(200, 120, 0))); + add(new Page2(buttonListener, new Color(200,80,100))); }}; } - - /** - * Invoked when an action occurs. - * - * @param e the event to be processed - */ - @Override - public void actionPerformed(ActionEvent e) { - switch (e.getActionCommand()) { - case Buttons.Button1.ACTION_COMMAND -> setActivePage(Page1.getStaticPageKey()); - case Buttons.Button2.ACTION_COMMAND -> setActivePage(Page2.getStaticPageKey()); - default -> printLine("A button has been pressed but no action set up"); - } - } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java index d06909b..b285283 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java @@ -1,21 +1,29 @@ package graphicsEngineDemo.d3_twoPageDemo.pages; import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.panels.PanelColors; import graphicsEngine.presets.HeaderAndFooterPage; - -import graphicsEngineDemo.d3_twoPageDemo.parts.CommonFooter; +import graphicsEngine.presets.panels.AbstractFooter; +import graphicsEngine.presets.panels.AbstractHeader; import graphicsEngineDemo.d3_twoPageDemo.parts.CommonHeader; +import graphicsEngineDemo.d3_twoPageDemo.parts.ButtonListener; +import graphicsEngineDemo.d3_twoPageDemo.parts.CommonFooter; +import java.util.List; +import java.util.ArrayList; import java.util.Objects; import java.awt.Color; import java.awt.event.ActionListener; import javax.swing.JPanel; import javax.swing.BoxLayout; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadoc abstract class AbstractCommonPage extends HeaderAndFooterPage { + private ButtonListener headerButtonListener; + private static final Color DEFAULT_BACKGROUND = Color.black, LABEL_TEXT_COLOR = new Color(30, 30, 150); @@ -23,15 +31,52 @@ abstract class AbstractCommonPage extends HeaderAndFooterPage { private final String labelText; //TODO: add javadoc - protected AbstractCommonPage(@Nullable ActionListener actionListener, + protected AbstractCommonPage(@Nullable ActionListener buttonListener, @Nullable String labelText) { - super( - new CommonHeader(null, actionListener), - new CommonFooter(null)); + super(new ArrayList<>() { + { + add(buttonListener); + } + }, + null, null); this.labelText = Objects.requireNonNullElse(labelText, DEFAULT_LABEL); addCenterAndLabel(); } + /** + * Adds known listeners to this page. + * Override this to add custom listeners. + * + * @param list List of listeners to add. + * + * @return Remaining unknown listeners. + */ + @Override + public @NotNull List addListeners(@Nullable List list) { + List remainder = super.addListeners(list); + for (int i = 0; i < remainder.size(); i++) { + ActionListener listener = remainder.get(i); + if (listener instanceof ButtonListener) { + headerButtonListener = (ButtonListener) listener; + remainder.remove(i); + i--; + } + } + return remainder; + } + + //TODO: add javadoc + @Override + public @NotNull AbstractHeader getHeader(@Nullable PanelColors headerColors) { + return new CommonHeader(headerColors, headerButtonListener); + } + + //TODO: add javadoc + @Override + public @NotNull AbstractFooter getFooter(@Nullable PanelColors footerColors) { + return new CommonFooter(footerColors); + } + //TODO: add javadoc @Override public void addParts() {} diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/ButtonListener.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/ButtonListener.java new file mode 100644 index 0000000..b2512a7 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/ButtonListener.java @@ -0,0 +1,68 @@ +package graphicsEngineDemo.d3_twoPageDemo.parts; + +import graphicsEngine.presets.SimpleJButton; +import graphicsEngineDemo.d3_twoPageDemo.Window; +import graphicsEngineDemo.d3_twoPageDemo.pages.Page1; +import graphicsEngineDemo.d3_twoPageDemo.pages.Page2; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import static consoleUtils.ConsoleUtils.printLine; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public class ButtonListener implements ActionListener { + private final Window window; + + //TODO: add javadoc + public ButtonListener(@NotNull Window window) { + this.window = window; + } + + /** + * Invoked when an action occurs. + * + * @param e the event to be processed + */ + @Override + public void actionPerformed(ActionEvent e) { + if (actionCheck(e)) return; + printLine("A button has been pressed but no action set up"); + } + + private boolean actionCheck(@NotNull ActionEvent e) { + switch (e.getActionCommand()) { + case Button1.ACTION_COMMAND -> window.setActivePage(Page1.getStaticPageKey()); + case Button2.ACTION_COMMAND -> window.setActivePage(Page2.getStaticPageKey()); + default -> { + return false; + } + } + return true; + } + + //TODO: add javadoc + protected static class Button1 extends SimpleJButton { + //TODO: add javadoc + protected static final String ACTION_COMMAND = "button1"; + + //TODO: add javadoc + protected Button1(@Nullable ActionListener actionListener) { + super("Page 1", ACTION_COMMAND, actionListener); + } + } + + //TODO: add javadoc + protected static class Button2 extends SimpleJButton { + //TODO: add javadoc + protected static final String ACTION_COMMAND = "button2"; + + //TODO: add javadoc + protected Button2(@Nullable ActionListener actionListener) { + super("Page 2", ACTION_COMMAND, actionListener); + } + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Buttons.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Buttons.java deleted file mode 100644 index 8cf1eb8..0000000 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/Buttons.java +++ /dev/null @@ -1,28 +0,0 @@ -package graphicsEngineDemo.d3_twoPageDemo.parts; - -import graphicsEngine.presets.SimpleJButton; - -import java.awt.event.ActionListener; - -import org.jetbrains.annotations.Nullable; - -//TODO: add javadocs -public class Buttons { - //TODO: add javadocs - public static class Button1 extends SimpleJButton { - public static final String ACTION_COMMAND = "button1"; - - protected Button1(@Nullable ActionListener actionListener) { - super("Page 1", ACTION_COMMAND, actionListener); - } - } - - //TODO: add javadocs - public static class Button2 extends SimpleJButton { - public static final String ACTION_COMMAND = "button2"; - - protected Button2(@Nullable ActionListener actionListener) { - super("Page 2", ACTION_COMMAND, actionListener); - } - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java index 7717a2b..a314109 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java @@ -23,7 +23,7 @@ public void addParts() {} private void addButtons(@Nullable ActionListener actionListener) { setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); - add(new Buttons.Button1(actionListener)); - add(new Buttons.Button2(actionListener)); + add(new ButtonListener.Button1(actionListener)); + add(new ButtonListener.Button2(actionListener)); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java b/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java index 6bfb61d..7546a6d 100644 --- a/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java @@ -33,7 +33,7 @@ public static void main(String[] args) { private static class SimpleWindow1 extends SimpleWindow { //TODO: add javadoc public SimpleWindow1(@NotNull WindowManager windowManager) { - super(windowManager, config()); + super(windowManager, config(), null); } /** @@ -66,7 +66,7 @@ public void addParts() {} private static class SimpleWindow2 extends SimpleWindow { //TODO: add javadoc public SimpleWindow2(@NotNull WindowManager windowManager) { - super(windowManager, config()); + super(windowManager, config(), null); } /** @@ -99,7 +99,7 @@ public void addParts() {} private static class PagedWindow extends SimpleWindow { //TODO: add javadoc public PagedWindow(@NotNull WindowManager windowManager) { - super(windowManager, config()); + super(windowManager, config(), null); } /** diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java index aef89aa..7aae05c 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java @@ -1,17 +1,84 @@ package graphicsEngineDemo.d5_featurePreview.common; +import graphicsEngine.Utilities; +import graphicsEngine.panels.PanelColors; import graphicsEngine.presets.HeaderAndFooterPage; +import graphicsEngine.presets.panels.AbstractHeader; +import graphicsEngine.presets.panels.AbstractFooter; +import graphicsEngineDemo.d5_featurePreview.common.header.CommonHeader; +import graphicsEngineDemo.d5_featurePreview.common.header.HeaderButtonListener; +import java.util.List; +import java.util.Objects; +import java.awt.Component; +import java.awt.BorderLayout; import java.awt.event.ActionListener; +import javax.swing.*; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: finish this and add javadoc public abstract class AbstractCommonPage extends HeaderAndFooterPage { + private HeaderButtonListener headerButtonListener; + + //TODO: add javadoc + public AbstractCommonPage(@Nullable List actionListenerList, + @Nullable PanelColors panelColors) { + super(actionListenerList, null, panelColors); + setBodyParameters(); + addBody(getPageBody()); + } + + /** + * Adds known listeners to this page. + * Override this to add custom listeners. + * + * @param list List of listeners to add. + * + * @return Remaining unknown listeners. + */ + @Override + public @NotNull List addListeners(@Nullable List list) { + List remainder = super.addListeners(list); + for (int i = 0; i < remainder.size(); i++) { + ActionListener listener = remainder.get(i); + if (listener instanceof HeaderButtonListener) { + headerButtonListener = (HeaderButtonListener) listener; + remainder.remove(i); + i--; + } + } + return remainder; + } + + //TODO: add javadoc + @Override + public @NotNull AbstractHeader getHeader(@Nullable PanelColors headerColors) { + return new CommonHeader(headerColors, headerButtonListener); + } + //TODO: add javadoc - public AbstractCommonPage(@Nullable ActionListener actionListener) { - super( - new CommonHeader(null, actionListener), - new CommonFooter(null)); + @Override + public @NotNull AbstractFooter getFooter(@Nullable PanelColors footerColors) { + return new CommonFooter(footerColors); } + + //TODO: add javadoc + @Override + public final void addParts() {} + + //TODO: add javadoc + public abstract void setBodyParameters(); + + private void addBody(@Nullable Component center) { + add(new JPanel() {{ + setLayout(new BorderLayout(0, 0)); + setBackground(Utilities.EMPTY_COLOR); + add(Objects.requireNonNullElse(center, new JPanel()), BorderLayout.CENTER); + }}); + } + + //TODO: add javadoc + public abstract @Nullable Component getPageBody(); } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java index 6bae7a4..1697f8b 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java @@ -1,38 +1,37 @@ package graphicsEngineDemo.d5_featurePreview.common; +import graphicsEngine.Utilities; +import graphicsEngine.panels.PanelColors; + import java.util.List; -import java.awt.Color; import java.awt.Component; +import java.awt.BorderLayout; import java.awt.event.ActionListener; -import javax.swing.JPanel; -import javax.swing.BoxLayout; +import javax.swing.*; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadoc public abstract class AbstractMenuPage extends AbstractCommonPage { //TODO: add javadoc - public AbstractMenuPage(@Nullable ActionListener actionListener) { - super(actionListener); - addComponents(initialCentralComponents(actionListener)); + public AbstractMenuPage(@Nullable List actionListenerList, + @Nullable PanelColors panelColors) { + super(actionListenerList, panelColors); } //TODO: add javadoc @Override - public final void addParts() {} - - private void addComponents(@Nullable List components) { - add(new JPanel() {{ - setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); - setBackground(new Color(0,0,0,0)); - if (components != null && components.size() > 0) { - for (Component component : components) { - add(component); - } - } - }}); + public void setBodyParameters() { + //TODO: set body parameters here } //TODO: add javadoc - public abstract @Nullable List initialCentralComponents(@Nullable ActionListener actionListener); + @Override + public @NotNull Component getPageBody() { + return new JPanel() {{ + setLayout(new BorderLayout(0, 0)); + setBackground(Utilities.EMPTY_COLOR); + }}; + } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonColors.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonColors.java new file mode 100644 index 0000000..9a260b0 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonColors.java @@ -0,0 +1,17 @@ +package graphicsEngineDemo.d5_featurePreview.common; + +import graphicsEngine.panels.PanelColors; + +import java.awt.Color; + +public class CommonColors { + public static final PanelColors + HEADER_AND_FOOTER_COLORS = new PanelColors( + null,//Color.cyan, + null, + null), + SIDE_PANEL_COLORS = new PanelColors( + new Color(150, 150, 150), + new Color(0, 0, 0), + null); +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java index 774e82a..50d0e1e 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java @@ -7,7 +7,7 @@ //TODO: add javadoc public class CommonFooter extends AbstractFooter { - private static final int HEIGHT = 0; + private static final int HEIGHT = 40; //TODO: add javadoc public CommonFooter(@Nullable PanelColors panelColors) { diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeader.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeader.java deleted file mode 100644 index 84c30e2..0000000 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeader.java +++ /dev/null @@ -1,32 +0,0 @@ -package graphicsEngineDemo.d5_featurePreview.common; - -import graphicsEngine.panels.PanelColors; -import graphicsEngine.presets.panels.AbstractHeader; - -import javax.swing.BoxLayout; -import java.awt.event.ActionListener; - -import org.jetbrains.annotations.Nullable; - -//TODO: add javadoc -public class CommonHeader extends AbstractHeader { - private static final int HEIGHT = 50; - - //TODO: add javadoc - public CommonHeader(@Nullable PanelColors panelColors, - @Nullable ActionListener actionListener) { - super(panelColors, HEIGHT); - addButtons(actionListener); - } - - //TODO: add javadoc - @Override - public void addParts() {} - - private void addButtons(@Nullable ActionListener actionListener) { - setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); - add(new CommonHeaderButtons.Button_Start(actionListener)); - add(new CommonHeaderButtons.Button_Settings(actionListener)); - add(new CommonHeaderButtons.Button_DemoSelect(actionListener)); - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeaderButtons.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeaderButtons.java deleted file mode 100644 index 6d16ce2..0000000 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonHeaderButtons.java +++ /dev/null @@ -1,37 +0,0 @@ -package graphicsEngineDemo.d5_featurePreview.common; - -import graphicsEngine.presets.SimpleJButton; - -import java.awt.event.ActionListener; - -import org.jetbrains.annotations.Nullable; - -//TODO: add javadocs -public class CommonHeaderButtons { - //TODO: add javadocs - public static class Button_Start extends SimpleJButton { - public static final String ACTION_COMMAND = "page_start"; - - protected Button_Start(@Nullable ActionListener actionListener) { - super("Start", ACTION_COMMAND, actionListener); - } - } - - //TODO: add javadocs - public static class Button_Settings extends SimpleJButton { - public static final String ACTION_COMMAND = "page_settings"; - - protected Button_Settings(@Nullable ActionListener actionListener) { - super("Settings", ACTION_COMMAND, actionListener); - } - } - - //TODO: add javadocs - public static class Button_DemoSelect extends SimpleJButton { - public static final String ACTION_COMMAND = "page_demoSelect"; - - protected Button_DemoSelect(@Nullable ActionListener actionListener) { - super("Select demo", ACTION_COMMAND, actionListener); - } - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java new file mode 100644 index 0000000..74b0720 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java @@ -0,0 +1,31 @@ +package graphicsEngineDemo.d5_featurePreview.common.header; + +import graphicsEngine.panels.PanelColors; +import graphicsEngine.presets.panels.AbstractHeader; + +import javax.swing.BoxLayout; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public class CommonHeader extends AbstractHeader { + private static final int HEIGHT = 40; + + //TODO: add javadoc + public CommonHeader(@Nullable PanelColors panelColors, + @Nullable HeaderButtonListener buttonListener) { + super(panelColors, HEIGHT); + addButtons(buttonListener); + } + + //TODO: add javadoc + @Override + public void addParts() {} + + private void addButtons(@Nullable HeaderButtonListener buttonListener) { + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + add(new HeaderButtonListener.Button_Start(buttonListener)); + add(new HeaderButtonListener.Button_Settings(buttonListener)); + add(new HeaderButtonListener.Button_DemoSelect(buttonListener)); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/HeaderButtonListener.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/HeaderButtonListener.java new file mode 100644 index 0000000..1472a0b --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/HeaderButtonListener.java @@ -0,0 +1,78 @@ +package graphicsEngineDemo.d5_featurePreview.common.header; + +import graphicsEngine.presets.SimpleJButton; +import graphicsEngineDemo.d5_featurePreview.window.Window; +import graphicsEngineDemo.d5_featurePreview.menuPages.startingPage.StartingPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage.SettingsPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectPage; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import static consoleUtils.ConsoleUtils.printLine; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +//TODO: add javadocs +public class HeaderButtonListener implements ActionListener { + private final Window window; + + //TODO: add javadocs + public HeaderButtonListener(@NotNull Window window) { + this.window = window; + } + + /** + * Invoked when an action occurs. + * + * @param e the event to be processed + */ + @Override + public void actionPerformed(ActionEvent e) { + if (actionCheck(e)) return; + printLine("A header button has been pressed but no action set up"); + } + + private boolean actionCheck(@NotNull ActionEvent e) { + switch (e.getActionCommand()) { + case Button_Start.ACTION_COMMAND -> + window.setActivePage(StartingPage.getStaticPageKey()); + case Button_Settings.ACTION_COMMAND -> + window.setActivePage(SettingsPage.getStaticPageKey()); + case Button_DemoSelect.ACTION_COMMAND -> + window.setActivePage(DemoSelectPage.getStaticPageKey()); + default -> { + return false; + } + } + return true; + } + + //TODO: add javadocs + public static class Button_Start extends SimpleJButton { + public static final String ACTION_COMMAND = "page_start"; + + protected Button_Start(@Nullable ActionListener actionListener) { + super("Start", ACTION_COMMAND, actionListener); + } + } + + //TODO: add javadocs + public static class Button_Settings extends SimpleJButton { + public static final String ACTION_COMMAND = "page_settings"; + + protected Button_Settings(@Nullable ActionListener actionListener) { + super("Settings", ACTION_COMMAND, actionListener); + } + } + + //TODO: add javadocs + public static class Button_DemoSelect extends SimpleJButton { + public static final String ACTION_COMMAND = "page_demoSelect"; + + protected Button_DemoSelect(@Nullable ActionListener actionListener) { + super("Select demo", ACTION_COMMAND, actionListener); + } + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java index 826a8fc..46168da 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java @@ -1,19 +1,18 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; +import graphicsEngine.panels.PanelColors; import graphicsEngineDemo.d5_featurePreview.common.AbstractCommonPage; import java.awt.event.ActionListener; +import java.util.List; import org.jetbrains.annotations.Nullable; //TODO: add javadoc public abstract class CommonDemoPage extends AbstractCommonPage { //TODO: add javadoc - public CommonDemoPage(@Nullable ActionListener actionListener) { - super(actionListener); + public CommonDemoPage(@Nullable List actionListenerList, + @Nullable PanelColors panelColors) { + super(actionListenerList, panelColors); } - - //TODO: add javadoc - @Override - public final void addParts() {} } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java index 2892176..80aa3f2 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java @@ -1,7 +1,13 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import java.awt.Color; +import graphicsEngine.Utilities; +import graphicsEngine.panels.PanelColors; +import graphicsEngine.parts.SimpleLabel; + +import java.awt.*; import java.awt.event.ActionListener; +import java.util.List; +import javax.swing.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -9,12 +15,13 @@ //TODO: add javadoc public class Page1 extends CommonDemoPage { private Page1() { - this(null); + this(null, null); } //TODO: add javadoc - public Page1(@Nullable ActionListener actionListener) { - super(actionListener); + public Page1(@Nullable List actionListenerList, + @Nullable PanelColors panelColors) { + super(actionListenerList, panelColors); setBackground(new Color(150, 50, 50)); } @@ -28,4 +35,21 @@ public Page1(@Nullable ActionListener actionListener) { public static @NotNull String getStaticPageKey() { return (new Page1()).getPageKey(); } + + //TODO: add javadoc + @Override + public void setBodyParameters() { + //TODO: set body parameters here + } + + //TODO: add javadoc + @Override + public @Nullable Component getPageBody() { + return new JPanel() {{ + setBackground(Utilities.EMPTY_COLOR); + setLayout(new BorderLayout(0, 0)); + add(new SimpleLabel("Demo 1", Color.white), BorderLayout.NORTH); + //Add parts to body here + }}; + } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java index d76c7a4..e205442 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java @@ -1,20 +1,28 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; +import graphicsEngine.Utilities; +import graphicsEngine.panels.PanelColors; +import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.presets.panels.VerticalPanel; + +import java.util.List; import java.awt.Color; import java.awt.event.ActionListener; +import javax.swing.JPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadoc -public class Page2 extends CommonDemoPage { +public class Page2 extends PageWithPanel { private Page2() { - this(null); + this(null, null); } //TODO: add javadoc - public Page2(@Nullable ActionListener actionListener) { - super(actionListener); + public Page2(@Nullable List actionListenerList, + @Nullable PanelColors headerAndFooterColors) { + super(actionListenerList, headerAndFooterColors); setBackground(new Color(50, 150, 50)); } @@ -28,4 +36,41 @@ public Page2(@Nullable ActionListener actionListener) { public static @NotNull String getStaticPageKey() { return (new Page2()).getPageKey(); } + + /** + * TODO: finish this javadoc + * + * @param panelColors + * @return + */ + @Override + public final @NotNull VerticalPanel getLeftSidePanel(@Nullable PanelColors panelColors) { + return new SidePanel(panelColors); + } + + /** + * TODO: finish this javadoc + * + * @return + */ + @Override + public @Nullable JPanel getPageCenter() { + return new JPanel() {{ + setBackground(Utilities.EMPTY_COLOR); + add(new SimpleLabel("Center", Color.white)); + //Add parts here + }}; + } + + //TODO: add javadoc + private static class SidePanel extends CommonSidePanel { + private static final int WIDTH = 200; + + //TODO: add javadoc + public SidePanel(@Nullable PanelColors panelColors) { + super(panelColors, WIDTH); + add(new SimpleLabel("Demo page 2 - Side panel", getPanelColors().text)); + //Add parts here + } + } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page3.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page3.java new file mode 100644 index 0000000..67144ea --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page3.java @@ -0,0 +1,96 @@ +package graphicsEngineDemo.d5_featurePreview.demoPages; + +import graphicsEngine.Utilities; +import graphicsEngine.panels.PanelColors; +import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.presets.panels.VerticalPanel; + +import java.util.List; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.event.ActionListener; +import javax.swing.JPanel; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public class Page3 extends PageWithPanel { + private Page3() { + this(null, null); + } + + //TODO: add javadoc + public Page3(@Nullable List actionListenerList, + @Nullable PanelColors headerAndFooterColors) { + super(actionListenerList, headerAndFooterColors); + setBackground(new Color(50, 50, 150)); + } + + //TODO: add javadoc + @Override + public final @NotNull String getPageKey() { + return "page3"; + } + + //TODO: add javadoc + public static @NotNull String getStaticPageKey() { + return (new Page3()).getPageKey(); + } + + /** + * TODO: finish this javadoc + * + * @param panelColors + * @return + */ + @Override + public final @NotNull VerticalPanel getLeftSidePanel(@Nullable PanelColors panelColors) { + return new SidePanel(panelColors); + } + + /** + * TODO: finish this javadoc + * + * @return + */ + @Override + public @Nullable JPanel getPageCenter() { + return new JPanel() {{ + setBackground(Utilities.EMPTY_COLOR); + add(new DynamicLabel(Color.red, null)); + //add(new SimpleLabel("Demo 3", Color.white)); + //Add parts here + }}; + } + + //TODO: add javadoc + private static class SidePanel extends CommonSidePanel { + private static final int WIDTH = 200; + + //TODO: add javadoc + public SidePanel(@Nullable PanelColors panelColors) { + super(panelColors, WIDTH); + add(new SimpleLabel("Demo page 3 - Side panel", getPanelColors().text)); + //Add parts here + } + } + + private static class DynamicLabel extends SimpleLabel { + + public DynamicLabel(@Nullable Color textColor) { + super(null, textColor); + } + + public DynamicLabel(@Nullable Color textColor, + @Nullable Color background) { + super(null, textColor, background); + } + + @Override + public void paintComponent(Graphics g) { + setText("A dynamically changeable string"); + super.paintComponent(g); + } + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java new file mode 100644 index 0000000..e886f1f --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java @@ -0,0 +1,68 @@ +package graphicsEngineDemo.d5_featurePreview.demoPages; + +import graphicsEngine.Utilities; +import graphicsEngine.panels.PanelColors; +import graphicsEngine.presets.panels.VerticalPanel; +import graphicsEngineDemo.d5_featurePreview.common.CommonColors; + +import java.util.List; +import java.awt.*; +import java.awt.event.ActionListener; +import javax.swing.JPanel; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public abstract class PageWithPanel extends CommonDemoPage { + private PanelColors sidePanelColors; + + //TODO: add javadoc + public PageWithPanel(@Nullable List actionListenerList, + @Nullable PanelColors headerAndFooterColors) { + super(actionListenerList, headerAndFooterColors); + } + + //TODO: add javadoc + @Override + public void setBodyParameters() { + sidePanelColors = CommonColors.SIDE_PANEL_COLORS; + } + + //TODO: add javadoc + @Override + public @Nullable Component getPageBody() { + return new JPanel() {{ + setBackground(Utilities.EMPTY_COLOR); + setLayout(new BorderLayout(0, 0)); + VerticalPanel leftSidePanel = getLeftSidePanel(sidePanelColors); + if (leftSidePanel != null) { + add(leftSidePanel, BorderLayout.WEST); + } + JPanel centralPanel = getPageCenter(); + if (centralPanel != null) { + add(centralPanel, BorderLayout.CENTER); + } + }}; + } + + //TODO: add javadoc + public abstract @Nullable VerticalPanel getLeftSidePanel(@Nullable PanelColors panelColors); + + //TODO: add javadoc + public abstract @Nullable JPanel getPageCenter(); + + //TODO: add javadoc + public static class CommonSidePanel extends VerticalPanel { + + //TODO: add javadoc + public CommonSidePanel(@Nullable PanelColors panelColors, int width) { + super(panelColors, width); + } + + /** + * TODO: finish this javadoc + */ + @Override + public void addParts() {} + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java new file mode 100644 index 0000000..2e4d656 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java @@ -0,0 +1,78 @@ +package graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage; + +import graphicsEngine.presets.SimpleJButton; +import graphicsEngineDemo.d5_featurePreview.window.Window; +import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; +import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; +import graphicsEngineDemo.d5_featurePreview.demoPages.Page3; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import static consoleUtils.ConsoleUtils.printLine; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +//TODO: add javadocs +public class DemoSelectButtonListener implements ActionListener { + private final Window window; + + //TODO: add javadocs + public DemoSelectButtonListener(@NotNull Window window) { + this.window = window; + } + + /** + * Invoked when an action occurs. + * + * @param e the event to be processed + */ + @Override + public void actionPerformed(ActionEvent e) { + if (actionCheck(e)) return; + printLine("A header button has been pressed but no action set up"); + } + + private boolean actionCheck(@NotNull ActionEvent e) { + switch (e.getActionCommand()) { + case Button_Page1.ACTION_COMMAND -> + window.setActivePage(Page1.getStaticPageKey()); + case Button_Page2.ACTION_COMMAND -> + window.setActivePage(Page2.getStaticPageKey()); + case Button_Page3.ACTION_COMMAND -> + window.setActivePage(Page3.getStaticPageKey()); + default -> { + return false; + } + } + return true; + } + + //TODO: add javadocs + public static class Button_Page1 extends SimpleJButton { + public static final String ACTION_COMMAND = "page_demo1"; + + protected Button_Page1(@Nullable ActionListener actionListener) { + super("Page 1", ACTION_COMMAND, actionListener); + } + } + + //TODO: add javadocs + public static class Button_Page2 extends SimpleJButton { + public static final String ACTION_COMMAND = "page_demo2"; + + protected Button_Page2(@Nullable ActionListener actionListener) { + super("Page 2", ACTION_COMMAND, actionListener); + } + } + + //TODO: add javadocs + public static class Button_Page3 extends SimpleJButton { + public static final String ACTION_COMMAND = "page_demo3"; + + protected Button_Page3(@Nullable ActionListener actionListener) { + super("Page 3", ACTION_COMMAND, actionListener); + } + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtons.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtons.java deleted file mode 100644 index 58619bf..0000000 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtons.java +++ /dev/null @@ -1,28 +0,0 @@ -package graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage; - -import graphicsEngine.presets.SimpleJButton; - -import java.awt.event.ActionListener; - -import org.jetbrains.annotations.Nullable; - -//TODO: add javadocs -public class DemoSelectButtons { - //TODO: add javadocs - public static class Button_Page1 extends SimpleJButton { - public static final String ACTION_COMMAND = "page_demo1"; - - protected Button_Page1(@Nullable ActionListener actionListener) { - super("Page 1", ACTION_COMMAND, actionListener); - } - } - - //TODO: add javadocs - public static class Button_Page2 extends SimpleJButton { - public static final String ACTION_COMMAND = "page_demo2"; - - protected Button_Page2(@Nullable ActionListener actionListener) { - super("Page 2", ACTION_COMMAND, actionListener); - } - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java index ffabece..37e0864 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java @@ -1,24 +1,29 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage; +import graphicsEngine.Utilities; +import graphicsEngine.panels.PanelColors; +import graphicsEngine.parts.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; import java.util.List; -import java.util.ArrayList; -import java.awt.Component; +import java.awt.*; import java.awt.event.ActionListener; +import javax.swing.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: finish this and add javadoc public class DemoSelectPage extends AbstractMenuPage { + DemoSelectButtonListener demoSelectButtonListener; private DemoSelectPage() { - this(null); + this(null, null); } //TODO: add javadoc - public DemoSelectPage(@Nullable ActionListener actionListener) { - super(actionListener); + public DemoSelectPage(@Nullable List actionListenerList, + @Nullable PanelColors panelColors) { + super(actionListenerList, panelColors); } //TODO: add javadoc @@ -32,12 +37,41 @@ public DemoSelectPage(@Nullable ActionListener actionListener) { return (new DemoSelectPage()).getPageKey(); } + /** + * Adds known listeners to this page. + * Override this to add custom listeners. + * + * @param list List of listeners to add. + * + * @return Remaining unknown listeners. + */ + @Override + public @NotNull List addListeners(@Nullable List list) { + List remainder = super.addListeners(list); + for (int i = 0; i < remainder.size(); i++) { + ActionListener listener = remainder.get(i); + if (listener instanceof DemoSelectButtonListener) { + demoSelectButtonListener = (DemoSelectButtonListener) listener; + remainder.remove(i); + i--; + } + } + return remainder; + } + //TODO: add javadoc @Override - public @Nullable List initialCentralComponents(@Nullable ActionListener actionListener) { - return new ArrayList<>() {{ - add(new DemoSelectButtons.Button_Page1(actionListener)); - add(new DemoSelectButtons.Button_Page2(actionListener)); - }}; + public @NotNull Component getPageBody() { + JPanel body = (JPanel) super.getPageBody(); + body.add(new SimpleLabel("Select demo:", Color.white), BorderLayout.NORTH); + body.add(new JPanel() {{ + setBackground(Utilities.EMPTY_COLOR); + setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + add(new DemoSelectButtonListener.Button_Page1(demoSelectButtonListener)); + add(new DemoSelectButtonListener.Button_Page2(demoSelectButtonListener)); + add(new DemoSelectButtonListener.Button_Page3(demoSelectButtonListener)); + //Add more buttons here + }}, BorderLayout.CENTER); + return body; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java index a442add..daf6d0b 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java @@ -1,13 +1,13 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage; +import graphicsEngine.panels.PanelColors; import graphicsEngine.parts.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; import java.util.List; -import java.util.ArrayList; -import java.awt.Color; -import java.awt.Component; +import java.awt.*; import java.awt.event.ActionListener; +import javax.swing.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -15,12 +15,13 @@ //TODO: finish this and add javadoc public class SettingsPage extends AbstractMenuPage { private SettingsPage() { - this(null); + this(null, null); } //TODO: add javadoc - public SettingsPage(@Nullable ActionListener actionListener) { - super(actionListener); + public SettingsPage(@Nullable List actionListenerList, + @Nullable PanelColors panelColors) { + super(actionListenerList, panelColors); } //TODO: add javadoc @@ -36,9 +37,10 @@ public SettingsPage(@Nullable ActionListener actionListener) { //TODO: add javadoc @Override - public @Nullable List initialCentralComponents(@Nullable ActionListener actionListener) { - return new ArrayList<>() {{ - add(new SimpleLabel("Settings page", Color.white)); - }}; + public @NotNull Component getPageBody() { + JPanel body = (JPanel) super.getPageBody(); + body.add(new SimpleLabel("Settings page", Color.white), BorderLayout.NORTH); + //Add parts here + return body; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java index f460c32..10f833c 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java @@ -1,13 +1,13 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.startingPage; +import graphicsEngine.panels.PanelColors; import graphicsEngine.parts.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; import java.util.List; -import java.util.ArrayList; -import java.awt.Color; -import java.awt.Component; +import java.awt.*; import java.awt.event.ActionListener; +import javax.swing.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -15,12 +15,13 @@ //TODO: finish this and add javadoc public class StartingPage extends AbstractMenuPage { private StartingPage() { - this(null); + this(null, null); } //TODO: add javadoc - public StartingPage(@Nullable ActionListener actionListener) { - super(actionListener); + public StartingPage(@Nullable List actionListenerList, + @Nullable PanelColors panelColors) { + super(actionListenerList, panelColors); } //TODO: add javadoc @@ -36,9 +37,10 @@ public StartingPage(@Nullable ActionListener actionListener) { //TODO: add javadoc @Override - public @Nullable List initialCentralComponents(@Nullable ActionListener actionListener) { - return new ArrayList<>() {{ - add(new SimpleLabel("Starting page", Color.white)); - }}; + public @NotNull Component getPageBody() { + JPanel body = (JPanel) super.getPageBody(); + body.add(new SimpleLabel("Starting page", Color.white), BorderLayout.NORTH); + //Add parts here + return body; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/ButtonActions.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/ButtonActions.java deleted file mode 100644 index 3eec7c8..0000000 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/ButtonActions.java +++ /dev/null @@ -1,48 +0,0 @@ -package graphicsEngineDemo.d5_featurePreview.window; - -import graphicsEngineDemo.d5_featurePreview.common.CommonHeaderButtons; -import graphicsEngineDemo.d5_featurePreview.menuPages.startingPage.StartingPage; -import graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage.SettingsPage; -import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectPage; -import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectButtons; -import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; -import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; - -import java.awt.event.ActionEvent; - -import org.jetbrains.annotations.NotNull; - -//TODO: add javadoc -public class ButtonActions { - //TODO: add javadoc - public static boolean headerButtonActions(@NotNull ActionEvent e, - @NotNull WindowUtilities window) { - switch (e.getActionCommand()) { - case CommonHeaderButtons.Button_Start.ACTION_COMMAND -> - window.setActivePage(StartingPage.getStaticPageKey()); - case CommonHeaderButtons.Button_Settings.ACTION_COMMAND -> - window.setActivePage(SettingsPage.getStaticPageKey()); - case CommonHeaderButtons.Button_DemoSelect.ACTION_COMMAND -> - window.setActivePage(DemoSelectPage.getStaticPageKey()); - default -> { - return false; - } - } - return true; - } - - //TODO: add javadoc - public static boolean demoSelectButtonActions(@NotNull ActionEvent e, - @NotNull WindowUtilities window) { - switch (e.getActionCommand()) { - case DemoSelectButtons.Button_Page1.ACTION_COMMAND -> - window.setActivePage(Page1.getStaticPageKey()); - case DemoSelectButtons.Button_Page2.ACTION_COMMAND -> - window.setActivePage(Page2.getStaticPageKey()); - default -> { - return false; - } - } - return true; - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java index 5f922ed..6884342 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java @@ -2,17 +2,20 @@ import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.AbstractPage; +import graphicsEngineDemo.d5_featurePreview.common.header.HeaderButtonListener; +import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectButtonListener; import graphicsEngineDemo.d5_featurePreview.menuPages.startingPage.StartingPage; import graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage.SettingsPage; import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectPage; import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; +import graphicsEngineDemo.d5_featurePreview.demoPages.Page3; import java.util.List; import java.util.ArrayList; -import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import static graphicsEngineDemo.d5_featurePreview.common.CommonColors.HEADER_AND_FOOTER_COLORS; import static graphicsEngine.Utilities.getSampleIcon; import org.jetbrains.annotations.NotNull; @@ -29,25 +32,32 @@ public Window(@NotNull WindowManager windowManager) { //TODO: add javadoc @Override public @NotNull List getInitialPages() { - ActionListener actionListener = this; return new ArrayList<>() {{ - add(new StartingPage(actionListener)); - add(new SettingsPage(actionListener)); - add(new DemoSelectPage(actionListener)); - add(new Page1(actionListener)); - add(new Page2(actionListener)); + add(new StartingPage(getHeaderListener(), HEADER_AND_FOOTER_COLORS)); + add(new SettingsPage(getHeaderListener(), HEADER_AND_FOOTER_COLORS)); + add(new DemoSelectPage(getDemoSelectListeners(), HEADER_AND_FOOTER_COLORS)); + add(new Page1(getHeaderListener(), HEADER_AND_FOOTER_COLORS)); + add(new Page2(getHeaderListener(), HEADER_AND_FOOTER_COLORS)); + add(new Page3(getDemoPage3Listeners(), HEADER_AND_FOOTER_COLORS)); }}; } - //TODO: add javadoc - @Override - public final boolean headerButtonActionCheck(ActionEvent e) { - return ButtonActions.headerButtonActions(e, this); + private @NotNull List getHeaderListener() { + Window window = this; + return new ArrayList<>() {{ + add(new HeaderButtonListener(window)); + }}; } - //TODO: add javadoc - @Override - public final boolean demoSelectButtonActionCheck(ActionEvent e) { - return ButtonActions.demoSelectButtonActions(e, this); + private @NotNull List getDemoSelectListeners() { + List listeners = getHeaderListener(); + listeners.add(new DemoSelectButtonListener(this)); + return listeners; + } + + private @NotNull List getDemoPage3Listeners() { + List listeners = getHeaderListener(); + //TODO: add custom listener here + return listeners; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/WindowUtilities.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/WindowUtilities.java index 693f7c9..2ec1778 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/WindowUtilities.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/WindowUtilities.java @@ -4,18 +4,14 @@ import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.windowTypes.MultiPageWindow; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - import org.jetbrains.annotations.NotNull; -import static consoleUtils.ConsoleUtils.printLine; - //TODO: add javadoc -abstract class WindowUtilities extends MultiPageWindow implements ActionListener { +abstract class WindowUtilities extends MultiPageWindow { + //TODO: add javadoc public WindowUtilities(@NotNull WindowManager windowManager) { - super(windowManager, config(), null); + super(windowManager, config(), null, null); } /** @@ -38,22 +34,4 @@ public WindowUtilities(@NotNull WindowManager windowManager) { public @NotNull String getWindowKey() { return "window"; } - - /** - * Invoked when an action occurs. - * - * @param e the event to be processed - */ - @Override - public void actionPerformed(ActionEvent e) { - if (headerButtonActionCheck(e)) return; - if (demoSelectButtonActionCheck(e)) return; - printLine("A button has been pressed but no action set up"); - } - - //TODO: add javadoc - public abstract boolean headerButtonActionCheck(ActionEvent e); - - //TODO: add javadoc - public abstract boolean demoSelectButtonActionCheck(ActionEvent e); } \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java index c2c5f58..ab300b7 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java +++ b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java @@ -15,7 +15,7 @@ public class ControlWindow extends AbstractWindow { public ControlWindow(@NotNull WindowManager windowManager) { - super(windowManager, config()); + super(windowManager, config(), null); } private static WindowConfig config() { diff --git a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java index e5d5531..68db8ff 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java +++ b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java @@ -17,7 +17,7 @@ public class ViewWindow extends AbstractWindow { private static final int[] WINDOW_MINIMUM_SIZE = new int[] {700, 400}; public ViewWindow(@NotNull WindowManager windowManager) { - super(windowManager, config()); + super(windowManager, config(), null); int[] correctedMinimumSize = AbstractWindow.correctWindowsSizeError(WINDOW_MINIMUM_SIZE); setMinimumSize(new Dimension(correctedMinimumSize[0], correctedMinimumSize[1])); } From 4e0f1c5b6a9635c0496ac4c9693a2cfa4a486e13 Mon Sep 17 00:00:00 2001 From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com> Date: Fri, 30 Sep 2022 13:19:18 +0300 Subject: [PATCH 08/11] 0.8.11 * color schemes * border properties * static and dynamic panels * data preparations for checkbox * refactoring * sandbox fix * cleanup --- pom.xml | 2 +- src/main/java/graphicsEngine/Utilities.java | 24 ----- .../colors/AbstractColorScheme.java | 43 +++++++++ .../graphicsEngine/colors/ColorUtilities.java | 25 +++++ .../java/graphicsEngine/colors/Palette.java | 53 ++++++++++ .../colors/SimpleColorScheme.java | 37 +++++++ .../panels/BorderInterface.java | 26 +++++ .../panels/BorderProperties.java | 42 ++++++++ .../graphicsEngine/panels/DynamicPanel.java | 40 ++++++++ .../graphicsEngine/panels/PanelColors.java | 31 ------ .../graphicsEngine/panels/SimplePanel.java | 60 +++++++++--- .../graphicsEngine/panels/StaticPanel.java | 35 +++++++ .../graphicsEngine/parts/SimpleLabel.java | 9 +- .../presets/HeaderAndFooterPage.java | 33 +++---- .../graphicsEngine/presets/SimpleOverlay.java | 23 +++-- .../presets/panels/AbstractFooter.java | 12 ++- .../presets/panels/AbstractHeader.java | 12 ++- .../presets/panels/HorizontalPanel.java | 23 +++-- .../presets/panels/VerticalPanel.java | 23 +++-- .../graphicsEngine/windows/AbstractPage.java | 14 ++- .../windowTypes/AbstractLayeredWindow.java | 12 ++- .../windows/windowTypes/MultiPageWindow.java | 14 ++- .../windows/windowTypes/SinglePageWindow.java | 15 ++- .../d2_overlayDemo/Page.java | 36 ++++--- .../pages/AbstractCommonPage.java | 24 ++--- .../d3_twoPageDemo/parts/CommonFooter.java | 11 +-- .../d3_twoPageDemo/parts/CommonHeader.java | 11 +-- .../common/AbstractCommonPage.java | 41 +++++--- .../common/AbstractMenuPage.java | 21 ++-- .../common/CommonColors.java | 14 ++- .../common/CommonFooter.java | 8 +- .../common/header/CommonHeader.java | 8 +- .../demoPages/CommonDemoPage.java | 8 +- .../d5_featurePreview/demoPages/Page1.java | 30 +++--- .../d5_featurePreview/demoPages/Page2.java | 39 +++++--- .../d5_featurePreview/demoPages/Page3.java | 96 ------------------- .../demoPages/PageWithPanel.java | 55 ++++++----- .../demoPages/page3/Center.java | 61 ++++++++++++ .../demoPages/page3/Page3.java | 63 ++++++++++++ .../demoPages/page3/SidePanel.java | 22 +++++ .../demoPages/page3/data/Data.java | 29 ++++++ .../demoPages/page3/data/DataUpdater.java | 36 +++++++ .../DemoSelectButtonListener.java | 2 +- .../demoSelectPage/DemoSelectPage.java | 10 +- .../menuPages/settingsPage/SettingsPage.java | 6 +- .../menuPages/startingPage/StartingPage.java | 6 +- .../d5_featurePreview/window/Window.java | 2 +- .../graphics/controlWindow/ControlWindow.java | 28 ++++-- .../graphics/controlWindow/Footer.java | 27 +++--- .../leftPanel/AbstractSubPanel.java | 17 ++-- .../controlWindow/leftPanel/LeftPanel.java | 30 +++--- .../controlWindow/leftPanel/SubPanel1.java | 16 ++-- .../controlWindow/leftPanel/SubPanel2.java | 17 ++-- .../controlWindow/leftPanel/TextLabel.java | 15 +-- .../graphics/viewWinow/ViewWindow.java | 14 +-- .../viewWinow/mainPanels/LeftSidePanel.java | 25 ++--- .../viewWinow/mainPanels/RightSidePanel.java | 25 ++--- .../mainPanels/center/CenterContainer.java | 25 +++-- .../mainPanels/center/CentralSquare.java | 54 ++++++----- 59 files changed, 1032 insertions(+), 508 deletions(-) create mode 100644 src/main/java/graphicsEngine/colors/AbstractColorScheme.java create mode 100644 src/main/java/graphicsEngine/colors/ColorUtilities.java create mode 100644 src/main/java/graphicsEngine/colors/Palette.java create mode 100644 src/main/java/graphicsEngine/colors/SimpleColorScheme.java create mode 100644 src/main/java/graphicsEngine/panels/BorderInterface.java create mode 100644 src/main/java/graphicsEngine/panels/BorderProperties.java create mode 100644 src/main/java/graphicsEngine/panels/DynamicPanel.java delete mode 100644 src/main/java/graphicsEngine/panels/PanelColors.java create mode 100644 src/main/java/graphicsEngine/panels/StaticPanel.java delete mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page3.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Center.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Page3.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/SidePanel.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/data/Data.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/data/DataUpdater.java diff --git a/pom.xml b/pom.xml index a7304e8..2794cb7 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.KruMF GraphicsEngine - 0.8.10 + 0.8.11 UTF-8 diff --git a/src/main/java/graphicsEngine/Utilities.java b/src/main/java/graphicsEngine/Utilities.java index 94b7361..29051c4 100644 --- a/src/main/java/graphicsEngine/Utilities.java +++ b/src/main/java/graphicsEngine/Utilities.java @@ -1,13 +1,7 @@ package graphicsEngine; -import java.awt.Color; import javax.swing.ImageIcon; -import javax.swing.JComponent; -import javax.swing.border.LineBorder; -import java.util.Objects; - -import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.NotNull; /** @@ -27,22 +21,4 @@ public class Utilities { private static @NotNull String getFulResourcePath(@NotNull String relative) { return RESOURCES_PATH + relative; } - - /** - * Transparent, non-null color. - */ - public static final Color EMPTY_COLOR = new Color(0, 0, 0, 0); - - // TODO: add javadoc - public interface BorderInterface { - Color DEFAULT_BORDER_COLOR = Color.red; - - static void setBorderState(@NotNull JComponent component, boolean state, @Nullable Color color) { - if (state) { - component.setBorder(new LineBorder(Objects.requireNonNullElse(color, DEFAULT_BORDER_COLOR))); - } else { - component.setBorder(null); - } - } - } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/colors/AbstractColorScheme.java b/src/main/java/graphicsEngine/colors/AbstractColorScheme.java new file mode 100644 index 0000000..08681f1 --- /dev/null +++ b/src/main/java/graphicsEngine/colors/AbstractColorScheme.java @@ -0,0 +1,43 @@ +package graphicsEngine.colors; + +import java.util.Objects; +import java.awt.Color; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public abstract class AbstractColorScheme { + private Color baseColor; + + //TODO: add javadoc + protected AbstractColorScheme() { + this(ColorUtilities.DEFAULT_OPACITY); + } + + //TODO: add javadoc + protected AbstractColorScheme(boolean opaque) { + this(ColorUtilities.defaultColorByOpacity(opaque)); + } + + //TODO: add javadoc + protected AbstractColorScheme(@Nullable Color base) { + setBaseColor(base); + } + + //TODO: add javadoc + public void setBaseColor(@Nullable Color color) { + baseColor = nonNullBaseColor(color); + } + + private static @NotNull Color nonNullBaseColor(@Nullable Color base) { + return Objects.requireNonNullElse( + base, + ColorUtilities.defaultColorForUnknownOpacity()); + } + + //TODO: add javadoc + public @NotNull Color getBaseColor() { + return baseColor; + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/colors/ColorUtilities.java b/src/main/java/graphicsEngine/colors/ColorUtilities.java new file mode 100644 index 0000000..49dd2fe --- /dev/null +++ b/src/main/java/graphicsEngine/colors/ColorUtilities.java @@ -0,0 +1,25 @@ +package graphicsEngine.colors; + +import java.awt.Color; + +import org.jetbrains.annotations.NotNull; + +public class ColorUtilities { + public static final @NotNull Color + DEFAULT_COLOR_TRANSPARENT = new Color(0, 0, 0, 0), + DEFAULT_COLOR_OPAQUE = Color.black; + + protected static final boolean DEFAULT_OPACITY = true; + + public static @NotNull Color defaultColorByOpacity(boolean opaque) { + if (opaque) { + return ColorUtilities.DEFAULT_COLOR_OPAQUE; + } else { + return ColorUtilities.DEFAULT_COLOR_TRANSPARENT; + } + } + + protected static @NotNull Color defaultColorForUnknownOpacity() { + return defaultColorByOpacity(DEFAULT_OPACITY); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/colors/Palette.java b/src/main/java/graphicsEngine/colors/Palette.java new file mode 100644 index 0000000..2a7d927 --- /dev/null +++ b/src/main/java/graphicsEngine/colors/Palette.java @@ -0,0 +1,53 @@ +package graphicsEngine.colors; + +import java.util.Map; +import java.util.HashMap; +import java.util.Objects; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public class Palette { + private static final AbstractColorScheme NON_NULL_PRIMARY = new SimpleColorScheme(); + + private AbstractColorScheme primary; + private Map schemes; + + //TODO: add javadoc + public Palette() { + this(null); + } + + //TODO: add javadoc + public Palette(@Nullable AbstractColorScheme primary) { + this(primary, null); + } + + //TODO: add javadoc + public Palette(@Nullable AbstractColorScheme primary, + @Nullable Map schemes) { + setPrimary(primary); + setSchemes(schemes); + } + + //TODO: add javadoc + public void setPrimary(@Nullable AbstractColorScheme primary) { + this.primary = Objects.requireNonNullElse(primary, NON_NULL_PRIMARY); + } + + //TODO: add javadoc + public @NotNull AbstractColorScheme getPrimary() { + return primary; + } + + //TODO: add javadoc + public void setSchemes(@Nullable Map schemes) { + this.schemes = Objects.requireNonNullElse(schemes, new HashMap<>()); + } + + //TODO: add javadoc + public @NotNull Map getSchemes() { + return schemes; + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/colors/SimpleColorScheme.java b/src/main/java/graphicsEngine/colors/SimpleColorScheme.java new file mode 100644 index 0000000..60ed974 --- /dev/null +++ b/src/main/java/graphicsEngine/colors/SimpleColorScheme.java @@ -0,0 +1,37 @@ +package graphicsEngine.colors; + +import java.util.Objects; +import java.awt.Color; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +//TODO: finish this and add javadoc +public class SimpleColorScheme extends AbstractColorScheme { + private static final Color DEFAULT_SECONDARY_COLOR = Color.white; + private Color secondaryColor; + + //TODO: add javadoc + //default colors + public SimpleColorScheme() { + this(null, null); + } + + //TODO: add javadoc + //custom colors + public SimpleColorScheme(@Nullable Color base, + @Nullable Color secondary) { + super(base); + setSecondaryColor(secondary); + } + + //TODO: add javadoc + public void setSecondaryColor(@Nullable Color color) { + secondaryColor = Objects.requireNonNullElse(color, DEFAULT_SECONDARY_COLOR); + } + + //TODO: add javadoc + public @NotNull Color getSecondaryColor() { + return secondaryColor; + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/panels/BorderInterface.java b/src/main/java/graphicsEngine/panels/BorderInterface.java new file mode 100644 index 0000000..ef2b94a --- /dev/null +++ b/src/main/java/graphicsEngine/panels/BorderInterface.java @@ -0,0 +1,26 @@ +package graphicsEngine.panels; + +import java.util.Objects; +import java.awt.Color; +import javax.swing.JComponent; +import javax.swing.border.LineBorder; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public interface BorderInterface { + Color DEFAULT_BORDER_COLOR = Color.red; + boolean DEFAULT_BORDER_STATE = false; + + static void setComponentBorderState(@NotNull JComponent component, + @Nullable Color color, + boolean state) { + if (state) { + component.setBorder(new LineBorder(Objects.requireNonNullElse( + color, + DEFAULT_BORDER_COLOR))); + } else { + component.setBorder(null); + } + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/panels/BorderProperties.java b/src/main/java/graphicsEngine/panels/BorderProperties.java new file mode 100644 index 0000000..208fc06 --- /dev/null +++ b/src/main/java/graphicsEngine/panels/BorderProperties.java @@ -0,0 +1,42 @@ +package graphicsEngine.panels; + +import java.awt.Color; +import java.util.Objects; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class BorderProperties implements BorderInterface { + private @NotNull Color borderColor = DEFAULT_BORDER_COLOR; + private boolean drawBorders = DEFAULT_BORDER_STATE; + + public BorderProperties() { + this(null, DEFAULT_BORDER_STATE); + } + + public BorderProperties(@Nullable Color color, + boolean drawBorders) { + setBorderColor(color); + setBorderState(drawBorders); + } + + public void setBorderColor(@Nullable Color color) { + borderColor = Objects.requireNonNullElse(color, DEFAULT_BORDER_COLOR); + } + + public @NotNull Color getBorderColor() { + return borderColor; + } + + public void setBorderState(boolean drawBorders) { + this.drawBorders = drawBorders; + } + + public void toggleBorderState() { + drawBorders = !drawBorders; + } + + public boolean getBorderState() { + return drawBorders; + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/panels/DynamicPanel.java b/src/main/java/graphicsEngine/panels/DynamicPanel.java new file mode 100644 index 0000000..d5ee888 --- /dev/null +++ b/src/main/java/graphicsEngine/panels/DynamicPanel.java @@ -0,0 +1,40 @@ +package graphicsEngine.panels; + +import graphicsEngine.colors.SimpleColorScheme; + +import java.awt.Component; +import java.awt.Dimension; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public class DynamicPanel extends SimplePanel { + + //auto-stretching panel + //TODO: add javadoc + public DynamicPanel(@Nullable SimpleColorScheme colors) { + this(null, colors, null); + } + + //custom size and border state + //TODO: add javadoc + public DynamicPanel(@Nullable Dimension sizeLimits, + @Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + super(sizeLimits, colors, borderProperties); + } + + //repaints all children + //TODO: add javadoc + @Override + public void repaint() { + Component[] components = getComponents(); + for (Component component : components) { + component.repaint(); + } + super.repaint(); + } + + //TODO: add javadoc + public void addParts() {} +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/panels/PanelColors.java b/src/main/java/graphicsEngine/panels/PanelColors.java deleted file mode 100644 index 4119993..0000000 --- a/src/main/java/graphicsEngine/panels/PanelColors.java +++ /dev/null @@ -1,31 +0,0 @@ -package graphicsEngine.panels; - -import java.util.Objects; -import java.awt.Color; - -import org.jetbrains.annotations.Nullable; - -//TODO: add javadoc -public class PanelColors { - //TODO: make private and use getters - public Color background, text, border; - - private static final Color - DEFAULT_COLOR_BACKGROUND = new Color(204, 204, 204),//Color.lightGray, - DEFAULT_COLOR_TEXT = Color.darkGray, - DEFAULT_COLOR_BORDER = Color.red; - - //TODO: add javadoc - public PanelColors() { - this(null, null, null); - } - - //TODO: add javadoc - public PanelColors(@Nullable Color background, - @Nullable Color text, - @Nullable Color border) { - this.background = Objects.requireNonNullElse(background, DEFAULT_COLOR_BACKGROUND); - this.text = Objects.requireNonNullElse(text, DEFAULT_COLOR_TEXT); - this.border = Objects.requireNonNullElse(border, DEFAULT_COLOR_BORDER); - } -} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/panels/SimplePanel.java b/src/main/java/graphicsEngine/panels/SimplePanel.java index 63ef1c4..aaa5b16 100644 --- a/src/main/java/graphicsEngine/panels/SimplePanel.java +++ b/src/main/java/graphicsEngine/panels/SimplePanel.java @@ -1,45 +1,77 @@ package graphicsEngine.panels; -import graphicsEngine.Utilities; +import graphicsEngine.colors.SimpleColorScheme; import java.util.Objects; +import java.awt.Dimension; import javax.swing.JPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadoc -public abstract class SimplePanel extends JPanel { - private PanelColors colors; +abstract class SimplePanel extends JPanel { + private @NotNull SimpleColorScheme colors = new SimpleColorScheme(); + private @NotNull BorderProperties borderProperties = new BorderProperties(); + //custom size and border state //TODO: add javadoc - protected SimplePanel(@Nullable PanelColors panelColors, boolean border) { + protected SimplePanel(@Nullable Dimension sizeLimits, + @Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { super(); - setPanelColors(panelColors); - resetBackground(); - setBorderState(border); + setSizeLimits(sizeLimits); // null - auto-stretching + setPanelColors(colors); // null - default colors + setBorderProperties(borderProperties); // null - default border, with default state + addParts(); + } + + private void setSizeLimits(@Nullable Dimension size) { + setPreferredSize(size); } //TODO: add javadoc - public final void setPanelColors(@Nullable PanelColors colors) { - this.colors = Objects.requireNonNullElse(colors, new PanelColors()); + public final void setPanelColors(@Nullable SimpleColorScheme colors) { + this.colors = Objects.requireNonNullElse(colors, new SimpleColorScheme()); + resetBackground(); } //TODO: add javadoc - public final @NotNull PanelColors getPanelColors() { + public final @NotNull SimpleColorScheme getPanelColors() { return colors; } //TODO: add javadoc public void resetBackground() { - setBackground(colors.background); + setBackground(colors.getBaseColor()); + } + + private void setBorderProperties(BorderProperties properties) { + borderProperties = Objects.requireNonNullElse( + properties, + new BorderProperties()); + setComponentBorderState(); } //TODO: add javadoc public void setBorderState(boolean state) { - Utilities.BorderInterface.setBorderState( + borderProperties.setBorderState(state); + setComponentBorderState(); + } + + //TODO: add javadoc + public void toggleBorderState() { + borderProperties.toggleBorderState(); + setComponentBorderState(); + } + + private void setComponentBorderState() { + BorderInterface.setComponentBorderState( this, - state, - getPanelColors().border); + borderProperties.getBorderColor(), + borderProperties.getBorderState()); } + + //TODO: add javadoc + public abstract void addParts(); } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/panels/StaticPanel.java b/src/main/java/graphicsEngine/panels/StaticPanel.java new file mode 100644 index 0000000..0ab6c47 --- /dev/null +++ b/src/main/java/graphicsEngine/panels/StaticPanel.java @@ -0,0 +1,35 @@ +package graphicsEngine.panels; + +import graphicsEngine.colors.SimpleColorScheme; + +import java.awt.Dimension; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public class StaticPanel extends SimplePanel { + + //auto-stretching panel + //TODO: add javadoc + public StaticPanel(@Nullable SimpleColorScheme colors) { + this(null, colors, null); + } + + //custom size and border state + //TODO: add javadoc + public StaticPanel(@Nullable Dimension sizeLimits, + @Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + super(sizeLimits, colors, borderProperties); + } + + //doesn't repaint children + //TODO: add javadoc + @Override + public void repaint() { + super.repaint(); + } + + //TODO: add javadoc + public void addParts() {} +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/parts/SimpleLabel.java b/src/main/java/graphicsEngine/parts/SimpleLabel.java index 95f5048..0333fd4 100644 --- a/src/main/java/graphicsEngine/parts/SimpleLabel.java +++ b/src/main/java/graphicsEngine/parts/SimpleLabel.java @@ -1,18 +1,19 @@ package graphicsEngine.parts; +import graphicsEngine.colors.ColorUtilities; + import java.util.Objects; import java.awt.Component; import java.awt.Color; import javax.swing.JLabel; -import graphicsEngine.Utilities; import org.jetbrains.annotations.Nullable; //A simple JLabel with most commonly used functions //TODO: add javadocs public class SimpleLabel extends JLabel { private static final String DEFAULT_TEXT = "A label"; - private static final Color DEFAULT_COLOR = Color.black; + private static final Color DEFAULT_COLOR = ColorUtilities.DEFAULT_COLOR_OPAQUE; //TODO: add javadoc public SimpleLabel(@Nullable String text, @Nullable Color textColor) { @@ -44,6 +45,8 @@ public void setTextColor(@Nullable Color color) { //TODO: add javadoc @Override public void setBackground(@Nullable Color background) { - super.setBackground(Objects.requireNonNullElse(background, Utilities.EMPTY_COLOR)); + super.setBackground(Objects.requireNonNullElse( + background, + ColorUtilities.DEFAULT_COLOR_TRANSPARENT)); } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java b/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java index 25bf43f..8fb939f 100644 --- a/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java +++ b/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java @@ -1,17 +1,16 @@ package graphicsEngine.presets; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; import graphicsEngine.windows.AbstractPage; -import graphicsEngine.panels.PanelColors; import graphicsEngine.presets.panels.AbstractFooter; import graphicsEngine.presets.panels.AbstractHeader; -import java.awt.*; import java.util.List; -import java.util.ArrayList; -import java.util.Objects; +import java.awt.Color; +import java.awt.BorderLayout; import java.awt.event.ActionListener; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadoc @@ -19,30 +18,32 @@ public abstract class HeaderAndFooterPage extends AbstractPage { //TODO: add javadoc public HeaderAndFooterPage(@Nullable List actionListenerList, @Nullable Color backgroundColor, - @Nullable PanelColors headerAndFooterColors) { + @Nullable SimpleColorScheme headerAndFooterColors, + @Nullable BorderProperties borderProperties) { super(actionListenerList, backgroundColor); setLayout(new BorderLayout(0, 0)); - addHeaderAndFooter(headerAndFooterColors); - addParts(); + addHeaderAndFooter(headerAndFooterColors, borderProperties); } - private void addHeaderAndFooter(@Nullable PanelColors headerAndFooterColors) { - AbstractHeader header = getHeader(headerAndFooterColors); + private void addHeaderAndFooter(@Nullable SimpleColorScheme headerAndFooterColors, + @Nullable BorderProperties borderProperties) { + AbstractHeader header = getHeader(headerAndFooterColors, borderProperties); if (header != null) { add(header, BorderLayout.NORTH); } - AbstractFooter footer = getFooter(headerAndFooterColors); + AbstractFooter footer = getFooter(headerAndFooterColors, borderProperties); if (footer != null) { add(footer, BorderLayout.SOUTH); } } //TODO: add javadoc - public abstract @Nullable AbstractHeader getHeader(@Nullable PanelColors headerColors); + public abstract @Nullable AbstractHeader getHeader( + @Nullable SimpleColorScheme headerColors, + @Nullable BorderProperties borderProperties); //TODO: add javadoc - public abstract @Nullable AbstractFooter getFooter(@Nullable PanelColors footerColors); - - //TODO: add javadoc - public abstract void addParts(); + public abstract @Nullable AbstractFooter getFooter( + @Nullable SimpleColorScheme footerColors, + @Nullable BorderProperties borderProperties); } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/SimpleOverlay.java b/src/main/java/graphicsEngine/presets/SimpleOverlay.java index a9449ac..bde9f2a 100644 --- a/src/main/java/graphicsEngine/presets/SimpleOverlay.java +++ b/src/main/java/graphicsEngine/presets/SimpleOverlay.java @@ -1,21 +1,31 @@ package graphicsEngine.presets; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.StaticPanel; + import java.util.Objects; import java.awt.Color; import java.awt.Graphics; -import javax.swing.JPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadocs -public class SimpleOverlay extends JPanel { +public class SimpleOverlay extends StaticPanel { private static final Color DEFAULT_COLOR = new Color(0, 0, 0, 100); - private Color color; + //TODO: add javadoc public SimpleOverlay(@Nullable Color color) { + super(null, getNewPanelColors(color), null); setOpaque(false); - setColor(color); + } + + private static SimpleColorScheme getNewPanelColors(@Nullable Color color) { + return new SimpleColorScheme(getNonNullBackgroundColor(color), null); + } + + private static Color getNonNullBackgroundColor(@Nullable Color color) { + return Objects.requireNonNullElse(color, DEFAULT_COLOR); } /** @@ -24,9 +34,10 @@ public SimpleOverlay(@Nullable Color color) { * @param color New color. */ public void setColor(@Nullable Color color) { - this.color = Objects.requireNonNullElse(color, DEFAULT_COLOR); + setPanelColors(getNewPanelColors(color)); } + //TODO: add javadocs @Override protected void paintComponent(Graphics g) { super.paintComponent(g); @@ -34,7 +45,7 @@ protected void paintComponent(Graphics g) { } private void fillBackground(@NotNull Graphics g) { - g.setColor(color); + g.setColor(getPanelColors().getBaseColor()); g.fillRect(0, 0, this.getWidth(), this.getHeight()); } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/panels/AbstractFooter.java b/src/main/java/graphicsEngine/presets/panels/AbstractFooter.java index 5abbc65..1095797 100644 --- a/src/main/java/graphicsEngine/presets/panels/AbstractFooter.java +++ b/src/main/java/graphicsEngine/presets/panels/AbstractFooter.java @@ -1,12 +1,16 @@ package graphicsEngine.presets.panels; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; import org.jetbrains.annotations.Nullable; +//TODO: add javadoc public abstract class AbstractFooter extends HorizontalPanel { - public AbstractFooter(@Nullable PanelColors panelColors, - int height) { - super(panelColors, height); + //TODO: add javadoc + public AbstractFooter(@Nullable SimpleColorScheme panelColors, + int height, + @Nullable BorderProperties borderProperties) { + super(panelColors, height, borderProperties); } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/panels/AbstractHeader.java b/src/main/java/graphicsEngine/presets/panels/AbstractHeader.java index ffb458b..a7dec23 100644 --- a/src/main/java/graphicsEngine/presets/panels/AbstractHeader.java +++ b/src/main/java/graphicsEngine/presets/panels/AbstractHeader.java @@ -1,12 +1,16 @@ package graphicsEngine.presets.panels; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; import org.jetbrains.annotations.Nullable; +//TODO: add javadoc public abstract class AbstractHeader extends HorizontalPanel { - public AbstractHeader(@Nullable PanelColors panelColors, - int height) { - super(panelColors, height); + //TODO: add javadoc + public AbstractHeader(@Nullable SimpleColorScheme panelColors, + int height, + @Nullable BorderProperties borderProperties) { + super(panelColors, height, borderProperties); } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java b/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java index 198652c..453ff36 100644 --- a/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java +++ b/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java @@ -1,23 +1,22 @@ package graphicsEngine.presets.panels; -import graphicsEngine.panels.PanelColors; -import graphicsEngine.panels.SimplePanel; +import graphicsEngine.panels.StaticPanel; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; import java.awt.Dimension; import org.jetbrains.annotations.Nullable; //TODO: add javadoc -public abstract class HorizontalPanel extends SimplePanel { +public abstract class HorizontalPanel extends StaticPanel { //TODO: add javadoc - public HorizontalPanel(@Nullable PanelColors panelColors, int height) { - super(panelColors, false); - setPreferredSize(new Dimension( - Integer.MAX_VALUE, - height)); - addParts(); + public HorizontalPanel(@Nullable SimpleColorScheme colors, + int height, + @Nullable BorderProperties borderProperties) { + super( + new Dimension(Integer.MAX_VALUE, height), + colors, + borderProperties); } - - //TODO: add javadoc - public abstract void addParts(); } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/panels/VerticalPanel.java b/src/main/java/graphicsEngine/presets/panels/VerticalPanel.java index bfc5391..75e3727 100644 --- a/src/main/java/graphicsEngine/presets/panels/VerticalPanel.java +++ b/src/main/java/graphicsEngine/presets/panels/VerticalPanel.java @@ -1,23 +1,22 @@ package graphicsEngine.presets.panels; -import graphicsEngine.panels.PanelColors; -import graphicsEngine.panels.SimplePanel; +import graphicsEngine.panels.StaticPanel; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; import java.awt.Dimension; import org.jetbrains.annotations.Nullable; //TODO: add javadoc -public abstract class VerticalPanel extends SimplePanel { +public abstract class VerticalPanel extends StaticPanel { //TODO: add javadoc - public VerticalPanel(@Nullable PanelColors panelColors, int width) { - super(panelColors, false); - setPreferredSize(new Dimension( - width, - Integer.MAX_VALUE)); - addParts(); + public VerticalPanel(@Nullable SimpleColorScheme colors, + int width, + @Nullable BorderProperties borderProperties) { + super( + new Dimension(width, Integer.MAX_VALUE), + colors, + borderProperties); } - - //TODO: add javadoc - public abstract void addParts(); } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/AbstractPage.java b/src/main/java/graphicsEngine/windows/AbstractPage.java index 6c655b7..78e0212 100644 --- a/src/main/java/graphicsEngine/windows/AbstractPage.java +++ b/src/main/java/graphicsEngine/windows/AbstractPage.java @@ -1,18 +1,19 @@ package graphicsEngine.windows; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.DynamicPanel; + +import java.util.Objects; import java.util.List; import java.util.ArrayList; -import java.util.Objects; import java.awt.Color; import java.awt.event.ActionListener; -import javax.swing.JPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadoc -public abstract class AbstractPage extends JPanel { - private static final Color DEFAULT_BACKGROUND = Color.black; +public abstract class AbstractPage extends DynamicPanel { //completely blank //TODO: add javadoc @@ -23,8 +24,11 @@ public AbstractPage() { //TODO: add javadoc public AbstractPage(@Nullable List actionListenerList, @Nullable Color backgroundColor) { + super( + null, + new SimpleColorScheme(backgroundColor, null), + null); addListeners(actionListenerList); - setBackground(Objects.requireNonNullElse(backgroundColor, DEFAULT_BACKGROUND)); } /** diff --git a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java index 4c0f02c..49d98f0 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java @@ -5,10 +5,10 @@ import graphicsEngine.windows.AbstractWindow; import graphicsEngine.presets.SimpleOverlay; -import java.awt.event.ActionListener; -import java.util.List; import java.util.Objects; +import java.util.List; import java.awt.Component; +import java.awt.event.ActionListener; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -82,4 +82,12 @@ public void toggleOverlay() { Component pane = getGlassPane(); pane.setVisible(!(pane.isVisible())); } + + @Override + public void repaint() { + try { + Objects.requireNonNull(getGlassPane()).repaint(); + } catch (NullPointerException ignored) {} + super.repaint(); + } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java index 4e6c53c..fa79567 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java @@ -5,17 +5,15 @@ import graphicsEngine.windows.AbstractPage; import graphicsEngine.presets.SimpleOverlay; -import java.awt.event.ActionListener; +import java.util.Objects; import java.util.List; import java.util.Map; import java.util.HashMap; -import java.util.Objects; +import java.awt.event.ActionListener; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import static consoleUtils.ConsoleUtils.printLine; - // TODO: finish this and add javadoc public abstract class MultiPageWindow extends AbstractLayeredWindow { private static final String EMPTY_KEY = ""; @@ -84,4 +82,12 @@ public final void addParts() { add(activePage); } } + + @Override + public void repaint() { + try { + Objects.requireNonNull(getActivePage()).repaint(); + } catch (NullPointerException ignored) {} + super.repaint(); + } } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java index 424c854..9b75dc3 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java @@ -5,12 +5,13 @@ import graphicsEngine.windows.AbstractPage; import graphicsEngine.presets.SimpleOverlay; +import java.util.Objects; +import java.util.List; +import java.awt.event.ActionListener; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.awt.event.ActionListener; -import java.util.List; - // TODO: finish this and add javadoc public abstract class SinglePageWindow extends AbstractLayeredWindow { //TODO: add javadoc @@ -29,4 +30,12 @@ public final void addParts() { //TODO: add javadoc public abstract AbstractPage getPage(); + + @Override + public void repaint() { + try { + Objects.requireNonNull(getContentPane()).repaint(); + } catch (NullPointerException ignored) {} + super.repaint(); + } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java index 0db894d..1d1f588 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java @@ -1,6 +1,7 @@ package graphicsEngineDemo.d2_overlayDemo; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; import graphicsEngine.presets.HeaderAndFooterPage; import graphicsEngine.presets.panels.AbstractHeader; import graphicsEngine.presets.panels.AbstractFooter; @@ -17,14 +18,14 @@ class Page extends HeaderAndFooterPage { private ButtonListener headerButtonListener; - protected Page(@Nullable PanelColors panelColors, + protected Page(@Nullable SimpleColorScheme panelColors, @Nullable ActionListener actionListener) { super(new ArrayList<>() { { add(actionListener); } }, null, - panelColors); + panelColors, null); } /** @@ -49,19 +50,18 @@ protected Page(@Nullable PanelColors panelColors, return remainder; } - @Override - public final void addParts() {} - //TODO: add javadoc @Override - public @NotNull AbstractHeader getHeader(@Nullable PanelColors headerColors) { - return new CommonHeader(headerColors, headerButtonListener); + public @NotNull AbstractHeader getHeader(@Nullable SimpleColorScheme headerColors, + @Nullable BorderProperties borderProperties) { + return new CommonHeader(headerColors, borderProperties, headerButtonListener); } //TODO: add javadoc @Override - public @NotNull AbstractFooter getFooter(@Nullable PanelColors footerColors) { - return new Footer(footerColors); + public @NotNull AbstractFooter getFooter(@Nullable SimpleColorScheme footerColors, + @Nullable BorderProperties borderProperties) { + return new Footer(footerColors, borderProperties); } @Override @@ -72,15 +72,13 @@ public String getPageKey() { private static class CommonHeader extends AbstractHeader { private static final int HEIGHT = 50; - public CommonHeader(@Nullable PanelColors panelColors, + public CommonHeader(@Nullable SimpleColorScheme panelColors, + @Nullable BorderProperties borderProperties, @Nullable ActionListener actionListener) { - super(panelColors, HEIGHT); + super(panelColors, HEIGHT, borderProperties); addButtons(actionListener); } - @Override - public final void addParts() {} - private void addButtons(@Nullable ActionListener actionListener) { setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); add(new ButtonListener.Button1(actionListener)); @@ -92,11 +90,9 @@ private void addButtons(@Nullable ActionListener actionListener) { private static class Footer extends AbstractFooter { private static final int HEIGHT = 100; - public Footer(@Nullable PanelColors panelColors) { - super(panelColors, HEIGHT); + public Footer(@Nullable SimpleColorScheme panelColors, + @Nullable BorderProperties borderProperties) { + super(panelColors, HEIGHT, borderProperties); } - - @Override - public final void addParts() {} } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java index b285283..b85cb85 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java @@ -1,7 +1,9 @@ package graphicsEngineDemo.d3_twoPageDemo.pages; +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; import graphicsEngine.parts.SimpleLabel; -import graphicsEngine.panels.PanelColors; import graphicsEngine.presets.HeaderAndFooterPage; import graphicsEngine.presets.panels.AbstractFooter; import graphicsEngine.presets.panels.AbstractHeader; @@ -25,7 +27,7 @@ abstract class AbstractCommonPage extends HeaderAndFooterPage { private ButtonListener headerButtonListener; private static final Color - DEFAULT_BACKGROUND = Color.black, + DEFAULT_BACKGROUND = ColorUtilities.DEFAULT_COLOR_OPAQUE, LABEL_TEXT_COLOR = new Color(30, 30, 150); private static final String DEFAULT_LABEL = "No label defined for this page"; private final String labelText; @@ -38,7 +40,7 @@ protected AbstractCommonPage(@Nullable ActionListener buttonListener, add(buttonListener); } }, - null, null); + null, null, null); this.labelText = Objects.requireNonNullElse(labelText, DEFAULT_LABEL); addCenterAndLabel(); } @@ -67,24 +69,22 @@ protected AbstractCommonPage(@Nullable ActionListener buttonListener, //TODO: add javadoc @Override - public @NotNull AbstractHeader getHeader(@Nullable PanelColors headerColors) { - return new CommonHeader(headerColors, headerButtonListener); + public @NotNull AbstractHeader getHeader(@Nullable SimpleColorScheme headerColors, + @Nullable BorderProperties borderProperties) { + return new CommonHeader(headerColors, borderProperties, headerButtonListener); } //TODO: add javadoc @Override - public @NotNull AbstractFooter getFooter(@Nullable PanelColors footerColors) { - return new CommonFooter(footerColors); + public @NotNull AbstractFooter getFooter(@Nullable SimpleColorScheme footerColors, + @Nullable BorderProperties borderProperties) { + return new CommonFooter(footerColors, borderProperties); } - //TODO: add javadoc - @Override - public void addParts() {} - private void addCenterAndLabel() { add(new JPanel() {{ setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); - setBackground(new Color(0,0,0,0)); + setBackground(ColorUtilities.DEFAULT_COLOR_TRANSPARENT); add(new SimpleLabel(labelText, LABEL_TEXT_COLOR)); }}); } diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java index 8cf378e..1fd5b7f 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java @@ -1,6 +1,7 @@ package graphicsEngineDemo.d3_twoPageDemo.parts; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; import graphicsEngine.presets.panels.AbstractFooter; import org.jetbrains.annotations.Nullable; @@ -9,10 +10,8 @@ public class CommonFooter extends AbstractFooter { private static final int HEIGHT = 100; - public CommonFooter(@Nullable PanelColors panelColors) { - super(panelColors, HEIGHT); + public CommonFooter(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + super(colors, HEIGHT, borderProperties); } - - @Override - public void addParts() {} } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java index a314109..a82c28f 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java @@ -1,6 +1,7 @@ package graphicsEngineDemo.d3_twoPageDemo.parts; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; import graphicsEngine.presets.panels.AbstractHeader; import javax.swing.BoxLayout; @@ -12,15 +13,13 @@ public class CommonHeader extends AbstractHeader { private static final int HEIGHT = 50; - public CommonHeader(@Nullable PanelColors panelColors, + public CommonHeader(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties, @Nullable ActionListener actionListener) { - super(panelColors, HEIGHT); + super(colors, HEIGHT, borderProperties); addButtons(actionListener); } - @Override - public void addParts() {} - private void addButtons(@Nullable ActionListener actionListener) { setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); add(new ButtonListener.Button1(actionListener)); diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java index 7aae05c..db04cf0 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java @@ -1,19 +1,21 @@ package graphicsEngineDemo.d5_featurePreview.common; -import graphicsEngine.Utilities; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.DynamicPanel; import graphicsEngine.presets.HeaderAndFooterPage; import graphicsEngine.presets.panels.AbstractHeader; import graphicsEngine.presets.panels.AbstractFooter; import graphicsEngineDemo.d5_featurePreview.common.header.CommonHeader; import graphicsEngineDemo.d5_featurePreview.common.header.HeaderButtonListener; -import java.util.List; import java.util.Objects; +import java.util.List; import java.awt.Component; import java.awt.BorderLayout; import java.awt.event.ActionListener; -import javax.swing.*; +import javax.swing.JPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -24,8 +26,8 @@ public abstract class AbstractCommonPage extends HeaderAndFooterPage { //TODO: add javadoc public AbstractCommonPage(@Nullable List actionListenerList, - @Nullable PanelColors panelColors) { - super(actionListenerList, null, panelColors); + @Nullable SimpleColorScheme colors) { + super(actionListenerList, null, colors, null); setBodyParameters(); addBody(getPageBody()); } @@ -54,14 +56,16 @@ public AbstractCommonPage(@Nullable List actionListenerList, //TODO: add javadoc @Override - public @NotNull AbstractHeader getHeader(@Nullable PanelColors headerColors) { - return new CommonHeader(headerColors, headerButtonListener); + public @NotNull AbstractHeader getHeader(@Nullable SimpleColorScheme headerColors, + @Nullable BorderProperties borderProperties) { + return new CommonHeader(headerColors, borderProperties, headerButtonListener); } //TODO: add javadoc @Override - public @NotNull AbstractFooter getFooter(@Nullable PanelColors footerColors) { - return new CommonFooter(footerColors); + public @NotNull AbstractFooter getFooter(@Nullable SimpleColorScheme footerColors, + @Nullable BorderProperties borderProperties) { + return new CommonFooter(footerColors, borderProperties); } //TODO: add javadoc @@ -72,11 +76,18 @@ public final void addParts() {} public abstract void setBodyParameters(); private void addBody(@Nullable Component center) { - add(new JPanel() {{ - setLayout(new BorderLayout(0, 0)); - setBackground(Utilities.EMPTY_COLOR); - add(Objects.requireNonNullElse(center, new JPanel()), BorderLayout.CENTER); - }}); + add(new DynamicPanel( + null, + new SimpleColorScheme( + ColorUtilities.DEFAULT_COLOR_TRANSPARENT, + null), + null) { + @Override + public void addParts() { + setLayout(new BorderLayout(0, 0)); + add(Objects.requireNonNullElse(center, new JPanel()), BorderLayout.CENTER); + } + }); } //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java index 1697f8b..eaa400d 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java @@ -1,13 +1,14 @@ package graphicsEngineDemo.d5_featurePreview.common; import graphicsEngine.Utilities; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.StaticPanel; import java.util.List; import java.awt.Component; import java.awt.BorderLayout; import java.awt.event.ActionListener; -import javax.swing.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -16,8 +17,8 @@ public abstract class AbstractMenuPage extends AbstractCommonPage { //TODO: add javadoc public AbstractMenuPage(@Nullable List actionListenerList, - @Nullable PanelColors panelColors) { - super(actionListenerList, panelColors); + @Nullable SimpleColorScheme colors) { + super(actionListenerList, colors); } //TODO: add javadoc @@ -29,9 +30,13 @@ public void setBodyParameters() { //TODO: add javadoc @Override public @NotNull Component getPageBody() { - return new JPanel() {{ - setLayout(new BorderLayout(0, 0)); - setBackground(Utilities.EMPTY_COLOR); - }}; + return new StaticPanel( + null, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), + null) { + { + setLayout(new BorderLayout(0, 0)); + } + }; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonColors.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonColors.java index 9a260b0..4cc16d5 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonColors.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonColors.java @@ -1,17 +1,15 @@ package graphicsEngineDemo.d5_featurePreview.common; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.SimpleColorScheme; import java.awt.Color; public class CommonColors { - public static final PanelColors - HEADER_AND_FOOTER_COLORS = new PanelColors( - null,//Color.cyan, - null, + public static final SimpleColorScheme + HEADER_AND_FOOTER_COLORS = new SimpleColorScheme( + new Color(190, 190, 190),//Color.cyan, null), - SIDE_PANEL_COLORS = new PanelColors( + SIDE_PANEL_COLORS = new SimpleColorScheme( new Color(150, 150, 150), - new Color(0, 0, 0), - null); + new Color(0, 0, 0)); } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java index 50d0e1e..aadfc0f 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java @@ -1,6 +1,7 @@ package graphicsEngineDemo.d5_featurePreview.common; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; import graphicsEngine.presets.panels.AbstractFooter; import org.jetbrains.annotations.Nullable; @@ -10,8 +11,9 @@ public class CommonFooter extends AbstractFooter { private static final int HEIGHT = 40; //TODO: add javadoc - public CommonFooter(@Nullable PanelColors panelColors) { - super(panelColors, HEIGHT); + public CommonFooter(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + super(colors, HEIGHT, borderProperties); } //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java index 74b0720..a545c4c 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java @@ -1,6 +1,7 @@ package graphicsEngineDemo.d5_featurePreview.common.header; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; import graphicsEngine.presets.panels.AbstractHeader; import javax.swing.BoxLayout; @@ -12,9 +13,10 @@ public class CommonHeader extends AbstractHeader { private static final int HEIGHT = 40; //TODO: add javadoc - public CommonHeader(@Nullable PanelColors panelColors, + public CommonHeader(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties, @Nullable HeaderButtonListener buttonListener) { - super(panelColors, HEIGHT); + super(colors, HEIGHT, borderProperties); addButtons(buttonListener); } diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java index 46168da..4ef18fb 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java @@ -1,10 +1,10 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.SimpleColorScheme; import graphicsEngineDemo.d5_featurePreview.common.AbstractCommonPage; -import java.awt.event.ActionListener; import java.util.List; +import java.awt.event.ActionListener; import org.jetbrains.annotations.Nullable; @@ -12,7 +12,7 @@ public abstract class CommonDemoPage extends AbstractCommonPage { //TODO: add javadoc public CommonDemoPage(@Nullable List actionListenerList, - @Nullable PanelColors panelColors) { - super(actionListenerList, panelColors); + @Nullable SimpleColorScheme colors) { + super(actionListenerList, colors); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java index 80aa3f2..1ba048a 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java @@ -1,13 +1,15 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import graphicsEngine.Utilities; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.StaticPanel; import graphicsEngine.parts.SimpleLabel; -import java.awt.*; +import java.awt.Color; +import java.awt.Component; +import java.awt.BorderLayout; import java.awt.event.ActionListener; import java.util.List; -import javax.swing.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -20,8 +22,8 @@ private Page1() { //TODO: add javadoc public Page1(@Nullable List actionListenerList, - @Nullable PanelColors panelColors) { - super(actionListenerList, panelColors); + @Nullable SimpleColorScheme colors) { + super(actionListenerList, colors); setBackground(new Color(150, 50, 50)); } @@ -45,11 +47,15 @@ public void setBodyParameters() { //TODO: add javadoc @Override public @Nullable Component getPageBody() { - return new JPanel() {{ - setBackground(Utilities.EMPTY_COLOR); - setLayout(new BorderLayout(0, 0)); - add(new SimpleLabel("Demo 1", Color.white), BorderLayout.NORTH); - //Add parts to body here - }}; + return new StaticPanel( + null, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, Color.white), + null) { + { + setLayout(new BorderLayout(0, 0)); + add(new SimpleLabel("Demo 1", getPanelColors().getSecondaryColor()), BorderLayout.NORTH); + //Add parts to body here + } + }; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java index e205442..4a595de 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java @@ -1,12 +1,15 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; import graphicsEngine.Utilities; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.StaticPanel; import graphicsEngine.parts.SimpleLabel; import graphicsEngine.presets.panels.VerticalPanel; +import java.awt.*; import java.util.List; -import java.awt.Color; import java.awt.event.ActionListener; import javax.swing.JPanel; @@ -21,8 +24,8 @@ private Page2() { //TODO: add javadoc public Page2(@Nullable List actionListenerList, - @Nullable PanelColors headerAndFooterColors) { - super(actionListenerList, headerAndFooterColors); + @Nullable SimpleColorScheme colors) { + super(actionListenerList, colors); setBackground(new Color(50, 150, 50)); } @@ -40,12 +43,12 @@ public Page2(@Nullable List actionListenerList, /** * TODO: finish this javadoc * - * @param panelColors + * @param colors * @return */ @Override - public final @NotNull VerticalPanel getLeftSidePanel(@Nullable PanelColors panelColors) { - return new SidePanel(panelColors); + public final @NotNull VerticalPanel getLeftSidePanel(@Nullable SimpleColorScheme colors) { + return new SidePanel(colors, null); } /** @@ -55,11 +58,16 @@ public Page2(@Nullable List actionListenerList, */ @Override public @Nullable JPanel getPageCenter() { - return new JPanel() {{ - setBackground(Utilities.EMPTY_COLOR); - add(new SimpleLabel("Center", Color.white)); - //Add parts here - }}; + return new StaticPanel( + null, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, Color.white), + null) { + { + //setLayout(new BorderLayout(0, 0)); + add(new SimpleLabel("Center", getPanelColors().getSecondaryColor()), BorderLayout.NORTH); + //Add parts here + } + }; } //TODO: add javadoc @@ -67,9 +75,10 @@ private static class SidePanel extends CommonSidePanel { private static final int WIDTH = 200; //TODO: add javadoc - public SidePanel(@Nullable PanelColors panelColors) { - super(panelColors, WIDTH); - add(new SimpleLabel("Demo page 2 - Side panel", getPanelColors().text)); + public SidePanel(@Nullable SimpleColorScheme panelColors, + @Nullable BorderProperties borderProperties) { + super(panelColors, WIDTH, borderProperties); + add(new SimpleLabel("Demo page 2 - Side panel", getPanelColors().getSecondaryColor())); //Add parts here } } diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page3.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page3.java deleted file mode 100644 index 67144ea..0000000 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page3.java +++ /dev/null @@ -1,96 +0,0 @@ -package graphicsEngineDemo.d5_featurePreview.demoPages; - -import graphicsEngine.Utilities; -import graphicsEngine.panels.PanelColors; -import graphicsEngine.parts.SimpleLabel; -import graphicsEngine.presets.panels.VerticalPanel; - -import java.util.List; -import java.awt.Color; -import java.awt.Graphics; -import java.awt.event.ActionListener; -import javax.swing.JPanel; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -//TODO: add javadoc -public class Page3 extends PageWithPanel { - private Page3() { - this(null, null); - } - - //TODO: add javadoc - public Page3(@Nullable List actionListenerList, - @Nullable PanelColors headerAndFooterColors) { - super(actionListenerList, headerAndFooterColors); - setBackground(new Color(50, 50, 150)); - } - - //TODO: add javadoc - @Override - public final @NotNull String getPageKey() { - return "page3"; - } - - //TODO: add javadoc - public static @NotNull String getStaticPageKey() { - return (new Page3()).getPageKey(); - } - - /** - * TODO: finish this javadoc - * - * @param panelColors - * @return - */ - @Override - public final @NotNull VerticalPanel getLeftSidePanel(@Nullable PanelColors panelColors) { - return new SidePanel(panelColors); - } - - /** - * TODO: finish this javadoc - * - * @return - */ - @Override - public @Nullable JPanel getPageCenter() { - return new JPanel() {{ - setBackground(Utilities.EMPTY_COLOR); - add(new DynamicLabel(Color.red, null)); - //add(new SimpleLabel("Demo 3", Color.white)); - //Add parts here - }}; - } - - //TODO: add javadoc - private static class SidePanel extends CommonSidePanel { - private static final int WIDTH = 200; - - //TODO: add javadoc - public SidePanel(@Nullable PanelColors panelColors) { - super(panelColors, WIDTH); - add(new SimpleLabel("Demo page 3 - Side panel", getPanelColors().text)); - //Add parts here - } - } - - private static class DynamicLabel extends SimpleLabel { - - public DynamicLabel(@Nullable Color textColor) { - super(null, textColor); - } - - public DynamicLabel(@Nullable Color textColor, - @Nullable Color background) { - super(null, textColor, background); - } - - @Override - public void paintComponent(Graphics g) { - setText("A dynamically changeable string"); - super.paintComponent(g); - } - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java index e886f1f..a9fe387 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java @@ -1,12 +1,15 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import graphicsEngine.Utilities; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.DynamicPanel; import graphicsEngine.presets.panels.VerticalPanel; import graphicsEngineDemo.d5_featurePreview.common.CommonColors; import java.util.List; -import java.awt.*; +import java.awt.Component; +import java.awt.BorderLayout; import java.awt.event.ActionListener; import javax.swing.JPanel; @@ -14,12 +17,12 @@ //TODO: add javadoc public abstract class PageWithPanel extends CommonDemoPage { - private PanelColors sidePanelColors; + private SimpleColorScheme sidePanelColors; //TODO: add javadoc public PageWithPanel(@Nullable List actionListenerList, - @Nullable PanelColors headerAndFooterColors) { - super(actionListenerList, headerAndFooterColors); + @Nullable SimpleColorScheme colors) { + super(actionListenerList, colors); } //TODO: add javadoc @@ -31,22 +34,26 @@ public void setBodyParameters() { //TODO: add javadoc @Override public @Nullable Component getPageBody() { - return new JPanel() {{ - setBackground(Utilities.EMPTY_COLOR); - setLayout(new BorderLayout(0, 0)); - VerticalPanel leftSidePanel = getLeftSidePanel(sidePanelColors); - if (leftSidePanel != null) { - add(leftSidePanel, BorderLayout.WEST); + return new DynamicPanel( + null, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), + null) { + { + setLayout(new BorderLayout(0, 0)); + VerticalPanel leftSidePanel = getLeftSidePanel(sidePanelColors); + if (leftSidePanel != null) { + add(leftSidePanel, BorderLayout.WEST); + } + JPanel centralPanel = getPageCenter(); + if (centralPanel != null) { + add(centralPanel, BorderLayout.CENTER); + } } - JPanel centralPanel = getPageCenter(); - if (centralPanel != null) { - add(centralPanel, BorderLayout.CENTER); - } - }}; + }; } //TODO: add javadoc - public abstract @Nullable VerticalPanel getLeftSidePanel(@Nullable PanelColors panelColors); + public abstract @Nullable VerticalPanel getLeftSidePanel(@Nullable SimpleColorScheme panelColors); //TODO: add javadoc public abstract @Nullable JPanel getPageCenter(); @@ -55,14 +62,10 @@ public void setBodyParameters() { public static class CommonSidePanel extends VerticalPanel { //TODO: add javadoc - public CommonSidePanel(@Nullable PanelColors panelColors, int width) { - super(panelColors, width); + public CommonSidePanel(@Nullable SimpleColorScheme panelColors, + int width, + @Nullable BorderProperties borderProperties) { + super(panelColors, width, borderProperties); } - - /** - * TODO: finish this javadoc - */ - @Override - public void addParts() {} } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Center.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Center.java new file mode 100644 index 0000000..b8a6494 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Center.java @@ -0,0 +1,61 @@ +package graphicsEngineDemo.d5_featurePreview.demoPages.page3; + +import graphicsEngine.Utilities; +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.DynamicPanel; +import graphicsEngine.parts.SimpleLabel; + +import java.awt.Color; +import java.awt.BorderLayout; + +import static consoleUtils.ConsoleUtils.printLine; + +import org.jetbrains.annotations.Nullable; + +class Center extends DynamicPanel { + protected Center(Page3 page) { + super( + null, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), + null); + add(new DynamicLabel(page, Color.red), BorderLayout.PAGE_START); + //add(new SimpleLabel("Demo 3", Color.white)); + //Add parts here + } + + private static class DynamicLabel extends SimpleLabel { + private final Page3 page; + + protected DynamicLabel(Page3 page, + @Nullable Color textColor) { + this(page, textColor, null); + } + + protected DynamicLabel(Page3 page, + @Nullable Color textColor, + @Nullable Color background) { + super(null, textColor, background); + this.page = page; + } + + //calls either paint or update + @Override + public void repaint() { + printLine("label repaint happens"); + setText(getNewText()); + super.repaint(); + } + + private String getNewText() { + String valueString = "page=null"; + if (page != null) { + valueString = "data=null"; + if (page.data != null) { + valueString = String.valueOf(page.data.getValue()); + } + } + return "A dynamically changeable string. X: " + valueString; + } + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Page3.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Page3.java new file mode 100644 index 0000000..67a2bb2 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Page3.java @@ -0,0 +1,63 @@ +package graphicsEngineDemo.d5_featurePreview.demoPages.page3; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.presets.panels.VerticalPanel; +import graphicsEngineDemo.d5_featurePreview.demoPages.PageWithPanel; +import graphicsEngineDemo.d5_featurePreview.demoPages.page3.data.DataUpdater; + +import java.util.List; +import java.awt.Color; +import java.awt.event.ActionListener; +import javax.swing.JPanel; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +public class Page3 extends PageWithPanel { + public final DataUpdater data; + + private Page3() { + this(null, null); + } + + //TODO: add javadoc + public Page3(@Nullable List actionListenerList, + @Nullable SimpleColorScheme colors) { + super(actionListenerList, colors); + setBackground(new Color(50, 50, 150)); + data = new DataUpdater(); + } + + //TODO: add javadoc + @Override + public final @NotNull String getPageKey() { + return "page3"; + } + + //TODO: add javadoc + public static @NotNull String getStaticPageKey() { + return (new Page3()).getPageKey(); + } + + /** + * TODO: finish this javadoc + * + * @param colors + * @return + */ + @Override + public final @NotNull VerticalPanel getLeftSidePanel(@Nullable SimpleColorScheme colors) { + return new SidePanel(colors, null); + } + + /** + * TODO: finish this javadoc + * + * @return + */ + @Override + public @Nullable JPanel getPageCenter() { + return new Center(this); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/SidePanel.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/SidePanel.java new file mode 100644 index 0000000..7796e4c --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/SidePanel.java @@ -0,0 +1,22 @@ +package graphicsEngineDemo.d5_featurePreview.demoPages.page3; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.parts.SimpleLabel; +import graphicsEngineDemo.d5_featurePreview.demoPages.PageWithPanel; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadoc +class SidePanel extends PageWithPanel.CommonSidePanel { + private static final int WIDTH = 200; + + //TODO: add javadoc + protected SidePanel(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + super(colors, WIDTH, borderProperties); + add(new SimpleLabel("Demo page 3 - Side panel", getPanelColors().getSecondaryColor())); + add(new SimpleLabel("Some text", getPanelColors().getSecondaryColor())); + //Add parts here + } +} diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/data/Data.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/data/Data.java new file mode 100644 index 0000000..d4f4cf5 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/data/Data.java @@ -0,0 +1,29 @@ +package graphicsEngineDemo.d5_featurePreview.demoPages.page3.data; + +//TODO: finish this and add javadoc +public class Data { + private int + variable, + delta; + + //TODO: add javadoc + protected Data(int value, int delta) { + variable = value; + this.delta = delta; + } + + //TODO: add javadoc + public int getVariableValue() { + return variable; + } + + //TODO: add javadoc + protected void add() { + variable += delta; + } + + //TODO: add javadoc + protected void subtract() { + variable -= delta; + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/data/DataUpdater.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/data/DataUpdater.java new file mode 100644 index 0000000..51eb617 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/data/DataUpdater.java @@ -0,0 +1,36 @@ +package graphicsEngineDemo.d5_featurePreview.demoPages.page3.data; + +import ThreadAbstraction.AbstractUpdater; + +//TODO: finish this and add javadocs +public class DataUpdater extends AbstractUpdater { + private static final long REFRESH_DELAY = 50L; // in milliseconds + + //TODO: make private and use getters + public Data data; + public boolean subtract = false; + + //TODO: add javadoc + public DataUpdater() { + super(REFRESH_DELAY); + data = new Data(0, 1); + this.start(); + } + + /** + * Gets called when thread runs. + */ + @Override + public void update() { + if (subtract) { + data.subtract(); + } else { + data.add(); + } + } + + //TODO: add javadoc + public int getValue() { + return data.getVariableValue(); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java index 2e4d656..c415930 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java @@ -4,7 +4,7 @@ import graphicsEngineDemo.d5_featurePreview.window.Window; import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; -import graphicsEngineDemo.d5_featurePreview.demoPages.Page3; +import graphicsEngineDemo.d5_featurePreview.demoPages.page3.Page3; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java index 37e0864..1be827e 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java @@ -1,7 +1,7 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage; -import graphicsEngine.Utilities; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.parts.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; @@ -22,8 +22,8 @@ private DemoSelectPage() { //TODO: add javadoc public DemoSelectPage(@Nullable List actionListenerList, - @Nullable PanelColors panelColors) { - super(actionListenerList, panelColors); + @Nullable SimpleColorScheme colors) { + super(actionListenerList, colors); } //TODO: add javadoc @@ -65,7 +65,7 @@ public DemoSelectPage(@Nullable List actionListenerList, JPanel body = (JPanel) super.getPageBody(); body.add(new SimpleLabel("Select demo:", Color.white), BorderLayout.NORTH); body.add(new JPanel() {{ - setBackground(Utilities.EMPTY_COLOR); + setBackground(ColorUtilities.DEFAULT_COLOR_TRANSPARENT); setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); add(new DemoSelectButtonListener.Button_Page1(demoSelectButtonListener)); add(new DemoSelectButtonListener.Button_Page2(demoSelectButtonListener)); diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java index daf6d0b..f5c778b 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java @@ -1,6 +1,6 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.parts.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; @@ -20,8 +20,8 @@ private SettingsPage() { //TODO: add javadoc public SettingsPage(@Nullable List actionListenerList, - @Nullable PanelColors panelColors) { - super(actionListenerList, panelColors); + @Nullable SimpleColorScheme colors) { + super(actionListenerList, colors); } //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java index 10f833c..070a72b 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java @@ -1,6 +1,6 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.startingPage; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.parts.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; @@ -20,8 +20,8 @@ private StartingPage() { //TODO: add javadoc public StartingPage(@Nullable List actionListenerList, - @Nullable PanelColors panelColors) { - super(actionListenerList, panelColors); + @Nullable SimpleColorScheme colors) { + super(actionListenerList, colors); } //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java index 6884342..25db9fc 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java @@ -9,7 +9,7 @@ import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectPage; import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; -import graphicsEngineDemo.d5_featurePreview.demoPages.Page3; +import graphicsEngineDemo.d5_featurePreview.demoPages.page3.Page3; import java.util.List; import java.util.ArrayList; diff --git a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java index ab300b7..dec5d39 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java +++ b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/ControlWindow.java @@ -1,13 +1,13 @@ package graphicsEngineSandbox.graphics.controlWindow; +import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.AbstractWindow; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.panels.StaticPanel; import graphicsEngineSandbox.graphics.controlWindow.leftPanel.LeftPanel; import java.awt.*; -import javax.swing.JPanel; import org.jetbrains.annotations.NotNull; @@ -34,19 +34,29 @@ private static WindowConfig config() { @Override public void addParts() { - PanelColors panelColors = new PanelColors(); - setLayout(new BorderLayout()); - add(new Footer(panelColors, false), BorderLayout.SOUTH); - add(new LeftPanel(panelColors, false), BorderLayout.WEST); - add(new CentralPanel(), BorderLayout.CENTER); + add( + new Footer( + new SimpleColorScheme(Color.gray, null), + null), + BorderLayout.SOUTH); + add( + new LeftPanel( + new SimpleColorScheme(Color.lightGray, null), + null), + BorderLayout.WEST); + add( + new CentralPanel(), + BorderLayout.CENTER); } - private static class CentralPanel extends JPanel { + private static class CentralPanel extends StaticPanel { private static final Color BACKGROUND = new Color(110, 120, 40); protected CentralPanel() { - setBackground(BACKGROUND); + super(null, + new SimpleColorScheme(BACKGROUND, null), + null); } } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/Footer.java b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/Footer.java index a97d157..545a9aa 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/Footer.java +++ b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/Footer.java @@ -1,33 +1,36 @@ package graphicsEngineSandbox.graphics.controlWindow; -import graphicsEngine.panels.PanelColors; -import graphicsEngine.panels.SimplePanel; -import graphicsEngine.parts.*; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.StaticPanel; +import graphicsEngine.parts.SimpleLabel; -import java.awt.*; -import javax.swing.*; +import java.awt.Dimension; +import javax.swing.BoxLayout; +import javax.swing.Box; import org.jetbrains.annotations.Nullable; // TODO: add javadocs -public class Footer extends SimplePanel { +public class Footer extends StaticPanel { private static final int HEIGHT = 25, TEXT_OFFSET_X = 10; - public Footer(@Nullable PanelColors panelColors, boolean border) { - super(panelColors, border); - setPreferredSize(new Dimension(Integer.MAX_VALUE, HEIGHT)); - addMembers(); + public Footer(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + super(new Dimension(Integer.MAX_VALUE, HEIGHT), colors, borderProperties); } - private void addMembers() { + @Override + public void addParts() { + super.addParts(); setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); //a separator for separating label from the leftmost edge of the panel add(Box.createRigidArea(new Dimension(TEXT_OFFSET_X,0))); //a label - add(new SimpleLabel("This is a footer", getPanelColors().text)); + add(new SimpleLabel("This is a footer", getPanelColors().getSecondaryColor())); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/AbstractSubPanel.java b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/AbstractSubPanel.java index d8b0fe5..ad807ac 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/AbstractSubPanel.java +++ b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/AbstractSubPanel.java @@ -1,15 +1,20 @@ package graphicsEngineSandbox.graphics.controlWindow.leftPanel; -import graphicsEngine.panels.PanelColors; -import graphicsEngine.panels.SimplePanel; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.StaticPanel; import java.awt.*; -abstract class AbstractSubPanel extends SimplePanel { - protected AbstractSubPanel(int[] size, PanelColors panelColors, boolean border) { - super(panelColors, border); +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +abstract class AbstractSubPanel extends StaticPanel { + protected AbstractSubPanel(int @NotNull [] size, + @Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + super(new Dimension(size[0], size[1]), colors, borderProperties); setOpaque(false); - setPreferredSize(new Dimension(size[0], size[1])); setAlignmentX(Component.LEFT_ALIGNMENT); } diff --git a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/LeftPanel.java b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/LeftPanel.java index b9c864f..8ea8860 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/LeftPanel.java +++ b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/LeftPanel.java @@ -1,22 +1,26 @@ package graphicsEngineSandbox.graphics.controlWindow.leftPanel; -import graphicsEngine.panels.PanelColors; -import graphicsEngine.panels.SimplePanel; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.StaticPanel; import java.awt.*; import javax.swing.*; +import org.jetbrains.annotations.Nullable; + //TODO: add javadocs -public class LeftPanel extends SimplePanel { +public class LeftPanel extends StaticPanel { static final int WIDTH = 150; - public LeftPanel(PanelColors panelColors, boolean border) { - super(panelColors, border); - setPreferredSize(new Dimension(WIDTH, Integer.MAX_VALUE)); - addMembers(); + public LeftPanel(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + super(new Dimension(WIDTH, Integer.MAX_VALUE), colors, borderProperties); } - private void addMembers() { + @Override + public void addParts() { + super.addParts(); setLayout(new BorderLayout(0, 0)); add( new JPanel() { @@ -25,11 +29,11 @@ private void addMembers() { setPreferredSize(new Dimension(LeftPanel.WIDTH, getPreferredHeight())); setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); //setAlignmentX(Component.LEFT_ALIGNMENT); - PanelColors colors = getPanelColors(); - add(new SubPanel1(colors, false)); - add(new SubPanel1(colors, false)); - add(new SubPanel2(colors, true)); - add(new TextLabel(colors.border, true)); + SimpleColorScheme colors = new SimpleColorScheme(); + add(new SubPanel1(colors, null)); + add(new SubPanel1(colors, null)); + add(new SubPanel2(colors, new BorderProperties(null, true))); + add(new TextLabel(new BorderProperties(null, true))); } }, BorderLayout.NORTH); diff --git a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/SubPanel1.java b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/SubPanel1.java index 8310e5b..0bbb966 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/SubPanel1.java +++ b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/SubPanel1.java @@ -1,24 +1,28 @@ package graphicsEngineSandbox.graphics.controlWindow.leftPanel; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; -import java.awt.*; +import java.awt.Graphics; + +import org.jetbrains.annotations.Nullable; class SubPanel1 extends AbstractSubPanel { protected static final int HEIGHT = 30; private static final int[] TEXT_LOCATION = new int[] {5, 20}; private static final String TEXT = "TextPanel 1"; - protected SubPanel1(PanelColors panelColors, boolean border) { + protected SubPanel1(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { super( new int[] {LeftPanel.WIDTH, HEIGHT}, - panelColors, - border); + colors, + borderProperties); } @Override protected final void drawText(Graphics g) { - g.setColor(getPanelColors().text); + g.setColor(getPanelColors().getSecondaryColor()); g.drawString(TEXT, TEXT_LOCATION[0], TEXT_LOCATION[1]); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/SubPanel2.java b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/SubPanel2.java index 306eb8a..f1bf63a 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/SubPanel2.java +++ b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/SubPanel2.java @@ -1,25 +1,28 @@ package graphicsEngineSandbox.graphics.controlWindow.leftPanel; -import graphicsEngine.panels.PanelColors; - +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; import graphicsEngineSandbox.data.Data; -import java.awt.*; +import java.awt.Graphics; + +import org.jetbrains.annotations.Nullable; class SubPanel2 extends AbstractSubPanel { protected static final int HEIGHT = 60; private static final int[] TEXT_LOCATION = new int[] {5, 20}; - protected SubPanel2(PanelColors panelColors, boolean border) { + protected SubPanel2(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { super( new int[] {LeftPanel.WIDTH, HEIGHT}, - panelColors, - border); + colors, + borderProperties); } @Override protected final void drawText(Graphics g) { - g.setColor(getPanelColors().text); + g.setColor(getPanelColors().getSecondaryColor()); g.drawString("X: " + Data.getX(), TEXT_LOCATION[0], TEXT_LOCATION[1]); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/TextLabel.java b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/TextLabel.java index a14e2f1..ae48ccd 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/TextLabel.java +++ b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/TextLabel.java @@ -1,9 +1,11 @@ package graphicsEngineSandbox.graphics.controlWindow.leftPanel; -import graphicsEngine.Utilities; +import graphicsEngine.panels.BorderInterface; +import graphicsEngine.panels.BorderProperties; import graphicsEngine.parts.SimpleLabel; -import java.awt.*; +import java.awt.Dimension; +import java.awt.Color; import org.jetbrains.annotations.NotNull; @@ -11,14 +13,15 @@ class TextLabel extends SimpleLabel { protected static final int HEIGHT = 80; private static final Color TEXT_COLOR = Color.blue; - protected TextLabel(@NotNull Color borderColor, boolean border) { + protected TextLabel(@NotNull BorderProperties borderProperties) { super("A label object", TEXT_COLOR); setPreferredSize(new Dimension(LeftPanel.WIDTH, HEIGHT)); - Utilities.BorderInterface.setBorderState( + + BorderInterface.setComponentBorderState( this, - border, - borderColor); + borderProperties.getBorderColor(), + borderProperties.getBorderState()); } @Override diff --git a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java index 68db8ff..c148aaf 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java +++ b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/ViewWindow.java @@ -1,9 +1,10 @@ package graphicsEngineSandbox.graphics.viewWinow; +import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.AbstractWindow; -import graphicsEngine.panels.PanelColors; +import graphicsEngine.windows.windowTypes.SimpleWindow; import graphicsEngineSandbox.graphics.viewWinow.mainPanels.LeftSidePanel; import graphicsEngineSandbox.graphics.viewWinow.mainPanels.RightSidePanel; import graphicsEngineSandbox.graphics.viewWinow.mainPanels.center.CenterContainer; @@ -13,11 +14,12 @@ import org.jetbrains.annotations.NotNull; // TODO: add javadoc -public class ViewWindow extends AbstractWindow { +public class ViewWindow extends SimpleWindow { private static final int[] WINDOW_MINIMUM_SIZE = new int[] {700, 400}; public ViewWindow(@NotNull WindowManager windowManager) { super(windowManager, config(), null); + //TODO: maybe rework? could use something like setMinimumSize(getSize()) int[] correctedMinimumSize = AbstractWindow.correctWindowsSizeError(WINDOW_MINIMUM_SIZE); setMinimumSize(new Dimension(correctedMinimumSize[0], correctedMinimumSize[1])); } @@ -36,12 +38,12 @@ private static WindowConfig config() { @Override public void addParts() { - PanelColors panelColors = new PanelColors(); + SimpleColorScheme + panelColors = new SimpleColorScheme(Color.gray, null), + centerColors = new SimpleColorScheme(Color.cyan, Color.yellow); add(new LeftSidePanel(150, panelColors), BorderLayout.WEST); add(new RightSidePanel(150, panelColors), BorderLayout.EAST); - - - add(new CenterContainer(new PanelColors(Color.cyan, Color.yellow, Color.yellow)), BorderLayout.CENTER); + add(new CenterContainer(centerColors), BorderLayout.CENTER); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/LeftSidePanel.java b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/LeftSidePanel.java index 08b7525..a7ab9e9 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/LeftSidePanel.java +++ b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/LeftSidePanel.java @@ -1,17 +1,20 @@ package graphicsEngineSandbox.graphics.viewWinow.mainPanels; -import graphicsEngine.panels.PanelColors; -import graphicsEngine.panels.SimplePanel; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.StaticPanel; -import java.awt.*; +import java.awt.Dimension; +import java.awt.Graphics; -public class LeftSidePanel extends SimplePanel { - private static final int[] TEXT_LOCATION = new int[] {5, 20}; - private static final String TEXT = "Left side panel"; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; - public LeftSidePanel(int width, PanelColors colors) { - super(colors, false); - setPreferredSize(new Dimension(width, Integer.MAX_VALUE)); +public class LeftSidePanel extends StaticPanel { + private static final int @NotNull [] TEXT_LOCATION = new int[] {5, 20}; + private static final @NotNull String TEXT = "Left side panel"; + + public LeftSidePanel(int width, @Nullable SimpleColorScheme colors) { + super(new Dimension(width, Integer.MAX_VALUE), colors, null); } @Override @@ -20,8 +23,8 @@ public void paintComponent(Graphics g) { drawText(g); } - private void drawText(Graphics g) { - g.setColor(getPanelColors().text); + private void drawText(@NotNull Graphics g) { + g.setColor(getPanelColors().getSecondaryColor()); g.drawString(TEXT, TEXT_LOCATION[0], TEXT_LOCATION[1]); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/RightSidePanel.java b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/RightSidePanel.java index 7db57a1..8896d57 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/RightSidePanel.java +++ b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/RightSidePanel.java @@ -1,17 +1,20 @@ package graphicsEngineSandbox.graphics.viewWinow.mainPanels; -import graphicsEngine.panels.PanelColors; -import graphicsEngine.panels.SimplePanel; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.StaticPanel; -import java.awt.*; +import java.awt.Dimension; +import java.awt.Graphics; -public class RightSidePanel extends SimplePanel { - private static final int[] TEXT_LOCATION = new int[] {5, 20}; - private static final String TEXT = "Right side panel"; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; - public RightSidePanel(int width, PanelColors colors) { - super(colors, false); - setPreferredSize(new Dimension(width, Integer.MAX_VALUE)); +public class RightSidePanel extends StaticPanel { + private static final int @NotNull [] TEXT_LOCATION = new int[] {5, 20}; + private static final @NotNull String TEXT = "Right side panel"; + + public RightSidePanel(int width, @Nullable SimpleColorScheme colors) { + super(new Dimension(width, Integer.MAX_VALUE), colors, null); } @Override @@ -20,8 +23,8 @@ public void paintComponent(Graphics g) { drawText(g); } - private void drawText(Graphics g) { - g.setColor(getPanelColors().text); + private void drawText(@NotNull Graphics g) { + g.setColor(getPanelColors().getSecondaryColor()); g.drawString(TEXT, TEXT_LOCATION[0], TEXT_LOCATION[1]); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/center/CenterContainer.java b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/center/CenterContainer.java index 19a236c..2be11e1 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/center/CenterContainer.java +++ b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/center/CenterContainer.java @@ -1,14 +1,23 @@ package graphicsEngineSandbox.graphics.viewWinow.mainPanels.center; -import graphicsEngine.panels.PanelColors; -import graphicsEngine.panels.SimplePanel; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.StaticPanel; -import java.awt.*; -import javax.swing.*; +import java.awt.Dimension; +import java.awt.BorderLayout; +import javax.swing.JPanel; -public class CenterContainer extends SimplePanel { - public CenterContainer(PanelColors panelColors) { - super(panelColors, false); +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class CenterContainer extends StaticPanel { + public CenterContainer(@Nullable SimpleColorScheme colors) { + super(null, colors, null); + } + + @Override + public void addParts() { + super.addParts(); setLayout(new BorderLayout(0,0)); add(new CentralSquare(), BorderLayout.WEST); add( @@ -19,7 +28,7 @@ public CenterContainer(PanelColors panelColors) { } @Override - public Dimension getPreferredSize() { + public @NotNull Dimension getPreferredSize() { Dimension parentSize = getParent().getSize(); if (parentSize.width >= parentSize.height) { diff --git a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/center/CentralSquare.java b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/center/CentralSquare.java index 6c347ed..0d62be7 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/center/CentralSquare.java +++ b/src/test/java/graphicsEngineSandbox/graphics/viewWinow/mainPanels/center/CentralSquare.java @@ -1,36 +1,39 @@ package graphicsEngineSandbox.graphics.viewWinow.mainPanels.center; -import graphicsEngine.panels.PanelColors; -import graphicsEngine.panels.SimplePanel; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.StaticPanel; import java.awt.*; -public class CentralSquare extends SimplePanel { - private static final int[] TEXT_LOCATION = new int[] {5, 20}; - private static final PanelColors COLORS; +import org.jetbrains.annotations.NotNull; - static { - Color - background = new Color(30, 30, 150), - text = new Color(150, 150, 0), - border = new Color(200,180,100); +public class CentralSquare extends StaticPanel { + private static final @NotNull SimpleColorScheme + COLORS = new SimpleColorScheme( + new Color(30, 30, 150), + new Color(150, 150, 0)); - COLORS = new PanelColors(background, text, border); - } + private static final @NotNull BorderProperties + BORDER_PROPERTIES = new BorderProperties( + new Color(200,180,100), + false); + + private static final int @NotNull [] TEXT_LOCATION = new int[] {5, 20}; public CentralSquare() { - super(COLORS, false); + super(null, COLORS, BORDER_PROPERTIES); } @Override - public Dimension getPreferredSize() { + public @NotNull Dimension getPreferredSize() { Dimension maxSize = this.getParent().getSize(); int a = Math.min(maxSize.width, maxSize.height); return new Dimension(a, a); } @Override - public void setSize(Dimension d) { + public void setSize(@NotNull Dimension d) { int a = Math.max(0, Math.min(d.width, d.height)); super.setSize(new Dimension(a, a)); } @@ -41,14 +44,15 @@ public void paintComponent(Graphics g) { myGraphics(g); } - private void myGraphics(Graphics g) { - PanelColors colors = getPanelColors(); - drawCircle(g, colors.border); - drawDiagonals(g, colors.border); - drawText(g, colors.text); + private void myGraphics(@NotNull Graphics g) { + @NotNull Color borderColor = BORDER_PROPERTIES.getBorderColor(); + drawCircle(g, borderColor); + drawDiagonals(g, borderColor); + @NotNull Color textColor = getPanelColors().getSecondaryColor(); + drawText(g, textColor); } - private void drawText(Graphics g, Color color) { + private void drawText(@NotNull Graphics g, @NotNull Color color) { g.setColor(color); g.drawString( "A square", @@ -64,16 +68,16 @@ private void drawText(Graphics g, Color color) { TEXT_LOCATION[0], TEXT_LOCATION[1] + 60); } - private void drawDiagonals(Graphics g, Color color) { - Dimension size = getSize(); + private void drawDiagonals(@NotNull Graphics g, @NotNull Color color) { + @NotNull Dimension size = getSize(); g.setColor(color); g.drawLine(0, 0, size.width, size.height); g.drawLine(0, size.height, size.width, 0); } - private void drawCircle(Graphics g, Color color) { - Dimension size = getSize(); + private void drawCircle(@NotNull Graphics g, @NotNull Color color) { + @NotNull Dimension size = getSize(); g.setColor(color); g.drawOval(0, 0, size.width, size.height); From c15b56dd01b5935bea5c241ccd603248e6c0ba10 Mon Sep 17 00:00:00 2001 From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com> Date: Sun, 18 Dec 2022 17:23:32 +0200 Subject: [PATCH 09/11] 0.8.13 * jitpack config * dynamic label * sliders * demo-5 page-4 stub --- jitpack.yml | 9 +++ pom.xml | 2 +- .../parts/labels/DynamicLabel.java | 26 +++++++ .../parts/{ => labels}/SimpleLabel.java | 6 +- .../parts/sliders/ExponentialSlider.java | 46 ++++++++++++ .../parts/sliders/LinearSlider.java | 45 ++++++++++++ .../parts/sliders/PaneledSlider.java | 45 ++++++++++++ .../parts/sliders/SliderConstants.java | 7 ++ .../sliders/panelless/PanellessSlider.java | 58 +++++++++++++++ .../PanellessSlider_Exponential.java | 71 +++++++++++++++++++ .../panelless/PanellessSlider_Linear.java | 64 +++++++++++++++++ .../parts/sliders/panelless/SimpleSlider.java | 50 +++++++++++++ .../panelless/TickValueConvertible.java | 39 ++++++++++ .../parts/sliders/panelless/TickedSlider.java | 67 +++++++++++++++++ .../pages/AbstractCommonPage.java | 2 +- .../d5_featurePreview/demoPages/Page1.java | 2 +- .../d5_featurePreview/demoPages/Page2.java | 3 +- .../demoPages/page3/Center.java | 4 +- .../demoPages/page3/SidePanel.java | 2 +- .../demoPages/page4/Center.java | 61 ++++++++++++++++ .../demoPages/page4/Page4.java | 58 +++++++++++++++ .../demoPages/page4/SidePanel.java | 23 ++++++ .../DemoSelectButtonListener.java | 12 ++++ .../demoSelectPage/DemoSelectPage.java | 3 +- .../menuPages/settingsPage/SettingsPage.java | 2 +- .../menuPages/startingPage/StartingPage.java | 2 +- .../d5_featurePreview/window/Window.java | 8 +++ .../graphics/controlWindow/Footer.java | 2 +- .../controlWindow/leftPanel/TextLabel.java | 2 +- 29 files changed, 705 insertions(+), 16 deletions(-) create mode 100644 jitpack.yml create mode 100644 src/main/java/graphicsEngine/parts/labels/DynamicLabel.java rename src/main/java/graphicsEngine/parts/{ => labels}/SimpleLabel.java (97%) create mode 100644 src/main/java/graphicsEngine/parts/sliders/ExponentialSlider.java create mode 100644 src/main/java/graphicsEngine/parts/sliders/LinearSlider.java create mode 100644 src/main/java/graphicsEngine/parts/sliders/PaneledSlider.java create mode 100644 src/main/java/graphicsEngine/parts/sliders/SliderConstants.java create mode 100644 src/main/java/graphicsEngine/parts/sliders/panelless/PanellessSlider.java create mode 100644 src/main/java/graphicsEngine/parts/sliders/panelless/PanellessSlider_Exponential.java create mode 100644 src/main/java/graphicsEngine/parts/sliders/panelless/PanellessSlider_Linear.java create mode 100644 src/main/java/graphicsEngine/parts/sliders/panelless/SimpleSlider.java create mode 100644 src/main/java/graphicsEngine/parts/sliders/panelless/TickValueConvertible.java create mode 100644 src/main/java/graphicsEngine/parts/sliders/panelless/TickedSlider.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Center.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Page4.java create mode 100644 src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/SidePanel.java diff --git a/jitpack.yml b/jitpack.yml new file mode 100644 index 0000000..b2ca5cb --- /dev/null +++ b/jitpack.yml @@ -0,0 +1,9 @@ +jdk: + - openjdk18 +before_install: + - sdk install java 18.0.2.1-open + - sdk use java 18.0.2.1-open + - sdk install maven + - mvn -v +install: + - mvn install -Dmaven.javadoc.skip=true -DskipTests \ No newline at end of file diff --git a/pom.xml b/pom.xml index 2794cb7..8b7432c 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.KruMF GraphicsEngine - 0.8.11 + 0.8.13 UTF-8 diff --git a/src/main/java/graphicsEngine/parts/labels/DynamicLabel.java b/src/main/java/graphicsEngine/parts/labels/DynamicLabel.java new file mode 100644 index 0000000..e9a33a8 --- /dev/null +++ b/src/main/java/graphicsEngine/parts/labels/DynamicLabel.java @@ -0,0 +1,26 @@ +package graphicsEngine.parts.labels; + +import java.awt.Color; +import java.awt.Graphics; + +import org.jetbrains.annotations.Nullable; + +//TODO: add javadocs +public abstract class DynamicLabel extends SimpleLabel { + + //TODO: add javadoc + public DynamicLabel(@Nullable Color textColor, + @Nullable Color background) { + super(null, textColor, background); + } + + //TODO: add javadoc + @Override + protected void paintComponent(Graphics g) { + setText(getLabelText()); + super.paintComponent(g); + } + + //TODO: add javadoc + public abstract @Nullable String getLabelText(); +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/parts/SimpleLabel.java b/src/main/java/graphicsEngine/parts/labels/SimpleLabel.java similarity index 97% rename from src/main/java/graphicsEngine/parts/SimpleLabel.java rename to src/main/java/graphicsEngine/parts/labels/SimpleLabel.java index 0333fd4..bf9e42e 100644 --- a/src/main/java/graphicsEngine/parts/SimpleLabel.java +++ b/src/main/java/graphicsEngine/parts/labels/SimpleLabel.java @@ -1,6 +1,4 @@ -package graphicsEngine.parts; - -import graphicsEngine.colors.ColorUtilities; +package graphicsEngine.parts.labels; import java.util.Objects; import java.awt.Component; @@ -9,6 +7,8 @@ import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.ColorUtilities; + //A simple JLabel with most commonly used functions //TODO: add javadocs public class SimpleLabel extends JLabel { diff --git a/src/main/java/graphicsEngine/parts/sliders/ExponentialSlider.java b/src/main/java/graphicsEngine/parts/sliders/ExponentialSlider.java new file mode 100644 index 0000000..006c277 --- /dev/null +++ b/src/main/java/graphicsEngine/parts/sliders/ExponentialSlider.java @@ -0,0 +1,46 @@ +package graphicsEngine.parts.sliders; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.parts.sliders.panelless.PanellessSlider_Exponential; + +//TODO: add javadocs +public abstract class ExponentialSlider extends PaneledSlider { + + //TODO: add javadoc + public ExponentialSlider(@Nullable SimpleColorScheme colors, + double @NotNull [] range, double initialValue, + int majorTickCount, int minorTickCount) { + this( + colors, SliderConstants.DEFAULT_PANEL_HEIGHT, + range, initialValue, + majorTickCount, minorTickCount, + SliderConstants.DEFAULT_TICK_LABEL_DECIMAL_PLACES); + } + + //TODO: add javadoc + public ExponentialSlider(@Nullable SimpleColorScheme colors, int panelHeight, + double @NotNull [] range, double initialValue, + int majorTickCount, int minorTickCount, + int tickLabelDecimalPlaces) { + super(colors, panelHeight); + @NotNull PaneledSlider panel = this; + add(new PanellessSlider_Exponential( + getPanelColors().getBaseColor(), + range, initialValue, + majorTickCount, minorTickCount, + tickLabelDecimalPlaces) { + /** + * Performed upon changing the value. + * + * @param value The new value. + */ + @Override + public void valueChanged(double value) { + panel.valueChanged(value); + } + }); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/parts/sliders/LinearSlider.java b/src/main/java/graphicsEngine/parts/sliders/LinearSlider.java new file mode 100644 index 0000000..6b41bc0 --- /dev/null +++ b/src/main/java/graphicsEngine/parts/sliders/LinearSlider.java @@ -0,0 +1,45 @@ +package graphicsEngine.parts.sliders; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.parts.sliders.panelless.PanellessSlider_Linear; + +//TODO: add javadocs +public abstract class LinearSlider extends PaneledSlider { + + //TODO: add javadoc + public LinearSlider(@Nullable SimpleColorScheme colors, + double @NotNull [] range, double initialValue, + int majorTickCount, int minorTickCount) { + this( + colors, SliderConstants.DEFAULT_PANEL_HEIGHT, + range, initialValue, + majorTickCount, minorTickCount, + SliderConstants.DEFAULT_TICK_LABEL_DECIMAL_PLACES); + } + + //TODO: add javadoc + public LinearSlider(@Nullable SimpleColorScheme colors, int panelHeight, + double @NotNull [] range, double initialValue, + int majorTickCount, int minorTickCount, + int tickLabelDecimalPlaces) { + super(colors, panelHeight); + @NotNull PaneledSlider panel = this; + add(new PanellessSlider_Linear( + getPanelColors().getBaseColor(), + range, initialValue, + majorTickCount, minorTickCount, tickLabelDecimalPlaces) { + /** + * Performed upon changing the value. + * + * @param value The new value. + */ + @Override + public void valueChanged(double value) { + panel.valueChanged(value); + } + }); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/parts/sliders/PaneledSlider.java b/src/main/java/graphicsEngine/parts/sliders/PaneledSlider.java new file mode 100644 index 0000000..9874617 --- /dev/null +++ b/src/main/java/graphicsEngine/parts/sliders/PaneledSlider.java @@ -0,0 +1,45 @@ +package graphicsEngine.parts.sliders; + +import javax.swing.BoxLayout; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.parts.labels.DynamicLabel; +import graphicsEngine.presets.panels.HorizontalPanel; + +//TODO: add javadocs +abstract class PaneledSlider extends HorizontalPanel { + + //TODO: add javadoc + public PaneledSlider(@Nullable SimpleColorScheme colors, int height) { + super(colors, height, null); + setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + + @NotNull PaneledSlider panel = this; + add(new DynamicLabel( + getPanelColors().getSecondaryColor(), + getPanelColors().getBaseColor()) { + //TODO: add javadoc + @Override + public @NotNull String getLabelText() { + return panel.getLabelText(); + } + }); + } + + /** + * Gets the text of the label for paneled slider. + * + * @return The text of the label. + */ + public abstract @NotNull String getLabelText(); + + /** + * Performed upon changing the value. + * + * @param value The new value. + */ + public abstract void valueChanged(double value); +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/parts/sliders/SliderConstants.java b/src/main/java/graphicsEngine/parts/sliders/SliderConstants.java new file mode 100644 index 0000000..e559eb7 --- /dev/null +++ b/src/main/java/graphicsEngine/parts/sliders/SliderConstants.java @@ -0,0 +1,7 @@ +package graphicsEngine.parts.sliders; + +abstract class SliderConstants { + protected static final int + DEFAULT_TICK_LABEL_DECIMAL_PLACES = 2, + DEFAULT_PANEL_HEIGHT = 65; +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/parts/sliders/panelless/PanellessSlider.java b/src/main/java/graphicsEngine/parts/sliders/panelless/PanellessSlider.java new file mode 100644 index 0000000..3803a39 --- /dev/null +++ b/src/main/java/graphicsEngine/parts/sliders/panelless/PanellessSlider.java @@ -0,0 +1,58 @@ +package graphicsEngine.parts.sliders.panelless; + +import java.awt.Color; +import javax.swing.JSlider; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import org.jetbrains.annotations.NotNull; + +/** + * A ticked slider with a change listener supporting dynamic tick value-conversion. + */ +abstract class PanellessSlider extends TickedSlider { + /** + * Creates a new panelless slider. + * + * @param backgroundColor Background color. (prevents flickering) + * @param range Value range. {min, max} + * @param initialValue Preferred initial value. (will change to the nearest corresponding tick) + * @param majorTickCount Number of major ticks. (excludes start; has to be greater than 1) + * @param minorTickCount Number of minor ticks between major ticks. (has to be greater than 1) + * @param tickLabelDecimalPlaces Number of decimal places for tick labels. + */ + protected PanellessSlider(@NotNull Color backgroundColor, + double @NotNull [] range, double initialValue, + int majorTickCount, int minorTickCount, + int tickLabelDecimalPlaces) { + super( + backgroundColor, + range, + majorTickCount, minorTickCount, + tickLabelDecimalPlaces); + setInitialValue(initialValue); + addChangeListener(newChangeListener()); + } + + private void setInitialValue(double value) { + double valueInRange = getValueInRange(value); // ensures that the value is within range + int tick = getTickFromValue(valueInRange); // gets the nearest tick + setValue(tick); // sets the initial tick + valueChanged(getValueFromTick(tick)); // sets the actual value to the value of the corresponding tick + } + + private @NotNull ChangeListener newChangeListener() { + return new ChangeListener() { + /** + * Invoked when the target of the listener has changed its state. + * + * @param e A ChangeEvent object. + */ + @Override + public void stateChanged(ChangeEvent e) { + JSlider source = (JSlider) e.getSource(); + valueChanged(getValueFromTick(source.getValue())); + } + }; + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/parts/sliders/panelless/PanellessSlider_Exponential.java b/src/main/java/graphicsEngine/parts/sliders/panelless/PanellessSlider_Exponential.java new file mode 100644 index 0000000..2ba5cac --- /dev/null +++ b/src/main/java/graphicsEngine/parts/sliders/panelless/PanellessSlider_Exponential.java @@ -0,0 +1,71 @@ +package graphicsEngine.parts.sliders.panelless; + +import java.awt.Color; + +import org.jetbrains.annotations.NotNull; + +/** + * TODO: + * add customizable base + * add reversibility + * add javadocs + */ +public abstract class PanellessSlider_Exponential extends PanellessSlider { + private double base; //Base of exponent for tick-value conversion. + + //TODO: add javadoc + public PanellessSlider_Exponential(@NotNull Color backgroundColor, + double[] bounds, double initialValue, + int majorTickCount, int minorTickCount, + int tickLabelDecimalPlaces) { + super( + backgroundColor, + bounds, initialValue, + majorTickCount, minorTickCount, + tickLabelDecimalPlaces); + } + + /** + * Prepares variables for tick-value conversion. + * + * @param majorTickCount Number of major ticks. (excludes start; has to be greater than 1) + * @param minorTickCount Number of minor ticks between major ticks. (has to be greater than 1) + */ + @Override + public final void setConversionConstants(int majorTickCount, int minorTickCount) { + double @NotNull [] range = getRange(); + double tickCount = majorTickCount * minorTickCount; + base = Math.pow( + range[1] - range[0] + 1, + 1 / tickCount); + } + + /** + * Gets the closest tick to a particular value. + * + * @param value Reference value. + * + * @return Closest tick number. + */ + @Override + public final int getTickFromValue(double value) { + double @NotNull [] range = getRange(); + double + dividend = Math.log(value + 1 - range[0]), + divisor = Math.log(base), + quotient = dividend / divisor; + return (int) quotient; + } + + /** + * Gets a value corresponding to a tick. + * + * @param tick Reference tick number. + * + * @return Corresponding value. + */ + @Override + public final double getValueFromTick(int tick) { + return Math.pow(base, tick) - 1 + getRange()[0]; + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/parts/sliders/panelless/PanellessSlider_Linear.java b/src/main/java/graphicsEngine/parts/sliders/panelless/PanellessSlider_Linear.java new file mode 100644 index 0000000..d591a4c --- /dev/null +++ b/src/main/java/graphicsEngine/parts/sliders/panelless/PanellessSlider_Linear.java @@ -0,0 +1,64 @@ +package graphicsEngine.parts.sliders.panelless; + +import java.awt.Color; + +import org.jetbrains.annotations.NotNull; + +/** + * TODO: + * inherit this from exponential slider with base 1 + * add reversibility + * add javadocs + */ +public abstract class PanellessSlider_Linear extends PanellessSlider { + private double tickValue; //Value of a tick for tick-value conversion. + + //TODO: add javadoc + public PanellessSlider_Linear(@NotNull Color backgroundColor, + double[] range, double initialValue, + int majorTickCount, int minorTickCount, + int tickLabelDecimalPlaces) { + super( + backgroundColor, + range, initialValue, + majorTickCount, minorTickCount, + tickLabelDecimalPlaces); + } + + /** + * Prepares variables for tick-value conversion. + * + * @param majorTickCount Number of major ticks. (excludes start; has to be greater than 1) + * @param minorTickCount Number of minor ticks between major ticks. (has to be greater than 1) + */ + @Override + public final void setConversionConstants(int majorTickCount, int minorTickCount) { + double @NotNull [] range = getRange(); + tickValue = (range[1] - range[0]) + / (majorTickCount * minorTickCount); + } + + /** + * Gets the closest tick to a particular value. + * + * @param value Reference value. + * + * @return Closest tick number. + */ + @Override + public final int getTickFromValue(double value) { + return (int) ((value - getRange()[0]) / tickValue); + } + + /** + * Gets a value corresponding to a tick. + * + * @param tick Reference tick number. + * + * @return Corresponding value. + */ + @Override + public final double getValueFromTick(int tick) { + return getRange()[0] + tick * tickValue; + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/parts/sliders/panelless/SimpleSlider.java b/src/main/java/graphicsEngine/parts/sliders/panelless/SimpleSlider.java new file mode 100644 index 0000000..59eeba4 --- /dev/null +++ b/src/main/java/graphicsEngine/parts/sliders/panelless/SimpleSlider.java @@ -0,0 +1,50 @@ +package graphicsEngine.parts.sliders.panelless; + +import java.util.Arrays; +import java.awt.Color; +import javax.swing.JSlider; + +import org.jetbrains.annotations.NotNull; + +/** + * A simple slider with the most basic swing settings and a range. + */ +abstract class SimpleSlider extends JSlider { + private final double @NotNull [] range; //Range of the slider {min, max} + + /** + * Creates a new SimpleSlider. + * + * @param backgroundColor Background color. (prevents flickering) + * @param range Value range. {min, max} + */ + protected SimpleSlider(@NotNull Color backgroundColor, + double @NotNull [] range) { + super(); + setFocusable(false); + setBackground(backgroundColor); //prevents flickering + this.range = Arrays.copyOf(range, 2); + } + + /** + * Gets the value range of this slider. + * + * @return Range as double[] {min, max}. + */ + protected final double @NotNull [] getRange() { + return range; + } + + /** + * Ensures that the provided value is within the value range. + * TODO: add reversibility support + * + * @param value Value to check. + * + * @return Value within range. + */ + protected final double getValueInRange(double value) { + double @NotNull [] range = getRange(); + return Math.max(range[0], Math.min(range[1], value)); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/parts/sliders/panelless/TickValueConvertible.java b/src/main/java/graphicsEngine/parts/sliders/panelless/TickValueConvertible.java new file mode 100644 index 0000000..e51fe1b --- /dev/null +++ b/src/main/java/graphicsEngine/parts/sliders/panelless/TickValueConvertible.java @@ -0,0 +1,39 @@ +package graphicsEngine.parts.sliders.panelless; + +/** + * An interface containing methods needed for tick-value conversion. + */ +interface TickValueConvertible { + /** + * Prepares variables for tick-value conversion. + * + * @param majorTickCount Number of major ticks. (excludes start; has to be greater than 1) + * @param minorTickCount Number of minor ticks between major ticks. (has to be greater than 1) + */ + void setConversionConstants(int majorTickCount, int minorTickCount); + + /** + * Gets the closest tick to a particular value. + * + * @param value Reference value. + * + * @return Closest tick number. + */ + int getTickFromValue(double value); + + /** + * Gets a value corresponding to a tick. + * + * @param tick Reference tick number. + * + * @return Corresponding value. + */ + double getValueFromTick(int tick); + + /** + * Performed upon changing the value. + * + * @param value The new value. + */ + void valueChanged(double value); +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/parts/sliders/panelless/TickedSlider.java b/src/main/java/graphicsEngine/parts/sliders/panelless/TickedSlider.java new file mode 100644 index 0000000..e24ae7b --- /dev/null +++ b/src/main/java/graphicsEngine/parts/sliders/panelless/TickedSlider.java @@ -0,0 +1,67 @@ +package graphicsEngine.parts.sliders.panelless; + +import java.util.Hashtable; +import java.awt.Color; +import javax.swing.JLabel; + +import org.jetbrains.annotations.NotNull; + +import consoleUtils.NumberFormatter; + +/** + * A simple slider with equidistant ticks and corresponding labels. + */ +abstract class TickedSlider extends SimpleSlider implements TickValueConvertible { + /** + * Creates a new TickedSlider. + * + * @param backgroundColor Background color. (prevents flickering) + * @param range Value range. {min, max} + * @param majorTickCount Number of major ticks. (excludes start; has to be greater than 1) + * @param minorTickCount Number of minor ticks between major ticks. (has to be greater than 1) + * @param tickLabelDecimalPlaces Number of decimal places for tick labels. + */ + protected TickedSlider(@NotNull Color backgroundColor, + double @NotNull [] range, + int majorTickCount, int minorTickCount, + int tickLabelDecimalPlaces) { + super(backgroundColor, range); + + setConversionConstants(majorTickCount, minorTickCount); + + setTicks(majorTickCount, minorTickCount); + setLabels(majorTickCount, minorTickCount, tickLabelDecimalPlaces); + } + + private void setTicks(int majorTickCount, int minorTickCount) { + setMinorTickSpacing(1); + setMajorTickSpacing(minorTickCount); + int totalTicks = majorTickCount * minorTickCount; + setMaximum(totalTicks); + setPaintTicks(true); + } + + private void setLabels(int majorTickCount, int minorTickCount, + int labelDecimalPlaces) { + setLabelTable(prepareLabelTable(majorTickCount, minorTickCount, labelDecimalPlaces)); + setPaintLabels(true); + } + + private @NotNull Hashtable<@NotNull Integer, @NotNull JLabel> prepareLabelTable( + int majorTickCount, int minorTickCount, + int labelDecimalPlaces) { + @NotNull Hashtable<@NotNull Integer, @NotNull JLabel> labelTable = new Hashtable<>(); + for (int i = 0; i <= majorTickCount; i++) { + int tickPosition = i * minorTickCount; + labelTable.put( + tickPosition, + newTickLabel(tickPosition, labelDecimalPlaces)); + } + return labelTable; + } + + private @NotNull JLabel newTickLabel(int tickPosition, int labelDecimalPlaces) { + return new JLabel(NumberFormatter.doubleToString( + getValueFromTick(tickPosition), labelDecimalPlaces)); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java index b85cb85..e6e2f69 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java @@ -3,7 +3,7 @@ import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; -import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.parts.labels.SimpleLabel; import graphicsEngine.presets.HeaderAndFooterPage; import graphicsEngine.presets.panels.AbstractFooter; import graphicsEngine.presets.panels.AbstractHeader; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java index 1ba048a..280a009 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java @@ -3,7 +3,7 @@ import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.StaticPanel; -import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.parts.labels.SimpleLabel; import java.awt.Color; import java.awt.Component; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java index 4a595de..7fd06ef 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java @@ -1,11 +1,10 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import graphicsEngine.Utilities; import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; import graphicsEngine.panels.StaticPanel; -import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.parts.labels.SimpleLabel; import graphicsEngine.presets.panels.VerticalPanel; import java.awt.*; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Center.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Center.java index b8a6494..84dd3be 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Center.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Center.java @@ -1,10 +1,9 @@ package graphicsEngineDemo.d5_featurePreview.demoPages.page3; -import graphicsEngine.Utilities; import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.DynamicPanel; -import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.parts.labels.SimpleLabel; import java.awt.Color; import java.awt.BorderLayout; @@ -24,6 +23,7 @@ protected Center(Page3 page) { //Add parts here } + //TODO: use parts.labels.DynamicLabel private static class DynamicLabel extends SimpleLabel { private final Page3 page; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/SidePanel.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/SidePanel.java index 7796e4c..80d509b 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/SidePanel.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/SidePanel.java @@ -2,7 +2,7 @@ import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; -import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.parts.labels.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.demoPages.PageWithPanel; import org.jetbrains.annotations.Nullable; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Center.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Center.java new file mode 100644 index 0000000..d958f5b --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Center.java @@ -0,0 +1,61 @@ +package graphicsEngineDemo.d5_featurePreview.demoPages.page4; + +import java.awt.*; + +import org.jetbrains.annotations.Nullable; + +import static consoleUtils.ConsoleUtils.printLine; + +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.DynamicPanel; +import graphicsEngine.parts.labels.SimpleLabel; + +class Center extends DynamicPanel { + protected Center(Page4 page) { + super( + null, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), + null); + //add(new DynamicLabel(page, Color.red), BorderLayout.PAGE_START); + add(new SimpleLabel("Demo 4", Color.white)); + //Add parts here + } + + /* + //TODO: use parts.labels.DynamicLabel + private static class DynamicLabel extends SimpleLabel { + private final Page3 page; + + protected DynamicLabel(Page3 page, + @Nullable Color textColor) { + this(page, textColor, null); + } + + protected DynamicLabel(Page3 page, + @Nullable Color textColor, + @Nullable Color background) { + super(null, textColor, background); + this.page = page; + } + + //calls either paint or update + @Override + public void repaint() { + printLine("label repaint happens"); + setText(getNewText()); + super.repaint(); + } + + private String getNewText() { + String valueString = "page=null"; + if (page != null) { + valueString = "data=null"; + if (page.data != null) { + valueString = String.valueOf(page.data.getValue()); + } + } + return "A dynamically changeable string. X: " + valueString; + } + }*/ +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Page4.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Page4.java new file mode 100644 index 0000000..0a7760e --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Page4.java @@ -0,0 +1,58 @@ +package graphicsEngineDemo.d5_featurePreview.demoPages.page4; + +import java.util.List; +import java.awt.event.ActionListener; +import javax.swing.*; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.presets.panels.VerticalPanel; +import graphicsEngineDemo.d5_featurePreview.demoPages.PageWithPanel; + +public class Page4 extends PageWithPanel { + private Page4() { + this(null, null); + } + + //TODO: add javadoc + public Page4(@Nullable List actionListenerList, + @Nullable SimpleColorScheme colors) { + super(actionListenerList, colors); + //setBackground(new Color(50, 50, 150)); + //data = new DataUpdater(); + } + + //TODO: add javadoc + @Override + public final @NotNull String getPageKey() { + return "page4"; + } + + //TODO: add javadoc + public static @NotNull String getStaticPageKey() { + return (new Page4()).getPageKey(); + } + + /** + * TODO: finish this javadoc + * + * @param colors + * @return + */ + @Override + public final @NotNull VerticalPanel getLeftSidePanel(@Nullable SimpleColorScheme colors) { + return new SidePanel(colors, null); + } + + /** + * TODO: finish this javadoc + * + * @return + */ + @Override + public @Nullable JPanel getPageCenter() { + return new Center(this); + } +} diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/SidePanel.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/SidePanel.java new file mode 100644 index 0000000..0e6be7b --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/SidePanel.java @@ -0,0 +1,23 @@ +package graphicsEngineDemo.d5_featurePreview.demoPages.page4; + +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.parts.labels.SimpleLabel; + +import graphicsEngineDemo.d5_featurePreview.demoPages.PageWithPanel; + +//TODO: add javadoc +class SidePanel extends PageWithPanel.CommonSidePanel { + private static final int WIDTH = 200; + + //TODO: add javadoc + protected SidePanel(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + super(colors, WIDTH, borderProperties); + add(new SimpleLabel("Demo page 4 - Side panel", getPanelColors().getSecondaryColor())); + add(new SimpleLabel("Some text", getPanelColors().getSecondaryColor())); + //Add parts here + } +} diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java index c415930..b2d027e 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java @@ -5,6 +5,7 @@ import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; import graphicsEngineDemo.d5_featurePreview.demoPages.page3.Page3; +import graphicsEngineDemo.d5_featurePreview.demoPages.page4.Page4; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -42,6 +43,8 @@ private boolean actionCheck(@NotNull ActionEvent e) { window.setActivePage(Page2.getStaticPageKey()); case Button_Page3.ACTION_COMMAND -> window.setActivePage(Page3.getStaticPageKey()); + case Button_Page4.ACTION_COMMAND -> + window.setActivePage(Page4.getStaticPageKey()); default -> { return false; } @@ -75,4 +78,13 @@ protected Button_Page3(@Nullable ActionListener actionListener) { super("Page 3", ACTION_COMMAND, actionListener); } } + + //TODO: add javadocs + public static class Button_Page4 extends SimpleJButton { + public static final String ACTION_COMMAND = "page_demo4"; + + protected Button_Page4(@Nullable ActionListener actionListener) { + super("Page 4", ACTION_COMMAND, actionListener); + } + } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java index 1be827e..2cdb97e 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java @@ -2,7 +2,7 @@ import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.parts.labels.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; import java.util.List; @@ -70,6 +70,7 @@ public DemoSelectPage(@Nullable List actionListenerList, add(new DemoSelectButtonListener.Button_Page1(demoSelectButtonListener)); add(new DemoSelectButtonListener.Button_Page2(demoSelectButtonListener)); add(new DemoSelectButtonListener.Button_Page3(demoSelectButtonListener)); + add(new DemoSelectButtonListener.Button_Page4(demoSelectButtonListener)); //Add more buttons here }}, BorderLayout.CENTER); return body; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java index f5c778b..75c77e1 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java @@ -1,7 +1,7 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage; import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.parts.labels.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; import java.util.List; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java index 070a72b..6e2fbc0 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java @@ -1,7 +1,7 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.startingPage; import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.parts.labels.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; import java.util.List; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java index 25db9fc..9636f03 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java @@ -10,6 +10,7 @@ import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; import graphicsEngineDemo.d5_featurePreview.demoPages.page3.Page3; +import graphicsEngineDemo.d5_featurePreview.demoPages.page4.Page4; import java.util.List; import java.util.ArrayList; @@ -39,6 +40,7 @@ public Window(@NotNull WindowManager windowManager) { add(new Page1(getHeaderListener(), HEADER_AND_FOOTER_COLORS)); add(new Page2(getHeaderListener(), HEADER_AND_FOOTER_COLORS)); add(new Page3(getDemoPage3Listeners(), HEADER_AND_FOOTER_COLORS)); + add(new Page4(getDemoPage4Listeners(), HEADER_AND_FOOTER_COLORS)); }}; } @@ -60,4 +62,10 @@ public Window(@NotNull WindowManager windowManager) { //TODO: add custom listener here return listeners; } + + private @NotNull List getDemoPage4Listeners() { + List listeners = getHeaderListener(); + //TODO: add custom listener here + return listeners; + } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/Footer.java b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/Footer.java index 545a9aa..7a74b23 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/Footer.java +++ b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/Footer.java @@ -3,7 +3,7 @@ import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; import graphicsEngine.panels.StaticPanel; -import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.parts.labels.SimpleLabel; import java.awt.Dimension; import javax.swing.BoxLayout; diff --git a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/TextLabel.java b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/TextLabel.java index ae48ccd..a8dad0e 100644 --- a/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/TextLabel.java +++ b/src/test/java/graphicsEngineSandbox/graphics/controlWindow/leftPanel/TextLabel.java @@ -2,7 +2,7 @@ import graphicsEngine.panels.BorderInterface; import graphicsEngine.panels.BorderProperties; -import graphicsEngine.parts.SimpleLabel; +import graphicsEngine.parts.labels.SimpleLabel; import java.awt.Dimension; import java.awt.Color; From dec140e2a49730aaf45c3be597bfd24585587ecf Mon Sep 17 00:00:00 2001 From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com> Date: Fri, 30 Dec 2022 00:42:58 +0200 Subject: [PATCH 10/11] 0.8.14 * page rework * src import optimization * pom and readme update --- ReadMe.md | 9 +- pom.xml | 33 +------ .../java/graphicsEngine/GraphicsAdapter.java | 8 +- .../graphicsEngine/input/InputChecker.java | 4 +- .../graphicsEngine/input/InputManager.java | 7 +- .../listeners/KeyboardListenerAdder.java | 8 +- .../input/listeners/ListenerAdder.java | 9 +- .../input/listeners/MouseListenerAdder.java | 6 +- .../input/listeners/WindowListenerAdder.java | 11 +-- .../{windows => pages}/AbstractPage.java | 8 +- .../pages/FullyPaneledPage.java | 84 +++++++++++++++++ .../pages/HeaderAndFooterPage.java | 89 +++++++++++++++++++ .../pages/HorizontalDivisionInterface.java | 23 +++++ .../pages/VerticalDivisionInterface.java | 24 +++++ .../panels/AbstractFooter.java | 7 +- .../panels/AbstractHeader.java | 7 +- .../pages/panels/AbstractLeftPanel.java | 17 ++++ .../pages/panels/AbstractRightPanel.java | 17 ++++ .../pages/panels/PanelLocation.java | 10 +++ .../panels/BorderProperties.java | 3 +- .../graphicsEngine/panels/DynamicPanel.java | 6 +- .../{presets => }/panels/HorizontalPanel.java | 8 +- .../graphicsEngine/panels/SimplePanel.java | 6 +- .../graphicsEngine/panels/StaticPanel.java | 4 +- .../{presets => }/panels/VerticalPanel.java | 8 +- .../{presets => parts}/SimpleJButton.java | 4 +- .../parts/sliders/PaneledSlider.java | 2 +- .../parts/sliders/SliderConstants.java | 2 + .../presets/HeaderAndFooterPage.java | 49 ---------- .../graphicsEngine/presets/SimpleOverlay.java | 6 +- .../windows/CommonWindowListener.java | 4 +- .../graphicsEngine/windows/WindowConfig.java | 2 +- .../graphicsEngine/windows/WindowUpdater.java | 6 +- .../windowTypes/AbstractLayeredWindow.java | 10 +-- .../windows/windowTypes/MultiPageWindow.java | 10 +-- .../windows/windowTypes/SimpleWindow.java | 8 +- .../windows/windowTypes/SinglePageWindow.java | 10 +-- .../d2_overlayDemo/ButtonListener.java | 2 +- .../d2_overlayDemo/Page.java | 34 ++++--- .../d2_overlayDemo/Window.java | 4 +- .../d3_twoPageDemo/Window.java | 2 +- .../pages/AbstractCommonPage.java | 46 +++++----- .../d3_twoPageDemo/parts/ButtonListener.java | 2 +- .../d3_twoPageDemo/parts/CommonFooter.java | 2 +- .../d3_twoPageDemo/parts/CommonHeader.java | 2 +- .../common/AbstractCommonPage.java | 48 ++-------- .../common/AbstractMenuPage.java | 32 +------ .../common/CommonFooter.java | 2 +- .../common/header/CommonHeader.java | 2 +- .../common/header/HeaderButtonListener.java | 2 +- .../demoPages/CommonDemoPage.java | 6 +- .../d5_featurePreview/demoPages/Page1.java | 39 ++++---- .../d5_featurePreview/demoPages/Page2.java | 12 ++- .../demoPages/PageWithPanel.java | 44 ++++----- .../demoPages/page3/Page3.java | 13 ++- .../demoPages/page4/Page4.java | 9 +- .../DemoSelectButtonListener.java | 2 +- .../demoSelectPage/DemoSelectPage.java | 28 ++++-- .../menuPages/settingsPage/SettingsPage.java | 23 +++-- .../menuPages/startingPage/StartingPage.java | 23 +++-- .../d5_featurePreview/window/Window.java | 2 +- 61 files changed, 542 insertions(+), 368 deletions(-) rename src/main/java/graphicsEngine/{windows => pages}/AbstractPage.java (97%) create mode 100644 src/main/java/graphicsEngine/pages/FullyPaneledPage.java create mode 100644 src/main/java/graphicsEngine/pages/HeaderAndFooterPage.java create mode 100644 src/main/java/graphicsEngine/pages/HorizontalDivisionInterface.java create mode 100644 src/main/java/graphicsEngine/pages/VerticalDivisionInterface.java rename src/main/java/graphicsEngine/{presets => pages}/panels/AbstractFooter.java (85%) rename src/main/java/graphicsEngine/{presets => pages}/panels/AbstractHeader.java (85%) create mode 100644 src/main/java/graphicsEngine/pages/panels/AbstractLeftPanel.java create mode 100644 src/main/java/graphicsEngine/pages/panels/AbstractRightPanel.java create mode 100644 src/main/java/graphicsEngine/pages/panels/PanelLocation.java rename src/main/java/graphicsEngine/{presets => }/panels/HorizontalPanel.java (80%) rename src/main/java/graphicsEngine/{presets => }/panels/VerticalPanel.java (80%) rename src/main/java/graphicsEngine/{presets => parts}/SimpleJButton.java (97%) delete mode 100644 src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java diff --git a/ReadMe.md b/ReadMe.md index cab1fe8..41fdec8 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -9,13 +9,16 @@ Free to use and modify for whatever purposes. No copyrights apply. ## Requirements +### For running and compiling + * JDK: 18 -* Maven compiler (source & target) : 18 -* [Maven Surefire Plugin](https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-surefire-plugin) : 3.0.0-M7 +* Maven compiler: 18 + +### Dependencies + * [JetBrains Java Annotations](https://mvnrepository.com/artifact/org.jetbrains/annotations) : 23.0.0 * [ThreadAbstraction](https://github.com/KruMF/ThreadAbstraction) : 0.4.2 * [FileHandler](https://github.com/KruMF/FileHandler) : 0.2.5 -* JUnit: Jupiter 5.9.0 ## Instructions diff --git a/pom.xml b/pom.xml index 8b7432c..5789bb8 100644 --- a/pom.xml +++ b/pom.xml @@ -6,19 +6,16 @@ com.github.KruMF GraphicsEngine - 0.8.13 + 0.8.14 UTF-8 18 18 - 3.0.0-M7 23.0.0 0.4.2 0.2.5 - - 5.9.0 @@ -29,12 +26,6 @@ - - org.apache.maven.plugins - maven-surefire-plugin - ${maven.surefire.version} - - org.jetbrains annotations @@ -51,27 +42,5 @@ FileHandler ${fileHandler.version} - - - org.junit.jupiter - junit-jupiter-engine - ${junit.jupiter.version} - test - - - org.junit.jupiter - junit-jupiter-api - ${junit.jupiter.version} - test - - - - - - maven-surefire-plugin - ${maven.surefire.version} - - - \ No newline at end of file diff --git a/src/main/java/graphicsEngine/GraphicsAdapter.java b/src/main/java/graphicsEngine/GraphicsAdapter.java index 5482918..dcac33c 100644 --- a/src/main/java/graphicsEngine/GraphicsAdapter.java +++ b/src/main/java/graphicsEngine/GraphicsAdapter.java @@ -1,12 +1,12 @@ package graphicsEngine; -import graphicsEngine.windows.WindowManager; -import graphicsEngine.windows.WindowUpdater; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import static consoleUtils.ConsoleUtils.printLine; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.WindowUpdater; /** * A graphics adapter class. diff --git a/src/main/java/graphicsEngine/input/InputChecker.java b/src/main/java/graphicsEngine/input/InputChecker.java index 7c16cc2..83165a1 100644 --- a/src/main/java/graphicsEngine/input/InputChecker.java +++ b/src/main/java/graphicsEngine/input/InputChecker.java @@ -1,10 +1,10 @@ package graphicsEngine.input; -import graphicsEngineOld.parts.containers.ButtonContainer; - import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.NotNull; +import graphicsEngineOld.parts.containers.ButtonContainer; + /** * A class for checking user input. * Intended to be added to a page. diff --git a/src/main/java/graphicsEngine/input/InputManager.java b/src/main/java/graphicsEngine/input/InputManager.java index a2e22c9..8898b24 100644 --- a/src/main/java/graphicsEngine/input/InputManager.java +++ b/src/main/java/graphicsEngine/input/InputManager.java @@ -1,11 +1,14 @@ package graphicsEngine.input; +import javax.swing.JFrame; + +import org.jetbrains.annotations.NotNull; + import graphicsEngine.input.listeners.ListenerAdder; + import graphicsEngineOld.engine.ExitManager; import graphicsEngineOld.engine.data.windowParameters.WindowParameters; -import org.jetbrains.annotations.NotNull; -import javax.swing.*; /** * Input manager for managing input. diff --git a/src/main/java/graphicsEngine/input/listeners/KeyboardListenerAdder.java b/src/main/java/graphicsEngine/input/listeners/KeyboardListenerAdder.java index d9cb98e..b30006d 100644 --- a/src/main/java/graphicsEngine/input/listeners/KeyboardListenerAdder.java +++ b/src/main/java/graphicsEngine/input/listeners/KeyboardListenerAdder.java @@ -1,13 +1,13 @@ package graphicsEngine.input.listeners; -import graphicsEngine.input.InputData; - -import javax.swing.*; -import java.awt.event.KeyEvent; import java.awt.event.KeyListener; +import java.awt.event.KeyEvent; +import javax.swing.JFrame; import org.jetbrains.annotations.NotNull; +import graphicsEngine.input.InputData; + /** * Keyboard listener adder class. */ diff --git a/src/main/java/graphicsEngine/input/listeners/ListenerAdder.java b/src/main/java/graphicsEngine/input/listeners/ListenerAdder.java index ab2796a..60e330b 100644 --- a/src/main/java/graphicsEngine/input/listeners/ListenerAdder.java +++ b/src/main/java/graphicsEngine/input/listeners/ListenerAdder.java @@ -1,13 +1,14 @@ package graphicsEngine.input.listeners; +import javax.swing.JFrame; + +import org.jetbrains.annotations.NotNull; + import graphicsEngine.input.InputData; + import graphicsEngineOld.engine.ExitManager; import graphicsEngineOld.engine.data.windowParameters.WindowParameters; -import javax.swing.*; - -import org.jetbrains.annotations.NotNull; - /** * Default window, keyboard and mouse listener adder for input. * Extendable for extra listeners. diff --git a/src/main/java/graphicsEngine/input/listeners/MouseListenerAdder.java b/src/main/java/graphicsEngine/input/listeners/MouseListenerAdder.java index 33d5351..b966660 100644 --- a/src/main/java/graphicsEngine/input/listeners/MouseListenerAdder.java +++ b/src/main/java/graphicsEngine/input/listeners/MouseListenerAdder.java @@ -1,12 +1,12 @@ package graphicsEngine.input.listeners; -import graphicsEngine.input.InputData; - -import javax.swing.*; +import javax.swing.JFrame; import java.awt.event.*; import org.jetbrains.annotations.NotNull; +import graphicsEngine.input.InputData; + /** * Mouse listener adder class. */ diff --git a/src/main/java/graphicsEngine/input/listeners/WindowListenerAdder.java b/src/main/java/graphicsEngine/input/listeners/WindowListenerAdder.java index 0032b29..5f0c410 100644 --- a/src/main/java/graphicsEngine/input/listeners/WindowListenerAdder.java +++ b/src/main/java/graphicsEngine/input/listeners/WindowListenerAdder.java @@ -1,10 +1,6 @@ package graphicsEngine.input.listeners; -import graphicsEngine.input.InputData; -import graphicsEngineOld.engine.ExitManager; -import graphicsEngineOld.engine.data.windowParameters.WindowParameters; - -import javax.swing.*; +import javax.swing.JFrame; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.WindowEvent; @@ -12,6 +8,11 @@ import org.jetbrains.annotations.NotNull; +import graphicsEngine.input.InputData; + +import graphicsEngineOld.engine.ExitManager; +import graphicsEngineOld.engine.data.windowParameters.WindowParameters; + /** * Window listener adder class. */ diff --git a/src/main/java/graphicsEngine/windows/AbstractPage.java b/src/main/java/graphicsEngine/pages/AbstractPage.java similarity index 97% rename from src/main/java/graphicsEngine/windows/AbstractPage.java rename to src/main/java/graphicsEngine/pages/AbstractPage.java index 78e0212..b81d137 100644 --- a/src/main/java/graphicsEngine/windows/AbstractPage.java +++ b/src/main/java/graphicsEngine/pages/AbstractPage.java @@ -1,7 +1,4 @@ -package graphicsEngine.windows; - -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.DynamicPanel; +package graphicsEngine.pages; import java.util.Objects; import java.util.List; @@ -12,6 +9,9 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.DynamicPanel; + //TODO: add javadoc public abstract class AbstractPage extends DynamicPanel { diff --git a/src/main/java/graphicsEngine/pages/FullyPaneledPage.java b/src/main/java/graphicsEngine/pages/FullyPaneledPage.java new file mode 100644 index 0000000..ab74cb7 --- /dev/null +++ b/src/main/java/graphicsEngine/pages/FullyPaneledPage.java @@ -0,0 +1,84 @@ +package graphicsEngine.pages; + +import java.util.List; +import java.awt.Color; +import java.awt.BorderLayout; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.SimplePanel; +import graphicsEngine.panels.DynamicPanel; +import graphicsEngine.pages.panels.PanelLocation; +import graphicsEngine.pages.panels.AbstractLeftPanel; +import graphicsEngine.pages.panels.AbstractRightPanel; + +//TODO: add javadocs +public abstract class FullyPaneledPage extends HeaderAndFooterPage implements HorizontalDivisionInterface { + private @Nullable AbstractLeftPanel leftPanel; + private @Nullable AbstractRightPanel rightPanel; + private @Nullable DynamicPanel centralPanel; + + // + public FullyPaneledPage(@Nullable List actionListenerList, + @Nullable Color backgroundColor) { + super(actionListenerList, backgroundColor); + } + + // + @Override + public final @NotNull DynamicPanel getBody(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + return new DynamicPanel(new SimpleColorScheme( + ColorUtilities.DEFAULT_COLOR_TRANSPARENT, + null)) { + { + setLayout(new BorderLayout(0, 0)); + setSidePanels(colors, borderProperties); + addSidePanels(this); + setCentralPanel(borderProperties); + addCentralPanel(this); + } + }; + } + + private void setSidePanels(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + leftPanel = getLeftPanel(colors, borderProperties); + rightPanel = getRightPanel(colors, borderProperties); + } + + private void addSidePanels(@NotNull DynamicPanel body) { + if (leftPanel != null) { + body.add(leftPanel, BorderLayout.WEST); + } + if (rightPanel != null) { + body.add(rightPanel, BorderLayout.EAST); + } + } + + private void setCentralPanel(@Nullable BorderProperties borderProperties) { + centralPanel = getCentralPanel(borderProperties); + } + + private void addCentralPanel(@NotNull DynamicPanel body) { + if (centralPanel != null) { + body.add(centralPanel, BorderLayout.CENTER); + } + } + + // + @Override + public final @Nullable SimplePanel getPanelByLocation(@NotNull PanelLocation location) { + return switch (location) { + case WEST -> leftPanel; + case EAST -> rightPanel; + case CENTER -> centralPanel; + default -> super.getPanelByLocation(location); + }; + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/pages/HeaderAndFooterPage.java b/src/main/java/graphicsEngine/pages/HeaderAndFooterPage.java new file mode 100644 index 0000000..20c3065 --- /dev/null +++ b/src/main/java/graphicsEngine/pages/HeaderAndFooterPage.java @@ -0,0 +1,89 @@ +package graphicsEngine.pages; + +import java.util.List; +import java.awt.Color; +import java.awt.BorderLayout; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.SimplePanel; +import graphicsEngine.panels.DynamicPanel; +import graphicsEngine.pages.panels.AbstractFooter; +import graphicsEngine.pages.panels.AbstractHeader; +import graphicsEngine.pages.panels.PanelLocation; + +//TODO: add javadoc +public abstract class HeaderAndFooterPage extends AbstractPage implements VerticalDivisionInterface { + private @Nullable AbstractHeader header; + private @Nullable AbstractFooter footer; + private @Nullable DynamicPanel body; + + //TODO: add javadoc + public HeaderAndFooterPage(@Nullable List actionListenerList, + @Nullable Color backgroundColor) { + super(actionListenerList, backgroundColor); + } + + //this has to be called manually in constructor in order to support custom parameters + //TODO: add javadoc + public final void prepareFixedPanels(@Nullable SimpleColorScheme headerAndFooterColors, + @Nullable SimpleColorScheme bodyColors, + @Nullable BorderProperties borderProperties) { + setLayout(new BorderLayout(0, 0)); + setHeaderAndFooter(headerAndFooterColors, borderProperties); + addHeaderAndFooter(); + setBody(bodyColors, borderProperties); + addBody(); + } + + private void setHeaderAndFooter(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + header = getHeader(colors, borderProperties); + footer = getFooter(colors, borderProperties); + } + + private void addHeaderAndFooter() { + if (header != null) { + add(header, BorderLayout.NORTH); + } + if (footer != null) { + add(footer, BorderLayout.SOUTH); + } + } + + private void setBody(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + body = getBody(colors, borderProperties); + } + + private void addBody() { + if (body != null) { + add(body, BorderLayout.CENTER); + } + } + + // + public @Nullable SimplePanel getPanelByLocation(@NotNull PanelLocation location) { + try { + return switch (location) { + case NORTH -> header; + case SOUTH -> footer; + case CENTER -> body; + default -> throw new UndefinedPanelLocationException(); + }; + } catch (UndefinedPanelLocationException e) { + e.printStackTrace(); + return null; + } + } + + private static class UndefinedPanelLocationException extends Exception { + protected UndefinedPanelLocationException() { + super("Panel in such location not defined!"); + } + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/pages/HorizontalDivisionInterface.java b/src/main/java/graphicsEngine/pages/HorizontalDivisionInterface.java new file mode 100644 index 0000000..8374b88 --- /dev/null +++ b/src/main/java/graphicsEngine/pages/HorizontalDivisionInterface.java @@ -0,0 +1,23 @@ +package graphicsEngine.pages; + +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.DynamicPanel; +import graphicsEngine.pages.panels.AbstractLeftPanel; +import graphicsEngine.pages.panels.AbstractRightPanel; + +//TODO: add javadocs +public interface HorizontalDivisionInterface { + // + @Nullable AbstractLeftPanel getLeftPanel(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties); + + // + @Nullable AbstractRightPanel getRightPanel(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties); + + // + @Nullable DynamicPanel getCentralPanel(@Nullable BorderProperties borderProperties); +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/pages/VerticalDivisionInterface.java b/src/main/java/graphicsEngine/pages/VerticalDivisionInterface.java new file mode 100644 index 0000000..d893215 --- /dev/null +++ b/src/main/java/graphicsEngine/pages/VerticalDivisionInterface.java @@ -0,0 +1,24 @@ +package graphicsEngine.pages; + +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.DynamicPanel; +import graphicsEngine.pages.panels.AbstractFooter; +import graphicsEngine.pages.panels.AbstractHeader; + +//TODO: add javadocs +public interface VerticalDivisionInterface { + // + @Nullable AbstractHeader getHeader(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties); + + // + @Nullable AbstractFooter getFooter(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties); + + // + @Nullable DynamicPanel getBody(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties); +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/panels/AbstractFooter.java b/src/main/java/graphicsEngine/pages/panels/AbstractFooter.java similarity index 85% rename from src/main/java/graphicsEngine/presets/panels/AbstractFooter.java rename to src/main/java/graphicsEngine/pages/panels/AbstractFooter.java index 1095797..f2585cc 100644 --- a/src/main/java/graphicsEngine/presets/panels/AbstractFooter.java +++ b/src/main/java/graphicsEngine/pages/panels/AbstractFooter.java @@ -1,9 +1,10 @@ -package graphicsEngine.presets.panels; +package graphicsEngine.pages.panels; + +import org.jetbrains.annotations.Nullable; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; - -import org.jetbrains.annotations.Nullable; +import graphicsEngine.panels.HorizontalPanel; //TODO: add javadoc public abstract class AbstractFooter extends HorizontalPanel { diff --git a/src/main/java/graphicsEngine/presets/panels/AbstractHeader.java b/src/main/java/graphicsEngine/pages/panels/AbstractHeader.java similarity index 85% rename from src/main/java/graphicsEngine/presets/panels/AbstractHeader.java rename to src/main/java/graphicsEngine/pages/panels/AbstractHeader.java index a7dec23..7d6456d 100644 --- a/src/main/java/graphicsEngine/presets/panels/AbstractHeader.java +++ b/src/main/java/graphicsEngine/pages/panels/AbstractHeader.java @@ -1,9 +1,10 @@ -package graphicsEngine.presets.panels; +package graphicsEngine.pages.panels; + +import org.jetbrains.annotations.Nullable; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; - -import org.jetbrains.annotations.Nullable; +import graphicsEngine.panels.HorizontalPanel; //TODO: add javadoc public abstract class AbstractHeader extends HorizontalPanel { diff --git a/src/main/java/graphicsEngine/pages/panels/AbstractLeftPanel.java b/src/main/java/graphicsEngine/pages/panels/AbstractLeftPanel.java new file mode 100644 index 0000000..9775c8e --- /dev/null +++ b/src/main/java/graphicsEngine/pages/panels/AbstractLeftPanel.java @@ -0,0 +1,17 @@ +package graphicsEngine.pages.panels; + +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.VerticalPanel; + +//TODO: add javadocs +public abstract class AbstractLeftPanel extends VerticalPanel { + //TODO: add javadoc + public AbstractLeftPanel(@Nullable SimpleColorScheme colors, + int width, + @Nullable BorderProperties borderProperties) { + super(colors, width, borderProperties); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/pages/panels/AbstractRightPanel.java b/src/main/java/graphicsEngine/pages/panels/AbstractRightPanel.java new file mode 100644 index 0000000..0cfdcfe --- /dev/null +++ b/src/main/java/graphicsEngine/pages/panels/AbstractRightPanel.java @@ -0,0 +1,17 @@ +package graphicsEngine.pages.panels; + +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.VerticalPanel; + +//TODO: add javadocs +public abstract class AbstractRightPanel extends VerticalPanel { + //TODO: add javadoc + public AbstractRightPanel(@Nullable SimpleColorScheme colors, + int width, + @Nullable BorderProperties borderProperties) { + super(colors, width, borderProperties); + } +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/pages/panels/PanelLocation.java b/src/main/java/graphicsEngine/pages/panels/PanelLocation.java new file mode 100644 index 0000000..efa793b --- /dev/null +++ b/src/main/java/graphicsEngine/pages/panels/PanelLocation.java @@ -0,0 +1,10 @@ +package graphicsEngine.pages.panels; + +//TODO: add javadoc +public enum PanelLocation { + NORTH, + SOUTH, + WEST, + EAST, + CENTER +} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/panels/BorderProperties.java b/src/main/java/graphicsEngine/panels/BorderProperties.java index 208fc06..12b4feb 100644 --- a/src/main/java/graphicsEngine/panels/BorderProperties.java +++ b/src/main/java/graphicsEngine/panels/BorderProperties.java @@ -1,11 +1,12 @@ package graphicsEngine.panels; -import java.awt.Color; import java.util.Objects; +import java.awt.Color; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +//TODO: add javadocs public class BorderProperties implements BorderInterface { private @NotNull Color borderColor = DEFAULT_BORDER_COLOR; private boolean drawBorders = DEFAULT_BORDER_STATE; diff --git a/src/main/java/graphicsEngine/panels/DynamicPanel.java b/src/main/java/graphicsEngine/panels/DynamicPanel.java index d5ee888..d342994 100644 --- a/src/main/java/graphicsEngine/panels/DynamicPanel.java +++ b/src/main/java/graphicsEngine/panels/DynamicPanel.java @@ -1,13 +1,13 @@ package graphicsEngine.panels; -import graphicsEngine.colors.SimpleColorScheme; - import java.awt.Component; import java.awt.Dimension; import org.jetbrains.annotations.Nullable; -//TODO: add javadoc +import graphicsEngine.colors.SimpleColorScheme; + +//TODO: add javadocs public class DynamicPanel extends SimplePanel { //auto-stretching panel diff --git a/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java b/src/main/java/graphicsEngine/panels/HorizontalPanel.java similarity index 80% rename from src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java rename to src/main/java/graphicsEngine/panels/HorizontalPanel.java index 453ff36..0ca99f8 100644 --- a/src/main/java/graphicsEngine/presets/panels/HorizontalPanel.java +++ b/src/main/java/graphicsEngine/panels/HorizontalPanel.java @@ -1,13 +1,11 @@ -package graphicsEngine.presets.panels; - -import graphicsEngine.panels.StaticPanel; -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.BorderProperties; +package graphicsEngine.panels; import java.awt.Dimension; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.SimpleColorScheme; + //TODO: add javadoc public abstract class HorizontalPanel extends StaticPanel { //TODO: add javadoc diff --git a/src/main/java/graphicsEngine/panels/SimplePanel.java b/src/main/java/graphicsEngine/panels/SimplePanel.java index aaa5b16..8565660 100644 --- a/src/main/java/graphicsEngine/panels/SimplePanel.java +++ b/src/main/java/graphicsEngine/panels/SimplePanel.java @@ -1,7 +1,5 @@ package graphicsEngine.panels; -import graphicsEngine.colors.SimpleColorScheme; - import java.util.Objects; import java.awt.Dimension; import javax.swing.JPanel; @@ -9,8 +7,10 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.SimpleColorScheme; + //TODO: add javadoc -abstract class SimplePanel extends JPanel { +public abstract class SimplePanel extends JPanel { private @NotNull SimpleColorScheme colors = new SimpleColorScheme(); private @NotNull BorderProperties borderProperties = new BorderProperties(); diff --git a/src/main/java/graphicsEngine/panels/StaticPanel.java b/src/main/java/graphicsEngine/panels/StaticPanel.java index 0ab6c47..7b0a82e 100644 --- a/src/main/java/graphicsEngine/panels/StaticPanel.java +++ b/src/main/java/graphicsEngine/panels/StaticPanel.java @@ -1,11 +1,11 @@ package graphicsEngine.panels; -import graphicsEngine.colors.SimpleColorScheme; - import java.awt.Dimension; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.SimpleColorScheme; + //TODO: add javadoc public class StaticPanel extends SimplePanel { diff --git a/src/main/java/graphicsEngine/presets/panels/VerticalPanel.java b/src/main/java/graphicsEngine/panels/VerticalPanel.java similarity index 80% rename from src/main/java/graphicsEngine/presets/panels/VerticalPanel.java rename to src/main/java/graphicsEngine/panels/VerticalPanel.java index 75e3727..cef2b06 100644 --- a/src/main/java/graphicsEngine/presets/panels/VerticalPanel.java +++ b/src/main/java/graphicsEngine/panels/VerticalPanel.java @@ -1,13 +1,11 @@ -package graphicsEngine.presets.panels; - -import graphicsEngine.panels.StaticPanel; -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.BorderProperties; +package graphicsEngine.panels; import java.awt.Dimension; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.SimpleColorScheme; + //TODO: add javadoc public abstract class VerticalPanel extends StaticPanel { //TODO: add javadoc diff --git a/src/main/java/graphicsEngine/presets/SimpleJButton.java b/src/main/java/graphicsEngine/parts/SimpleJButton.java similarity index 97% rename from src/main/java/graphicsEngine/presets/SimpleJButton.java rename to src/main/java/graphicsEngine/parts/SimpleJButton.java index 090bfee..b19788f 100644 --- a/src/main/java/graphicsEngine/presets/SimpleJButton.java +++ b/src/main/java/graphicsEngine/parts/SimpleJButton.java @@ -1,8 +1,8 @@ -package graphicsEngine.presets; +package graphicsEngine.parts; +import java.util.Objects; import javax.swing.JButton; import java.awt.event.ActionListener; -import java.util.Objects; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/graphicsEngine/parts/sliders/PaneledSlider.java b/src/main/java/graphicsEngine/parts/sliders/PaneledSlider.java index 9874617..ef0ba30 100644 --- a/src/main/java/graphicsEngine/parts/sliders/PaneledSlider.java +++ b/src/main/java/graphicsEngine/parts/sliders/PaneledSlider.java @@ -6,8 +6,8 @@ import org.jetbrains.annotations.Nullable; import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.HorizontalPanel; import graphicsEngine.parts.labels.DynamicLabel; -import graphicsEngine.presets.panels.HorizontalPanel; //TODO: add javadocs abstract class PaneledSlider extends HorizontalPanel { diff --git a/src/main/java/graphicsEngine/parts/sliders/SliderConstants.java b/src/main/java/graphicsEngine/parts/sliders/SliderConstants.java index e559eb7..a3705e3 100644 --- a/src/main/java/graphicsEngine/parts/sliders/SliderConstants.java +++ b/src/main/java/graphicsEngine/parts/sliders/SliderConstants.java @@ -1,6 +1,8 @@ package graphicsEngine.parts.sliders; +//TODO: add javadocs abstract class SliderConstants { + // protected static final int DEFAULT_TICK_LABEL_DECIMAL_PLACES = 2, DEFAULT_PANEL_HEIGHT = 65; diff --git a/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java b/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java deleted file mode 100644 index 8fb939f..0000000 --- a/src/main/java/graphicsEngine/presets/HeaderAndFooterPage.java +++ /dev/null @@ -1,49 +0,0 @@ -package graphicsEngine.presets; - -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.BorderProperties; -import graphicsEngine.windows.AbstractPage; -import graphicsEngine.presets.panels.AbstractFooter; -import graphicsEngine.presets.panels.AbstractHeader; - -import java.util.List; -import java.awt.Color; -import java.awt.BorderLayout; -import java.awt.event.ActionListener; - -import org.jetbrains.annotations.Nullable; - -//TODO: add javadoc -public abstract class HeaderAndFooterPage extends AbstractPage { - //TODO: add javadoc - public HeaderAndFooterPage(@Nullable List actionListenerList, - @Nullable Color backgroundColor, - @Nullable SimpleColorScheme headerAndFooterColors, - @Nullable BorderProperties borderProperties) { - super(actionListenerList, backgroundColor); - setLayout(new BorderLayout(0, 0)); - addHeaderAndFooter(headerAndFooterColors, borderProperties); - } - - private void addHeaderAndFooter(@Nullable SimpleColorScheme headerAndFooterColors, - @Nullable BorderProperties borderProperties) { - AbstractHeader header = getHeader(headerAndFooterColors, borderProperties); - if (header != null) { - add(header, BorderLayout.NORTH); - } - AbstractFooter footer = getFooter(headerAndFooterColors, borderProperties); - if (footer != null) { - add(footer, BorderLayout.SOUTH); - } - } - - //TODO: add javadoc - public abstract @Nullable AbstractHeader getHeader( - @Nullable SimpleColorScheme headerColors, - @Nullable BorderProperties borderProperties); - - //TODO: add javadoc - public abstract @Nullable AbstractFooter getFooter( - @Nullable SimpleColorScheme footerColors, - @Nullable BorderProperties borderProperties); -} \ No newline at end of file diff --git a/src/main/java/graphicsEngine/presets/SimpleOverlay.java b/src/main/java/graphicsEngine/presets/SimpleOverlay.java index bde9f2a..f7b3048 100644 --- a/src/main/java/graphicsEngine/presets/SimpleOverlay.java +++ b/src/main/java/graphicsEngine/presets/SimpleOverlay.java @@ -1,8 +1,5 @@ package graphicsEngine.presets; -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.StaticPanel; - import java.util.Objects; import java.awt.Color; import java.awt.Graphics; @@ -10,6 +7,9 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.StaticPanel; + //TODO: add javadocs public class SimpleOverlay extends StaticPanel { private static final Color DEFAULT_COLOR = new Color(0, 0, 0, 100); diff --git a/src/main/java/graphicsEngine/windows/CommonWindowListener.java b/src/main/java/graphicsEngine/windows/CommonWindowListener.java index 9353afb..f52bf80 100644 --- a/src/main/java/graphicsEngine/windows/CommonWindowListener.java +++ b/src/main/java/graphicsEngine/windows/CommonWindowListener.java @@ -2,12 +2,12 @@ import java.awt.event.WindowEvent; import java.awt.event.WindowListener; - -import static consoleUtils.ConsoleUtils.printLine; import static javax.swing.WindowConstants.EXIT_ON_CLOSE; import org.jetbrains.annotations.NotNull; +import static consoleUtils.ConsoleUtils.printLine; + //TODO: add javadocs class CommonWindowListener implements WindowListener { private final WindowManager windowManager; diff --git a/src/main/java/graphicsEngine/windows/WindowConfig.java b/src/main/java/graphicsEngine/windows/WindowConfig.java index 36f7be5..a0a05e4 100644 --- a/src/main/java/graphicsEngine/windows/WindowConfig.java +++ b/src/main/java/graphicsEngine/windows/WindowConfig.java @@ -1,6 +1,6 @@ package graphicsEngine.windows; -import javax.swing.*; +import javax.swing.WindowConstants; //TODO: add javadocs public class WindowConfig { diff --git a/src/main/java/graphicsEngine/windows/WindowUpdater.java b/src/main/java/graphicsEngine/windows/WindowUpdater.java index 7f504d5..f0eb998 100644 --- a/src/main/java/graphicsEngine/windows/WindowUpdater.java +++ b/src/main/java/graphicsEngine/windows/WindowUpdater.java @@ -1,11 +1,11 @@ package graphicsEngine.windows; -import DelayCalculator.DelayOptions; -import ThreadAbstraction.AbstractUpdater; - import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.NotNull; +import DelayCalculator.DelayOptions; +import ThreadAbstraction.AbstractUpdater; + /** * A class for joining window and the thread that updates it. */ diff --git a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java index 49d98f0..22a785b 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/AbstractLayeredWindow.java @@ -1,10 +1,5 @@ package graphicsEngine.windows.windowTypes; -import graphicsEngine.windows.WindowManager; -import graphicsEngine.windows.WindowConfig; -import graphicsEngine.windows.AbstractWindow; -import graphicsEngine.presets.SimpleOverlay; - import java.util.Objects; import java.util.List; import java.awt.Component; @@ -13,6 +8,11 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.AbstractWindow; +import graphicsEngine.presets.SimpleOverlay; + /** * An abstract layered window containing contents and an overlay. */ diff --git a/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java index fa79567..13990dd 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/MultiPageWindow.java @@ -1,10 +1,5 @@ package graphicsEngine.windows.windowTypes; -import graphicsEngine.windows.WindowManager; -import graphicsEngine.windows.WindowConfig; -import graphicsEngine.windows.AbstractPage; -import graphicsEngine.presets.SimpleOverlay; - import java.util.Objects; import java.util.List; import java.util.Map; @@ -14,6 +9,11 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.pages.AbstractPage; +import graphicsEngine.presets.SimpleOverlay; + // TODO: finish this and add javadoc public abstract class MultiPageWindow extends AbstractLayeredWindow { private static final String EMPTY_KEY = ""; diff --git a/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java index 58241f3..e73478b 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/SimpleWindow.java @@ -1,15 +1,15 @@ package graphicsEngine.windows.windowTypes; -import graphicsEngine.windows.WindowManager; -import graphicsEngine.windows.WindowConfig; -import graphicsEngine.windows.AbstractWindow; - import java.util.List; import java.awt.event.ActionListener; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.AbstractWindow; + /** * A simple window; has only contents. */ diff --git a/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java b/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java index 9b75dc3..79b7625 100644 --- a/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java +++ b/src/main/java/graphicsEngine/windows/windowTypes/SinglePageWindow.java @@ -1,10 +1,5 @@ package graphicsEngine.windows.windowTypes; -import graphicsEngine.windows.WindowManager; -import graphicsEngine.windows.WindowConfig; -import graphicsEngine.windows.AbstractPage; -import graphicsEngine.presets.SimpleOverlay; - import java.util.Objects; import java.util.List; import java.awt.event.ActionListener; @@ -12,6 +7,11 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.pages.AbstractPage; +import graphicsEngine.presets.SimpleOverlay; + // TODO: finish this and add javadoc public abstract class SinglePageWindow extends AbstractLayeredWindow { //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/ButtonListener.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/ButtonListener.java index d3392c9..1698dc4 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/ButtonListener.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/ButtonListener.java @@ -1,6 +1,6 @@ package graphicsEngineDemo.d2_overlayDemo; -import graphicsEngine.presets.SimpleJButton; +import graphicsEngine.parts.SimpleJButton; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java index 1d1f588..4d286de 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java @@ -2,15 +2,16 @@ import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; -import graphicsEngine.presets.HeaderAndFooterPage; -import graphicsEngine.presets.panels.AbstractHeader; -import graphicsEngine.presets.panels.AbstractFooter; +import graphicsEngine.pages.HeaderAndFooterPage; +import graphicsEngine.pages.panels.AbstractHeader; +import graphicsEngine.pages.panels.AbstractFooter; import java.util.List; import java.util.ArrayList; import java.awt.event.ActionListener; import javax.swing.BoxLayout; +import graphicsEngine.panels.DynamicPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -18,14 +19,19 @@ class Page extends HeaderAndFooterPage { private ButtonListener headerButtonListener; - protected Page(@Nullable SimpleColorScheme panelColors, - @Nullable ActionListener actionListener) { - super(new ArrayList<>() { - { - add(actionListener); - } - }, null, - panelColors, null); + protected Page(@Nullable ActionListener actionListener, + @Nullable SimpleColorScheme panelColors) { + super( + new ArrayList<>() {{ + add(actionListener); + }}, + null); + prepareFixedPanels(panelColors, null, null); + } + + @Override + public String getPageKey() { + return "page"; } /** @@ -64,9 +70,11 @@ protected Page(@Nullable SimpleColorScheme panelColors, return new Footer(footerColors, borderProperties); } + //TODO: add javadoc @Override - public String getPageKey() { - return "page"; + public @Nullable DynamicPanel getBody(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + return null; } private static class CommonHeader extends AbstractHeader { diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Window.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Window.java index db33f9a..73f962f 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Window.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Window.java @@ -1,6 +1,6 @@ package graphicsEngineDemo.d2_overlayDemo; -import graphicsEngine.windows.AbstractPage; +import graphicsEngine.pages.AbstractPage; import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.windowTypes.SinglePageWindow; @@ -63,7 +63,7 @@ class Window extends SinglePageWindow { */ @Override public final @NotNull AbstractPage getPage() { - return new Page(null, headerButtonListener); + return new Page(headerButtonListener, null); } //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java index 1298ef2..5084c11 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java @@ -3,7 +3,7 @@ import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.windowTypes.MultiPageWindow; -import graphicsEngine.windows.AbstractPage; +import graphicsEngine.pages.AbstractPage; import graphicsEngineDemo.d3_twoPageDemo.pages.Page1; import graphicsEngineDemo.d3_twoPageDemo.pages.Page2; import graphicsEngineDemo.d3_twoPageDemo.parts.ButtonListener; diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java index e6e2f69..2fcae00 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java @@ -3,10 +3,11 @@ import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.DynamicPanel; import graphicsEngine.parts.labels.SimpleLabel; -import graphicsEngine.presets.HeaderAndFooterPage; -import graphicsEngine.presets.panels.AbstractFooter; -import graphicsEngine.presets.panels.AbstractHeader; +import graphicsEngine.pages.HeaderAndFooterPage; +import graphicsEngine.pages.panels.AbstractFooter; +import graphicsEngine.pages.panels.AbstractHeader; import graphicsEngineDemo.d3_twoPageDemo.parts.CommonHeader; import graphicsEngineDemo.d3_twoPageDemo.parts.ButtonListener; import graphicsEngineDemo.d3_twoPageDemo.parts.CommonFooter; @@ -16,7 +17,6 @@ import java.util.Objects; import java.awt.Color; import java.awt.event.ActionListener; -import javax.swing.JPanel; import javax.swing.BoxLayout; import org.jetbrains.annotations.NotNull; @@ -26,23 +26,28 @@ abstract class AbstractCommonPage extends HeaderAndFooterPage { private ButtonListener headerButtonListener; - private static final Color + private static final @NotNull Color DEFAULT_BACKGROUND = ColorUtilities.DEFAULT_COLOR_OPAQUE, LABEL_TEXT_COLOR = new Color(30, 30, 150); - private static final String DEFAULT_LABEL = "No label defined for this page"; - private final String labelText; + private static final @NotNull String DEFAULT_LABEL = "No label defined for this page"; + private final @NotNull String labelText; //TODO: add javadoc protected AbstractCommonPage(@Nullable ActionListener buttonListener, @Nullable String labelText) { - super(new ArrayList<>() { - { - add(buttonListener); - } - }, - null, null, null); + super( + new ArrayList<>() {{ + add(buttonListener); + }}, + null); this.labelText = Objects.requireNonNullElse(labelText, DEFAULT_LABEL); - addCenterAndLabel(); + prepareFixedPanels(null, getBodyColors(), null); + } + + private static SimpleColorScheme getBodyColors() { + return new SimpleColorScheme( + ColorUtilities.DEFAULT_COLOR_TRANSPARENT, + LABEL_TEXT_COLOR); } /** @@ -81,17 +86,18 @@ protected AbstractCommonPage(@Nullable ActionListener buttonListener, return new CommonFooter(footerColors, borderProperties); } - private void addCenterAndLabel() { - add(new JPanel() {{ + @Override + public @Nullable DynamicPanel getBody(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + return new DynamicPanel(colors) {{ setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); - setBackground(ColorUtilities.DEFAULT_COLOR_TRANSPARENT); - add(new SimpleLabel(labelText, LABEL_TEXT_COLOR)); - }}); + add(new SimpleLabel(labelText, getPanelColors().getSecondaryColor())); + }}; } //TODO: add javadoc @Override - public void setBackground(Color background) { + public void setBackground(@Nullable Color background) { super.setBackground(Objects.requireNonNullElse(background, DEFAULT_BACKGROUND)); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/ButtonListener.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/ButtonListener.java index b2512a7..33c122c 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/ButtonListener.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/ButtonListener.java @@ -1,6 +1,6 @@ package graphicsEngineDemo.d3_twoPageDemo.parts; -import graphicsEngine.presets.SimpleJButton; +import graphicsEngine.parts.SimpleJButton; import graphicsEngineDemo.d3_twoPageDemo.Window; import graphicsEngineDemo.d3_twoPageDemo.pages.Page1; import graphicsEngineDemo.d3_twoPageDemo.pages.Page2; diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java index 1fd5b7f..9253994 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java @@ -2,7 +2,7 @@ import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; -import graphicsEngine.presets.panels.AbstractFooter; +import graphicsEngine.pages.panels.AbstractFooter; import org.jetbrains.annotations.Nullable; diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java index a82c28f..ea8449b 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java @@ -2,7 +2,7 @@ import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; -import graphicsEngine.presets.panels.AbstractHeader; +import graphicsEngine.pages.panels.AbstractHeader; import javax.swing.BoxLayout; import java.awt.event.ActionListener; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java index db04cf0..2c964ff 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java @@ -1,21 +1,15 @@ package graphicsEngineDemo.d5_featurePreview.common; -import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; -import graphicsEngine.panels.DynamicPanel; -import graphicsEngine.presets.HeaderAndFooterPage; -import graphicsEngine.presets.panels.AbstractHeader; -import graphicsEngine.presets.panels.AbstractFooter; +import graphicsEngine.pages.HeaderAndFooterPage; +import graphicsEngine.pages.panels.AbstractHeader; +import graphicsEngine.pages.panels.AbstractFooter; import graphicsEngineDemo.d5_featurePreview.common.header.CommonHeader; import graphicsEngineDemo.d5_featurePreview.common.header.HeaderButtonListener; -import java.util.Objects; import java.util.List; -import java.awt.Component; -import java.awt.BorderLayout; import java.awt.event.ActionListener; -import javax.swing.JPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -25,11 +19,8 @@ public abstract class AbstractCommonPage extends HeaderAndFooterPage { private HeaderButtonListener headerButtonListener; //TODO: add javadoc - public AbstractCommonPage(@Nullable List actionListenerList, - @Nullable SimpleColorScheme colors) { - super(actionListenerList, null, colors, null); - setBodyParameters(); - addBody(getPageBody()); + public AbstractCommonPage(@Nullable List actionListenerList) { + super(actionListenerList, null); } /** @@ -56,40 +47,19 @@ public AbstractCommonPage(@Nullable List actionListenerList, //TODO: add javadoc @Override - public @NotNull AbstractHeader getHeader(@Nullable SimpleColorScheme headerColors, + public @NotNull AbstractHeader getHeader(@Nullable SimpleColorScheme colors, @Nullable BorderProperties borderProperties) { - return new CommonHeader(headerColors, borderProperties, headerButtonListener); + return new CommonHeader(colors, borderProperties, headerButtonListener); } //TODO: add javadoc @Override - public @NotNull AbstractFooter getFooter(@Nullable SimpleColorScheme footerColors, + public @NotNull AbstractFooter getFooter(@Nullable SimpleColorScheme colors, @Nullable BorderProperties borderProperties) { - return new CommonFooter(footerColors, borderProperties); + return new CommonFooter(colors, borderProperties); } //TODO: add javadoc @Override public final void addParts() {} - - //TODO: add javadoc - public abstract void setBodyParameters(); - - private void addBody(@Nullable Component center) { - add(new DynamicPanel( - null, - new SimpleColorScheme( - ColorUtilities.DEFAULT_COLOR_TRANSPARENT, - null), - null) { - @Override - public void addParts() { - setLayout(new BorderLayout(0, 0)); - add(Objects.requireNonNullElse(center, new JPanel()), BorderLayout.CENTER); - } - }); - } - - //TODO: add javadoc - public abstract @Nullable Component getPageBody(); } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java index eaa400d..aa22498 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractMenuPage.java @@ -1,42 +1,14 @@ package graphicsEngineDemo.d5_featurePreview.common; -import graphicsEngine.Utilities; -import graphicsEngine.colors.ColorUtilities; -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.StaticPanel; - import java.util.List; -import java.awt.Component; -import java.awt.BorderLayout; import java.awt.event.ActionListener; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadoc public abstract class AbstractMenuPage extends AbstractCommonPage { //TODO: add javadoc - public AbstractMenuPage(@Nullable List actionListenerList, - @Nullable SimpleColorScheme colors) { - super(actionListenerList, colors); - } - - //TODO: add javadoc - @Override - public void setBodyParameters() { - //TODO: set body parameters here - } - - //TODO: add javadoc - @Override - public @NotNull Component getPageBody() { - return new StaticPanel( - null, - new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), - null) { - { - setLayout(new BorderLayout(0, 0)); - } - }; + public AbstractMenuPage(@Nullable List actionListenerList) { + super(actionListenerList); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java index aadfc0f..a9fe4bb 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java @@ -2,7 +2,7 @@ import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; -import graphicsEngine.presets.panels.AbstractFooter; +import graphicsEngine.pages.panels.AbstractFooter; import org.jetbrains.annotations.Nullable; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java index a545c4c..27cc0b8 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java @@ -2,7 +2,7 @@ import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; -import graphicsEngine.presets.panels.AbstractHeader; +import graphicsEngine.pages.panels.AbstractHeader; import javax.swing.BoxLayout; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/HeaderButtonListener.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/HeaderButtonListener.java index 1472a0b..7b010af 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/HeaderButtonListener.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/HeaderButtonListener.java @@ -1,6 +1,6 @@ package graphicsEngineDemo.d5_featurePreview.common.header; -import graphicsEngine.presets.SimpleJButton; +import graphicsEngine.parts.SimpleJButton; import graphicsEngineDemo.d5_featurePreview.window.Window; import graphicsEngineDemo.d5_featurePreview.menuPages.startingPage.StartingPage; import graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage.SettingsPage; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java index 4ef18fb..4cf6542 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java @@ -1,6 +1,5 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import graphicsEngine.colors.SimpleColorScheme; import graphicsEngineDemo.d5_featurePreview.common.AbstractCommonPage; import java.util.List; @@ -11,8 +10,7 @@ //TODO: add javadoc public abstract class CommonDemoPage extends AbstractCommonPage { //TODO: add javadoc - public CommonDemoPage(@Nullable List actionListenerList, - @Nullable SimpleColorScheme colors) { - super(actionListenerList, colors); + public CommonDemoPage(@Nullable List actionListenerList) { + super(actionListenerList); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java index 280a009..3e770ce 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java @@ -2,11 +2,11 @@ import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.StaticPanel; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.DynamicPanel; import graphicsEngine.parts.labels.SimpleLabel; import java.awt.Color; -import java.awt.Component; import java.awt.BorderLayout; import java.awt.event.ActionListener; import java.util.List; @@ -16,6 +16,8 @@ //TODO: add javadoc public class Page1 extends CommonDemoPage { + private static final @NotNull Color BACKGROUND_COLOR = new Color(150, 50, 50); + private Page1() { this(null, null); } @@ -23,8 +25,12 @@ private Page1() { //TODO: add javadoc public Page1(@Nullable List actionListenerList, @Nullable SimpleColorScheme colors) { - super(actionListenerList, colors); - setBackground(new Color(150, 50, 50)); + super(actionListenerList); + setBackground(BACKGROUND_COLOR); + prepareFixedPanels( + colors, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, Color.white), + null); } //TODO: add javadoc @@ -38,24 +44,13 @@ public Page1(@Nullable List actionListenerList, return (new Page1()).getPageKey(); } - //TODO: add javadoc - @Override - public void setBodyParameters() { - //TODO: set body parameters here - } - - //TODO: add javadoc + // @Override - public @Nullable Component getPageBody() { - return new StaticPanel( - null, - new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, Color.white), - null) { - { - setLayout(new BorderLayout(0, 0)); - add(new SimpleLabel("Demo 1", getPanelColors().getSecondaryColor()), BorderLayout.NORTH); - //Add parts to body here - } - }; + public @Nullable DynamicPanel getBody(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + return new DynamicPanel(colors) {{ + setLayout(new BorderLayout(0, 0)); + add(new SimpleLabel("Demo 1", getPanelColors().getSecondaryColor()), BorderLayout.NORTH); + }}; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java index 7fd06ef..f2cd532 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java @@ -5,7 +5,7 @@ import graphicsEngine.panels.BorderProperties; import graphicsEngine.panels.StaticPanel; import graphicsEngine.parts.labels.SimpleLabel; -import graphicsEngine.presets.panels.VerticalPanel; +import graphicsEngine.panels.VerticalPanel; import java.awt.*; import java.util.List; @@ -17,6 +17,8 @@ //TODO: add javadoc public class Page2 extends PageWithPanel { + private static final @NotNull Color BACKGROUND_COLOR = new Color(50, 150, 50); + private Page2() { this(null, null); } @@ -24,8 +26,12 @@ private Page2() { //TODO: add javadoc public Page2(@Nullable List actionListenerList, @Nullable SimpleColorScheme colors) { - super(actionListenerList, colors); - setBackground(new Color(50, 150, 50)); + super(actionListenerList); + setBackground(BACKGROUND_COLOR); + prepareFixedPanels( + colors, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), + null); } //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java index a9fe387..80f3fbf 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java @@ -1,14 +1,12 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; import graphicsEngine.panels.DynamicPanel; -import graphicsEngine.presets.panels.VerticalPanel; +import graphicsEngine.panels.VerticalPanel; import graphicsEngineDemo.d5_featurePreview.common.CommonColors; import java.util.List; -import java.awt.Component; import java.awt.BorderLayout; import java.awt.event.ActionListener; import javax.swing.JPanel; @@ -20,36 +18,26 @@ public abstract class PageWithPanel extends CommonDemoPage { private SimpleColorScheme sidePanelColors; //TODO: add javadoc - public PageWithPanel(@Nullable List actionListenerList, - @Nullable SimpleColorScheme colors) { - super(actionListenerList, colors); - } - - //TODO: add javadoc - @Override - public void setBodyParameters() { + public PageWithPanel(@Nullable List actionListenerList) { + super(actionListenerList); sidePanelColors = CommonColors.SIDE_PANEL_COLORS; } - //TODO: add javadoc + // @Override - public @Nullable Component getPageBody() { - return new DynamicPanel( - null, - new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), - null) { - { - setLayout(new BorderLayout(0, 0)); - VerticalPanel leftSidePanel = getLeftSidePanel(sidePanelColors); - if (leftSidePanel != null) { - add(leftSidePanel, BorderLayout.WEST); - } - JPanel centralPanel = getPageCenter(); - if (centralPanel != null) { - add(centralPanel, BorderLayout.CENTER); - } + public @Nullable DynamicPanel getBody(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + return new DynamicPanel(colors) {{ + setLayout(new BorderLayout(0, 0)); + @Nullable VerticalPanel leftSidePanel = getLeftSidePanel(sidePanelColors); + if (leftSidePanel != null) { + add(leftSidePanel, BorderLayout.WEST); + } + @Nullable JPanel centralPanel = getPageCenter(); + if (centralPanel != null) { + add(centralPanel, BorderLayout.CENTER); } - }; + }}; } //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Page3.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Page3.java index 67a2bb2..26a01c0 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Page3.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Page3.java @@ -1,7 +1,8 @@ package graphicsEngineDemo.d5_featurePreview.demoPages.page3; +import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.presets.panels.VerticalPanel; +import graphicsEngine.panels.VerticalPanel; import graphicsEngineDemo.d5_featurePreview.demoPages.PageWithPanel; import graphicsEngineDemo.d5_featurePreview.demoPages.page3.data.DataUpdater; @@ -15,6 +16,8 @@ //TODO: add javadoc public class Page3 extends PageWithPanel { + private static final @NotNull Color BACKGROUND_COLOR = new Color(50, 50, 150); + public final DataUpdater data; private Page3() { @@ -24,9 +27,13 @@ private Page3() { //TODO: add javadoc public Page3(@Nullable List actionListenerList, @Nullable SimpleColorScheme colors) { - super(actionListenerList, colors); - setBackground(new Color(50, 50, 150)); + super(actionListenerList); + setBackground(BACKGROUND_COLOR); data = new DataUpdater(); + prepareFixedPanels( + colors, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), + null); } //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Page4.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Page4.java index 0a7760e..9b592cd 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Page4.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Page4.java @@ -4,11 +4,12 @@ import java.awt.event.ActionListener; import javax.swing.*; +import graphicsEngine.colors.ColorUtilities; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.presets.panels.VerticalPanel; +import graphicsEngine.panels.VerticalPanel; import graphicsEngineDemo.d5_featurePreview.demoPages.PageWithPanel; public class Page4 extends PageWithPanel { @@ -19,9 +20,13 @@ private Page4() { //TODO: add javadoc public Page4(@Nullable List actionListenerList, @Nullable SimpleColorScheme colors) { - super(actionListenerList, colors); + super(actionListenerList); //setBackground(new Color(50, 50, 150)); //data = new DataUpdater(); + prepareFixedPanels( + colors, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), + null); } //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java index b2d027e..1e45b39 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java @@ -1,6 +1,6 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage; -import graphicsEngine.presets.SimpleJButton; +import graphicsEngine.parts.SimpleJButton; import graphicsEngineDemo.d5_featurePreview.window.Window; import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java index 2cdb97e..5f259a5 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java @@ -2,6 +2,8 @@ import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.DynamicPanel; import graphicsEngine.parts.labels.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; @@ -23,7 +25,11 @@ private DemoSelectPage() { //TODO: add javadoc public DemoSelectPage(@Nullable List actionListenerList, @Nullable SimpleColorScheme colors) { - super(actionListenerList, colors); + super(actionListenerList); + prepareFixedPanels( + colors, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), + null); } //TODO: add javadoc @@ -59,12 +65,19 @@ public DemoSelectPage(@Nullable List actionListenerList, return remainder; } - //TODO: add javadoc + // @Override - public @NotNull Component getPageBody() { - JPanel body = (JPanel) super.getPageBody(); - body.add(new SimpleLabel("Select demo:", Color.white), BorderLayout.NORTH); - body.add(new JPanel() {{ + public @Nullable DynamicPanel getBody(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + return new DynamicPanel(colors) {{ + setLayout(new BorderLayout(0, 0)); + add(new SimpleLabel("Select demo:", Color.white), BorderLayout.NORTH); + add(getButtonPanel(), BorderLayout.CENTER); + }}; + } + + private @NotNull JPanel getButtonPanel() { + return new JPanel() {{ setBackground(ColorUtilities.DEFAULT_COLOR_TRANSPARENT); setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); add(new DemoSelectButtonListener.Button_Page1(demoSelectButtonListener)); @@ -72,7 +85,6 @@ public DemoSelectPage(@Nullable List actionListenerList, add(new DemoSelectButtonListener.Button_Page3(demoSelectButtonListener)); add(new DemoSelectButtonListener.Button_Page4(demoSelectButtonListener)); //Add more buttons here - }}, BorderLayout.CENTER); - return body; + }}; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java index 75c77e1..5ade161 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java @@ -1,13 +1,15 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage; +import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.DynamicPanel; import graphicsEngine.parts.labels.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; import java.util.List; import java.awt.*; import java.awt.event.ActionListener; -import javax.swing.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -21,7 +23,11 @@ private SettingsPage() { //TODO: add javadoc public SettingsPage(@Nullable List actionListenerList, @Nullable SimpleColorScheme colors) { - super(actionListenerList, colors); + super(actionListenerList); + prepareFixedPanels( + colors, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), + null); } //TODO: add javadoc @@ -35,12 +41,13 @@ public SettingsPage(@Nullable List actionListenerList, return (new SettingsPage()).getPageKey(); } - //TODO: add javadoc + // @Override - public @NotNull Component getPageBody() { - JPanel body = (JPanel) super.getPageBody(); - body.add(new SimpleLabel("Settings page", Color.white), BorderLayout.NORTH); - //Add parts here - return body; + public @Nullable DynamicPanel getBody(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + return new DynamicPanel(colors) {{ + setLayout(new BorderLayout(0, 0)); + add(new SimpleLabel("Settings page", Color.white), BorderLayout.NORTH); + }}; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java index 6e2fbc0..dca0b22 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java @@ -1,13 +1,15 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.startingPage; +import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.DynamicPanel; import graphicsEngine.parts.labels.SimpleLabel; import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; import java.util.List; import java.awt.*; import java.awt.event.ActionListener; -import javax.swing.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -21,7 +23,11 @@ private StartingPage() { //TODO: add javadoc public StartingPage(@Nullable List actionListenerList, @Nullable SimpleColorScheme colors) { - super(actionListenerList, colors); + super(actionListenerList); + prepareFixedPanels( + colors, + new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), + null); } //TODO: add javadoc @@ -35,12 +41,13 @@ public StartingPage(@Nullable List actionListenerList, return (new StartingPage()).getPageKey(); } - //TODO: add javadoc + // @Override - public @NotNull Component getPageBody() { - JPanel body = (JPanel) super.getPageBody(); - body.add(new SimpleLabel("Starting page", Color.white), BorderLayout.NORTH); - //Add parts here - return body; + public @Nullable DynamicPanel getBody(@Nullable SimpleColorScheme colors, + @Nullable BorderProperties borderProperties) { + return new DynamicPanel(colors) {{ + setLayout(new BorderLayout(0, 0)); + add(new SimpleLabel("Starting page", Color.white), BorderLayout.NORTH); + }}; } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java index 9636f03..bd40031 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java @@ -1,7 +1,7 @@ package graphicsEngineDemo.d5_featurePreview.window; import graphicsEngine.windows.WindowManager; -import graphicsEngine.windows.AbstractPage; +import graphicsEngine.pages.AbstractPage; import graphicsEngineDemo.d5_featurePreview.common.header.HeaderButtonListener; import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectButtonListener; import graphicsEngineDemo.d5_featurePreview.menuPages.startingPage.StartingPage; From 75ab6c4e4e80f4f89c7b5eb757f089abc7bc73bd Mon Sep 17 00:00:00 2001 From: Oskars AA <66279792+Krumuvecis@users.noreply.github.com> Date: Fri, 13 Jan 2023 02:28:26 +0200 Subject: [PATCH 11/11] 0.8.15 * renamed `prepareFixedPanels()` to `initializePanels()` for paneled pages * test improvements: * some refactoring * import optimization * docs improvements --- pom.xml | 2 +- .../graphicsEngine/pages/AbstractPage.java | 10 +- .../pages/HeaderAndFooterPage.java | 8 +- .../d1_simplestDemo/Main.java | 7 +- .../d1_simplestDemo/ReadMe.md | 2 + .../d2_overlayDemo/ButtonListener.java | 95 ------------------- .../d2_overlayDemo/Main.java | 1 + .../d2_overlayDemo/Overlay.java | 20 ---- .../d2_overlayDemo/ReadMe.md | 4 + .../d2_overlayDemo/Window.java | 70 +++++++------- .../d2_overlayDemo/buttons/Button1.java | 18 ++++ .../d2_overlayDemo/buttons/Button2.java | 18 ++++ .../d2_overlayDemo/buttons/Button3.java | 18 ++++ .../d2_overlayDemo/buttons/Button4.java | 18 ++++ .../buttons/ButtonListener.java | 50 ++++++++++ .../d2_overlayDemo/overlay/Overlay.java | 42 ++++++++ .../{ => overlay}/OverlayColors.java | 8 +- .../d2_overlayDemo/page/Footer.java | 18 ++++ .../d2_overlayDemo/page/Header.java | 32 +++++++ .../d2_overlayDemo/{ => page}/Page.java | 70 +++++--------- .../d3_twoPageDemo/Main.java | 1 + .../d3_twoPageDemo/Window.java | 19 ++-- .../pages/AbstractCommonPage.java | 25 ++--- .../d3_twoPageDemo/pages/Page1.java | 5 +- .../d3_twoPageDemo/pages/Page2.java | 5 +- .../d3_twoPageDemo/parts/ButtonListener.java | 15 +-- .../d3_twoPageDemo/parts/CommonFooter.java | 4 +- .../d3_twoPageDemo/parts/CommonHeader.java | 10 +- .../d4_multiAdapterDemo/Main.java | 5 +- .../d5_featurePreview/Main.java | 1 + .../common/AbstractCommonPage.java | 13 +-- .../common/CommonColors.java | 9 +- .../common/CommonFooter.java | 4 +- .../common/header/CommonHeader.java | 8 +- .../common/header/HeaderButtonListener.java | 17 ++-- .../demoPages/CommonDemoPage.java | 4 +- .../d5_featurePreview/demoPages/Page1.java | 17 ++-- .../d5_featurePreview/demoPages/Page2.java | 19 ++-- .../demoPages/PageWithPanel.java | 13 +-- .../demoPages/page3/Center.java | 13 +-- .../demoPages/page3/Page3.java | 15 +-- .../demoPages/page3/SidePanel.java | 7 +- .../demoPages/page4/Center.java | 7 +- .../demoPages/page4/Page4.java | 10 +- .../demoPages/page4/SidePanel.java | 2 +- .../DemoSelectButtonListener.java | 17 ++-- .../demoSelectPage/DemoSelectPage.java | 21 ++-- .../menuPages/settingsPage/SettingsPage.java | 18 ++-- .../menuPages/startingPage/StartingPage.java | 18 ++-- .../d5_featurePreview/window/Window.java | 21 ++-- .../window/WindowUtilities.java | 4 +- 51 files changed, 482 insertions(+), 376 deletions(-) delete mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/ButtonListener.java delete mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/Overlay.java create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button1.java create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button2.java create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button3.java create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button4.java create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/ButtonListener.java create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/overlay/Overlay.java rename src/test/java/graphicsEngineDemo/d2_overlayDemo/{ => overlay}/OverlayColors.java (65%) create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/page/Footer.java create mode 100644 src/test/java/graphicsEngineDemo/d2_overlayDemo/page/Header.java rename src/test/java/graphicsEngineDemo/d2_overlayDemo/{ => page}/Page.java (50%) diff --git a/pom.xml b/pom.xml index 5789bb8..0b01028 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.KruMF GraphicsEngine - 0.8.14 + 0.8.15 UTF-8 diff --git a/src/main/java/graphicsEngine/pages/AbstractPage.java b/src/main/java/graphicsEngine/pages/AbstractPage.java index b81d137..1a2fd78 100644 --- a/src/main/java/graphicsEngine/pages/AbstractPage.java +++ b/src/main/java/graphicsEngine/pages/AbstractPage.java @@ -22,7 +22,7 @@ public AbstractPage() { } //TODO: add javadoc - public AbstractPage(@Nullable List actionListenerList, + public AbstractPage(@Nullable List<@Nullable ActionListener> actionListenerList, @Nullable Color backgroundColor) { super( null, @@ -31,6 +31,9 @@ public AbstractPage(@Nullable List actionListenerList, addListeners(actionListenerList); } + //TODO: add javadoc + public abstract @NotNull String getPageKey(); + /** * Adds known listeners to this page. * Override this to add custom listeners. @@ -39,10 +42,7 @@ public AbstractPage(@Nullable List actionListenerList, * * @return Remaining unknown listeners. */ - public @NotNull List addListeners(@Nullable List list) { + public @NotNull List<@Nullable ActionListener> addListeners(@Nullable List<@Nullable ActionListener> list) { return Objects.requireNonNullElse(list, new ArrayList<>()); } - - //TODO: add javadoc - public abstract String getPageKey(); } \ No newline at end of file diff --git a/src/main/java/graphicsEngine/pages/HeaderAndFooterPage.java b/src/main/java/graphicsEngine/pages/HeaderAndFooterPage.java index 20c3065..8495e86 100644 --- a/src/main/java/graphicsEngine/pages/HeaderAndFooterPage.java +++ b/src/main/java/graphicsEngine/pages/HeaderAndFooterPage.java @@ -30,9 +30,9 @@ public HeaderAndFooterPage(@Nullable List actionListenerList, //this has to be called manually in constructor in order to support custom parameters //TODO: add javadoc - public final void prepareFixedPanels(@Nullable SimpleColorScheme headerAndFooterColors, - @Nullable SimpleColorScheme bodyColors, - @Nullable BorderProperties borderProperties) { + public final void initializePanels(@Nullable SimpleColorScheme headerAndFooterColors, + @Nullable SimpleColorScheme bodyColors, + @Nullable BorderProperties borderProperties) { setLayout(new BorderLayout(0, 0)); setHeaderAndFooter(headerAndFooterColors, borderProperties); addHeaderAndFooter(); @@ -66,7 +66,7 @@ private void addBody() { } } - // + //TODO: add javadoc public @Nullable SimplePanel getPanelByLocation(@NotNull PanelLocation location) { try { return switch (location) { diff --git a/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java b/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java index 6e28853..77e1c38 100644 --- a/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d1_simplestDemo/Main.java @@ -1,16 +1,17 @@ package graphicsEngineDemo.d1_simplestDemo; +import org.jetbrains.annotations.NotNull; + import graphicsEngine.GraphicsAdapter; +import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowUpdater; -import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.windowTypes.SimpleWindow; -import org.jetbrains.annotations.NotNull; - /** * Simplest possible use of the GraphicsEngine. * Everything contained in just one class. + * See ReadMe.md for more info. */ public class Main { diff --git a/src/test/java/graphicsEngineDemo/d1_simplestDemo/ReadMe.md b/src/test/java/graphicsEngineDemo/d1_simplestDemo/ReadMe.md index 129d401..068ea32 100644 --- a/src/test/java/graphicsEngineDemo/d1_simplestDemo/ReadMe.md +++ b/src/test/java/graphicsEngineDemo/d1_simplestDemo/ReadMe.md @@ -4,6 +4,8 @@ This is a demo demonstrating the simplest possible use of the Graphics Engine. +Starts a blank SimpleWindow. + Everything contained in just one class. ## Instructions diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/ButtonListener.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/ButtonListener.java deleted file mode 100644 index 1698dc4..0000000 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/ButtonListener.java +++ /dev/null @@ -1,95 +0,0 @@ -package graphicsEngineDemo.d2_overlayDemo; - -import graphicsEngine.parts.SimpleJButton; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import static consoleUtils.ConsoleUtils.printLine; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -/** - * A class for containing buttons. - */ -class ButtonListener implements ActionListener { - private final Window window; - - //TODO: add javadocs - ButtonListener(@NotNull Window window) { - this.window = window; - } - - /** - * Invoked when an action occurs. - * - * @param e the event to be processed - */ - @Override - public void actionPerformed(ActionEvent e) { - if (actionCheck(e)) return; - printLine("A button has been pressed but no action set up"); - } - - private boolean actionCheck(@NotNull ActionEvent e) { - switch (e.getActionCommand()) { - case Button1.ACTION_COMMAND -> - window.showOverlay(); - case Button2.ACTION_COMMAND -> - window.hideOverlay(); - case Button3.ACTION_COMMAND -> - window.toggleOverlay(); - case Button4.ACTION_COMMAND -> - window.toggleOverlayColor(); - default -> { - return false; - } - } - return true; - } - - /** - * A simple button for showing the overlay. - */ - protected static class Button1 extends SimpleJButton { - public static final String ACTION_COMMAND = "show"; - - protected Button1(@Nullable ActionListener actionListener) { - super("Show", ACTION_COMMAND, actionListener); - } - } - - /** - * A simple button for hiding the overlay. - */ - protected static class Button2 extends SimpleJButton { - public static final String ACTION_COMMAND = "hide"; - - protected Button2(@Nullable ActionListener actionListener) { - super("Hide", ACTION_COMMAND, actionListener); - } - } - - /** - * A simple button for toggling the visibility of the overlay. - */ - protected static class Button3 extends SimpleJButton { - public static final String ACTION_COMMAND = "toggle"; - - protected Button3(@Nullable ActionListener actionListener) { - super("Toggle visibility", ACTION_COMMAND, actionListener); - } - } - - /** - * A simple button for toggling the color of the overlay. - */ - protected static class Button4 extends SimpleJButton { - public static final String ACTION_COMMAND = "color"; - - protected Button4(@Nullable ActionListener actionListener) { - super("Toggle color", ACTION_COMMAND, actionListener); - } - } -} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java index aacc041..aa732aa 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Main.java @@ -5,6 +5,7 @@ /** * GraphicsEngine demo demonstrating the use of overlays. + * See ReadMe.md for more info. */ public class Main { /** diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Overlay.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Overlay.java deleted file mode 100644 index ede4598..0000000 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Overlay.java +++ /dev/null @@ -1,20 +0,0 @@ -package graphicsEngineDemo.d2_overlayDemo; - -import graphicsEngine.presets.SimpleOverlay; - -import java.awt.event.ActionListener; -import javax.swing.BoxLayout; - -import org.jetbrains.annotations.Nullable; - -/** - * TODO: finish this javadoc - */ -class Overlay extends SimpleOverlay { - //TODO: add javadoc - protected Overlay(@Nullable ActionListener actionListener) { - super(OverlayColors.RED); - setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); - add(new ButtonListener.Button4(actionListener)); - } -} diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/ReadMe.md b/src/test/java/graphicsEngineDemo/d2_overlayDemo/ReadMe.md index f95897b..fcfde0b 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/ReadMe.md +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/ReadMe.md @@ -4,6 +4,10 @@ This is a demo for demonstrating the overlay functionality. +Launches a SinglePageWindow with an overlay. + +Contains buttons for toggling overlay visibility and color. + ## Instructions Run `Main.main(String[] args)` to launch this demo. \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Window.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Window.java index 73f962f..7be6e33 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Window.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/Window.java @@ -1,34 +1,45 @@ package graphicsEngineDemo.d2_overlayDemo; -import graphicsEngine.pages.AbstractPage; -import graphicsEngine.windows.WindowConfig; -import graphicsEngine.windows.WindowManager; -import graphicsEngine.windows.windowTypes.SinglePageWindow; - import java.util.List; -import java.awt.Color; import java.awt.event.ActionListener; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.windowTypes.SinglePageWindow; +import graphicsEngine.pages.AbstractPage; +import graphicsEngine.presets.SimpleOverlay; + +import graphicsEngineDemo.d2_overlayDemo.page.Page; +import graphicsEngineDemo.d2_overlayDemo.overlay.Overlay; +import graphicsEngineDemo.d2_overlayDemo.buttons.ButtonListener; + /** * The window to display. */ -class Window extends SinglePageWindow { - private static final String WINDOW_TITLE = "Overlay demo"; - - private boolean overlayColorState; - private ButtonListener headerButtonListener; +public class Window extends SinglePageWindow { + private static final @NotNull String WINDOW_TITLE = "Overlay demo"; + private @Nullable ButtonListener buttonListener; //TODO: add javadoc - Window(@NotNull WindowManager windowManager) { + protected Window(@NotNull WindowManager windowManager) { super(windowManager, new WindowConfig(), null, null); setDefaultCloseOperation(EXIT_ON_CLOSE); setTitle(WINDOW_TITLE); + setOverlay(new Overlay(buttonListener)); + } - overlayColorState = false; - setOverlay(new Overlay(headerButtonListener)); + /** + * Redundant as there is only one window. + * TODO: finish this javadoc + * + * @return The key of this window. + */ + @Override + public final @NotNull String getWindowKey() { + return "window"; } /** @@ -41,21 +52,10 @@ class Window extends SinglePageWindow { */ @Override public @NotNull List addListeners(@Nullable List list) { - headerButtonListener = new ButtonListener(this); + buttonListener = new ButtonListener(this); return super.addListeners(list); } - /** - * Redundant as there is only one window. - * TODO: finish this javadoc - * - * @return The key of this window. - */ - @Override - public final @NotNull String getWindowKey() { - return "window"; - } - /** * Prepares a page to add to this window. * @@ -63,22 +63,16 @@ class Window extends SinglePageWindow { */ @Override public final @NotNull AbstractPage getPage() { - return new Page(headerButtonListener, null); + return new Page(buttonListener, null); } //TODO: add javadoc - void toggleOverlayColor() { - overlayColorState = !overlayColorState; - if (overlayColorState) { - setOverlayColor(OverlayColors.GREEN); - } else { - setOverlayColor(OverlayColors.RED); - } - } - - private void setOverlayColor(@Nullable Color color) { + public void toggleOverlayColor() { try { - getOverlay().setColor(color); + @NotNull SimpleOverlay simpleOverlay = getOverlay(); //throws ClassCastException + if (simpleOverlay instanceof Overlay) { + ((Overlay) simpleOverlay).toggleColor(); + } } catch (ClassCastException ignored) { //glassPane does not contain a SimpleOverlay object } diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button1.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button1.java new file mode 100644 index 0000000..d20e6fe --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button1.java @@ -0,0 +1,18 @@ +package graphicsEngineDemo.d2_overlayDemo.buttons; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.parts.SimpleJButton; + +/** + * A simple button for showing the overlay. + */ +public class Button1 extends SimpleJButton { + public static final String ACTION_COMMAND = "show"; + + public Button1(@Nullable ActionListener actionListener) { + super("Show", ACTION_COMMAND, actionListener); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button2.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button2.java new file mode 100644 index 0000000..f264db3 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button2.java @@ -0,0 +1,18 @@ +package graphicsEngineDemo.d2_overlayDemo.buttons; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.parts.SimpleJButton; + +/** + * A simple button for hiding the overlay. + */ +public class Button2 extends SimpleJButton { + public static final String ACTION_COMMAND = "hide"; + + public Button2(@Nullable ActionListener actionListener) { + super("Hide", ACTION_COMMAND, actionListener); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button3.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button3.java new file mode 100644 index 0000000..0a6ed23 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button3.java @@ -0,0 +1,18 @@ +package graphicsEngineDemo.d2_overlayDemo.buttons; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.parts.SimpleJButton; + +/** + * A simple button for toggling the visibility of the overlay. + */ +public class Button3 extends SimpleJButton { + public static final String ACTION_COMMAND = "toggle"; + + public Button3(@Nullable ActionListener actionListener) { + super("Toggle visibility", ACTION_COMMAND, actionListener); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button4.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button4.java new file mode 100644 index 0000000..028286b --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/Button4.java @@ -0,0 +1,18 @@ +package graphicsEngineDemo.d2_overlayDemo.buttons; + +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.parts.SimpleJButton; + +/** + * A simple button for toggling the color of the overlay. + */ +public class Button4 extends SimpleJButton { + public static final String ACTION_COMMAND = "color"; + + public Button4(@Nullable ActionListener actionListener) { + super("Toggle color", ACTION_COMMAND, actionListener); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/ButtonListener.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/ButtonListener.java new file mode 100644 index 0000000..2d83ae4 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/buttons/ButtonListener.java @@ -0,0 +1,50 @@ +package graphicsEngineDemo.d2_overlayDemo.buttons; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; + +import static consoleUtils.ConsoleUtils.printLine; + +import graphicsEngineDemo.d2_overlayDemo.Window; + +/** + * A class for containing buttons. + */ +public class ButtonListener implements ActionListener { + private final Window window; + + //TODO: add javadocs + public ButtonListener(@NotNull Window window) { + this.window = window; + } + + /** + * Invoked when an action occurs. + * + * @param e the event to be processed + */ + @Override + public void actionPerformed(ActionEvent e) { + if (actionCheck(e)) return; + printLine("A button has been pressed but no action set up"); + } + + private boolean actionCheck(@NotNull ActionEvent e) { + switch (e.getActionCommand()) { + case Button1.ACTION_COMMAND -> + window.showOverlay(); + case Button2.ACTION_COMMAND -> + window.hideOverlay(); + case Button3.ACTION_COMMAND -> + window.toggleOverlay(); + case Button4.ACTION_COMMAND -> + window.toggleOverlayColor(); + default -> { + return false; + } + } + return true; + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/overlay/Overlay.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/overlay/Overlay.java new file mode 100644 index 0000000..b785cc2 --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/overlay/Overlay.java @@ -0,0 +1,42 @@ +package graphicsEngineDemo.d2_overlayDemo.overlay; + +import java.awt.Color; +import java.awt.event.ActionListener; +import javax.swing.BoxLayout; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.presets.SimpleOverlay; + +import graphicsEngineDemo.d2_overlayDemo.buttons.Button4; + +/** + * TODO: finish this javadoc + */ +public class Overlay extends SimpleOverlay { + private static final boolean INITIAL_COLOR_STATE = false; + private boolean colorState; + + //TODO: add javadoc + public Overlay(@Nullable ActionListener actionListener) { + super(getColorByState(INITIAL_COLOR_STATE)); + colorState = INITIAL_COLOR_STATE; + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + add(new Button4(actionListener)); + } + + private static @NotNull Color getColorByState(boolean state) { + if (state) { + return OverlayColors.GREEN; + } else { + return OverlayColors.RED; + } + } + + //TODO: add javadoc + public void toggleColor() { + colorState = !colorState; + setColor(getColorByState(colorState)); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/OverlayColors.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/overlay/OverlayColors.java similarity index 65% rename from src/test/java/graphicsEngineDemo/d2_overlayDemo/OverlayColors.java rename to src/test/java/graphicsEngineDemo/d2_overlayDemo/overlay/OverlayColors.java index cddc7da..2f3ad56 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/OverlayColors.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/overlay/OverlayColors.java @@ -1,13 +1,15 @@ -package graphicsEngineDemo.d2_overlayDemo; +package graphicsEngineDemo.d2_overlayDemo.overlay; import java.awt.Color; +import org.jetbrains.annotations.NotNull; + /** * TODO: finish this javadoc */ class OverlayColors { private static final int COMMON_TRANSPARENCY = 100; - protected static final Color + protected static final @NotNull Color RED = new Color(100, 0, 0, COMMON_TRANSPARENCY), GREEN = new Color(0, 100, 0, COMMON_TRANSPARENCY); -} +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/page/Footer.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/page/Footer.java new file mode 100644 index 0000000..6e9149e --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/page/Footer.java @@ -0,0 +1,18 @@ +package graphicsEngineDemo.d2_overlayDemo.page; + +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.pages.panels.AbstractFooter; + +//TODO: add javadocs +class Footer extends AbstractFooter { + private static final int HEIGHT = 100; + + //TODO: add javadoc + protected Footer(@Nullable SimpleColorScheme panelColors, + @Nullable BorderProperties borderProperties) { + super(panelColors, HEIGHT, borderProperties); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/page/Header.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/page/Header.java new file mode 100644 index 0000000..554499c --- /dev/null +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/page/Header.java @@ -0,0 +1,32 @@ +package graphicsEngineDemo.d2_overlayDemo.page; + +import java.awt.event.ActionListener; +import javax.swing.BoxLayout; + +import org.jetbrains.annotations.Nullable; + +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.pages.panels.AbstractHeader; + +import graphicsEngineDemo.d2_overlayDemo.buttons.*; + +//TODO: add javadocs +class Header extends AbstractHeader { + private static final int HEIGHT = 50; + + //TODO: add javadoc + protected Header(@Nullable SimpleColorScheme panelColors, + @Nullable BorderProperties borderProperties, + @Nullable ActionListener actionListener) { + super(panelColors, HEIGHT, borderProperties); + addButtons(actionListener); + } + + private void addButtons(@Nullable ActionListener actionListener) { + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + add(new Button1(actionListener)); + add(new Button2(actionListener)); + add(new Button3(actionListener)); + } +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java b/src/test/java/graphicsEngineDemo/d2_overlayDemo/page/Page.java similarity index 50% rename from src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java rename to src/test/java/graphicsEngineDemo/d2_overlayDemo/page/Page.java index 4d286de..e42b40a 100644 --- a/src/test/java/graphicsEngineDemo/d2_overlayDemo/Page.java +++ b/src/test/java/graphicsEngineDemo/d2_overlayDemo/page/Page.java @@ -1,36 +1,39 @@ -package graphicsEngineDemo.d2_overlayDemo; - -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.BorderProperties; -import graphicsEngine.pages.HeaderAndFooterPage; -import graphicsEngine.pages.panels.AbstractHeader; -import graphicsEngine.pages.panels.AbstractFooter; +package graphicsEngineDemo.d2_overlayDemo.page; import java.util.List; import java.util.ArrayList; import java.awt.event.ActionListener; -import javax.swing.BoxLayout; -import graphicsEngine.panels.DynamicPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.DynamicPanel; +import graphicsEngine.pages.HeaderAndFooterPage; +import graphicsEngine.pages.panels.AbstractHeader; +import graphicsEngine.pages.panels.AbstractFooter; + +import graphicsEngineDemo.d2_overlayDemo.buttons.*; + //TODO: add javadocs -class Page extends HeaderAndFooterPage { - private ButtonListener headerButtonListener; +public class Page extends HeaderAndFooterPage { + private ButtonListener buttonListener; - protected Page(@Nullable ActionListener actionListener, - @Nullable SimpleColorScheme panelColors) { + //TODO: add javadoc + public Page(@Nullable ActionListener actionListener, + @Nullable SimpleColorScheme panelColors) { super( new ArrayList<>() {{ add(actionListener); }}, null); - prepareFixedPanels(panelColors, null, null); + initializePanels(panelColors, null, null); } + //TODO: add javadoc @Override - public String getPageKey() { + public @NotNull String getPageKey() { return "page"; } @@ -43,12 +46,12 @@ public String getPageKey() { * @return Remaining unknown listeners. */ @Override - public @NotNull List addListeners(@Nullable List list) { - List remainder = super.addListeners(list); + public @NotNull List<@Nullable ActionListener> addListeners(@Nullable List<@Nullable ActionListener> list) { + @Nullable List remainder = super.addListeners(list); for (int i = 0; i < remainder.size(); i++) { - ActionListener listener = remainder.get(i); + @Nullable ActionListener listener = remainder.get(i); if (listener instanceof ButtonListener) { - headerButtonListener = (ButtonListener) listener; + buttonListener = (ButtonListener) listener; remainder.remove(i); i--; } @@ -60,7 +63,7 @@ public String getPageKey() { @Override public @NotNull AbstractHeader getHeader(@Nullable SimpleColorScheme headerColors, @Nullable BorderProperties borderProperties) { - return new CommonHeader(headerColors, borderProperties, headerButtonListener); + return new Header(headerColors, borderProperties, buttonListener); } //TODO: add javadoc @@ -76,31 +79,4 @@ public String getPageKey() { @Nullable BorderProperties borderProperties) { return null; } - - private static class CommonHeader extends AbstractHeader { - private static final int HEIGHT = 50; - - public CommonHeader(@Nullable SimpleColorScheme panelColors, - @Nullable BorderProperties borderProperties, - @Nullable ActionListener actionListener) { - super(panelColors, HEIGHT, borderProperties); - addButtons(actionListener); - } - - private void addButtons(@Nullable ActionListener actionListener) { - setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); - add(new ButtonListener.Button1(actionListener)); - add(new ButtonListener.Button2(actionListener)); - add(new ButtonListener.Button3(actionListener)); - } - } - - private static class Footer extends AbstractFooter { - private static final int HEIGHT = 100; - - public Footer(@Nullable SimpleColorScheme panelColors, - @Nullable BorderProperties borderProperties) { - super(panelColors, HEIGHT, borderProperties); - } - } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Main.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Main.java index eb8e0f5..ddeb8db 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Main.java @@ -5,6 +5,7 @@ /** * GraphicsEngine demo demonstrating support of multiple pages within a single window. + * See ReadMe.md for more info. */ public class Main { /** diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java index 5084c11..9f03d4b 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/Window.java @@ -1,13 +1,5 @@ package graphicsEngineDemo.d3_twoPageDemo; -import graphicsEngine.windows.WindowManager; -import graphicsEngine.windows.WindowConfig; -import graphicsEngine.windows.windowTypes.MultiPageWindow; -import graphicsEngine.pages.AbstractPage; -import graphicsEngineDemo.d3_twoPageDemo.pages.Page1; -import graphicsEngineDemo.d3_twoPageDemo.pages.Page2; -import graphicsEngineDemo.d3_twoPageDemo.parts.ButtonListener; - import java.util.List; import java.util.ArrayList; import java.awt.Color; @@ -16,6 +8,15 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.windows.WindowManager; +import graphicsEngine.windows.WindowConfig; +import graphicsEngine.windows.windowTypes.MultiPageWindow; +import graphicsEngine.pages.AbstractPage; + +import graphicsEngineDemo.d3_twoPageDemo.pages.Page1; +import graphicsEngineDemo.d3_twoPageDemo.pages.Page2; +import graphicsEngineDemo.d3_twoPageDemo.parts.ButtonListener; + //TODO: add javadocs public class Window extends MultiPageWindow { private ButtonListener buttonListener; @@ -31,7 +32,7 @@ public Window(@NotNull WindowManager windowManager) { * * @return Window configuration. */ - private static WindowConfig config() { + private static @NotNull WindowConfig config() { String title = "Two-page demo"; int[] size = new int[]{600, 400}, diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java index 2fcae00..8d70e6e 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/AbstractCommonPage.java @@ -1,27 +1,28 @@ package graphicsEngineDemo.d3_twoPageDemo.pages; +import java.util.Objects; +import java.util.List; +import java.util.ArrayList; +import java.awt.Color; +import java.awt.event.ActionListener; +import javax.swing.BoxLayout; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; import graphicsEngine.panels.DynamicPanel; -import graphicsEngine.parts.labels.SimpleLabel; import graphicsEngine.pages.HeaderAndFooterPage; import graphicsEngine.pages.panels.AbstractFooter; import graphicsEngine.pages.panels.AbstractHeader; +import graphicsEngine.parts.labels.SimpleLabel; + import graphicsEngineDemo.d3_twoPageDemo.parts.CommonHeader; import graphicsEngineDemo.d3_twoPageDemo.parts.ButtonListener; import graphicsEngineDemo.d3_twoPageDemo.parts.CommonFooter; -import java.util.List; -import java.util.ArrayList; -import java.util.Objects; -import java.awt.Color; -import java.awt.event.ActionListener; -import javax.swing.BoxLayout; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - //TODO: add javadoc abstract class AbstractCommonPage extends HeaderAndFooterPage { private ButtonListener headerButtonListener; @@ -41,7 +42,7 @@ protected AbstractCommonPage(@Nullable ActionListener buttonListener, }}, null); this.labelText = Objects.requireNonNullElse(labelText, DEFAULT_LABEL); - prepareFixedPanels(null, getBodyColors(), null); + initializePanels(null, getBodyColors(), null); } private static SimpleColorScheme getBodyColors() { diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page1.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page1.java index cdbf767..3a8ce45 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page1.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page1.java @@ -3,6 +3,7 @@ import java.awt.Color; import java.awt.event.ActionListener; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadocs @@ -21,12 +22,12 @@ public Page1(@Nullable ActionListener actionListener, //TODO: add javadoc @Override - public String getPageKey() { + public @NotNull String getPageKey() { return "page1"; } //TODO: add javadoc - public static String getStaticPageKey() { + public static @NotNull String getStaticPageKey() { return (new Page1()).getPageKey(); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page2.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page2.java index baedcd2..f711d8b 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page2.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/pages/Page2.java @@ -3,6 +3,7 @@ import java.awt.Color; import java.awt.event.ActionListener; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; //TODO: add javadocs @@ -21,12 +22,12 @@ public Page2(@Nullable ActionListener actionListener, //TODO: add javadoc @Override - public String getPageKey() { + public @NotNull String getPageKey() { return "page2"; } //TODO: add javadoc - public static String getStaticPageKey() { + public static @NotNull String getStaticPageKey() { return (new Page2()).getPageKey(); } } \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/ButtonListener.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/ButtonListener.java index 33c122c..0f63a0f 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/ButtonListener.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/ButtonListener.java @@ -1,18 +1,19 @@ package graphicsEngineDemo.d3_twoPageDemo.parts; -import graphicsEngine.parts.SimpleJButton; -import graphicsEngineDemo.d3_twoPageDemo.Window; -import graphicsEngineDemo.d3_twoPageDemo.pages.Page1; -import graphicsEngineDemo.d3_twoPageDemo.pages.Page2; - import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import static consoleUtils.ConsoleUtils.printLine; - import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static consoleUtils.ConsoleUtils.printLine; + +import graphicsEngine.parts.SimpleJButton; + +import graphicsEngineDemo.d3_twoPageDemo.Window; +import graphicsEngineDemo.d3_twoPageDemo.pages.Page1; +import graphicsEngineDemo.d3_twoPageDemo.pages.Page2; + //TODO: add javadoc public class ButtonListener implements ActionListener { private final Window window; diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java index 9253994..32d2aa3 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonFooter.java @@ -1,11 +1,11 @@ package graphicsEngineDemo.d3_twoPageDemo.parts; +import org.jetbrains.annotations.Nullable; + import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; import graphicsEngine.pages.panels.AbstractFooter; -import org.jetbrains.annotations.Nullable; - //TODO: finish this and add javadocs public class CommonFooter extends AbstractFooter { private static final int HEIGHT = 100; diff --git a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java index ea8449b..4685f19 100644 --- a/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java +++ b/src/test/java/graphicsEngineDemo/d3_twoPageDemo/parts/CommonHeader.java @@ -1,14 +1,14 @@ package graphicsEngineDemo.d3_twoPageDemo.parts; -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.BorderProperties; -import graphicsEngine.pages.panels.AbstractHeader; - -import javax.swing.BoxLayout; import java.awt.event.ActionListener; +import javax.swing.BoxLayout; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.pages.panels.AbstractHeader; + //TODO: finish this and add javadocs public class CommonHeader extends AbstractHeader { private static final int HEIGHT = 50; diff --git a/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java b/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java index 7546a6d..8737a3d 100644 --- a/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java +++ b/src/test/java/graphicsEngineDemo/d4_multiAdapterDemo/Main.java @@ -1,15 +1,16 @@ package graphicsEngineDemo.d4_multiAdapterDemo; +import org.jetbrains.annotations.NotNull; + import graphicsEngine.GraphicsAdapter; import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowUpdater; import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.windowTypes.SimpleWindow; -import org.jetbrains.annotations.NotNull; - /** * GraphicsEngine demo demonstrating the capability to simultaneously run multiple graphics adapters. + * See ReadMe.md for more info. */ public class Main { private static GraphicsAdapter adapter1; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java index d6a99b7..101d7b4 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/Main.java @@ -7,6 +7,7 @@ /** * A general demo for previewing various features and capabilities of the Graphics Engine. + * See ReadMe.md for more info. */ public class Main { /** diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java index 2c964ff..1fabca7 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/AbstractCommonPage.java @@ -1,19 +1,20 @@ package graphicsEngineDemo.d5_featurePreview.common; +import java.util.List; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; import graphicsEngine.pages.HeaderAndFooterPage; import graphicsEngine.pages.panels.AbstractHeader; import graphicsEngine.pages.panels.AbstractFooter; + import graphicsEngineDemo.d5_featurePreview.common.header.CommonHeader; import graphicsEngineDemo.d5_featurePreview.common.header.HeaderButtonListener; -import java.util.List; -import java.awt.event.ActionListener; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - //TODO: finish this and add javadoc public abstract class AbstractCommonPage extends HeaderAndFooterPage { private HeaderButtonListener headerButtonListener; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonColors.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonColors.java index 4cc16d5..6421dbb 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonColors.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonColors.java @@ -1,11 +1,14 @@ package graphicsEngineDemo.d5_featurePreview.common; -import graphicsEngine.colors.SimpleColorScheme; - import java.awt.Color; +import org.jetbrains.annotations.NotNull; + +import graphicsEngine.colors.SimpleColorScheme; + +//TODO: add javadocs public class CommonColors { - public static final SimpleColorScheme + public static final @NotNull SimpleColorScheme HEADER_AND_FOOTER_COLORS = new SimpleColorScheme( new Color(190, 190, 190),//Color.cyan, null), diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java index a9fe4bb..c0c00a8 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/CommonFooter.java @@ -1,11 +1,11 @@ package graphicsEngineDemo.d5_featurePreview.common; +import org.jetbrains.annotations.Nullable; + import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; import graphicsEngine.pages.panels.AbstractFooter; -import org.jetbrains.annotations.Nullable; - //TODO: add javadoc public class CommonFooter extends AbstractFooter { private static final int HEIGHT = 40; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java index 27cc0b8..a49ce32 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/CommonHeader.java @@ -1,13 +1,13 @@ package graphicsEngineDemo.d5_featurePreview.common.header; -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.BorderProperties; -import graphicsEngine.pages.panels.AbstractHeader; - import javax.swing.BoxLayout; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.pages.panels.AbstractHeader; + //TODO: add javadoc public class CommonHeader extends AbstractHeader { private static final int HEIGHT = 40; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/HeaderButtonListener.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/HeaderButtonListener.java index 7b010af..8e7218f 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/HeaderButtonListener.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/common/header/HeaderButtonListener.java @@ -1,19 +1,20 @@ package graphicsEngineDemo.d5_featurePreview.common.header; -import graphicsEngine.parts.SimpleJButton; -import graphicsEngineDemo.d5_featurePreview.window.Window; -import graphicsEngineDemo.d5_featurePreview.menuPages.startingPage.StartingPage; -import graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage.SettingsPage; -import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectPage; - import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import static consoleUtils.ConsoleUtils.printLine; - import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static consoleUtils.ConsoleUtils.printLine; + +import graphicsEngine.parts.SimpleJButton; + +import graphicsEngineDemo.d5_featurePreview.window.Window; +import graphicsEngineDemo.d5_featurePreview.menuPages.startingPage.StartingPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage.SettingsPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectPage; + //TODO: add javadocs public class HeaderButtonListener implements ActionListener { private final Window window; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java index 4cf6542..a81aaac 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/CommonDemoPage.java @@ -1,12 +1,12 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import graphicsEngineDemo.d5_featurePreview.common.AbstractCommonPage; - import java.util.List; import java.awt.event.ActionListener; import org.jetbrains.annotations.Nullable; +import graphicsEngineDemo.d5_featurePreview.common.AbstractCommonPage; + //TODO: add javadoc public abstract class CommonDemoPage extends AbstractCommonPage { //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java index 3e770ce..c17f876 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page1.java @@ -1,19 +1,20 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import graphicsEngine.colors.ColorUtilities; -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.BorderProperties; -import graphicsEngine.panels.DynamicPanel; -import graphicsEngine.parts.labels.SimpleLabel; - +import java.util.List; import java.awt.Color; import java.awt.BorderLayout; import java.awt.event.ActionListener; -import java.util.List; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.DynamicPanel; + +import graphicsEngine.parts.labels.SimpleLabel; + //TODO: add javadoc public class Page1 extends CommonDemoPage { private static final @NotNull Color BACKGROUND_COLOR = new Color(150, 50, 50); @@ -27,7 +28,7 @@ public Page1(@Nullable List actionListenerList, @Nullable SimpleColorScheme colors) { super(actionListenerList); setBackground(BACKGROUND_COLOR); - prepareFixedPanels( + initializePanels( colors, new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, Color.white), null); diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java index f2cd532..c5b66ef 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/Page2.java @@ -1,20 +1,21 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import graphicsEngine.colors.ColorUtilities; -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.BorderProperties; -import graphicsEngine.panels.StaticPanel; -import graphicsEngine.parts.labels.SimpleLabel; -import graphicsEngine.panels.VerticalPanel; - -import java.awt.*; import java.util.List; +import java.awt.Color; +import java.awt.BorderLayout; import java.awt.event.ActionListener; import javax.swing.JPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.StaticPanel; +import graphicsEngine.panels.VerticalPanel; +import graphicsEngine.parts.labels.SimpleLabel; + //TODO: add javadoc public class Page2 extends PageWithPanel { private static final @NotNull Color BACKGROUND_COLOR = new Color(50, 150, 50); @@ -28,7 +29,7 @@ public Page2(@Nullable List actionListenerList, @Nullable SimpleColorScheme colors) { super(actionListenerList); setBackground(BACKGROUND_COLOR); - prepareFixedPanels( + initializePanels( colors, new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), null); diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java index 80f3fbf..07a0815 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/PageWithPanel.java @@ -1,11 +1,5 @@ package graphicsEngineDemo.d5_featurePreview.demoPages; -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.BorderProperties; -import graphicsEngine.panels.DynamicPanel; -import graphicsEngine.panels.VerticalPanel; -import graphicsEngineDemo.d5_featurePreview.common.CommonColors; - import java.util.List; import java.awt.BorderLayout; import java.awt.event.ActionListener; @@ -13,6 +7,13 @@ import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.BorderProperties; +import graphicsEngine.panels.DynamicPanel; +import graphicsEngine.panels.VerticalPanel; + +import graphicsEngineDemo.d5_featurePreview.common.CommonColors; + //TODO: add javadoc public abstract class PageWithPanel extends CommonDemoPage { private SimpleColorScheme sidePanelColors; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Center.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Center.java index 84dd3be..de61700 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Center.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Center.java @@ -1,17 +1,18 @@ package graphicsEngineDemo.d5_featurePreview.demoPages.page3; -import graphicsEngine.colors.ColorUtilities; -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.DynamicPanel; -import graphicsEngine.parts.labels.SimpleLabel; - import java.awt.Color; import java.awt.BorderLayout; +import org.jetbrains.annotations.Nullable; + import static consoleUtils.ConsoleUtils.printLine; -import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.DynamicPanel; +import graphicsEngine.parts.labels.SimpleLabel; +//TODO: add javadocs class Center extends DynamicPanel { protected Center(Page3 page) { super( diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Page3.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Page3.java index 26a01c0..b64a74f 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Page3.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/Page3.java @@ -1,11 +1,5 @@ package graphicsEngineDemo.d5_featurePreview.demoPages.page3; -import graphicsEngine.colors.ColorUtilities; -import graphicsEngine.colors.SimpleColorScheme; -import graphicsEngine.panels.VerticalPanel; -import graphicsEngineDemo.d5_featurePreview.demoPages.PageWithPanel; -import graphicsEngineDemo.d5_featurePreview.demoPages.page3.data.DataUpdater; - import java.util.List; import java.awt.Color; import java.awt.event.ActionListener; @@ -14,6 +8,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.ColorUtilities; +import graphicsEngine.colors.SimpleColorScheme; +import graphicsEngine.panels.VerticalPanel; + +import graphicsEngineDemo.d5_featurePreview.demoPages.PageWithPanel; +import graphicsEngineDemo.d5_featurePreview.demoPages.page3.data.DataUpdater; + //TODO: add javadoc public class Page3 extends PageWithPanel { private static final @NotNull Color BACKGROUND_COLOR = new Color(50, 50, 150); @@ -30,7 +31,7 @@ public Page3(@Nullable List actionListenerList, super(actionListenerList); setBackground(BACKGROUND_COLOR); data = new DataUpdater(); - prepareFixedPanels( + initializePanels( colors, new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), null); diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/SidePanel.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/SidePanel.java index 80d509b..5d530b5 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/SidePanel.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page3/SidePanel.java @@ -1,11 +1,12 @@ package graphicsEngineDemo.d5_featurePreview.demoPages.page3; +import org.jetbrains.annotations.Nullable; + import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; import graphicsEngine.parts.labels.SimpleLabel; -import graphicsEngineDemo.d5_featurePreview.demoPages.PageWithPanel; -import org.jetbrains.annotations.Nullable; +import graphicsEngineDemo.d5_featurePreview.demoPages.PageWithPanel; //TODO: add javadoc class SidePanel extends PageWithPanel.CommonSidePanel { @@ -19,4 +20,4 @@ protected SidePanel(@Nullable SimpleColorScheme colors, add(new SimpleLabel("Some text", getPanelColors().getSecondaryColor())); //Add parts here } -} +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Center.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Center.java index d958f5b..fbe811e 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Center.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Center.java @@ -1,16 +1,13 @@ package graphicsEngineDemo.d5_featurePreview.demoPages.page4; -import java.awt.*; - -import org.jetbrains.annotations.Nullable; - -import static consoleUtils.ConsoleUtils.printLine; +import java.awt.Color; import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.DynamicPanel; import graphicsEngine.parts.labels.SimpleLabel; +//TODO: add javadocs class Center extends DynamicPanel { protected Center(Page4 page) { super( diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Page4.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Page4.java index 9b592cd..a0a3d2a 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Page4.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/Page4.java @@ -2,16 +2,18 @@ import java.util.List; import java.awt.event.ActionListener; -import javax.swing.*; +import javax.swing.JPanel; -import graphicsEngine.colors.ColorUtilities; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.VerticalPanel; + import graphicsEngineDemo.d5_featurePreview.demoPages.PageWithPanel; +//TODO: add javadocs public class Page4 extends PageWithPanel { private Page4() { this(null, null); @@ -23,7 +25,7 @@ public Page4(@Nullable List actionListenerList, super(actionListenerList); //setBackground(new Color(50, 50, 150)); //data = new DataUpdater(); - prepareFixedPanels( + initializePanels( colors, new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), null); @@ -60,4 +62,4 @@ public Page4(@Nullable List actionListenerList, public @Nullable JPanel getPageCenter() { return new Center(this); } -} +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/SidePanel.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/SidePanel.java index 0e6be7b..f6c72a2 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/SidePanel.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/demoPages/page4/SidePanel.java @@ -20,4 +20,4 @@ protected SidePanel(@Nullable SimpleColorScheme colors, add(new SimpleLabel("Some text", getPanelColors().getSecondaryColor())); //Add parts here } -} +} \ No newline at end of file diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java index 1e45b39..9c57191 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectButtonListener.java @@ -1,20 +1,21 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import static consoleUtils.ConsoleUtils.printLine; + import graphicsEngine.parts.SimpleJButton; + import graphicsEngineDemo.d5_featurePreview.window.Window; import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; import graphicsEngineDemo.d5_featurePreview.demoPages.page3.Page3; import graphicsEngineDemo.d5_featurePreview.demoPages.page4.Page4; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import static consoleUtils.ConsoleUtils.printLine; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - //TODO: add javadocs public class DemoSelectButtonListener implements ActionListener { private final Window window; diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java index 5f259a5..d46123e 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/demoSelectPage/DemoSelectPage.java @@ -1,19 +1,22 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage; +import java.util.List; +import java.awt.Color; +import java.awt.BorderLayout; +import java.awt.event.ActionListener; +import javax.swing.BoxLayout; +import javax.swing.JPanel; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; import graphicsEngine.panels.DynamicPanel; import graphicsEngine.parts.labels.SimpleLabel; -import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; -import java.util.List; -import java.awt.*; -import java.awt.event.ActionListener; -import javax.swing.*; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; //TODO: finish this and add javadoc public class DemoSelectPage extends AbstractMenuPage { @@ -26,7 +29,7 @@ private DemoSelectPage() { public DemoSelectPage(@Nullable List actionListenerList, @Nullable SimpleColorScheme colors) { super(actionListenerList); - prepareFixedPanels( + initializePanels( colors, new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), null); diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java index 5ade161..f6b7ead 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/settingsPage/SettingsPage.java @@ -1,18 +1,20 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage; +import java.util.List; +import java.awt.Color; +import java.awt.BorderLayout; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; import graphicsEngine.panels.DynamicPanel; import graphicsEngine.parts.labels.SimpleLabel; -import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; -import java.util.List; -import java.awt.*; -import java.awt.event.ActionListener; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; //TODO: finish this and add javadoc public class SettingsPage extends AbstractMenuPage { @@ -24,7 +26,7 @@ private SettingsPage() { public SettingsPage(@Nullable List actionListenerList, @Nullable SimpleColorScheme colors) { super(actionListenerList); - prepareFixedPanels( + initializePanels( colors, new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), null); diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java index dca0b22..f59c083 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/menuPages/startingPage/StartingPage.java @@ -1,18 +1,20 @@ package graphicsEngineDemo.d5_featurePreview.menuPages.startingPage; +import java.util.List; +import java.awt.Color; +import java.awt.BorderLayout; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + import graphicsEngine.colors.ColorUtilities; import graphicsEngine.colors.SimpleColorScheme; import graphicsEngine.panels.BorderProperties; import graphicsEngine.panels.DynamicPanel; import graphicsEngine.parts.labels.SimpleLabel; -import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; -import java.util.List; -import java.awt.*; -import java.awt.event.ActionListener; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import graphicsEngineDemo.d5_featurePreview.common.AbstractMenuPage; //TODO: finish this and add javadoc public class StartingPage extends AbstractMenuPage { @@ -24,7 +26,7 @@ private StartingPage() { public StartingPage(@Nullable List actionListenerList, @Nullable SimpleColorScheme colors) { super(actionListenerList); - prepareFixedPanels( + initializePanels( colors, new SimpleColorScheme(ColorUtilities.DEFAULT_COLOR_TRANSPARENT, null), null); diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java index bd40031..ffe670c 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/Window.java @@ -1,26 +1,27 @@ package graphicsEngineDemo.d5_featurePreview.window; +import java.util.List; +import java.util.ArrayList; +import java.awt.event.ActionListener; + +import org.jetbrains.annotations.NotNull; + +import static graphicsEngine.Utilities.getSampleIcon; + import graphicsEngine.windows.WindowManager; import graphicsEngine.pages.AbstractPage; + +import static graphicsEngineDemo.d5_featurePreview.common.CommonColors.HEADER_AND_FOOTER_COLORS; import graphicsEngineDemo.d5_featurePreview.common.header.HeaderButtonListener; -import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectButtonListener; import graphicsEngineDemo.d5_featurePreview.menuPages.startingPage.StartingPage; import graphicsEngineDemo.d5_featurePreview.menuPages.settingsPage.SettingsPage; +import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectButtonListener; import graphicsEngineDemo.d5_featurePreview.menuPages.demoSelectPage.DemoSelectPage; import graphicsEngineDemo.d5_featurePreview.demoPages.Page1; import graphicsEngineDemo.d5_featurePreview.demoPages.Page2; import graphicsEngineDemo.d5_featurePreview.demoPages.page3.Page3; import graphicsEngineDemo.d5_featurePreview.demoPages.page4.Page4; -import java.util.List; -import java.util.ArrayList; -import java.awt.event.ActionListener; - -import static graphicsEngineDemo.d5_featurePreview.common.CommonColors.HEADER_AND_FOOTER_COLORS; -import static graphicsEngine.Utilities.getSampleIcon; - -import org.jetbrains.annotations.NotNull; - //TODO: add javadoc public class Window extends WindowUtilities { //TODO: add javadoc diff --git a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/WindowUtilities.java b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/WindowUtilities.java index 2ec1778..746f769 100644 --- a/src/test/java/graphicsEngineDemo/d5_featurePreview/window/WindowUtilities.java +++ b/src/test/java/graphicsEngineDemo/d5_featurePreview/window/WindowUtilities.java @@ -1,11 +1,11 @@ package graphicsEngineDemo.d5_featurePreview.window; +import org.jetbrains.annotations.NotNull; + import graphicsEngine.windows.WindowManager; import graphicsEngine.windows.WindowConfig; import graphicsEngine.windows.windowTypes.MultiPageWindow; -import org.jetbrains.annotations.NotNull; - //TODO: add javadoc abstract class WindowUtilities extends MultiPageWindow {