From 8eea290b8ba6685117062bc18f7cd325e4929cbb Mon Sep 17 00:00:00 2001 From: StevenJW Date: Sun, 7 Jun 2020 21:53:40 +0100 Subject: [PATCH] Upload project. --- Pictures/Chair1.png | Bin 0 -> 16693 bytes Pictures/Chair2.png | Bin 0 -> 18857 bytes Pictures/Desk1.png | Bin 0 -> 27158 bytes Pictures/Desk2.png | Bin 0 -> 27589 bytes Pictures/Desk3.png | Bin 0 -> 29943 bytes Pictures/Desk4.png | Bin 0 -> 30330 bytes Pictures/Table1.png | Bin 0 -> 8152 bytes Pictures/Table2.png | Bin 0 -> 10914 bytes build.xml | 73 ++ dist/README.TXT | 32 + dist/ROFAApp.jar | Bin 0 -> 26122 bytes dist/javadoc/allclasses-frame.html | 32 + dist/javadoc/allclasses-noframe.html | 32 + dist/javadoc/constant-values.html | 247 +++++ dist/javadoc/deprecated-list.html | 123 +++ dist/javadoc/help-doc.html | 224 ++++ dist/javadoc/index-files/index-1.html | 150 +++ dist/javadoc/index-files/index-10.html | 130 +++ dist/javadoc/index-files/index-11.html | 156 +++ dist/javadoc/index-files/index-12.html | 134 +++ dist/javadoc/index-files/index-13.html | 130 +++ dist/javadoc/index-files/index-14.html | 128 +++ dist/javadoc/index-files/index-15.html | 130 +++ dist/javadoc/index-files/index-16.html | 140 +++ dist/javadoc/index-files/index-17.html | 150 +++ dist/javadoc/index-files/index-18.html | 140 +++ dist/javadoc/index-files/index-19.html | 142 +++ dist/javadoc/index-files/index-2.html | 136 +++ dist/javadoc/index-files/index-20.html | 144 +++ dist/javadoc/index-files/index-21.html | 130 +++ dist/javadoc/index-files/index-3.html | 150 +++ dist/javadoc/index-files/index-4.html | 158 +++ dist/javadoc/index-files/index-5.html | 128 +++ dist/javadoc/index-files/index-6.html | 130 +++ dist/javadoc/index-files/index-7.html | 202 ++++ dist/javadoc/index-files/index-8.html | 128 +++ dist/javadoc/index-files/index-9.html | 206 ++++ dist/javadoc/index.html | 73 ++ dist/javadoc/overview-tree.html | 185 ++++ dist/javadoc/package-list | 1 + dist/javadoc/rofaapp/AddItemWindow.html | 992 ++++++++++++++++++ dist/javadoc/rofaapp/Furniture.html | 475 +++++++++ dist/javadoc/rofaapp/ItemArmChair.html | 352 +++++++ dist/javadoc/rofaapp/ItemChair.html | 382 +++++++ dist/javadoc/rofaapp/ItemDesk.html | 507 +++++++++ dist/javadoc/rofaapp/ItemIcon.html | 450 ++++++++ dist/javadoc/rofaapp/ItemOrder.html | 554 ++++++++++ dist/javadoc/rofaapp/ItemTable.html | 368 +++++++ dist/javadoc/rofaapp/ItemTableChrome.html | 359 +++++++ dist/javadoc/rofaapp/ItemTableWood.html | 364 +++++++ dist/javadoc/rofaapp/MainWindow.html | 838 +++++++++++++++ dist/javadoc/rofaapp/ROFCMain.html | 270 +++++ dist/javadoc/rofaapp/TypeWood.html | 391 +++++++ .../rofaapp/class-use/AddItemWindow.html | 123 +++ dist/javadoc/rofaapp/class-use/Furniture.html | 249 +++++ .../rofaapp/class-use/ItemArmChair.html | 123 +++ dist/javadoc/rofaapp/class-use/ItemChair.html | 148 +++ dist/javadoc/rofaapp/class-use/ItemDesk.html | 123 +++ dist/javadoc/rofaapp/class-use/ItemIcon.html | 123 +++ dist/javadoc/rofaapp/class-use/ItemOrder.html | 189 ++++ dist/javadoc/rofaapp/class-use/ItemTable.html | 152 +++ .../rofaapp/class-use/ItemTableChrome.html | 123 +++ .../rofaapp/class-use/ItemTableWood.html | 123 +++ .../javadoc/rofaapp/class-use/MainWindow.html | 123 +++ dist/javadoc/rofaapp/class-use/ROFCMain.html | 123 +++ dist/javadoc/rofaapp/class-use/TypeWood.html | 244 +++++ dist/javadoc/rofaapp/package-frame.html | 33 + dist/javadoc/rofaapp/package-summary.html | 189 ++++ dist/javadoc/rofaapp/package-tree.html | 181 ++++ dist/javadoc/rofaapp/package-use.html | 153 +++ dist/javadoc/script.js | 30 + dist/javadoc/serialized-form.html | 495 +++++++++ dist/javadoc/stylesheet.css | 574 ++++++++++ manifest.mf | 3 + src/rofaapp/AddItemWindow.java | 568 ++++++++++ src/rofaapp/Furniture.java | 45 + src/rofaapp/ItemArmChair.java | 22 + src/rofaapp/ItemChair.java | 42 + src/rofaapp/ItemDesk.java | 72 ++ src/rofaapp/ItemIcon.java | 58 + src/rofaapp/ItemOrder.java | 177 ++++ src/rofaapp/ItemTable.java | 30 + src/rofaapp/ItemTableChrome.java | 30 + src/rofaapp/ItemTableWood.java | 34 + src/rofaapp/MainWindow.java | 564 ++++++++++ src/rofaapp/ROFCMain.java | 14 + src/rofaapp/ROFCTests.java | 21 + src/rofaapp/TypeWood.java | 35 + 88 files changed, 15702 insertions(+) create mode 100644 Pictures/Chair1.png create mode 100644 Pictures/Chair2.png create mode 100644 Pictures/Desk1.png create mode 100644 Pictures/Desk2.png create mode 100644 Pictures/Desk3.png create mode 100644 Pictures/Desk4.png create mode 100644 Pictures/Table1.png create mode 100644 Pictures/Table2.png create mode 100644 build.xml create mode 100644 dist/README.TXT create mode 100644 dist/ROFAApp.jar create mode 100644 dist/javadoc/allclasses-frame.html create mode 100644 dist/javadoc/allclasses-noframe.html create mode 100644 dist/javadoc/constant-values.html create mode 100644 dist/javadoc/deprecated-list.html create mode 100644 dist/javadoc/help-doc.html create mode 100644 dist/javadoc/index-files/index-1.html create mode 100644 dist/javadoc/index-files/index-10.html create mode 100644 dist/javadoc/index-files/index-11.html create mode 100644 dist/javadoc/index-files/index-12.html create mode 100644 dist/javadoc/index-files/index-13.html create mode 100644 dist/javadoc/index-files/index-14.html create mode 100644 dist/javadoc/index-files/index-15.html create mode 100644 dist/javadoc/index-files/index-16.html create mode 100644 dist/javadoc/index-files/index-17.html create mode 100644 dist/javadoc/index-files/index-18.html create mode 100644 dist/javadoc/index-files/index-19.html create mode 100644 dist/javadoc/index-files/index-2.html create mode 100644 dist/javadoc/index-files/index-20.html create mode 100644 dist/javadoc/index-files/index-21.html create mode 100644 dist/javadoc/index-files/index-3.html create mode 100644 dist/javadoc/index-files/index-4.html create mode 100644 dist/javadoc/index-files/index-5.html create mode 100644 dist/javadoc/index-files/index-6.html create mode 100644 dist/javadoc/index-files/index-7.html create mode 100644 dist/javadoc/index-files/index-8.html create mode 100644 dist/javadoc/index-files/index-9.html create mode 100644 dist/javadoc/index.html create mode 100644 dist/javadoc/overview-tree.html create mode 100644 dist/javadoc/package-list create mode 100644 dist/javadoc/rofaapp/AddItemWindow.html create mode 100644 dist/javadoc/rofaapp/Furniture.html create mode 100644 dist/javadoc/rofaapp/ItemArmChair.html create mode 100644 dist/javadoc/rofaapp/ItemChair.html create mode 100644 dist/javadoc/rofaapp/ItemDesk.html create mode 100644 dist/javadoc/rofaapp/ItemIcon.html create mode 100644 dist/javadoc/rofaapp/ItemOrder.html create mode 100644 dist/javadoc/rofaapp/ItemTable.html create mode 100644 dist/javadoc/rofaapp/ItemTableChrome.html create mode 100644 dist/javadoc/rofaapp/ItemTableWood.html create mode 100644 dist/javadoc/rofaapp/MainWindow.html create mode 100644 dist/javadoc/rofaapp/ROFCMain.html create mode 100644 dist/javadoc/rofaapp/TypeWood.html create mode 100644 dist/javadoc/rofaapp/class-use/AddItemWindow.html create mode 100644 dist/javadoc/rofaapp/class-use/Furniture.html create mode 100644 dist/javadoc/rofaapp/class-use/ItemArmChair.html create mode 100644 dist/javadoc/rofaapp/class-use/ItemChair.html create mode 100644 dist/javadoc/rofaapp/class-use/ItemDesk.html create mode 100644 dist/javadoc/rofaapp/class-use/ItemIcon.html create mode 100644 dist/javadoc/rofaapp/class-use/ItemOrder.html create mode 100644 dist/javadoc/rofaapp/class-use/ItemTable.html create mode 100644 dist/javadoc/rofaapp/class-use/ItemTableChrome.html create mode 100644 dist/javadoc/rofaapp/class-use/ItemTableWood.html create mode 100644 dist/javadoc/rofaapp/class-use/MainWindow.html create mode 100644 dist/javadoc/rofaapp/class-use/ROFCMain.html create mode 100644 dist/javadoc/rofaapp/class-use/TypeWood.html create mode 100644 dist/javadoc/rofaapp/package-frame.html create mode 100644 dist/javadoc/rofaapp/package-summary.html create mode 100644 dist/javadoc/rofaapp/package-tree.html create mode 100644 dist/javadoc/rofaapp/package-use.html create mode 100644 dist/javadoc/script.js create mode 100644 dist/javadoc/serialized-form.html create mode 100644 dist/javadoc/stylesheet.css create mode 100644 manifest.mf create mode 100644 src/rofaapp/AddItemWindow.java create mode 100644 src/rofaapp/Furniture.java create mode 100644 src/rofaapp/ItemArmChair.java create mode 100644 src/rofaapp/ItemChair.java create mode 100644 src/rofaapp/ItemDesk.java create mode 100644 src/rofaapp/ItemIcon.java create mode 100644 src/rofaapp/ItemOrder.java create mode 100644 src/rofaapp/ItemTable.java create mode 100644 src/rofaapp/ItemTableChrome.java create mode 100644 src/rofaapp/ItemTableWood.java create mode 100644 src/rofaapp/MainWindow.java create mode 100644 src/rofaapp/ROFCMain.java create mode 100644 src/rofaapp/ROFCTests.java create mode 100644 src/rofaapp/TypeWood.java diff --git a/Pictures/Chair1.png b/Pictures/Chair1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c2c4935cbe10904a89cf060fb87e4e54f962284 GIT binary patch literal 16693 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 Qp8x;=07*qoM6N<$g2$O|(EtDd literal 0 HcmV?d00001 diff --git a/Pictures/Chair2.png b/Pictures/Chair2.png new file mode 100644 index 0000000000000000000000000000000000000000..5084799d62b18983d2a25b8de39e2fc4035b37fe GIT binary patch literal 18857 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 literal 0 HcmV?d00001 diff --git a/Pictures/Desk2.png b/Pictures/Desk2.png new file mode 100644 index 0000000000000000000000000000000000000000..2bba4af09070c1f7ff67dbebfa90ff9278a8156c GIT binary patch literal 27589 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 literal 0 HcmV?d00001 diff --git a/Pictures/Desk3.png b/Pictures/Desk3.png new file mode 100644 index 0000000000000000000000000000000000000000..380d845d1f6f8696744762da0fc5a1de020f6f6a GIT binary patch literal 29943 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 literal 0 HcmV?d00001 diff --git a/Pictures/Desk4.png b/Pictures/Desk4.png new file mode 100644 index 0000000000000000000000000000000000000000..1cedeaddbb5c36659212f7777d9f0c96adf40c88 GIT binary patch literal 30330 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 literal 0 HcmV?d00001 diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..440a97c --- /dev/null +++ b/build.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + Builds, tests, and runs the project ROFAApp. + + + diff --git a/dist/README.TXT b/dist/README.TXT new file mode 100644 index 0000000..f5de900 --- /dev/null +++ b/dist/README.TXT @@ -0,0 +1,32 @@ +======================== +BUILD OUTPUT DESCRIPTION +======================== + +When you build an Java application project that has a main class, the IDE +automatically copies all of the JAR +files on the projects classpath to your projects dist/lib folder. The IDE +also adds each of the JAR files to the Class-Path element in the application +JAR files manifest file (MANIFEST.MF). + +To run the project from the command line, go to the dist folder and +type the following: + +java -jar "ROFAApp.jar" + +To distribute this project, zip up the dist folder (including the lib folder) +and distribute the ZIP file. + +Notes: + +* If two JAR files on the project classpath have the same name, only the first +JAR file is copied to the lib folder. +* Only JAR files are copied to the lib folder. +If the classpath contains other types of files or folders, these files (folders) +are not copied. +* If a library on the projects classpath also has a Class-Path element +specified in the manifest,the content of the Class-Path element has to be on +the projects runtime path. +* To set a main class in a standard Java project, right-click the project node +in the Projects window and choose Properties. Then click Run and enter the +class name in the Main Class field. Alternatively, you can manually type the +class name in the manifest Main-Class element. diff --git a/dist/ROFAApp.jar b/dist/ROFAApp.jar new file mode 100644 index 0000000000000000000000000000000000000000..85dce71f8a575b661854b4404fa0760218bfc289 GIT binary patch literal 26122 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 + + + + + +All Classes + + + + + +

All Classes

+ + + diff --git a/dist/javadoc/allclasses-noframe.html b/dist/javadoc/allclasses-noframe.html new file mode 100644 index 0000000..feb9150 --- /dev/null +++ b/dist/javadoc/allclasses-noframe.html @@ -0,0 +1,32 @@ + + + + + + +All Classes + + + + + +

All Classes

+ + + diff --git a/dist/javadoc/constant-values.html b/dist/javadoc/constant-values.html new file mode 100644 index 0000000..2c7dade --- /dev/null +++ b/dist/javadoc/constant-values.html @@ -0,0 +1,247 @@ + + + + + + +Constant Field Values + + + + + + + + + + + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

rofaapp.*

+
    +
  • + + + + + + + + + + + + + + +
    rofaapp.ItemArmChair 
    Modifier and TypeConstant FieldValue
    + +private final intunits1875
    +
  • +
  • + + + + + + + + + + + + + + +
    rofaapp.ItemChair 
    Modifier and TypeConstant FieldValue
    + +private final intunits1625
    +
  • +
  • + + + + + + + + + + + + + + +
    rofaapp.ItemDesk 
    Modifier and TypeConstant FieldValue
    + +private final intheight80
    +
  • +
  • + + + + + + + + + + + + + + +
    rofaapp.ItemOrder 
    Modifier and TypeConstant FieldValue
    + +private final transient intarraySize9
    +
  • +
  • + + + + + + + + + + + + + + +
    rofaapp.ItemTableChrome 
    Modifier and TypeConstant FieldValue
    + +private final doublebasePrice35.0
    +
  • +
  • + + + + + + + + + + + + + + +
    rofaapp.ItemTableWood 
    Modifier and TypeConstant FieldValue
    + +private final doublebasePrice45.0
    +
  • +
+
+ + + + + + diff --git a/dist/javadoc/deprecated-list.html b/dist/javadoc/deprecated-list.html new file mode 100644 index 0000000..572a42a --- /dev/null +++ b/dist/javadoc/deprecated-list.html @@ -0,0 +1,123 @@ + + + + + + +Deprecated List + + + + + + + + +
+ + + + + + + +
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/help-doc.html b/dist/javadoc/help-doc.html new file mode 100644 index 0000000..b41bd27 --- /dev/null +++ b/dist/javadoc/help-doc.html @@ -0,0 +1,224 @@ + + + + + + +API Help + + + + + + + + + + + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Use

    +

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ + + + + + diff --git a/dist/javadoc/index-files/index-1.html b/dist/javadoc/index-files/index-1.html new file mode 100644 index 0000000..d0373cf --- /dev/null +++ b/dist/javadoc/index-files/index-1.html @@ -0,0 +1,150 @@ + + + + + + +A-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

A

+
+
actionPerformed(ActionEvent) - Method in class rofaapp.AddItemWindow
+
+
Action listener for the buttons shown on the window.
+
+
actionPerformed(ActionEvent) - Method in class rofaapp.MainWindow
+
 
+
add(Furniture, int, boolean) - Method in class rofaapp.ItemOrder
+
+
Adds an item furniture to the ItemOrder.orderList at the given index.
+
+
AddItemWindow - Class in rofaapp
+
 
+
AddItemWindow(int, ItemOrder, TypeWood[]) - Constructor for class rofaapp.AddItemWindow
+
+
Constructor used when adding a new item.
+
+
AddItemWindow(int, ItemOrder, TypeWood[], int, Furniture) - Constructor for class rofaapp.AddItemWindow
+
+
Constructor used when editing an existing item.
+
+
armrestsCheckBoxChair - Variable in class rofaapp.AddItemWindow
+
 
+
arraySize - Variable in class rofaapp.ItemOrder
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-10.html b/dist/javadoc/index-files/index-10.html new file mode 100644 index 0000000..69a5066 --- /dev/null +++ b/dist/javadoc/index-files/index-10.html @@ -0,0 +1,130 @@ + + + + + + +L-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

L

+
+
loadEditSettings(Furniture) - Method in class rofaapp.AddItemWindow
+
+
Loads a given furniture item, and changes the window elements to the attributes of the given furniture item.
+
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-11.html b/dist/javadoc/index-files/index-11.html new file mode 100644 index 0000000..5c0555f --- /dev/null +++ b/dist/javadoc/index-files/index-11.html @@ -0,0 +1,156 @@ + + + + + + +M-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

M

+
+
main(String[]) - Static method in class rofaapp.ROFCMain
+
 
+
MainWindow - Class in rofaapp
+
 
+
MainWindow() - Constructor for class rofaapp.MainWindow
+
+
Constructor that initialises the window and it's properties (such as title, size, and it's layout).
+
+
menuAddItemButton - Variable in class rofaapp.MainWindow
+
 
