Skip to content
Snippets Groups Projects
Commit 3ec6c13c authored by Christopher Bohn's avatar Christopher Bohn :thinking:
Browse files

Initial commit

parents
No related branches found
No related tags found
No related merge requests found
# Project-specific
# none (for now)
# Mac file finder metadata
.DS_Store
# Windows file metadata
._*
# Thumbnail image caches
Thumbs.db
ethumbs.db
# MS Office temporary file
~*
# Emacs backup file
*~
# Common
[Bb]in/
[Bb]uild/
[Oo]bj/
[Oo]ut/
[Tt]mp/
[Xx]86/
[Ii][Aa]32/
[Xx]64/
[Xx]86_64/
[Xx]86-64/
[Aa]rm
[Aa]32
[Tt]32
[Aa]64
*.tmp
*.bak
*.bk
*.swp
# Java files
*.class
javadoc/
# Maven
target/
# JetBrains (IntelliJ IDEA, PyCharm, etc) files
.idea/
cmake-build-*/
*.iml
*.iws
*.ipr
# Eclipse files
.settings/
.project
.classpath
.buildpath
.loadpath
local.properties
# Visual Studio / VS Code files
.vs*/
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
*.psess
*.vsp
*.vspx
# Netbeans files
nbproject/private/
build/
nbbuild/
dist/
nbdist/
nbactions.xml
nb-configuration.xml
# Xcode files
*.xcodeproj/
xcuserdata/
.build/
# food truck
Starter material for food truck assignments
*.html
ASSIGNMENTS = $(wildcard *.md)
ASSIGNMENT_HTML = $(ASSIGNMENTS:%.md=%.html)
all: $(ASSIGNMENT_HTML)
%.html: %.md
pandoc -o $@ $<
sed "s/’/'/g" $@ | sed "s/‘/'/g" | sed 's/”/"/g' | sed 's/“/"/g' > temp
mv temp $@
# Food Truck Assignments
## Wireframe Assignment
Students will:
- Appreciate the importance of thinking about user interface design
- Gain experience preparing a simple model of a user interface before coding
the user interface
### Thanks
The wireframe assignment is substantially based on an in-class activity
developed by Drs. Suzette Person & Brady Garvin for SOFT 161.
## GUI Prototype Assignment
Students will:
- Gain limited familiarity with the JavaFX framework
- Demonstrate prototyping an application GUI, given a wireframe
- Gain additional experience using a version control system with multiple
developers
- Demonstrate formatting commit messages in accordance with accepted
convention
# GUI Prototype
- Assignment Due: March 11, 2020 at 9:30am
- Peer Assessment Due: March 11, 2020 at 11:59pm
In this assignment you will prepare a GUI prototype based off of the wireframe
you prepared in the previous assignment.
## Objectives
Students will:
- Gain limited familiarity with the JavaFX framework
- Demonstrate prototyping an application GUI, given a wireframe
- Gain additional experience using a version control system with multiple
developers
- Demonstrate formatting commit messages in accordance with accepted
convention
## Instructions
This assignment is to be completed in assigned pairs; **no collaboration
other than with your assigned partner is permitted**. One of the purposes of
pair-assignments is to practice teamwork. After completing the assignment you
will need to complete a peer assessment. Your contribution grade will be based
on the peer assessments and on the git history.
*Commit material that you worked on individually under your own name* using the
defaults that you set. *When (and only when) you commit material that was
developed using pair programming, override the default commit author to reflect
both authors* so that we can properly credit both authors for their contribution
grades. When you override the default commit author list both students' names,
and for the email address use a fake email address that is unique to the pair
of students by concatenating your Canvas login IDs (the angle brackets around
the email address are required):
```
git commit --author="Herbie Husker and Lil Red <hhusker20lred19@dev.null>"
```
You can use this same technique for the rare circumstance in which your partner
is briefly unable to commit code themselves:
```
git commit --author="Herbie Husker <herbie@huskers.unl.edu>"
```
<!--
### WARNING
It will be very tempting to decide to do some of this assignment during Fall
Break. Experience has shown that this rarely happens. For this reason, the
assignment is due *Thursday* after the break instead of Wednesday. If you do
get some of it done during the break, that's fine, but don't plan on it
happening.
-->
## Setup
1. You and your partner will work on a shared repository, which has been
prepared for you.
1. Navigate to your shared directory
(<https://git.unl.edu/csce_361/spring2020/22pairNN/>, where *NN* is your
team number).
1. Verify that the repository is private, and that you and your partner
both have Maintainer access.
1. Both students should:
1. Clone the project: `git clone <URL>` (here the angle brackets should
not be included).
- **Do *NOT* place your food truck repository inside your
csce361-homework repository!**
1. Import the project into your IDE. The project is set up as a Maven
project, so you can follow your IDE's instructions to import a Maven
project.
## Assignment
1. You only need to prepare a prototype based off of one wireframe. You and
your partner should decide whose wireframe you will refine into a prototype.
- Place the pdf file of the selected prototype in the top-level directory
of your shared repository.
1. Using JavaFX Scene Builder, begin the GUI prototype that corresponds to the
selected wireframe. You may make some deviations based on what you learned
from the Human Performance Testing in-class activity, but it should
recognizably be based on the wireframe.
- You may initiate Scene Builder from your IDE, or you may launch Scene
Builder's stand-alone application.
- You may find the
[JavaFX Scene Builder tutorial](https://git.unl.edu/csce_361/examples/javafx-scenebuilder-examples) useful in preparing the GUI, including
navigation between screens.
- You may also consult other sources for JavaFX and/or Scene Builder
help. If you find any of these useful, please post links to
<https://piazza.com/class/k52rkmpexb65dp?cid=94>
- You may copy artwork from outside sources to include in your project if
and only if you have the license to do so. If the artwork is in the
public domain or is licensed under a Creative Commons license then you
likely do not need to take explicit action to obtain the license.
Otherwise, you probably will have to pay for the license (be sure that
the license permits redistribution). *Be sure to comply with the terms
of the license, whether it's a Creative Commons license or a commercial
license, and be sure to indicate the source in the deliverables*.
1. Include enough Java code to navigate the GUI.
1. **You do NOT need to provide full functionality for your application.**
Because this is a prototype GUI, you should provide enough output for a
scripted scenario. For example:
- When the user is placing their order, they should get the experience of
placing an order; however, their inputs may be ignored.
- After placing the order, the application should provide the display
appropriate to the scripted scenario, such as always displaying a
hamburger, fries, and a drink on the order summary (regardless of what
the user actually entered).
1. If there is any artwork used in your GUI, edit `README.md` to indicate the
sources. If you created original artwork, indicate this in `README.md`. If
you downloaded artwork, indicate in `README.md` where you obtained the
artwork and the nature of the license.
- You do *not* need to credit sources or cite licenses for emojis, as
these are Unicode characters.
## Deliverables
For grading, after the assignment is due we will clone the repository that you
identified, and we will look for:
- Wireframe pdf file
- `.fxml` files and supporting `.java` files for GUI prototype
- Artwork credit in `README.md` as needed
*It is your responsibility to ensure that your work is in the **correct
repository** and that we can access the repository at the **time the assignment
is due**. We will grade what we can retrieve from the repository at the time
it is due. Any work that is not in the correct repository, or that we cannot
access, will not be graded.*
## Assignment Rubric
The assignment is worth **20 points**:
- **8 points** for having the visual elements / widgets shown in the
wireframe
- As noted, deviation based off of HPT activity is acceptable, but the
GUI prototype must be recognizably derived from the wireframe
- **3 points** for the GUI prototype being navigable
- **3 points** for the GUI prototype supporting a scripted scenario
- **2 points** for making regular commits; *i.e.*, not waiting until the end
of the project to make a massive commit.
- **4 point** for meaningful and *well-formatted* commit messages.
- **deduct 50%** if violating license for artwork.
- ***Using another person's artwork without crediting the source will be
treated as plagiarism.***
This assignment is scoped for a team of 2 students. If, despite your attempts
to engage your partner, your partner does not contribute to the assignment then
we will take that into account when grading.
*If **at any time** your repository is public or has internal visibility then
you will receive a 10% penalty. Further, if another student accesses your
non-private repository and copies your solution then I will assume that you are
complicit in their academic dishonesty.*
## Contribution Rubric
The contribution is worth **6 points**:
- **1 point** for completing peer assessment
- **5 points** for equitable contribution based on peer assessments
<!--
- **0 points** for equitable contribution based on git history
-->
# Wireframe
In this assignment you will create a wireframe of a user interface for a simple
application.
- Due: March 4, 2020 at 9:30am
## Objectives
Students will:
- Appreciate the importance of thinking about user interface design
- Gain experience preparing a simple model of a user interface before coding
the user interface
## Instructions
This assignment is to be completed individually; **no collaboration is
permitted**.
### Setup
There is no setup for this assignment.
### Assignment
Prepare a wireframe for the GUI of an app that will allow people to order food
from a small restaurant. The functional and nonfunctional requirements are
below.
1. Create a wireframe for this app's GUI using a tool like
[Figma](https://www.figma.com/),
[Mockingbird](https://gomockingbird.com/) or
[draw.io](https://www.draw.io/).
(Note that if you would like access to the Professional Team features of
Figma, you can request it as a student
[here](https://www.figma.com/education/).)
1. If your design uses more than one GUI "screen" (or page), use arrows to
indicate links between screens.
1. Save your wireframe as a pdf file named `20-Wireframe.pdf` and upload it
to your `csce361-homework` repository.
1. For class on Wednesday, either
- Print out a copy of your wireframe and bring it to class, or
- Bring a device capable of displaying your wireframe to class and have
the wireframe ready to display
#### Nonfunctional Requirement
- A "screen" can be no larger than 7cm x 15cm (2 3/4in x 5 7/8in) in either
portrait or landscape orientation.
- While you can use scrolling (indicated by scrollbars in your
wireframe), keep the size limitation in mind when laying out the widget
placeholders.
#### Functional Requirements
- Our diner offers the following menu:
- Hamburger ($5.00, 500&nbsp;calories)
- Cheeseburger ($6.00, 600&nbsp;calories)
- Fries ($2.00, 400&nbsp;calories)
- Fountain Drink ($2.00, 200&nbsp;calories)
- Sundae ($3.00, 1400&nbsp;calories)
- The diner's mobile app shall allow the user to order food from this menu
on their phone.
- Users shall be able to add and remove items from their order, always
seeing the subtotal, sales tax, and total update live. They should then
be prompted for their credit card number and finally thanked after the
order is placed.
- Users should also be able to see how many calories are provided by each
menu item, but this information should not be displayed prominently.
### Deliverables
For grading, we will pull updates to the `csce361-homework` repositories after
the assignment is due, and we will look for:
- `20-Wireframe.pdf` containing a wireframe
*It is your responsibility to ensure that your work is in the master branch of
the **correct repository** and that we have the correct level of access to the
repository at the **time the assignment is due**. We will grade what we can
retrieve from the repository at the time it is due. Any work that is not in
the correct repository, or that we cannot access, will not be graded.*
## Rubric
The assignment is worth **11 points**:
- **1.0 point** for each of these features of your wireframe:
- A way to add items to an order,
- A way to remove items from an order,
- A way to see the current subtotal,
- A way to see the current sales tax,
- A way to see the current total,
- A way to see calorie information,
- A way to enter a credit card number,
- A thank-you message, and
- Links between pages (if the wireframe uses multiple screens).
- **1.0 point** for limiting each screen to the maximum dimensions (or using
scrollbars).
- **1.0 point** for using a meaningful commit message when committing your
file.
*If **at any time** your repository is public or has internal visibility then
you will receive a 10% penalty. Further, if another student accesses your
non-private repository and copies your solution then I will assume that you are
complicit in their academic dishonesty.*
pom.xml 0 → 100644
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>edu.unl.cse.csce361.gui_starter</groupId>
<artifactId>gui_starter</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>gui_starter</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.4</version>
<configuration>
<mainClass>edu.unl.cse.csce361.gui_starter.Main</mainClass>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.fxml</include>
<include>**/*.png</include>
<include>**/*.jpg</include>
</includes>
</resource>
</resources>
</build>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>11</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>11</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11</version>
</dependency>
</dependencies>
</project>
package edu.unl.cse.csce361.gui_starter;
public class Controller {
}
package edu.unl.cse.csce361.gui_starter;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("home.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.GridPane?>
<GridPane alignment="center" hgap="10" vgap="10" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.171" fx:controller="edu.unl.cse.csce361.gui_starter.Controller">
<children>
<Label text="This is a placeholder." />
</children>
</GridPane>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment