Merge branch 'search-improvements' into 1.1
This commit is contained in:
commit
fe71a8acc2
@ -34,5 +34,6 @@
|
|||||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.9" level="project" />
|
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.9" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpasyncclient:4.1.4" level="project" />
|
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpasyncclient:4.1.4" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore-nio:4.4.10" level="project" />
|
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore-nio:4.4.10" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: me.xdrop:fuzzywuzzy:1.3.1" level="project" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
5
pom.xml
5
pom.xml
@ -131,5 +131,10 @@
|
|||||||
<artifactId>unirest-java</artifactId>
|
<artifactId>unirest-java</artifactId>
|
||||||
<version>3.1.02</version>
|
<version>3.1.02</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>me.xdrop</groupId>
|
||||||
|
<artifactId>fuzzywuzzy</artifactId>
|
||||||
|
<version>1.3.1</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
@ -13,16 +13,16 @@
|
|||||||
* <https://www.gnu.org/licenses/>.
|
* <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import com.jfoenix.controls.*;
|
|
||||||
import javafx.beans.value.ChangeListener;
|
import javafx.beans.value.ChangeListener;
|
||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
import javafx.concurrent.Service;
|
import javafx.concurrent.Service;
|
||||||
import javafx.concurrent.Task;
|
import javafx.concurrent.Task;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.control.Alert;
|
import javafx.fxml.FXMLLoader;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.Parent;
|
||||||
import javafx.scene.control.Tooltip;
|
import javafx.scene.Scene;
|
||||||
import javafx.stage.FileChooser;
|
import javafx.scene.control.*;
|
||||||
|
import javafx.stage.*;
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
import org.apache.commons.configuration2.ex.ConfigurationException;
|
import org.apache.commons.configuration2.ex.ConfigurationException;
|
||||||
import org.jsoup.HttpStatusException;
|
import org.jsoup.HttpStatusException;
|
||||||
@ -38,6 +38,7 @@ import java.nio.file.Files;
|
|||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.nio.file.StandardCopyOption;
|
import java.nio.file.StandardCopyOption;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -64,31 +65,31 @@ public class Controller {
|
|||||||
@FXML
|
@FXML
|
||||||
public Label state_label;
|
public Label state_label;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXTextField path_textfield;
|
public TextField path_textfield;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXTextField appId_textfield;
|
public TextField appId_textfield;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXTextField game_name_textfield;
|
public TextField game_name_textfield;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXComboBox<String> language_combobox;
|
public ComboBox<String> language_combobox;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXTextArea dlc_textarea;
|
public TextArea dlc_textarea;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXCheckBox extra_protection_checkbox;
|
public CheckBox extra_protection_checkbox;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXCheckBox offline_checkbox;
|
public CheckBox offline_checkbox;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXCheckBox unlock_all_checkbox;
|
public CheckBox unlock_all_checkbox;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXButton reset_button;
|
public Button reset_button;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXButton save_button;
|
public Button save_button;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXButton getAppId_button;
|
public Button getAppId_button;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXButton path_button;
|
public Button path_button;
|
||||||
@FXML
|
@FXML
|
||||||
public JFXButton retrieveDlcList_button;
|
public Button retrieveDlcList_button;
|
||||||
private String steamApiPathString;
|
private String steamApiPathString;
|
||||||
|
|
||||||
public Controller() {
|
public Controller() {
|
||||||
@ -207,11 +208,33 @@ public class Controller {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void getAppId() {
|
public void getAppId() {
|
||||||
final App game = cache.findGame(game_name_textfield.getText());
|
//final App game = cache.findGame(game_name_textfield.getText());
|
||||||
if (game == null) {
|
final List<App> games = cache.findListOfGames(game_name_textfield.getText());
|
||||||
|
if (games.isEmpty()) {
|
||||||
appId_textfield.setText("-1");
|
appId_textfield.setText("-1");
|
||||||
} else {
|
} else if (games.size() == 1) {
|
||||||
|
App game = games.get(0);
|
||||||
|
game_name_textfield.setText(game.getName());
|
||||||
appId_textfield.setText(String.valueOf(game.getAppId()));
|
appId_textfield.setText(String.valueOf(game.getAppId()));
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("searchResultWindow.fxml"));
|
||||||
|
Parent root1 = fxmlLoader.load();
|
||||||
|
|
||||||
|
SearchResultWindowController c = fxmlLoader.getController();
|
||||||
|
c.initMe(games);
|
||||||
|
c.setParentController(this);
|
||||||
|
|
||||||
|
Stage stage = new Stage();
|
||||||
|
stage.initModality(Modality.APPLICATION_MODAL);
|
||||||
|
stage.setResizable(false);
|
||||||
|
//stage.initStyle(StageStyle.UNDECORATED);
|
||||||
|
stage.setTitle("Choose game...");
|
||||||
|
stage.setScene(new Scene(root1));
|
||||||
|
stage.show();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
96
src/main/java/SearchResultWindowController.java
Normal file
96
src/main/java/SearchResultWindowController.java
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
/*
|
||||||
|
* Auto-CreamAPI
|
||||||
|
* Copyright (C) 2020 Jeddunk
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
|
||||||
|
* License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
|
||||||
|
* version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with this program. If not, see
|
||||||
|
* <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.control.*;
|
||||||
|
import javafx.scene.control.cell.TreeItemPropertyValueFactory;
|
||||||
|
import javafx.scene.input.MouseButton;
|
||||||
|
import javafx.scene.input.MouseEvent;
|
||||||
|
import javafx.stage.Stage;
|
||||||
|
import pojo.App;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SearchResultWindowController {
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public Button okButton;
|
||||||
|
@FXML
|
||||||
|
public Button cancelButton;
|
||||||
|
@FXML
|
||||||
|
public TreeTableView<App> gameTable;
|
||||||
|
@FXML
|
||||||
|
public TreeTableColumn<App, Integer> appIdCol;
|
||||||
|
@FXML
|
||||||
|
public TreeTableColumn<App, String> nameCol;
|
||||||
|
|
||||||
|
public Controller parent;
|
||||||
|
|
||||||
|
private long lastTime;
|
||||||
|
private boolean isDblClicked;
|
||||||
|
|
||||||
|
public SearchResultWindowController() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void initialize() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void initMe(List<App> games) {
|
||||||
|
TreeItem<App> root = new TreeItem<>();
|
||||||
|
appIdCol.setCellValueFactory(new TreeItemPropertyValueFactory<>("appId"));
|
||||||
|
nameCol.setCellValueFactory(new TreeItemPropertyValueFactory<>("name"));
|
||||||
|
games.forEach(game -> root.getChildren().add(new TreeItem<>(game)));
|
||||||
|
gameTable.setRoot(root);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void confirm() {
|
||||||
|
App app = gameTable.getSelectionModel().getSelectedItem().getValue();
|
||||||
|
parent.game_name_textfield.setText(app.getName());
|
||||||
|
parent.appId_textfield.setText(String.valueOf(app.getAppId()));
|
||||||
|
Stage current = (Stage) okButton.getScene().getWindow();
|
||||||
|
current.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void cancel() {
|
||||||
|
parent.game_name_textfield.setText("");
|
||||||
|
parent.appId_textfield.setText("-1");
|
||||||
|
Stage current = (Stage) cancelButton.getScene().getWindow();
|
||||||
|
current.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParentController(Controller controller) {
|
||||||
|
parent = controller;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void doubleclickConfirm(MouseEvent mouseEvent) {
|
||||||
|
if (mouseEvent.getButton() == MouseButton.PRIMARY) {
|
||||||
|
long diff;
|
||||||
|
long currentTime = System.currentTimeMillis();
|
||||||
|
if (lastTime != 0 && currentTime != 0) {
|
||||||
|
diff = currentTime - lastTime;
|
||||||
|
isDblClicked = (diff <= 215);
|
||||||
|
}
|
||||||
|
lastTime = currentTime;
|
||||||
|
if (isDblClicked) {
|
||||||
|
App app = gameTable.getSelectionModel().getSelectedItem().getValue();
|
||||||
|
parent.game_name_textfield.setText(app.getName());
|
||||||
|
parent.appId_textfield.setText(String.valueOf(app.getAppId()));
|
||||||
|
Stage current = (Stage) gameTable.getScene().getWindow();
|
||||||
|
current.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -20,6 +20,8 @@ import com.google.gson.JsonSyntaxException;
|
|||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
import kong.unirest.HttpResponse;
|
import kong.unirest.HttpResponse;
|
||||||
import kong.unirest.Unirest;
|
import kong.unirest.Unirest;
|
||||||
|
import me.xdrop.fuzzywuzzy.FuzzySearch;
|
||||||
|
import me.xdrop.fuzzywuzzy.model.BoundExtractedResult;
|
||||||
import org.jsoup.Jsoup;
|
import org.jsoup.Jsoup;
|
||||||
import org.jsoup.nodes.Document;
|
import org.jsoup.nodes.Document;
|
||||||
import org.jsoup.nodes.Element;
|
import org.jsoup.nodes.Element;
|
||||||
@ -32,10 +34,7 @@ import java.io.*;
|
|||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class SteamAppsListCache {
|
public class SteamAppsListCache {
|
||||||
@ -93,20 +92,19 @@ public class SteamAppsListCache {
|
|||||||
.filter(app -> app.getName().equalsIgnoreCase(name)).findFirst().orElse(null);
|
.filter(app -> app.getName().equalsIgnoreCase(name)).findFirst().orElse(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public App findGame(String name) {
|
public List<App> findListOfGames(String name) {
|
||||||
for (App app : list.getSteamAppsList()) {
|
List<BoundExtractedResult<App>> match = FuzzySearch.extractSorted(name, list.getSteamAppsList(), app ->
|
||||||
if (app.getName().toLowerCase().replaceAll("[^a-zA-Z0-9\\s+]", "")
|
app.getName().toLowerCase().replaceAll("[^a-zA-Z0-9\\s+]", ""), 80);
|
||||||
.startsWith(name.toLowerCase().replaceAll("[^a-zA-Z0-9\\s+]", ""))) {
|
List<App> collect = match.stream().map(BoundExtractedResult::getReferent).collect(Collectors.toList());
|
||||||
return app;
|
for (App app : collect) {
|
||||||
|
if (app.getName().replaceAll("[^a-zA-Z0-9\\s+]", "")
|
||||||
|
.equalsIgnoreCase(name.replaceAll("[^a-zA-Z0-9\\s+]", ""))) {
|
||||||
|
collect = new ArrayList<>();
|
||||||
|
collect.add(app);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (App app : list.getSteamAppsList()) {
|
return collect;
|
||||||
if (app.getName().toLowerCase().replaceAll("[^a-zA-Z0-9\\s+]", "")
|
|
||||||
.contains(name.toLowerCase().replaceAll("[^a-zA-Z0-9\\s+]", ""))) {
|
|
||||||
return app;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getListFromApi() {
|
private void getListFromApi() {
|
||||||
|
@ -27,46 +27,68 @@
|
|||||||
~ <https://www.gnu.org/licenses/>.
|
~ <https://www.gnu.org/licenses/>.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<GridPane hgap="10.0" minHeight="400.0" minWidth="655.0" vgap="10.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controller">
|
<?import java.net.URL?>
|
||||||
|
<GridPane hgap="10.0" minHeight="400.0" minWidth="655.0" vgap="10.0" xmlns="http://javafx.com/javafx/8.0.171"
|
||||||
|
xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controller">
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308" minWidth="-Infinity" prefWidth="375.0" />
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308" minWidth="-Infinity" prefWidth="375.0"/>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="120.0" />
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="120.0"/>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="120.0" />
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="120.0"/>
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES" />
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES"/>
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES" />
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES"/>
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES" />
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES"/>
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES" />
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES"/>
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES" />
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES"/>
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES" />
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES"/>
|
||||||
<RowConstraints minHeight="-Infinity" prefHeight="60.0" vgrow="SOMETIMES" />
|
<RowConstraints minHeight="-Infinity" prefHeight="60.0" vgrow="SOMETIMES"/>
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES" />
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES"/>
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
<RowConstraints maxHeight="-Infinity" minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<padding>
|
<padding>
|
||||||
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
|
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
|
||||||
</padding>
|
</padding>
|
||||||
<JFXTextField fx:id="path_textfield" promptText="Path to game's steam_api(64).dll..." GridPane.columnSpan="2" />
|
<JFXTextField fx:id="path_textfield" promptText="Path to game's steam_api(64).dll..." GridPane.columnSpan="2"/>
|
||||||
<JFXButton fx:id="path_button" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" onAction="#openFileChooser" ripplerFill="BLACK" style="-fx-background-color: #ddd;" GridPane.columnIndex="2">
|
<JFXButton fx:id="path_button" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
|
||||||
<graphic>
|
minHeight="-Infinity" minWidth="-Infinity" onAction="#openFileChooser" ripplerFill="BLACK"
|
||||||
<FontAwesomeIconView glyphName="FOLDER_OPEN" glyphSize="24" />
|
GridPane.columnIndex="2">
|
||||||
</graphic>
|
|
||||||
</JFXButton>
|
|
||||||
<JFXTextField fx:id="game_name_textfield" promptText="Game..." GridPane.rowIndex="1" />
|
|
||||||
<JFXButton fx:id="getAppId_button" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" onAction="#getAppId" ripplerFill="BLACK" style="-fx-background-color: #ddd;" GridPane.columnIndex="1" GridPane.rowIndex="1">
|
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView glyphName="SEARCH" glyphSize="24" />
|
<FontAwesomeIconView glyphName="FOLDER_OPEN" glyphSize="24"/>
|
||||||
</graphic>
|
</graphic>
|
||||||
</JFXButton>
|
</JFXButton>
|
||||||
<JFXTextField fx:id="appId_textfield" prefWidth="299.0" promptText="Steam AppID..." GridPane.columnIndex="2" GridPane.rowIndex="1" />
|
<JFXTextField fx:id="game_name_textfield" promptText="Game..." GridPane.rowIndex="1"/>
|
||||||
<JFXComboBox fx:id="language_combobox" editable="true" promptText="Language" GridPane.columnSpan="2147483647" GridPane.rowIndex="2" />
|
<JFXButton fx:id="getAppId_button" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
|
||||||
<JFXCheckBox fx:id="offline_checkbox" text="Force offline mode" GridPane.columnSpan="2147483647" GridPane.rowIndex="3" />
|
minHeight="-Infinity" minWidth="-Infinity" onAction="#getAppId" ripplerFill="BLACK"
|
||||||
<JFXCheckBox fx:id="extra_protection_checkbox" text="Try to bypass game-specific protection" GridPane.columnSpan="2147483647" GridPane.rowIndex="4" />
|
GridPane.columnIndex="1" GridPane.rowIndex="1">
|
||||||
<JFXCheckBox fx:id="unlock_all_checkbox" onAction="#unlockAll_disableDlcTextArea" text="Unlock all DLC (if possible)" GridPane.columnSpan="2147483647" GridPane.rowIndex="5" />
|
<graphic>
|
||||||
<JFXTextArea fx:id="dlc_textarea" promptText="List of DLC..." GridPane.columnSpan="2147483647" GridPane.rowIndex="6" />
|
<FontAwesomeIconView glyphName="SEARCH" glyphSize="24"/>
|
||||||
<JFXButton fx:id="retrieveDlcList_button" maxHeight="1.7976931348623157E308" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" onAction="#getDlcList" ripplerFill="BLACK" style="-fx-background-color: #ddd;" text="Get DLCs for AppID" GridPane.rowIndex="7" />
|
</graphic>
|
||||||
<JFXButton fx:id="save_button" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" onAction="#save" ripplerFill="BLACK" style="-fx-background-color: #ddd;" text="Save" GridPane.columnIndex="1" GridPane.rowIndex="7" />
|
</JFXButton>
|
||||||
<JFXButton fx:id="reset_button" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" onAction="#resetFromButton" ripplerFill="BLACK" style="-fx-background-color: #ddd;" text="Reset" GridPane.columnIndex="2" GridPane.rowIndex="7" />
|
<JFXTextField fx:id="appId_textfield" prefWidth="299.0" promptText="Steam AppID..." GridPane.columnIndex="2"
|
||||||
<Label fx:id="state_label" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" GridPane.columnSpan="2147483647" GridPane.rowIndex="8" />
|
GridPane.rowIndex="1"/>
|
||||||
|
<JFXComboBox fx:id="language_combobox" editable="true" promptText="Language" GridPane.columnSpan="2147483647"
|
||||||
|
GridPane.rowIndex="2"/>
|
||||||
|
<JFXCheckBox fx:id="offline_checkbox" text="Force offline mode" GridPane.columnSpan="2147483647"
|
||||||
|
GridPane.rowIndex="3"/>
|
||||||
|
<JFXCheckBox fx:id="extra_protection_checkbox" text="Try to bypass game-specific protection"
|
||||||
|
GridPane.columnSpan="2147483647" GridPane.rowIndex="4"/>
|
||||||
|
<JFXCheckBox fx:id="unlock_all_checkbox" onAction="#unlockAll_disableDlcTextArea"
|
||||||
|
text="Unlock all DLC (if possible)" GridPane.columnSpan="2147483647" GridPane.rowIndex="5"/>
|
||||||
|
<JFXTextArea fx:id="dlc_textarea" promptText="List of DLC..." GridPane.columnSpan="2147483647"
|
||||||
|
GridPane.rowIndex="6"/>
|
||||||
|
<JFXButton fx:id="retrieveDlcList_button" maxHeight="1.7976931348623157E308" maxWidth="-Infinity"
|
||||||
|
minHeight="-Infinity" minWidth="-Infinity" onAction="#getDlcList" ripplerFill="BLACK"
|
||||||
|
text="Get DLCs for AppID" GridPane.rowIndex="7"/>
|
||||||
|
<JFXButton fx:id="save_button" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
|
||||||
|
minHeight="-Infinity" minWidth="-Infinity" onAction="#save" ripplerFill="BLACK"
|
||||||
|
text="Save" GridPane.columnIndex="1" GridPane.rowIndex="7"/>
|
||||||
|
<JFXButton fx:id="reset_button" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
|
||||||
|
minHeight="-Infinity" minWidth="-Infinity" onAction="#resetFromButton" ripplerFill="BLACK"
|
||||||
|
text="Reset" GridPane.columnIndex="2" GridPane.rowIndex="7"/>
|
||||||
|
<Label fx:id="state_label" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
|
||||||
|
minHeight="-Infinity" minWidth="-Infinity" GridPane.columnSpan="2147483647" GridPane.rowIndex="8"/>
|
||||||
|
<stylesheets>
|
||||||
|
<URL value="@stylesheet.css" />
|
||||||
|
</stylesheets>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
|
53
src/main/resources/searchResultWindow.fxml
Normal file
53
src/main/resources/searchResultWindow.fxml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import com.jfoenix.controls.JFXButton?>
|
||||||
|
<?import com.jfoenix.controls.JFXTreeTableView?>
|
||||||
|
<?import java.net.URL?>
|
||||||
|
<?import javafx.geometry.Insets?>
|
||||||
|
<?import javafx.scene.control.ButtonBar?>
|
||||||
|
<?import javafx.scene.control.Label?>
|
||||||
|
<?import javafx.scene.control.TreeTableColumn?>
|
||||||
|
<?import javafx.scene.layout.VBox?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
~ Auto-CreamAPI
|
||||||
|
~ Copyright (C) 2020 Jeddunk
|
||||||
|
~
|
||||||
|
~ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
|
||||||
|
~ License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
|
||||||
|
~ version.
|
||||||
|
~
|
||||||
|
~ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
~ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
~
|
||||||
|
~ You should have received a copy of the GNU General Public License along with this program. If not, see
|
||||||
|
~ <https://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="655.0" prefWidth="420.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="SearchResultWindowController">
|
||||||
|
<opaqueInsets>
|
||||||
|
<Insets />
|
||||||
|
</opaqueInsets>
|
||||||
|
<padding>
|
||||||
|
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
|
||||||
|
</padding>
|
||||||
|
<Label maxWidth="1.7976931348623157E308" text="Choose a game from the list below:" />
|
||||||
|
<JFXTreeTableView fx:id="gameTable" fixedCellSize="28.0" maxHeight="1.7976931348623157E308" onMouseClicked="#doubleclickConfirm" prefHeight="570.0" prefWidth="400.0" showRoot="false">
|
||||||
|
<columns>
|
||||||
|
<TreeTableColumn fx:id="appIdCol" editable="false" maxWidth="100.0" minWidth="100.0" prefWidth="100.0" resizable="false" text="AppID" />
|
||||||
|
<TreeTableColumn fx:id="nameCol" editable="false" maxWidth="285.0" minWidth="285.0" prefWidth="285.0" resizable="false" text="Name" />
|
||||||
|
</columns>
|
||||||
|
<VBox.margin>
|
||||||
|
<Insets bottom="10.0" top="10.0" />
|
||||||
|
</VBox.margin>
|
||||||
|
</JFXTreeTableView>
|
||||||
|
<ButtonBar prefHeight="40.0" prefWidth="200.0">
|
||||||
|
<buttons>
|
||||||
|
<JFXButton fx:id="okButton" mnemonicParsing="false" onAction="#confirm" text="OK" ripplerFill="BLACK" />
|
||||||
|
<JFXButton fx:id="cancelButton" mnemonicParsing="false" onAction="#cancel" text="Cancel" ripplerFill="BLACK" />
|
||||||
|
</buttons>
|
||||||
|
</ButtonBar>
|
||||||
|
<stylesheets>
|
||||||
|
<URL value="@stylesheet.css" />
|
||||||
|
</stylesheets>
|
||||||
|
</VBox>
|
18
src/main/resources/stylesheet.css
Normal file
18
src/main/resources/stylesheet.css
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Auto-CreamAPI
|
||||||
|
* Copyright (C) 2020 Jeddunk
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
|
||||||
|
* License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
|
||||||
|
* version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with this program. If not, see
|
||||||
|
* <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
JFXButton {
|
||||||
|
-fx-background-color: #ddd;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user