+
menuClearButton - Variable in class rofaapp.MainWindow
+
 
+
menuLoadButton - Variable in class rofaapp.MainWindow
+
 
+
menuPanel - Variable in class rofaapp.MainWindow
+
 
+
menuSaveButton - Variable in class rofaapp.MainWindow
+
 
+
menuSummaryButton - Variable in class rofaapp.MainWindow
+
 
+
mouseClicked(MouseEvent) - Method in class rofaapp.MainWindow
+
 
+
mouseEntered(MouseEvent) - Method in class rofaapp.MainWindow
+
 
+
mouseExited(MouseEvent) - Method in class rofaapp.MainWindow
+
 
+
mousePressed(MouseEvent) - Method in class rofaapp.MainWindow
+
 
+
mouseReleased(MouseEvent) - Method in class rofaapp.MainWindow
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-12.html b/dist/javadoc/index-files/index-12.html new file mode 100644 index 0000000..0eaae27 --- /dev/null +++ b/dist/javadoc/index-files/index-12.html @@ -0,0 +1,134 @@ + + + + + + +N-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

N

+
+
name - Variable in class rofaapp.Furniture
+
 
+
name - Variable in class rofaapp.TypeWood
+
 
+
normalise() - Method in class rofaapp.ItemOrder
+
+
Shifts all objects within ItemOrder.orderList so that there are no gaps in between items in the array.
+
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-13.html b/dist/javadoc/index-files/index-13.html new file mode 100644 index 0000000..4a80065 --- /dev/null +++ b/dist/javadoc/index-files/index-13.html @@ -0,0 +1,130 @@ + + + + + + +O-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

O

+
+
order - Variable in class rofaapp.AddItemWindow
+
 
+
orderList - Variable in class rofaapp.ItemOrder
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-14.html b/dist/javadoc/index-files/index-14.html new file mode 100644 index 0000000..c8170a7 --- /dev/null +++ b/dist/javadoc/index-files/index-14.html @@ -0,0 +1,128 @@ + + + + + + +P-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

P

+
+
price - Variable in class rofaapp.TypeWood
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-15.html b/dist/javadoc/index-files/index-15.html new file mode 100644 index 0000000..703a331 --- /dev/null +++ b/dist/javadoc/index-files/index-15.html @@ -0,0 +1,130 @@ + + + + + + +Q-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

Q

+
+
quantitySpinnerChair - Variable in class rofaapp.AddItemWindow
+
 
+
quantitySpinnerTable - Variable in class rofaapp.AddItemWindow
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-16.html b/dist/javadoc/index-files/index-16.html new file mode 100644 index 0000000..544533c --- /dev/null +++ b/dist/javadoc/index-files/index-16.html @@ -0,0 +1,140 @@ + + + + + + +R-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

R

+
+
resize(ImageIcon, int, int) - Static method in class rofaapp.ItemIcon
+
+
Resizes an ImageIcon using the Image.SCALE_SMOOTH arg.
+
+
resize(ImageIcon, Dimension) - Static method in class rofaapp.ItemIcon
+
+
Resizes an ImageIcon using the Image.SCALE_SMOOTH arg.
+
+
rofaapp - package rofaapp
+
 
+
ROFCMain - Class in rofaapp
+
 
+
ROFCMain() - Constructor for class rofaapp.ROFCMain
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-17.html b/dist/javadoc/index-files/index-17.html new file mode 100644 index 0000000..6ee88ea --- /dev/null +++ b/dist/javadoc/index-files/index-17.html @@ -0,0 +1,150 @@ + + + + + + +S-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

S

+
+
setDepth(int) - Method in class rofaapp.ItemDesk
+
 
+
setDiameter(int) - Method in class rofaapp.ItemTable
+
 
+
setDraws(int) - Method in class rofaapp.ItemDesk
+
 
+
setIcon(ImageIcon) - Method in class rofaapp.Furniture
+
 
+
setId(int) - Method in class rofaapp.Furniture
+
 
+
setItemPanel(JPanel, Furniture) - Method in class rofaapp.MainWindow
+
+
Sets the given panel to the given furniture object, meaning the panel contains the icon of the given furniture.
+
+
setName(String) - Method in class rofaapp.Furniture
+
 
+
setWidth(int) - Method in class rofaapp.ItemDesk
+
 
+
setWood(TypeWood) - Method in class rofaapp.Furniture
+
 
+
summaryPanel - Variable in class rofaapp.MainWindow
+
 
+
summaryTitleLabel - Variable in class rofaapp.MainWindow
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-18.html b/dist/javadoc/index-files/index-18.html new file mode 100644 index 0000000..868730a --- /dev/null +++ b/dist/javadoc/index-files/index-18.html @@ -0,0 +1,140 @@ + + + + + + +T-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

T

+
+
TABLE_ICON_1 - Static variable in class rofaapp.ItemIcon
+
 
+
TABLE_ICON_2 - Static variable in class rofaapp.ItemIcon
+
 
+
tablePanel - Variable in class rofaapp.AddItemWindow
+
 
+
toString() - Method in class rofaapp.TypeWood
+
+
Gets the name of the wood type.
+
+
TypeWood - Class in rofaapp
+
 
+
TypeWood(String, double) - Constructor for class rofaapp.TypeWood
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-19.html b/dist/javadoc/index-files/index-19.html new file mode 100644 index 0000000..fd2bfa6 --- /dev/null +++ b/dist/javadoc/index-files/index-19.html @@ -0,0 +1,142 @@ + + + + + + +U-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

U

+
+
units - Variable in class rofaapp.ItemArmChair
+
 
+
units - Variable in class rofaapp.ItemChair
+
 
+
updateItemOrder() - Method in class rofaapp.MainWindow
+
+
Iterates through each of the panels within the MainWindow.gridPanel and calls MainWindow.setItemPanel(JPanel, Furniture) to update each panel with the correct image and data.
+
+
updateItemSummaryPanel(int) - Method in class rofaapp.MainWindow
+
+
Changes the elements within the MainWindow.itemSummaryPanel depending on what the user has clicked.
+
+
updateSummaryPanel() - Method in class rofaapp.MainWindow
+
+
Updates and redraws the total price label at the bottom of the window.
+
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-2.html b/dist/javadoc/index-files/index-2.html new file mode 100644 index 0000000..e9293ec --- /dev/null +++ b/dist/javadoc/index-files/index-2.html @@ -0,0 +1,136 @@ + + + + + + +B-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

B

+
+
basePrice - Variable in class rofaapp.ItemTableChrome
+
 
+
basePrice - Variable in class rofaapp.ItemTableWood
+
 
+
buttonSwitchChair - Variable in class rofaapp.AddItemWindow
+
 
+
buttonSwitchDesk - Variable in class rofaapp.AddItemWindow
+
 
+
buttonSwitchTable - Variable in class rofaapp.AddItemWindow
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-20.html b/dist/javadoc/index-files/index-20.html new file mode 100644 index 0000000..8023717 --- /dev/null +++ b/dist/javadoc/index-files/index-20.html @@ -0,0 +1,144 @@ + + + + + + +W-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

W

+
+
width - Variable in class rofaapp.ItemDesk
+
 
+
widthSpinnerDesk - Variable in class rofaapp.AddItemWindow
+
 
+
wood - Variable in class rofaapp.Furniture
+
 
+
WOOD_OAK - Static variable in class rofaapp.TypeWood
+
 
+
WOOD_WALNUT - Static variable in class rofaapp.TypeWood
+
 
+
woodComboBoxChair - Variable in class rofaapp.AddItemWindow
+
 
+
woodComboBoxDesk - Variable in class rofaapp.AddItemWindow
+
 
+
woodComboBoxTable - Variable in class rofaapp.AddItemWindow
+
 
+
woodTypes - Variable in class rofaapp.AddItemWindow
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-21.html b/dist/javadoc/index-files/index-21.html new file mode 100644 index 0000000..913e9e4 --- /dev/null +++ b/dist/javadoc/index-files/index-21.html @@ -0,0 +1,130 @@ + + + + + + +Y-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

Y

+
+
yesButton - Variable in class rofaapp.AddItemWindow
+
 
+
yesnoPanel - Variable in class rofaapp.AddItemWindow
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-3.html b/dist/javadoc/index-files/index-3.html new file mode 100644 index 0000000..85382c3 --- /dev/null +++ b/dist/javadoc/index-files/index-3.html @@ -0,0 +1,150 @@ + + + + + + +C-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

C

+
+
cancelButton - Variable in class rofaapp.AddItemWindow
+
 
+
CHAIR_ICON_1 - Static variable in class rofaapp.ItemIcon
+
 
+
CHAIR_ICON_2 - Static variable in class rofaapp.ItemIcon
+
 
+
chairPanel - Variable in class rofaapp.AddItemWindow
+
 
+
changeSelectedPanel(int) - Method in class rofaapp.AddItemWindow
+
+
Changes the currently selected tab.
+
+
changeSelectedPanel(int, int, int) - Method in class rofaapp.MainWindow
+
+
Changes the current selected, and highlighed, MainWindow.imagepanels.
+
+
chromeCheckBoxTable - Variable in class rofaapp.AddItemWindow
+
 
+
currentOrder - Variable in class rofaapp.MainWindow
+
 
+
currentSelected - Variable in class rofaapp.MainWindow
+
 
+
currentSize - Variable in class rofaapp.ItemOrder
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-4.html b/dist/javadoc/index-files/index-4.html new file mode 100644 index 0000000..aff5c53 --- /dev/null +++ b/dist/javadoc/index-files/index-4.html @@ -0,0 +1,158 @@ + + + + + + +D-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

D

+
+
del(int) - Method in class rofaapp.ItemOrder
+
+
Deletes (nulls) a furniture object in ItemOrder.orderList where the given index is.
+
+
deleteAll() - Method in class rofaapp.ItemOrder
+
+
Deletes (nulls) everything in the list.
+
+
depth - Variable in class rofaapp.ItemDesk
+
 
+
depthSpinnerDesk - Variable in class rofaapp.AddItemWindow
+
 
+
DESK_ICON - Static variable in class rofaapp.ItemIcon
+
 
+
DESK_ICON_1 - Static variable in class rofaapp.ItemIcon
+
 
+
DESK_ICON_2 - Static variable in class rofaapp.ItemIcon
+
 
+
DESK_ICON_3 - Static variable in class rofaapp.ItemIcon
+
 
+
DESK_ICON_4 - Static variable in class rofaapp.ItemIcon
+
 
+
deskPanel - Variable in class rofaapp.AddItemWindow
+
 
+
diameter - Variable in class rofaapp.ItemTable
+
 
+
diameterSpinnerTable - Variable in class rofaapp.AddItemWindow
+
 
+
draws - Variable in class rofaapp.ItemDesk
+
 
+
drawsSpinnerDesk - Variable in class rofaapp.AddItemWindow
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-5.html b/dist/javadoc/index-files/index-5.html new file mode 100644 index 0000000..15e075b --- /dev/null +++ b/dist/javadoc/index-files/index-5.html @@ -0,0 +1,128 @@ + + + + + + +E-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

E

+
+
editIndex - Variable in class rofaapp.AddItemWindow
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-6.html b/dist/javadoc/index-files/index-6.html new file mode 100644 index 0000000..29e4275 --- /dev/null +++ b/dist/javadoc/index-files/index-6.html @@ -0,0 +1,130 @@ + + + + + + +F-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

F

+
+
Furniture - Class in rofaapp
+
 
+
Furniture() - Constructor for class rofaapp.Furniture
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-7.html b/dist/javadoc/index-files/index-7.html new file mode 100644 index 0000000..ba3baaf --- /dev/null +++ b/dist/javadoc/index-files/index-7.html @@ -0,0 +1,202 @@ + + + + + + +G-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

G

+
+
get(int) - Method in class rofaapp.ItemOrder
+
+
Gets the furniture object of the given index in the ItemOrder.orderList if valid.
+
+
getCurrentSize() - Method in class rofaapp.ItemOrder
+
+
Current array size.
+
+
getDepth() - Method in class rofaapp.ItemDesk
+
 
+
getDiameter() - Method in class rofaapp.ItemTable
+
 
+
getDraws() - Method in class rofaapp.ItemDesk
+
 
+
getFirstAvailable() - Method in class rofaapp.ItemOrder
+
+
Gets the index of the first available space within ItemOrder.orderList.
+
+
getFreeSpace() - Method in class rofaapp.ItemOrder
+
+
Gets the number of free spaces within the ItemOrder.orderList.
+
+
getHeight() - Method in class rofaapp.ItemDesk
+
 
+
getIcon() - Method in class rofaapp.Furniture
+
 
+
getId() - Method in class rofaapp.Furniture
+
 
+
getMaxSize() - Method in class rofaapp.ItemOrder
+
 
+
getName() - Method in class rofaapp.Furniture
+
 
+
getName() - Method in class rofaapp.TypeWood
+
 
+
getPrice() - Method in class rofaapp.Furniture
+
 
+
getPrice() - Method in class rofaapp.ItemArmChair
+
 
+
getPrice() - Method in class rofaapp.ItemChair
+
 
+
getPrice() - Method in class rofaapp.ItemDesk
+
 
+
getPrice() - Method in class rofaapp.ItemOrder
+
+
Gets the price of all the items within ItemOrder.orderList.
+
+
getPrice() - Method in class rofaapp.ItemTableChrome
+
 
+
getPrice() - Method in class rofaapp.ItemTableWood
+
 
+
getPrice() - Method in class rofaapp.TypeWood
+
 
+
getTabValue(Furniture) - Static method in class rofaapp.AddItemWindow
+
+
Simple method for giving an instance of furnature and getting back the tab index of the object in the window.
+
+
getUnits() - Method in class rofaapp.Furniture
+
 
+
getUnits() - Method in class rofaapp.ItemChair
+
 
+
getUnits() - Method in class rofaapp.ItemDesk
+
+
Does nothing.
+
+
getUnits() - Method in class rofaapp.ItemTable
+
 
+
getUpdatedOrder() - Method in class rofaapp.AddItemWindow
+
 
+
getWidth() - Method in class rofaapp.ItemDesk
+
 
+
getWood() - Method in class rofaapp.Furniture
+
 
+
gridPanel - Variable in class rofaapp.MainWindow
+
 
+
gridTotalPriceLabel - Variable in class rofaapp.MainWindow
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-8.html b/dist/javadoc/index-files/index-8.html new file mode 100644 index 0000000..6c3fcd4 --- /dev/null +++ b/dist/javadoc/index-files/index-8.html @@ -0,0 +1,128 @@ + + + + + + +H-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

H

+
+
height - Variable in class rofaapp.ItemDesk
+
 
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index-files/index-9.html b/dist/javadoc/index-files/index-9.html new file mode 100644 index 0000000..23af1b4 --- /dev/null +++ b/dist/javadoc/index-files/index-9.html @@ -0,0 +1,206 @@ + + + + + + +I-Index + + + + + + + + +
+ + + + + + + +
+ + +
A B C D E F G H I L M N O P Q R S T U W Y  + + +

I

+
+
icon - Variable in class rofaapp.Furniture
+
 
+
id - Variable in class rofaapp.Furniture
+
 
+
idSpinnerChair - Variable in class rofaapp.AddItemWindow
+
 
+
idSpinnerDesk - Variable in class rofaapp.AddItemWindow
+
 
+
idSpinnerTable - Variable in class rofaapp.AddItemWindow
+
 
+
imagepanels - Variable in class rofaapp.MainWindow
+
 
+
initPanels() - Method in class rofaapp.MainWindow
+
+
Initialises all four panels used in the main window (creates instances of them, their sizes and adds them to the master panel).
+
+
initSelectButtons() - Method in class rofaapp.AddItemWindow
+
+
Initialises the three buttons displayed at the top of the frame (instantiates them, adds their text, creates the actionlistener and adds them to the panel).
+
+
initSelectedPanels() - Method in class rofaapp.AddItemWindow
+
+
Creates all of the panels and buttons and elements needed for each of the panels for each of the furniture items.
+
+
initWindowSettings() - Method in class rofaapp.AddItemWindow
+
+
Initialises basic elements of the window (such as layout, the default close operation and the modality type).
+
+
initYesNoButtons() - Method in class rofaapp.AddItemWindow
+
+
Initialises the 'Yes-No' buttons shown at the bottom of the form (creates them and adds them to the panel).
+
+
isEdit - Variable in class rofaapp.AddItemWindow
+
 
+
isValidIndex(int) - Method in class rofaapp.ItemOrder
+
+
Checks if the given number is a valid index (0 to ItemOrder.arraySize).
+
+
ItemArmChair - Class in rofaapp
+
 
+
ItemArmChair(int, TypeWood, ImageIcon) - Constructor for class rofaapp.ItemArmChair
+
 
+
ItemChair - Class in rofaapp
+
 
+
ItemChair() - Constructor for class rofaapp.ItemChair
+
 
+
ItemChair(int, TypeWood, ImageIcon) - Constructor for class rofaapp.ItemChair
+
+
Full Constructor
+
+
ItemDesk - Class in rofaapp
+
 
+
ItemDesk(int, TypeWood, ImageIcon, int, int, int) - Constructor for class rofaapp.ItemDesk
+
 
+
ItemIcon - Class in rofaapp
+
 
+
ItemIcon() - Constructor for class rofaapp.ItemIcon
+
 
+
ItemOrder - Class in rofaapp
+
 
+
ItemOrder() - Constructor for class rofaapp.ItemOrder
+
+
Creates an empty item order of ItemOrder.arraySize items.
+
+
itemSummaryPanel - Variable in class rofaapp.MainWindow
+
 
+
ItemTable - Class in rofaapp
+
 
+
ItemTable() - Constructor for class rofaapp.ItemTable
+
 
+
ItemTableChrome - Class in rofaapp
+
 
+
ItemTableChrome(int, TypeWood, ImageIcon, int) - Constructor for class rofaapp.ItemTableChrome
+
 
+
ItemTableWood - Class in rofaapp
+
 
+
ItemTableWood(int, TypeWood, ImageIcon, int) - Constructor for class rofaapp.ItemTableWood
+
+
Constructor for the Wood Table.
+
+
+A B C D E F G H I L M N O P Q R S T U W Y 
+ +
+ + + + + + + +
+ + + + diff --git a/dist/javadoc/index.html b/dist/javadoc/index.html new file mode 100644 index 0000000..893ebba --- /dev/null +++ b/dist/javadoc/index.html @@ -0,0 +1,73 @@ + + + + + + +Generated Documentation (Untitled) + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="rofaapp/package-summary.html">Non-frame version</a>.</p> + + + diff --git a/dist/javadoc/overview-tree.html b/dist/javadoc/overview-tree.html new file mode 100644 index 0000000..e4185be --- /dev/null +++ b/dist/javadoc/overview-tree.html @@ -0,0 +1,185 @@ + + + + + + +Class Hierarchy + + + + + + + + + + + +
+

Hierarchy For All Packages

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable) +
        +
      • java.awt.Container +
          +
        • java.awt.Window (implements javax.accessibility.Accessible) +
            +
          • java.awt.Dialog +
              +
            • javax.swing.JDialog (implements javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants) +
                +
              • rofaapp.AddItemWindow (implements java.awt.event.ActionListener)
              • +
              +
            • +
            +
          • +
          • java.awt.Frame (implements java.awt.MenuContainer) +
              +
            • javax.swing.JFrame (implements javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants) +
                +
              • rofaapp.MainWindow (implements java.awt.event.ActionListener, java.awt.event.MouseListener)
              • +
              +
            • +
            +
          • +
          +
        • +
        +
      • +
      +
    • +
    • rofaapp.Furniture (implements java.io.Serializable) + +
    • +
    • rofaapp.ItemIcon
    • +
    • rofaapp.ItemOrder (implements java.io.Serializable)
    • +
    • rofaapp.ROFCMain
    • +
    • rofaapp.TypeWood (implements java.io.Serializable)
    • +
    +
  • +
+
+ + + + + + diff --git a/dist/javadoc/package-list b/dist/javadoc/package-list new file mode 100644 index 0000000..6b43be1 --- /dev/null +++ b/dist/javadoc/package-list @@ -0,0 +1 @@ +rofaapp diff --git a/dist/javadoc/rofaapp/AddItemWindow.html b/dist/javadoc/rofaapp/AddItemWindow.html new file mode 100644 index 0000000..3a4bc93 --- /dev/null +++ b/dist/javadoc/rofaapp/AddItemWindow.html @@ -0,0 +1,992 @@ + + + + + + +AddItemWindow + + + + + + + + + + + + +
+
rofaapp
+

Class AddItemWindow

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.awt.Component
    • +
    • +
        +
      • java.awt.Container
      • +
      • +
          +
        • java.awt.Window
        • +
        • +
            +
          • java.awt.Dialog
          • +
          • +
              +
            • javax.swing.JDialog
            • +
            • +
                +
              • rofaapp.AddItemWindow
              • +
              +
            • +
            +
          • +
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants
    +
    +
    +
    +
    public class AddItemWindow
    +extends javax.swing.JDialog
    +implements java.awt.event.ActionListener
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Nested Class Summary

      +
        +
      • + + +

        Nested classes/interfaces inherited from class javax.swing.JDialog

        +javax.swing.JDialog.AccessibleJDialog
      • +
      +
        +
      • + + +

        Nested classes/interfaces inherited from class java.awt.Dialog

        +java.awt.Dialog.AccessibleAWTDialog, java.awt.Dialog.ModalExclusionType, java.awt.Dialog.ModalityType
      • +
      +
        +
      • + + +

        Nested classes/interfaces inherited from class java.awt.Window

        +java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type
      • +
      +
        +
      • + + +

        Nested classes/interfaces inherited from class java.awt.Container

        +java.awt.Container.AccessibleAWTContainer
      • +
      +
        +
      • + + +

        Nested classes/interfaces inherited from class java.awt.Component

        +java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
      • +
      +
    • +
    + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      (package private) javax.swing.JCheckBoxarmrestsCheckBoxChair 
      (package private) javax.swing.JButtonbuttonSwitchChair 
      (package private) javax.swing.JButtonbuttonSwitchDesk 
      (package private) javax.swing.JButtonbuttonSwitchTable 
      (package private) javax.swing.JButtoncancelButton 
      (package private) javax.swing.JPanelchairPanel 
      (package private) javax.swing.JCheckBoxchromeCheckBoxTable 
      (package private) javax.swing.JSpinnerdepthSpinnerDesk 
      (package private) javax.swing.JPaneldeskPanel 
      (package private) javax.swing.JSpinnerdiameterSpinnerTable 
      (package private) javax.swing.JSpinnerdrawsSpinnerDesk 
      private inteditIndex 
      (package private) javax.swing.JSpinneridSpinnerChair 
      (package private) javax.swing.JSpinneridSpinnerDesk 
      (package private) javax.swing.JSpinneridSpinnerTable 
      private booleanisEdit 
      private ItemOrderorder 
      (package private) javax.swing.JSpinnerquantitySpinnerChair 
      (package private) javax.swing.JSpinnerquantitySpinnerTable 
      (package private) javax.swing.JPaneltablePanel 
      (package private) javax.swing.JSpinnerwidthSpinnerDesk 
      (package private) javax.swing.JComboBoxwoodComboBoxChair 
      (package private) javax.swing.JComboBoxwoodComboBoxDesk 
      (package private) javax.swing.JComboBoxwoodComboBoxTable 
      private TypeWood[]woodTypes 
      (package private) javax.swing.JButtonyesButton 
      (package private) javax.swing.JPanelyesnoPanel 
      +
        +
      • + + +

        Fields inherited from class javax.swing.JDialog

        +accessibleContext, rootPane, rootPaneCheckingEnabled
      • +
      +
        +
      • + + +

        Fields inherited from class java.awt.Dialog

        +DEFAULT_MODALITY_TYPE
      • +
      +
        +
      • + + +

        Fields inherited from class java.awt.Component

        +BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
      • +
      +
        +
      • + + +

        Fields inherited from interface javax.swing.WindowConstants

        +DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE
      • +
      +
        +
      • + + +

        Fields inherited from interface java.awt.image.ImageObserver

        +ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
      • +
      +
    • +
    + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidactionPerformed(java.awt.event.ActionEvent e) +
      Action listener for the buttons shown on the window.
      +
      private voidchangeSelectedPanel(int i) +
      Changes the currently selected tab.
      +
      static intgetTabValue(Furniture f) +
      Simple method for giving an instance of furnature and getting back the tab index of the object in the window.
      +
      ItemOrdergetUpdatedOrder() 
      private voidinitSelectButtons() +
      Initialises the three buttons displayed at the top of the frame (instantiates them, adds their text, creates the actionlistener and adds them to the panel).
      +
      private voidinitSelectedPanels() +
      Creates all of the panels and buttons and elements needed for each of the panels for each of the furniture items.
      +
      private voidinitWindowSettings() +
      Initialises basic elements of the window (such as layout, the default close operation and the modality type).
      +
      private voidinitYesNoButtons() +
      Initialises the 'Yes-No' buttons shown at the bottom of the form (creates them and adds them to the panel).
      +
      private voidloadEditSettings(Furniture f) +
      Loads a given furniture item, and changes the window elements to the attributes of the given furniture item.
      +
      +
        +
      • + + +

        Methods inherited from class javax.swing.JDialog

        +addImpl, createRootPane, dialogInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
      • +
      +
        +
      • + + +

        Methods inherited from class java.awt.Dialog

        +addNotify, getModalityType, getTitle, hide, isModal, isResizable, isUndecorated, setBackground, setModal, setModalityType, setOpacity, setResizable, setShape, setTitle, setUndecorated, setVisible, show, toBack
      • +
      +
        +
      • + + +

        Methods inherited from class java.awt.Window

        +addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeNotify, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImage, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, toFront
      • +
      +
        +
      • + + +

        Methods inherited from class java.awt.Container

        +add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree
      • +
      +
        +
      • + + +

        Methods inherited from class java.awt.Component

        +action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + + + + + +
        +
      • +

        woodTypes

        +
        private TypeWood[] woodTypes
        +
      • +
      + + + +
        +
      • +

        isEdit

        +
        private boolean isEdit
        +
      • +
      + + + +
        +
      • +

        editIndex

        +
        private int editIndex
        +
      • +
      + + + +
        +
      • +

        chairPanel

        +
        javax.swing.JPanel chairPanel
        +
      • +
      + + + +
        +
      • +

        tablePanel

        +
        javax.swing.JPanel tablePanel
        +
      • +
      + + + +
        +
      • +

        deskPanel

        +
        javax.swing.JPanel deskPanel
        +
      • +
      + + + +
        +
      • +

        yesnoPanel

        +
        javax.swing.JPanel yesnoPanel
        +
      • +
      + + + +
        +
      • +

        buttonSwitchChair

        +
        javax.swing.JButton buttonSwitchChair
        +
      • +
      + + + +
        +
      • +

        buttonSwitchTable

        +
        javax.swing.JButton buttonSwitchTable
        +
      • +
      + + + +
        +
      • +

        buttonSwitchDesk

        +
        javax.swing.JButton buttonSwitchDesk
        +
      • +
      + + + +
        +
      • +

        yesButton

        +
        javax.swing.JButton yesButton
        +
      • +
      + + + +
        +
      • +

        cancelButton

        +
        javax.swing.JButton cancelButton
        +
      • +
      + + + +
        +
      • +

        idSpinnerChair

        +
        javax.swing.JSpinner idSpinnerChair
        +
      • +
      + + + +
        +
      • +

        quantitySpinnerChair

        +
        javax.swing.JSpinner quantitySpinnerChair
        +
      • +
      + + + +
        +
      • +

        idSpinnerDesk

        +
        javax.swing.JSpinner idSpinnerDesk
        +
      • +
      + + + +
        +
      • +

        drawsSpinnerDesk

        +
        javax.swing.JSpinner drawsSpinnerDesk
        +
      • +
      + + + +
        +
      • +

        widthSpinnerDesk

        +
        javax.swing.JSpinner widthSpinnerDesk
        +
      • +
      + + + +
        +
      • +

        depthSpinnerDesk

        +
        javax.swing.JSpinner depthSpinnerDesk
        +
      • +
      + + + +
        +
      • +

        idSpinnerTable

        +
        javax.swing.JSpinner idSpinnerTable
        +
      • +
      + + + +
        +
      • +

        quantitySpinnerTable

        +
        javax.swing.JSpinner quantitySpinnerTable
        +
      • +
      + + + +
        +
      • +

        diameterSpinnerTable

        +
        javax.swing.JSpinner diameterSpinnerTable
        +
      • +
      + + + +
        +
      • +

        woodComboBoxChair

        +
        javax.swing.JComboBox woodComboBoxChair
        +
      • +
      + + + +
        +
      • +

        woodComboBoxDesk

        +
        javax.swing.JComboBox woodComboBoxDesk
        +
      • +
      + + + +
        +
      • +

        woodComboBoxTable

        +
        javax.swing.JComboBox woodComboBoxTable
        +
      • +
      + + + +
        +
      • +

        armrestsCheckBoxChair

        +
        javax.swing.JCheckBox armrestsCheckBoxChair
        +
      • +
      + + + +
        +
      • +

        chromeCheckBoxTable

        +
        javax.swing.JCheckBox chromeCheckBoxTable
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + + + + + +
        +
      • +

        AddItemWindow

        +
        public AddItemWindow(int defaultPanel,
        +                     ItemOrder o,
        +                     TypeWood[] tw,
        +                     int index,
        +                     Furniture f)
        +
        Constructor used when editing an existing item. + Calls all initialisation functions for the window: initWindowSettings(), initSelectButtons(), initSelectedPanels(), initYesNoButtons(). +
        + For the edit constructor, calls loadEditSettings(Furniture) which shows the current item's attributes in the window.
        +
        +
        Parameters:
        +
        defaultPanel - Selects the panel that will be shown when the window is first shown (the default panel). Calls/is used in the function changeSelectedPanel(int).
        +
        o - The current item order that will be edited.
        +
        tw - An array if all of the wood types.
        +
        index - The index of the currently edited item within the ItemOrder (0-8, if not, will throw an exception).
        +
        f - The furniture object of the item that is being edited.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        initWindowSettings

        +
        private void initWindowSettings()
        +
        Initialises basic elements of the window (such as layout, the default close operation and the modality type).
        +
      • +
      + + + +
        +
      • +

        initSelectButtons

        +
        private void initSelectButtons()
        +
        Initialises the three buttons displayed at the top of the frame (instantiates them, adds their text, creates the actionlistener and adds them to the panel).
        +
      • +
      + + + +
        +
      • +

        initYesNoButtons

        +
        private void initYesNoButtons()
        +
        Initialises the 'Yes-No' buttons shown at the bottom of the form (creates them and adds them to the panel).
        +
      • +
      + + + +
        +
      • +

        initSelectedPanels

        +
        private void initSelectedPanels()
        +
        Creates all of the panels and buttons and elements needed for each of the panels for each of the furniture items. Creates all elements, adds the action listeners for them and adds them to the window. (WARNING: Very long function of repetitiveness).
        +
      • +
      + + + +
        +
      • +

        loadEditSettings

        +
        private void loadEditSettings(Furniture f)
        +
        Loads a given furniture item, and changes the window elements to the attributes of the given furniture item.
        +
        +
        Parameters:
        +
        f - Given furniture item.
        +
        +
      • +
      + + + +
        +
      • +

        getTabValue

        +
        public static int getTabValue(Furniture f)
        +
        Simple method for giving an instance of furnature and getting back the tab index of the object in the window.
        +
        +
        Parameters:
        +
        f - The furniture item.
        +
        Returns:
        +
        The tab index of the given item.
        +
        +
      • +
      + + + +
        +
      • +

        changeSelectedPanel

        +
        private void changeSelectedPanel(int i)
        +
        Changes the currently selected tab.
        +
        +
        Parameters:
        +
        i - The tab index to switch views to. (1-3. If not a valid index, will display an empty panel.)
        +
        +
      • +
      + + + +
        +
      • +

        getUpdatedOrder

        +
        public ItemOrder getUpdatedOrder()
        +
        +
        Returns:
        +
        The current order within the window instance.
        +
        +
      • +
      + + + +
        +
      • +

        actionPerformed

        +
        public void actionPerformed(java.awt.event.ActionEvent e)
        +
        Action listener for the buttons shown on the window.
        +
        +
        Specified by:
        +
        actionPerformed in interface java.awt.event.ActionListener
        +
        Parameters:
        +
        e - ActionEvent.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/Furniture.html b/dist/javadoc/rofaapp/Furniture.html new file mode 100644 index 0000000..cabf181 --- /dev/null +++ b/dist/javadoc/rofaapp/Furniture.html @@ -0,0 +1,475 @@ + + + + + + +Furniture + + + + + + + + + + + + +
+
rofaapp
+

Class Furniture

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • rofaapp.Furniture
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    Direct Known Subclasses:
    +
    ItemChair, ItemDesk, ItemTable
    +
    +
    +
    +
    public abstract class Furniture
    +extends java.lang.Object
    +implements java.io.Serializable
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      private javax.swing.ImageIconicon 
      private intid 
      private java.lang.Stringname 
      private TypeWoodwood 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      Furniture() 
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        id

        +
        private int id
        +
      • +
      + + + + + + + +
        +
      • +

        icon

        +
        private javax.swing.ImageIcon icon
        +
      • +
      + + + +
        +
      • +

        name

        +
        private java.lang.String name
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Furniture

        +
        public Furniture()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getId

        +
        public int getId()
        +
      • +
      + + + +
        +
      • +

        getWood

        +
        public TypeWood getWood()
        +
      • +
      + + + +
        +
      • +

        getIcon

        +
        public javax.swing.ImageIcon getIcon()
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
      • +
      + + + +
        +
      • +

        setId

        +
        public boolean setId(int i)
        +
      • +
      + + + +
        +
      • +

        setWood

        +
        public boolean setWood(TypeWood w)
        +
      • +
      + + + +
        +
      • +

        setIcon

        +
        public boolean setIcon(javax.swing.ImageIcon i)
        +
      • +
      + + + +
        +
      • +

        setName

        +
        public boolean setName(java.lang.String s)
        +
      • +
      + + + +
        +
      • +

        getUnits

        +
        public abstract int getUnits()
        +
      • +
      + + + +
        +
      • +

        getPrice

        +
        public abstract double getPrice()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/ItemArmChair.html b/dist/javadoc/rofaapp/ItemArmChair.html new file mode 100644 index 0000000..cba4c7e --- /dev/null +++ b/dist/javadoc/rofaapp/ItemArmChair.html @@ -0,0 +1,352 @@ + + + + + + +ItemArmChair + + + + + + + + + + + + +
+
rofaapp
+

Class ItemArmChair

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class ItemArmChair
    +extends ItemChair
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+ +
+
+ +
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/ItemChair.html b/dist/javadoc/rofaapp/ItemChair.html new file mode 100644 index 0000000..68642ae --- /dev/null +++ b/dist/javadoc/rofaapp/ItemChair.html @@ -0,0 +1,382 @@ + + + + + + +ItemChair + + + + + + + + + + + + +
+
rofaapp
+

Class ItemChair

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    Direct Known Subclasses:
    +
    ItemArmChair
    +
    +
    +
    +
    public class ItemChair
    +extends Furniture
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+ +
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ItemChair

        +
        ItemChair()
        +
      • +
      + + + +
        +
      • +

        ItemChair

        +
        ItemChair(int i,
        +          TypeWood tw,
        +          javax.swing.ImageIcon im)
        +
        Full Constructor
        +
        +
        Parameters:
        +
        i - ID of the item.
        +
        tw - Wood Type of the item.
        +
        im - Icon of the item.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getUnits

        +
        public int getUnits()
        +
        +
        Specified by:
        +
        getUnits in class Furniture
        +
        +
      • +
      + + + +
        +
      • +

        getPrice

        +
        public double getPrice()
        +
        +
        Specified by:
        +
        getPrice in class Furniture
        +
        Returns:
        +
        units * woodPrice.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/ItemDesk.html b/dist/javadoc/rofaapp/ItemDesk.html new file mode 100644 index 0000000..d524b4e --- /dev/null +++ b/dist/javadoc/rofaapp/ItemDesk.html @@ -0,0 +1,507 @@ + + + + + + +ItemDesk + + + + + + + + + + + + +
+
rofaapp
+

