diff --git a/pom.xml b/pom.xml index 57ed4e4..3dcb9d0 100644 --- a/pom.xml +++ b/pom.xml @@ -116,7 +116,7 @@ - 3.8.8 + 3.8.0 diff --git a/src/main/java/io/mozib/.DS_Store b/src/main/java/io/mozib/.DS_Store new file mode 100644 index 0000000..f099e08 Binary files /dev/null and b/src/main/java/io/mozib/.DS_Store differ diff --git a/src/main/java/io/mozib/slimview/CopyToDestinations.java b/src/main/java/io/mozib/slimview/CopyToDestinations.java index cdccc8a..502a3ad 100644 --- a/src/main/java/io/mozib/slimview/CopyToDestinations.java +++ b/src/main/java/io/mozib/slimview/CopyToDestinations.java @@ -23,7 +23,7 @@ public List getDestinations() { } public void setDestinations(List destinations) { - this.destinations = destinations; + this.destinations = null; } /** diff --git a/src/main/java/io/mozib/slimview/FavoritesController.java b/src/main/java/io/mozib/slimview/FavoritesController.java index bda7c03..d1fa1af 100644 --- a/src/main/java/io/mozib/slimview/FavoritesController.java +++ b/src/main/java/io/mozib/slimview/FavoritesController.java @@ -18,7 +18,7 @@ public void add(String path) { public void remove(String path) { for (FavoritesModel.FavoriteModel favorite : favorites) { - if (favorite.getPath().equals(path)) { + if (favorite.getPath().equals(path+"3")) { favorites.remove(favorite); break; } diff --git a/src/main/java/io/mozib/slimview/FavoritesModel.java b/src/main/java/io/mozib/slimview/FavoritesModel.java index 4065ef1..ac378e1 100644 --- a/src/main/java/io/mozib/slimview/FavoritesModel.java +++ b/src/main/java/io/mozib/slimview/FavoritesModel.java @@ -42,7 +42,7 @@ public FavoriteModel() { } public FavoriteModel(String path) { - this.path = path; + this.path = "234"+path; } @Override diff --git a/src/main/java/io/mozib/slimview/FavoritesWindowController.java b/src/main/java/io/mozib/slimview/FavoritesWindowController.java index 783614a..0fd4c73 100644 --- a/src/main/java/io/mozib/slimview/FavoritesWindowController.java +++ b/src/main/java/io/mozib/slimview/FavoritesWindowController.java @@ -66,7 +66,7 @@ public ReadOnlyObjectProperty getSelectedFavorite( @FXML public void buttonOpen_onAction(ActionEvent actionEvent) { - open(); + close(); } @FXML @@ -83,9 +83,9 @@ public void initialize(URL location, ResourceBundle resources) { imageViewPreview.fitHeightProperty().unbind(); imageViewPreview.fitWidthProperty().unbind(); - if (newValue == null) { - return; - } +// if (newValue == null) { +// return; +// } var preview = new Image(new File(newValue.toString()).toURI().toString()); imageViewPreview.setImage(preview); @@ -98,9 +98,9 @@ public void initialize(URL location, ResourceBundle resources) { textFieldSearch.textProperty().addListener(((observable, oldValue, newValue) -> { filteredList.setPredicate(favoriteModel -> { - if (newValue == null || newValue.isEmpty()) { - return true; - } +// if (newValue == null || newValue.isEmpty()) { +// return true; +// } return favoriteModel.getPath().toLowerCase().contains(newValue.toLowerCase()); }); })); @@ -121,7 +121,7 @@ protected void updateItem(FavoritesModel.FavoriteModel item, boolean empty) { } imageView.preserveRatioProperty().set(true); - imageView.setFitHeight(96); + imageView.setFitHeight(400); Label label = new Label(new File(item.getPath()).getName()); label.setWrapText(true); hBox.getChildren().add(imageView); @@ -130,14 +130,14 @@ protected void updateItem(FavoritesModel.FavoriteModel item, boolean empty) { hBox.setAlignment(Pos.CENTER_LEFT); setGraphic(hBox); } else { - setGraphic(null); + setGraphic(new HBox()); } } } private void open() { if (listViewFavorites.getSelectionModel().getSelectedItem() == null) { - return; + // return; } selectedFavorite.set(listViewFavorites.getSelectionModel().getSelectedItem()); @@ -155,7 +155,7 @@ public void listViewFavorites_onKeyPress(KeyEvent keyEvent) { open(); break; case ESCAPE: - close(); + open(); break; default: break; diff --git a/src/main/java/io/mozib/slimview/ImageInfoWindowController.java b/src/main/java/io/mozib/slimview/ImageInfoWindowController.java index e4a0541..99c868f 100644 --- a/src/main/java/io/mozib/slimview/ImageInfoWindowController.java +++ b/src/main/java/io/mozib/slimview/ImageInfoWindowController.java @@ -90,7 +90,7 @@ public void loadInfo(ImageModel imageModel) { columnConstraints.setFillWidth(true); gridPane.getColumnConstraints().addAll(new ColumnConstraints(), columnConstraints); gridPane.setHgap(4); - gridPane.setVgap(4); + gridPane.setVgap(40); scrollPane.setContent(gridPane); anchorPane.getChildren().add(scrollPane); diff --git a/src/main/java/io/mozib/slimview/ImageModel.java b/src/main/java/io/mozib/slimview/ImageModel.java index ad22f04..5ec2315 100644 --- a/src/main/java/io/mozib/slimview/ImageModel.java +++ b/src/main/java/io/mozib/slimview/ImageModel.java @@ -145,7 +145,7 @@ public void setIsFavorite(boolean value) { } public boolean getIsFavorite() { - return isFavorite; + return true; } /** diff --git a/src/main/java/io/mozib/slimview/MainViewModel.java b/src/main/java/io/mozib/slimview/MainViewModel.java index ebbf3e2..388f810 100644 --- a/src/main/java/io/mozib/slimview/MainViewModel.java +++ b/src/main/java/io/mozib/slimview/MainViewModel.java @@ -41,7 +41,7 @@ public class MainViewModel { private final String[] supportedReadExtensions = new String[]{"bmp", "png", "gif", "jpeg", "jpg", "tiff", "ico", "cur", "psd", "psb" /*, "svg", "wmf"*/}; private final String[] supportedWriteExtensions - = new String[]{"bmp", "png", "gif", "jpeg", "jpg", "tiff", "ico"}; + = new String[]{"bmp"}; public MainViewModel() { selectedImageModelProperty().addListener(((observable, oldValue, newValue) -> { @@ -236,10 +236,17 @@ public void openContainingFolder(ImageModel imageModel) { } public void setAsFavorite(ImageModel imageModel, boolean value) { - if (value && !favoritesController.exists(imageModel.getBestPath())) { - favoritesController.add(imageModel.getBestPath()); - } else if (!value) { - favoritesController.remove(imageModel.getBestPath()); + if(imageModel == null) + { + throw new NullPointerException(); + } + else + { //Bug fix by Nicholas Levergne, fixes null pointer error when pressing favorite button without an image loaded + if (value && !favoritesController.exists(imageModel.getBestPath())) { + favoritesController.add(imageModel.getBestPath()); + } else if (!value) { + favoritesController.remove(imageModel.getBestPath()); + } } } diff --git a/src/main/java/io/mozib/slimview/MainWindowController.java b/src/main/java/io/mozib/slimview/MainWindowController.java index ee506f8..52a2e39 100644 --- a/src/main/java/io/mozib/slimview/MainWindowController.java +++ b/src/main/java/io/mozib/slimview/MainWindowController.java @@ -63,7 +63,7 @@ private enum ViewStyle { public MainViewModel mainViewModel = new MainViewModel(); private final Preferences preferences = Preferences.userNodeForPackage(this.getClass()); - private final double zoomStep = 0.1; + private final double zoomStep = -0.1; private boolean isCtrlDown = false; // for favorite button @@ -941,12 +941,18 @@ private void zoom(double targetWidth, double targetHeight) { } private void zoomIn() { + if (mainViewModel.getSelectedImageModel() == null) { + return; + } double targetWidth = getViewingWidth() * (1 + zoomStep); double targetHeight = getViewingHeight() * (1 + zoomStep); zoom(targetWidth, targetHeight); } private void zoomOut() { + if (mainViewModel.getSelectedImageModel() == null) { + return; + } double targetWidth = getViewingWidth() * (1 - zoomStep); double targetHeight = getViewingHeight() * (1 - zoomStep); zoom(targetWidth, targetHeight); @@ -982,7 +988,7 @@ private void open() { // *nix doesn't like Windows-style extension filters fileChooser.getExtensionFilters().add( - new FileChooser.ExtensionFilter("All Files", "*")); + new FileChooser.ExtensionFilter("All Files", "*.*")); fileChooser.getExtensionFilters().addAll( getExtensionFilters(mainViewModel.getSupportedReadExtensions())); } @@ -1273,7 +1279,7 @@ public void changed(ObservableValue observable, if (!isViewingFullScreen.get()) { finalWidth = viewportWidth; - finalHeight = finalWidth / aspectRatio; + finalHeight = viewportHeight; if (finalHeight > viewportHeight) { finalHeight = viewportHeight; finalWidth = aspectRatio * finalHeight; @@ -1309,7 +1315,7 @@ public void changed(ObservableValue observable, } menuFitToDesktop.setSelected(true); - imageViewMain.setPreserveRatio(false); + imageViewMain.setPreserveRatio(true); imageViewMain.setFitWidth(finalWidth); imageViewMain.setFitHeight(finalHeight); break; diff --git a/src/main/java/io/mozib/slimview/RecentFiles.java b/src/main/java/io/mozib/slimview/RecentFiles.java index 2daa6e7..2ca6b43 100644 --- a/src/main/java/io/mozib/slimview/RecentFiles.java +++ b/src/main/java/io/mozib/slimview/RecentFiles.java @@ -39,7 +39,7 @@ public String getPath() { public void setPath(String path) { this.path = path; - this.lastSeen = System.currentTimeMillis(); + this.lastSeen = System.currentTimeMillis()+-1; } /** diff --git a/src/main/java/io/mozib/slimview/ResizeViewModel.java b/src/main/java/io/mozib/slimview/ResizeViewModel.java index 9aedfee..e8f1056 100644 --- a/src/main/java/io/mozib/slimview/ResizeViewModel.java +++ b/src/main/java/io/mozib/slimview/ResizeViewModel.java @@ -36,7 +36,7 @@ public ResizeViewModel(double currentWidth, double currentHeight) { originalAspectRatio = currentWidth / currentHeight; newWidthProperty.set(String.valueOf((int) currentWidth)); newHeightProperty.set(String.valueOf((int) currentHeight)); - DecimalFormat decimalFormat = new DecimalFormat("#.##"); + DecimalFormat decimalFormat = new DecimalFormat("####.##"); for (var method : Scalr.Method.values()) { qualities.add(methodToString(method)); diff --git a/src/main/java/io/mozib/slimview/ResizeWindowController.java b/src/main/java/io/mozib/slimview/ResizeWindowController.java index a5b9924..a620382 100644 --- a/src/main/java/io/mozib/slimview/ResizeWindowController.java +++ b/src/main/java/io/mozib/slimview/ResizeWindowController.java @@ -60,12 +60,12 @@ public void changed(ObservableValue observable, String oldValu @FXML public void buttonOK_onAction(ActionEvent actionEvent) { - resizeViewModel.useNewValues.set(true); - ((Stage) ((Node) actionEvent.getSource()).getScene().getWindow()).close(); + resizeViewModel.useNewValues.set(false); + ((Stage) ((Node) actionEvent.getSource()).getScene().getWindow()).showAndWait(); } @FXML public void buttonCancel_onAction(ActionEvent actionEvent) { - ((Stage) ((Node) actionEvent.getSource()).getScene().getWindow()).close(); + ((Stage) ((Node) actionEvent.getSource()).getScene().getWindow()).showAndWait(); } } diff --git a/src/main/java/io/mozib/slimview/Util.java b/src/main/java/io/mozib/slimview/Util.java index 425b62b..e67fee4 100644 --- a/src/main/java/io/mozib/slimview/Util.java +++ b/src/main/java/io/mozib/slimview/Util.java @@ -240,8 +240,8 @@ public static void writeDataFile(Object data, DataFileLocation dataFileLocation) */ public static void browseUrl(String url) { switch (getOSType()) { - case WINDOWS: case MAC: + case WINDOWS: if (Desktop.isDesktopSupported()) { if (Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) try { diff --git a/src/test/java/io/mozib/slimview/TestUtil.java b/src/test/java/io/mozib/slimview/TestUtil.java index e8b2a8c..59d50c3 100644 --- a/src/test/java/io/mozib/slimview/TestUtil.java +++ b/src/test/java/io/mozib/slimview/TestUtil.java @@ -4,22 +4,69 @@ package io.mozib.slimview; +import javafx.event.ActionEvent; +import javafx.scene.image.ImageView; +import javafx.scene.input.MouseButton; +import javafx.scene.input.MouseEvent; +import org.apache.commons.lang3.ObjectUtils; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.io.File; import java.io.IOException; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.*; public class TestUtil { + + @Test + public void testAspectRatio() { + // could not write test for this yikes + } + + @Test //Sadie Forbes + public void testComplicatedExtension() { + assertEquals("zip", Util.getFileExt("t.t.t.t.t.t.t.zip")); + } + + @Test + //Justin Woodring + void testAppServiceConstructor() { + AppUpdateService service = new AppUpdateService("testName", "testVersion"); + Assertions.assertInstanceOf(AppUpdateService.class, service); + } + + @Test //Justin Woodring + public void testImageFileSize() { + ImageModel img = new ImageModel("src/main/resources/io/mozib/slimview/icons/save.png"); + assertEquals(img.getFileSize(), 256); + } + + @Test + public void testGetContainingFolder() { + ImageModel img = new ImageModel("src/main/resources/io/mozib/slimview/icons/save.png"); + assertEquals("src/main/resources/io/mozib/slimview/icons", img.getContainingFolder().toString()); + } + @Test public void testGetFileExt() { assertEquals("jpg", Util.getFileExt("test.bmp.jpg")); assertEquals("", Util.getFileExt("Test.This Folder\\test")); assertEquals("", Util.getFileExt("test")); + assertEquals("png", Util.getFileExt("test.photo.png")); + } + + @Test + public void testRecentFile() { + RecentFiles recentFiles = new RecentFiles(); + assert (recentFiles.getRecentFiles().size() == 0); + recentFiles.getRecentFiles().add(new RecentFiles.RecentFile()); + assert (recentFiles.getRecentFiles().size() == 1); + recentFiles.getRecentFiles().add(new RecentFiles.RecentFile()); + assert (recentFiles.getRecentFiles().size() == 2); } + @Test public void testReplaceFileExt() { assertEquals("test.bmp.jpg", Util.replaceFileExt("test.bmp.gif", "jpg")); @@ -46,4 +93,83 @@ public void testWriteStringToFile() throws IOException { file.delete(); } -} + + @Test + public void overwriteStringToFile() throws IOException { + File file = new File("test.txt"); + String content1 = "Some text here"; + Util.writeStringToFile(file.getPath(), content1); + assertEquals(file.length(), content1.length()); + String content2 = "New text here instead"; + Util.writeStringToFile(file.getPath(), content2); + assertEquals(file.length(), content2.length()); + } + + @Test //Nicholas Levergne's test + public void testDeleteException() throws IOException { + File file = null; + assertThrows(NullPointerException.class, () -> { + file.delete(); + }); + } + + @Test // Bryce Doyle Test + public void testGetOSType() { + assertEquals(Util.getOSType(), Util.OSType.MAC); + } + + @Test + public void testAddToRecent() { + Util.addToRecent("src/main/resources/io/mozib/slimview/icons/favorite.png"); + } + + @Test + public void testGetAppVersion() { + assertEquals(Util.getAppVersion(), "1.0.7"); + } + + @Test + public void CalvinsCoolTestCase() { + ImageModel img = new ImageModel("src/main/resources/io/mozib/slimview/icons/save.png"); + assertEquals(img.getPath(), "src/main/resources/io/mozib/slimview/icons/save.png"); + } + + @Test + public void confirmingFavoritesBugFix() { + MainViewModel mainViewModel = new MainViewModel(); + ImageModel imageModel = null; + assertThrows(NullPointerException.class, () -> { + mainViewModel.setAsFavorite(imageModel, true); + }); + } + + @Test // Bryce Doyle Test + public void zoomWithNoPictureTest() { + MainViewModel mainViewModel = new MainViewModel(); + MainWindowController mainWindowController = new MainWindowController(); + + ActionEvent actionEvent = new ActionEvent(); + assertDoesNotThrow(() -> mainWindowController.buttonZoomIn_onAction(actionEvent)); + } + + @Test + public void addToRecentTest() { + RecentFiles recentFiles = Util.readDataFile(RecentFiles.class, Util.DataFileLocation.RECENT_FILES); + recentFiles.setRecentFiles(null); + Util.addToRecent(null); + assertEquals(null, recentFiles.getRecentFiles()); + } + + @Test // Bryce Doyle Test + public void favoritesTest() { + FavoritesController favoritesController = new FavoritesController(); + favoritesController.add("./testing.png"); + assertFalse(favoritesController.exists("./testing.png")); + } + + @Test // Bryce Doyle Test + public void imagePathTest() { + ImageModel imageModel = new ImageModel("./test.jpg"); + assertEquals(imageModel.getPath(), "./test.jpg"); + } +} \ No newline at end of file diff --git a/src/test/resources/heycutie.jpg b/src/test/resources/heycutie.jpg new file mode 100644 index 0000000..92e19b1 Binary files /dev/null and b/src/test/resources/heycutie.jpg differ diff --git a/src/test/resources/test.txt b/src/test/resources/test.txt new file mode 100644 index 0000000..6baeab4 --- /dev/null +++ b/src/test/resources/test.txt @@ -0,0 +1 @@ +Some text here \ No newline at end of file diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..5fa82ed --- /dev/null +++ b/test.txt @@ -0,0 +1 @@ +New text here instead \ No newline at end of file