Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions ui/src/main/java/edu/wpi/grip/ui/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ public class Main extends Application {
private final Object dialogLock = new Object();
private Parent root;

private static Main instance;

public static void main(String[] args) {
launch(args);
}
Expand Down Expand Up @@ -77,6 +79,7 @@ public void start(Stage stage) throws Exception {
stage.setScene(new Scene(root));
stage.show();

instance = this;
}

public void stop() {
Expand Down Expand Up @@ -118,4 +121,8 @@ public final void onUnexpectedThrowableEvent(UnexpectedThrowableEvent event) {
}
});
}

public static Main getInstance() {
return instance;
}
}
6 changes: 6 additions & 0 deletions ui/src/main/java/edu/wpi/grip/ui/MainWindowController.java
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,12 @@ public void showProjectSettingsEditor() {
});
}

@FXML
public void showProjectAboutDialog() {
ProjectAboutDialog projectAboutDialog = new ProjectAboutDialog(root);
projectAboutDialog.showAndWait();
}

@FXML
public void quit() {
if (showConfirmationDialogAndWait()) {
Expand Down
82 changes: 82 additions & 0 deletions ui/src/main/java/edu/wpi/grip/ui/ProjectAboutDialog.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package edu.wpi.grip.ui;

import com.sun.deploy.uitoolkit.impl.fx.HostServicesFactory;
import edu.wpi.grip.ui.util.DPIUtility;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.control.*;
import javafx.scene.control.Dialog;
import javafx.scene.control.Label;
import javafx.scene.image.*;
import javafx.scene.image.Image;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;

/**
* A JavaFX dialog that displays information about the application (such as the version number)
*/
public class ProjectAboutDialog extends Dialog<ButtonType> {

public ProjectAboutDialog(Parent root) {
super();

GridPane grid = new GridPane();
grid.setVgap(10);
grid.setAlignment(Pos.TOP_LEFT);

ImageView img = new ImageView(new Image("edu/wpi/grip/ui/icons/grip-title.png"));

grid.add(img, 0, 0);

Label versionLabel = new Label("Version " + edu.wpi.grip.core.Main.class.getPackage().getImplementationVersion());
// makes the version label look a little bit better aligned (looks too far to the left otherwise)
versionLabel.setPadding(new Insets(0, 0, 0, 1));
Font versionLabelFont = new Font(16.0);
versionLabel.setFont(versionLabelFont);
grid.add(versionLabel, 0, 1, 3, 1);

Hyperlink githubLink = new Hyperlink();
githubLink.setText("GRIP on Github");
githubLink.setPadding(new Insets(0, 0, 0, 0));
githubLink.setOnAction(event -> {
HostServicesFactory.getInstance(Main.getInstance()).showDocument("https://github.com/WPIRoboticsProjects/GRIP");
});
grid.add(githubLink, 0, 2);

Hyperlink issuesLink = new Hyperlink();
issuesLink.setText("Issues List");
issuesLink.setPadding(new Insets(0, 0, 0, 0));
issuesLink.setOnAction(event -> {
HostServicesFactory.getInstance(Main.getInstance()).showDocument("https://github.com/WPIRoboticsProjects/GRIP/issues");
});
grid.add(issuesLink, 0, 3);

Hyperlink wikiLink = new Hyperlink();
wikiLink.setText("Wiki");
wikiLink.setPadding(new Insets(0, 0, 0, 0));
wikiLink.setOnAction(event -> {
HostServicesFactory.getInstance(Main.getInstance()).showDocument("https://github.com/WPIRoboticsProjects/GRIP/wiki");
});
grid.add(wikiLink, 0, 4);

Hyperlink operationsLink = new Hyperlink();
operationsLink.setText("Operation Reference");
operationsLink.setPadding(new Insets(0, 0, 0, 0));
operationsLink.setOnAction(event -> {
HostServicesFactory.getInstance(Main.getInstance()).showDocument("https://github.com/WPIRoboticsProjects/GRIP/wiki/Operation-Reference-Table");
});
grid.add(operationsLink, 0, 5);

DialogPane pane = getDialogPane();
pane.getButtonTypes().setAll(ButtonType.OK);
pane.setContent(grid);
pane.styleProperty().bind(root.styleProperty());
pane.getStylesheets().addAll(root.getStylesheets());
pane.setPrefSize(DPIUtility.ABOUT_DIALOG_WIDTH, DPIUtility.ABOUT_DIALOG_HEIGHT );

setTitle("About GRIP");
setHeaderText("About GRIP");
setResizable(true);
}
}
2 changes: 2 additions & 0 deletions ui/src/main/java/edu/wpi/grip/ui/util/DPIUtility.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ public class DPIUtility {
public final static double LARGE_ICON_SIZE = 48.0 * (isManualHiDPI() ? HIDPI_SCALE : 1.0);
public final static double STROKE_WIDTH = 2.0 * (isManualHiDPI() ? HIDPI_SCALE : 1.0);
public final static double SETTINGS_DIALOG_SIZE = 400.0 * (isManualHiDPI() ? HIDPI_SCALE : 1.0);
public final static double ABOUT_DIALOG_WIDTH = 400.0 * (isManualHiDPI() ? HIDPI_SCALE : 1.0);
public final static double ABOUT_DIALOG_HEIGHT = 200.0 * (isManualHiDPI() ? HIDPI_SCALE : 1.0);

private static boolean isManualHiDPI() {
// We need to do manual size adjustments for HiDPI on Linux. JavaFX automatically does this on Windows and OSX
Expand Down
3 changes: 3 additions & 0 deletions ui/src/main/resources/edu/wpi/grip/ui/MainWindow.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,9 @@
</graphic>
</MenuItem>
</Menu>
<Menu text="Help">
<MenuItem text="About" onAction="#showProjectAboutDialog" />
</Menu>
</MenuBar>
<SplitPane dividerPositions="0.6" orientation="VERTICAL" VBox.vgrow="ALWAYS">
<items>
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.