Class ItemDesk

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class ItemDesk
    +extends Furniture
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + + + + + +
        +
      • +

        depth

        +
        private int depth
        +
      • +
      + + + +
        +
      • +

        width

        +
        private int width
        +
      • +
      + + + +
        +
      • +

        draws

        +
        private int draws
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ItemDesk

        +
        ItemDesk(int idl,
        +         TypeWood tw,
        +         javax.swing.ImageIcon ic,
        +         int drawcount,
        +         int widthcount,
        +         int depthcount)
        +
        +
        Parameters:
        +
        idl - ID of the item.
        +
        tw - Wood Type of the item.
        +
        ic - Icon of the item.
        +
        drawcount - Amount of draws
        +
        widthcount - Width of the desk.
        +
        depthcount - Depth of the desk.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getHeight

        +
        public int getHeight()
        +
      • +
      + + + +
        +
      • +

        getDepth

        +
        public int getDepth()
        +
      • +
      + + + +
        +
      • +

        getWidth

        +
        public int getWidth()
        +
      • +
      + + + +
        +
      • +

        getDraws

        +
        public int getDraws()
        +
      • +
      + + + +
        +
      • +

        setDepth

        +
        public boolean setDepth(int d)
        +
      • +
      + + + +
        +
      • +

        setWidth

        +
        public boolean setWidth(int w)
        +
      • +
      + + + +
        +
      • +

        setDraws

        +
        public boolean setDraws(int d)
        +
      • +
      + + + +
        +
      • +

        getUnits

        +
        public int getUnits()
        +
        Does nothing.
        +
        +
        Specified by:
        +
        getUnits in class Furniture
        +
        Returns:
        +
        0
        +
        +
      • +
      + + + +
        +
      • +

        getPrice

        +
        public double getPrice()
        +
        +
        Specified by:
        +
        getPrice in class Furniture
        +
        Returns:
        +
        The price of the item.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/ItemIcon.html b/dist/javadoc/rofaapp/ItemIcon.html new file mode 100644 index 0000000..58e1b91 --- /dev/null +++ b/dist/javadoc/rofaapp/ItemIcon.html @@ -0,0 +1,450 @@ + + + + + + +ItemIcon + + + + + + + + + + + + +
+
rofaapp
+

Class ItemIcon

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • rofaapp.ItemIcon
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ItemIcon
    +extends java.lang.Object
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static javax.swing.ImageIconCHAIR_ICON_1 
      static javax.swing.ImageIconCHAIR_ICON_2 
      static javax.swing.ImageIcon[]DESK_ICON 
      static javax.swing.ImageIconDESK_ICON_1 
      static javax.swing.ImageIconDESK_ICON_2 
      static javax.swing.ImageIconDESK_ICON_3 
      static javax.swing.ImageIconDESK_ICON_4 
      static javax.swing.ImageIconTABLE_ICON_1 
      static javax.swing.ImageIconTABLE_ICON_2 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      ItemIcon() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static javax.swing.ImageIconresize(javax.swing.ImageIcon i, + java.awt.Dimension d) +
      Resizes an ImageIcon using the Image.SCALE_SMOOTH arg.
      +
      static javax.swing.ImageIconresize(javax.swing.ImageIcon i, + int x, + int y) +
      Resizes an ImageIcon using the Image.SCALE_SMOOTH arg.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        CHAIR_ICON_1

        +
        public static final javax.swing.ImageIcon CHAIR_ICON_1
        +
      • +
      + + + +
        +
      • +

        CHAIR_ICON_2

        +
        public static final javax.swing.ImageIcon CHAIR_ICON_2
        +
      • +
      + + + +
        +
      • +

        DESK_ICON_1

        +
        public static final javax.swing.ImageIcon DESK_ICON_1
        +
      • +
      + + + +
        +
      • +

        DESK_ICON_2

        +
        public static final javax.swing.ImageIcon DESK_ICON_2
        +
      • +
      + + + +
        +
      • +

        DESK_ICON_3

        +
        public static final javax.swing.ImageIcon DESK_ICON_3
        +
      • +
      + + + +
        +
      • +

        DESK_ICON_4

        +
        public static final javax.swing.ImageIcon DESK_ICON_4
        +
      • +
      + + + +
        +
      • +

        DESK_ICON

        +
        public static final javax.swing.ImageIcon[] DESK_ICON
        +
      • +
      + + + +
        +
      • +

        TABLE_ICON_1

        +
        public static final javax.swing.ImageIcon TABLE_ICON_1
        +
      • +
      + + + +
        +
      • +

        TABLE_ICON_2

        +
        public static final javax.swing.ImageIcon TABLE_ICON_2
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ItemIcon

        +
        public ItemIcon()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        resize

        +
        public static javax.swing.ImageIcon resize(javax.swing.ImageIcon i,
        +                                           int x,
        +                                           int y)
        +
        Resizes an ImageIcon using the Image.SCALE_SMOOTH arg.
        +
        +
        Parameters:
        +
        i - The ImageIcon.
        +
        x - The X size of the new image,
        +
        y - The Y size of the new image.
        +
        Returns:
        +
        The resized image.
        +
        +
      • +
      + + + +
        +
      • +

        resize

        +
        public static javax.swing.ImageIcon resize(javax.swing.ImageIcon i,
        +                                           java.awt.Dimension d)
        +
        Resizes an ImageIcon using the Image.SCALE_SMOOTH arg.
        +
        +
        Parameters:
        +
        i - The ImageIcon.
        +
        d - Dimension of the desired image.
        +
        Returns:
        +
        The resized image.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/ItemOrder.html b/dist/javadoc/rofaapp/ItemOrder.html new file mode 100644 index 0000000..01e9b59 --- /dev/null +++ b/dist/javadoc/rofaapp/ItemOrder.html @@ -0,0 +1,554 @@ + + + + + + +ItemOrder + + + + + + + + + + + + +
+
rofaapp
+

Class ItemOrder

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • rofaapp.ItemOrder
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class ItemOrder
    +extends java.lang.Object
    +implements java.io.Serializable
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      ItemOrder() +
      Creates an empty item order of arraySize items.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidadd(Furniture f, + int index, + boolean force) +
      Adds an item furniture to the orderList at the given index.
      +
      voiddel(int index) +
      Deletes (nulls) a furniture object in orderList where the given index is.
      +
      voiddeleteAll() +
      Deletes (nulls) everything in the list.
      +
      Furnitureget(int index) +
      Gets the furniture object of the given index in the orderList if valid.
      +
      intgetCurrentSize() +
      Current array size.
      +
      intgetFirstAvailable() +
      Gets the index of the first available space within orderList.
      +
      intgetFreeSpace() +
      Gets the number of free spaces within the orderList.
      +
      intgetMaxSize() 
      doublegetPrice() +
      Gets the price of all the items within orderList.
      +
      booleanisValidIndex(int i) +
      Checks if the given number is a valid index (0 to arraySize).
      +
      voidnormalise() +
      Shifts all objects within orderList so that there are no gaps in between items in the array.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + + + + + +
        +
      • +

        currentSize

        +
        private int currentSize
        +
      • +
      + + + +
        +
      • +

        orderList

        +
        private Furniture[] orderList
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ItemOrder

        +
        ItemOrder()
        +
        Creates an empty item order of arraySize items.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getFirstAvailable

        +
        public int getFirstAvailable()
        +
        Gets the index of the first available space within orderList. (-1 if full).
        +
        +
        Returns:
        +
        Integer of the first empty index. (-1 if full)
        +
        +
      • +
      + + + +
        +
      • +

        get

        +
        public Furniture get(int index)
        +
        Gets the furniture object of the given index in the orderList if valid. (Else, returns null).
        +
        +
        Parameters:
        +
        index - Index of the item within the array.
        +
        Returns:
        +
        Furniture item of the given index.
        +
        +
      • +
      + + + +
        +
      • +

        add

        +
        public void add(Furniture f,
        +                int index,
        +                boolean force)
        +
        Adds an item furniture to the orderList at the given index.
        +
        +
        Parameters:
        +
        f - Furniture object to add.
        +
        index - Index within the orderList array.
        +
        force - If a furniture object already exists there, passing this as true will overwrite it. If this is false, will just skip.
        +
        +
      • +
      + + + +
        +
      • +

        del

        +
        public void del(int index)
        +
        Deletes (nulls) a furniture object in orderList where the given index is. Then shifts everything in the array into order again.
        +
        +
        Parameters:
        +
        index - Index of item in the list that gets deleted.
        +
        +
      • +
      + + + +
        +
      • +

        deleteAll

        +
        public void deleteAll()
        +
        Deletes (nulls) everything in the list.
        +
      • +
      + + + +
        +
      • +

        getMaxSize

        +
        public int getMaxSize()
        +
        +
        Returns:
        +
        Max array size.
        +
        +
      • +
      + + + +
        +
      • +

        getCurrentSize

        +
        public int getCurrentSize()
        +
        Current array size. (Will always be arraySize).
        +
        +
        Returns:
        +
        Int of the size of the array.
        +
        +
      • +
      + + + +
        +
      • +

        getFreeSpace

        +
        public int getFreeSpace()
        +
        Gets the number of free spaces within the orderList.
        +
        +
        Returns:
        +
        Int of the number of spaces in the array available.
        +
        +
      • +
      + + + +
        +
      • +

        getPrice

        +
        public double getPrice()
        +
        Gets the price of all the items within orderList.
        +
        +
        Returns:
        +
        A double of the price of all the items.
        +
        +
      • +
      + + + +
        +
      • +

        isValidIndex

        +
        public boolean isValidIndex(int i)
        +
        Checks if the given number is a valid index (0 to arraySize).
        +
        +
        Parameters:
        +
        i - Index to check if it's valid.
        +
        Returns:
        +
        True/False based on if it's valid or not.
        +
        +
      • +
      + + + +
        +
      • +

        normalise

        +
        public void normalise()
        +
        Shifts all objects within orderList so that there are no gaps in between items in the array.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/ItemTable.html b/dist/javadoc/rofaapp/ItemTable.html new file mode 100644 index 0000000..3d15743 --- /dev/null +++ b/dist/javadoc/rofaapp/ItemTable.html @@ -0,0 +1,368 @@ + + + + + + +ItemTable + + + + + + + + + + + + +
+
rofaapp
+

Class ItemTable

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        diameter

        +
        private int diameter
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ItemTable

        +
        public ItemTable()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getDiameter

        +
        public int getDiameter()
        +
      • +
      + + + +
        +
      • +

        setDiameter

        +
        public boolean setDiameter(int d)
        +
        +
        Parameters:
        +
        d - Diameter of the table.
        +
        Returns:
        +
        Returns if the value is valid (does this within the form).
        +
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/ItemTableChrome.html b/dist/javadoc/rofaapp/ItemTableChrome.html new file mode 100644 index 0000000..4f9e762 --- /dev/null +++ b/dist/javadoc/rofaapp/ItemTableChrome.html @@ -0,0 +1,359 @@ + + + + + + +ItemTableChrome + + + + + + + + + + + + +
+
rofaapp
+

Class ItemTableChrome

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class ItemTableChrome
    +extends ItemTable
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+ +
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ItemTableChrome

        +
        ItemTableChrome(int id,
        +                TypeWood tw,
        +                javax.swing.ImageIcon ii,
        +                int d)
        +
        +
        Parameters:
        +
        id - ID of the item (doesn't have to be unique)
        +
        tw - Wood type of the item.
        +
        ii - Icon of the item.
        +
        d - Diameter of the item.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getPrice

        +
        public double getPrice()
        +
        +
        Specified by:
        +
        getPrice in class Furniture
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/ItemTableWood.html b/dist/javadoc/rofaapp/ItemTableWood.html new file mode 100644 index 0000000..2df8a5d --- /dev/null +++ b/dist/javadoc/rofaapp/ItemTableWood.html @@ -0,0 +1,364 @@ + + + + + + +ItemTableWood + + + + + + + + + + + + +
+
rofaapp
+

Class ItemTableWood

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class ItemTableWood
    +extends ItemTable
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+ +
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ItemTableWood

        +
        ItemTableWood(int id,
        +              TypeWood tw,
        +              javax.swing.ImageIcon ii,
        +              int d)
        +
        Constructor for the Wood Table.
        +
        +
        Parameters:
        +
        id - Given ID (doesn't have to be unique).
        +
        tw - Type of wood the item is.
        +
        ii - Icon of the item.
        +
        d - Diameter of the item.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getPrice

        +
        public double getPrice()
        +
        +
        Specified by:
        +
        getPrice in class Furniture
        +
        Returns:
        +
        Price of the table
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/MainWindow.html b/dist/javadoc/rofaapp/MainWindow.html new file mode 100644 index 0000000..bc3e112 --- /dev/null +++ b/dist/javadoc/rofaapp/MainWindow.html @@ -0,0 +1,838 @@ + + + + + + +MainWindow + + + + + + + + + + + + +
+
rofaapp
+

Class MainWindow

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.awt.Component
    • +
    • +
        +
      • java.awt.Container
      • +
      • +
          +
        • java.awt.Window
        • +
        • +
            +
          • java.awt.Frame
          • +
          • +
              +
            • javax.swing.JFrame
            • +
            • +
                +
              • rofaapp.MainWindow
              • +
              +
            • +
            +
          • +
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants
    +
    +
    +
    +
    public class MainWindow
    +extends javax.swing.JFrame
    +implements java.awt.event.ActionListener, java.awt.event.MouseListener
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Nested Class Summary

      +
        +
      • + + +

        Nested classes/interfaces inherited from class javax.swing.JFrame

        +javax.swing.JFrame.AccessibleJFrame
      • +
      +
        +
      • + + +

        Nested classes/interfaces inherited from class java.awt.Frame

        +java.awt.Frame.AccessibleAWTFrame
      • +
      +
        +
      • + + +

        Nested classes/interfaces inherited from class java.awt.Window

        +java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type
      • +
      +
        +
      • + + +

        Nested classes/interfaces inherited from class java.awt.Container

        +java.awt.Container.AccessibleAWTContainer
      • +
      +
        +
      • + + +

        Nested classes/interfaces inherited from class java.awt.Component

        +java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
      • +
      +
    • +
    + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      private ItemOrdercurrentOrder 
      private intcurrentSelected 
      private javax.swing.JPanelgridPanel 
      (package private) javax.swing.JLabelgridTotalPriceLabel 
      private javax.swing.JPanel[][]imagepanels 
      private javax.swing.JPanelitemSummaryPanel 
      (package private) javax.swing.JButtonmenuAddItemButton 
      (package private) javax.swing.JButtonmenuClearButton 
      (package private) javax.swing.JButtonmenuLoadButton 
      private javax.swing.JPanelmenuPanel 
      (package private) javax.swing.JButtonmenuSaveButton 
      (package private) javax.swing.JButtonmenuSummaryButton 
      private javax.swing.JPanelsummaryPanel 
      (package private) javax.swing.JLabelsummaryTitleLabel 
      +
        +
      • + + +

        Fields inherited from class javax.swing.JFrame

        +accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
      • +
      +
        +
      • + + +

        Fields inherited from class java.awt.Frame

        +CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
      • +
      +
        +
      • + + +

        Fields inherited from class java.awt.Component

        +BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
      • +
      +
        +
      • + + +

        Fields inherited from interface javax.swing.WindowConstants

        +DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
      • +
      +
        +
      • + + +

        Fields inherited from interface java.awt.image.ImageObserver

        +ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      MainWindow() +
      Constructor that initialises the window and it's properties (such as title, size, and it's layout).
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidactionPerformed(java.awt.event.ActionEvent e) 
      private voidchangeSelectedPanel(int x, + int y, + int index) +
      Changes the current selected, and highlighed, imagepanels.
      +
      private voidinitPanels() +
      Initialises all four panels used in the main window (creates instances of them, their sizes and adds them to the master panel).
      +
      voidmouseClicked(java.awt.event.MouseEvent e) 
      voidmouseEntered(java.awt.event.MouseEvent e) 
      voidmouseExited(java.awt.event.MouseEvent e) 
      voidmousePressed(java.awt.event.MouseEvent e) 
      voidmouseReleased(java.awt.event.MouseEvent e) 
      private voidsetItemPanel(javax.swing.JPanel j, + Furniture f) +
      Sets the given panel to the given furniture object, meaning the panel contains the icon of the given furniture.
      +
      private voidupdateItemOrder() +
      Iterates through each of the panels within the gridPanel and calls setItemPanel(JPanel, Furniture) to update each panel with the correct image and data.
      +
      private voidupdateItemSummaryPanel(int index) +
      Changes the elements within the itemSummaryPanel depending on what the user has clicked.
      +
      private voidupdateSummaryPanel() +
      Updates and redraws the total price label at the bottom of the window.
      +
      +
        +
      • + + +

        Methods inherited from class javax.swing.JFrame

        +addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
      • +
      +
        +
      • + + +

        Methods inherited from class java.awt.Frame

        +addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated
      • +
      +
        +
      • + + +

        Methods inherited from class java.awt.Window

        +addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, setVisible, show, toBack, toFront
      • +
      +
        +
      • + + +

        Methods inherited from class java.awt.Container

        +add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree
      • +
      +
        +
      • + + +

        Methods inherited from class java.awt.Component

        +action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
        +
      • + + +

        Methods inherited from interface java.awt.MenuContainer

        +getFont, postEvent
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        currentOrder

        +
        private ItemOrder currentOrder
        +
      • +
      + + + +
        +
      • +

        currentSelected

        +
        private int currentSelected
        +
      • +
      + + + +
        +
      • +

        menuPanel

        +
        private javax.swing.JPanel menuPanel
        +
      • +
      + + + +
        +
      • +

        gridPanel

        +
        private javax.swing.JPanel gridPanel
        +
      • +
      + + + +
        +
      • +

        summaryPanel

        +
        private javax.swing.JPanel summaryPanel
        +
      • +
      + + + +
        +
      • +

        itemSummaryPanel

        +
        private javax.swing.JPanel itemSummaryPanel
        +
      • +
      + + + +
        +
      • +

        imagepanels

        +
        private javax.swing.JPanel[][] imagepanels
        +
      • +
      + + + +
        +
      • +

        gridTotalPriceLabel

        +
        javax.swing.JLabel gridTotalPriceLabel
        +
      • +
      + + + +
        +
      • +

        summaryTitleLabel

        +
        javax.swing.JLabel summaryTitleLabel
        +
      • +
      + + + +
        +
      • +

        menuAddItemButton

        +
        javax.swing.JButton menuAddItemButton
        +
      • +
      + + + +
        +
      • +

        menuSaveButton

        +
        javax.swing.JButton menuSaveButton
        +
      • +
      + + + +
        +
      • +

        menuLoadButton

        +
        javax.swing.JButton menuLoadButton
        +
      • +
      + + + +
        +
      • +

        menuClearButton

        +
        javax.swing.JButton menuClearButton
        +
      • +
      + + + +
        +
      • +

        menuSummaryButton

        +
        javax.swing.JButton menuSummaryButton
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        MainWindow

        +
        MainWindow()
        +
        Constructor that initialises the window and it's properties (such as title, size, and it's layout). Calls initPanels() to initialise the panels shown in the grid. Also creates a new instance of the itemorder.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        initPanels

        +
        private void initPanels()
        +
        Initialises all four panels used in the main window (creates instances of them, their sizes and adds them to the master panel).
        +
      • +
      + + + + + + + +
        +
      • +

        setItemPanel

        +
        private void setItemPanel(javax.swing.JPanel j,
        +                          Furniture f)
        +
        Sets the given panel to the given furniture object, meaning the panel contains the icon of the given furniture.
        +
        +
        Parameters:
        +
        j - JPanel to set.
        +
        f - Furniture to set.
        +
        +
      • +
      + + + +
        +
      • +

        changeSelectedPanel

        +
        private void changeSelectedPanel(int x,
        +                                 int y,
        +                                 int index)
        +
        Changes the current selected, and highlighed, imagepanels.
        +
        +
        Parameters:
        +
        x - X coordinate of the imagepanels.
        +
        y - Y coordinate of the imagepanels.
        +
        index - The index of the item in the currentOrder.
        +
        +
      • +
      + + + +
        +
      • +

        updateSummaryPanel

        +
        private void updateSummaryPanel()
        +
        Updates and redraws the total price label at the bottom of the window.
        +
      • +
      + + + +
        +
      • +

        updateItemSummaryPanel

        +
        private void updateItemSummaryPanel(int index)
        +
        Changes the elements within the itemSummaryPanel depending on what the user has clicked.
        +
        +
        Parameters:
        +
        index - The index of the panel/item within the order.
        +
        +
      • +
      + + + +
        +
      • +

        actionPerformed

        +
        public void actionPerformed(java.awt.event.ActionEvent e)
        +
        +
        Specified by:
        +
        actionPerformed in interface java.awt.event.ActionListener
        +
        +
      • +
      + + + +
        +
      • +

        mouseClicked

        +
        public void mouseClicked(java.awt.event.MouseEvent e)
        +
        +
        Specified by:
        +
        mouseClicked in interface java.awt.event.MouseListener
        +
        +
      • +
      + + + +
        +
      • +

        mousePressed

        +
        public void mousePressed(java.awt.event.MouseEvent e)
        +
        +
        Specified by:
        +
        mousePressed in interface java.awt.event.MouseListener
        +
        +
      • +
      + + + +
        +
      • +

        mouseReleased

        +
        public void mouseReleased(java.awt.event.MouseEvent e)
        +
        +
        Specified by:
        +
        mouseReleased in interface java.awt.event.MouseListener
        +
        +
      • +
      + + + +
        +
      • +

        mouseEntered

        +
        public void mouseEntered(java.awt.event.MouseEvent e)
        +
        +
        Specified by:
        +
        mouseEntered in interface java.awt.event.MouseListener
        +
        +
      • +
      + + + +
        +
      • +

        mouseExited

        +
        public void mouseExited(java.awt.event.MouseEvent e)
        +
        +
        Specified by:
        +
        mouseExited in interface java.awt.event.MouseListener
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/ROFCMain.html b/dist/javadoc/rofaapp/ROFCMain.html new file mode 100644 index 0000000..d985aad --- /dev/null +++ b/dist/javadoc/rofaapp/ROFCMain.html @@ -0,0 +1,270 @@ + + + + + + +ROFCMain + + + + + + + + + + + + +
+
rofaapp
+

