add ControlPanel(View)

This commit is contained in:
Me 2021-01-26 17:05:47 +01:00
parent 836a9b1547
commit 6b70e3b9db
5 changed files with 111 additions and 12 deletions

View File

@ -1,11 +1,9 @@
# Typicalc # Typicalc
This is an example project that can be used as a starting point to create your own Vaadin application with Spring Boot.
It contains all the necessary configuration and some placeholder files to get you started.
The project is a standard Maven project, so you can import it to your IDE of choice. [Read more how to set up a development environment](https://vaadin.com/docs/v14/flow/installing/installing-overview.html) for Vaadin projects (Windows, Linux, macOS). The project is a standard Maven project, so you can import it to your IDE of choice. [Read more how to set up a development environment](https://vaadin.com/docs/v14/flow/installing/installing-overview.html) for Vaadin projects (Windows, Linux, macOS).
This project was created from https://start.vaadin.com. [To Vaadin documentation](https://vaadin.com/docs-beta/latest/flow/overview/)
## Running and debugging the applcation ## Running and debugging the applcation
@ -28,11 +26,6 @@ Do not worry if the debugger breaks at a `SilentExitException`. This is a Spring
After the application has started, you can view your it at http://localhost:8080/ in your browser. After the application has started, you can view your it at http://localhost:8080/ in your browser.
You can now also attach break points in code for debugging purposes, by clicking next to a line number in any source file. You can now also attach break points in code for debugging purposes, by clicking next to a line number in any source file.
## Project structure
- `MainView.java` in `src/main/java` contains the navigation setup. It uses [App Layout](https://vaadin.com/components/vaadin-app-layout).
- `views` package in `src/main/java` contains the server-side Java views of your application.
- `views` folder in `frontend/src/` contains the client-side JavaScript views of your application.
## What next? ## What next?

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?><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/xsd/maven-4.0.0.xsd"> <?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>edu.kit.typicalc</groupId> <groupId>edu.kit.typicalc</groupId>
<artifactId>typicalc</artifactId> <artifactId>typicalc</artifactId>
@ -40,7 +41,7 @@
</snapshots> </snapshots>
</repository> </repository>
</repositories> </repositories>
<pluginRepositories> <pluginRepositories>
<!-- The order of definitions matters. Explicitly defining central here to make sure it has the highest priority. --> <!-- The order of definitions matters. Explicitly defining central here to make sure it has the highest priority. -->
<pluginRepository> <pluginRepository>

View File

@ -0,0 +1,77 @@
package edu.kit.typicalc.view.content;
import com.vaadin.flow.component.Key;
import com.vaadin.flow.component.KeyModifier;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.icon.Icon;
import com.vaadin.flow.component.icon.VaadinIcon;
/**
* Provides a GUI in form of buttons for the user to navigate through steps.
*/
public class ControlPanel {
private Button firstStep;
private Button lastStep;
private Button nextStep;
private Button previousStep;
private Button share;
/**
* Sets up buttons with click-listeners that call the corresponding method in the view.
* @param view the view that reacts to the button clicks
*/
public ControlPanel(ControlPanelView view) {
firstStep = new Button(new Icon(VaadinIcon.ANGLE_DOUBLE_LEFT), evt -> view.firstStepButton());
lastStep = new Button(new Icon(VaadinIcon.ANGLE_DOUBLE_RIGHT), evt -> view.lastStepButton());
nextStep = new Button(new Icon(VaadinIcon.ANGLE_DOUBLE_RIGHT), evt -> view.nextStepButton());
previousStep = new Button(new Icon(VaadinIcon.ANGLE_DOUBLE_LEFT), evt -> view.previousStepButton());
share = new Button(new Icon(VaadinIcon.CONNECT), evt -> view.shareButton());
// todo change shortcut scope
firstStep.addClickShortcut(Key.ARROW_LEFT, KeyModifier.CONTROL);
lastStep.addClickShortcut(Key.ARROW_RIGHT, KeyModifier.CONTROL);
nextStep.addClickShortcut(Key.ARROW_LEFT);
previousStep.addClickShortcut(Key.ARROW_LEFT);
}
/**
* Enables the firstStep-button if the parameter is true, disables it if hte parameter is false.
* @param setEnabled true to enable the button,false to disable it
*/
public void setEnabledFirstStep(boolean setEnabled) {
firstStep.setEnabled(setEnabled);
}
/**
* Enables the lastStep-button if the parameter is true, disables it if hte parameter is false.
* @param setEnabled true to enable the button,false to disable it
*/
public void setEnabledLastStep(boolean setEnabled) {
lastStep.setEnabled(setEnabled);
}
/**
* Enables the nextStep-button if the parameter is true, disables it if hte parameter is false.
* @param setEnabled true to enable the button,false to disable it
*/
public void setEnabledNextStep(boolean setEnabled) {
nextStep.setEnabled(setEnabled);
}
/**
* Enables the previousStep-button if the parameter is true, disables it if hte parameter is false.
* @param setEnabled true to enable the button,false to disable it
*/
public void setEnabledPreviousStep(boolean setEnabled) {
previousStep.setEnabled(setEnabled);
}
/**
* Enables the share-button if the parameter is true, disables it if hte parameter is false.
* @param setEnabled true to enable the button,false to disable it
*/
public void setEnabledShareButton(boolean setEnabled) {
share.setEnabled(setEnabled);
}
}

View File

@ -0,0 +1,28 @@
package edu.kit.typicalc.view.content;
public interface ControlPanelView {
/**
* Provides user with a way to share contents shown in the view, e.g. the URL orLaTeX-code.
*/
void shareButton();
/**
* Go to the first step.
*/
void firstStepButton();
/**
* Go to the last step.
*/
void lastStepButton();
/**
* Go to the next step.
*/
void nextStepButton();
/**
* Go to the previous step.
*/
void previousStepButton();
}

View File

@ -1,4 +1,4 @@
package edu.kit.typicalc.view.info_content; package edu.kit.typicalc.view.content.info_content;
import com.vaadin.flow.component.button.Button; import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.dependency.CssImport; import com.vaadin.flow.component.dependency.CssImport;