Skip to content

Commit dddc246

Browse files
committed
WIP - PinchJs implementation
1 parent 00f11a1 commit dddc246

File tree

10 files changed

+2055
-0
lines changed

10 files changed

+2055
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package gwt.material.design.addins.client.pinch;
2+
3+
import com.google.gwt.core.client.GWT;
4+
import com.google.gwt.resources.client.ClientBundle;
5+
import com.google.gwt.resources.client.TextResource;
6+
7+
public interface PinchClientBundle extends ClientBundle {
8+
9+
PinchClientBundle INSTANCE = GWT.create(PinchClientBundle.class);
10+
11+
@Source("resources/js/pinch.min.js")
12+
TextResource pinchJs();
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package gwt.material.design.addins.client.pinch;
2+
3+
import com.google.gwt.core.client.GWT;
4+
import com.google.gwt.resources.client.ClientBundle;
5+
import com.google.gwt.resources.client.TextResource;
6+
7+
public interface PinchDebugClientBundle extends ClientBundle {
8+
9+
PinchDebugClientBundle INSTANCE = GWT.create(PinchDebugClientBundle.class);
10+
11+
@Source("resources/js/pinch.js")
12+
TextResource pinchJs();
13+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package gwt.material.design.addins.client.pinch;
2+
3+
import com.google.gwt.event.shared.HandlerRegistration;
4+
import com.google.gwt.user.client.ui.Widget;
5+
import gwt.material.design.addins.client.MaterialAddins;
6+
import gwt.material.design.addins.client.pinch.events.HasPinchZoomHandlers;
7+
import gwt.material.design.addins.client.pinch.events.OnZoomEndEvent;
8+
import gwt.material.design.addins.client.pinch.events.OnZoomStartEvent;
9+
import gwt.material.design.addins.client.pinch.js.JsPinchZoom;
10+
import gwt.material.design.client.MaterialDesignBase;
11+
import gwt.material.design.client.ui.MaterialImage;
12+
import gwt.material.design.client.ui.MaterialPanel;
13+
import gwt.material.design.client.ui.MaterialToast;
14+
15+
public class PinchZoomPanel extends MaterialPanel implements HasPinchZoomHandlers {
16+
17+
protected JsPinchZoom jsPinchZoom;
18+
19+
static {
20+
if (MaterialAddins.isDebug()) {
21+
MaterialDesignBase.injectDebugJs(PinchDebugClientBundle.INSTANCE.pinchJs());
22+
} else {
23+
MaterialDesignBase.injectJs(PinchClientBundle.INSTANCE.pinchJs());
24+
}
25+
}
26+
27+
public PinchZoomPanel() {
28+
29+
}
30+
31+
@Override
32+
protected void onLoad() {
33+
super.onLoad();
34+
35+
load();
36+
}
37+
38+
protected void load() {
39+
jsPinchZoom = new JsPinchZoom(getElement());
40+
jsPinchZoom.onZoomStart = (param1, param2) -> {
41+
fireEvent(new OnZoomStartEvent());
42+
};
43+
44+
jsPinchZoom.onZoomEnd = (param1, param2) -> {
45+
fireEvent(new OnZoomEndEvent());
46+
};
47+
48+
jsPinchZoom.onDoubleTap = (param1, param2) -> {
49+
MaterialToast.fireToast("TABS");
50+
};
51+
}
52+
53+
public void enable() {
54+
jsPinchZoom.enable();
55+
}
56+
57+
public void disable() {
58+
jsPinchZoom.disable();
59+
}
60+
61+
@Override
62+
public HandlerRegistration addOnZoomStartHandler(OnZoomStartEvent.OnZoomStartHandler handler) {
63+
return addHandler(handler, OnZoomStartEvent.TYPE);
64+
}
65+
66+
@Override
67+
public HandlerRegistration addOnZoomEndHandler(OnZoomEndEvent.OnZoomEndHandler handler) {
68+
return addHandler(handler, OnZoomEndEvent.TYPE);
69+
}
70+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package gwt.material.design.addins.client.pinch.events;
2+
3+
import com.google.gwt.event.shared.HandlerRegistration;
4+
5+
public interface HasPinchZoomHandlers {
6+
7+
HandlerRegistration addOnZoomStartHandler(OnZoomStartEvent.OnZoomStartHandler handler);
8+
9+
HandlerRegistration addOnZoomEndHandler(OnZoomEndEvent.OnZoomEndHandler handler);
10+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package gwt.material.design.addins.client.pinch.events;
2+
3+
import com.google.gwt.event.shared.EventHandler;
4+
import com.google.gwt.event.shared.GwtEvent;
5+
import com.google.gwt.event.shared.HasHandlers;
6+
7+
public class OnZoomEndEvent extends GwtEvent<OnZoomEndEvent.OnZoomEndHandler> {
8+
9+
public interface OnZoomEndHandler extends EventHandler {
10+
void onOnZoomEnd(OnZoomEndEvent event);
11+
}
12+
13+
public static final Type<OnZoomEndHandler> TYPE = new Type<>();
14+
15+
public static void fire(HasHandlers source) {
16+
source.fireEvent(new OnZoomEndEvent());
17+
}
18+
19+
@Override
20+
public Type<OnZoomEndHandler> getAssociatedType() {
21+
return TYPE;
22+
}
23+
24+
@Override
25+
protected void dispatch(OnZoomEndHandler handler) {
26+
handler.onOnZoomEnd(this);
27+
}
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package gwt.material.design.addins.client.pinch.events;
2+
3+
import com.google.gwt.event.shared.EventHandler;
4+
import com.google.gwt.event.shared.GwtEvent;
5+
import com.google.gwt.event.shared.HasHandlers;
6+
7+
public class OnZoomStartEvent extends GwtEvent<OnZoomStartEvent.OnZoomStartHandler> {
8+
9+
public interface OnZoomStartHandler extends EventHandler {
10+
void onOnZoomStart(OnZoomStartEvent event);
11+
}
12+
13+
public static final Type<OnZoomStartHandler> TYPE = new Type<>();
14+
15+
public static void fire(HasHandlers source) {
16+
source.fireEvent(new OnZoomStartEvent());
17+
}
18+
19+
@Override
20+
public Type<OnZoomStartHandler> getAssociatedType() {
21+
return TYPE;
22+
}
23+
24+
@Override
25+
protected void dispatch(OnZoomStartHandler handler) {
26+
handler.onOnZoomStart(this);
27+
}
28+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* #%L
3+
* GwtMaterial
4+
* %%
5+
* Copyright (C) 2015 - 2017 GwtMaterialDesign
6+
* %%
7+
* Licensed under the Apache License, Version 2.0 (the "License");
8+
* you may not use this file except in compliance with the License.
9+
* You may obtain a copy of the License at
10+
*
11+
* http://www.apache.org/licenses/LICENSE-2.0
12+
*
13+
* Unless required by applicable law or agreed to in writing, software
14+
* distributed under the License is distributed on an "AS IS" BASIS,
15+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
* See the License for the specific language governing permissions and
17+
* limitations under the License.
18+
* #L%
19+
*/
20+
package gwt.material.design.addins.client.pinch.js;
21+
22+
import jsinterop.annotations.JsPackage;
23+
import jsinterop.annotations.JsType;
24+
25+
/**
26+
* Options for pinch zoom component
27+
*
28+
* @author kevzlou7979
29+
*/
30+
@JsType(isNative = true, name = "Object", namespace = JsPackage.GLOBAL)
31+
public class JsPinchOptions {
32+
33+
//TODO: Methods
34+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package gwt.material.design.addins.client.pinch.js;
2+
3+
import gwt.material.design.jquery.client.api.Functions;
4+
import jsinterop.annotations.*;
5+
6+
@JsType(isNative = true, name = "PinchZoom", namespace = JsPackage.GLOBAL)
7+
public class JsPinchZoom {
8+
9+
@JsConstructor
10+
public JsPinchZoom(Object element) {
11+
12+
}
13+
14+
@JsProperty
15+
public Integer tapZoomFactor;
16+
17+
@JsProperty
18+
public Functions.Func2<JsPinchZoom, Object> onZoomStart;
19+
20+
@JsProperty
21+
public Functions.Func2<JsPinchZoom, Object> onZoomEnd;
22+
23+
@JsProperty
24+
public Functions.Func2<JsPinchZoom, Object> onDoubleTap;
25+
26+
/**
27+
* Enables all gesture capturing (is enabled by default)
28+
*/
29+
@JsMethod
30+
public native void enable();
31+
32+
/**
33+
* Disables all gesture capturing
34+
*/
35+
@JsMethod
36+
public native void disable();
37+
}

0 commit comments

Comments
 (0)