Class ROFCMain

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • rofaapp.ROFCMain
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ROFCMain
    +extends java.lang.Object
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      ROFCMain() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static voidmain(java.lang.String[] args) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ROFCMain

        +
        public ROFCMain()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        main

        +
        public static void main(java.lang.String[] args)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/TypeWood.html b/dist/javadoc/rofaapp/TypeWood.html new file mode 100644 index 0000000..2f42fbe --- /dev/null +++ b/dist/javadoc/rofaapp/TypeWood.html @@ -0,0 +1,391 @@ + + + + + + +TypeWood + + + + + + + + + + + + +
+
rofaapp
+

Class TypeWood

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • rofaapp.TypeWood
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class TypeWood
    +extends java.lang.Object
    +implements java.io.Serializable
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      TypeWood(java.lang.String n, + double p) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.lang.StringgetName() 
      doublegetPrice() 
      java.lang.StringtoString() +
      Gets the name of the wood type.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        name

        +
        private java.lang.String name
        +
      • +
      + + + +
        +
      • +

        price

        +
        private double price
        +
      • +
      + + + +
        +
      • +

        WOOD_OAK

        +
        public static final TypeWood WOOD_OAK
        +
      • +
      + + + +
        +
      • +

        WOOD_WALNUT

        +
        public static final TypeWood WOOD_WALNUT
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TypeWood

        +
        TypeWood(java.lang.String n,
        +         double p)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
      • +
      + + + +
        +
      • +

        getPrice

        +
        public double getPrice()
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Gets the name of the wood type.
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        +
        name
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/dist/javadoc/rofaapp/class-use/AddItemWindow.html b/dist/javadoc/rofaapp/class-use/AddItemWindow.html new file mode 100644 index 0000000..97716b0 --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/AddItemWindow.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class rofaapp.AddItemWindow + + + + + + + + + + + +
+

Uses of Class
rofaapp.AddItemWindow

+
+
No usage of rofaapp.AddItemWindow
+ + + + + + diff --git a/dist/javadoc/rofaapp/class-use/Furniture.html b/dist/javadoc/rofaapp/class-use/Furniture.html new file mode 100644 index 0000000..949235a --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/Furniture.html @@ -0,0 +1,249 @@ + + + + + + +Uses of Class rofaapp.Furniture + + + + + + + + + + + +
+

Uses of Class
rofaapp.Furniture

+
+
+ +
+ + + + + + diff --git a/dist/javadoc/rofaapp/class-use/ItemArmChair.html b/dist/javadoc/rofaapp/class-use/ItemArmChair.html new file mode 100644 index 0000000..2dcb68a --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/ItemArmChair.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class rofaapp.ItemArmChair + + + + + + + + + + + +
+

Uses of Class
rofaapp.ItemArmChair

+
+
No usage of rofaapp.ItemArmChair
+ + + + + + diff --git a/dist/javadoc/rofaapp/class-use/ItemChair.html b/dist/javadoc/rofaapp/class-use/ItemChair.html new file mode 100644 index 0000000..81b9a45 --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/ItemChair.html @@ -0,0 +1,148 @@ + + + + + + +Uses of Class rofaapp.ItemChair + + + + + + + + + + + +
+

Uses of Class
rofaapp.ItemChair

+
+
+ +
+ + + + + + diff --git a/dist/javadoc/rofaapp/class-use/ItemDesk.html b/dist/javadoc/rofaapp/class-use/ItemDesk.html new file mode 100644 index 0000000..66dda2e --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/ItemDesk.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class rofaapp.ItemDesk + + + + + + + + + + + +
+

Uses of Class
rofaapp.ItemDesk

+
+
No usage of rofaapp.ItemDesk
+ + + + + + diff --git a/dist/javadoc/rofaapp/class-use/ItemIcon.html b/dist/javadoc/rofaapp/class-use/ItemIcon.html new file mode 100644 index 0000000..28dd33a --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/ItemIcon.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class rofaapp.ItemIcon + + + + + + + + + + + +
+

Uses of Class
rofaapp.ItemIcon

+
+
No usage of rofaapp.ItemIcon
+ + + + + + diff --git a/dist/javadoc/rofaapp/class-use/ItemOrder.html b/dist/javadoc/rofaapp/class-use/ItemOrder.html new file mode 100644 index 0000000..1a59065 --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/ItemOrder.html @@ -0,0 +1,189 @@ + + + + + + +Uses of Class rofaapp.ItemOrder + + + + + + + + + + + +
+

Uses of Class
rofaapp.ItemOrder

+
+
+ +
+ + + + + + diff --git a/dist/javadoc/rofaapp/class-use/ItemTable.html b/dist/javadoc/rofaapp/class-use/ItemTable.html new file mode 100644 index 0000000..749e6bd --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/ItemTable.html @@ -0,0 +1,152 @@ + + + + + + +Uses of Class rofaapp.ItemTable + + + + + + + + + + + +
+

Uses of Class
rofaapp.ItemTable

+
+
+ +
+ + + + + + diff --git a/dist/javadoc/rofaapp/class-use/ItemTableChrome.html b/dist/javadoc/rofaapp/class-use/ItemTableChrome.html new file mode 100644 index 0000000..1bbb682 --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/ItemTableChrome.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class rofaapp.ItemTableChrome + + + + + + + + + + + +
+

Uses of Class
rofaapp.ItemTableChrome

+
+
No usage of rofaapp.ItemTableChrome
+ + + + + + diff --git a/dist/javadoc/rofaapp/class-use/ItemTableWood.html b/dist/javadoc/rofaapp/class-use/ItemTableWood.html new file mode 100644 index 0000000..60168a8 --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/ItemTableWood.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class rofaapp.ItemTableWood + + + + + + + + + + + +
+

Uses of Class
rofaapp.ItemTableWood

+
+
No usage of rofaapp.ItemTableWood
+ + + + + + diff --git a/dist/javadoc/rofaapp/class-use/MainWindow.html b/dist/javadoc/rofaapp/class-use/MainWindow.html new file mode 100644 index 0000000..39e5809 --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/MainWindow.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class rofaapp.MainWindow + + + + + + + + + + + +
+

Uses of Class
rofaapp.MainWindow

+
+
No usage of rofaapp.MainWindow
+ + + + + + diff --git a/dist/javadoc/rofaapp/class-use/ROFCMain.html b/dist/javadoc/rofaapp/class-use/ROFCMain.html new file mode 100644 index 0000000..0215ef3 --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/ROFCMain.html @@ -0,0 +1,123 @@ + + + + + + +Uses of Class rofaapp.ROFCMain + + + + + + + + + + + +
+

Uses of Class
rofaapp.ROFCMain

+
+
No usage of rofaapp.ROFCMain
+ + + + + + diff --git a/dist/javadoc/rofaapp/class-use/TypeWood.html b/dist/javadoc/rofaapp/class-use/TypeWood.html new file mode 100644 index 0000000..0efdebb --- /dev/null +++ b/dist/javadoc/rofaapp/class-use/TypeWood.html @@ -0,0 +1,244 @@ + + + + + + +Uses of Class rofaapp.TypeWood + + + + + + + + + + + +
+

Uses of Class
rofaapp.TypeWood

+
+
+ +
+ + + + + + diff --git a/dist/javadoc/rofaapp/package-frame.html b/dist/javadoc/rofaapp/package-frame.html new file mode 100644 index 0000000..d84c417 --- /dev/null +++ b/dist/javadoc/rofaapp/package-frame.html @@ -0,0 +1,33 @@ + + + + + + +rofaapp + + + + + +

rofaapp

+ + + diff --git a/dist/javadoc/rofaapp/package-summary.html b/dist/javadoc/rofaapp/package-summary.html new file mode 100644 index 0000000..770a5db --- /dev/null +++ b/dist/javadoc/rofaapp/package-summary.html @@ -0,0 +1,189 @@ + + + + + + +rofaapp + + + + + + + + + + + +
+

Package rofaapp

+
+
+ +
+ + + + + + diff --git a/dist/javadoc/rofaapp/package-tree.html b/dist/javadoc/rofaapp/package-tree.html new file mode 100644 index 0000000..ae28093 --- /dev/null +++ b/dist/javadoc/rofaapp/package-tree.html @@ -0,0 +1,181 @@ + + + + + + +rofaapp Class Hierarchy + + + + + + + + + + + +
+

Hierarchy For Package rofaapp

+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable) +
        +
      • java.awt.Container +
          +
        • java.awt.Window (implements javax.accessibility.Accessible) +
            +
          • java.awt.Dialog +
              +
            • javax.swing.JDialog (implements javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants) +
                +
              • rofaapp.AddItemWindow (implements java.awt.event.ActionListener)
              • +
              +
            • +
            +
          • +
          • java.awt.Frame (implements java.awt.MenuContainer) +
              +
            • javax.swing.JFrame (implements javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants) +
                +
              • rofaapp.MainWindow (implements java.awt.event.ActionListener, java.awt.event.MouseListener)
              • +
              +
            • +
            +
          • +
          +
        • +
        +
      • +
      +
    • +
    • rofaapp.Furniture (implements java.io.Serializable) + +
    • +
    • rofaapp.ItemIcon
    • +
    • rofaapp.ItemOrder (implements java.io.Serializable)
    • +
    • rofaapp.ROFCMain
    • +
    • rofaapp.TypeWood (implements java.io.Serializable)
    • +
    +
  • +
+
+ + + + + + diff --git a/dist/javadoc/rofaapp/package-use.html b/dist/javadoc/rofaapp/package-use.html new file mode 100644 index 0000000..d33048c --- /dev/null +++ b/dist/javadoc/rofaapp/package-use.html @@ -0,0 +1,153 @@ + + + + + + +Uses of Package rofaapp + + + + + + + + + + + +
+

Uses of Package
rofaapp

+
+
+ +
+ + + + + + diff --git a/dist/javadoc/script.js b/dist/javadoc/script.js new file mode 100644 index 0000000..b346356 --- /dev/null +++ b/dist/javadoc/script.js @@ -0,0 +1,30 @@ +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/dist/javadoc/serialized-form.html b/dist/javadoc/serialized-form.html new file mode 100644 index 0000000..5dac6e0 --- /dev/null +++ b/dist/javadoc/serialized-form.html @@ -0,0 +1,495 @@ + + + + + + +Serialized Form + + + + + + + + + + + +
+

Serialized Form

