From 304479756851c0e41d3792449a01b5c9471b3a81 Mon Sep 17 00:00:00 2001 From: kevzlou7979 Date: Mon, 29 May 2023 12:50:38 +0800 Subject: [PATCH 1/5] WIP - ViewPortZoomHandler --- .travis.yml | 2 +- .utility/deploy.sh | 2 +- README.md | 4 +- gwt-material/pom.xml | 2 +- .../viewport/DefaultViewPortZoomHandler.java | 80 +++++++++++++++++++ .../base/viewport/ViewPortZoomHandler.java | 27 +++++++ pom.xml | 4 +- 7 files changed, 114 insertions(+), 7 deletions(-) create mode 100644 gwt-material/src/main/java/gwt/material/design/client/base/viewport/DefaultViewPortZoomHandler.java create mode 100644 gwt-material/src/main/java/gwt/material/design/client/base/viewport/ViewPortZoomHandler.java diff --git a/.travis.yml b/.travis.yml index ac50826f7..02e501ec5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ cache: - $HOME/.m2 before_install: # install the gwt-material-jquery because it will depends on built in jquery -- git clone -b release_2.7.0 https://github.com/GwtMaterialDesign/gwt-material-jquery.git +- git clone -b release_2.8.0 https://github.com/GwtMaterialDesign/gwt-material-jquery.git - cd gwt-material-jquery - mvn install -DskipTests=true -DdryRun=true - cd .. diff --git a/.utility/deploy.sh b/.utility/deploy.sh index a540c2ad5..71dc1f398 100644 --- a/.utility/deploy.sh +++ b/.utility/deploy.sh @@ -1,6 +1,6 @@ #!/bin/bash set -ev -if [ "$TRAVIS_JDK_VERSION" == "oraclejdk8" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_BRANCH" == "release_2.7.0" ]; then +if [ "$TRAVIS_JDK_VERSION" == "oraclejdk8" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_BRANCH" == "release_2.8.0" ]; then echo "ossrh\${env.OSSRH_USER}\${env.OSSRH_PASS}" > ~/settings.xml mvn deploy -DskipTests --settings ~/settings.xml fi \ No newline at end of file diff --git a/README.md b/README.md index 35c952711..938d197dd 100644 --- a/README.md +++ b/README.md @@ -20,12 +20,12 @@ Support documentation can be found [here](https://github.com/GwtMaterialDesign/g We created Java Docs for developers ## Maven -### Current Version 2.7.0 +### Current Version 2.8.0 ```xml com.github.gwtmaterialdesign gwt-material - 2.7.0 + 2.8.0 ``` ### Snapshot Version 2.8.0-SNAPSHOT diff --git a/gwt-material/pom.xml b/gwt-material/pom.xml index dec557bfc..29efcb0be 100644 --- a/gwt-material/pom.xml +++ b/gwt-material/pom.xml @@ -4,7 +4,7 @@ gwt-material-parent com.github.gwtmaterialdesign - 2.7.0 + 2.8.0-SNAPSHOT 4.0.0 diff --git a/gwt-material/src/main/java/gwt/material/design/client/base/viewport/DefaultViewPortZoomHandler.java b/gwt-material/src/main/java/gwt/material/design/client/base/viewport/DefaultViewPortZoomHandler.java new file mode 100644 index 000000000..f42aa46ef --- /dev/null +++ b/gwt-material/src/main/java/gwt/material/design/client/base/viewport/DefaultViewPortZoomHandler.java @@ -0,0 +1,80 @@ +/* + * #%L + * GwtMaterial + * %% + * Copyright (C) 2015 - 2023 GwtMaterialDesign + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package gwt.material.design.client.base.viewport; + +import com.google.gwt.user.client.Element; +import com.google.gwt.user.client.ui.RootPanel; +import gwt.material.design.client.ui.MaterialToast; +import gwt.material.design.jscore.client.api.viewport.VisualViewport; + +public class DefaultViewPortZoomHandler implements ViewPortZoomHandler { + + protected int zoomBoundaryLevel; + + public DefaultViewPortZoomHandler(int zoomBoundaryLevel) { + this.zoomBoundaryLevel = zoomBoundaryLevel; + } + + @Override + public void load() { + gwt.material.design.jscore.client.api.Window.visualViewport.addEventListener("resize", e -> { + checkZoomLevel(); + return true; + }); + + gwt.material.design.jscore.client.api.Window.visualViewport.addEventListener("scroll", e -> { + checkZoomLevel(); + return true; + }); + } + + @Override + public void unload() { + + } + + protected void checkZoomLevel() { + VisualViewport viewport = gwt.material.design.jscore.client.api.Window.visualViewport; + double width = viewport.width; + double clientWidth = gwt.material.design.jscore.client.api.Window.outerWidth; + int currentZoomLevel = (int) ((clientWidth / width) * 100); + Element element = RootPanel.get().getElement(); + if (currentZoomLevel >= zoomBoundaryLevel) { + double excessZoom = currentZoomLevel - zoomBoundaryLevel; // 25 + double scale = ((zoomBoundaryLevel - excessZoom) / 100.0); + MaterialToast.fireToast("Current Zoom Level : " + currentZoomLevel); + MaterialToast.fireToast("Zoom Level Boundary : " + zoomBoundaryLevel); + + // Standardized the page scale or zoom level. + /** + * transform: scale(0.5); + * transform-origin: 0 0; + * width: calc(100% + 100%); + */ + + element.getStyle().setProperty("transform", "scale(" + 0.5 + ")"); + element.getStyle().setProperty("transformOrigin", "0 0"); + element.getStyle().setProperty("width", "200%"); + } else { + element.getStyle().setProperty("transform", "scale(" + 1 + ")"); + element.getStyle().setProperty("width", "100%"); + } + } +} diff --git a/gwt-material/src/main/java/gwt/material/design/client/base/viewport/ViewPortZoomHandler.java b/gwt-material/src/main/java/gwt/material/design/client/base/viewport/ViewPortZoomHandler.java new file mode 100644 index 000000000..4409514ff --- /dev/null +++ b/gwt-material/src/main/java/gwt/material/design/client/base/viewport/ViewPortZoomHandler.java @@ -0,0 +1,27 @@ +/* + * #%L + * GwtMaterial + * %% + * Copyright (C) 2015 - 2023 GwtMaterialDesign + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package gwt.material.design.client.base.viewport; + +public interface ViewPortZoomHandler { + + void load(); + + void unload(); +} diff --git a/pom.xml b/pom.xml index 004d9eb78..1927f57f3 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.github.gwtmaterialdesign gwt-material-parent - 2.7.0 + 2.8.0-SNAPSHOT pom gwt-material @@ -75,7 +75,7 @@ scm:git:git@github.com:GwtMaterialDesign/gwt-material.git scm:git:git@github.com:GwtMaterialDesign/gwt-material.git http://github.com/GwtMaterialDesign/gwt-material - v2.7.0 + v2.8.0 From a7bc11a442d4dd4d4c81f075e996f9c6e9865011 Mon Sep 17 00:00:00 2001 From: kevzlou7979 Date: Mon, 29 May 2023 13:48:05 +0800 Subject: [PATCH 2/5] WIP - Standardization of DefaultZoomHandler. --- .../viewport/DefaultViewPortZoomHandler.java | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/gwt-material/src/main/java/gwt/material/design/client/base/viewport/DefaultViewPortZoomHandler.java b/gwt-material/src/main/java/gwt/material/design/client/base/viewport/DefaultViewPortZoomHandler.java index f42aa46ef..2b2768d7f 100644 --- a/gwt-material/src/main/java/gwt/material/design/client/base/viewport/DefaultViewPortZoomHandler.java +++ b/gwt-material/src/main/java/gwt/material/design/client/base/viewport/DefaultViewPortZoomHandler.java @@ -21,15 +21,16 @@ import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.RootPanel; -import gwt.material.design.client.ui.MaterialToast; import gwt.material.design.jscore.client.api.viewport.VisualViewport; public class DefaultViewPortZoomHandler implements ViewPortZoomHandler { - protected int zoomBoundaryLevel; + protected int initialZoomLevel; + protected int maxZoomLevel; - public DefaultViewPortZoomHandler(int zoomBoundaryLevel) { - this.zoomBoundaryLevel = zoomBoundaryLevel; + public DefaultViewPortZoomHandler(int maxZoomLevel, int initialZoomLevel) { + this.maxZoomLevel = maxZoomLevel; + this.initialZoomLevel = initialZoomLevel; } @Override @@ -56,25 +57,18 @@ protected void checkZoomLevel() { double clientWidth = gwt.material.design.jscore.client.api.Window.outerWidth; int currentZoomLevel = (int) ((clientWidth / width) * 100); Element element = RootPanel.get().getElement(); - if (currentZoomLevel >= zoomBoundaryLevel) { - double excessZoom = currentZoomLevel - zoomBoundaryLevel; // 25 - double scale = ((zoomBoundaryLevel - excessZoom) / 100.0); - MaterialToast.fireToast("Current Zoom Level : " + currentZoomLevel); - MaterialToast.fireToast("Zoom Level Boundary : " + zoomBoundaryLevel); - - // Standardized the page scale or zoom level. - /** - * transform: scale(0.5); - * transform-origin: 0 0; - * width: calc(100% + 100%); - */ - - element.getStyle().setProperty("transform", "scale(" + 0.5 + ")"); - element.getStyle().setProperty("transformOrigin", "0 0"); - element.getStyle().setProperty("width", "200%"); + if (currentZoomLevel >= maxZoomLevel) { + double excessZoom = currentZoomLevel - maxZoomLevel; + double scale = ((maxZoomLevel - excessZoom) / 100.0); + /*if (currentZoomLevel == maxZoomLevel) { + scale = initialZoomLevel; + }*/ + if (scale <= 0.5) { + scale = 0.5; + } + element.getStyle().setProperty("zoom", scale + ""); } else { - element.getStyle().setProperty("transform", "scale(" + 1 + ")"); - element.getStyle().setProperty("width", "100%"); + element.getStyle().setProperty("zoom", "1"); } } } From bea0e8c2ec7fd0a45a5dc37847bc1de6b5061bbc Mon Sep 17 00:00:00 2001 From: kevzlou7979 Date: Mon, 29 May 2023 13:49:23 +0800 Subject: [PATCH 3/5] Move out DefaultViewPortZoomHandler --- .../viewport/DefaultViewPortZoomHandler.java | 74 ------------------- 1 file changed, 74 deletions(-) delete mode 100644 gwt-material/src/main/java/gwt/material/design/client/base/viewport/DefaultViewPortZoomHandler.java diff --git a/gwt-material/src/main/java/gwt/material/design/client/base/viewport/DefaultViewPortZoomHandler.java b/gwt-material/src/main/java/gwt/material/design/client/base/viewport/DefaultViewPortZoomHandler.java deleted file mode 100644 index 2b2768d7f..000000000 --- a/gwt-material/src/main/java/gwt/material/design/client/base/viewport/DefaultViewPortZoomHandler.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * #%L - * GwtMaterial - * %% - * Copyright (C) 2015 - 2023 GwtMaterialDesign - * %% - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * #L% - */ -package gwt.material.design.client.base.viewport; - -import com.google.gwt.user.client.Element; -import com.google.gwt.user.client.ui.RootPanel; -import gwt.material.design.jscore.client.api.viewport.VisualViewport; - -public class DefaultViewPortZoomHandler implements ViewPortZoomHandler { - - protected int initialZoomLevel; - protected int maxZoomLevel; - - public DefaultViewPortZoomHandler(int maxZoomLevel, int initialZoomLevel) { - this.maxZoomLevel = maxZoomLevel; - this.initialZoomLevel = initialZoomLevel; - } - - @Override - public void load() { - gwt.material.design.jscore.client.api.Window.visualViewport.addEventListener("resize", e -> { - checkZoomLevel(); - return true; - }); - - gwt.material.design.jscore.client.api.Window.visualViewport.addEventListener("scroll", e -> { - checkZoomLevel(); - return true; - }); - } - - @Override - public void unload() { - - } - - protected void checkZoomLevel() { - VisualViewport viewport = gwt.material.design.jscore.client.api.Window.visualViewport; - double width = viewport.width; - double clientWidth = gwt.material.design.jscore.client.api.Window.outerWidth; - int currentZoomLevel = (int) ((clientWidth / width) * 100); - Element element = RootPanel.get().getElement(); - if (currentZoomLevel >= maxZoomLevel) { - double excessZoom = currentZoomLevel - maxZoomLevel; - double scale = ((maxZoomLevel - excessZoom) / 100.0); - /*if (currentZoomLevel == maxZoomLevel) { - scale = initialZoomLevel; - }*/ - if (scale <= 0.5) { - scale = 0.5; - } - element.getStyle().setProperty("zoom", scale + ""); - } else { - element.getStyle().setProperty("zoom", "1"); - } - } -} From 6a3c7f93d7ac4bc03e8782fb191b2a5841368426 Mon Sep 17 00:00:00 2001 From: kevzlou7979 Date: Sun, 11 Jun 2023 12:15:01 +0800 Subject: [PATCH 4/5] More Updates --- .../client/base/viewport/ViewPortZoomHandler.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gwt-material/src/main/java/gwt/material/design/client/base/viewport/ViewPortZoomHandler.java b/gwt-material/src/main/java/gwt/material/design/client/base/viewport/ViewPortZoomHandler.java index 4409514ff..dc58237d2 100644 --- a/gwt-material/src/main/java/gwt/material/design/client/base/viewport/ViewPortZoomHandler.java +++ b/gwt-material/src/main/java/gwt/material/design/client/base/viewport/ViewPortZoomHandler.java @@ -24,4 +24,14 @@ public interface ViewPortZoomHandler { void load(); void unload(); + + double getCurrentViewportRatio(); + + double getMaxViewPortRatio(); + + void scale(); + + boolean isOutOfZoomLevel(); + + void resetZoom(); } From 08dd3740455cb0df6f5a40a12c0bc7c1785076b9 Mon Sep 17 00:00:00 2001 From: kevzlou7979 Date: Tue, 20 Jun 2023 09:42:02 +0800 Subject: [PATCH 5/5] Preparation for 2.7.1 release --- .travis.yml | 2 +- .utility/deploy.sh | 2 +- README.md | 4 ++-- gwt-material/pom.xml | 2 +- pom.xml | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 02e501ec5..26d526dff 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ cache: - $HOME/.m2 before_install: # install the gwt-material-jquery because it will depends on built in jquery -- git clone -b release_2.8.0 https://github.com/GwtMaterialDesign/gwt-material-jquery.git +- git clone -b release_2.7.1 https://github.com/GwtMaterialDesign/gwt-material-jquery.git - cd gwt-material-jquery - mvn install -DskipTests=true -DdryRun=true - cd .. diff --git a/.utility/deploy.sh b/.utility/deploy.sh index 71dc1f398..44ac15065 100644 --- a/.utility/deploy.sh +++ b/.utility/deploy.sh @@ -1,6 +1,6 @@ #!/bin/bash set -ev -if [ "$TRAVIS_JDK_VERSION" == "oraclejdk8" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_BRANCH" == "release_2.8.0" ]; then +if [ "$TRAVIS_JDK_VERSION" == "oraclejdk8" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_BRANCH" == "release_2.7.1" ]; then echo "ossrh\${env.OSSRH_USER}\${env.OSSRH_PASS}" > ~/settings.xml mvn deploy -DskipTests --settings ~/settings.xml fi \ No newline at end of file diff --git a/README.md b/README.md index 938d197dd..28b039c7d 100644 --- a/README.md +++ b/README.md @@ -20,12 +20,12 @@ Support documentation can be found [here](https://github.com/GwtMaterialDesign/g We created Java Docs for developers ## Maven -### Current Version 2.8.0 +### Current Version 2.7.1 ```xml com.github.gwtmaterialdesign gwt-material - 2.8.0 + 2.7.1 ``` ### Snapshot Version 2.8.0-SNAPSHOT diff --git a/gwt-material/pom.xml b/gwt-material/pom.xml index 29efcb0be..89afafb2e 100644 --- a/gwt-material/pom.xml +++ b/gwt-material/pom.xml @@ -4,7 +4,7 @@ gwt-material-parent com.github.gwtmaterialdesign - 2.8.0-SNAPSHOT + 2.7.1 4.0.0 diff --git a/pom.xml b/pom.xml index 1927f57f3..d8f769000 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.github.gwtmaterialdesign gwt-material-parent - 2.8.0-SNAPSHOT + 2.7.1 pom gwt-material @@ -75,7 +75,7 @@ scm:git:git@github.com:GwtMaterialDesign/gwt-material.git scm:git:git@github.com:GwtMaterialDesign/gwt-material.git http://github.com/GwtMaterialDesign/gwt-material - v2.8.0 + v2.7.1