+
+
+
    +
  • +

    Package rofaapp

    +
      +
    • + + +

      Class rofaapp.AddItemWindow extends javax.swing.JDialog implements Serializable

      +
        +
      • +

        Serialized Fields

        +
          +
        • +

          order

          +
          ItemOrder order
          +
        • +
        • +

          woodTypes

          +
          TypeWood[] woodTypes
          +
        • +
        • +

          isEdit

          +
          boolean isEdit
          +
        • +
        • +

          editIndex

          +
          int editIndex
          +
        • +
        • +

          chairPanel

          +
          javax.swing.JPanel chairPanel
          +
        • +
        • +

          tablePanel

          +
          javax.swing.JPanel tablePanel
          +
        • +
        • +

          deskPanel

          +
          javax.swing.JPanel deskPanel
          +
        • +
        • +

          yesnoPanel

          +
          javax.swing.JPanel yesnoPanel
          +
        • +
        • +

          buttonSwitchChair

          +
          javax.swing.JButton buttonSwitchChair
          +
        • +
        • +

          buttonSwitchTable

          +
          javax.swing.JButton buttonSwitchTable
          +
        • +
        • +

          buttonSwitchDesk

          +
          javax.swing.JButton buttonSwitchDesk
          +
        • +
        • +

          yesButton

          +
          javax.swing.JButton yesButton
          +
        • +
        • +

          cancelButton

          +
          javax.swing.JButton cancelButton
          +
        • +
        • +

          idSpinnerChair

          +
          javax.swing.JSpinner idSpinnerChair
          +
        • +
        • +

          quantitySpinnerChair

          +
          javax.swing.JSpinner quantitySpinnerChair
          +
        • +
        • +

          idSpinnerDesk

          +
          javax.swing.JSpinner idSpinnerDesk
          +
        • +
        • +

          drawsSpinnerDesk

          +
          javax.swing.JSpinner drawsSpinnerDesk
          +
        • +
        • +

          widthSpinnerDesk

          +
          javax.swing.JSpinner widthSpinnerDesk
          +
        • +
        • +

          depthSpinnerDesk

          +
          javax.swing.JSpinner depthSpinnerDesk
          +
        • +
        • +

          idSpinnerTable

          +
          javax.swing.JSpinner idSpinnerTable
          +
        • +
        • +

          quantitySpinnerTable

          +
          javax.swing.JSpinner quantitySpinnerTable
          +
        • +
        • +

          diameterSpinnerTable

          +
          javax.swing.JSpinner diameterSpinnerTable
          +
        • +
        • +

          woodComboBoxChair

          +
          javax.swing.JComboBox<E> woodComboBoxChair
          +
        • +
        • +

          woodComboBoxDesk

          +
          javax.swing.JComboBox<E> woodComboBoxDesk
          +
        • +
        • +

          woodComboBoxTable

          +
          javax.swing.JComboBox<E> woodComboBoxTable
          +
        • +
        • +

          armrestsCheckBoxChair

          +
          javax.swing.JCheckBox armrestsCheckBoxChair
          +
        • +
        • +

          chromeCheckBoxTable

          +
          javax.swing.JCheckBox chromeCheckBoxTable
          +
        • +
        +
      • +
      +
    • +
    • + + +

      Class rofaapp.Furniture extends java.lang.Object implements Serializable

      +
        +
      • +

        Serialized Fields

        +
          +
        • +

          id

          +
          int id
          +
        • +
        • +

          wood

          +
          TypeWood wood
          +
        • +
        • +

          icon

          +
          javax.swing.ImageIcon icon
          +
        • +
        • +

          name

          +
          java.lang.String name
          +
        • +
        +
      • +
      +
    • +
    • + + +

      Class rofaapp.ItemArmChair extends ItemChair implements Serializable

      +
        +
      • +

        Serialized Fields

        +
          +
        • +

          units

          +
          int units
          +
        • +
        +
      • +
      +
    • +
    • + + +

      Class rofaapp.ItemChair extends Furniture implements Serializable

      +
        +
      • +

        Serialized Fields

        +
          +
        • +

          units

          +
          int units
          +
        • +
        +
      • +
      +
    • +
    • + + +

      Class rofaapp.ItemDesk extends Furniture implements Serializable

      +
        +
      • +

        Serialized Fields

        +
          +
        • +

          height

          +
          int height
          +
        • +
        • +

          depth

          +
          int depth
          +
        • +
        • +

          width

          +
          int width
          +
        • +
        • +

          draws

          +
          int draws
          +
        • +
        +
      • +
      +
    • +
    • + + +

      Class rofaapp.ItemOrder extends java.lang.Object implements Serializable

      +
        +
      • +

        Serialized Fields

        +
          +
        • +

          currentSize

          +
          int currentSize
          +
        • +
        • +

          orderList

          +
          Furniture[] orderList
          +
        • +
        +
      • +
      +
    • +
    • + + +

      Class rofaapp.ItemTable extends Furniture implements Serializable

      +
        +
      • +

        Serialized Fields

        +
          +
        • +

          diameter

          +
          int diameter
          +
        • +
        +
      • +
      +
    • +
    • + + +

      Class rofaapp.ItemTableChrome extends ItemTable implements Serializable

      +
        +
      • +

        Serialized Fields

        +
          +
        • +

          basePrice

          +
          double basePrice
          +
        • +
        +
      • +
      +
    • +
    • + + +

      Class rofaapp.ItemTableWood extends ItemTable implements Serializable

      +
        +
      • +

        Serialized Fields

        +
          +
        • +

          basePrice

          +
          double basePrice
          +
        • +
        +
      • +
      +
    • +
    • + + +

      Class rofaapp.MainWindow extends javax.swing.JFrame implements Serializable

      +
        +
      • +

        Serialized Fields

        +
          +
        • +

          currentOrder

          +
          ItemOrder currentOrder
          +
        • +
        • +

          currentSelected

          +
          int currentSelected
          +
        • +
        • +

          menuPanel

          +
          javax.swing.JPanel menuPanel
          +
        • +
        • +

          gridPanel

          +
          javax.swing.JPanel gridPanel
          +
        • +
        • +

          summaryPanel

          +
          javax.swing.JPanel summaryPanel
          +
        • +
        • +

          itemSummaryPanel

          +
          javax.swing.JPanel itemSummaryPanel
          +
        • +
        • +

          imagepanels

          +
          javax.swing.JPanel[][] imagepanels
          +
        • +
        • +

          gridTotalPriceLabel

          +
          javax.swing.JLabel gridTotalPriceLabel
          +
        • +
        • +

          summaryTitleLabel

          +
          javax.swing.JLabel summaryTitleLabel
          +
        • +
        • +

          menuAddItemButton

          +
          javax.swing.JButton menuAddItemButton
          +
        • +
        • +

          menuSaveButton

          +
          javax.swing.JButton menuSaveButton
          +
        • +
        • +

          menuLoadButton

          +
          javax.swing.JButton menuLoadButton
          +
        • +
        • +

          menuClearButton

          +
          javax.swing.JButton menuClearButton
          +
        • +
        • +

          menuSummaryButton

          +
          javax.swing.JButton menuSummaryButton
          +
        • +
        +
      • +
      +
    • +
    • + + +

      Class rofaapp.TypeWood extends java.lang.Object implements Serializable

      +
        +
      • +

        Serialized Fields

        +
          +
        • +

          name

          +
          java.lang.String name
          +
        • +
        • +

          price

          +
          double price
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+ + + + + + diff --git a/dist/javadoc/stylesheet.css b/dist/javadoc/stylesheet.css new file mode 100644 index 0000000..98055b2 --- /dev/null +++ b/dist/javadoc/stylesheet.css @@ -0,0 +1,574 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.useSummary td.colFirst, .useSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} diff --git a/manifest.mf b/manifest.mf new file mode 100644 index 0000000..328e8e5 --- /dev/null +++ b/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/src/rofaapp/AddItemWindow.java b/src/rofaapp/AddItemWindow.java new file mode 100644 index 0000000..76977ed --- /dev/null +++ b/src/rofaapp/AddItemWindow.java @@ -0,0 +1,568 @@ +package rofaapp; + +import javafx.scene.control.Spinner; +import sun.applet.Main; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class AddItemWindow extends JDialog implements ActionListener +{ + private ItemOrder order; + + private TypeWood woodTypes[]; + + private boolean isEdit = false; + private int editIndex = -1; + + + //Main Panels + JPanel chairPanel; + JPanel tablePanel; + JPanel deskPanel; + JPanel yesnoPanel; + + //Swicher Buttons + JButton buttonSwitchChair; + JButton buttonSwitchTable; + JButton buttonSwitchDesk; + + //YesNo Buttons + JButton yesButton; + JButton cancelButton; + + //Spinners + JSpinner idSpinnerChair; + JSpinner quantitySpinnerChair; + JSpinner idSpinnerDesk; + JSpinner drawsSpinnerDesk; + JSpinner widthSpinnerDesk; + JSpinner depthSpinnerDesk; + JSpinner idSpinnerTable; + JSpinner quantitySpinnerTable; + JSpinner diameterSpinnerTable; + + //Combo Boxes + JComboBox woodComboBoxChair; + JComboBox woodComboBoxDesk; + JComboBox woodComboBoxTable; + + //Check Boxes + JCheckBox armrestsCheckBoxChair; + JCheckBox chromeCheckBoxTable; + + + /** + * Constructor used when adding a new item. + *
+ * Calls all initialisation functions for the window: {@link #initWindowSettings()}, {@link #initSelectButtons()}, {@link #initSelectedPanels()}, {@link #initYesNoButtons()}. + * @param defaultPanel Selects the panel that will be shown when the window is first shown (the default panel). Calls/is used in the function {@link #changeSelectedPanel(int)}. + * @param o The current item order that will be edited. + * @param tw An array if all of the wood types. + */ + public AddItemWindow(int defaultPanel, ItemOrder o, TypeWood[] tw) + { + order = o; + woodTypes = tw; + + //This constructor is called when adding a new item. + //Init functions. + initWindowSettings(); + initSelectButtons(); + initSelectedPanels(); + initYesNoButtons(); + //Change panel to set default. + changeSelectedPanel(defaultPanel); + //Set the window location relative to null (center screen). + setLocationRelativeTo(null); + //Set the window to visible after all init has been done. + setVisible(true); + } + + /** + * Constructor used when editing an existing item. + * Calls all initialisation functions for the window: {@link #initWindowSettings()}, {@link #initSelectButtons()}, {@link #initSelectedPanels()}, {@link #initYesNoButtons()}. + *
+ * For the edit constructor, calls {@link #loadEditSettings(Furniture)} which shows the current item's attributes in the window. + * @param defaultPanel Selects the panel that will be shown when the window is first shown (the default panel). Calls/is used in the function {@link #changeSelectedPanel(int)}. + * @param o The current item order that will be edited. + * @param tw An array if all of the wood types. + * @param index The index of the currently edited item within the ItemOrder (0-8, if not, will throw an exception). + * @param f The furniture object of the item that is being edited. + */ + public AddItemWindow(int defaultPanel, ItemOrder o, TypeWood[] tw, int index, Furniture f) + { + order = o; + woodTypes = tw; + editIndex = index; + + //This constructor is called when editing an item. + initWindowSettings(); + initSelectButtons(); + initSelectedPanels(); + initYesNoButtons(); + loadEditSettings(f); + changeSelectedPanel(defaultPanel); + setLocationRelativeTo(null); + setVisible(true); + } + + /** + * Initialises basic elements of the window (such as layout, the default close operation and the modality type). + */ + private void initWindowSettings() + { + //Needed to make the main thread wait until this dialog is disposed + setModalityType(ModalityType.APPLICATION_MODAL); + setResizable(false); + setLayout(new FlowLayout()); + setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + setTitle("Add Item"); + } + + /** + * Initialises the three buttons displayed at the top of the frame (instantiates them, adds their text, creates the actionlistener and adds them to the panel). + */ + private void initSelectButtons() + { + JPanel buttonSwitcher = new JPanel(); + buttonSwitcher.setPreferredSize(new Dimension(500, 50)); + buttonSwitcher.setVisible(true); + this.add(buttonSwitcher); + + buttonSwitchChair = new JButton("Chair"); + buttonSwitchTable = new JButton("Table"); + buttonSwitchDesk = new JButton("Desk"); + + buttonSwitchChair.addActionListener(this); + buttonSwitchDesk.addActionListener(this); + buttonSwitchTable.addActionListener(this); + + buttonSwitchChair.setPreferredSize(new Dimension(150, 30)); + buttonSwitchTable.setPreferredSize(new Dimension(150, 30)); + buttonSwitchDesk.setPreferredSize(new Dimension(150, 30)); + + buttonSwitcher.add(buttonSwitchChair); + buttonSwitcher.add(buttonSwitchTable); + buttonSwitcher.add(buttonSwitchDesk); + } + + /** + * Initialises the 'Yes-No' buttons shown at the bottom of the form (creates them and adds them to the panel). + */ + private void initYesNoButtons() + { + yesButton = new JButton("Confirm"); + cancelButton = new JButton("Cancel"); + yesnoPanel = new JPanel(); + yesButton.addActionListener(this); + cancelButton.addActionListener(this); + yesnoPanel.add(yesButton); + yesnoPanel.add(cancelButton); + } + + + /** + * Creates all of the panels and buttons and elements needed for each of the panels for each of the furniture items. Creates all elements, adds the action listeners for them and adds them to the window. (WARNING: Very long function of repetitiveness). + */ + private void initSelectedPanels() + { + //Main Panels + chairPanel = new JPanel(); + tablePanel = new JPanel(); + deskPanel = new JPanel(); + + //Sub Panels + //Chair + JPanel idPanelC = new JPanel(); + JPanel quantityPanelC = new JPanel(); + JPanel woodPanelC = new JPanel(); + JPanel armPanelC = new JPanel(); + //Table + JPanel idPanelT = new JPanel(); + JPanel quantityPanelT = new JPanel(); + JPanel woodPanelT = new JPanel(); + JPanel chromePanelT = new JPanel(); + JPanel diameterPanelT = new JPanel(); + //Desk + JPanel idPanelD = new JPanel(); + JPanel quantityPanelD = new JPanel(); + JPanel woodPanelD = new JPanel(); + JPanel drawsPanelD = new JPanel(); + JPanel heightPanelD = new JPanel(); + JPanel widthPanelD = new JPanel(); + JPanel depthPanelD = new JPanel(); + + chairPanel.setPreferredSize(new Dimension(500, 140)); + tablePanel.setPreferredSize(new Dimension(500, 175)); + deskPanel.setPreferredSize(new Dimension(500, 250)); + + //Set Sizes for Sub Panels + Dimension subPanelDimension = new Dimension(500, 30); + idPanelC.setPreferredSize(subPanelDimension); + woodPanelC.setPreferredSize(subPanelDimension); + armPanelC.setPreferredSize(subPanelDimension); + quantityPanelC.setPreferredSize(subPanelDimension); + + idPanelT.setPreferredSize(subPanelDimension); + quantityPanelT.setPreferredSize(subPanelDimension); + woodPanelT.setPreferredSize(subPanelDimension); + chromePanelT.setPreferredSize(subPanelDimension); + + idPanelD.setPreferredSize(subPanelDimension); + quantityPanelD.setPreferredSize(subPanelDimension); + woodPanelD.setPreferredSize(subPanelDimension); + drawsPanelD.setPreferredSize(subPanelDimension); + heightPanelD.setPreferredSize(subPanelDimension); + widthPanelD.setPreferredSize(subPanelDimension); + depthPanelD.setPreferredSize(subPanelDimension); + + //Sub Elements + + /////////////// + //Chair Panel// + /////////////// + + //ID + JLabel idLabelChair = new JLabel(" ID:"); + idSpinnerChair = new JSpinner(new SpinnerNumberModel(order.getFirstAvailable() + 1, 1, 9999, 1)); + idSpinnerChair.setPreferredSize(new Dimension(200, 25)); + //Quantity + JLabel quantityLabelChair = new JLabel(" Quantity:"); + quantitySpinnerChair = new JSpinner(new SpinnerNumberModel(1, 1, 9999, 1)); + quantitySpinnerChair.setPreferredSize(new Dimension(200, 25)); + //Wood Type + JLabel woodLabelChair = new JLabel(" Wood Type:"); + woodComboBoxChair = new JComboBox(woodTypes);//GET WOOD TYPES + woodComboBoxChair.setPreferredSize(new Dimension(200, 25)); + //Armrests + JLabel armrestsLabelChair = new JLabel(" Armrests:"); + armrestsCheckBoxChair = new JCheckBox(); + armrestsCheckBoxChair.setPreferredSize(new Dimension(200, 25)); + + + /////////////// + //Table Panel// + /////////////// + + //ID + JLabel idLabelTable = new JLabel(" ID:"); + idSpinnerTable = new JSpinner(new SpinnerNumberModel(1, 1, 9999, 1)); + idSpinnerTable.setPreferredSize(new Dimension(200, 25)); + //Quantity + JLabel quantityLabelTable = new JLabel(" Quantity:"); + quantitySpinnerTable = new JSpinner(new SpinnerNumberModel(1, 1, 9999, 1)); + quantitySpinnerTable.setPreferredSize(new Dimension(200, 25)); + //Wood Type + JLabel woodLabelTable = new JLabel("Wood Type:"); + woodComboBoxTable = new JComboBox(woodTypes);//GET WOOD TYPES + woodComboBoxTable.setPreferredSize(new Dimension(200, 25)); + //Chrome + JLabel chromeLabelTable = new JLabel(" Chrome:"); + chromeCheckBoxTable = new JCheckBox(); + chromeCheckBoxTable.setPreferredSize(new Dimension(200, 25)); + //Diameter + JLabel diameterLabelTable = new JLabel(" Diameter:"); + diameterSpinnerTable = new JSpinner(new SpinnerNumberModel(50, 50, 9999, 1)); + diameterSpinnerTable.setPreferredSize(new Dimension(200, 25)); + + ////////////// + //Desk Panel// + ////////////// + + //ID + JLabel idLabelDesk = new JLabel(" ID:"); + idSpinnerDesk = new JSpinner(new SpinnerNumberModel(1, 1, 9999, 1));//CHANGE THIS ONE!!!!!! + idSpinnerDesk.setPreferredSize(new Dimension(200, 25)); + //Quantity + JLabel quantityLabelDesk = new JLabel(" Quantity:"); + JSpinner quantitySpinnerDesk = new JSpinner(new SpinnerNumberModel(1, 1, 9999, 1)); + quantitySpinnerDesk.setPreferredSize(new Dimension(200, 25)); + //Wood Type + JLabel woodLabelDesk = new JLabel("Wood Type:"); + woodComboBoxDesk = new JComboBox(woodTypes);//GET WOOD TYPES + woodComboBoxDesk.setPreferredSize(new Dimension(200, 25)); + //Draws + JLabel drawsLabelDesk = new JLabel(" Draws:"); + drawsSpinnerDesk = new JSpinner(new SpinnerNumberModel(1, 1, 4, 1)); + drawsSpinnerDesk.setPreferredSize(new Dimension(200, 25)); + //Height + JLabel heightLabelDesk = new JLabel(" Height:"); + JSpinner heightSpinnerDesk = new JSpinner(new SpinnerNumberModel(80, 80, 80, 1)); + heightSpinnerDesk.setPreferredSize(new Dimension(200, 25)); + heightSpinnerDesk.setEnabled(false); + //Width + JLabel widthLabelDesk = new JLabel(" Width:"); + widthSpinnerDesk = new JSpinner(new SpinnerNumberModel(1, 1, 9999, 1)); + widthSpinnerDesk.setPreferredSize(new Dimension(200, 25)); + //Depth + JLabel depthLabelDesk = new JLabel(" Depth:"); + depthSpinnerDesk = new JSpinner(new SpinnerNumberModel(1, 1, 9999, 1)); + depthSpinnerDesk.setPreferredSize(new Dimension(200, 25)); + + //Add Elements to Panels + + /////////////// + //Chair Panel// } + /////////////// + + //ID + idPanelC.add(idLabelChair); + idPanelC.add(idSpinnerChair); + //QUANTITY + quantityPanelC.add(quantityLabelChair); + quantityPanelC.add(quantitySpinnerChair); + //WOODTYPE + woodPanelC.add(woodLabelChair); + woodPanelC.add(woodComboBoxChair); + //ARMRESTS + armPanelC.add(armrestsLabelChair); + armPanelC.add(armrestsCheckBoxChair); + + /////////////// + //Table Panel// + /////////////// + + //ID + idPanelT.add(idLabelTable); + idPanelT.add(idSpinnerTable); + //QUANTITY + quantityPanelT.add(quantityLabelTable); + quantityPanelT.add(quantitySpinnerTable); + //WOOD TYPE + woodPanelT.add(woodLabelTable); + woodPanelT.add(woodComboBoxTable); + //CHROME + chromePanelT.add(chromeLabelTable); + chromePanelT.add(chromeCheckBoxTable); + //DIAMETER + diameterPanelT.add(diameterLabelTable); + diameterPanelT.add(diameterSpinnerTable); + + ////////////// + //Desk Panel// + ////////////// + + //ID + idPanelD.add(idLabelDesk); + idPanelD.add(idSpinnerDesk); + //QUANTITY + quantityPanelD.add(quantityLabelDesk); + quantityPanelD.add(quantitySpinnerDesk); + //WOOD TYPE + woodPanelD.add(woodLabelDesk); + woodPanelD.add(woodComboBoxDesk); + //DRAWS + drawsPanelD.add(drawsLabelDesk); + drawsPanelD.add(drawsSpinnerDesk); + //HEIGHT + heightPanelD.add(heightLabelDesk); + heightPanelD.add(heightSpinnerDesk); + //WIDTH + widthPanelD.add(widthLabelDesk); + widthPanelD.add(widthSpinnerDesk); + //DEPTH + depthPanelD.add(depthLabelDesk); + depthPanelD.add(depthSpinnerDesk); + + //Chair Panel + chairPanel.add(idPanelC); + chairPanel.add(quantityPanelC); + chairPanel.add(woodPanelC); + chairPanel.add(armPanelC); + //Table Panel + tablePanel.add(idPanelT); + tablePanel.add(quantityPanelT); + tablePanel.add(woodPanelT); + tablePanel.add(chromePanelT); + tablePanel.add(diameterPanelT); + //Desk Panel + deskPanel.add(idPanelD); + deskPanel.add(quantityPanelD); + deskPanel.add(woodPanelD); + deskPanel.add(drawsPanelD); + deskPanel.add(heightPanelD); + deskPanel.add(widthPanelD); + deskPanel.add(depthPanelD); + } + + /** + * Loads a given furniture item, and changes the window elements to the attributes of the given furniture item. + * @param f Given furniture item. + */ + private void loadEditSettings(Furniture f) + { + //Set flag to show this instance is an edit. + isEdit = true; + if (f instanceof ItemTable) + { + //Cast to ItemTable + ItemTable it = (ItemTable)f; + //Set values to edited object + idSpinnerTable.setValue(it.getId()); + woodComboBoxTable.setSelectedItem(it.getWood()); + chromeCheckBoxTable.setSelected(f instanceof ItemTableChrome); + diameterSpinnerTable.setValue(it.getDiameter()); + } + else if (f instanceof ItemChair) + { + //Cast to ItemChair + ItemChair ic = (ItemChair)f; + idSpinnerChair.setValue(ic.getId()); + woodComboBoxChair.setSelectedItem(ic.getWood()); + armrestsCheckBoxChair.setSelected(f instanceof ItemArmChair); + } + else if (f instanceof ItemDesk) + { + //Cast to ItemDesk + ItemDesk id = (ItemDesk)f; + idSpinnerDesk.setValue(id.getId()); + woodComboBoxDesk.setSelectedItem(id.getWood()); + drawsSpinnerDesk.setValue(id.getDraws()); + widthSpinnerDesk.setValue(id.getWidth()); + depthSpinnerDesk.setValue(id.getDepth()); + } + setTitle("Edit Item: " + f.getName()); + } + + /** + * Simple method for giving an instance of furnature and getting back the tab index of the object in the window. + * @param f The furniture item. + * @return The tab index of the given item. + */ + public static int getTabValue(Furniture f) + { + if (f instanceof ItemChair) + return 1; + else if (f instanceof ItemDesk) + return 2; + else if (f instanceof ItemTable) + return 3; + else + return -1; + } + + /** + * Changes the currently selected tab. + * @param i The tab index to switch views to. (1-3. If not a valid index, will display an empty panel.) + */ + private void changeSelectedPanel(int i) + { + remove(yesnoPanel); + if (i == 1) + { + remove(deskPanel); + remove(tablePanel); + add(chairPanel); + //Validate needed for repaint + validate(); + repaint(); + setSize(490, 290); + } + else if (i == 2) + { + remove(tablePanel); + remove(chairPanel); + add(deskPanel); + //Validate needed for repaint + validate(); + repaint(); + setSize(new Dimension(490, 410)); + } + else if (i == 3) + { + remove(chairPanel); + remove(deskPanel); + add(tablePanel); + //Validate needed for repaint + validate(); + repaint(); + setSize(new Dimension(490, 330)); + } + add(yesnoPanel); + } + + /** + * @return The current order within the window instance. + */ + public ItemOrder getUpdatedOrder() + { + return order; + } + + /** + * Action listener for the buttons shown on the window. + * @param e ActionEvent. + */ + public void actionPerformed(ActionEvent e) + { + if (e.getSource().equals(buttonSwitchChair) && chairPanel.getParent() == null) + { + changeSelectedPanel(1); + } + else if (e.getSource().equals(buttonSwitchTable) && tablePanel.getParent() == null) + { + changeSelectedPanel(3); + } + else if (e.getSource().equals(buttonSwitchDesk) && deskPanel.getParent() == null) + { + changeSelectedPanel(2); + } + else if (e.getSource().equals(cancelButton)) + { + dispose(); + } + else if (e.getSource().equals(yesButton)) + { + if (order.getFreeSpace() != 0) + { + Furniture ic = null; + if (deskPanel.getParent() != null) + { + //Desk Panel is currently selected (displayed) + ic = new ItemDesk((int)idSpinnerDesk.getValue(), (TypeWood)woodComboBoxDesk.getSelectedItem(), ItemIcon.DESK_ICON[(int)drawsSpinnerDesk.getValue()], (int)drawsSpinnerDesk.getValue(), (int)widthSpinnerDesk.getValue(), (int)depthSpinnerDesk.getValue()); + } + else if (tablePanel.getParent() != null) + { + if (chromeCheckBoxTable.isSelected()) + { + ic = new ItemTableChrome((int)idSpinnerTable.getValue(), (TypeWood)woodComboBoxTable.getSelectedItem(), ItemIcon.TABLE_ICON_1, (int)diameterSpinnerTable.getValue()); + } + else + { + ic = new ItemTableWood((int)idSpinnerTable.getValue(), (TypeWood)woodComboBoxTable.getSelectedItem(), ItemIcon.TABLE_ICON_2, (int)diameterSpinnerTable.getValue()); + } + //Table Panel is currently selected (displayed) + } + else if (chairPanel.getParent() != null) + { + //Chair Panel is currently selected (displayed) + if (armrestsCheckBoxChair.isSelected()) + { + ic = new ItemArmChair((int)idSpinnerChair.getValue(), (TypeWood)woodComboBoxChair.getSelectedItem(), ItemIcon.CHAIR_ICON_2); + } + else + { + ic = new ItemChair((int)idSpinnerChair.getValue(), (TypeWood)woodComboBoxChair.getSelectedItem(), ItemIcon.CHAIR_ICON_1); + } + } + if (isEdit) + { + order.add(ic, editIndex, true); + } + else + { + order.add(ic, order.getFirstAvailable(), true); + } + + dispose(); + } + else + { + JOptionPane.showMessageDialog(this, "There is no space left in this order for any other items.", "Order Full!", JOptionPane.INFORMATION_MESSAGE); + } + } + } +} diff --git a/src/rofaapp/Furniture.java b/src/rofaapp/Furniture.java new file mode 100644 index 0000000..f37dd9c --- /dev/null +++ b/src/rofaapp/Furniture.java @@ -0,0 +1,45 @@ +package rofaapp; + +import javax.swing.*; +import java.io.Serializable; + +public abstract class Furniture implements Serializable{ + + private int id; + private TypeWood wood; + private ImageIcon icon; + private String name; + + //Getters + public int getId() {return id;} + public TypeWood getWood() {return wood;} + public ImageIcon getIcon() {return icon;} + public String getName() {return name;} + public String toString() {return name;} + + //Setters (returns true if successful, false if not.) + public boolean setId(int i) + { + id = i; + return true; + } + public boolean setWood(TypeWood w) + { + wood = w; + return true; + } + public boolean setIcon(ImageIcon i) + { + icon = i; + return true; + } + public boolean setName(String s) + { + name = s; + return true; + } + + //Abstract Methods + public abstract int getUnits(); + public abstract double getPrice(); +} diff --git a/src/rofaapp/ItemArmChair.java b/src/rofaapp/ItemArmChair.java new file mode 100644 index 0000000..4e0321c --- /dev/null +++ b/src/rofaapp/ItemArmChair.java @@ -0,0 +1,22 @@ +package rofaapp; + +import javax.swing.ImageIcon; + +public class ItemArmChair extends ItemChair { + + //Only thing that is different is the units + private final int units = 1625 + 250; + + ItemArmChair(int i, TypeWood tw, ImageIcon im) + { + setName("Arm Chair"); + setId(i); + setWood(tw); + setIcon(im); + } + + public double getPrice() + { + return units * getWood().getPrice(); + } +} diff --git a/src/rofaapp/ItemChair.java b/src/rofaapp/ItemChair.java new file mode 100644 index 0000000..96ddb2e --- /dev/null +++ b/src/rofaapp/ItemChair.java @@ -0,0 +1,42 @@ +package rofaapp; + +import javax.swing.ImageIcon; + +public class ItemChair extends Furniture { + + private final int units = 1625; + + //Empty Constructor (Needed for ItemArmChair) + ItemChair() + { + + } + //Full contrsuctor + /** + * Full Constructor + * @param i ID of the item. + * @param tw Wood Type of the item. + * @param im Icon of the item. + */ + ItemChair(int i, TypeWood tw, ImageIcon im) + { + setName("Chair"); + setId(i); + setWood(tw); + setIcon(im); + } + + //Implement abstract methods + public int getUnits() + { + return units; + } + /** + * @return {@link #units} * woodPrice. + */ + public double getPrice() + { + return units * getWood().getPrice(); + } + +} diff --git a/src/rofaapp/ItemDesk.java b/src/rofaapp/ItemDesk.java new file mode 100644 index 0000000..65a9490 --- /dev/null +++ b/src/rofaapp/ItemDesk.java @@ -0,0 +1,72 @@ +package rofaapp; + +import javax.swing.ImageIcon; + +public class ItemDesk extends Furniture{ + + private final int height = 80; + private int depth; + private int width; + private int draws; + + /** + * @param idl ID of the item. + * @param tw Wood Type of the item. + * @param ic Icon of the item. + * @param drawcount Amount of draws + * @param widthcount Width of the desk. + * @param depthcount Depth of the desk. + */ + //Constructor + ItemDesk(int idl, TypeWood tw, ImageIcon ic, int drawcount, int widthcount, int depthcount) + { + setName("Desk"); + setId(idl); + setWood(tw); + setIcon(ic); + draws = drawcount; + width = widthcount; + depth = depthcount; + } + + //Getters + public int getHeight(){return height;} + public int getDepth(){return depth;} + public int getWidth(){return width;} + public int getDraws(){return draws;} + + //Setters + public boolean setDepth(int d) + { + depth = d; + return true; + } + public boolean setWidth(int w) + { + width = w; + return true; + } + public boolean setDraws(int d) + { + draws = d; + return true; + } + + //Implement abstract methods + /** + * Does nothing. + * @return 0 + */ + public int getUnits() + { + //This is the only item that doesn't include units, so just returns 0. + return 0; + } + /** + * @return The price of the item. + */ + public double getPrice() + { + return (((height + width + depth) * 12) + (depth * width) * getWood().getPrice()) + (draws * 8.50); + } +} diff --git a/src/rofaapp/ItemIcon.java b/src/rofaapp/ItemIcon.java new file mode 100644 index 0000000..7cea474 --- /dev/null +++ b/src/rofaapp/ItemIcon.java @@ -0,0 +1,58 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package rofaapp; + +import java.awt.Dimension; +import java.awt.Image; +import javax.swing.ImageIcon; + +/** + * + * @author t7048312 + */ +public class ItemIcon { + + //Chair Icons + public static final ImageIcon CHAIR_ICON_1 = new ImageIcon("Pictures/Chair1.png"); + public static final ImageIcon CHAIR_ICON_2 = new ImageIcon("Pictures/Chair2.png"); + + //Desk Icons + public static final ImageIcon DESK_ICON_1 = new ImageIcon("Pictures/Desk1.png"); + public static final ImageIcon DESK_ICON_2 = new ImageIcon("Pictures/Desk2.png"); + public static final ImageIcon DESK_ICON_3 = new ImageIcon("Pictures/Desk3.png"); + public static final ImageIcon DESK_ICON_4 = new ImageIcon("Pictures/Desk4.png"); + + public static final ImageIcon DESK_ICON[] = new ImageIcon[]{null, DESK_ICON_1, DESK_ICON_2, DESK_ICON_3, DESK_ICON_4}; + + //Table Icons + public static final ImageIcon TABLE_ICON_1 = new ImageIcon("Pictures/Table1.png"); + public static final ImageIcon TABLE_ICON_2 = new ImageIcon("Pictures/Table2.png"); + + //Utility Functions + /** + * Resizes an ImageIcon using the Image.SCALE_SMOOTH arg. + * @param i The ImageIcon. + * @param x The X size of the new image, + * @param y The Y size of the new image. + * @return The resized image. + */ + public static ImageIcon resize(ImageIcon i, int x, int y) + { + //Dirty code to resize image. + return new ImageIcon(i.getImage().getScaledInstance(x, y, Image.SCALE_SMOOTH)); + } + /** Resizes an ImageIcon using the Image.SCALE_SMOOTH arg. + * @param i The ImageIcon. + * @param d Dimension of the desired image. + * @return The resized image. + */ + public static ImageIcon resize(ImageIcon i, Dimension d) + { + return new ImageIcon(i.getImage().getScaledInstance(d.width, d.height, Image.SCALE_SMOOTH)); + } + + +} diff --git a/src/rofaapp/ItemOrder.java b/src/rofaapp/ItemOrder.java new file mode 100644 index 0000000..8c82363 --- /dev/null +++ b/src/rofaapp/ItemOrder.java @@ -0,0 +1,177 @@ +package rofaapp; + +import java.io.Serializable; +import java.lang.reflect.Type; + +public class ItemOrder implements Serializable{ + + private final transient int arraySize = 9; + private int currentSize; + private Furniture orderList[]; + + /** + * Creates an empty item order of {@link #arraySize} items. + */ + ItemOrder() + { + orderList = new Furniture[arraySize]; + for (int i = 0; i < arraySize; i++) + { + //NULL EVERYTHING!!!!!!!!!!!!!!!! + orderList[i] = null; + } + } + + + //Getters + /** + * Gets the index of the first available space within {@link #orderList}. (-1 if full). + * @return Integer of the first empty index. (-1 if full) + */ + public int getFirstAvailable() + { + //Gets the index of the first available (empty) space in the array (or if full, returns -1) + for (int i = 0; i < 9; i++) + { + if (orderList[i] == null) + { + return i; + } + } + return -1; + } + + /** + * Gets the furniture object of the given index in the {@link #orderList} if valid. (Else, returns null). + * @param index Index of the item within the array. + * @return Furniture item of the given index. + */ + public Furniture get(int index) + { + //Make sure the value passed is within the array indexes + if (isValidIndex(index)) + { + //Returns the value in the given index. If nothing is there, returns null. + return orderList[index]; + } + //If not a valid index, will return null + return null; + } + + /** + * Adds an item furniture to the {@link #orderList} at the given index. + * @param f Furniture object to add. + * @param index Index within the {@link #orderList} array. + * @param force If a furniture object already exists there, passing this as true will overwrite it. If this is false, will just skip. + */ + public void add(Furniture f, int index, boolean force) + { + + //If force is true, it will overwrite the entry in the array at the index provided (if valid). Else, won't. + if ((get(index) == null || force == true) && isValidIndex(index)) + { + orderList[index] = f; + } + //Don't do anything if the if statement isn't satisfied. + } + /** + * Deletes (nulls) a furniture object in {@link #orderList} where the given index is. Then shifts everything in the array into order again. + * @param index Index of item in the list that gets deleted. + */ + public void del(int index) + { + if (isValidIndex(index)) + { + orderList[index] = null; + } + normalise(); + } + /** + * Deletes (nulls) everything in the list. + */ + public void deleteAll() + { + for (int i = 0; i < 9; i++) + { + orderList[i] = null; + } + normalise(); + } + /** + * @return Max array size. + */ + public int getMaxSize() + { + return arraySize; + } + /** + * Current array size. (Will always be {@link #arraySize}). + * @return Int of the size of the array. + */ + public int getCurrentSize() + { + return orderList.length; + } + /** + * Gets the number of free spaces within the {@link #orderList}. + * @return Int of the number of spaces in the array available. + */ + public int getFreeSpace() + { + int counter = 0; + for (int i = 0; i < 9; i++) + { + if (orderList[i] == null) + { + counter++; + } + } + return counter; + } + /** + * Gets the price of all the items within {@link #orderList}. + * @return A double of the price of all the items. + */ + public double getPrice() + { + double price = 0; + for (int i = 0; i < 9; i++) + { + if (orderList[i] != null) + { + price += orderList[i].getPrice(); + } + } + return price; + } + /** + * Checks if the given number is a valid index (0 to {@link #arraySize}). + * @param i Index to check if it's valid. + * @return True/False based on if it's valid or not. + */ + public boolean isValidIndex(int i) + { + if (i < 9 && i >= 0) + { + return true; + } + return false; + } + /** + * Shifts all objects within {@link #orderList} so that there are no gaps in between items in the array. + */ + public void normalise() + { + Furniture newOrderList[] = new Furniture[9]; + int arrayCounter = 0; + for (int i = 0; i < 9; i++) + { + if (orderList[i] != null) + { + newOrderList[arrayCounter] = orderList[i]; + arrayCounter++; + } + } + orderList = newOrderList; + } +} diff --git a/src/rofaapp/ItemTable.java b/src/rofaapp/ItemTable.java new file mode 100644 index 0000000..f5d3a8d --- /dev/null +++ b/src/rofaapp/ItemTable.java @@ -0,0 +1,30 @@ +package rofaapp; + +public abstract class ItemTable extends Furniture{ + + private int diameter; + + //Getters + public int getDiameter(){return diameter;} + + /** + * @param d Diameter of the table. + * @return Returns if the value is valid (does this within the form). + */ + //Setters + public boolean setDiameter(int d) + { + diameter = d; + return true; + } + + /** + * @return {@link #diameter}^2 + */ + //Implement abstract methods + public int getUnits() + { + return diameter * diameter; + } + +} diff --git a/src/rofaapp/ItemTableChrome.java b/src/rofaapp/ItemTableChrome.java new file mode 100644 index 0000000..5e2c653 --- /dev/null +++ b/src/rofaapp/ItemTableChrome.java @@ -0,0 +1,30 @@ +package rofaapp; + +import javax.swing.ImageIcon; + +public class ItemTableChrome extends ItemTable{ + + private final double basePrice = 35.00; + + /** + * @param id ID of the item (doesn't have to be unique) + * @param tw Wood type of the item. + * @param ii Icon of the item. + * @param d Diameter of the item. + */ + //Constructer + ItemTableChrome(int id, TypeWood tw, ImageIcon ii, int d) + { + setName("Chrome Table"); + setId(id); + setWood(tw); + setIcon(ii); + setDiameter(d); + } + + //Implement abstract methods + public double getPrice() + { + return ((getDiameter() * getDiameter()) * getWood().getPrice()) + basePrice; + } +} diff --git a/src/rofaapp/ItemTableWood.java b/src/rofaapp/ItemTableWood.java new file mode 100644 index 0000000..930e848 --- /dev/null +++ b/src/rofaapp/ItemTableWood.java @@ -0,0 +1,34 @@ +package rofaapp; + +import javax.swing.ImageIcon; + +public class ItemTableWood extends ItemTable { + + private final double basePrice = 45.00; + + /** + * Constructor for the Wood Table. + * @param id Given ID (doesn't have to be unique). + * @param tw Type of wood the item is. + * @param ii Icon of the item. + * @param d Diameter of the item. + */ + //Constructer + ItemTableWood(int id, TypeWood tw, ImageIcon ii, int d) + { + setName("Wood Table"); + setId(id); + setWood(tw); + setIcon(ii); + setDiameter(d); + } + + //Implement abstract methods + /** + * @return Price of the table + */ + public double getPrice() + { + return ((getDiameter() * getDiameter()) * getWood().getPrice()) + basePrice; + } +} diff --git a/src/rofaapp/MainWindow.java b/src/rofaapp/MainWindow.java new file mode 100644 index 0000000..e86deff --- /dev/null +++ b/src/rofaapp/MainWindow.java @@ -0,0 +1,564 @@ +package rofaapp; + +import javax.swing.*; +import javax.swing.tree.DefaultMutableTreeNode; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.io.*; + +public class MainWindow extends JFrame implements ActionListener, MouseListener{ + + //Order Elements + private ItemOrder currentOrder; + private int currentSelected = -1; + + //Main Panels + private JPanel menuPanel; + private JPanel gridPanel; + private JPanel summaryPanel; + private JPanel itemSummaryPanel; + + //Image Panels + private JPanel[][] imagepanels; + + //Labels + JLabel gridTotalPriceLabel; + JLabel summaryTitleLabel; + + //Buttons + JButton menuAddItemButton; + JButton menuSaveButton; + JButton menuLoadButton; + JButton menuClearButton; + JButton menuSummaryButton; + + + /** + * Constructor that initialises the window and it's properties (such as title, size, and it's layout). Calls {@link #initPanels()} to initialise the panels shown in the grid. Also creates a new instance of the itemorder. + */ + MainWindow() + { + currentOrder = new ItemOrder(); + setTitle("ROFA Furniture"); + setResizable(false); + setSize(new Dimension(1280, 720)); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLocationRelativeTo(null); + setLayout(new BorderLayout()); + initPanels(); + setVisible(true); + } + + /** + * Initialises all four panels used in the main window (creates instances of them, their sizes and adds them to the master panel). + */ + private void initPanels() + { + ///////////////////////////// + //Menu Panel initialisation// + ///////////////////////////// + + //Panel + menuPanel = new JPanel(); + + //Labels + JLabel menuTitleLabel = new JLabel("ROFC"); + + //Buttons + menuAddItemButton = new JButton("
Add
Furniture
"); //I hate html. (html looks different on linux? how cool!) + menuClearButton = new JButton("Clear All"); + menuSaveButton = new JButton("Save"); + menuLoadButton = new JButton("Load"); + menuSummaryButton = new JButton("Summary"); + + //Apply Settings + //Panel + menuPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 2000, 40)); + menuPanel.setPreferredSize(new Dimension(250, 0)); + menuPanel.setBackground(Color.DARK_GRAY); + menuPanel.setVisible(true); + add(menuPanel, BorderLayout.LINE_START); + + //Labels + menuTitleLabel.setFont(new Font(menuTitleLabel.getFont().getName(), Font.BOLD, 72)); + menuTitleLabel.setForeground(Color.WHITE); + menuPanel.add(menuTitleLabel); + + //Buttons + Font buttonFont = new Font(menuAddItemButton.getFont().getName(), Font.BOLD, 28); + Dimension largeButtonDimension = new Dimension(165, 90); + Dimension regularButtonDimension = new Dimension(165, 50); + //Add Item + menuAddItemButton.setFont(buttonFont); + menuAddItemButton.setPreferredSize(largeButtonDimension); + menuAddItemButton.addActionListener(this); + menuPanel.add(menuAddItemButton); + //Clear + menuClearButton.setFont(buttonFont); + menuClearButton.setPreferredSize(regularButtonDimension); + menuClearButton.addActionListener(this); + menuPanel.add(menuClearButton); + //Save + menuSaveButton.setFont(buttonFont); + menuSaveButton.setPreferredSize(regularButtonDimension); + menuSaveButton.addActionListener(this); + menuPanel.add(menuSaveButton); + //Load + menuLoadButton.setFont(buttonFont); + menuLoadButton.setPreferredSize(regularButtonDimension); + menuLoadButton.addActionListener(this); + menuPanel.add(menuLoadButton); + //Summary + menuSummaryButton.setFont(buttonFont); + menuSummaryButton.setPreferredSize(regularButtonDimension); + menuSummaryButton.addActionListener(this); + menuPanel.add(menuSummaryButton); + + ///////////////////////////// + //Grid Panel initialisation// + ///////////////////////////// + + //Main Panel + gridPanel = new JPanel(); + + //Image Panels + imagepanels = new JPanel[3][3]; + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 3; j++) + { + imagepanels[i][j] = new JPanel(); + imagepanels[i][j].setPreferredSize(new Dimension(205, 205)); + imagepanels[i][j].setBackground(Color.white); + } + } + + //Label + gridTotalPriceLabel = new JLabel("Total Price: £0.00"); + + //Apply Settings + //Panel + gridPanel.setBackground(Color.black); + add(gridPanel, BorderLayout.CENTER); + + //Image Panels + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 3; j++) + { + gridPanel.add(imagepanels[i][j]); + imagepanels[i][j].addMouseListener(this); + } + } + + //Label + gridTotalPriceLabel.setFont(new Font(gridTotalPriceLabel.getFont().getName(), Font.BOLD, 30)); + gridTotalPriceLabel.setForeground(Color.white); + gridPanel.add(gridTotalPriceLabel); + + + //////////////////////////////// + //Summary Panel initialisation// + //////////////////////////////// + + //Panel + summaryPanel = new JPanel(); + + //Label + summaryTitleLabel = new JLabel("Summary"); + + //Apply Settings + //Panel + summaryPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 2000, 40)); + summaryPanel.setBackground(Color.gray); + summaryPanel.setPreferredSize(new Dimension(350, 0)); + add(summaryPanel, BorderLayout.LINE_END); + + //Label + summaryTitleLabel.setForeground(Color.WHITE); + summaryTitleLabel.setFont(new Font(summaryTitleLabel.getFont().getName(), Font.BOLD, 32)); + summaryPanel.add(summaryTitleLabel); + + + ///////////////////////////////////// + //Item Summary Panel initialisation// + ///////////////////////////////////// + + //Panel + itemSummaryPanel = new JPanel(); + + //Label + //All + /*itemSummaryItemNameLabel = new JLabel(); + itemSummaryItemImageLabel = new JLabel(); + itemSummaryItemIDLabel = new JLabel(); + itemSummaryItemWoodLabel = new JLabel(); + itemSummaryItemPriceLabel = new JLabel(); + //Chair + itemSummaryItemArmrestLabel = new JLabel(); + //Desk + itemSummaryItemDrawsLabel = new JLabel(); + itemSummaryItemHeightLabel = new JLabel(); + itemSummaryItemWidthLabel = new JLabel(); + itemSummaryItemDepthLabel = new JLabel(); + //Table + itemSummaryItemChromeLabel = new JLabel(); + itemSummartItemDiameterLabel = new JLabel();*/ + + //Apply Settings + itemSummaryPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 2000, 20)); + itemSummaryPanel.setBackground(Color.gray); + itemSummaryPanel.setPreferredSize(new Dimension(350, 0)); + } + + /** + * Iterates through each of the panels within the {@link #gridPanel} and calls {@link #setItemPanel(JPanel, Furniture)} to update each panel with the correct image and data. After the iteration, calls {@link #updateSummaryPanel()} to finalise. + */ + private void updateItemOrder() + { + int count = 0; + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 3; j++) + { + setItemPanel(imagepanels[i][j], currentOrder.get(count)); + gridTotalPriceLabel.setText("Total Price: £" + String.format("%.2f",currentOrder.getPrice())); + count++; + } + } + updateSummaryPanel(); + } + + /** + * Sets the given panel to the given furniture object, meaning the panel contains the icon of the given furniture. + * @param j JPanel to set. + * @param f Furniture to set. + */ + private void setItemPanel(JPanel j, Furniture f) + { + if (f != null) + { + j.removeAll(); + j.add(new JLabel(f.getIcon())); + j.revalidate(); + j.repaint(); + } + else + { + j.removeAll(); + j.revalidate(); + j.repaint(); + } + } + + /** + * Changes the current selected, and highlighed, {@link #imagepanels}. + * @param x X coordinate of the {@link #imagepanels}. + * @param y Y coordinate of the {@link #imagepanels}. + * @param index The index of the item in the {@link #currentOrder}. + */ + private void changeSelectedPanel(int x, int y, int index) + { + //Reset all panel colours + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 3; j++) + { + imagepanels[i][j].setBackground(Color.white); + } + } + if (index == currentSelected) + { + itemSummaryPanel.removeAll(); + remove(itemSummaryPanel); + add(summaryPanel, BorderLayout.LINE_END); + invalidate(); + validate(); + repaint(); + currentSelected = -1; + return; + } + imagepanels[x][y].setBackground(Color.GRAY); + if (currentOrder.get(index) != null) + { + itemSummaryPanel.removeAll(); + remove(summaryPanel); + updateItemSummaryPanel(index); + add(itemSummaryPanel, BorderLayout.LINE_END); + invalidate(); + validate(); + repaint(); + } + currentSelected = index; + } + /** + * Updates and redraws the total price label at the bottom of the window. + */ + private void updateSummaryPanel() + { + JLabel[] itemLabels = new JLabel[8]; + //Remove all previous labels. + summaryPanel.removeAll(); + summaryPanel.add(summaryTitleLabel); + //Add label if not null. + for (int i = 0; i < 9; i++) + { + if (currentOrder.get(i) != null) + { + JLabel jtemp = new JLabel(currentOrder.get(i).getName() + " : £" + String.format("%.2f", currentOrder.get(i).getPrice())); + jtemp.setForeground(Color.white); + summaryPanel.add(jtemp); + } + } + } + /** + * Changes the elements within the {@link #itemSummaryPanel} depending on what the user has clicked. + * @param index The index of the panel/item within the order. + */ + private void updateItemSummaryPanel(int index) + { + //Fonts + Font titleFont = new Font(new JLabel().getFont().getName(), Font.BOLD, 38); + Font secondFont = new Font(new JLabel().getFont().getName(), Font.PLAIN, 28); + //Dimensions (Image sizes) + Dimension tableSize = new Dimension(300, 239); + Dimension deskSize = new Dimension(300, 196); + Dimension chairSize = new Dimension(200, 266); + //Get the instance of the object and depending on which one, add labels and other elements to panel. + if (currentOrder.get(index) instanceof ItemTable) + { + ItemTable it = (ItemTable)currentOrder.get(index); + //Labels + JLabel nameLabel = new JLabel(it.getName()); + nameLabel.setFont(titleFont); + JLabel imageLabel = new JLabel(ItemIcon.resize(it.getIcon(), tableSize)); + JLabel chromeLabel = new JLabel("Chrome: " + ((currentOrder.get(index) instanceof ItemTableChrome) ? "True" : "False")); + chromeLabel.setFont(secondFont); + JLabel woodLabel = new JLabel("Wood: " + it.getWood().toString()); + woodLabel.setFont(secondFont); + JLabel diameterLabel = new JLabel("Diameter : " + it.getDiameter()); + diameterLabel.setFont(secondFont); + + //Add to panel + itemSummaryPanel.add(nameLabel); + itemSummaryPanel.add(imageLabel); + itemSummaryPanel.add(woodLabel); + itemSummaryPanel.add(chromeLabel); + itemSummaryPanel.add(diameterLabel); + } + else if (currentOrder.get(index) instanceof ItemDesk) + { + ItemDesk id = (ItemDesk)currentOrder.get(index); + //Labels + JLabel nameLabel = new JLabel(id.getName()); + nameLabel.setFont(titleFont); + JLabel imageLabel = new JLabel(ItemIcon.resize(id.getIcon(), deskSize)); + JLabel woodLabel = new JLabel("Wood: " + id.getWood().toString()); + woodLabel.setFont(secondFont); + JLabel drawsLabel = new JLabel("Draws: " + id.getDraws()); + drawsLabel.setFont(secondFont); + JLabel heightLabel = new JLabel("Height : " + id.getHeight()); + heightLabel.setFont(secondFont); + JLabel widthLabel = new JLabel("Width: " + id.getWidth()); + widthLabel.setFont(secondFont); + JLabel depthLabel = new JLabel("Depth: " + id.getDepth()); + depthLabel.setFont(secondFont); + + //Add to panel + itemSummaryPanel.add(nameLabel); + itemSummaryPanel.add(imageLabel); + itemSummaryPanel.add(woodLabel); + itemSummaryPanel.add(drawsLabel); + itemSummaryPanel.add(heightLabel); + itemSummaryPanel.add(widthLabel); + itemSummaryPanel.add(depthLabel); + } + else if (currentOrder.get(index) instanceof ItemChair) + { + ItemChair ic = (ItemChair)currentOrder.get(index); + //Labels + JLabel nameLabel = new JLabel(ic.getName()); + nameLabel.setFont(titleFont); + JLabel imageLabel = new JLabel(ItemIcon.resize(ic.getIcon(), chairSize)); + imageLabel.setFont(secondFont); + JLabel woodLabel = new JLabel("Wood: " + ic.getWood().toString()); + woodLabel.setFont(secondFont); + JLabel armLabel = new JLabel("Armrests: " + ((currentOrder.get(index) instanceof ItemArmChair) ? "True" : "False")); + armLabel.setFont(secondFont); + + //Add to panel + itemSummaryPanel.add(nameLabel); + itemSummaryPanel.add(imageLabel); + itemSummaryPanel.add(woodLabel); + itemSummaryPanel.add(armLabel); + } + } + + public void actionPerformed(ActionEvent e) + { + //Category clicked: Button (Checks if the object clicked is of an instance of Button) + if (e.getSource() instanceof JButton) + { + if (e.getSource().equals(menuAddItemButton)) + { + AddItemWindow aiw = new AddItemWindow(1, currentOrder, new TypeWood[] {TypeWood.WOOD_OAK, TypeWood.WOOD_WALNUT}); + //DO CHECKS + currentOrder = aiw.getUpdatedOrder(); + updateItemOrder(); + } + else if (e.getSource().equals(menuClearButton)) + { + //Show dialog to make sure we get confirmation of them clearing the object + if (JOptionPane.showConfirmDialog(this, "Would you like to clear all order details?", "Clear Order?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) + { + //Delete all items in order. + currentOrder.deleteAll(); + //If a panel is selected, de-select it. + if (currentSelected != -1) + { + changeSelectedPanel(0, 0, currentSelected); + } + } + //Update GUI elements. + updateItemOrder(); + updateSummaryPanel(); + } + else if (e.getSource().equals(menuLoadButton)) + { + //Create file chooser for the user to select where to load + //File chooser opens in the executed directory + JFileChooser jfc = new JFileChooser(new File(".").getAbsolutePath()); + if (jfc.showDialog(this, "Load") == JFileChooser.APPROVE_OPTION) + { + try + { + FileInputStream fileInput = new FileInputStream(jfc.getSelectedFile()); + ObjectInputStream objectInput = new ObjectInputStream(fileInput); + currentOrder = (ItemOrder) objectInput.readObject(); + objectInput.close(); + fileInput.close(); + } + catch (Exception ex) + { + ex.printStackTrace(); + } + } + updateItemOrder(); + } + else if (e.getSource().equals(menuSaveButton)) { + //Create file chooser for the user to select where to save + //File chooser opens in the executed directory + JFileChooser jfc = new JFileChooser(new File(".").getAbsolutePath()); + if (jfc.showDialog(this, "Save") == JFileChooser.APPROVE_OPTION) + { + try { + //Create the file and object output + FileOutputStream file = new FileOutputStream(jfc.getSelectedFile().getAbsolutePath() + ".dat"); + ObjectOutputStream fileOutput = new ObjectOutputStream(file); + //Write the object to the file + fileOutput.writeObject(currentOrder); + //Close the file + fileOutput.close(); + file.close(); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + } + else if (e.getSource().equals(menuSummaryButton)) + { + //This deselects anything currently selected, and makes the item summary show. + changeSelectedPanel(0, 0, currentSelected); + } + } + } + + @Override + public void mouseClicked(MouseEvent e) { + if (e.getSource() instanceof JPanel) + { + int counter = 0; + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 3; j++) + { + if (e.getSource().equals(imagepanels[i][j])) + { + if (e.getButton() == 1) + { + //Left Click + if (currentOrder.get(counter) != null) + { + changeSelectedPanel(i, j, counter); + break; + } + else + { + JOptionPane.showMessageDialog(this, "There is no item in the selected box.", "No Item Found!", JOptionPane.INFORMATION_MESSAGE); + } + } + else if (e.getButton() == 2) + { + //Middle Click + //Edit item + if (currentOrder.get(counter) != null) + { + AddItemWindow aiw = new AddItemWindow(AddItemWindow.getTabValue(currentOrder.get(counter)), currentOrder, new TypeWood[] {TypeWood.WOOD_OAK, TypeWood.WOOD_WALNUT}, counter, currentOrder.get(counter)); + currentOrder = aiw.getUpdatedOrder(); + } + updateItemOrder(); + } + else if (e.getButton() == 3) + { + //Right Click + //Delete item + if (currentOrder.get(counter) != null) + { + //Ask user if they want to delete the item from the order. + if (JOptionPane.showConfirmDialog(this, "Would you like to delete this order: " + currentOrder.get(counter).getName() + "?", "Clear Item?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) + { + //If they press yes, delete the order. + currentOrder.del(counter); + //Deselect all panels. + changeSelectedPanel(i, j, currentSelected); + } + } + else + { + JOptionPane.showMessageDialog(this, "There is no item to delete here.", "No Item Found!", JOptionPane.INFORMATION_MESSAGE); + } + //Update GUI elements. + updateItemOrder(); + //Do nothing if they don't accept the delete. + } + } + counter++; + } + } + } + } + + @Override + public void mousePressed(MouseEvent e) { + + } + + @Override + public void mouseReleased(MouseEvent e) { + + } + + @Override + public void mouseEntered(MouseEvent e) { + + } + + @Override + public void mouseExited(MouseEvent e) { + + } +} diff --git a/src/rofaapp/ROFCMain.java b/src/rofaapp/ROFCMain.java new file mode 100644 index 0000000..f1e054e --- /dev/null +++ b/src/rofaapp/ROFCMain.java @@ -0,0 +1,14 @@ +package rofaapp; + +import java.io.File; +import javax.swing.*; + +public class ROFCMain +{ + public static void main(String[] args) + { + //Main Window open. + //All logic is done within this window. + MainWindow mw = new MainWindow(); + } +} diff --git a/src/rofaapp/ROFCTests.java b/src/rofaapp/ROFCTests.java new file mode 100644 index 0000000..ff96d69 --- /dev/null +++ b/src/rofaapp/ROFCTests.java @@ -0,0 +1,21 @@ +package rofaapp; + +public class ROFCTests { + //Test main to test all different classes. + public static void main(String[] args) { + + ItemTableChrome itc = new ItemTableChrome(1, TypeWood.WOOD_OAK, ItemIcon.TABLE_ICON_1, 50); + ItemTableWood itw = new ItemTableWood(2, TypeWood.WOOD_WALNUT, ItemIcon.TABLE_ICON_2, 150); + ItemDesk id1 = new ItemDesk(3, TypeWood.WOOD_OAK, ItemIcon.DESK_ICON_3, 3, 20, 20); + ItemDesk id2 = new ItemDesk(4, TypeWood.WOOD_WALNUT, ItemIcon.DESK_ICON_1, 1, 20, 50); + ItemChair ic = new ItemChair(5, TypeWood.WOOD_WALNUT, ItemIcon.CHAIR_ICON_2); + ItemArmChair iac = new ItemArmChair(6, TypeWood.WOOD_OAK, ItemIcon.CHAIR_ICON_1); + + System.out.println(itc.toString() + " | " + itc.getPrice()); + System.out.println(itw.toString() + " | " + itw.getPrice()); + System.out.println(id1.toString() + " | " + id1.getPrice()); + System.out.println(id2.toString() + " | " + id2.getPrice()); + System.out.println(ic.toString() + " | " + ic.getPrice()); + System.out.println(iac.toString() + " | " + iac.getPrice()); + } +} diff --git a/src/rofaapp/TypeWood.java b/src/rofaapp/TypeWood.java new file mode 100644 index 0000000..12a585e --- /dev/null +++ b/src/rofaapp/TypeWood.java @@ -0,0 +1,35 @@ +package rofaapp; + +import java.io.Serializable; + +public class TypeWood implements Serializable{ + + private String name; + private double price; + + //Types of Wood (Constants) + public static final TypeWood WOOD_OAK = new TypeWood("Oak", 0.04); + public static final TypeWood WOOD_WALNUT = new TypeWood("Walnut", 0.03); + + //Constructor + TypeWood(String n, double p) + { + name = n; + price = p; + } + + //Getters + public String getName(){return name;} + public double getPrice(){return price;} + + /** + * Gets the name of the wood type. + * @return {@link #name} + */ + @Override + public String toString() + { + return name; + } + +}